Rock-solid Obsidian compatibility
Granite became Obsidian-compatible only when Markdown files, vault links, cache state, plugins, and workspace layout kept their authority.
May 2026No dependencies, instant local Redis
With valkey-bun, local stacks get Redis protocol and disposable in-memory state without asking a container to join the room.
May 2026Self-upgrading agents
Atlas treats self-upgrade as ordinary software delivery: checkout, diff, tests, CI, staged deploy, monitoring, and rollback.
May 2026Lead generation agents
A London lead search started with quant funds, then a plausible target lost its shine when the evidence column could not find a buyer.
May 2026BM25 code search for agents
Code-search keeps the fast exact-search habit, then uses BM25 to help agents find the local vocabulary before they know the symbol.
May 2026Local Cloudflare for agents
With open-cloud, Cloudflare-shaped state sits on the local table so agents can inspect SQLite rows, reset services, and run real bindings cheaply.
May 2026A 36-hour research agent
A 36-hour research run turns agent design into ledger work: killed hypotheses, cheap oracles, recovery rituals, and proof that motion is not progress.
May 2026Bash tools in TypeScript
Shell-shaped agent habits survived extraction from Loom by making virtual filesystems, host bindings, and command semantics explicit.
May 2026Agents need shared protocols
A service network got a shared protocol after ordinary calls became hard to trace, authorize, replay, and explain.
May 2026Durable Objects own continuity
A Cloudflare-native agent runtime got clearer after staging drills proved which state belonged in Workers, Durable Objects, R2, queues, workflows, and sockets.
May 2026Source trails for Deep Research
Deep Research became a mode when search, source scoring, blocked pages, reviewer passes, and citation UX stayed visible inside the answer.
May 2026Native until Markdown got real
A Markdown viewer started as a native SwiftUI idea, then the extension long tail and startup budget made the respectful path hybrid.
May 2026Events, not transcripts
Three agent prototypes moved from local workspace to edge runtime to durable live kernel, and each exposed another place where transcript text could not be the durable record.
May 2026Taste rules agents can fail
A WeasyPrint rendering bug, a testing skill, and a model-operation note show taste becoming constraints agents can inspect, run, and fail.
May 2026Missing final answers
Cadenza completed the run, but the UI lost the final answer; event sinks became part of product truth.
May 2026Agents must read the whole spec
Attached Markdown instructions failed when agents treated context as present rather than absorbed; coverage had to become a visible artifact.
April 2026Wrong worktree, right fix
A correct fix landed in the wrong worktree; the repair made repository, branch, path, and dirty state part of the safety check.
April 2026Twelve-thread browser tests
Fabric's twelve-thread browser battery turned done into repeated visible proof across logs, artifacts, streams, and generated UI.
March 2026Host handoff, not file handoff
Fabric made local and cloud execution useful only after host handoff, Chronicle barriers, and resume watermarks proved the files had not split into two truths.
February 2026Agent traces in the UI
Graft leaked raw tool JSON, then hid every message; the repair was a translation layer between protocol events, work rows, and final prose.
February 2026Ask the agent to click
Graft looked implemented until the send button did nothing; browser clicks became the definition of usable software.
January 2026Four authentication bugs
Maestro CLI looked like a login failure until diagnostics exposed environment tokens, preflight checks, socket behavior, and terminal UX.
January 2026Stale DMG builds
A stale DMG made screenshots lie; the only build that mattered was the one a user could install.
January 2026When agents edit stale files
A coding-agent prototype became useful once stale writes, resource conflicts, permissions, and subagents were treated as inspectable product behavior.
January 2026Claude Code OAuth bug
How a Claude Code OAuth token, a correct header set, and one extra system-prompt character produced the wrong-looking authentication failure.
January 2026Train state from STANOX codes
TrainTracker makes Network Rail's TRUST feed legible by translating STANOX codes into live train state, delay colour, recent stops, persistence, and fallback data.
December 2025Numbers that change DevRel budgets
Developer Relations has a measurement problem: not a shortage of numbers, but a shortage of evidence that changes budgets, programmes, and developer follow-up.
December 2025Chat windows remember position
What a native IRC client taught me about scroll position, SwiftUI geometry, old formatting codes, and the false simplicity of chat windows.
December 2025Interviews before drafts
Building Interviewer: a native Swift app that uses conversation to turn implicit knowledge into drafts with a real argument.
April 2023Recommendation math has fingerprints
BlueJ turned Bluesky's AT Protocol firehose into a graph-backed custom feed, then exposed the human choices inside recommendation math.