Most people who read this will open it on a phone between other apps. If the page is heavy, they leave. That is the whole product requirement.
What I Run
Markdown files, a small generator (TypeScript, Nunjucks templates, PostCSS), static HTML out the other side. Hosting is Cloudflare. No Node process sitting around waiting for requests.
I used Claude Code heavily while building the pipeline. The stack choice was still mine: I wanted deploy to be “push and forget,” not “hope the server is up.”
The dependency list is boring on purpose — parse frontmatter, render Markdown, highlight code, ship CSS. If a library does not earn its install, it does not stay.
Deploy
Write a post, push to git, CI builds the site, Cloudflare serves the files from the edge. Readers get HTML from a nearby PoP. I do not SSH in to restart anything when traffic spikes, because there is nothing to restart.
What I Skipped
No Next.js for the blog. I have paid that tax on app work — routing frameworks, serverless cold starts, EMFILE limits on hobby plans. A blog does not need that surface area.
beconfused.com and yorksf.com run the same idea. Same monorepo patterns, same edge host. More on the hosting path in static blog on Cloudflare.
One quick signal
Did this earn your time?
Thanks. That gives me something concrete to check.



