#​431 — October 7, 2022

Unsubscribe  |  Read on the Web

Together with  Teleport logo

The Go Weekly Newsletter

How Do You Solve a Problem Like for Loop Variables? — Russ Cox began a discussion about what changes could be made to Go to resolve a tripping point around per-iteration vs per-loop binding of variables in loops – an issue first raised five years ago and common enough to be in Go’s FAQ. It's more complicated than you might think and this discussion provides a lot of insight, including from a C# core developer who shares how C# handled the same issue.

Russ Cox

How a Bank Migrated Its Monorepo Seamlessly from Dep to Modules — While modules aren’t exactly new anymore, there are still quite a few large Go projects out there that haven’t made the move. Monzo, a well known ‘challenger’ bank in the UK, took a thoughtful approach that could inspire other graceful migrations away from dep.

Tom Preston (Monzo)

Best Practices for Secure Infrastructure Access — This tech paper by Teleport highlights modern-day infrastructure challenges, introduces 4 recommended best practices, and applies them to the familiar SSH protocol for greater safety. Download now to learn more.

Teleport sponsor

Go 1.19.2 and Go 1.18.7 Released — Minor point releases with three security fixes for archive/tar, net/http, and regexp (“Each regexp being parsed is now limited to a 256 MB memory footprint.”)

Carlos and Dmitri for the Go team

Implementing Map, Reduce, and Filter with Go Generics — John explores writing things that “we couldn’t easily write in Go before generics” by way of applying functional programming ideas to types and collections.

John Arundel

Serving Static Files and Web Apps with Go — It’s common to write a backend API in Go, but the frontend in.. something else. When you want Go to serve up that other content, there are some approaches to consider.

Eli Bendersky

Writing Your Own Postgres Driver — An increasing number of non-Postgres systems are now using Postgres’s wire protocol for interoperability reasons, so why not join the fun and write your own Postgres client? This post digs into the protocol a little and provides guidance, without taking away all the fun.

Konstantin Makarov

▶  How to Automatically Create Architecture Diagrams for Go Microservice ArchitecturesEncore Flow is the service under the hood.

Simon Johansson (Encore)

▶  Memory Layout and Mechanics of Arrays and Slices — A 14 minute video heavy on illustrations and examples.

Sreekanth

▶  Building Go Executables: The cgo / Docker Problem
Miki Tebeka

🛠 Code & Tools

Pion Opus: Pure Go Implementation of OpusOpus is a totally open audio codec that can be used for pretty much anything but is commonly associated with low bitrate, low latency use cases. This post digs into the motivations behind building a pure Go implementation of the codec. (GitHub repo.)

Pion

Real-Time Database Events with pg_eventservpg_eventserv is a new Go-powered server that takes events from Postgres via NOTIFY and then passes those events to waiting WebSocket clients. “Building real-time systems this way allows any database client to alter the state of the system and have that alteration propagated to all other clients in real time.”

Crunchy Data

New Golang API from a Google Ventures-Backed Notifications Infrastructure Service — A need for notification management systems has grown rapidly as software companies realize this critical user experience.

Courier.com sponsor

htmltable: Structured HTML Table Data Extraction — Pass htmltable some HTML or a URL and it’ll try and extract data from HTML tables in a structured way.

Serge Smertin

Tacquito: A TACACS+ Server That Implements RFC8907 — No, I had no idea what ‘TACACS’ meant either! It’s a protocol for performing administrative tasks on routers and similar bits of network infrastructure, and if you need to use it, you’ll probably already know.

Meta Incubator

Twilio Releases an Official 'Go Helper' Library — Twilio is a well known provider of API-driven communications services (e.g. SMS) and their new library, perhaps unsurprisingly, aims to make it as easy as possible to interact with their APIs from Go.

Gareth Paul Jones (Twilio)

Broker-HA: MQTT Broker with Clustering Capabilities — MQTT is a lightweight inter-machine communications standard often associated with IoT applications.

zynzel

Simpex: A Simpler Alternative to Regexp — An interesting idea submitted by a reader that offers a simpler syntax for matching against text.

Tobias Sjösten

Jobs

Golang Engineers — 100% Remote (North/South America & Europe) — We’ve got several opportunities for Go devs (some working directly with Bill Kennedy!) and would love to hear from those looking for new challenges in distributed systems projects.
Ardan Labs

Senior Golang Software Engineer — Seeking Sr Software Engineers to build innovative technology that connects learners with experts in any subject, anytime, anywhere.
Varsity Tutors (Nerdy)

Find a Job Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers.
Hired