#​506 — May 7, 2024

Unsub  |  Web Version

Together with  Ardan Labs

Go Weekly

Evolving the Go Standard Library with math/rand/v2 — Generating random numbers takes much more than you might think. Go’s initial RNG has multiple flaws, but fixing it breaks repeatability requirements. So, the core team created a “version 2” package that keeps Go’s compatibility promise and sets forth principles for future such 'version 2' packages generally.

Russ Cox (The Go Team)

Secure Randomness in Go 1.22 — If you’re interested in how randomness has improved in Go recently, this is for you, as the authors dive more into the security requirements of some use cases, how Go was enabling insecure code, and how doing the ChaCha(Rand8) led to not only better, faster, more secure random number generation but also how “Go 1.22 makes your programs more secure without any code changes.”

Russ Cox and Filippo Valsorda (The Go Team)

Go! Experts at Your Service — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.

Ardan Labs Consulting sponsor

Borgo: A New Language That Compiles to Go — People on Hacker News got very excited about this! Borgo’s authors aim to create a language “more expressive than Go but less complex than Rust.” The result is more type safety and it's certainly worth a look.

Marco Sampellegrini

QUICK BITS:

Using Structs for Generic Argument Lists — The example compares running a new algorithm vs an old one, and comparing the results to ensure they have the same answer. Think of it as feature flags for testing refactorings, and how using structs + generics cleans the code up.

Evan Moses

An Applied Introduction to EBPF with Go — We’ve linked to stories about eBPF a few times, and this article goes through the basics and two examples of using eBPF to measure resources, such as tracking packets.

Ozan Sazak (Edge Delta)

📄 Building a Highly-Available Search Engine using SQLite – Thanks to the Go-powered rqlite. Philip O'Toole

📄 Constraining Go Type Parameter Pointers Merovius

📄 The Foundations of a Go Web Application Willem Schots

🛠 Code & Tools

Nimble Terminal Charts: Charting for Bubble Tea — Provides a way to render bar, line, scatter, time series, and other charts with Bubble Tea. Lots of examples here.

Neomantra Corp

v8go: Execute JavaScript from Go via V8 — If this feels familiar, it’s a fork of this main v8go project, but adding support for Android, newer versions of V8, JS symbols, and more.

Tommie and Chapman

The Hookdeck Event Gateway — A serverless queue to reliably send, receive, transform, filter, and route events across your event-driven architecture.

Hookdeck sponsor

mactop: A Terminal Based Monitoring Tool for Apple Silicon — A Mac-specific htop-a-like that shows off real-time CPU and GPU usage, along with metrics about power and memory usage.

Carsen Klock

Logdy: A Web-Based Viewer for Logs — Web based real-time log viewer. Stream any content to a web UI with autogenerated filters, then parse any format with TypeScript. Live demo.

Peter Osinski

GoWrap: CLI Tool for Generating Decorators for Interfaces — Provides a variety of templates to easily add metrics, tracing, fallbacks, pools, and other features into your existing code.

Max Chechel

📰 Classifieds

🐷 Developers for web and mobile applications using Go prefer Porkbun for domains. Get a .dev, .app, or .foo domain for just $5 from Porkbun now.


Frontend Masters has branched out into the Go world with Build Go Apps That Scale on AWS, a new Go course focused on getting Go apps running on Amazon's platform.

  • gocron 2.5 – Run Go functions at pre-determined intervals.

  • blake3 1.3 – AVX-512 accelerated BLAKE3 hash implementation.

  • HaxMap 1.4 – Fast, memory efficient concurrent hashmap.

  • fzf 0.51 – Popular command-line fuzzy finder.

  • GoBGP 3.26 – BGP implementation in Go.

  • Gin 1.10 – Popular HTTP web framework.