Go

We Tested 55 MCP Servers. Here's What Breaks.
MCP servers are the tools AI agents rely on. We tested 55 of them with mcp-assert, found 20 bugs across 9 servers, and submitted fix PRs. Grafana and Ant Group merged ours. Three days after launch, Ant Group’s visualization team asked us to integrate mcp-assert into their CI. The most common failure: servers throw unhandled exceptions instead of returning isError, leaving agents unable to recover.
agent-lsp: Reliable Code Intelligence for AI Agents via MCP and LSP
I needed AI agents to reliably rename symbols, find references, and check diagnostics without silent failures. The existing MCP-LSP tools were stateless, feature-poor, and untested. So I built agent-lsp: a persistent runtime with 50 tools, 20 provider-agnostic skills, speculative execution, and an audit trail for every AI-driven edit.
Self-Validating Agents: Building Quality Checks into Claude Code Workflows
Claude Code agents write code fast. Too fast to catch quality issues in real-time. Here’s how to build validation directly into agent workflows using hooks and team coordination - micro validation after every file write, macro validation before completion, and independent review from validator agents.
Go Structs Are Not C++ Classes: Why Similar Modeling Roles Produce Different Hardware Execution Patterns
Structs with methods look like classes, but the hardware tells a different story. Go makes contiguous values + static calls the path of least resistance. In inheritance-heavy C++ designs, you often end up with pointers + virtual dispatch + scattered memory. This isn’t syntax - it’s what the CPU executes.
How Continuous Fuzzing Finds Bugs Traditional Testing Misses
Traditional tests check examples you think of. Fuzzing explores millions of combinations you don’t. Coverage-guided fuzzing found two production bugs in goldenthread before release - a UTF-8 corruption issue and a regex escaping bug. Here’s how continuous fuzzing works and how to set it up.
How Multicore CPUs Changed Object-Oriented Programming
OOP’s implicit reference semantics were manageable in single-threaded code. But when CPUs went multicore in 2005, hidden shared state went from ‘confusing’ to ‘catastrophic.’ This is why Go and Rust refined OOP: keeping methods and encapsulation while replacing inheritance with composition and implicit references with value semantics.
Go's Value Philosophy: Part 3 - Zero Values: Go's Valid-by-Default Philosophy
In Python, undeclared variables don’t exist. In Java, local variables can’t be used before assignment. In Go, declaration creates a valid value. There is no uninitialized state - every value works from the moment it’s declared.
Go Interfaces: The Type System Feature You Implement By Accident
You write a struct with a Write method. Three months later, you discover it implements io.Writer. You never declared this. How did it happen? Exploring Go’s implicit interfaces and the power of accidental implementation.
Go's Value Philosophy: Part 1 - Why Everything Is a Value, Not an Object
In Python, everything is an object. In Java, everything is a class. In Go, everything is a value. These are fundamental design philosophies that shape how you write concurrent code, manage memory, and reason about performance.
Go's Value Philosophy: Part 2 - Escape Analysis and Performance
The Go compiler decides whether your values live on the stack or heap through escape analysis. Understanding this mechanism explains Go’s performance characteristics and helps you write faster code without sacrificing clarity.
The Price of Everything Being an Object in Python
All Python developers know that everything in Python is an object. But at what cost? A deep dive into Python’s heap-only memory model and the 28-byte overhead of storing a simple integer.
You Don't Know JSON: Part 2 - JSON Schema and the Art of Validation
JSON lacks types and validation - any structure parses successfully. JSON Schema solves this by adding a validation layer without changing JSON itself. Learn how to define schemas, validate at runtime, generate code, and build type-safe APIs.
Building a GCP Secret Manager Emulator for Offline Integration Testing
Needed offline GCP Secret Manager testing for CI/CD pipelines. Existing solutions were either too heavy or incomplete. Built a standalone gRPC emulator that works with the official Go SDK–zero credentials, zero network calls, 100% local.
Understanding Protocol Buffers: Part 1 - Introduction and Core Concepts
Protocol Buffers (protobuf) is Google’s binary serialization format - smaller, faster, and type-safe compared to JSON. Learn what protobuf is, how it works, and when to use it for APIs and microservices.
From Shell Scripts to Go: Building a Multi-Vault Secret Management Library
Started with Bitwarden-only shell scripts. Needed to support 1Password and pass without breaking anything. Built a shell abstraction layer, then ported it to Go. Same interface, three backends, zero breaking changes.
Blackdot: A Development Framework Built for Claude Code and Modern Development
Start on Mac, continue on Linux–same Claude conversation. Plus integrated AWS/Rust/Go/Python tools, extensible hooks, multi-vault secrets, and modular architecture. A framework, not just dotfiles.
HTTP Error Handling in Go: Chi, Gin, and Echo
Stop returning errors as plain text. Learn how to implement consistent, structured HTTP error responses in Go with support for Chi router, Gin framework, and Echo framework. Includes field-level validation and trace IDs.