#​487 — December 5, 2023

Unsub  |  Web Version

Together with  Fusion Auth

Go Weekly

errtrace: An Alternative to Stack Traces for Your Errors — Inspired by Zig, errtrace is an experimental package to trace an error’s return path through a Go program, i.e. the code path that the error took to get to the user, which may well be different to the code path that led to an error. Luckily, the repo has a comparison, if you’re confused.


▶  Russ Cox on Open Source Supply Chain Security at Google — Last week, Go’s Russ Cox gave a remote keynote to ACM’s software supply chain conference. It’s not exclusively about Go but it naturally forms the basis for many of Russ’s examples. (45 minutes.)

Russ Cox

Add Fully-Featured Auth to Your Go App with Two Lines of Code — Easy, secure, and affordable: pick three. FusionAuth is auth built for devs, by devs.

FusionAuth sponsor

Optimizing Go String Operations with Practical Examples — It’s Advent of Code time again, so string wrangling becomes of utmost importance: “I’m going to show you how I took a very simple program and made it run almost 5 times faster, with very minimal adjustments.”

Alex Bledea

Turning a Go App into a 'Static' WASM-Powered Site — The author built a tool in Go to convert CRDs (custom resources in Kubernetes) into YAML and wanted to offer the tool online. Compiling it all into a WebAssembly powered app that can be hosted in a static fashion, while offering dynamic features (that aren't reliant upon a server), wasn’t easy, but it works.

Gergely Brautigam


Ebitengine's 2023 Retrospective — Ebitengine (formerly Ebiten) is a popular 2D game engine for Go that lets you build experiences across numerous platforms, including mobile and the Nintendo Switch. This post celebrates the project’s tenth anniversary with a month by month roundup of what happened with the project this year, as well as shares videos of some of the Ebitengine-powered games that were released.

Hajime Hoshi

Why Are Go Heaps So Complicated — Why an experienced Gopher finds the standard lib (container/heap) heap confusing and how the community came up with various, more straightforward heap implementations (one, of course, based on generics.) Note: There’s also a long standing proposal to add a slice-backed heap to container/heap.

Max Hoffman (DoltHub)

▶  Replace Kafka, RabbitMQ, Redis and More with NATS JetStream? — A straightforward introduction to NATS JetStream (a subsystem of the NATS distributed app messaging system) and how to create a publisher and consumer application in Go with its new client API.

Jeremy Saenz

Enhanced Workflow Control and Observability with Temporal Schedules — Now available: Temporal Schedules provide a more reliable and scalable solution where traditional Cron jobs fall short.

Temporal Technologies sponsor

Visualizing Map Data with Go and Leaflet — A way to parse and plot a GPX file (a format used and exported by apps like Strava) onto a Web-based map.

Miki Tebeka (Ardan Labs)

🛠 Code & Tools

Sloc, Cloc and Code (scc) 3.2: A Fast, Accurate 'Code Counter' — For multiple languages, it can count lines of code and estimate code complexity.

Ben Boyter

golang-set: Simple, Well-Tested and Generic Set Type — A generic set collection for Go: “Until Go has sets built-in…use this.”

Ralph Caraveo

Gabs: Parse, Create and Edit 'Unknown' or Dynamic JSON in Go — A wrapper for navigating hierarchies of map[string]interface{} objects provided by encoding/json.

Ashley Jeffs

📰 Classifieds

💻 Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.

💻 At Bosch, you always keep growing. Upskill yourself into countless new roles, positions and opportunities. Learn more.

Goiabada: An Authentication and Authorization Server — A new user management system that implements the OAuth2 and OpenID Connect protocols.

Leonardo D'Ippolito

Gorse: A Universal Open Source Recommender System — Gorse uses ML to provide a RESTful API of recommendations based on the data you feed it. It includes a dashboard and API docs.