Why I Made Yet Another Blog Generator

Why I made yet another blog generator?

In today's world, it's safe to say that most of us have a wealth of bookmarked content, as well as a considerable amount of internal notes, documents, and other material that we keep in services like Google Keep and Obsidian.

I use Obsidian to store thoughts, incomplete ideas, and pieces of information that might be useful in the future. The problem is that, since it is meant to be consumed by myself only, it's hard to find the motivation to really polish those notes. I see no point in dating them, either, so you eventually find yourself in a situation where you don't know if that preliminary research on how to embed 3D animations in HTML is reasonably up to date, or if it is worth redoing in light of new technology that might have emerged.

For a couple of years, I've been searching for a frictionless way to publish this kind of content. Social networks tend to come and go, so the most future-proof medium has always seemed to me to be the good old blog.

On a personal note, since the days of Orkut, I haven't truly engaged with social networks. The combination of a lack of time and a format that isn't particularly interesting to me has pushed me away. I've always preferred the more passive approach of blogs, with longer and generally more consistent content. So much so, that even today, I still maintain my feeds.

Some interesting platforms have emerged, of course, in the meantime, such as Medium, which has some very interesting articles. However, in recent years, I started to notice that there were interesting things I was developing, both in the workplace and in terms of personal projects, and I began to plan my return.

In the interim, I've made a few scattered websites to organize some information that was interesting to me. If you notice, at the top, the link "research paper structure" leads to a page with instructions for writing an academic paper, and another with a collection of videos and animations compiling calisthenics exercises. In the context of this endeavor, I'd like a solution that could easily encompass these sites.

I also tried to hack together something, most notably the Pandoc + Python's Beautiful Soup implementation below, but it got too messy too quickly.

Old BLog

My ideal workflow would be to write or edit content as I already do for my personal wiki, which currently consists of Markdown files in an Obsidian vault. Then, with a simple command, I'd have everything transformed into a static website, with an RSS feed updated accordingly, ready to host on services like GitHub Pages, Netlify, or Firebase.

It's imperative, therefore, that my blogging experience consists of having a structure of organized text files with up-to-date backups that can somehow be transformed into a blog. Being a programmer, I only feel comfortable working within a version control system like Git, for example. This is another reason for having as much as possible in a textual format.

With that in mind, I set out to investigate what was available. Behemoths like WordPress and self-hosted Ghost were immediately ruled out, as I wanted something lightweight and simple. To sum up the requirements:

Hugo's claims of speed were alluring, but I found it too complex. In Jekyll's case, the problem, I believe, was with Liquid, their templating engine, and the Ruby dependencies. I also explored Grav, Eleventy, Pelican, and Nikola, but was ultimately unsatisfied for one reason or another.

So, I decided to build my own static site generator. My first attempt, ContentManager, was in Rust, and I was actually making slow but steady progress with it in my free time.

Fast forward to around September 2024, when I grew tired of how much Python struggles with large codebases. I began to look for a statically typed and, ideally, compiled language in which I could be as productive as I am in Python. I decided to try Go and, after reading a few books and experimenting with a small project, I decided to port what I already had in Rust to Go. Within a couple of days, the Go version had already achieved feature parity with the barebones Rust implementation. A short three months later, I am proud to present the Dead Simple Blog Generator (DSBG), a static site generator written in Go.

Dead Simple Blog Generator is here!

A new static site generator that's truly simple. Built with Go for speed & efficiency.

Getting started