Blog posts

Thoughts on AI, technical writing, and software.

Claude Code beyond prompting

Discovering Claude Code's advanced features beyond basic prompting: hooks, skills, subagents, and custom workflows for technical writing.

Claude Code beyond prompting

Code execution with MCP: separating context from computation

How code execution with MCP reduces token usage by giving AI agents a workspace outside the context window for data-heavy processing tasks.

Code execution with MCP: separating context from computation

On agency, abstraction, and AI-assisted coding

Reflections on AI-assisted coding, personal agency, and why working at higher levels of abstraction doesn't mean losing mastery or understanding.

On agency, abstraction, and AI-assisted coding

Testing docs IA with AI agents

Building an AI agent to test documentation information architecture by simulating how users navigate docs to find answers.

Testing docs IA with AI agents

Can AI help test IA? A Wikipedia game experiment

Using the Claude Agent SDK to play the Wikipedia game as an experiment in testing information architecture with AI.

Can AI help test IA? A Wikipedia game experiment

The Exploratorium boulder: why enthusiasm isn't always contagious

Why enthusiasm for AI tools isn't always contagious, and what I learned about sharing new technologies with skeptical colleagues.

The Exploratorium boulder: why enthusiasm isn't always contagious

Docs metrics and the stories we tell ourselves

Why documentation metrics are harder to interpret than SRE dashboards, and how to think about measuring docs impact without fooling yourself.

Docs metrics and the stories we tell ourselves

How onboarding a human made my AI smarter

How creating onboarding documentation for a new teammate also improved my AI tools by providing the same context engineering both need to succeed.

How onboarding a human made my AI smarter

Digging into "Your Brain on ChatGPT"

A critical look at the MIT 'Your Brain on ChatGPT' study and why sensationalized AI research headlines make productive conversations harder.

Digging into "Your Brain on ChatGPT"

Learn MCP with me, part 2: working with MCP servers and clients

A hands-on guide to connecting MCP servers to AI clients, debugging with curl, and building a multi-source documentation research agent.

Learn MCP with me, part 2: working with MCP servers and clients

Learn MCP with me, part 1: what is this even for?

Why MCP exists and how it helps LLMs use APIs more reliably by providing structured guardrails instead of relying on hallucinated parameters.

Learn MCP with me, part 1: what is this even for?

We all fall down: notes from an ordinary outage

A detailed post-mortem of a Kubernetes outage where a routine video processing job brought down an entire streaming cluster for five days.

We all fall down: notes from an ordinary outage