The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
May 26, 2026

Is It Tuesday Again? • The Applied Go Weekly Newsletter 2026-05-24

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

Is It Tuesday Again?

Hi ,

While the past weekend was longer than usual, due to a public holiday over here, it didn't give me a chance to complete this newsletter on time. Or to complete it at all in the way I planned. As I'm writing this, I sit in front of two unfinished Spotlights I intended to include in this issue. (Nah, not both at once; I rather switched from a subject I considered "long" to one that seemed "shorter," only to discover that I wouldn't be able to finish either one on time. (It's 10:30pm right now, and I'm even unbothered about using nested parens to finish the intro before midnight.))

I couldn't even come up with a good hook derived from the featured articles. They're so different from each other. No leitmotif, no "read thread", as we say in Germany (and "leitmotif", btw, is also of German origin. (Ha, another set of parens.)) Oh, is "German" a good topic maybe, while we're at it? News from Krautland?

Nah.

Better just go ahead and jump right into the articles, while I'm making meticulous but ineffective plans on how to finish a Spotlight by next weekend. ¯_(ツ)_/¯

–Christoph

Featured articles

Introducing the pkg.go.dev API

Do you love pkg.go.dev? Now you can share that love with your tools! Go's package directory got a REST API.

The 10 Go Error Handling Commandments · Preslav Rachev

Sure, there are quite a few ways to get error handling wrong. But error handling isn't rocket science. Ten rules to grok, clear and concise, make a gopher healthy, wealthy, and wise.

The maintainer's dilemma | spf13

Steve Francia, creator of Cobra and Afero, faces hundreds of issues and PRs on his projects, and he isn't the only one. AI to the rescue?

Podcast corner

086: Just use postgres, man

Should you reach for ClickHouse before you have the scale to justify it? Dominic and Morten debate database tradeoffs, shipped new version of DeployCrate and StaticBackend, and are concerned about what AI-assisted coding may be doing to their (and everyone's) skills.

(AI) Some imp(AI)ortant sec(AI)urity fixes (AI). And AI is every(AI)where!

Jonathan Hall and Miriah Peterson cover Go security releases, proposals, and ask the hard question: Do language-specific conferences still matter in times of AI?

More articles, videos, talks

The implementation of select in Go

select, the concurrency-ish sister of switch, exposes an elegant mechanism for concurrent flow control. But how much, and what kind of, complexity does select hide beneath its tidy surface?

Testing Go CLIs with testscript

go test is made for unit testing, right? So, for integration tests, you use... go test.

Wot?!

The trick for doing this is buried in Go's source code. But it's not Go code...

I built a Slack client because :wave: was lagging | Grant Ammons

Two seconds.

Two short seconds are the reason why this Slack client exists.

Configuring a Go HTTP Server for Unencrypted HTTP/2 (h2c) | ClarityBoss

"HTTP/2 cleartext"...? Wouldn't this be just plain HTTP? No, HTTP/2 knows only secure transfer, unlike HTTP/1.x. Okay, so why not just juse HTTP/1.1? Well, the author's situation is a bit special: Cloud Run terminates TLS at the perimeter but has a known issue with using HTTP/1.1 between the TLS termination point and the backend. Fortuntately, Cloud Run has an option to forward traffic as HTTP/2 cleartext. And even more fortunately, Go 1.24+ makes using HTTP/2 cleartext quite straightforward.

A regression in code I didn't touch

Imagine you observe a sudden performance regression, and you're pretty dang sure you didn't change the affected code in any way!

It turned out that the root cause is outside the language, buried in modern CPU architecture.

A Practical Guide to Profiling in Go | The GoLand Blog

Sure, a part of the article is about the GoLand IDE, but a large fraction of the article explains profiling in general and is a great read for everyone.

Gobee: write eBPF programs in Go, transpiled via clang

Kernel-side programming for eBPF means writing ugly and error-prone code in the only language that has no way to prevent regular security vulnerabilities caused by memory corruption. Now gobee doesn't make C magicall disappear, but it puts Go in front of it, or, more precisely, a strict subset of Go.

Conf42 Golang 2026 (Playlist)

Videos! Lots of. View talks from Gophers all over the world about topics from all over Gopherland.

mvm - compatibility matrix

Marc Vertes (of yaegi fame) strives to make his Go interpreter mvm as compatible as possible with the standard Go compiler. To track progress, he created a page showing the results of running the standard library's test suites through mvm test.

The state today: 96% of individual test cases pass (about 1,640 of 1,710), but only 61/170 stdlib and 9/50 external packages pass their entire suite. Because sometime, just one missing symbol reds a whole package. I find that gap more useful than any single "X% compatible" number, and watching it shrink is the point.

Dropping Privileges in Go

You know the code you've written. You know what it does and what resources it accesses. But do you know this for all the library code it calls? Can you know this? And what about attackers taking over your running binary?

To minimize the blast radius of malfunctioning code, you could wrap it into a microVM, with quite some execution overhead involved. The lightweight alternative to this is to cut process privileges ruthlessly. Unix-like systems offer plenty of knobs and levers for this.

That one time I used Go panics for flow control

An ugly (the author's word!) but effective solution to the problem of how to cancel a long-running function that doesn't support context cancellation.

Projects

Libraries

Arceus-7/matrix: A clean, generic, zero-dependency matrix math package for Go with support for arithmetic, decompositions, and linear system solving.

More lightweight than gonum/mat, more element types supported, but mat might cover complex use cases better (says the author).

Tools and applications

ccrsxx/api: My personal API for my projects built with Go using modern net/http

I'll let the author speak for this: "The resource improvements is the most interesting part of this migration IMO. My Docker image decreased from 205MB (Node.js) to just 10.1MB (Go), and average RAM usage dropped from ~100MB down to just 10MB. Running this on my server feels so lightweight now. Screenshot: https://i.ibb.co.com/xKvQJRqN/image.png

"Coming from JavaScript world, I honestly disliked Go's error handling at first, it just felt way too verbose. But now I actually love it. Treating errors as real values instead of just throwing exceptions and let it bubble, it makes the code so much more predictable, and it really forces you to think about every possible unhappy path."

phlx0/drift: Terminal screensaver that activates when you're idle — constellations, rain, particles & more. Press any key to resume. Just drift away!

The times of screen burn-in are long gone, along with cathode-ray tubes, but screensavers aren't quite dead yet. Here's one that exclusively saves your terminal's screen and nothing else, featuring various animations, from drifting stars to Conway's Game of Life.

account-center: Self-hosted, OIDC-authenticated portal for internal services and knowledge base articles

So you've implemented OpenID Connect to authenticate and authorize users. But where to send them after login? Account Center is the one-stop shop for freshly logged-in users, showing them the services they can access (through a service catalog) and how to access these services (through a knowledge base).

townsendmerino/ken: Fast hybrid code search for agents. Pure Go, drop-in MCP-compatible with semble.

When LLMs search through code using grep (or ripgrep or the like), they can quickly burn a lot of tokens. Specialized search tools like ken digest codebases for LLM-friendly lexical and semantic search.

Completely unrelated to Go

A Markdown-based test suite

What if your tests were written in... Markdown? Like the Markdown-formatted specs that LLMs love so much, but without any AI around? Julio Merino gave it a try for testing his EndBasic compiler.

The just-say-no engineer was a ZIRP phenomenon

...where ZIRP means “zero interest rate policy”. What happened? During the years when interest rates were zero, tech companies spent money as if there was no tomorrow. Engineering jobs were plenty and highly paid, and just-say-no engineers had an important role in large teams, where they fought against code bloat. Now they've lost their jobs, and AI is creating more code bloat than ever.

The last six months in LLMs in five minutes

The state of the pelican.

We see something that works, and then we understand it – Daniel Lemire's blog

Thinkism is a trap worth thinking about.

(via)

Prompts are technical debt too

"A set of prompts that you carefully crafted in January this year might be out of date or actively harmful by February. Worse still, you might not even notice."

Happy coding! ʕ◔ϖ◔ʔ

Questions or feedback? Drop me a line. I'd love to hear from you.

Best from Munich, Christoph

Not a subscriber yet?

If you read this newsletter issue online, or if someone forwarded the newsletter to you, subscribe for regular updates to get every new issue earlier than the online version, and more reliable than an occasional forwarding. 

Find the subscription form at the end of this page.

How I can help

If you're looking for more useful content around Go, here are some ways I can help you become a better Gopher (or a Gopher at all):

On AppliedGo.net, I blog about Go projects, algorithms and data structures in Go, and other fun stuff.

Or visit the AppliedGo.com blog and learn about language specifics, Go updates, and programming-related stuff. 

My AppliedGo YouTube channel hosts quick tip and crash course videos that help you get more productive and creative with Go.

Enroll in my Go course for developers that stands out for its intense use of animated graphics for explaining abstract concepts in an intuitive way. Numerous short and concise lectures allow you to schedule your learning flow as you like.

Check it out.


Christoph Berger IT Products and Services
Dachauer Straße 29
Bergkirchen
Germany

Don't miss what's next. Subscribe to The Applied Go Weekly Newsletter:
Share this email:
Share on Twitter Share on LinkedIn Share on Hacker News Share on Reddit Share via email Share on Mastodon Share on Bluesky
c.im
LinkedIn
Powered by Buttondown, the easiest way to start and grow your newsletter.