Blog
Engineering notes
What it actually takes to ship iOS apps: speech and audio, Swift concurrency, testing, and running a solo product with Claude Code.
The retry that parsed and billed twice: idempotency for an LLM pipeline
Production failures in a Claude parsing pipeline on Cloudflare Workers: a retry that billed twice, a 429 disguised as a bad file, a 403 from Hong Kong.
Six months of Claude Code on a shipping iOS app: the rules, not the prompts
A senior iOS engineer's real setup for Claude Code on a shipping app: a CLAUDE.md written as an onboarding doc, 771 tests as the gate, an allow list that drifted, and a worktree sprint that half worked.
SpeechAnalyzer in production on iOS 26: stale finals, audio timestamps, and a bug that survived stop()
Three months of SpeechAnalyzer and SpeechTranscriber in a live iOS 26 app: the setup, the late final that fired cues early, the vocabulary API that fails silently, and why the simulator cannot test any of it.