Jachin's Blog

So Long WordPress, Hello Pelican

Published:
Modified:

After 8+ years of faithful-ish service I'm ditching WordPress for the great static site generator Pelican, written in my very favorite language, Python.

If you're a "feed subscriber" sort of a person, you will probably need to updated/re-subscribe to this site, I think the feed's URL is different now.

The migration has been rocky and still is not done yet. If you are reading this shortly after I've published it, and you were to go back through my archives you would find a lot of broken images. Hopefully those will be fixed soon.

The inspiration for this move came when, while looking back at some of my old blog entries I discovered that some mean bot had gotten into my site's database and had tried to hide spam links in my blog posts.

I've setup lots of WordPress site's over the years and I always try to update regularly because WordPress is a huge target for this sort of SPAM-ing. I thought I was staying on top of things, but apparently not. I still don't know exactly when it happened, probably some time in the past year.

After cleaning things up I had a chat with a former Coworker Dez (we worked at Clockwork together). He's started his own company doing many things including "managed WordPress hosting". He shared a bunch of his best practices with me, and after thinking about what it would take to do it right, I concluded (not for the first time) that there are very good reasons people pay Dez for the work he does and what he knows and I should go a simpler route.

I had a great experience setting up Pelican for the Zombie Translator blog and I wasn't doing anything with my site that a statically generated site couldn't handle any way, so Pelican seemed the obvious choice.

I started the process of converting my content from the WordPress database to reStructuredText (still on going) and started picking out a theme.

After looking for a while I decided I wanted a Material look. I found one theme that was close to what I was thinking: pelican-material. It was in French though, so I forked it and translated the templates over to English.

However after working with pelican-material for a while I didn't much care for CSS/Javascript library it used: Materialize. It was not a "bad" library, but among other things it seems to be lacking an easy way to change up colors easily.

Then I found Material Design Lite right from that the horses mouth it self, The Google. I converted the theme to use Material Design Lite, added some features pelican-material did not have, and gave it a new name: thomomys.

In case you're wondering where I came up with that name, I used another half baked project of mine, Randomium.

Soon I hope to add thomomys to the Pelican theme library, but I need to clean things up a little bit more.

Just to keep things interesting I wanted to do all my work, such that it was, in python3, the bummer is one of Pelican's nice features is a Fabric file that makes build/previewing/publishing the site easy, and alas, Fabric does not support python3. However I found a library that does that's similar called Invoke. I rewrote the tasks I needed using Invoke, right now it's very specific to my site, but I'd like to spend some time making it more generic so others can use it as well.

There's still a lot to do. This process has already taken way longer then I thought it would, but I'm happy with the results.