Understanding reading all available things from a Go channel (with a timeout)
https://utcc.utoronto.ca/~cks/space/blog/programming/GoReadAllFromChannelWithTimeout
https://utcc.utoronto.ca/~cks/space/blog/programming/GoReadAllFromChannelWithTimeout
statsviz
https://github.com/arl/statsviz
Visualize real time plots of your Go program runtime metrics, including heap, objects, goroutines, GC pauses, scheduler and more, in your browser.
https://github.com/arl/statsviz
treeview
https://github.com/Digital-Shane/treeview
TreeView is a feature-rich Go library for displaying and navigating tree structures in the terminal. TreeView has full Bubble Tea and Lipgloss support, allowing you to build glamorous, interactive terminal applications.
https://github.com/Digital-Shane/treeview
dwarfreflect
https://github.com/matteo-grella/dwarfreflect
Enhanced reflection for Go using DWARF debug information to extract function parameter names, enabling automatic struct generation and semantic function calls.
https://github.com/matteo-grella/dwarfreflect
cors
https://github.com/jub0bs/cors
A principled CORS middleware library for Go, designed to be both easier to use and harder to misuse than existing alternatives.
https://github.com/jub0bs/cors
stormy
https://github.com/ashish0kumar/stormy
Minimal, customizable, and neofetch-like weather CLI inspired by rainy, written in Go
https://github.com/ashish0kumar/stormy
How We Migrated the Parse API From Ruby to Golang (Resurrected)
https://charity.wtf/2025/07/24/how-we-migrated-the-parse-api-from-ruby-to-golang-resurrected
https://charity.wtf/2025/07/24/how-we-migrated-the-parse-api-from-ruby-to-golang-resurrected
Announcing GoReleaser v2.12
https://carlosbecker.com/posts/goreleaser-v2.12
- Docker v2: simpler, multi-arch ready via buildx (alpha)
- Image Attestation: digest files for verifying Docker builds
- Makeself: self-extracting installer support
- Go 1.25: updated Go compatibility
- Version Sorting: smarter semantic tag handling
- New Features & Fixes: bun targets, templating, retry logic, SBOM, various bug fixes and enhancements
https://carlosbecker.com/posts/goreleaser-v2.12
The 9 Go test assertions I use (and why)
https://www.alexedwards.net/blog/the-9-go-test-assertions-i-use
A few weeks ago Anton Zhiyanov published the blog post Expressive tests without testify/assert. It's a good and well thought-out post, and I recommend giving it a read if you haven't already. In the post, Anton makes the argument for not using packages like testify/assert for your test assertions, and instead creating your own minimal set of assertion helpers to use in your tests. In fact, so minimal that there are only 3 helpers he uses: AssertEqual, AssertErr and AssertTrue.
https://www.alexedwards.net/blog/the-9-go-test-assertions-i-use
How Go Schedules Millions of Goroutines: A Deep Dive into GMP
https://medium.com/@Realblank/how-go-schedules-millions-of-goroutines-a-deep-dive-into-gmp-0f05c71204bc
Imagine a bustling airport with a limited number of runways (CPU cores). Thousands of flights (goroutines) need to take off and land efficiently. How do you prevent chaos and ensure no flight is stuck on the tarmac forever? Go’s answer to this air traffic control problem is its ingenious GMP scheduler. It’s the silent maestro conducting the orchestra of your concurrent code. In this article, we’ll move from the control tower view down to the runway tarmac, exploring how Goroutines (G), OS threads (M), and Processors (P) collaborate to keep your application’s traffic flowing smoothly, even during peak load.
Go’s concurrency story is powered by a user space scheduler built around three entities: G, M, and P. Understanding how the scheduler maps millions of goroutines onto a limited number of OS threads helps you write services that scale, diagnose latency spikes, and avoid resource pitfalls.
https://medium.com/@Realblank/how-go-schedules-millions-of-goroutines-a-deep-dive-into-gmp-0f05c71204bc
Default Methods in Go
https://mcyoung.xyz/2025/08/25/go-default-methods
Go’s interfaces are very funny. Rather than being explicitly implemented, like in Java or Rust, they are simply a collection of methods (a “method set”) that the concrete type must happen to have. This is called structural typing, which is the opposite of nominal typing.
Go interfaces are very cute, but this conceptual simplicity leads to a lot of implementation problems (a theme with Go, honestly). It removes a lot of intentionality from implementing interfaces, and there is no canonical way to document that A satisfies1 B, nor can you avoid conforming to interfaces, especially if one forces a particular method on you.
It also has very quirky results for the language runtime. To cast an interface value to another interface type (via the type assertion syntax a.(B)), the runtime essentially has to use reflection to go through the method set of the concrete type of a. I go into detail on how this is implemented here.
Because of their structural nature, this also means that you can’t add new methods to an interface without breaking existing code, because there is no way to attach default implementations to interface methods. This results in very silly APIs because someone screwed up an interface.
https://mcyoung.xyz/2025/08/25/go-default-methods
surf
https://github.com/enetx/surf
Surf is a powerful, feature-rich HTTP client library for Go that makes working with HTTP requests intuitive and enjoyable. With advanced features like browser impersonation, JA3/JA4 fingerprinting, and comprehensive middleware support, Surf provides everything you need for modern web interactions.
https://github.com/enetx/surf
goqueue
https://github.com/saravanasai/goqueue
GoQueue is a flexible background job processing library for Go applications, designed to handle workloads of any scale with multiple backend options.
https://github.com/saravanasai/goqueue
gonzo
https://github.com/control-theory/gonzo
A powerful, real-time log analysis terminal UI inspired by k9s. Analyze log streams with beautiful charts, AI-powered insights, and advanced filtering - all from your terminal.
https://github.com/control-theory/gonzo
Go is still not good
https://blog.habets.se/2025/07/Go-is-still-not-good.html
Previous posts Why Go is not my favourite language and Go programs are not portable have me critiquing Go for over a decade.
These things about Go are bugging me more and more. Mostly because they’re so unnecessary. The world knew better, and yet Go was created the way it was.
For readers of previous posts you’ll find some things repeated here. Sorry about that.
https://blog.habets.se/2025/07/Go-is-still-not-good.html
tview
https://github.com/rivo/tview
This Go package provides commonly used components for terminal based user interfaces.
https://github.com/rivo/tview