It may not be obvious to anyone, but I’ve switched to using Hugo to build this site.

I stopped hosting comments many years ago. I switched to no-CSS HTML a little over a year ago. Having a dynamically generated website stored in a database finally seemed overkill to me. So I’ve switched to serving static HTML files to you, dear reader. Just like I did when I first put online.

Long ago it was fun to manage all the pieces of a modern interactive website. PHP upgrades and MySQL management and backups, and all the rest were interesting things to do. I do those things at work now, and as such doing them in my free time does not fill me with the sense of accomplishment it once did.

Yes, it’s slightly harder to compose new posts from anywhere I might be. I can no longer simply use any available computer with a web browser to add content to my site. But the truth is that I never did that anyway. Yes, I’ve lost the ability for visitors to search my site, but options exist to restore some or all of that functionality should it become necessary.

What I’ve gained, though, is the ability to reduce the requirements of serving my content. I can move from host to host to host by simply rsyncing data and updating DNS records. I can keep a complete copy of all my content in full fidelity without dealing with database exports, character encodings, or anything else.

The entirety of my site is currently 32 megabytes. The WordPress source code is 26 megabytes. I simply don’t need to maintain a rich text editor, an XMLRPC interface, comments and theme systems, or an integrated feed reader just to serve you, dear reader, my thoughts.

After years and years of running and managing dynamic websites of different flavors, I’ve come to better appreciate the old-school UNIX philosophy of “small parts, loosely coupled.” Rather than have one mega script that does all the things, I’ve tried to break apart the individual pieces in sane ways. There’s still room for improvement with my new workflow, but it’s gotten me going well enough.

Instead of a single package using a single programming language to both create content and serve content, all within the context of HTTP transactions, I can choose the tools that excel for me at their respective functions.

I looked at a number of static site generators in some detail. Jekyll is the gold standard, because it’s what is used to generate GitHub Pages. I support Ruby applications at work, and I must admit that I am soured on the language and its ecosystem. Bundler is a slow and cumbersome solution to library management. Pelican and Hyde are Python variants, and while I find virtualenv superior to bundler all of these still suffer from library bloat and templating headaches. I don’t want to master Liquid or Jinja2 templating to render my Markdown content into simple HTML.

Hugo is a single statically compiled binary. It’s easily obtained and easily installed and easily upgraded. The Hugo documentation is pretty good. It took me a while to understand how to organize and manage my content. It took me a while to understand Golang templating (including the fucking Go date format). But after a modest effort, I’ve come up with something with which I am happy.

I also took this opportunity to dip my toes into the IndieWeb waters. I’ve been pursuing a lot of the goals of the IndieWeb movement since long before this movement had a name. I’ve been struggling to own my own data in sane and meaningful ways. The addition of a few microformats2 tags in my templates let me play in the IndieWeb space without too much hassle. There’s more to do, to be sure, but for now my itches are scratched.

I also switched to a static site built via Hugo. Previously I had written a plugin for Habari that would watch for a specific tag on photos I posted to Flickr, and from that create a new post. This worked well enough, but was always just a little bit fiddly. I’ve also stopped using Flickr as aggressively as I once did, given all the brouhaha that Yahoo! has had lately.

To allow me to post to from my phone while I’m out and about (which, after all, was the whole point of the site), I created a small set of scripts. The repo contains sanitized versions of these scripts, for anyone interested in how I’m doing this. Yes, this is still fiddly, but seems to me to be better aligned with the UNIX philosophy. Rather than have my web server run a script to generate my web content, I can do that on a scheduled basis from my system shell. I can use whatever tools and whatever languages I choose, and I can stop the process easily by removing the cron job.

Change is the only constant, so I imagine at some point in the future I’ll redo all of this again, using new tools and technologies. But for now, I’m going back to basics with static HTML.

home / about / archive / RSS