The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
March 15, 2026

Migration, Light As A Feather • The Applied Go Weekly Newsletter 2026-03-15

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

2026-03-15-migration-light-as-a-feather.png

Migration, Light As A Feather

Hi ,

Nothing lasts forever, including package APIs. Design concepts that seemed a smart choice initially expose more and more rough edges. At some point, breaking changes seem unavoidable. But how to make the migration process from the old to a new package as smooth as possible for package clients? With function inlining! But not the temporary kind that the compiler does when deciding on the fly about code optimizations. It's an inlining performed at the source code level. The latest Go blog article explains how.

An older Go improvement is error wrapping. Up to now, there is no Go directive for deciding when to wrap an error, so you'll have to decide for yourself. A few considerations and tips will surely help with these decisions.

Plus: Podcasts from this and the previous week, the Go scheduler, drawing shapes with Go and gio, Google's GFS file system in one file, and more.

Let these posts inspire you!

–Christoph

Featured articles

//go:fix inline and the source-level inliner - The Go Programming Language

The go fix command 2.0 (not an official version number, I just call the overhauled version "2.0") can do a lot of fixes, but one requires special attention: The //go:fix inline directive helps with smooth migrations from deprecated to shiny new code.

Go errors: to wrap or not to wrap?

Wrapping errors before forwarding them is good because it adds context to an error. But overdoing it decreases the signal/noise ratio (ie, more noise, less signal). Here are guidelines for deciding if an error should get wrapped.

Podcast corner

Cup o' Go | 🌷 Spring is in the air! 🌸 Time to cool down! 🧊

This episode fell victim to my broken DB last week. So with a delay and my apologies, here it is.

Cup o' Go | go fix your stack allocations in preparation for TypeScript 7

Jonathan and Shay discuss the two latest Go blog articles and... an article about TypeScript?! Sure. Some of you may remember that Microsoft changed the codebase for the TypeScript compiler to Go. Now the first release is almost ready.

Fallthrough | The Least Contentious Proposal in the History of Go

The Fallthrough panel isn't quite happy with the UUID proposal and the community dynamics that surround it.

go podcast() | 075: Fyne apps are easier to design and build with Andy Williams

The go-to UI type for Go projects is a web UI. Fyne boldly represents what seems a UI technology on the edge of extinction: Desktop-first UIs. Andy Williams joins the go podcast() panel to talk about Fyne and AppTrix, the visual designer for Fyne apps.

go podcast() | 076: From nginx to Caddy and we both had LLM quality issues/concerns

Why you shouldn't let LLMs iterate over your code unsupervised, why Dominic switched to Caddy for his production server, and a honoarble mention of Coolify, an increasingly popular app deployment and management platform.

More articles, videos, talks

The Scheduler | Internals for Interns

Jesús Espino continues his Go internals series with a very close look at the scheduler.

Gio Tutorial Video 10: Gio Drawing - YouTube

How to draw shapes in Go? GioTutorial recommends—no surprise—using gio.

I Built Google File System in Go: One File, Zero Dependencies | Jitesh's Blog

If the title sounds vaguely familiar, it's because Jitesh Kumar Sahoo implemented Google Big Table in one file with zero dependencies a while ago. Now it's the somewhat dated GFS that's superseded by Colossus but still makes a good subject for studying and learning.

Projects

Libraries

GitHub - alialaee/logfile: Logfile is a reliable append-only log file optimized for SSD and concurrency. Most suitable for implementing WALs. · GitHub

Log libraries typically flush the disk cache after every write, to lose as little data as possible on a power outage or similar interruption. This one batches writes to optimize for the specific write patterns of SSDs.

Tools and applications

GitHub - marben/irpc: A lightweight RPC generator for Go. No IDLs or reflection—just define a Go interface and generate type-safe, bidirectional RPC clients and servers · GitHub

The absence of reflection comes quite handy for TinyGo-based endpoints on small devices.

Completely unrelated to Go

Big tech engineers need big egos

On right-sizing your ego as a software engineer.

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.