2 min read
Hello world: why this blog runs on Astro
The reasoning behind picking a static site generator over a CMS, and what it means for how often I'll actually write.

Every few years I rebuild this site. Not because the old one broke, but because the act of rebuilding is a good excuse to question assumptions. This time the assumption was: a blog needs a backend.
It doesn’t. A blog is a folder of Markdown files and a build step. Everything else — comments, search, “related posts” — is optional decoration that you can add later if you actually miss it.
What I optimised for
The thing that kills personal blogs isn’t design, it’s friction. If publishing means opening a CMS, logging in, fighting a rich-text editor, and clicking through four screens, you stop publishing. If publishing means git commit && git push, you keep going.
So the requirements were short:
- Write in Markdown, in my editor, with my snippets.
- One command to publish.
- No server to patch, no database to back up.
- Fast enough that I never think about it being fast.
Astro hits all four. It renders every page at build time, ships plain HTML, and only sends JavaScript when a page explicitly asks for it. This page you’re reading has one small inline script, and that script is just the theme switcher.
What I gave up
No comments. No full-text search out of the box. No dynamic “reading list”. All of those are solvable with a client-side island or a third-party embed, but none of them were the reason I wanted to write, so none of them shipped in v1.
If you’re setting up your own site: resist the urge to design the perfect blog before you have posts. Ship the folder of Markdown. Add features when you can name a specific post that needed one.
Next up, I’ll write about getting this thing onto Cloudflare Pages and what the build settings actually need to be.