Table of Contents
I feel like “migrating to a different static site generator” is the new “installing a new Linux distro.” It’s something nerds do for almost no reason besides curiosity, boredom, and perhaps no small amount of masochism. And I am one of those nerds and just as guilty of the above as the rest.
Why Hugo? #
I’ve been running Pelican for about five years, and in general I’ve been pretty happy with it. But while significant faster than my earlier experiences with Jekyll, with 18 years of content, production builds were taking much longer. Also, I knew I wanted to do some reorganization of the site, so now was a good a time as any to look at alternatives.
I initially looked at Zola because I knew it was fast, and given my interest in Rust it was appealing. It’s templating system was pretty similar to Jinga so I wouldn’t be learning syntax from scratch.
But ultimately, Hugo seemed more flexible1 and the ability to use
_markup templates to override the default rendering sold me on it. Most of the SSGs support shortcodes to do this kind of thing too, but that litters your markdown with publisher-specific code.
Once I picked Hugo and spent a little time getting an understanding of how it worked, I went and selected a theme. I chose Blowfish because I liked the aesthetic, it supported both dark mode and light mode, and made use of Tailwind CSS, which is a framework I’ve already been playing with anyway.
The Process #
Migrating between SSGs is never totally straightforward. They all operate with alternative assumptions, and implement content management differently. This was similar.
I spent about two days finagling files into a folder stucture that wouldn’t break permalinks, as well as writing lots of regular expressions to solve for frontmatter differences, and removing or converting markup away from Pelican’s shortcodes.2 And of course, the usual config tweaks trying to resolve surprises.
But now, it’s here!
What’s Next #
Hopefully more blog posts. And there are a few more things I want to tweak here, but it feels good to finally launch it.
Plus, now my site builds in less than a second!