Building a blog that publishes itself
This site has no CMS. Posts and interactive artifacts are published by a tool call — here's the architecture, and why the artifacts are hosted here rather than linked away.
A blog is usually a piece of software you log into. This one is a database table and a publish contract.
The contract
One tool call creates or updates a post:
publish_note({
title, summary, category, tags,
body_md, // prose
html, // a full interactive artifact, hosted here
visibility // "public" | "private"
})
Because summary and category are required, no post can arrive half-formatted. Every publish is feed-ready by construction.
Artifacts live here, not elsewhere
The eleven pieces in this feed — BABEL, MARMA, TANTU, KAAL and the rest — were originally hosted on a separate Cloudflare Worker, and the blog linked out to them.
That was wrong. A link is a dependency: if the Worker goes down, every post goes hollow. So the HTML now lives in this blog's own database and renders inline, inside the page, in the site's own frame. About 260KB of it. The Worker is an origin, not a dependency.
The best publishing workflow has zero steps between "that's worth keeping" and "it's live."
Private by default, when it needs to be
Private posts sit in the same table behind a flag, gated by a TOTP code. The gate covers the feed, the post, and the raw artifact route — so a locked piece can't be pulled by guessing its URL.
That's the whole system. It fits in a weekend, and it will outlive any CMS I might have chosen instead.