#​509 — June 4, 2024

Unsub  |  Web Version

🫣 We took a break last week, but forgot to notify you in advance - sorry! You didn't miss anything, and we're catching up with the past two weeks today :-)
Your editor, Peter Cooper

Together with  Ardan Labs

Go Weekly

Eradicating N+1s: The Two-Phase Data Load and Render Pattern in Go — Brandur demonstrates the N+1 problem by way of a little (and very easy to read) Ruby, before demonstrating how Go is equally susceptible to the issue. There is, however, a pattern you can introduce to nip it in the bud.

Brandur Leach

Don't Name Packages Common Nouns — The potential to collide with simple, everyday words you might want to use as variable names is too great.

Brandur Leach

Go! Unlock Your Tech Potential with Ardan Labs Consulting — Struggling with skill gaps, development speed or complex tech challenges? Ardan Labs specializes in Go, Rust, Docker and K8s to accelerate your software development, optimize architecture, and manage tech debt. Let us supercharge your team!

Ardan Labs Consulting sponsor

A Long-Overdue Problem Coming for Some in Go 1.23 — Go's compiler has special directives to let you do various things including, in the case of go:linkname, accessing unexported variables/functions from other packages. This has never been a guaranteed, safe feature, but changes to its operation in 1.23 could cause issues for more than a few packages.. (If you want to know why a library might not allow access to certain things by default, Chris covers that here.)

Chris Siebenmann

Running Go on Val TownVal Town is an interesting platform for running and composing JavaScript snippets that makes the claim: “If GitHub Gists could run, and AWS Lambda was fun.” Can you run Go on it? Thanks to WebAssembly, yes, but it’s more a fun experiment than a long-term play.

Max McDonnell

Abusing Go's Infrastructure? — Upon discovering that repositories containing zero Go code were in Go’s checksum DB, the author set out to see if arbitrary data could be uploaded to Go’s servers and, if so, whether it’s really a serious issue or not.


[Webinar] Saga Pattern: Compensating Transactions at Will Bank — Hear Will Bank discuss financial transaction challenges and how Temporal's durable execution ensures reliable consistency.

Temporal Technologies sponsor

📄 A Look at Go Alternatives to Makefiles – Taskfile and Mage, specifically. Elton Minetto

📄 Reading Google Sheets from a Go Program Eli Bendersky

📺 My Neovim Configuration for Go Development in 2024 Mario Carrion

📄 Your API Shouldn't Redirect HTTP to HTTPS Joachim Viide

🛠 Code & Tools

gh-dash 4.0: A GitHub CLI Dashboard Extension — A TUI app for displaying a dashboard of pull requests and issues filtered however you like.

Dolev Hadar

oapi-codegen 2.2: Generate Boilerplate from OpenAPI 3 Specs — Convert OpenAPI specifications to Go code for server implementations, clients, or HTTP models. v2.2 now supports Go 1.22 and its new routing enhancements, much of the docs have been rewritten, and the project is focusing on ways to be more sustainable into the future.

DeepMap, Inc

Bob: SQL Query Builder and ORM/Factory Generator — With support for Postgres, MySQL and SQLite. Bob can be progressively adopted from raw SQL query strings, to fully typed queries with models and factories generated for a database.

Stephen Afam-Osemene

📰 Classifieds

Your fastest path to production. With Render, you can build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth.

⛳️ Learn why OpenFeature is the leading standard for feature flags and how to migrate to it from LaunchDarkly in with leaders from eBay and Justworks in our live webinar this Wednesday (06/05/24) at 12 PM EST.

🪝 The Hookdeck CLI - A free and no-account-required alternative to ngrok for asynchronous web development.

Rill: A Go Concurrency Toolkit — A collection of functions for streaming, parallel processing, and pipeline construction – all aiming to abstract things nicely and reduce boilerplate.

Viktor Nikolaiev

Bubble Table: A Table Component for Bubble Tea — A customizable, interactive table component for the always elegant Bubble Tea TUI framework.

Brandon Fulljames

go-datastructures 1.1.5: Numerous Threadsafe Data Structures — There’s a lot packed in here: queues, heaps, trees, sets, tries, skiplists, graphs, and often multiple types of each.


gcss: CSS Written in Pure Go? — The touted benefits include more maintainable CSS and HTML (with no more super long class attributes) along with simpler server-side theming.

Accent Design

⚙︎ Fusion – A lightweight, self-hosted RSS aggregator and reader, with Svelte in the front, Go in the back. Rook1e

⚙︎ HN-Text – A text-first Hacker News client. Edi Piqoni

⚙︎ PastePass – Secure, one-time paste bin for sharing secrets. Vikas Yadav

  • Vugu 0.4 – Experimental way to build Web front-ends in Go using WebAssembly.

  • Go Imagick 3.7 – ImageMagick bindings for Go.

  • pgxmock 4.0 – Mock driver to test database interactions in Go.

  • Permify 0.9 – Google Zanzibar-inspired authorization.

  • TOML 1.4TOML config file parser for Go.