The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
April 13, 2026

Language Is (Ir)relevant • The Applied Go Weekly Newsletter 2026-04-12

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

Language Is (Ir)relevant

Hi ,

How time flies! It's two weeks since I asked you to help me shape the Go eBook I plan to offer while my courses are frozen due to legal concerns. Thank you to all who participated! I read all of your answers, and I got some really useful insights.

Stats first:

Format: Of those who answered the question, most prefer PDF, followed by ePub, then HTML (online). One participant disclosed that they prefer Markdown, to generate audiobooks and Anki cards. There are so many different ways of learning!

Example code: Most who answered this one want downloadable code, followed by "both downloadable and running in the browser." The code is already downloadable; making it run in the browser is a challenge that I accept with pleasure.

To manage expectations: In the staged rollout that I'm planning, advanced features like this might appear in later stages.

Structure: The answers were clear: The book shall be restructured for a reading audience (rather than following the course's linear structure). I shouldn't have asked this question lightly! I might have greatly underestimated the effort for imposing a new structure over the existing content. But I'm sure I'll find a good way to make the book a great reading experience.

The most annoying aspect about eBooks (that I should avoid): I got so many insightful answers! I cannot comment on every single one here, but let me summarize a few:

  • Code shall be well formatted, syntax-highlighted, and runnable without contorted maneuvers (such as copy-pasting multiple fragments and cleaning it up from uncommented annotations). And it should work as described.
  • Cover real world topics and applications. I have to mark this one for closer consideration, as my assumption (back when I created the course) was that embedding code examples in real-world contexts might add noise that can distract from the core idea to get across. But I get that examples that float in thin air without relatable context might not necessarily be easier to understand than examples with contextual "noise" around them.
  • Avoid walls of text (which is indeed something I see in too many technical books).

Plus many more comments and tips. Again, thank you for taking the time to answer my questions. I'll work out a suitable concept that meets these wishes and suggestions in the best possible way.

–Christoph

Featured articles

Security: Go 1.26.2 is released (and Go 1.25.9, too)

This release contains quite a few security fixes—is this something to worry about? Maybe it's a good sign: LLMs become increasingly capable at spotting security issues in code.

Nevertheless, keep calm and update quickly.

When the compiler lies: breaking memory safety in safe Go

Related to the recent Go minor release: Jakub Ciolek, cloud security engineer, describes how he discovered two of the CVE's fixed in Go 1.26.2.

Podcast corner

080: Ship it anyway: fighting the urge to refactor

The "one more improvement before shipping" virus and what you can do about it.

Go 1.26.2 is a beast. Go upgrade!

Jonathan Hall and Pato Whittingslow (filling in for Shay) discuss the many security fixes in Go 1.26.2 and the use of Go on an ESP32 microcontroller. (Note to self: Looks like Wifi support for TinyGo on the ESP32 has finally arrived!)

Spotlight: The Best Language for AI-Assisted Coding Is...

If you ever had an LLM generate code for the same problem in different languages, you might have wondered whether some languages are more suitable than others for being read and generated by LLMs. Maybe you even observed a notable difference in quality between the different outputs.

Could there be a specific aspect of a programming language that helps LLMs to better understand code they're reading, or generate better code?

In other words, will we witness an "agentic coding singularity" in which all coding agents use a single, synthetic "hyper language" that pushes all other languages into oblivion (or into the shelter of human developers who still love to craft code by hand, discuss languages and programming techniques, and be familiar with a codebase)?

Will all programming languages become obsolete?

Or does the choice of a programming language become increasingly irrelevant, because LLMs can emit code in almost any language you ask them to? Like, "Write Space Invaders in SQLite!"

On measurability

When asking about differences in quality, we need to define "quality" and determine measurable aspects of this definition. A few aspects come to mind:

Functional correctness

Does the code do what the spec requires? (Yes, writing a spec is a good idea.) Are the tests meaningful and do they pass?

The rate and nature of errors and bugs

How many errors does the code produce when running? How many bugs are hidden in the code that may cause wrong behavior, break data, or open security holes?

Clarity

Is the code clear and readable to a human reviewer (and to an LLM that has to maintain the code)?

Token efficiency

How many tokens does the LLM burn through when reading a certain amount of code? That's not just a question of cost; rather, if code translates efficiently into tokens, more code fits into the LLMs context window, allowing it to analyze larger codebases and better understand the bigger picture.

Studies have been done, but...

There are plenty of studies and benchmarks that evaluate how LLMs perform at coding tasks in various languages. Don't expect that a clear winner has emerged from all this research activity; there is none. Moreover, I wasn't able to find a study that evaluates the latest frontier models. There's a broad consent among LLM users that these models enter new levels of coding quality. But even without, some language characteristics seem to increase a language's suitability for LLM coding.

For example, static typing is a clear advantage for coding agents, as they get helpful feedback at compile time already and don't have to run tests to uncover type-related bugs.

A bachelor thesis found some indication that LLMs work better with languages that have low levels of abstraction, a clear syntax, and straigthforward semantics.[^1]

The one thing more important than language characteristics

This doesn't help much with answering the initial question, though. There is still a wide range of statically typed languages that aren't too abstract and convoluted. But there is one more aspect that turns out to be important, and it's not related to language characteristics.

Consider that LLMs don't "understand" programming. They cannot draw logical conclusions. All they do is calculate the most probable answer to a given input, based on their huge knowlege base encoded in the nodes of their neural networks. A fact that quite naturally leads to the following conclusion:

An LLM gets good at writing code in a given langauge when it is exposed to large bodies of code of that language (and hopefully, that's mostly code of good quality). So the more popular a language is, the more code is publicly available, and the better an LLM can generate working code in that language.

What this means for Go

It's one and a half decade since Go 1.0 was released in 2011, and this means a lot of Go code is already out there, ready for LLMs to learn form. But so is code written in languages like C, C++, Java, C#, Python, JavaScript, and Rust.

For me, Go is still a winner in the discipline "most suitable LLM language". It has quite a number of [wonderful advantages](< ref "why-go" >), and some of them are a match in heaven for LLM coding:

A fast compiler

Go's insanely fast compile time is a game changer for agentic workflows that test code repeatedly until the LLM is satisfied with the result. While compile times of other languages pile up to hour-long sessions, similar edit-compile-test loops in Go complete in minutes.

A rich, battle-tested toolchain

The benefit of tool execution increases with the capability of each tool. Go's toolchain is mature, battle-tested, and covers many tasks that other language ecosystems would have to pass on to third-party tools.

Long-term stability

Go has proven to be exceptionally stable over the years. Code written in Go 1.0 still compiles with Go 1.26 with very few exceptions (usually caused by security fixes that sometimes cannot avoid breaking things). LLMs love language stability.

And so much more

There are so many more great features of Go that make Go a superb choice for both humans and LLMs. As long as agentic coding workflows require a human in the loop, the choice of language remains important.

As a software developer, you are responsible for the code you ship, whether you craft it by hand or let an LLM do the task. So until (and if ever) we reach the Final Tipping Point after which humans don't need to look at generated code anymore, you'd better choose a language that is easy to read and easy to review, and generally pleasant to work with.

[^1]: Evaluation of the Code Generation Capabilities of ChatGPT 4 A Comparative Analysis in 19 Programming Languages

Quote of the Week:

The loudest voice in the room is the one in your head

– [Siddhant Khare, Why you stop caring mid-review]()

More articles, videos, talks

ByteLearn — Free Developer Courses

Learn Go by writing a concurrent file scanner in 11 lessons.

The System Monitor | Internals for Interns

Meet the Go scheduler's best friend: sysmon. Living at the edge of infinity (as in: infinite loop), sysmon ensures the scheduler never gets stuck.

Stacked log lines considered harmful | Redowan's Reflections

When your app starts emitting a cacophony of log messages, it's time to rethink the logging strategy. If each layer in a call chain logs their version of the same error, collect the info instead and assemble a single log messager with a better signal-to-noise ratio at the top.

Calling a Rust library from Go with CGO_ENABLED=0 | Stoolap

CGO is Go's standard way of talking to code in other langauges via the C ABI (application binary interface). CGO has some quite unfortunate disadvantages, however. Enough for Semih Alev to search for CGO-free ways to call a database library written in Rust. The way he found (or rather, developed) is not straightforward, but for projects with similar requirements and calling patterns might benefit from his approach.

watgo - a WebAssembly Toolkit for Go

An interesting new kid on the WASM block: watgo parses, validates, and encodes WebAssembly Text, a textual representation of WASM bytecode, into WASM binary format.

Building slogbox

Alex Rios married FlightRecorder's ring buffer with slog, to get a "last-N-logs" in-memory store.

Go Bitwise Flags and Bitmasks: Configuration Pattern Guide • Asaduzzaman Pavel

Bit(wise) flags have a long tradition: In the Unix call open(), they allow enabling desired features like so: O_RDONLY | O_CREAT | O_TRUC. Go's standard library also has bitwise flags. Asaduzzaman Pavel explains what they are and how to use them for your configuration needs.

Projects

Libraries

How I made --dangerously-skip-permissions safe in Claude Code

The optimal habitat of an AI agent is a sandbox. And in April 2026, there are plenty to choose from: Docker sandbox, bubblewrap, microsandbox,...

This one, Hazmat, sticks out: A crucial part of it (setup and rollback ordering) is formally verified with TLA+. (But alas, it's for macOS only. No way to use it on a Linux server.)

Tools and applications

antst/go-apispec: Generate OpenAPI 3.1 specs from Go source code via static analysis — zero annotations, automatic framework detection · GitHub

Another code-first approach to the problem of avoiding double work—for writing an API spec and the corresponding code. Analyzing the AST to eliminate the need for annotations is an interesting approach with a small but important restriction: Anything that happens at runtime, such as dynamic routing or status code calculation, is invisible to static AST traversal.

safedep/pmg: PMG protects developers, AI agents from malicious open source packages using proxy, sandbox and SafeDep's threat intelligence feed. · GitHub

If you're a Gopher, then PMG wasn't made for you. Sorry!

But it's written in Go, at least. And a wonderful case of how Go can help other languages' ecosystems.

Oh, wait, the tool actually works with Go as well, if you distribute your Go binaries via uv.

Completely unrelated to Go

Stamp It! All Programs Must Report Their Version

Version numbers aren't just some pretty decoration or a means for bragging about progress made. Michael Stapelberg could have saved hours if the software he was fixing had proper versioning.

TIL: Dishwashers teach us a lot about versioning.

It's all relative

Even principles are relative.

Tracing what agents do, not what they say

Siddhant Khare worries about the lack of observability in the lower layers of agentic coding systems.

I worry about the huge amount of code AI generates for some companies on a daily basis.

Dynamo: Amazon's highly available key-value store

Findings from reading the Dynamo paper that could drive your architectural decisions for your next distributed Go app... maybe?

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.