A Way to the World Wide Web

2026-10-22

I hadn’t anticipated building anything yet, not before I’d even had a chance to set up my machines. I definitely did not anticipate developing a static website generator of all things, ever. And yet here we are. Did I spend too much time on it? Probably! Was it a good idea? Who knows!

It works great though.

Welcome Ree!

Ree is a little (<500 lines with lots of comments) Perl script that turns Markdown and images into websites. Point it at a folder of the stuff and out pops a website that looks much like this one, which I am now generating with Ree. If you too have folders of Markdown and images you’d like to turn into websites, I’ve shared the project on Codeberg.

It does some cool stuff like wiki-style links, smart typography, code blocks, and basic but entirely useful folder navigation. It omits (for now, anyway) some things I don’t currently need for myself, like automatically generated indices and feeds.

Why something new?

Remember my last post when I said I had “conditions”? First and foremost of those is that I want to be enjoying what I’m doing, which includes enjoying the tools I’m using. If I’m not having fun here I’d be better off finding more billable hours to work instead.

I came into this effort intending to use Eleventy as I already had some experience with it. But I found it too “kitchen sink”, with too many different ways to do the same thing, and too many new concepts to learn. It has nearly a dozen different template languages, for example. It requires NodeJS and NPM and an uncomfortably large dependency tree which, in this era of LLM-powered software supply chain attacks, feels fraught.

Hugo looks good: small, single executable. But oh, it’s run by a white guy who is still on X. In 2026. :eyeroll:

Jekyll is Ruby which has DHH smeared all over it. I just can’t.

There are a lot of choices in this space, and with time and patience I probably would have found something. But it feels like such a simple problem. Why should I take any risk here? So I had a crack at rolling my own and it turns out it can be done awfully simply with some awfully boring, stable tools.

I used Pandoc to handle the Markdown-to-HTML conversion because it’s been around and drama-free for over 20 years now. The documentation is good and it supports every feature I’m likely to need including syntax-aware code blocks and smart typography. It’s just a single executable that’s already in most system package libraries, with no extra runtime or package manager. It was created by John MacFarlane, a philosophy professor at the University of California, Berkeley. And, at the time of this writing, the project website expresses support for Ukraine.

I used Perl for the scripting because it already comes out-of-the-box on every desktop system I’m likely to ever use. It’s been around and boring for nearly 40 (!!) years now. It’s great at working with text files and transformations. It was created by Larry Wall, who is the good kind of character. And the project’s LLM policy sets reasonable guardrails, even if they are more lenient than my own. I stuck with just the base language with no extra modules.

Was this a good use of my time?

It feels good to not have to worry about this one. It’s a tiny little utility, but it’s central to getting my voice on the web, and so yes, I think the peace of mind is worth it. And it is such a small script that I have no worries about the long-term maintenance of it.

I’m not sure if I really needed to take the time to publish it so soon though. Putting together a README, the usage instructions, and an example site was all work that perhaps could have evolved over time through internal use. But on the flip side, the process shook out several bugs that might have been hard to spot later, I found some opportunities to simplify the code, and the breadcrumb navigation improved. So, maybe? It was good practice on shipping something anyway. I’m rusty.

Now what?

Now that I have a place to share my work and am no longer talking to myself, it’s time to get my gear together and my tools sharpened.

I’m currently running on a mix of macOS, iOS, Windows, and a couple of different versions of Linux. I want off the corporate OSes, especially Apple’s, who keeps poking at me to install macOS and iOS 27 with “liquid glass” and “Apple Intelligence” and hell no. I’d like to be on an open OS with a good LLM policy, and ideally the same or similar OS across all my machines.

Also, it’s a weird jag but I think I want to try fixing the Orange Chair. The weather is turning colder here and it is such a comfortable and cozy place to work when I want to be away from my desk. Especially in the afternoons when the sun hits that spot and Esme comes by to curl up. The canvas holding the seat springs in place underneath has disintegrated and so the seat has drooped, with the springs resting on the floor. This may be out of my league to fix but let’s do our best!

It’s all the project; I have to sit somewhere after all!