It Works. (But Why?) • The Applied Go Weekly Newsletter 2026-05-17

Your weekly source of Go news, tips, and projects

It Works. (But Why?)
Hi ,
In this week's featured articles, you can inspect the Go compiler, examine error handling gone wrong, and dissect a simple archive format.
But why should you?
Too often, we just expect that things just work. But understanding why these things work (or why they break) gives us more than just temporary satisfaction. Have you ever had a mental picture of a machine, an engine, or an algorithm in your head only to discover that it works quite differently in reality? Knowing the real inner workings helps to use, apply, or modify this machine, engine, or algorithm properly.
That's why this newsletter issue invites you to open the black box, to look under the hood, to peek behind the curtains, or whatever you want to call it. There is no goal attached to curious exploration; nothing to achieve besides gaining insights. The payoff may come later, for example, when you have to decide about a design or an implementation, or when you troubleshoot an intricate bug, and one of the insights you gained earlier pops into your mind.
Stay curious!
–Christoph
Featured articles
The Go Compiler: A Deep Dive Into How Your Code Becomes a Binary
Everyone who knows how the Go compiler works, raise your hands! Everyone else, read this.
Error handling in Go: Common pitfalls
When one if statement accidentally checks another if statement's error condition instead of its own...
A tour of txtar
What's to be said about a dead-simple text archive file format? Quite a lot.
Podcast corner
085: Morten received an ~acquisition offer, Dominic got his 1st paying customer
Another week in two solopreneurs' lives. Dominic is days away from onboarding his first real paying customer (a high-volume bookseller switching away from Shopify) while Morten gives his Crate Operator project some TLC (tender love and care).
Quote of the Week: On Software And Bakery
Just because anyone can build software now doesn't mean software is dead. Anyone can bake bread in their home right now, yet 99% of us still choose to buy it from someone else. Simple products are complex! I will always be happy to pay someone to handle the nuances.
(via)
More articles, videos, talks
Securing CI/CD for an open source project: lessons from Cilium
...where one of the lessons is about why Cilium vendors all their Go dependencies.
How I Built a Real-Time PostgreSQL WAL Reader in GO - DEV Community
What happens after your code sends a SQL statement to a PostgreSQL instance? pgstream is kind of a live stream of the write-ahead log that makes every change visible.
How I built the core loop of a browser multiplayer game
The eternal problem of browser-based games: every server roundtrip takes an unpredictable amount of time. How to make the game flow still feel smooth? Julien Singler shares the strategy he chose for his Go+Svelte-based game project "HiddenWars."
The GoLand 2026.2 Early Access Program Has Started
When people keep subscribing to a commercial Go IDE despite open source alternatives, the GoLand folks must be doing something right!?
Don't hypothesize; try it out. The EAP pre-release can be tested for free until the final release. (No, that's not a paid ad. I just reckon some folks might want to test GoLand but don't know about the EAP program yet.)
What if the browser was the server?
Every web app has a fundamental problem to solve: Its logic lives partly on the server partly on the client. If you move all logic to the server, your app pays with roundtrip delays, resulting in a sluggish UI.
So why not try the opposite?
Allowlisting Config Capabilities by Embedding Rye in Go | Rye blog
Would you use a general-purpose language as a config language? Probably not: too powerful, too dangerous. Even dedicated configuration languages may provide too powerful constructs like conditions, loops, or even function definitions.
Rye, a functional language implemented in Go, has a mechanism that wipes all your concerns away: whitelisting. When embedded in a Go project, the Go code can precisely enable language features like "+" and "*" (to enable calculating values) while blocking everything else. Smart!
Fuzzing fork of go toolchain
gosentry taps into elevated fuzz testing features provided by LibAFL, a Rust-based fuzzing library. You won't even need to rewrite your fuzz tests for using gosentry, nor give up the familiar go test -fuzz command. gosentry makes go test -fuzz use LibAFL by default.
Starting Systems Programming, Pt 1: Programmers Write Programs (2025)
Efron Amber Licht takes you on a system programming journey. In this article (the first of a series of four), he uses a lot of small (as in: <100 loc) Go tools (all code listed in the article) to read and write files—both text and binary files.
Projects
Libraries
btype: B-tree based collection types for Go
Build any collection type you want. A B-Tree is the perfect working horse for collection types like maps, sets, queues, stacks, and tables. The btype package even claims to be "generally faster than the state of the art btrees for Go, Rust, and C++."
GitHub - varunbpatil/typst-go-wasm: Go library for PDF generation from Typst templates, powered by WebAssembly · GitHub
Typst is a powerful layouting language (think "LaTeX for modern times") but Go bindings of its API are few and far between. Especially CGO-free ones. typst-go-wasm uses WebAssembly to avoid the CGO route.
Tools and applications
let-go: Almost Clojure written in Go
An "Almost Closure" interpreter! And what's your excuse for pretending to write in Go?
dortanes/prox: Modular reverse proxy with config-driven routing and L4/L7 dispatching.
After struggling with Nginx, HAProxy and Caddy, the author decided to write their own reverse proxy to address complex routing requirements.
ozgurcd/gograph: A fast, local-only CLI tool to generate repository structures and improve IDE context awareness for Go codebases.
Help your poor AI agent find the relevant code in your Go project! gograph parses the AST and generates a graph of your repository, so that the agent doesn't have to frantically grep its way through your source code files.
codehamr/codehamr: A minimal, local-first coding agent for the terminal.
codehamr is a coding agent written in Go that leans heavily towards the minimalist end of the coding agent range.
Minimalist doesn't mean it has no killer feature: codehamr imposes a strict "Get Your Shit Done" loop onto local (<=30B) LLMs that tend to hallucinate success. The GYSD loop requires a provable indicator of success, such as the positive output of a testing tool. Only then it lets the LLM declare its work done.
Completely unrelated to Go
What Is Code?
Code is human-written instructions for a machine, right? Wrong. Or, not entirely wrong, but that's only one aspect of source code. Don't neglect the others!
