Lab

How this site is put together

The vault stays flat and metadata-light on purpose. Structure is derived at build time rather than filed by hand, so every section of this site is a lens over the same folder of markdown rather than a different way of storing it. This page is where new views get tried before they become part of the site.

Derived at build time from /api/notes.json.

Graduated

Collection

“Show me everything, then let me narrow it.”

Started as Atlas. Now the real page behind every section — Notes, Projects, Practice and Travel all run the same faceted browser, grouping by sub-folder where one exists.

Shipped · /Notes /Projects /Practice-of-Product /Travel

News

“What has he been up to lately?”

Started as Stream. One reverse-chronological river merging note activity with the Bluesky feed, so the site has a pulse without needing a blog.

Shipped · /news

Still experimental

Constellation

“What are the neighbourhoods here?”

Topic map built from tag co-occurrence rather than links, because the wikilink graph is still nearly empty. An honest map of what is actually connected, and a diagnostic for what is not.

Live · diagnostic

Principles

  1. Flat storage, layered reading. One folder of notes. Every view is derived.
  2. Derive before you demand. No view may require metadata that does not exist yet.
  3. Don't fake authority. Bulk-import dates and empty link graphs get shown as what they are.
  4. A view is a URL. Every filtered state is a link worth sending.
  5. Experiments are cheap and disposable. Ship under /lab, promote or delete.

Full reasoning lives in docs/notes-ux-spec.md in the repo.

References

Everything here reads /api/notes.json and /api/bluesky.json, both regenerated on every push to main. Experiments still under /lab are excluded from search and the sitemap; the ones that graduated are ordinary pages of the site.