Buil[d|t] To Learn • The Applied Go Weekly Newsletter 2025-11-09

Your weekly source of Go news, tips, and projects

Buil[d|t] To Learn
Hi ,
Sometimes, building a project is the best way to learn a particular topic. As a close second, inspect projects built by others to learn from them. This is not that difficult as it sounds, especially if a developer wrote about their project to help others learn from it, as in two of the featured articles.
Enjoy!
–Christoph
Featured articles
Implementing MQTT 5 in Go: A Deep Dive into Client Design — Part I | by MrTib | Nov, 2025 | Medium
You want to learn about the MQTT protocol and know Go? Start here! This is the first article of a series about implementing an MQTT 5.0 client.
Let's Write a JSON Parser From Scratch - by Sushant Dhiman
Writing a parser?! Not so difficult if you pick an easy language to parse (JSON) and write a recursive-descent parser for it. This kind of parser is intuitive to write and easy to reason about. Especially after reading this article.
Go 1.25.4 and 1.24.10 have been released
New minor Go releases are available for Go 1.25 and 1.24. Fixes for both major versions include fixes to the encoding/pem and net/url packages. Go 1.25.4 also includes fixes to the compiler, the runtime, and the crypto/subtle and os packages.
Podcast corner
Cup o' Go | Can Claude Code fix your subtle bugs? 🐞
If Claude is the name of the best developer in your team, the answer is a clear "yes". But what if it's Claude the stochastical parrot?
More articles, videos, talks
Plasma Effect Tutorial - Go with Ebiten
Graphical animations aren't quite a core domain of Go, but with a little help of Ebitengine, you can use your favorite language to create some cool effects!
Chris's Wiki :: blog/programming/GoExplicitMemoryFreeing
Will Go get manual memory management? Well, probably not, but the runtime may get some empowerment to free memory without asking the garbage collector.
What Is sync.Pool in Go & How to Use It Properly - YouTube
Proper resource handling in concurrent applications is crucial. Resource pools can help to avoid unnecessary efforts for creating and disposing of resources, as well as regulating access to limited resources. Time to look under the hood of sync.Pool().
Projects
Libraries
GitHub - PabloVarg/contextlogger: Context Logger for Golang
In the previous issue, you could learn how to implement a context logger. Here's the lazy route: a ready-to use context logger library.#### GitHub - MatProGo-dev/MatProInterface.go: A common interface used for modeling Mathematical Programs (e.g., Convex Optimization problems) in the language Go (Golang).
This library provides a common interface to optimization problem solvers (currently supported solvers: simplex and Gurobi.
Why not use a solver directly?
Author: "When you know the form of your optimization problem and the solver that is best for it, then it makes sense to directly integrate a single solver and commit to its formalisms!
"This is more of a tool in the optimization design/prototyping phase of development (similar to how MathOptInterface.jl is a tool in the design/prototyping phase for Julia). You use this when you're trying a bunch of different solvers and/or problem formulations for a given "task". Once you're satisfied with a problem formulation + solver combination for your task, then you can fully commit to one specific solver and set the sparsity pattern in stone."
GitHub - mmonterroca/docxgo: Complete rewrite of go-docx: Production-grade Word document creation with domain-driven architecture, full OOXML compliance, and comprehensive error handling.
Half an update, but also kind of new: go-docx 2.0 can now read and modify Word docs (rather than just create them). #### GitHub - dlecorfec/progjpeg: Go JPEG package with progressive encoding
Progressive JPEG images can be decompressed in a progressive manner (hence the name) so that clients can display a blurry version of the image while the rest of the image still downloads over a slow connection.
An interesting side story: The library was half-ready about six years ago, but the author was stuck on a few bugs until Claude came to the rescue.
Tools and applications
GitHub - ankur-anand/unisondb: A log-native database that replicates like a message bus — purpose-built for distributed, edge-scale systems.
For SQLite, the write-ahead log (WAL) is a recovery mechanism. For UnisonDB, it's the single source of truth, so that the database can trivially double as a message bus to form a net of replicated databases, "all without external message buses, CDC pipelines, or sync drift", as the readme points out.
Completely unrelated to Go
Coding on Paper - by Tivadar Danka - The Palindrome
When the only available tool is your brain...
