I’ve moved this site from WordPress to Pelican. Pelican is awesome.
WordPress is written in PHP and uses MySQL to store the data needed to build each page. The good thing about WordPress is that the pages are built as they are requested. The bad thing about WordPress is that the pages are built as they are requested.
The whole database-driven dynamic page thing can slow down a site quite a bit, especially if you’re only using a basic hosting package. If like me you also install a boatload of plugins and themes to test things out the database gets full of cruft adding to more slowdowns. I experimented with various different caching plugins and they seemed to work great for a couple of weeks and then they’d stop updating the content and serve up week-old stale pages. I never found out why.
So a caching plugin basically saves a copy of a generated page as a static HTML file and serves it back up if the page is requested again instead of having to recreate it. It’s a way of turning your nice dynamic site into a static site. So why not just have a static site? Well, it’s good to have themes, plugins and control over other parts of the site to be able to change things quickly. It’s also nice to have a nice interface for writing posts.
While looking for alternative blogging platforms that might improve the speed of my site I stumbled across Pelican. The fact that it’s written in Python had me interested right away. Pelican doesn’t require any kind of fiddly setting up of the web host, it just parses a config file with site settings, takes posts written in single Markdown files and creates a static HTML site. When you add a new post by creating a new Markdown file the whole site can be regenerated again. Very quickly. Tie this with rsync for quick deployment back to the web host and you have a very customisable and fast blogging solution that’s also fun to use.
I started out with a couple of the default themes with my own tweaks, but have finally settled on a Pelican port of the default Octopress (similar to Pelican but Ruby based) theme by Maurizio Sambati along with some excellent modifications by Jake Vanderplas. I’m very much happy with the results.