For this relaunch of the blog, I started using Hugo as my static site generator. Hugo is written in Go, and it is unlike much of its competition in many ways.
The biggest difference is that Hugo comes in the form of a single executable. It has no dependencies, and it does not require you to install any sort of programming language. The implications of this one difference are staggering. In addition to making it easier to install and get started, as well as easer to update and maintain, Hugo’s single-executable means that it is trivial to place the executable file into your git repository. Doing so means that as long as you can clone your Git repository, you can reproduce your entire build environment on any computer. This is an extremely big deal for me. One of the minor reasons why I stopped working on the old iteration of the blog was that the build environment was set up on my oldest, slowest laptop. I didn’t like getting on it all that much, and I did not want to spend a ton of time replicating the environment on another box. With Hugo this is no longer an issue.
Another consequence of Hugo’s design is that it changes the way it interacts with external tools. By default, it tries to provide as many features out-of-the-box as it possibly can, so much so that for most use cases, you likely will not need to seek out external functionality. As a result of this, it doesn’t have that many hooks into, or awareness of external tools. Even when it does, it tends to be simple and deliberate. For example, Hugo is able to provide syntax highlighting for code blocks out of the box. It also allows you to use the Pygments tool to do it instead, but it is up to you to install Pygments and make sure that the executable is on your system path. The documentation is very clear in telling you a) that you have to do this, and b) how to do it, so there is no guesswork involved.