Testing AI Where It Actually Runs
Offline evals are necessary but not sufficient. Here's how I test AI features in production with shadow mode, canaries, and rollback automation -- with Go code.
Golang coverage in this archive spans 17 posts from Nov 2016 to Apr 2025 and leans into practical engineering craft: interfaces, testing, and maintainable implementation details. The strongest adjacent threads are ai, architecture, and backend. Recurring title motifs include go, ai, practice, and patterns.
Offline evals are necessary but not sufficient. Here's how I test AI features in production with shadow mode, canaries, and rollback automation -- with Go code.
Model Context Protocol promises to standardize how AI talks to tools. I built an MCP server in Go to see if the promise holds up. Here's what I found.
I've been running AI code review on real PRs for months. It catches some real bugs. It also generates a staggering amount of useless commentary.
Reasoning models are powerful but expensive and slow. Here's how I integrate them in Go services with routing, async patterns, and cost controls that actually work.
Worker pools, fan-out/fan-in, pipelines, and the cancellation discipline that keeps Go services predictable under load.
TypeScript is the best thing to happen to JavaScript. That bar is lower than people think. Here's what actually matters for large codebases.
Tracing is ready. Metrics are getting there. Logs are not. Here's a practical adoption path and the code to back it up.
Event sourcing is powerful but expensive to get wrong. Here's what actually works, with Go code, drawn from building event pipelines at the fintech startup.
Feature flags are great until you have 847 of them and nobody knows which ones are safe to remove. Practical lessons from Decloud and enterprise teams.
Sixteen months after my first Wasm post, here's what's actually moved. WASI is still early, but edge computing and plugin systems are turning into real use cases.
I got early access to GitHub Copilot's technical preview. Here's what it actually does well, what it gets wrong, and why I'm cautiously interested.
Lessons from building production operators at Decloud: the reconciliation loop, controller-runtime patterns, and the mistakes that cost us sleep.
Lessons from building event-driven systems at the fintech startup and Decloud. What actually works, what silently corrupts your data, and Go patterns for handling events without losing your mind.
A deep dive into building Go CLIs that feel right: cobra patterns, structured output, signal handling, and the small decisions that separate a script from a tool.
Queues look simple on a whiteboard. Then you deploy them. Here are the messaging patterns I've learned the hard way across three startups, with Go code and real failure stories.
A personal look back at what mattered in 2016 -- Docker going mainstream, Kubernetes momentum, Go adoption, and lessons from building at Dropbyke and a fintech startup.
How Go became the default backend language at Dropbyke and a fintech startup, what it replaced, and the honest tradeoffs we accepted along the way.