blogfor.net

Essay

How this blog gets made

This blog has a strange property: I can change it while I am reading it.

The strategy is one tight loop. I read a post on the live site, and when a sentence is wrong or half-formed I select it and leave a note right there on the page.

The in-browser editor: a passage of this post is highlighted and a small note box is open over it, asking for a note about the selected text, with save and cancel buttons.
leaving a note on the live page — the selected text becomes the note's scope

The note is not a comment, it is an instruction:

{ "scope": "page" | "element", "quote": "…selected text…", "note": "what to change" } page element
the whole shape of a note — page-level, or pinned to selected text

Minutes later the thing I complained about is gone. (This very post was shaped that way.)

The coordination layer is almost embarrassingly small: two endpoints, one bearer token, and plain JSON files on disk. No database, no admin panel, no queue.

YOU in the browser SERVER the cheap box CLAUDE local AI POST /api/notes get-notes POST /api/publish static HTML
you, the box, and the AI — joined by just two endpoints

The server is just as cheap. One small box, a Docker container, a folder of static HTML served straight to you. Writing a post never touches the server: the AI builds the HTML on my laptop and uploads the result, so the live site only ever does one job, hand you files. It costs almost nothing to run and there is almost nothing to break.

That is the whole bet. AI in the loop, a two-endpoint API, a static box. Describe what you want, watch it change, throw nothing away.

Watch how this post evolved →

Comments

    Add your note

    ← home