#​538 — January 15, 2025

Unsub  |  Web Version

Together with  Posthog

Go Weekly

An Interactive Tour of Go 1.24 — A list of all the significant new 1.24 features. Each is accompanied by interactive, runnable examples so you can see generic type aliases in action, make (and clean up) weak pointers, play with file access, and see benchmarks for the new faster map implementation. Go 1.24 is expected to land in the next month or two, with RC2 likely later this week.

Anton Zhiyanov

💡 If you've not experienced Anton's Go tours before, you might also enjoy the Go 1.23 interactive tour.

The First Newsletter Dedicated to Product Engineers — The fastest growing startups increasingly rely on product engineers. They can both figure out what to build and actually build it. Product for Engineers is dedicated to sharing the skills and strategies needed to succeed in this role.

PostHog sponsor

if got, want: A Simple Way to Write Better Go Tests“There’s an excellent Go testing pattern that too few people know. I can teach it to you in 30 seconds” is quite the pitch. The trick is using both assignments and a comparison on a single if line to make a test easier to read — it’s even used in the standard library.

Michael Lynch

Gophers Pack: A Collection of Gopher Pictures and Design Elements — If you want some handy Go gopher themed images to use for a project, blog post, or presentation, this myriad of cute CC0 (public domainish) elements could be a big help. We use them a lot in this newsletter and Maria has recently added a variety of winter themed options.

Maria Letta

A Practical Example of Dependency Inversion using Plugins — An example of using Clean Architecture principles with Go’s plugin package to create an app that’s adaptable and extendable without modifying the core source code.

Christian Ekrem

Realizing Why Go Reflection Restricts What Struct Fields Can Be Modified — Private (unexported) fields can’t be modified, even when using reflection. When looking at this through Rust-colored glasses, it makes more sense.

Chris Siebenmann

📄 How HTTP/2 Works and How to Enable It in Go – One of Phuong’s typically thorough explanations. Phuong Le

📄 Designing a Distributed Circuit Breaker for Disabling Webhook Endpoints – If you’re consuming a lot of third-party APIs, this could help keep your queues from clogging. Raymond Tukpe (Core Gateway)

📺 The Creator of Ghostty Talks Zig over Go – Controversial. Mitchell Hashimoto (of HashiCorp fame) has recently built Ghostty, a fast new terminal emulator, in Zig. But why not Go? ThePrimeTime

📺 Implementing a Random Art Generation Algorithm – A thorough walkthrough of a way to generate curious graphical elements. package main

📄 Making 'Beautiful' API Keys – Making auth tokens/keys more attractive probably shouldn’t be a priority, but if you want/need to, uuidkey may be for you. Jack Spirou (AgentStation)

📄 Modifying Private Variables of a Struct with unsafe and reflect – Remember it’s called unsafe for a reason... Darshan N A

📄 Scaling LLMs with Go: How We Serve Millions of LLM Requests John Wang (Assembled)

📄 We Removed 335 LOC with One Go Package – Going from generating a huge number of ffmpeg directives to a cloud-based audio transformation approach. Poxate

📄 How rqlite, a Go-Powered SQLite-Based Database, is Tested Philip O'Toole

🛠 Code & Tools

go-mail v0.6: A Library for Sending Emails — If you’ve got email to send, go-mail can do the job. v0.6 adds support for S/IME signing, SMTP auth auto-discovery, Unix domain socket support, and a ‘quick send’ feature.

Winni Neessen et al.

ebpf-go 0.17: A Way to Work with eBPF from Go — A pure Go library to read, modify and load eBPF programs for use directly by the Linux kernel (eBPF is a neat technology worth exploring if you’re not familiar with it yet). The new 0.17 release requires Go 1.22+ and introduces a new API to work with global variables.

Beckers et al.

go-haystack: Track Personal Devices via Apple's 'Find My' Network — An interesting way to track personal Bluetooth devices via Apple’s massive “Find My” network by way of TinyGo and a little extra hardware.

Ron Evans

  • GoCV 0.40 – The Go bindings for OpenCV 4 add support for OpenCV 4.11.0.

  • pgxmock 4.4 – Mock driver to test Postgres interactions in Go.

  • Cloudflare Go 4.0 – Official library for the Cloudflare API.

  • FrankenPHP 1.4 – Modern Go-powered PHP app server.