The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
February 8, 2026

What Came First: The Token or The Egg? • The Applied Go Weekly Newsletter 2026-02-08

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

2026-02-08-what-came-first-the-token-or-the-egg.png

What Came First: The Token or The Egg?

Hi ,

Imagine you write a specification, you pass it as input to a MACHINE, and the MACHINE spits out working code! I'm not talking about LLMs, agents, and vibe coding. The MACHINE I'm talking about is a parser generator. Parsing is an essential step in virtually every compiler (and exceptions only confirm the rule, you know). But compilers are just one context where parsers shine. Here are some ideas what you can do with a parser:

  • Build a compiler or interpreter (of course) for a general or domain-specific language
  • Write a syntax highlighter, a code formatter or a pretty printer
  • Parse structured data formats and convert between data formats (Pandoc, anyone?)
  • Sanitize input (based on grammars)
  • Perform static code analysis
  • Create refactoring tools and code migration tools
  • Develop template engines
  • And whatnot.

Have you played with a parser generator yet? If not, the first two featured articles might be for you: They introduce an easy-to-use parser generator that takes a familiar grammar notation (you already know a very similar one from the Go spec!) and generates (surprise, surprise) a parser from it.

What's your next parser project?

–Christoph

Featured articles

Building a High-Performance JSON Parser in Go with Egg

Write an EBNF for your next dream language and generate a fast, "dependency-light" parser. So far, so nice, but the unusual part of this parser is that the abstract syntax tree (AST) is technically no tree at all, but a plain, flat slice of integers.

Taming the Flat AST: Ergonomics in the Age of Zero Allocations

The sequel to "Building a High-Performance JSON Parser in Go with Egg". Read that one first!

Go 1.25.7, 1.24.13 and 1.26rc3

Two new minor Go versions and one new release candidate are available. Read the minor releases announcement here and the RC3 announcement here.

Podcast corner

Cup o' Go | Your ID is absolutely unique. Just like everyone else's. — Plus Jakub Ciolek talks fuzzing and bug bounties

...and the Cup o' Go podcast is absolutely unique, unlike everone else's.

This episode's guest is Jakub Ciolek, software engineer and security researcher. He submitted about 40 patches for the Go toolchain and a number of CVEs for various software projects. In this episode, he talks about how he started fuzz-testing Helm out of boredom, found 10 vulnerabilities in the Go standard library, and got ghosted by HackerOne after having submitted two CVEs that got accepted and implemented.

A key insight of this episode (worth mulling over): Many vulnerabilities exist simply because no one takes the time to look for them.

go podcast() | 071: February projects updates

Dominic and his new co-host Morten talk about their current open source projects and how to help such projects gain traction, especially in 2026.

Quote of the Week: Design by Contract and Assertions

It may be no exaggeration that the study of formal methods has produced more PhD's in Computer Science than it has well-specified software systems.

– Bertrand Meyer (maybe)

I'm not sure about the true authorship of this quote. The Subversion history lists admin as the first contributor to the file containing the quote, so it could be anyone from the team at eiffel.org. Having read the book "Object-Oriented Software Construction" cover to cover, though, I somehow feel that this could well have been written by Bertrand Meyer himself. Corrections welcome.

More articles, videos, talks

Type safe frontend APIs | Oblique

If you want type safety in the frontend, TypeScript is the way to go. But this wouldn't cover type safety for talking to the backend. You'd need to build a type-safe API and protocol, too. That's why the authors built a solution based on three separate components: Protobuf as the single source of truth, Connect for browser-compatible RPC, and TypeScript to integrate the types with the frontend.

Building an eBPF Transparent Proxy - jnfrati

If you want to put a proxy between a network client and a server, the client would have to actively direct its traffic through the proxy. A transparent proxy circumvents this requirement. Here is how to build one with eBPF and Go.

How I Set Up Free Go Vanity URLs with Cloudflare Workers

It's quite easy to set up a vanity URL when you host a website (I did this with my package appliedgo.net/what), but if you want to go without self-hosting a web server, here is how to do it with Cloudflare workers.

Trying manual memory management in Go - YouTube

Alex Pliutau leaves the realm of convenient garbage collection to try manual memory management in Go, with a little help from the jemalloc library.

Go Interface Segregation Redux - Go Meetup in Berlin

Based on his article about interface segregation and the discussion that evolved around it, Redowan Delowar gave a talk at the Go Meetup Berlin on this topic.

PS2 + N64 Online Super Mario 64 Co-op (Real Hardware) - YouTube

The "Co-op" in the title refers to a cooperation between Rust and Go. Carl Llewellyn built two Nintendo game cartridges with a Raspberry Pico inside that interacts with the game logic. Each Pico connects via USB to a Go-powered server that relays controller inputs and positional data between the console and a remote Rust server that manages the Websocket connections between the two consoles.

Let's Implement Consistent Hashing From Scratch in Golang

Consistent hashing, step by step.

Projects

Libraries

Drift - Cross-platform mobile UI framework for Go

A new option for writing mobile apps in Go. It's currently in alpha state, but the author asserts that it "compiles more often than it crashes."

GitHub - danyjacob45/go-concurrency-exercises: A comprehensive set of exercises to master Go concurrency nuances and patterns

How to become better at concurrency? Exercise!

GitHub - josuebrunel/ezauth: Simple and easy to use authentication library for Golang

Setting up and using authentication can be daunting; the usual frameworks comprise many moving parts that want to be managed. ezauth occupies the opposite end—fewer features but much easier to integrate into apps.

Beta phase.

GitHub - sahandsafizadeh/qeep: Deep Learning framework in Go with Tensors, AutoGrad, and GPU acceleration

When a new AI library is released these days, it's typcially something around LLM use. Qeep goes one, two levels deeper: down to where networks are comoposed. If you think "PyTorch", you're on the right track.

Tools and applications

GitHub - H0lyDiv3r/croaqui

A music player for Linux based on MPV, with a UI build with Wails.

GitHub - mickamy/pointless: A Go linter that suggests using value types instead of pointers for small structs.

A pointless linter? Not at all. pointless helps to find and eliminate cases where small structs are needlessly passed around via pointers.

GitHub - rapidaai/voice-ai: Rapida is an open-source, end-to-end voice AI orchestration platform for building real-time conversational voice agents with audio streaming, STT, TTS, VAD, multi-channel integration, agent state management, and observability.

The authors built this "streaming-focused" AI speech processing framework after they discovered that virtually all exsiting solutions are limited by a "string-focused" philosophy that doesn't support streaming very well.

GitHub - n9te9/go-graphql-federation-gateway: federation-gateway is GraphQL Federation Gateway based on n9te9/goliteql.

The goal of this project is to have an alternative to NodeJS-based gateways that can be deployed as a single, self-contained binary.

Completely unrelated to Go

(Un)portable defer in C

Deferring cleanup code is a feature worth having. But adding a defer keyword to an old but still popular language like C turns out to be tricky. Anton Zhiyanov explored the field of defer solutions for C and found that there is no single defer library that works with all compilers uniformly.

A Broken Heart - Allen Pike

When an LLM is part of the cause of and the solution to a problem. (via)

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.