// Topics / Go

Go

    Building Reliable AI Agents in Go How I build reliable AI agents in Go: bounded tools, schema validation at the boundary, idempotent state, and a supervisor loop with hard limits. agents reliability ai Running LLMs Locally: A Team Guide With Ollama and Go Local AI is no longer a hobby project. How to set it up properly: provider abstraction, versioned models, eval harnesses, and a cloud fallback. llm development privacy Testing AI in Production: Shadow Mode, Canaries, Holdouts Offline evals aren't enough. How I test AI features in production with shadow mode, canaries, holdouts, and automatic fallback, with Go code. testing ai production Model Context Protocol in Go: Building an MCP Tool Server I built a Model Context Protocol server in Go with mcp-go. The protocol layer is clean. Auth, permissions, and write safety are still on you. agents ai go AI Code Review Is Mostly Noise Months of AI code review on real PRs: about 22% of comments get accepted. How I scope prompts, track hit rate, and keep it out of merge gates. engineering ai development Reasoning Models in Production: A Practical Guide Reasoning models are slow and expensive. How I run them in Go services: complexity routing, async jobs, per-request budgets, and result caching. llm production ai AI Agent Patterns in Go: Planning, Memory, Recovery Single-prompt agents break on real tasks. Plan-execute-replan, orchestrated specialists, structured memory, and explicit recovery, with Go code. agents ai go RAG Retrieval in Go: Hybrid Search, Chunking, Reranking Most RAG failures are retrieval failures. Hybrid search, structural chunking, query expansion, and reranking, each measured separately from generation. llm go AI-Assisted Code Migration: Lessons From 200K Lines of Go I used LLMs to help migrate a 200K-line Go codebase. The mechanical parts went fast. Everything else was still hard. ai technical-debt go How I Test LLM Features: Three Layers, One Cadence LLM outputs are non-deterministic. That doesn't mean you can't test them rigorously. Here's the layered testing approach I use in production. llm testing ai LLM Function Calling Patterns That Survive Production Function calling is how LLMs touch real systems. Treat tools like APIs, arguments like untrusted input, and the model like an intern with root access. llm ai go Building Voice AI: Latency, Interruptions, and Narrow Scope Voice AI is ready to ship. The hard parts are latency, interruptions, and knowing when voice is the wrong interface. Here's how I approach it. llm ai go LLM Structured Output in Go: JSON Schema, Validation, Retries How to get reliable JSON from LLMs in Go with schemas, validation, repair loops, and typed contracts. llm api go LLM Response Caching in Go: Cut Costs Without Breaking Things LLM response caching in Go: versioned cache keys, TTLs by data freshness, event-driven invalidation, and what never to cache. llm performance go Architecting AI-Native Applications (Without the Delusion) AI-native apps differ from a model bolted onto a CRUD app. The layers, confidence routing, fallbacks, and feedback loops I use, with Go code. architecture ai engineering Local LLMs for Development: Stop Paying to Test Prompts Local LLMs are good enough for development now. Iterate on prompts against Ollama, and save the API bill for evals and production traffic. llm engineering go OpenAI Assistants API: Two Weeks of Real Use Two weeks building internal tools on OpenAI's Assistants API: quick wins with retrieval and code interpreter, opaque internals, and runs that hang. llm ai go AI Coding Assistant Productivity: Three Months of Numbers Three months tracking Copilot and GPT-4 on real Go work: 25-30% faster on boilerplate, no gain on debugging, and a 15% review tax on AI-written code. ai developer-experience productivity LLM Security: A Field Guide for People Who Ship Things LLMs bring security failure modes most teams aren't defending against. Prompt injection, data leakage, tool abuse, and cost attacks are exploitable today. security llm ai AI Agent Architecture Patterns for Production Agent demos impress. Production agents mostly don't. Planning, memory, least-privilege tool access, and evals: the systems design that decides what ships. ai agents llm Embedding Models Compared: Quality, Cost, and Latency ada-002, instructor-large, and all-MiniLM-L6-v2 on a 150-query retrieval eval: precision, MRR, latency, index size, cost, and when to self-host. llm ai go Building Semantic Search in Go with OpenAI and pgvector Building semantic search with Go, OpenAI embeddings, and pgvector: structure-aware chunking, hybrid retrieval, an eval set, and the mistakes I made. ai llm go AI Code Review: What It Catches and What It Misses Three months of AI-assisted code review on Go services: it catches unchecked errors and leaks, misses context, and only helps once you filter the noise. ai engineering developer-experience RAG in Production: Patterns That Survive Real Traffic RAG quality is retrieval quality. Chunking, hybrid search, query shaping, reranking, and evals for grounding LLMs in private data, with Go examples. llm ai go Vector Databases Explained: What They Are, When You Need One What vector databases store, how similarity search and ANN indexes work, and when pgvector is enough versus a dedicated vector database. llm ai go LLM Integration Patterns That Survive Production LLM calls are slow, costly, and non-deterministic. Patterns for prompt versioning, structured output validation, RAG, tool guardrails, and fallbacks in Go. ai llm go Testing Microservices: Contract Tests Over End-to-End Suites Microservices fail at the seams. A layered test strategy that keeps feedback fast and catches integration issues before production. testing microservices go Go Concurrency Patterns I Use in Every Service Worker pools, fan-out/fan-in, pipelines, and the cancellation discipline that keeps Go services predictable under load. go architecture backend Caching Strategies: Adding It Is Easy, Invalidation Is Hard Cache-aside, write-through, invalidation strategies, and the failure modes that will wake you up at night. With Go examples. performance databases go Rate Limiting: The Boring Feature That Saves You at 3 AM Token bucket, sliding windows, identity keys, response headers, and fail-open rules: how to pick and run rate limiting for high-traffic multi-tenant APIs. api backend go Distributed Systems Patterns I Keep Reaching For Timeouts, retries with jitter, circuit breakers, sagas, outbox and inbox, backpressure: the distributed systems patterns that survive production. distributed-systems architecture microservices TypeScript Best Practices From a Go Developer TypeScript is the best thing to happen to JavaScript, and that bar was low. Strict mode, boundary validation, and simple generics for large codebases. engineering architecture go OpenTelemetry in Late 2021: What's Ready and What's Not OpenTelemetry in late 2021: tracing is ready, metrics are close, logs are not. A Collector-first adoption path with Go code, sampling, and naming rules. observability go Event Sourcing in Go: Lessons From Financial Event Pipelines Event sourcing in Go from a fintech content pipeline: aggregates, a Postgres event store, projections, snapshots, upcasters, and what I'd change. architecture go Feature Flags at Scale: Ownership, Expiry, and Cleanup 847 feature flags, about 200 with owners. Lessons from production codebases on flag types, ownership rules, fail modes, and cleanup. ci-cd devops go WebAssembly Beyond the Browser: A 2021 Progress Report Server-side Wasm in mid-2021: edge platforms and Envoy plugins are real, WASI still lacks networking, and containers aren't going anywhere. infrastructure cloud go GitHub Copilot: First Impressions From a Go Developer Early notes from GitHub Copilot's technical preview on Go code: strong on boilerplate and tests, wrong on domain logic, unresolved on licensing. developer-experience ai go Rust vs Go for Cloud Services: A Go Developer's View A Go developer on Rust in early 2021: where it wins (tail latency, memory, compile-time safety), where Go still wins, and when a rewrite pays off. engineering go cloud API Gateway Build vs Buy: Kong, Envoy, or Custom Go I've built a custom Go gateway, run Kong in prod, evaluated Envoy, and used managed cloud gateways. What I recommend after doing each wrong at least once. api go kubernetes Kubernetes Operators in Go: Lessons From Six in Production Lessons from building production operators at a cloud infrastructure startup: the reconciliation loop, controller-runtime patterns, and the mistakes that cost us sleep. kubernetes go infrastructure Event-Driven Architecture: What I Got Wrong, What Survived Lessons from building event-driven systems at the fintech startup and my infrastructure startup: what works, what silently corrupts your data, and Go patterns that hold up. architecture go distributed-systems gRPC in Production with Go: Protos, Deadlines, Errors gRPC patterns from moving a startup's internal APIs off REST: proto design, Go servers and clients, status codes, testing, and mistakes that cost weekends. api go microservices WebAssembly Outside the Browser: Real Promise, Real Gaps WebAssembly outside the browser is interesting for edge, plugins, and sandboxing. But WASI and the tooling gaps are bigger than the hype admits. infrastructure go How I Build CLI Tools in Go: Patterns That Hold Up Patterns for Go CLIs that hold up: cobra commands, stdout vs stderr, useful errors, signal handling, config precedence, and shipping static binaries. developer-experience go Message Queue Patterns: Idempotency, Retries, Dead Letters Queues look simple on a whiteboard. Messaging patterns I learned the hard way at three startups: idempotent consumers, jittered retries, dead letters. architecture go backend Load Testing Strategies That Find Real Breaking Points Most load tests produce comforting numbers instead of answers. Soak, spike, and baseline tests with production-shaped data, think time, and percentiles. testing performance reliability Monolith to Microservices: When to Split and How Most teams shouldn't migrate to microservices. How to tell if you should, and how to split with the strangler pattern without wrecking delivery. microservices architecture go API Design Lessons: Every Field Is a Contract HTTP API design lessons from fintech and mobility platforms: stable resource shapes, error formats, versioning, pagination, timestamps, and rate limits. api engineering backend GitOps with Flux and Argo CD: Stop Deploying From a Laptop How to move a team off ad-hoc kubectl deploys to Git-driven Kubernetes with Flux and Argo CD: repo layout, secrets, rollbacks, and my mistakes. ci-cd devops kubernetes Making Go Services Fast: Profiling, Allocations, Timeouts Go performance tuning from production: pprof profiling, cutting allocations, bounded concurrency, HTTP timeouts, and database pool settings. go performance backend Rust vs Go for Backend Services: A Go Developer's First Look A Go developer tries Rust for backend work in early 2018: what impressed me, where it still hurts, and the one service where it might fit. engineering go backend 2016 in Review: The Year I Stopped Fighting Infrastructure My 2016 in review: Docker went mainstream, Kubernetes pulled ahead, Go earned its place, serverless lagged, and what a mobility startup taught me. year-in-review trends engineering Why We Chose Go for Our Backend Services How Go replaced Python and Node as our default backend language at a mobility startup, and the tradeoffs we accepted. go backend engineering