Since I started this blog back in 2011, it’s been built on Jekyll, a static site generator that takes your written content and the information needed to wrap that in a valid website, and renders it to static files. No database, no dynamic aspect (at least no server-side dynamic aspect); just HTML that your webserver can get to the user agent that requested it quickly and efficiently.

I started a new blog just before this last Christmas period, as an experiment in a different type of writing, and took the opportunity to get familiar with new static site generators that had shown up since I picked Jekyll in 2011, and also changes to Jekyll itself. I never kept that up-to-date with it if I’m honest, preferring the lower friction of if it ain’t broke, don’t fix it. Hugo stood out from the crowd and I used it for the new blog successfully enough that yesterday I decided the experiment was over and migrated the content from the old into the new Hugo-powered setup, tidied things up a bit here and there, and published the new combined thing in place of both old and new (at, rather than the .com my blog has been on all these years).

Hugo’s main benefits versus Jekyll are speed and only having a single binary to ship. By the time the Ruby runtime that Jekyll needs has got itself into shape to even run the Jekyll code, Hugo has already gone from start to finish for me. And because it’s written in Go, Hugo is compiled into a single static binary. That means deploying Hugo is trivial. Just copy the binary to the target machine and run it. No Ruby versioning system, no gems, no deployment overhead. That doesn’t matter for someone like me really, where I manage the whole webserver, but it’s been a boon during testing at least.

If you’re looking to start a new blog, give Hugo a go.