---
title: "The hills are alive with the sound of gophers"
publication: "Go Weekly"
issue: 431
published_at: "2022-10-07"
canonical_url: "https://golangweekly.com/issues/431"
---

Plus Go 1.19.2, a modules migration, and a pure Go Opus codec implementation. |        

#​431 — October 7, 2022 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/431)  

Together with [![Teleport logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_280,h_60/e_make_transparent/co_white,e_outline:5/vr8quyt0q3vtxkpueewu.png)](https://goteleport.com/resources/white-papers/secure-infrastructure-access/?utm_campaign=eg&utm_medium=partner&utm_source=golang)  

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gcrzqt2rbi4pyfbsb7yg.jpg)](https://github.com/golang/go/discussions/56010)  

[How Do You Solve a Problem Like `for` Loop Variables?](https://github.com/golang/go/discussions/56010) — 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](https://github.com/golang/go/issues/20733) and common enough to [be in Go’s FAQ](https://go.dev/doc/faq#closures_and_goroutines). 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](https://monzo.com/blog/2022/09/29/migrating-our-monorepo-seamlessly-from-dep-to-go-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)   [![\](https://copm.s3.amazonaws.com/45a3accb.jpeg)](https://goteleport.com/resources/white-papers/secure-infrastructure-access/?utm_campaign=eg&utm_medium=partner&utm_source=golang) 

[Best Practices for Secure Infrastructure Access](https://goteleport.com/resources/white-papers/secure-infrastructure-access/?utm_campaign=eg&utm_medium=partner&utm_source=golang) — 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](https://goteleport.com/resources/white-papers/secure-infrastructure-access/?utm_campaign=eg&utm_medium=partner&utm_source=golang) to learn more. 

Teleport sponsor   

[Go 1.19.2 and Go 1.18.7 Released](https://groups.google.com/g/golang-announce/c/xtuG5faxtaU) — 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](https://bitfieldconsulting.com/golang/functional) — 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](https://eli.thegreenplace.net/2022/serving-static-files-and-web-apps-in-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](https://medium.com/scum-gazeta/writing-your-own-postgresql-driver-ebd5fd6d187d) — 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 Architectures](https://www.youtube.com/watch?v=6lOLx26S0MU) — [Encore Flow](https://encore.dev/docs/develop/encore-flow) is the service under the hood. 

Simon Johansson (Encore)   

▶[Memory Layout and Mechanics of Arrays and Slices](https://www.youtube.com/watch?v=RVTfPy_NELc) — A 14 minute video heavy on illustrations and examples. 

Sreekanth   

▶[Building Go Executables: The cgo / Docker Problem](https://www.youtube.com/watch?v=SLD1X12PywI) 
Miki Tebeka  

🛠 Code & Tools  

[Pion Opus: Pure Go Implementation of Opus](https://pion.ly/blog/pion-opus/) — [Opus](https://opus-codec.org/) 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.](https://github.com/pion/opus)) 

Pion   

[Real-Time Database Events with `pg_eventserv`](https://www.crunchydata.com/blog/real-time-database-events-with-pg_eventserv) — [pg_eventserv](https://github.com/crunchydata/pg_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](https://www.courier.com/docs/guides/getting-started/go/?utm_campaign=demand-gen&utm_source=email&utm_medium=go-newsletter-sponsored-10-7&utm_content=guide-goland-getting-started) — 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](https://github.com/nfx/go-htmltable) — 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](https://github.com/facebookincubator/tacquito) — No, I had no idea what [‘TACACS’](https://datatracker.ietf.org/doc/rfc8907/) 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](https://www.twilio.com/blog/introducing-twilio-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](https://github.com/bkupidura/broker-ha) — MQTT is a lightweight inter-machine communications standard often associated with IoT applications. 

zynzel   

[Simpex: A Simpler Alternative to Regexp](https://github.com/tobiassjosten/go-simpex) — An interesting idea submitted by a reader that offers a simpler syntax for matching against text. 

Tobias Sjösten   

- [Telebot 3.1](https://github.com/tucnak/telebot)
 ↳ Telegram bot framework.
- [Lattigo 4.0](https://github.com/tuneinsight/lattigo)
 ↳ Lattice-based homomorphic encryption.     

Jobs  

[Golang Engineers — 100% Remote (North/South America & Europe)](https://www.ardanlabs.com/careers/mid-level-and-senior-backend-engineer.html) — 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](https://grnh.se/b4c9fad51us) — 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](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired           

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*) or[Stop getting the newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
