For practitioners building with AI — developers, architects, and technically curious leaders who want specific observations from production AI work.

Cairns

Short trail markers — technical notes, lessons learned, and observations from building production AI. Found here, not in your inbox.

Context in the window is not attention in focus

Context in the window is not attention in focus. A model's competence in one domain doesn't transfer to the next — but it all too often feels like it does. Fight the temptation toward complacency. Never assume the model knows what you haven't explicitly had it remember, or find.

ai-agents context-window orchestration

What 47 analyses of the Claude Code leak missed

We surveyed 47 public analyses of the Claude Code leak. Every single one asked the same question: "What's inside?" We asked a different question: "What does Claude Code tell us about building better tools for agents?"

ai-commentary perspective claude-code

Don't infer what you can detect

The pundits laughed at Anthropic's frustration regex — a simple pattern matcher inside the most sophisticated AI system in the world. But a regex fires every time, costs zero tokens, has zero hallucination risk, and is trivially debuggable. The principle: use deterministic methods for what can be determined deterministically. Save inference for what requires judgment.

architecture determinism design-patterns

Response budgets: be a good citizen in someone else's context window

If you're building an MCP server, your tool responses land inside someone else's context window. Unbounded results waste tokens the agent needs for reasoning. Cap responses. Include a truncated: true flag and a total_count. Budget your output like a conference talk — say what matters, leave room for questions.

mcp api-design context-window

Metadata now, enforcement later

We added an agency field to log events — default "none," purely informational. Today it's metadata nobody reads. When autonomous agents arrive, it's the audit trail that tells you which actions were human-directed and which were agent-initiated. The cost of an unused field is zero. The cost of retrofitting a field into a running system is a migration.

design-patterns future-proofing ai-tooling

Self-correction is not verification

Next-gen AI models can identify and correct their own errors recursively. Self-correction catches tactical errors — typos, logic bugs, off-by-one mistakes. Verification catches strategic errors — wrong requirements, missing edge cases, building the wrong thing well. Better execution demands better oversight, not less.

ai-agents verification governance

The introspection loop

There's a strange feeling in writing prompts for a model that doesn't exist yet. You're designing a conversation with a future colleague — someone smarter than the current version, with capabilities you can only estimate. The plan: use the next model to improve the tools that serve it. It's an introspection loop — the system examining itself through a more capable lens. You're writing letters to a future colleague and hoping they'll be kind.

ai-development human-ai-collaboration future-planning

Don't vibe code the orchestration layer

When setting up an agentic orchestration workflow to overcome the limitations of vibe coding, don't vibe code the orchestration layer.

orchestration process ai-paired-development irony

Schema.org @id references across pages

When you define a Person entity with @id: "https://example.com/#person" on your homepage, every other page can reference it by @id instead of re-declaring the full entity. AI knowledge graphs use this to deduplicate — one entity, many pages. The consistency matters more than the completeness of any single block.

schema.org seo llm-discoverability

CSS class names as documentation

Naming a class .geo-quotable instead of .highlight-box does two things: it tells future developers what the element is FOR (AI citation extraction), and it makes the design system self-documenting. The class name is the spec.

css design-system geo

Variable fonts: one file, every weight

Source Serif 4 as a variable font is one 417KB WOFF2 file that covers weights 200-900. The non-variable alternative would be 6+ files totaling over 1MB. For Core Web Vitals (LCP < 2.5s), fewer HTTP requests with font-display: swap wins every time.

performance fonts core-web-vitals

Follow

Cairns are available via RSS. They're not emailed — the dispatches are the subscription product. Cairns are the breadcrumb trail you find when you're searching.