#487 — December 5, 2023
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.
Braces
▶ 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
QUICK BITS:
-
📘 Learn Concurrent Programming with Go is a new book written by James Cutajar and published by Manning – the print version is available from the publisher now, with e-book versions and broader distribution in January.
-
🌉 The New Stack reports OpenTelemetry's contributors are developing a bridge for Go.
-
💣 Miss wiling away the hours on Windows 98 with the included games? There's now a terminal-based implementation of Minesweeper game in Go.
-
🎤 The Go Time podcast ▶️ covered event-driven systems and architecture.
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.
zhenghaoz
-
go-i18n 2.3 – Translate programs into multiple (natural) languages.
-
GopherLua 1.1.1 – Go-powered Lua VM and compiler.
-
go-github 57.0 – Client library for the GitHub v3 API.
-
Task 3.32 – Task runner / Make alternative in Go.
-
Garble 0.11 – Obfuscation for Go builds.