The Ranty Programmer
CV

The Front-End DLC (The DevOps Journey - 1.1)

The Side Quest

Well this week I took a small detour on the journey. As I started writing this series something dawned on me. My personal blog, the place where I rant to no avail about all the bloat in software, was running on Vitepress.

True, it isn't React, which is a step forward in this sea of terrible software surrounding us(complains the hypocrite while editing this blog entry in a CMS).

Now, don't get me wrong, Vitepress is pretty good. It's super easy to setup and get going a blog with all the niceties and fairly good performance. On top of that you get to hook Vue.js components directly inside your Markdown. It is truly a great developer experience.

However, I still cannot let go of the fact that we are shipping reactive frameworks to render a blog, A BLOG! So putting my money where my mouth is, I decided to strip the bloat away.

The Generator

Well for me editing the blog in Markdown is truly a non-negotiable. Who wants to be typing content directly in HTML? So, while I'm simplifying my stack and reducing bloat, I'm not going back to the middle ages and give up on Markdown editing.

After some digging around I decided to try Zola. Hugo is much more mature but everyone is always complaining about how terrible the Go template syntax is and I already write a lot of Jinja2 in Ansible so I guess it felt more like home. The docs were not super intuitive but, well there are enough examples out there to get going. I also wouldn't be putting any extra effort in the docs if nobody is paying me. I'm not sure I would go with this tool for something more complex, I've only tried it for a weekend. But for the purposes of my blog (and most landing pages out there) this gets the job done easily.

This doesn't come free though. I did spend a good part of my weekend rewriting all that basic HTML support that we already give for granted in all these fancy frameworks. So for the foreseeable future my site will take a small hit in looks while I focus my energy on the rest of the series.

Update 2026-05-01:

Well, It didn't take long to hit my first problem with Zola. The functionality for marking a page as draft is kind of aggressive; once I tried to get creative with the link generation, I hit a wall fast.

Of course, I could've just lived with it and simply added the links once the pages were ready to be published; however, if you've read this far, you might be coming to the realization that I'm just not that laid back.

So I proceeded to fork https://github.com/getzola/zola and add the small bypass. Gladly the codebase was very easy to read and the change was trivial, so it only took like 20mins ... plus 2 hours of compiling(I will never get used to those compile times in Rust).

Of course, as the good Nix simp I am, I went out of my way and offered an infectious PR adding a flake along with my patch.

The CMS

Now here my procrastination was working full time. I had literally 0 reasons to install a CMS here. Yet here I am adding reactive websites much bigger than this page just to edit some markdown content in a way less ergonomic user interface. Not that anyone cares, that endpoint is not public(don't be trying weird attacks on my server please).

On top of it bringing the so unwanted bloat, setting this to work took me the other half of my weekend. Turns out for some reason self hosting your own git and hiding it behind Cloudflare makes integrations a lot harder to get going. Add to that, that for some reason the CMS doesn't pass cookies when making fetch requests and you've gotten yourself a recipe for a lot of pain.

So here I am, on a Sunday, patching some bloated CMS I'm not even going to be using outside of my phone; cause editing in Helix is so much better than using a rich text field; so that it can go through all the over-engineered hoops in my home-lab.

By the way, can anyone explain to me how come the node_modules folder for the Decap CMS takes 1Gb of space and 2 Minutes to build? Maybe I'm the crazy one but this is just sad.

Later on I settled on Sveltia in the end; at least it builds in less than 20 seconds. Both of them had me do the same patching but, Sveltia has been adding some quality of life features like ignoring the `_index` file and looking more responsive overall on Github. Well, and Svelte is a lot better than React to have as a dependency.

Conclusions

After spending my weekend very productively sidetracking:

I've gotten the opportunity to refactor my NGINX config a little.

I tried building OCI images with nix instead of Docker. I really don't know how everyone is not doing this already. Builds are faster, safer and images are smaller.

I migrated this website from being fast to being super fast. Albeit a little bit uglier. On the plus side, if you're one of those preppers disabling JS in their browser, you will largely get the same experience. I only have like 20 lines of JS for changing and persisting the theme.

Last but not least I configured my personal git repo to handle actions, marking with this my total liberation from the tyranny of Github. This is definitely the most important result of them all. Those github workflows are as unstable as they come. Now my site deploys in 10s after a push and I don't have to be throwing dice wondering if the deploy will work or not, certain my content will be updated(if the gods of the cache will allow it of course).