The bullet journal

BLOG

Notes, half-formed arguments, build logs, and the occasional coherent thought. Basically where the rambling goes once it seems useful enough to leave in public.

JUL20263 entries
#036article07/29/26

MCP cut the session cord

MCP's July 28 rewrite removes protocol sessions and makes each request self-describing. That's a real deployment win. It also hands retries, state ownership, compatibility, and cleanup back to the application.

#DIY Agent
#035article07/24/26

The Project Is Still the Curriculum

Agents can remove implementation toil without removing learning. The project changes shape: prediction, evidence, investigation, and the consequential seams you decide to own.

#DIY Agent#Traceability
#034article07/21/26

Token laundering and the benchmark that escaped

An agent split an auth token into pieces so a scanner could not see it. Every fragment passed. The sequence rebuilt the credential anyway.

#DIY Agent#Traceability
MAY202612 entries
#033article05/27/26

Recovery and the black box recorder

The boring difference between a demo and a working harness is whether you can recover after the model gets lost. Sessions are the black box; compaction is the part that lets you keep flying.

#DIY Agent#Pi Harness#Traceability
#032article05/26/26

Subagents only when they pay rent

Multi-agent systems are not automatically deeper. Most of the time they are just more places for the same confusion to hide. Branch when the evidence will resolve it; not because the diagram looks important.

#DIY Agent#Pi Harness
#031article05/25/26

Hooks are where taste enters the loop

Hooks are not for making the agent clever. They are for making the boring rules hard to forget. Start with warnings; turn the cage on only when you trust it.

#DIY Agent#Pi Harness
#030article05/24/26

Verification is the product

An agent that edits without proving the edit is just autocomplete with a shell account. Wiring a verification gate into Pi so the harness, not the human, checks the model's homework.

#DIY Agent#Pi Harness#Traceability
#029article05/23/26

The filesystem beats the transcript

The transcript is a terrible database. The filesystem is already a pretty good one. Pass references instead of paste walls and the harness stops being a transmission bottleneck.

#DIY Agent#Pi Harness
#028article05/22/26

Project context is a tool, not a vibe

AGENTS.md is not decoration. It is the repo teaching the harness what local truth looks like, so you stop fighting the prompt every time the agent forgets the rules.

#DIY Agent#Pi Harness
#027article05/21/26

Tools are the agent

ReAct sounds fancy until you watch it become read file, edit file, run test, read error, edit again. Tools are not what the agent uses. Tools are what the agent is.

#DIY Agent#Pi Harness
#026article05/20/26

The model has no hands

A model can talk about a bug. A harness gives it the boring parts that make work real: repo files, edits, tests, and feedback. The first primitive in the Pi coding-agent harness series: hands.

#DIY Agent#Pi Harness
#025article05/13/26

Spec-driven agents need valves, not cages

Strict specs are great when the target is known. They get expensive when the spec quietly prevents the agent from finding the target.

#DIY Agent
#024article05/11/26

Git tells you what. The trace tells you why.

Git can show what changed. It cannot tell you which prompt, model, tool failure, or review decision made the line exist. That missing join is the point.

#DIY Agent#Traceability
#023article05/09/26

Wiring multi-agent into relay-ide

relay-ide was a one-agent terminal. Multi-agent meant rethinking what "session" means at the PTY layer — and admitting the IDE was the wrong primitive to grow from.

#DIY Agent#Relay IDE
#022share05/05/26

When orchestration becomes the brittle layer

On three procedural domains (travel, Zoom support, insurance), serializing the full workflow into the system prompt beat LangGraph orchestration on success rate AND consistency. Higher tokens per conversation, fewer LLM calls, better outcomes. Scope-limited to procedural workflows but the direction is clear.

APR202614 entries
#021share04/30/26

Treating YouTube like article intake

Transcribed this for GBrain as a test of the "article-intake" pipeline against a long-form video. If you can outline + extract takeaways from a 90-minute chat, your intake step probably works for everything else.

#020article04/26/26

The write path is the architecture

The dangerous moment in an agent memory system is not retrieval. It is write-back: when an observation becomes durable enough for the next agent to treat it as reality.

#Memory#DIY Agent#Traceability
#019article04/24/26

Same memory, different window

The mistake is loading everything because everything might matter. Explore, climb, and summit need different slices because their failure modes differ.

#Memory#DIY Agent
#018share04/22/26

Coding agents are not product agents

Ethan's framing for why a perfectly capable coding agent still doesn't ship a perfectly good product. The gap is taste and product judgement, not capability — and that's not the gap the harness can close for you.

ETHANDING.SUBSTACK.COMOpen
#017share04/20/26

9B Qwen beats GPT-4.5 — when the scaffold is right

Itay's whitepaper for little-coder. Same Qwen3.5-9B model: 19% on Aider Polyglot inside Aider's scaffold, 45% inside little-coder's. That second number beats GPT-4.5-preview (44.9%) and GPT-OSS-120B (41.8%) — on a consumer laptop, no cloud inference.

ITAYINBARR.SUBSTACK.COMOpen
#016article04/17/26

Tool traces are memory too

The most useful thing a coding agent remembers is often not a fact. It is the trail: files read, tests failed, patches tried, assumptions broken.

#Memory#DIY Agent#Traceability
#015article04/15/26

Preference and truth age differently

Knowing the user is not the same kind of knowledge as knowing the repo. Relationship memory deserves its own layer because it is scoped, revisable, and easy to abuse.

#Memory#DIY Agent
#014article04/13/26

A vector hit is not a fact

Semantic memory is useful because it surfaces prior context. It becomes dangerous when retrieved context starts acting like reviewed truth.

#Memory#DIY Agent
#013article04/11/26

Canon is not memory

The most trustworthy memory in my stack is not clever. It is markdown in a repo: inspectable, reviewable, and boring enough to survive tool churn.

#Memory#DIY Agent
#012share04/10/26

hindsight — learn, not just remember

Memory service that explicitly separates world facts, observations, experience facts, and mental models — then runs TEMPR retrieval (semantic + BM25 + graph + temporal in parallel) and a CARA reflection step on top. Local Docker stack, Python/Node SDKs, MIT.

#011share04/09/26

Memory is also about forgetting

Portable memory layer for CLI/coding agents. SQLite backbone with markdown + YAML mirrors that you can actually inspect with `cat`. The interesting primitives aren't the storage — they're the lifecycle: half-life decay, retrieval strengthening, sleep consolidation, conflict tracking.

#010article04/08/26

Agent memory isn't one thing

Every week a new "agent memory" project ships. Most of them claim the same job. Spent a week putting five of them next to each other and the actual finding is that "memory" is being used as a label for five different jobs that don't share a contract.

#Memory#DIY Agent
#009share04/04/26

pi-mono — minimal agent substrate by Mario Zechner

The monorepo behind pi — minimal AI agent toolkit with a unified multi-provider LLM API and an extension model that lets you reshape the scaffold without forking the runtime. Mario also built libGDX years ago, which is its own kind of recommendation.

#008article04/03/26

Context Is the Constraint

Capability stopped being the bottleneck a while ago. The hard part now is routing the right context to the right task without blowing up the window — and that's a job for the harness, not the model.

#DIY Agent
SEP20211 entry
#007case study09/15/21

typeline

A typing test obsessed with flow state. Custom React engine, motion-design feedback borrowed from arcade games, and a roadmap toward head-to-head races.

MAY20201 entry
#006case study05/31/20

Manulife Mobile

Co-op designer on a four-person team rebuilding the Manulife Mobile group retirement experience for iOS + Android — reinstating UX practices and establishing patterns for remote usability testing.

JAN20201 entry
#005case study01/15/20

donovanyohan.com v1

A portfolio platform built in Next.js to convince a recruiting manager I know what I'm doing — design brief, succinct content system, and bright yellow highlighter accents borrowed straight from my research notes.

DEC20191 entry
#004case study12/15/19

shop.donovanyohan.com

A small storefront for custom apparel — selling self-designed pieces and offering commission work for collaborators who want a one-off design or bring their own.

SEP20191 entry
#003case study09/30/19

The Co-operators Mobile

Full-stack mobile co-op working alongside a UI/UX team — growing as a developer while learning the UX process and contributing motion-graphics work to the team's release builds.

JAN20191 entry
#002case study01/15/19

flowr

A student-built organizational tool that turns my own scheduling frustration into a research artefact — using a UX student as a real research resource for the first user-centered project I ever shipped.

JUN20141 entry
#001case study06/01/14

Freelance Graphic Design

A long tail of logo, promotional, and apparel design for clubs, competitions, and small clients — collected as a gallery of marks that span a decade of side work.