#​497 — February 27, 2024

Unsub  |  Web Version

Together with  Ardan Labs

Go Weekly

Robust Generic Functions on Slices — The core library offers some great generic functions for slices, and understanding how each functions (modifies the slice, creates a new slice, etc.) is crucial to avoiding errors, especially with some of the changes in 1.22. Some good further reading is also suggested.

Valentin Deleplace (The Go Blog)

Go 'Enums' Suck — While the title feels click-baity, and Go doesn’t have true enums, the post raises some interesting points around the use cases for enums, how the workarounds are more annoying than they could be, and offers a new approach to make things a little better.

Steven McCutcheon

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

Solving the One Billion Rows Challenge in Go — The so-called One Billion Rows challenge aims to see how fast Java can aggregate (min, mean, and max) 1,000,000,000 values from a text file. Here, Shraddha tries it in Go, walking through each step going from a time of over 6 minutes to just 14 seconds.

Shraddha Agrawal

QUICK BITS:

  • Sameer Ajmani, the engineering director of the Go team at Google, has written about his transition into management as someone who never wanted to be a manager. He's also written about Go's growth between 2012-2016.

  • The latest version of the official Go language server – gopls 0.15.0 – has landed, with support for "zero config" gopls workspaces and improved initial behavior in more complex scenarios. It's the final release that works with Go 1.18, too.

  • Git 2.44 is the first new Git release of 2024 and Taylor Blau takes a look at the enhancements.

TinyGo 0.31.0: Now with Go 1.22 Support — A small step for a version number, a giant leap for small Go-kind, as the “Go compiler for small places” gains Go 1.22 support, a macOS arm64 native binary release build, Nim flake support, and upgrades to LLVM 17.

Ron Evans

▶  A Practical Look at Building REST APIs in Go 1.22 — Building a quick REST API in just several minutes using the new Go 1.22 approach.

TutorialEdge

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

Faster Blogging with Glee: Why a Tool Shifted from Python to GoGlee is a Python Go-based tool for turning Markdown files into posts for Ghost-powered blogs. This post briefly touches on the (rather unsurprising) reasons they rewrote the formerly Python-based tool into Go.

Lince Mathew

🎨 Adding Color to Terminal Output in Go — Shows first without any dependencies at all, but then how fatih/color can make it tidier.

Stephanie You

🛠 Code & Tools

gemini-cli: Access Gemini Models from the Command Line — Eli shows of a new Go-powered CLI tool he’s built for doing data analysis work with Google’s Gemini models.

Eli Bendersky

goquery: jQuery-esque HTML/DOM Manipulation Methods — A jQuery-a-like approach for working with HTML from Go. Much like jQuery itself, it’s been around for many years, but the latest release (v1.9) adds a generic Map function and requires Go 1.18+.

Martin Angers and Contributors

Podinfo: A Go Microservice Template for Kubernetes — A tiny Go-powered app to showcase best practices when running microservices within Kubernetes, including health checks, graceful shutdown, structured logging, ant building multi-arch container images.

Stefan Prodan

📰 Classifieds

🪝 Reliably receive, authenticate, transform, filter, route, & deliver webhooks at scale with Hookdeck. Try the receiving webhooks quickstart.


📧 Forward Email is an email forwarding service able to boast being entirely open source. They use quantum-safe, individually encrypted SQLite mailboxes too.

Risor 1.4: Embeddable Scripting for Go Apps — Risor is a fast, lightweight pure-Go scripting language targeting devops and cloud integration use cases and that interoperates with existing Go libraries (learn more here). v1.4 adds support for the go and defer keywords, channels, HTTP servers, and more.

Curtis Myzie

Mailpit 1.14: Email and SMTP Testing Tool — Built in Go, Mailpit is a general email testing tool and API for all developers. You can use it to view emails “sent” through its mock SMTP server, store emails, and even relay them on. v1.14 introduces an optional POP3 server if you want to fetch the emails into a client.

Ralph Slooten

  • gologin 2.5 – Chainable login http.Handlers for numerous auth providers.

  • NutsDB 1.0.4 – Embeddable, persistent key/value store in pure Go.

  • Excelize 2.8.1 – Library for working with Excel spreadsheets.

  • Sarama 1.43 – Go library for Apache Kafka.

  • zap 1.27 – Fast, structured, leveled logging.

  • Air 1.51 – Live reload for Go apps.