Tech behind the blog
One of the first decisions I made after starting to write a blog was where it would live. It was a simple question, but this led me down a rabbit hole of options to weigh up.
Why not use an existing solution?
It’d be easy to reach for Substack or Medium and call it a day. They’re polished, simple to use, and they handle everything for you.
The short answer is that I want flexibility. A purpose-built blog platform would absolutely be easier, but I want something that lets me show off projects, mess with layouts, and experiment with new technologies as I see fit.
I also care about owning my content. Markdown files in a git repository feel a lot more durable than content locked inside a third-party platform that might change its pricing model or shut down.
Keeping it simple
A book I enjoyed a while back, Hypermedia Systems, reminded me of the appeal of web development before large JavaScript-heavy frameworks took over. Simple is easier to understand and maintain. It means less time hunting down mysterious bugs and more time spent on the parts that actually matter. That pushed me toward a simpler stack for the site.
What I considered
Hono.dev
Hono is a framework I’ve been using for several years. It’s still relatively new, but it’s a solid choice if you want SSR and React syntax. One thing I really like about Hono is that it has zero dependencies, which keeps your direct dependency tree small and stops your package.json from turning into a monster.
Astro
Astro is a framework I’ve had my eye on for a while, but I hadn’t had a strong use case for it until now. I like that the built-in file routing handles different content formats cleanly, which is a great fit for a small blog like this. Overall, Astro feels purpose-built for content-driven websites.
HTMX.org
HTMX gives HTML better legs, which in turn minimises your JavaScript footprint. It can’t stand on its own since it still needs something to serve it up, but I wanted to mention it because it’s a nice way to add interactivity without dragging in a bunch of JS. HTMX is especially powerful alongside a batteries-included framework like Hono, where you can serve HTML over SSR and use Cloudflare Durable Objects as the state backend. I’ll probably write about that properly at some point.
Why Astro won
Astro won out for a few reasons. It’s built specifically for content sites, which means the primitives it gives you, like content collections, layouts, and frontmatter, all map directly onto what a blog needs. There’s no fighting the framework.
The other big reason is how little JavaScript it sends to the client. A lot of modern frameworks require you to ship a full JavaScript runtime just to render some text. React, Next.js, and similar tools are powerful, but that power comes with weight. For a blog, most pages don’t need any client-side JavaScript at all. Astro’s default is to ship zero JS unless you explicitly opt in, which feels right for what I want.
It also supports MDX out of the box, which means I can drop interactive components into posts when I need them, without paying the cost upfront on every page.
Hosting on Cloudflare
With the site ready, the next step was hosting. I considered self-hosting from my homelab, but in the end I opted for simplicity and put it on Cloudflare. With Cloudflare Pages and Workers, I only pay $5, and that should be more than enough for this blog. Since I’m not expecting a large amount of traffic, I don’t see myself going above the developer plan. If that changes later, I still have the option to move it elsewhere.
A nice side effect
One nice side effect of choosing Astro is an excellent Lighthouse score. That’s not too surprising for a static site, but I’m still happy with it.
