website source; use git clone git:// to clone this repository. (6026B)

      1 # now on git (and hosted on my laptop)
      2 <!--[time 201906050253.09]-->
      4 my blog has long been overdue for a new post, so here goes nothing. I
      5 haven't been writing lately for several reasons: the main one being that
      6 I've had difficulties with bashblog. also, of course, I have been busy
      7 with many things in the past few months, some of which I will cover in
      8 later posts. I have a lot to write about in the coming months; I'll try
      9 to get through it all when I have spare time.
     11 ----
     13 so, bashblog. from my [previous post about it] [1], I described some of
     14 the changes I had to make to it for my own use.  with my new patches, I
     15 found that editing old articles is almost impossible without incurring a
     16 headache, so my plan was to rewrite the entire script. and since I'd be
     17 rewriting it, might as well do it in a language I'm more comfortable
     18 with: perl. that was a big project I kept putting off, until one day I
     19 thought, "shit, why am I not managing it with a makefile?"
     21 why use `make`? I first learned proper use of the utility, as well as
     22 how to write a proper makefile, when working on my chat client,
     23 [achlys] [2]. I wanted to avoid anything such as automake or cmake due
     24 to their complexity, so despite lack of a clear makefile introduction, I
     25 went for it anyway, to my success. in addition to its usefulness for
     26 building C and C++ projects, it's also useful for its core purpose:
     27 smart file-dependency tracking. this is what makes it perfect for a
     28 website; the fact that I can write my entire site's content in markdown
     29 (what I've already been doing with my blog articles), write a few
     30 wrappers to generate the boilerplate HTML, and have it *only* touch
     31 files that would be updated. if I write an article like I'm doing now, I
     32 just save it, run `make` (and `make check` to ensure the output is
     33 conformant XHTML, before I push a broken copy of my website live), and
     34 it'll touch just this page, the blog index, and the atom feed. if I
     35 decide I want to add a link to the site sidebar, I can just modify the
     36 header template and `make` will generate my entire site. this has the
     37 nice side effect of avoiding server-side includes as well. now I don't
     38 have to worry about a lot of things; I can focus on writing content.
     40 since it's all backed by git, I have a few benefits from this. I no
     41 longer have to sign blog posts individually; I let git take care of
     42 signed commits for me. this way, you can not only verify the post, but
     43 any edits I make as well. it's all preserved in the commit history for
     44 complete transparency, and for something like a mostly-static,
     45 archive-quality website, I find this invaluable. I also get natural
     46 backups of my site. of course there's the live site copy accessible over
     47 http, but also I get to keep a working copy on my desktop, which allows
     48 me to use the editing tools with which I'm comfortable, instead of being
     49 limited to whatever my server has. I don't like installing too much
     50 cruft on any server; the bulk of my convenience programs (such as vim)
     51 are at home on my desktop.
     53 you can clone <> if you're interested
     54 in how I generate my site, if you want an archived copy (of the public
     55 portions) of my website, or if you want to mirror the site elsewhere
     56 (just be kind and link back to <>, please). I will
     57 soon provide access to my other projects on as well as a
     58 mirror on, and I will provide cloning instructions on
     59 for repositories, since I will not expose these repositories
     60 using an interface such as cgit or stagit. I am not really a fan of
     61 allowing code to be indexed over HTTP; anyone who is truly interested in
     62 my code can clone the repository directly. I will also provide release
     63 tarballs for certain projects (such as achlys) for those who do not have
     64 ready access to git on their system.
     66 [1]: </blog/testing-patches-made-to-bashblog-script.xht> "“testing patches made to bashblog script”"
     67 [2]: <> "wowaname/achlys Git repository"
     69 ----
     71 while you may have noticed I have been making changes to my website (the
     72 [blog index](/blog/) received a makeover, for example, and web pages now
     73 have file extensions exposed), I have also made less-visible changes.
     74 one thing of note is that I am now hosting on my laptop. I am
     75 using [quark] [3] HTTP server written by some of the people over at
     76 [suckless] [4], complete with a few bug fixes and modifications for my
     77 personal use (potentially more fixes as time goes on). quark is *very*
     78 lightweight, clocking in at just under 3mb memory usage at the time of
     79 writing this article. this setup is still served behind nginx, both to
     80 proxy my home IP since I still do not have an ISP suitable for hosting
     81 directly from home, and to cache requests in order to reduce load on my
     82 laptop. also, there are a few nginx-specific rewrites I have for my
     83 site, and I cannot yet find a good way to replace these. so for now,
     84 nginx still plays a role in my website, and that's fine since I use it
     85 for other sites anyway.
     87 I am looking forward to fully self-hosting and all services
     88 located on my domain, to reduce my dependency on third-party hosting.
     89 it's my definitive home on the internet, so I may as well make it
     90 completely mine.
     92 I also hope that others see the simplicity in what I'm doing here, and
     93 consider moving away from complex website frameworks, opting to roll
     94 their own in a similar fashion to what I am doing. I understand that not
     95 everyone may be a programmer or a web developer, but I believe that
     96 there are certain tools all of us need to know about, so that we can
     97 make the most out of our computers and our time. I can finally manage my
     98 site in a sane manner, visualise all its components, know exactly what
     99 will show up on the live site, because I am in control of every aspect
    100 of its generation. it certainly beats writing all that HTML manually.
    102 [3]: <> "wowaname/quark Git repository"
    103 [4]: <> ""