Since 2008, I ran the Scottosphere on a relatively obscure platform called Pyblosxom, hosted on a dusty FreeBSD machine at the far end of a slow DSL connection. This arrangement worked out surprisingly well.
Beginning about a year and a half ago, some frustrating extended outages led me to believe that it was time to move the whole operation to a server “in the cloud.” (Forgive my egregious use of a buzzword.) This I did, but before I could go live with it, I had to confront a whole bunch of bugs caused by some arcane incompatibilities between the latest versions of Pyblosxom, some newer Python libraries, and the heavily customized plugins on which the Scottosphere relied. Among other problems, comments didn't work at all. I hacked on it for longer than necessary to convince myself that it was time to take a different approach!
I wanted to move everything to a new platform that was feature-rich and well supported (so I wouldn't have to write every new feature myself!) but capable of being fully customized. This left me with only a few choices. WordPress was the obvious standout, but it has a lot of negatives: it's huge, relatively slow, and written in PHP. The default templates and function calls produce a horrible mess of HTML that's nearly unreadable by humans. But it turns out you can correct most of WordPress's sins with a cleverly-designed theme, which I set out to do.
But first, I had to bring in my old data. One of the wonderful design features of Pyblosxom which I will miss is its ability to store posts in any sort of markup you desire (HTML, Markdown, Textile, etc.) and reformat them on-the-fly in any output “flavor” you can design (HTML, XML, etc.). I designed a special “flavor” for Pyblosxom to spit out the entire site—entries, comments, and all—as a WXR file, an XML format used by WordPress. After processing with a bunch of custom Python scripts to correct obsolete markup, fix broken links, and move old images over to the new server, I was in business. Nearly.
Writing a WordPress theme from scratch was a little intimidating. I had no desire to write a bunch of PHP or learn the internal workings of the software, but it was the only way to meet my many design objectives. Here is a list of features that I think are important:
- Posts are located at exactly the same URLs as they were before. Link rot bothers me, so it was important not to create a new scheme.
- Responsive design. I read Ethan Marcotte's fantastic book, Responsive Web Design , and realized that the era of pixel-based fixed-width layouts is over. Nearly every element on this site, including the images, is now agnostic about the size of your screen. Try resizing your browser or viewing the site on a smart-o-phone and you'll see what I mean. Implementing responsive design harder than it seems, particularly with image captions and embedded videos.
- New fonts and graphic design. It's different, but I confess I'm not much of a designer. What do you think?
- Better typography. Automatic hyphenation of words helps keep the right margin looking nice on these long posts.
- Microformat support. The addition of some machine-readable tags to the HTML makes it possible for search engines to better make sense of this site.
- WordPress post format support. I wanted a better way to show off photos and set them apart from the more text-based content. You probably won't notice if you read this site primarily through a feed, but I think it's cool. Watch for it!