Why I am building this blog by hand
Most blog templates optimize for the first ten minutes: pick a theme, change the accent color, publish. The cost shows up two years later, when you want a new feature and every layer is someone else’s abstraction.
This site takes the opposite bet. The content is plain Markdown. The build is Astro, with layouts and CSS written from scratch. The deployment is a static bundle plus a handful of small endpoints on Cloudflare. There is no theme to fight and no plugin ecosystem to audit.
The constraints I care about
- Content stays portable. Every post is a
.mdfile. If the stack dies,git clonestill gives me the source of truth. - Reading costs nothing. Static HTML, no client framework for the article itself. Interactive features load only when a reader asks for them.
- The backend is boring. One D1 table for users, one for daily quota. No Kubernetes, no managed auth vendor.
- Everything is replaceable. The LLM provider is an OpenAI-compatible endpoint. The auth provider is GitHub OAuth. Swapping either is an afternoon.
What comes next
The first interactive feature is an “Ask AI” panel scoped to a paragraph or section. It needs a server-side proxy because API keys cannot live in the browser, and it needs quotas because a public LLM endpoint will be scraped within days.
After that: running selected code snippets in the reader’s browser with Pyodide, so a post can ship a small, editable experiment instead of a screenshot of one.
If you want to follow along, the RSS feed and the source repository will be linked from the footer.
Comments
Comments are public and signed with your GitHub account.
No comments yet.