Blogging about software has been a goal of mine for years now. It might surprise you then to discover I am quite relieved it’s only happening now. I’m a very different developer than I was back then, and looking back on some of my previous attempts, I don’t think I would be very happy with them now.

My first attempt was ambitious to say the least. I imagined a REST API built in golang serving a web client built in elm. All running on a raspberry pi cluster via docker swarm. As you can see if you look at those projects, I actually made it quite far despite the whole thing being incredibly over-engineered. This would mark my foray into several topics I had not worked much with before, such as:

  • ops (docker, distributed databases)
  • REST1
  • golang
  • cross compilation

Some time later with more experience under my belt, I decided I wanted to take another crack at the backend, and learn some new technologies while I was at it, so I rewrote the backend in Elixir. By this time I had found (and fallen in love with) nix, so I was using it to improve the development environment.

Somehow at this point I still hadn’t come to the conclusion that what I was building was entirely overkill for what I needed. I’m glad that I made that mistake, because I learned a great deal working on those projects, but I don’t think I would repeat those decisions now.

Fast forward to a month ago, when I was busy setting up writefreely on a different raspberry pi. I just wanted something setup that would allow me to start writing, which it did. It enabled me to write my first two blog posts about kakoune and modal editing. It also allowed me to flex my nix skills now that they’d had time to mature, adding it to meg (my personal collection of self-hosted services).

It soon became clear to me that it wasn’t exactly what I wanted. It was heavier than I needed, didn’t handle markdown the way I wanted and just generally wasn’t in my control. Which brings us to this week, which I spent building what you currently see. It uses hugo, a popular tool for building static websites, along with my own theme I built from scratch. This allowed me to control every little detail about how the site is rendered while taking advantage of features built into hugo, such as embedding markdown into the pages, generating an rss feed, etc. It also allows me to write my posts where I would like to, in my terminal, without needing to then copy it into a webpage.

I’m quite happy with how it turned out, and it’s also satisfying to see my growth as a developer. Where I started out with something over-engineered, with features I would never use, I arrived at something minimal and hopefully more accessible to those with different capabilities or with less powerful hardware.

Feel free to check it out on sourcehut, and watch out for future posts on tangential topics such as:

  • nix
  • infrastructure as code
  • meg

  1. When writing this post I had forgotten I was already aquainted with REST API’s at this point ↩︎