Let's get one thing out of the way right now. The design of this blog is not unique. It is incompletely borrowed from Dustin Curtis' Svbtle blog platform, and I'm not ashamed to admit that. As far as minimal blog designs are concerned, I think it's one of the best to-date. So, I stole it. I could have used an open source clone like Obtvse, but since I haven't written any front-end code for the Web in a long time (over two years, in fact), I decided to do it all by hand. And since I wrote a custom front end, why not write a custom back end?
Static Site Generation
The fundamental requirements for the back end are pretty slim. I write in Markdown most of the time, since it can be published as-is, or easily converted to HTML or even LaTeX with pandoc. Each blog post consists of two files: a .markdown file and a JSON-formatted .meta file. The filename before the extension in each case is the slug for the post (for this post, it's "feelin-good"). The .markdown file contains only the post contents. The .meta file contains key-value pairs such as author, full title, publication date and tags.
The engine of site generation is a Ruby script that loads all posts into a hash, then generates static pages with a configurable number of posts per page, a static page for each post, and a page for each tag (each post also contains a link to its respective tags). Right now, tags are not paginated, but that could be added in the future. In fact, nothing but the bare-freakin'-minimum is included.
The routing is done with a combination of nginx configuration and a tiny PHP script.
The workflow basically goes: write blog post in TextMate or Mou, cp the default.meta file and edit it to satisfaction, run the engine script, move the fresh-baked files to the server.
I've written perhaps a dozen blog posts in the past eight years. I've spent more time installing Wordpress and fussing over themes than I've spent writing. Each new iteration gets a couple of posts and then mostly lies dormant until it gets swept under the rug. I have done a better job of maintaining permalinks for my posts over the last four or five years, but really, I haven't been at all prolific.
Part of the problem with writing only occasionally is that I hold what I do produce to an artificially high standard. I've never had the inertia built up to just put a lot of things out there. My writing hasn't developed far enough not to be self-conscious, so in hindsight, everything looks a little affected, even twee. I don't think I have enough material for daily posts. Maybe short weekly pieces. Maybe just a write-up of an interesting question I answered on StackOverflow (I'd have three solid years of material if I'd been doing that all along). Or a response to a post on Hacker News.
When I did improv comedy, one of the common things that was said behind the curtain is you have to treat the show like you're performing only for yourself. You can't stand up there trying to give the audience what they want, because neither you nor the audience knows what they want, and any attempt to pin it down will come off wooden, or pandering, or silly. The most transcendent moments in improv are when everyone including the performers get drawn up into the story and explore it in an earnest way without trying to be funny or outlandish. Part of the craft is recognizing when you're not being genuine, because when you're trying too hard, you almost always end up in the trope of "fighting or fucking" where the egos of the players take over and lead to unnecessarily escalated scenarios.
Genuine is delightful. So to the extent that I can use this new platform to be more genuine and consistent, I will. I hope I occasionally get lucky enough to deliver delight.