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.