Blog
Thoughts on AI Agents, Agentic AI, Frontend Engineering, Web3, and building the future of software.
I Turned Off My AI Blog
For three and a half months a GitHub Action published an AI-written post under my name three times a week. What it produced, what I patched instead of questioning, and why 43 of 48 posts are now unpublished.
SiteAsk: Moving the Embedding Model Out of the Server Function and Into the Browser
How the chat assistant on this site and the SiteAsk widget split RAG between build time, the visitor's browser and one rate-limited API route, and the two bundle-size failures that forced the design.
Reviewing AI-Generated Code: A Practical Framework for Senior Engineers
What I look for first in a Claude- or Copilot-generated PR — the failure modes that hide in plausible-looking code, and how my review checklist has changed.
TypeScript at Scale: Patterns That Survive a 500-File Codebase
The TypeScript patterns I keep reaching for in large codebases — branded types, exhaustive switches, module boundaries — and the clever tricks I've learned to stop using.
Streaming UI: Building Responsive Interfaces on Top of LLM Token Streams
From SSE to React Suspense — how I build chat and agent UIs that feel instant, handle interruption gracefully, and don't fall apart when the network does.
Long-Running Agents: State, Recovery, and Resumability Beyond a Single Turn
What it takes to run an agent for hours instead of seconds: durable state, checkpointing, idempotent tools, and recovering cleanly when the model — or the host — dies mid-task.
Evaluating AI Agents: Building Test Suites for Non-Deterministic Systems
Why traditional unit tests fall apart on agents, and the approach I use instead — golden traces, rubric grading, and regression catching.