Blooming Cacti

Bring life to a barren, technological wasteland

Hugo Bound?

I've been thinking about switching my blogs from being generated with Pelican to being generated with Hugo. Pelican takes nearly 30 seconds to rebuild my main blog, while Hugo promises to work much more quickly.

Pelican is written in Python and needs to be installed in a virtualenv, with a whole passel of Python modules. Hugo is written in Go and compiled to a single, static executable. That one file can be dropped anywhere on a server and run without any further dependencies. That kind of simplicity appeals to me, over my current setup which has Pelican running in a Docker container.

My current setup is more baroque than just running Pelican in a container. All of my blog posts are stored in Git. To publish something, I commit the new post to Git and push the update to the repository on BitBucket. BitBucket then pings my server with a notification that something was changed. My server pulls the updates from the Git repository, uses the Dockerized install of Pelican to rebuild the site, and then pushes the updated HTML to the web server. There's a lot of moving parts there. And most of the time I don't even remember how they work or where they're all installed.

Before I can possibly move to Hugo, I need to document how my current setup works, where everything is installed, and how the pieces communicate with each other. I also need to document which features of Pelican I'm actually using (and which plugins), so that I can be sure that Hugo has equivalent functionality.

(I hope Betteridge's Law doesn't apply to this blog post.)