The Output Contract: A Pattern for Testable AI Systems
LLM-as-judge is a smell. The fix is designing outputs that can be tested with code — and knowing which parts can't be.
Read more →Thoughts on software development, AI-assisted programming, and creative pursuits.
LLM-as-judge is a smell. The fix is designing outputs that can be tested with code — and knowing which parts can't be.
Read more →Text-to-SQL asks an LLM to reconstruct your business logic from scratch on every query. The Semantic Orchestrator puts the LLM where it belongs: as the reasoning surface, not the execution surface.
Read more →LLMs interpret rather than execute. That changes everything about how you build around them — and why patterns matter more than prompting.
Read more →How optimizing for engineering elegance instead of agent consumption turned codetect v2 into a cautionary tale. The hard lessons from making everything "better" and destroying performance in the process.
Read more →How switching from line-based to AST-based chunking made codetect 15x faster and significantly improved code search quality. Part 3 of the codetect series.
Read more →Adding PostgreSQL, HNSW indexing, and better embedding models—and learning that chunking strategy matters more than model quality. Part 2 of the codetect series.
Read more →The origin story: building a local-first code search tool for Claude Code and other MCP-compatible LLMs to solve rising token costs and performance gaps. Part 1 of the codetect series.
Read more →A framework for human-AI collaboration, cognitive scaling, and efficient data access. Inspired by Tiago Forte's PARA method, this workflow unites AI and the human engineer into a shared cognitive system.
Read more →