It was a rainy Sunday morning, and I had nothing better to do than to start writing a blog. Dear reader, surely you understand that when a developer decides to write a blog, they don’t actually set out to write content for it. Instead, it is all about writing the blog engine itself: a rare opportunity to design software to your liking, unburdened by deadlines and scopes, a brief moment of liberty to focus on the things that matter.

Yet, it is but an excuse. Your blog with 0 monthly viewers and no content doesn’t need a parallelized CI/CD pipeline, it does not need Kubernetes, and it certainly doesn’t require the candidate release version of the programming language you use at work, but never get to try out it’s latest features. It is a bitter pill to swallow, but insufficient horizontal scaling is not the reason why your blog isn’t getting any views.

It’s good to honestly consider why you decided to start a blog, and in my case, it was to see how far I could go in the other direction. Could I create a blog without succumbing to these tendencies? How would I go about getting a blog up and running as fast as possible while enjoying a certain degree of freedom? In other words, how do I use my skillset to set up a blog instead of making my skillset a burden?

I decided to use Hugo, a static site generator written in Go. You don’t actually need to know any Go (I don’t) to use this tool. Hugo lets you preview your blog locally by typing hugo server, and you write content for it in Markdown. You can customize what it looks like, or you can select a theme. There is a wide selection of Hugo themes, ranging from minimalistic to wonderfully designed and feature-rich ones. I opted for PaperMod because it struck the perfect balance between minimalistic design and features for my needs. I have disabled most of the features (because I don’t need them right now), but the site is always just a config value away from being multilingual and having a search bar.

For hosting the site, I opted for Cloudflare Pages, which has a first-class support for the Hugo framework. Without having to maintain any infrastructure on my end, deployments are a single git push command, and the live site is updated in about a minute. I have no servers to manage, no CI/CD pipelines to configure, zero expiring certificates, and no dependencies to update. I get a site behind HTTPS, automatic deployments, and a CDN network. Best of all, since the blog isn’t doing any numbers (share the link with your friends), it is free of charge. The only cost of this setup is a recurring bill for the domain address.

The whole site is between 10kb (with disabled features) and 40kb (with searching and syntax highlights), and it takes around 60ms to render.

I have spent a couple of hours on this blog, but in the end, I have:

  • 40kb site that renders in under 100ms
  • automatic deployments
  • HTTPS and files served from a CDN
  • static site with dark mode (optionally also multilingual and with a search bar)
  • responsive design

I am equally satisfied with things I don’t have:

  • no code
  • no server
  • no cost

This takes away most of the opportunities to procrastinate by upgrading, migrating, refactoring, and rewriting the blog engine. Ultimately, the only thing that mattered from the beginning still remains: writing some content for your blog.