[kefir@tilde ~/site]$ █

You might have noticed that this website is stupidly simple. No static-website-generating nonsense, no Hugo, Jekyll, WordPress (eww). It’s like that on purpose.


Once I got my hands on some free website hosting, I immediately caught on fire with the idea of, well, making a website. but how? I decided to check out how other people made their websites. Most reasonable people seemed to use Hugo, a static website generator. Easy way, sure, but why would you want to run it server-side? Just dump the html from your pc to the server post-factum. It also uses a bunch of dynamically-downloaded templates from the net, so the security of running it server-side is really questionable. It is available on my tilde, I just don’t like web frameworks, even this one, despite not being too dependent on the cloud, just doesn’t sit right with me. For me, a static website generator shall:

With that said, there weren’t many options left. I tried out teal from someone on github, ssg from Roman Zolotarev, maybe some others. None seemed to be good enough. So you might know I did next.

Rolling my own

Using the arcane wizardry of shell, portable make(1), pandoc, LaTeX, core Unix utilities, rock music and a lot of spare time, I made it:



It uses LaTeX as source files, autoconverts, optimizes and scales down any image you give it with ImageMagick, uses pandoc for creating html, sed(1) for touching up, looks stunning in text-mode web browsers, generates an RSS feed out of it all, is highly portable, outrageously fast, especially with -j8 option. Is comprised entirely of free software, is infinitely extensible... Enough said. That’s how the process of making this page looked:


browser to the left, vim to the right. a simple keypress runs make(1) and refreshes the page to let me see the final result. absolutely marvelous workflow.


in w3m, a text WWW browser

Guess that’s it

It does literally everything I want it to do, and if I ever want it to do more, I can easily extend it, for it is all just POSIX shell and simple make(1) logic. Nothing magical.


the source code of this article

You may get the source code of this page here, and check out the Makefile here.