Hi, I’m ShiroDoro.

This is where I jot down what I’m building day to day — things I’ve read, things I’ve tried, and stray thoughts — mostly so I don’t forget them. Feel free to look around whenever you like.

Writing

  • Renaissance Music (1400–1600) — Theory and Playable Examples

    In the Renaissance the third and the sixth stop being second-class intervals and become primary consonances. Here's the sweet English sound and fauxbourdon, pervading imitation, the three stages of mass technique, and the opposite directions Palestrina and Gesualdo took at the end — with sheet-music examples you can play right in the page.

  • Medieval Music (to 1400) — Theory and Playable Examples

    Medieval music treated the perfect unison, fifth, and octave as sacred and the third as imperfect. Here’s the background — the idea that simple whole-number ratios mirror divine order — plus modes, organum, and cadences, each with sheet-music examples you can play right in the page.

  • Running AI sessions in parallel

    Amenbo's own development runs two or three AI sessions at once. Two things collide: files and tasks. Files are split per task with git worktree; tasks are split with a reservation that only passes from todo. Written up as a real case.

  • Writing the same file at once without breaking it

    The CLI and GUI are separate processes, and both write the same store.sqlite at the same time. It holds together because each write is wrapped whole in a single transaction that SQLite serializes, and rolls back whole on failure. Every change leaves one row in change_feed, and the GUI watcher re-reads only what changed by cursor and shows it.

  • Partitioning an AI agent's reach by structure

    When one AI works across several projects, it picks up the neighbor's context and pollutes its own memory. Asking it in the prompt to "leave that alone" carries no guarantee. Amenbo binds to a project through .amenbo, and the CLI itself turns down any operation that reaches outside with out_of_reach. Not a plea — a boundary drawn by mechanism.

  • Why catching up is fast

    Part 1 measured search running about twice as light, and Part 2 showed that the store is a graph. This part is how that graph is read: catching up on a task follows only the few connected records by index (O(result)). State like whether a task is startable or whether a decision is still current is never stored — it is derived on the spot from the edges, so the list, the card, and the start guard never disagree.

  • The big picture: how Amenbo is put together

    A survey of how Amenbo, a task manager for AI agents, is built, before digging into the individual pieces of tech. The GUI and the CLI both call the same Rust Core, and data lands in a single local SQLite. The project folder holds only a marker; the store is a graph of tasks and decisions.

  • I built task management for AI agents

    Amenbo, a task manager built for AI agents, is out. Part 1 is about why it exists: the way context degrades the more you lean on AI agents, and the choice to keep it separate from human task management, in a local, closed environment.

  • Where human words go in the age of AI

    As AI takes over the 'expression' half of what we put out, how does the value of human 'thought' move? Watching the thought-plus-expression picture shift, I think about keeping the original of my own thinking in my own hands.

  • Releasing wharfy — one binary, to every channel

    wharfy: a CLI that releases your tool to every channel at once — Homebrew, Scoop, apt/rpm, containers, AUR, winget, go install, curl|sh — and is built to be driven by an agent too. I've released it.