# Highly customized websites
For years I ran this blog on Ghost. It is a fine blogging platform — polished, fast, and it mostly stays out of your way. But it is also a service you depend on, a Node.js process you have to keep alive, a database to back up, and a monthly bill to justify.
A personal blog is, at its core, a handful of Markdown files and some HTML templates. Throw a bit of pandoc in the mix and you have a full fledged website.
I always wanted to write my own small blog engine. I want tiny features that no other blog engines have. For example why not adding a small game you can play:
← → to move | click canvas to start
This is a different kind of software. Not a product you maintain forever, but a small tool that does exactly what you need today and can be reshaped tomorrow at will with a bunch of prompts. You don’t have a product per se but a lot of markdown files being duct taped by open source projects. All managed with a coding agent acting as your obedient assistant.
What I ended up with
This site is now generated by a ~500-line shitty Python script I
wrote with the help of Claude Code. It reads posts from a
posts/ directory, runs them through Pandoc, renders Jinja2
templates, and writes static HTML to a dist/ folder that
Cloudflare Pages serves directly.
Deployment is a git push. As it should be.
I must admit I’m using AI to detect which tags a post should have. I don’t think it’ll work perfectly, but the cost of changing it is small. And the icing on the cake wasn’t just that. It’s that I can use coding agents to actually interface with the blog’s code, so I can customize the UI to my own needs.
I also used AI to migrate the old posts to plain markdown stored in a git repo. The CSS migration is not perfect, so some old posts will still render like shit, but I have plenty of time to fix them.
Harnesses are not only for code
Something I want to experiment with is the use of pi as an assistant on working in the blog. You can reshape pi to do whatever you want. In the blog repo, there is a small pi UI component that shows how many posts and drafts I have. I use VS Code to write and pi to proofread, correct typos, handle assets, and change the build…
Everything is just text
At the end of the day, if you have a sufficiently powerful harness you can shape your output to your will. It is a weird feeling. I am used to the safety of deterministic software (or at least the illusion of it), and embracing this “lack of knowing everything” is a bit worrisome.
Anyway, the future is bright. I can add a small game to a blog post just to prove a point. The future is surely weird.
Have fun!!