Blog anatomy - Site generation overview

I ported this blog from Jekyll to Hugo in 2021. Both are classed as static site generators 1.

It was triggered after Jekyll reached version 4, which I wanted to roll with, but I got stuck on an upgrade.

I started having issues with generating, and, it didn't seem like there's an obvious solution to it (at least at the time). I ended up browsing the Web for a while but had no luck. In desperation, I started looking at Jekyll's source code and learning about Ruby and gems more than I cared to.

Eventually, my patience for Jekyll run-out. Yes, I didn't really care about learning Ruby, I was much more interested in having a working site generator.

And then Hugo emerged.

Hugo was new, it was generating fast, and it was gaining popularity. It's written in GoLang, which I’ve used before and it uses Go templating.

It's distributed as a single binary, so it works right away, no dependencies. It makes it easy to use it locally or containerize it in a slim package.

It supports markdown, like Jekyll, albeit different flavour (then it was "kramdown" by Jekyll and "Blackfriday" by Hugo). That was crucial as I wanted to port the old blog posts with as little extra work as possible.

In retrospect, I’m pleased with Hugo. I do appreciate the little bits of GoLang that I get to work with (as opposed to Ruby in Jekyll plugins). The templating in Hugo takes a bit of time to get used to, compared to Jekyll's "Liquid". For example, a binary logical operator and and it's operands are written like that in Hugo:

1{{ if and .IsYoda .IsSpeaking }}
2Hrrmmm. Used to it you will eventually get.
3{{ end }}

Both tools support the concept of themes which makes it possible to focus the main effort on the contents.

I picked hugo-clarity and it serves me rather well. I've found that theme quite aligned with what I want from my site and it was easy to customize. I'm sure your mileage will vary depending on what your website is and which theme you'll ultimately pick.


  1. static site generator creates the static resources of a website (HTML, CSS, JS, and other resources) from a set of templates and (nearly) plain text files. The generation happens before publishing and the resources stay the same until regenerated and published again. ↩︎


Other posts in blog-anatomy series