#​505 — April 30, 2024

Unsub  |  Web Version

✍️ It's been a quiet week for big Go related news, but we still have a bumper issue because we have so many things we didn't get around to including earlier ;-) Here we go..!
Your editor, Peter Cooper

Together with  Stytch logo

Go Weekly

Sonic: A Newly Open Sourced Low Latency Network and I/O Library — Not to be confused with the eponymous blogging tool or JSON library, this Sonic is an asynchronous network and I/O library for Go, newly open sourced by a company specializing in trading infrastructure. “Sonic is an alternative to the net package. It removes the need to use multiple goroutines to handle multiple connections and reads/writes in the same process.” GitHub repo.


Stytch: Auth0 Alternative for AuthN, AuthZ, Fraud Prevention — Use Stytch for enterprise-grade multi-tenant B2B auth with SSO, RBAC, and SCIM. Use pre-built UIs, go headless, or integrate directly with the API. Plus, Stytch has device fingerprinting built-in to detect bots and prevent abuse. Get started free.

Stytch sponsor

The Two Reasons I Prefer Passing Struct Pointers Around — When passing structs to functions, how do you decide whether or not to use a pointer? Preslav has some solid criteria inspired by the principles of domain-driven design that may give you a new, more maintainable approach.

Preslav Rachev


Go is Not Java — If you're in the mood for a bit of a rant, this might scratch that itch. The post also contends that, per the creator of object orientation, Go may be even more OO than Java or C++.. (a topic David Wickes also wrote about recently).

Jarrod Roberson

Tokens for LLMs: Byte Pair Encoding in Go — Tokens are fundamental to LLMs, so understanding how they’re encoded and decoded can help you better understand how LLMs work too.

Eli Bendersky

📄 Making an LSP Server in Go Ewen Le Bihan

📄 Mastering Maps in Go: Everything You Need to Know Ivan Sharapenkov

📄 Under the Hood of HTTP Request Multiplexing in Go Akshay Kumar

📄 Storing Data in Control Flow Russ Cox

📄 Running Go Code from Elixir with WebAssembly Yasoob Khalid

📺 Optimizing Go Code for the CPU Cache William Moran

🛠 Code & Tools

Konf 1.1: A Flexible Configuration Loader — Load config settings from all sorts of places, from local sources like files and environment variables, to platforms like S3, AWS Parameter Store, AWS AppConfig, and GCP Secret Manager. v1.1 adds support for change notification via AWS SNS, GCP PubSub, and Azure Service Bus.

Kuisong Tong

Gohalt: A General Purpose Throttling Library — You could use this to build throttling pipelines, rate limiters, etc. We’re digging the gopher logo on this one. Now with Go 1.22 support.

Kostiantyn Masliuk

Securing a Golang App with OAuth — This tutorial will show you how to use OAuth to authenticate users in a Golang application. Happy coding!

FusionAuth sponsor

gorush: A Push Notification Server, Built on Gin — Supports APNS (Apple Push Notification Service), Firebase, and HMS Push Server (Huawei).

Bo-Yi Wu

Gotenberg 8.5: Docker-Powered Stateless API for Creating PDF Files — A Go-powered system that offers a developer-friendly API for converting numerous document formats into PDF files. GitHub repo.

Gotenberg Inc.

Awesome Ebitengine: A Curated List of Ebitengine ResourcesEbitengine is a popular, powerful 2D graphics and gamedev API for Go and this list is packed with games written with it, libraries to use with it, and more.

Artem Sedykh

  • quic-go 0.43 – Pure Go QUIC implementation. A small step for a release, but a giant leap for its new documentation site!

  • Redka 0.3 – Redis re-implemented with SQLite. v0.3 says hello to sorted sets.

  • pdfcpu 0.8 – Go PDF processor. PDF 2.0 encryption is now supported.

  • Traefik 3.0 – HTTP reverse proxy and load balancer. One of the biggest Go-based projects.

  • Gum 0.14 – Go-powered shell scripting utilities by Charm.

📰 Classifieds

Check out full line code completion in GoLand: locally-run bundled AI completion. It is a perfect way to get a taste of the AI experience!

🪝 Hookdeck: a serverless queue for your event-driven applications. Learn more.

🎁 And one for luck..

goread 1.6.5: A Terminal-Based RSS/Atom Feed Reader — Built using the Bubble Tea TUI framework. You can drop https://golangweekly.com/rss into it if you want to test it out ;-)

Adam Piaseczny