The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
March 29, 2026

Turning Insights into Pages • The Applied Go Weekly Newsletter 2026-03-29

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

2026-03-29-turning-insight-into-pages.png

Turning Insights into Pages

Hi ,

Maybe you have noticed that my courses Master Go and Concurrency Deep Dive can't be purchased anymore. This wasn't a decision I made lightly, but a German law from the 1970s leaves me no choice.

What? A law from the 1970?

Indeed, and that's funny and sad at the same time. Funny, because this law does so obviously not apply to online courses that take only days or weeks to complete. Sad, because it's an example of how governmental agencies decide to follow an outdated law stubbornly instead of applying good judgment.

So what happened? In the 1970s, the internet existed as a small (well, from today's perspective) network between universities and for the military. It wasn't available to the public. The web wasn't even an idea. Naturally, remote learning wasn't a thing, with very few exceptions: The University of Hagen, for example, has offered remote study courses, including an official degree, since 1974. Businesses and self-employed coaches offered months-long courses at high prices.

The government decided to strengthen the rights of customers by forging a law that, among other things, allows customers to cancel the contract up to six months after the course started. This law was made for courses that take months or years and cost thousands.

Since then, vendors of remote courses have had to get an official certification that's not for free. I don't know the prices back then, but today it's 150% of the course fee or 1,050 € minimum.

Recently, the governmental agency responsible for doing these certifications decided to go after small online courses and coaching as well. No matter how short, no matter how small, "1,050 € please, or shut down your course." For small courses, the price of the certificate is in no relation to the course price. A painting course for 10 € would have to sell 105 times just to cover the certification fee. And the fee is valid for three years only, and only if you don't change the course significantly.

Imagine if every 10 € textbook would have to get a 1k€ certification.

What this means for my courses

Luckily, the government agency can't expand this law to textbooks. So I decided to turn my courses into eBooks. Due to other duties, I'm just starting, and I could need your input! This tiny survey lists four quick questions that would help me to set the right direction. The survey is anonymous and takes maybe one or two minutes. I'd be super thankful if you could hop over and answer the questions!

Best,

–Christoph

Featured articles

Type Construction and Cycle Detection - The Go Programming Language

Did you notice that Go's static type checker got improved in Go 1.26? Probably not, because there are no visible changes on the surface. The refinements were necessary to support future changes of the type system, as well as adress some rare edge cases of type construction.

Go Naming Conventions: A Practical Guide– Alex Edwards

"There are two hard things in software development: Cache invalidation and..." (Bonus points for completing this citation; extra bonus points for giving correct attribution.)

Testing unary gRPC services in Go | redowan's reflections

Want to test a gRPC server? Strip the gRPC part and test the business logic directly. But what if you suspect a fault in the gRPC layer? With bufconn and Redowan Delowar's article, you're ready to go.

Podcast corner

Cup o' Go | You get an error, ⚠️ you get an error, ⚠️ you get an error. ⚠️ Everybody gets an error! ⚠️⚠️

...and if everybody gets something, everybody is happy!

Cup o' Go | 🌉 Live from SF w/ Josh Bleecher Snyder: Divide and Slog, Sponsored by Antithesis and Ardan Labs

Jonathan and Shay have a chat with Josh Bleecher Snyder, Go contributor for many years, about math.Big, Bazaar support in Go (does anybody know Bazaar, the version control system?), and slogbox.

go podcast() | 078: Uncloud, bridging the gap between Docker and Kubernetes

Today's guest, Pasha Sviderski, talks to Dominic and Morten about his project Uncloud, a popular project for orchestrating software without the Kubernetes overhead. (I consider it popular based on its 5k Github stars.)

Quote of the Week: The incommunicable cost of complexity

The failure modes of complex systems are unpredictable, so the benefits of avoiding them cannot always be known, much less communicated.

–

More articles, videos, talks

Developing and Benchmarking the Same Feature in Node and Go

A speed comparison between Go and Node.js at the surface, but beneath it is the insight on "how two mature runtimes guide you toward different internal designs."

I benchmarked every Go SQL parser in 2026 and built my own

A year ago, the author shared his SQL parser GoSQLX and received some criticism. (Fair, as he points out.) Then he went on building quietly and released quite a few new features within the last two weeks. Here, he writes about his motivations and some speed comparisons of SQL parsers for Go.

Agentic pre-commit hook with Opencode Go SDK - YouTube

Git pre-commit hooks were created to allow running a script before Git performs the commit. Alex Pliutau wants to runn a full code review from the pre-commit hook. Naturally, a simple script won't do, so Alex reached out for OpenCode, an agentic LLM that has a Go SDK.

A Commonly Unaddressed Issue in C++ and Golang Comparisons

On comparing apples to oranges (or: Where speed comparisons between languages fail)

Optimizing blog GeoIP DB

Usually, you get an GeoIP database with the web analytics tool you plumb onto your blog (mine was Pirsch.io). Here is the journey of rolling your own GeoIP database for your Go-powered blog.

Go linting with nogo in Bazel | Johannes' blog

Bazel has a build cache and golangci-lint has a cachee, too, but golangci-lint doesn't share its cache between local and CI. To avoid double work, the author decided to use nogo as a linter. Nogo compiles linting into the code, and so lint errors become build errors. Bazel caches results, so incremental builds would expose new lint errors only.

Integrating nogo into the CI doesn't seem trivial, so if you consider using the nogo+Bazel combo, check out this article.

Projects

Libraries

GitHub - go-kruda/kruda: High-performance, type-safe Go web framework with custom async I/O transport — 847K RPS plaintext

The author wanted a web framework with typed handlers, fast transport, and a clear API. They found none, so they built Kruda.

GitHub - gpdf-dev/gpdf · GitHub

Once upon a time, jung-kurt/gopdf was the only option for generating PDF. Then it went out of maintenance, and searching for an alternative gave only... crickets. Recently, some new PDF libs popped up, including this one. gpdf scores with zero dependencies and raw speed ("10-30x faster than the alternatives").

Kreuzberg

If you plan to process documents, maybe you've come across Docling. Kreuzberg.dev is Docling with extra bells and whistles. Written in Rust but has Go bindings (plus 11 (10?) more language bindings).

Trivia: Kreuzberg is also the name of a district of Berlin, Germany.

GitHub - kreuzberg.dev/tree-sitter-language-pack: Comprehensive tree-sitter grammar compilation with polyglot bindings — Rust, Python, Node.js, Go, Java, Ruby, Elixir, PHP, C#, WASM, and CLI. 170+ languages.

A language pack for Tree Sitter, a language-agnostic parser generator and parsing library (with Go bindings). This language pack bundles 248 parsers so you (probably) don't have to write one.

GitHub - cvilsmeier/go-sqlite-bench: Benchmarks for Golang SQLite Drivers · GitHub

New (read: updated) SQLite benchmarks!

Tools and applications

GitHub - specialfish9/gohole: Self-hosted DNS-based Ad and tracker blocker, written in Go · GitHub

Pi-hole is the black hole for ads. Gohole is the same but written in Go. The author started it as a fun project but it has been running in "production" (read: the author's machine) for quite a while now and seems quite stable.

GitHub - aelassas/servy: Turn Any App into a Native Windows Service - Full-Featured Alternative to NSSM, WinSW & FireDaemon Pro · GitHub

Running a Go binary as a service is easy on macOS and Linux, thanks to Homebrew. But what about Windows? Problem solved: Servy turns Go binaries into proper Windows services.

GitHub - esnet/acme-proxy: Solve ACME http-01 challenge without opening port 80 to the internet, obtain certs from an external certificate authority. · GitHub

Renewing TLS certs through the ACME protocol requires either exposing HTTP port 80 to the internet or distributing sensitive DNS or API credentials to every server. Doesn't sound great, does it? acme-proxy acts as a gateway that centralizes credentials, so that ACME client can renew certs without exposing or distributing anything.

GitHub - sphireinc/Foundry: A Markdown-driven CMS written in Go · GitHub

Hugo, the static site generator, is super versatile... but this comes at a cost. It's not the easiest system around, and it's purely CLI-driven. Foundry seems a bit simpler, a bit more accessible... and comes with an admin UI.

Completely unrelated to Go

Calculate “1/(40rods/hogshead) → L/100km” from your Zsh prompt

As a Fish user, I won't probably draw much benefit from zsh tricks, but I had a TIL moment about Numbat and Qualculate.

Quantization from the ground up | ngrok blog

Another interactive explanation article by Sam "Who" Rose. Drag sliders, watch how things change, read some text, and as a by-product you'll have learned something about quantization.

Engineers do get promoted for writing simple code

...and last not least, there are languages that invite you to writing simple code, and others that don't.

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.