Skip to content

Live

Shorter notes, more often.

Live

Short posts, newest first. This is the page that changes most often, because it is where anything shipped gets written down before it is documented properly.

Every post is its own document with its own URL β€” a feed here is a view over children, not a different kind of storage.

Jun!sAug 30

The whole demo is two containers now β€” server and app, SQLite, seeded on first boot. `docker compose up` and you have this.

Fans, mostly

Jun!sAug 29

Delete a database and every connected browser used to push the old tree straight back in β€” every page twice, then three times. The server's identity changes when its database does, so the client now drops its caches first.

Jun!sAug 27

It only ever compared prose and seven metadata fields, so renaming a page or changing its type outlasted it. It compares every axis now β€” and stopped "fixing" three tiles whose values differed only in key order.

A mop, somewhere down the corridor

Jun!sAug 26

Chat lives in the corner of every page. It is one document with its own write permission β€” the narrowest grant that could possibly work.

Jun!sAug 24

The wall shipped empty because the seeder had no images to upload, which meant the one page type nobody could look at. It generates its own now β€” a PNG is only about forty lines of zlib.

Jun!sAug 22

The starter tree seeds one page per page type on purpose. A renderer nobody can reach on a fresh deploy is a renderer nobody tests.

Jun!s

This one has no date at all. It sorts to the bottom rather than the top, so a child created under another page type can never displace real content at the head of the feed.