For a while, bashblog did exactly what I needed it to do. It was a single script, it didn't require a database, and it kept things out of the corporate cloud. But eventually, the cracks started to show. The moment you want to fix the markdown formatting issues, change how files are structured, tweak the layout logic, or manage index compilation without losing your mind, hacking away at a massive shell script feels less like minimalism and more like fighting a tool that wasn't built for your specific workflow.
So, I did what anyone would do: I went looking for an alternative.
The state of modern web software is excessively bloated. I spent a couple of hours digging through the current landscape of "lightweight" blogging engines and static site generators. Most of what I found was bloated beyond belief—engines wrapped in heavy JavaScript frameworks, massive Python dependency trees, used overly complex PHP (not that I have anything against PHP on its own) or tools that require pulling down hundreds of megabytes of packages just to compile a few plain text files into HTML. Even the self-proclaimed minimalist options still felt over-engineered for what should be a simple text-processing pipeline.
Nothing was even close. If you want something done cleanly without the extra weight, you usually have to write it yourself.
The final spark came when I was looking through Levi's website repository and saw their newpost.sh script. It’s a beautifully simple, no-nonsense shell utility designed to stream-line making a new entry. It reminded me how straightforward the process should be. But instead of sticking strictly to a shell script pipeline for the entire compiler backend, I wanted a dedicated language built from the ground up for heavy text manipulation.
I decided to roll my own static site compiler in Perl 5.8.
Yes, Perl 5.8. It’s a tool from a different era, but it is absolutely unbeatable. It is blazingly fast, runs natively on virtually any Unix-like box you throw it at, handles regular expressions like second nature, and has zero external runtime dependencies.
My new setup reads basic text files with custom metadata headers, runs them through a simple template block, and compiles the entire site—including the master index and an RSS feed—in just a few milliseconds. No Node modules, no complex database configurations, and no overhead. Just raw text, strict logic, and clean HTML.
It feels good to finally have a setup where I know exactly what every single line of code is doing.
Threat: Ask for permission before reproducing full text copies of this blog, or I will hunt you down.
Copyright © 2026 ~cartwright