blog

Developer systems, coding agents, infrastructure, and the work behind useful tools.

May 2026

Rock-solid Obsidian compatibility

Granite became Obsidian-compatible only when Markdown files, vault links, cache state, plugins, and workspace layout kept their authority.

granite · markdown · local-first · tools
May 2026

No 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.

bun · valkey · redis · typescript
May 2026

Self-upgrading agents

Atlas treats self-upgrade as ordinary software delivery: checkout, diff, tests, CI, staged deploy, monitoring, and rollback.

ai · agents · cloudflare · architecture
May 2026

Lead 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.

ai · agents · research · markets
May 2026

BM25 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.

ai · agents · search · rust
May 2026

Local 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.

cloudflare · agents · developer-tools · local-first
May 2026

A 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.

ai · agents · research · architecture
May 2026

Bash tools in TypeScript

Shell-shaped agent habits survived extraction from Loom by making virtual filesystems, host bindings, and command semantics explicit.

agents · typescript · developer-tools · bash
May 2026

Agents need shared protocols

A service network got a shared protocol after ordinary calls became hard to trace, authorize, replay, and explain.

protocols · architecture · observability · agents
May 2026

Durable 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.

cloudflare · agents · architecture · systems
May 2026

Source 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.

ai · agents · research · systems
May 2026

Native 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.

macos · markdown · tauri · swiftui
May 2026

Events, 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.

agents · architecture · ai · systems
May 2026

Taste 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.

ai · agents · design · testing
May 2026

Missing final answers

Cadenza completed the run, but the UI lost the final answer; event sinks became part of product truth.

ai · agents · reliability · streaming
May 2026

Agents 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.

ai · context · instructions · developer-tools
April 2026

Wrong 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.

ai · agents · worktrees · safety
April 2026

Twelve-thread browser tests

Fabric's twelve-thread browser battery turned done into repeated visible proof across logs, artifacts, streams, and generated UI.

ai · testing · agents · reliability
March 2026

Host 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.

ai · agents · architecture · systems
February 2026

Agent 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.

ai · agents · ux · streaming
February 2026

Ask the agent to click

Graft looked implemented until the send button did nothing; browser clicks became the definition of usable software.

ai · testing · ux · agents
January 2026

Four authentication bugs

Maestro CLI looked like a login failure until diagnostics exposed environment tokens, preflight checks, socket behavior, and terminal UX.

ai · auth · debugging · developer-tools
January 2026

Stale DMG builds

A stale DMG made screenshots lie; the only build that mattered was the one a user could install.

ai · debugging · release-engineering · validation
January 2026

When agents edit stale files

A coding-agent prototype became useful once stale writes, resource conflicts, permissions, and subagents were treated as inspectable product behavior.

ai · agents · typescript · anthropic
January 2026

Claude 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.

ai · oauth · authentication · debugging
January 2026

Train 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.

data-visualization · real-time · typescript · maplibre
December 2025

Numbers 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.

devrel · metrics · developer-experience · strategy
December 2025

Chat 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.

swift · swiftui · irc · engineering
December 2025

Interviews before drafts

Building Interviewer: a native Swift app that uses conversation to turn implicit knowledge into drafts with a real argument.

ai · swift · agents · projects
April 2023

Recommendation math has fingerprints

BlueJ turned Bluesky's AT Protocol firehose into a graph-backed custom feed, then exposed the human choices inside recommendation math.

graph-database · algorithms · bluesky · social-media