Spec-Driven Development vs Vibe Coding: Waterfall?
Specs as source of truth, or slow ceremony?
Spec-Driven Development entered 2026 as the serious developer’s answer to vibe coding drift.
Specs as source of truth, or slow ceremony?
Spec-Driven Development entered 2026 as the serious developer’s answer to vibe coding drift.
Keep intent close to the code.
Decision records are the missing memory layer in AI-assisted software development. They capture not just what was built, but why — and that distinction becomes critical when AI tools are writing your code.
Handle errors at the right boundary.
Go error handling is easy to complain about. Every Go developer has written this code hundreds of times:
Stop sleeping in concurrent Go tests.
Testing concurrent Go code has always required a bit of discipline. Goroutines are cheap, channels are simple, and context cancellation is idiomatic — background workers and timers are everywhere in real Go services.
A2A is not dead. It is just not universal.
Google’s Agent2Agent protocol, usually shortened to A2A, had a strange first year.
Reliable polling patterns for AI agents.
Polling agents are one of the least glamorous parts of AI assistant architecture, but they are also one of the most useful.
A2A turns agents into network peers.
The A2A Protocol, short for Agent2Agent Protocol, is an open standard for communication between independent AI agent systems.
MCP gives agents tools. A2A gives agents peers.
AI agent architecture is starting to split into two layers.
Build CQRS in Go without needless ceremony
CQRS is one of those patterns that gets oversold, overcomplicated, and occasionally misdiagnosed as a cure for plain old CRUD boredom.
Diagrams as code, without the drama.
Mermaid is a text-based diagramming tool for people who would rather write diagrams than drag boxes around a canvas.
Organize notes by action, not topic.
Organizing notes by topic sounds logical until you have notes on PostgreSQL in five different folders and cannot find the one that matters for today’s problem.
Notes that improve instead of decaying.
Most engineering notes are written once and forgotten. You capture something in a debugging session, paste it somewhere, and find it two years later with no context for why it mattered.
Publish knowledge that grows, not just posts.
The dominant model for publishing knowledge online has not changed much since the early 2000s: write something, polish it, publish it, move on.
Pick the simplest pattern that works.
Single-model systems are simple. Multi-model systems are powerful. The challenge isn’t choosing models — it’s designing the architecture that orchestrates them.
The right model for the right task.
Running a 70B parameter model to summarize a 200-word email is wasteful. Running a 3B model to review production code is reckless. Most systems live somewhere in between — and that’s where model routing comes in.
Control the risk, not just the model.
LLMs are unpredictable. They hallucinate, leak data, generate harmful content, or refuse legitimate requests. Guardrails constrain model behavior without sacrificing capability.
Get new posts on AI systems, Infrastructure, and AI engineering.