Blog

Essays and observations. For org updates, see News.

  1. Persisting agent work as a node graph

    Linear chat lies about parallel agent work. Persist a node graph on disk; spawn children when topic forks; parent and child record each other's address.

  2. Making model assumptions transparent

    Assistant chat treats guesses and researched facts as the same confident prose. Trust needs provenance on the tokens themselves — so you can see what the model assumed before you pay for the mistake.

  3. Seeing parallel agents as a task grid

    Twelve concurrent repo jobs should not serialize into one scroll. A task grid with status lights and fork chats shows parallel work as parallel.

  4. When the browser flattens working memory

    Professional desktop software separates the model from controls about the model. The web collapsed that into one viewport — not because the platform forbids windows, but because SPAs optimized for mobile parity. Spatial web windows restore the cue.

  5. Color fonts as theme integrity: COLRv1 and Nabla

    COLRv1 adds gradients, blending modes, and compositing to the earlier COLRv0 layer model—making rich, palette-tunable text feel like a rendering contract, not a brittle SVG stack.

  6. Config UI as the field vocabulary

    A settings UI is not chrome on a text file. It is the shared list of legal fields — including the ones the author never wrote.

  7. An alternative to URLs

    Why treat the string you typed as the thing itself? Pretty URLs stay for people — systems need another way to find, cite, and depend on a resource.

  8. Broken links after a URL rename

    Rename a docs URL for clarity, and every README that baked the old string becomes a broken link — the cleanup is still yours.

  9. Ecosystem nav at the screen edge

    Suite apps stuff new platforms into the header until you lose which world you are in. Context Edge moves that travel to thin rails on the shell — wireframe maps, stable overlays, optional path color.

  10. Making settings follow the activity

    Settings far from the work force you to rebuild context. Context-bound settings show only what applies to the current activity — beside it, not across town.

  11. Grouping forge assets under a brand

    Humans nest brand → product family → repository. Forges flatten that into org → repo and spend “Projects” on boards instead. The missing middle layer is a schema failure with UX teeth.

  12. When the file tree owns the first viewport

    GitHub repo pages still open on empty owner CTAs and a directory dump. Visitors want the README. Progressive disclosure and sticky README | Code tabs fix the altitude without hiding real Releases.

  13. ClearType Tuner in Windows

    ClearType is a text clarity system in Windows that uses subpixel rendering to improve text sharpness for reading.

  14. Choosing a file handler without the context menu

    Default open is a one-way handoff. Desktops still lack a first-class gesture that asks which app should run — Ctrl+double-click and middle-click on files are unused candidates for an open-with interrupt.

  15. Titles as orientation

    A title should place the reader in a mental room — not equate two rigid nouns, jam the org name into every headline, or leave modifiers floating without an object.

  16. Fundamental contexts for portable UI

    Maybe portability is not one mega-spec but a small set of fundamental contexts — structure, placement, events, 2D/3D surfaces, zoom — composed on purpose.

  17. Navigating by content

    On menu-style docs for multi-platform install guides — one decision at a time, nested continuations, shareable paths, and an Antora extension that makes it real.

  18. Sequence as top-level organization

    When a system applies rules in order, the processing-map surface should show that order as one spine — not scatter steps across settings pages until the machine contradicts itself.

  19. Sharing the IR, not the pixels: a strategy for multi-ecosystem UI prototypes

    For interaction-heavy prototypes, share meaning and behavior — domain IR plus a headless controller — and hand-write thin views per ecosystem. Do not aim to auto-convert full UI.

  20. When example files lose their type

    Meta-suffixes like .example and .template are badges on a real file type — Explorer’s last-suffix rule throws the type away, and Windows never grew a pass-through association kind.

  21. Attention is not inventory

    Software that spends your attention for you is disrespectful. HCI should treat cognitive budget as a hard constraint — not a growth funnel.

  22. Human intuition over backwards convention

    Consistency with the past has value — but it is not absolute. When a convention inverts human meaning, fix it.

  23. Many small tools under one roof: scoped UX architecture

    When an app coordinates many capabilities, give each tool a hard job boundary and a shared shell — then use feedforward inside those tools, not as a synonym for the architecture.

  24. Theme as a contract

    Previews, diagrams, and chrome that refuse the host theme are not aesthetic preferences — they break immersion and trust.

  25. When 'non-technical' products lie

    Marketing a tool as friendly while forcing archaeology through CSS hierarchies and secret modes is an HCI failure — not a documentation gap.

  26. When the UI hides what counts

    If the engine already knows and the first-class UI does not ask, the product is lying about involvement — that is an HCI bug, not a power-user gap.