What you’re looking at here is a razor-thin allegory about incremental improvement — why it can be hard to start, and why once started it can be easy to continue — in the guise of a story about improvements to this website.

I rang in 2015 by upgrading to a static site generator, hoping the switch would induce me to write more often. It has, but that’s its own story of incremental improvement.

Now that I’m making more and better use of my new, simplified setup, I’m motivated to seek further simplification. Unlike many other CMS-managed sites, this web page was neither brought into existence when you asked for it nor recalled from an application-level cache because someone else recently did so. This page already existed as a plain old file on disk before you asked, and it’ll continue to exist long after. It’s served slightly faster when it’s in the OS kernel’s filesystem cache, but it’s served plenty fast to begin with, because bringing it to you requires no application code to run — just webserver code. That’s why my next major improvement target is to stop needing Apache, a big featureful configurable complicated webserver. It’d be neat if the small, just-featureful-enough, and fairly simple bozohttpd bundled with NetBSD (my server OS of choice) sufficed to serve this site.

That’s a goal I couldn’t have seen from my previous traditional-CMS vantage point, and it’s still not a thing I can just go do. I feel pretty strongly about preserving URLs that have ever been published; if not for the featurefulness and configurability of Apache’s mod_rewrite, many of the URLs served under the old regime would have become broken under the new one. In order to convince myself I no longer need this handful of powerful URL-rewriting rules, I’ll need to convince myself the permanent HTTP redirects have had an impact by observing that old-regime links are hardly ever getting hit. And if that’s not the case, I’ll need to convince enough of the referrers with those old links to update them. Then, and only then, will switching webservers finally be within my incremental reach.

Another new-regime payoff I hoped for was that because making small improvements would be easier, I’d make more of them. That’s going well, too. Textpattern had generated imperfect URL slugs for some old posts, and that had always bothered me, but I’d never done anything about it. Last week I finally fixed them, committed the changes to source control, and added simple HTTP redirects (nothing bozohttpd can’t do) for the old URLs. While I was at it, since I discovered that “completionist” is more common usage than “completist”, I did the same for my recent post on reading Twitter like a madman. Ikiwiki lets me make changes across my entire site with familiar Unix tools — including git diff and git revert — rather than nerve-wracking, potentially-destructive-and-hard-to-restore-from database operations.

Since I feel safer about making changes, I act on a higher percentage of the little ideas that come to mind. On Monday, for instance, it occurred to me that since my posts have tags, and there are already autogenerated pages listing every post for each tag, I’d like to add a page with a cloud-like list of all the tags. With ikiwiki, it was really, really easy, so I did it. And once I’d done it and was inspecting the result, I noticed that some old posts needed more tags added. (Textpattern had no native tags, only categories, no more than two per post.) And since this is Unix, I could grep for files containing the keywords I wanted to tag, or find all the posts from 2014, pass them to my text editor for quick fixing, and git diff to double-check before publishing. So I followed the chain of affordances and did all these things. Exactly as I would not have bothered to in Textpattern.

Getting to where desirable improvements are available to be made in small increments can be difficult. It took me a couple weeks of disciplined effort to import my Textpattern site into ikiwiki in a way that I fully trusted. But once I got there, and improvements became easy to make and safe to try, it’s so rewarding to try them that I keep doing it.

One of these moons, before I know it and without making a concerted effort, flipping the switch to bozohttpd will be the next increment in front of me. And then, because I can just do it, I’ll just do it.