Together with  Frontend Masters logo

#​526 — October 8, 2024

Unsub  |  Web Version

Go Weekly

Reflecting on Go Reflection — Truly a reflective opinion piece, and probably a divisive one too. As a programmer who chooses to use “the most mundane features” of any language, Go’s reflect package wasn’t on Neil’s list of things to try, but he “fell into the reflection pool” and.. he’s still not a fan.

Neil Macneale

I'm Glad I Did It in Go — Thorsten, author of Writing an Interpreter in Go, reflects on how Go was the right language for the book, eight years on.

Thorsten Ball

Elevate Your Backend Skills — Whether it's Python, Go, TypeScript, or AWS, you can gain fundamental knowledge across multiple programming languages, expanding your skillset via our growing range of learning paths and expert-led video courses.

Frontend Masters sponsor

sync.Map: The Right Tool for the Right Job — The latest in Phuong’s popular, illustrated guide to concurrency options in Go digs into sync.Map, a concurrency-safe map for reading and writing across multiple goroutines without requiring explicit locks. It’s not always the perfect choice, though, as he discovers.

Phuong Le

IN BRIEF:

Go Gets High-Resolution Timers on Windows“The Go Windows port added support for high-resolution timers in Go 1.23, boosting resolution from ~15.6ms to ~0.5ms.”

Quim Muntal (Microsoft)

Writing a Circuit Breaker in Go — When you need a mechanism to stop a failing operation being tried over and over, a circuit breaker provides a graceful way to detect failures and recover from them with a cooldown period.

Redowan Delowar

Using Go Embed — The go:embed directive, around since Go 1.16, allows you to embed static files into your binary.

Matt Boyle

Distributed Transactions in Go: Read Before You Try — How to approach transactions that need to span more than one service.

Miłosz Smółka

Product for Engineers: A Newsletter Helping Flex Your Product Muscle — Product for Engineers details the skills and strategies product engineers need to succeed.

PostHog sponsor

📄 Implementing OpenSSL-Backed Go Cryptographic Algorithms Derek Parker (Red Hat)

📄 Some Notes on Upgrading HugoHugo is a popular Go-based static site generator. Julia Evans

📄 Securing gRPC Services with JWT Authentication in Go Chris Shepherd

🛠 Code & Tools

Kamal 2: Thou Need Not PaaSKamal is a container-based deployment tool from 37Signals, best known for their work on Ruby on Rails. It’s language agnostic though, and ▶️ the screencast demo shows off deploying a simple Go app quickly, before moving on to a Ruby example. Certainly a viable new deployment option for Go apps on self-managed servers.

David Heinemeier Hansson

Sidekick: Bare Metal to Production Ready in Minutes — I haven’t tried this yet, but am itching to do so ASAP. Sidekick aims to give you a Fly.io-style single command deployment process out of the box for any VPS you have to hand. Inspired by Kamal (above) but is written in Go.

Mahmoud Mousa

📰 Classifieds

Hookdeck: Stripe-level DX for all your webhooks.


Learn how to build fine-grained authorization for your Go application using open-source software, directly from the founders and team behind SpiceDB.

go-pretty: Pretty Print Tables, Lists and Text on the Terminal — Utilities to prettify console output of tables, lists, progress-bars, text, etc. with a heavy emphasis on customization.

Naveen Mahalingam

Giu 0.9: A Dear ImGui-Based Cross Platform GUI Framework — Create GUI apps in Go on top of the Dear ImGui GUI library. v0.9 isn’t a big release but fleshes out the framework’s features and adds more documentation.

Allen Dang

Watermill: Library for Building Event-Driven Apps — A library for working with message streams (over numerous channels like Kafka, RabbitMQ, HTTP or even MySQL binlogs) to build event driven apps.

Three Dots Labs

xmlquery: An XPath Library for Querying XML Documents — For plucking out all elements with certain names or attributes, say.

antchfx

  • tk 9.0 – CGo-free cross platform GUI toolkit for Go, a la Tkinter.

  • River 0.13 – Fast and reliable Postgres-powered background jobs for Go.

  • OSV-Scanner 1.9 – Dependency vulnerability scanner.

  • go-github 66.0 – Client library for the GitHub v3 API.

  • Git Town 16.4 – Git branch management tool.

  • Ebiten 2.8.1 – Go's simple 2D game engine.