3 minutes
Why bother with a static blog in 2025 ?
The beauty of static content generation
Right after deciding to act on my new year’s resolution to start a blog, my first primal reaction was to google how to deploy and run a containerized Wordpress. Yikes. Recalling Matt Mullenweg’s unsavory meltdown and ensuing drama thankfully made me pause for a second …
Did I really need to run hundred of MB of PHP scripts to render a couple of pages everytime some AI bot would crawl this blog? Did I really need the dozens of fancy plugins to perform SEO, track visitors, inject ads and generate affiliate links?
Here is what actually matters to me:
- Markdown files in a git repo as source of truth. I’m a developer.
- Efficient usage of resources. In this day and age, this should be on everyone’s mind.
- No possibility for tracking or identifying visitors. Yes, privacy is a feature.
- Simplicity: easy to secure and maintain, both for content generation and publication.
The solution was writing itself: nothing can beat nginx running on bare metal and serving a bunch of static html files.
Picking the right tools for the job
There are plenty of markdown-based static site generators, such as Jekyll or Eleventy. I wanted something simple and low-maintenance, so I settled on Hugo, because it’s a single static binary written in Go, and I didn’t want to bother with npm or virtualenv. A strong community has formed around it, and a bunch of cool themes are available.
The markdown sources for this blog (as well as few hugo configuration files) are stored in a single git repo. I use Zed as a text editor because it’s the new kid on the block, with two tasks configured for testing (hugo server -D
) and publishing (hugo && rsync
).
Integrating with the Fediverse (or how to not reinvent the wheel)
But not everything can be static on a blog, right? What about user-submitted content such as comments?
I first got the idea to leverage the Fediverse from @jwildeboer@social.wildeboer.net’s blog, which happend to also be fully static. The idea immediately clicked: no need to reinvent the wheel, a decentralized way to engage with anyone exists, and I’m even already running my own personal Mastodon instance!
Because I’m lazy, I’ve simply ripped off an existing Hugo implementation straight from this article. I just have to manually create a toot for each article, and link back its id. All the magic happens client-side thanks to a small JavaScript snippet.
Is this really only about technical efficiency and security?
While I was initially driven by purely technical considerations, reading about the small web resonated with me. Technology is not (always?) neutral, it can be biased and shaped by the interests of large actors. Maybe my futile quest for simplicity, privacy and efficiency is really about taking back control?
In any case, the small web is beautiful.
Comments
With an account on the Fediverse or Mastodon, you can respond to this post. Known replies are displayed below:
Note: This will load data from toot.gagniard.org.
Learn how this is implemented here.