
How to stop AI from writing Go like it's 2020
Hey everyone! Anyone who uses AI to write Go code has probably noticed an annoying pattern: the generated code works, but it looks like it came from 2020. The agent doesn’t know slices.Contains ex...

Hey everyone! Anyone who uses AI to write Go code has probably noticed an annoying pattern: the generated code works, but it looks like it came from 2020. The agent doesn’t know slices.Contains ex...

Hey everyone! Over the past few months I put together a course about building a payment processor in Go. Not a simplified example: four microservices, architecture decisions documented as ADRs, an...

Hey everyone! Go has always been minimal in the standard library when it comes to data structures. Slices and maps are the building blocks, and for a long time that was enough. But since generics ...

Hey everyone! Google released Genkit Go 1.0, the stable version of their open source framework for building generative AI applications in Go. After a period in alpha, 1.0 brings API stability with...

Hey everyone! Google published a post on their developer blog called “Why Go is an ideal language for AI-assisted software engineering.” I started reading it and here’s what I took away after usin...

Hey everyone! Memory management in in-memory caches has always been a challenge in Go. If you store data in a standard map, such as map[string]*Resource, you are holding strong references to those...

Hey everyone! Testing concurrent code in Go has always been uncomfortable. You write a goroutine, and suddenly your test needs a time.Sleep to wait for it. Then the sleep is too short on a slow CI...

Hey everyone! You’ve looked at a Kubernetes dashboard, seen CPU usage looking fine, watched latency climb, p99 spiking, and had no idea why. This is one of those problems that exists in almost ev...

Hey everyone! This is the first post in a series called LLM from Scratch in Go. The goal is straightforward: build a language model from zero, in Go, with no external machine learning libraries. N...

Hey everyone! In January 2026, the Go Developer Survey 2025 was officially published on the Go blog. In November 2025, JetBrains published their annual Go ecosystem analysis based on GoLand usage ...

Hey everyone! If you have ever written a custom Terraform provider in Go, you know the language and the ecosystem fit well together. But when it comes time to write the actual infrastructure, you ...

Hey everyone! Before Go 1.23, whenever you needed to iterate over a custom type, you had roughly three options: return a slice, expose a channel, or accept a callback function. All of them have tr...

Hey everyone! On March 23, 2026 LocalStack discontinued the Community Edition. The Docker image everyone was using now requires an account and an authentication token. The free tier was restricted...

Hey everyone! You finished writing a CLI in Go. It works on your machine. Then someone asks: “where do I download it?” If the answer is “clone the repo and run go install”, you lost half your aud...

Hey everyone! If you use Claude, Cursor, or any AI agent day-to-day, you have probably wanted it to access your database, read files from your project, or call an internal API. The problem is that...

Hey everyone! Back in August 2017, @neild opened a proposal in the official Go repository with a simple title: proposal: spec: short function literals. The idea is to allow a shorter form for anon...

Bootstrapping observability in a fresh Go service is usually expensive in time and energy. You pick libraries, wire exporters, propagate trace context everywhere, correlate logs and metrics, set up...

Hey everyone! Documenting REST APIs is boring. But it’s necessary. And when you do it right, you get: Clients who understand your API without asking Documentation that’s always up to date ...

Hey everyone! Go 1.26 was released in February 2026, six months after version 1.25. The release brings updates to the language specification, runtime behavior, and development toolchain. The main...

Hey everyone! In Go, errors are values. There are no exceptions: you return error and the caller decides what to do. This model is simple, but it requires knowing how to create, propagate, and che...

Hey everyone! Most Go services don’t need to be concurrent. I’m not saying Go shouldn’t use goroutines or channels. I’m saying that premature concurrency - adding goroutines, mutexes, and channel...

Hey everyone! gRPC is one of the most powerful technologies for building modern APIs. Excellent performance. Strong typing. Native streaming. Used by Google, Netflix, Uber, and other giants. But ...

Hey everyone! Migrating a Go application to Kubernetes seems simple on paper. You create a Dockerfile, deploy it, and you’re done, right? Wrong. In practice, you encounter problems that don’t ap...

Hey everyone! Writing Go code that works is one thing. Writing idiomatic Go code, that follows the language’s principles and conventions, is completely different. Idiomatic code is more readable,...

Hey everyone! When it comes to data serialization in Go, JSON is almost always the default choice. But what’s the real cost of that decision? How much CPU, memory, and latency are you wasting with...

Hey everyone! Today we’re diving into rate limiters, one of the most critical topics for high-performance APIs, public services, distributed systems, and platforms that must limit abuse. Why ra...

Hey everyone! Today I want to walk you through something that almost nobody explains clearly: what Terraform actually executes when you run a provider written in Go. We often assume Terraform “c...

Hey there! Implementing systems from scratch is one of the best ways to deeply understand how they work. In this article, I present an educational project: a Redis-like Key-Value Store fully imple...

Hey everyone! Today I want to talk about one of the most elegant and misunderstood ideas in Go: context.Context. Many people use it without much thought — “because the framework requires it” — but...

Hey everyone! In recent years, we’ve seen Rust, Python, Java, Kotlin, and even Zig trying to invade Go’s space in the Platform Engineering world — but the fact is: in 2025, Go continues to be t...

Hey everyone! This post is a deep dive into a very common myth in the Go ecosystem: “Go doesn’t have cold start”. Spoiler: Go tends to be faster than Node/Python in many scenarios, but Go’s cold ...

A misconception among many developers is believing that a concurrent solution is always faster than a sequential one. This couldn’t be more wrong. The overall performance of a solution depends on m...

Hey everyone! Today I’m going to do a complete performance analysis of the main HTTP routers in Go. Let’s see who’s really the fastest, who consumes less memory, and which is the best for each sce...

Hey everyone! You have a project ready, but now comes the question every developer faces: where to deploy? Vercel, Netlify, or Railway? The choice isn’t obvious and can directly impact your projec...

Hey everyone! Today I’ll show you how to create a resilient distributed tracing system using Apache Kafka and Jaeger. The idea is simple: what if Jaeger goes down? Do you lose all traces? No! We’l...

Hey everyone! Today I’ll show you how to create a custom Terraform provider from scratch using Go. It’s a topic that many developers are afraid to tackle, but it’s actually not the seven-headed bea...

Hey everyone! Today I’m going to show you how to create a Kubernetes Operator from scratch that monitors ConfigMap changes and sends events to a webhook. It’s a super useful feature for hot reload...

Hey everyone! Today I’m going to show you why senior engineers are abandoning the MVC pattern in Go and migrating to more modern architectures. If you’re still forcing Go into a pattern that doesn...