Tags Blogging

When I launched the new look of the website earlier this week, a lot of people asked me over email what kind of setup I'm using - blogging engine, hosting and so on. Here's a short writeup.

A lot has changed for this website. First of all, I switched my hosting provider from a shared Bluehost account (which I've had for the past 9 years or so) to a VPS on Digital Ocean.

Second, the blogging platform was changed from Wordpress to Pelican. Pelican is a really nice and fast static-site generator with a fairly clean Python codebase. It's easy to use and configure, and the documentation is great; so overall I'd say I'm pretty happy with it. The theme is my hacked up version of one of the existing bootstrap3-based themes. One of the benefits of this is that the site is now much more usable on mobile.

As for moving the existing content from the old Wordpress site, there are two options. For smaller sites you may consider the auto-import capability Pelican has for Wordpress imports. I didn't end up using it because I needed to preserve the exact permalinks of my old website (there are a lot of incoming links to it out there, and it would be a shame to break them all), as well as some other reasons. I just wrote a quick script that did my own importing from a Wordpress XML dump.

Pelican lets older (back-ported) HTML content peacefully coexist with new, ReST-authored content, which is very useful. For preserving the old permalinks, it has the handy save_as and url attributes. Pelican also comes with built-in integration to Google Analytics and Disqus, both of which took about 5 minutes to configure.

All in all, I'm very happy with the transition. Static pages just make more sense for a blog (even a fairly large one with over 1000 articles); the site now feels incredibly fast to me. This is hardly surprising, given that it moved from querying a DB and processing a bunch of PHP on a fairly congested machine to just running a bare web server accessing the filesystem on a reasonably fast, dedicated machine.


comments powered by Disqus