BXG Blog

Switching from Movable Type to Pelican

When I started this blog in 2009, I wasn’t entirely sure what I needed in a blogging platform. I ended up picking Movable Type for a couple of reasons: It was open source and ran on things I was familiar with (perl and PostgreSQL). It also had a lot of great features that I thought I might eventually grow into using. However, even from day one, I wasn’t entirely happy with it. I didn’t love the intial theme, and I thought the steps involved in publishing were complicated and slower than I wanted them to be. Nevertheless, it worked pretty well. I wrote my first few entries and promised myself that I’d learn how to make a theme that was more to my liking as soon as I had time.

In early 2015, over 5 years later, I am still on the original (untouched) theme, and I haven’t really learned any of the other advanced features, either. Not only is Movable Type 4 quite outdated and exhibiting problems, but the most recent version is no longer open source. I think it’s time for something new.

In the meantime, I have also realized that my requirements for a blog are pretty low. I only write a few entries per year, I haven’t had a guest author since 2009, and the only people who comment on my entries are the spambots. Given those low requirements, the full-blown CMS systems seem like overkill. Aside from the effort of getting all the dependencies set up properly, it would be nice to not have to deal with constant security updates. In fact, I could probably just about get everything I need by writing static HTML pages, if it weren’t so much work to maintain a consistent template.

Say…it turns out people have invented these things called static site generators. You supply a set of posts as input in a simplified format, and the generator takes care of applying the template and spitting out a nice set of properly cross-linked HTML pages. After uploading those to a webserver, you have a complete blog, without any of the hassle of maintaining a database, policing comment spam, or worrying about whether the latest security updates will still work with the version of PHP on the server.

Even limiting my search to static site generators, the problem seems to be more of overchoice than a lack of options. After playing around with a few options, I’ve decided to give Pelican a try for now. It’s written in Python, and appears to have an active community.

The next step after selecting a system is to convert the old blog. Ideally, I’d like to keep all my content and URLs as similar as possible without retyping all my posts. Pelican has importers for several popular blogging platforms, but unfortunately there isn’t an importer for Movable Type. Fortunately, Movable Type has an export feature that saves all the posts to a relatively straightforward text-based format. I wrote a quick perl script to split that into separate files and convert the contents to Markdown, and within an hour or two, I had Pelican generating a mostly-correct site based on the old blog. A few of the posts had some oddities that didn’t translate correctly, but it didn’t take too long to correct those (perhaps the fact that I’ve written less than 50 posts in 5 years helped). After a little fiddling with the config file, it even generates URLs that match the old site!

Although Pelican generates a nice site with clean URLs, I still didn’t love the default theme. This time, I resolved to make something I like immediately instead of waiting another 5 years. While debugging some tweaks I was attempting on the default theme, I discovered a port of the Octopress default theme. Now that’s a gorgeous theme, but it would be even nicer if it weren’t all shades of gray. I went to palleton.com and generated a few samples until I found one I liked. Pelican themes seem to be pretty well organized, so it wasn’t difficult to replace the color scheme without wrecking the rest of the theme.

And that brings us to the new blog. So far, Pelican seems to be a good option. It generates a nice site with an attractive theme, it receives regular updates, and it doesn’t seem to be in danger of changing into a proprietary project. Perhaps more importantly, all my posts have now been switched to individual Markdown files, so it should be easier to switch to another system in the future if Pelican doesn’t work out after all.