#383 — October 15, 2021
Go Weekly
Proposal: Don't Add Generics to Go's Core Libraries in 1.18 — Rob is suggesting that new versions of the core libraries be placed in the experimental namespace so folks can test them before core gets ‘genericized’. The idea is that while we get generics in 1.18, we can take more time to figure out how the core libraries will use them.
Rob Pike
"How to use these ideas in the standard library requires great thought and planning. Putting them in the library now also adds a significant burden to rolling out the release. I propose that we do not update the libraries in 1.18."
___
Rob Pike
'Hey Linker, Can You Spare a Meg?' — Tailscale, a mesh VPN service, has its core code written in Go, but on iOS their network extension is limited to a mere 15MB of memory. Ensuring they stayed within this limit involved the Tailscale engineers digging deep into Go’s runtime, garbage collector, and more, ultimately resulting in improvements for all Go users coming to Go 1.18.
Josh Bleecher Snyder (Tailscale)
Cloud Engineering Summit Speakers Announced — Join the summit on October 20th to hear from keynote speakers Kelsey Hightower and Emily Freeman, plus more than 40 other cloud engineering leaders and practitioners from companies like AWS, Google, Microsoft, Snowflake, Docker, Netflix, and more.
Pulumi sponsor
GoReleaser Can Now Create macOS Universal Binaries — GoReleaser is a popular tool for cross-compiling and releasing Go projects. Universal binaries are necessary on macOS now due to supporting both amd64 and arm64 architectures with Apple’s new chip releases (i.e. the M1).
GoReleaser
Safer Enums in Go — For those of us that give more than an iota about enums, this post is a nice exploration of ways to make them better (integers bad, strings good) but certainly not perfect.
Miłosz Smółka
Where Go and GraphQL Collide: Behind The Curtain with genqlient — How the authors of genqlient (a GraphQL client) handled some of the thornier problems around code generation, JSON, interfaces, and more.
Ben Kraft (Khan Academy)
▶ Go in 100 Seconds — There’s nothing in this video you don’t already know, but you can store it away as a quick intro for potential Gophers.
Fireship
Jobs
Senior Software Engineer, Platform | Remote within US Timezones | Full-Time — Build the platform our teams use to ship innovative telehealth and workflow tools for over 1.8 million clinicians.
Doximity
Senior Golang Engineer (Cloud, Microservices, REST APIs) (Romania Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.
Crowdstrike
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
🛠 Code & Tools
Bubble Tea: A Powerful Elm-Inspired TUI Framework — Based on the Elm architecture, this is aimed at interactive terminal apps.
Charm
GoPlus (Go+): A More Scripty Variant of Go — It’s not going to win any awards for having a good, non-confusing name, but the overall idea of having a Go compatible language that leans more towards Python-style simplicity for scripting and data science use cases is interesting nonetheless.
GoPlus
OpenTelemetry and Observability: Achieving Full System Visibility
Lightstep sponsor
Decimal: Arbitrary-Precision Fixed-Point Decimal Numbers — We love that the library laments that it can only represent decimal numbers with up to 2 billion digits after the decimal point :-) Why not just use float64, you ask? They’ve answered that, and more.
Spring Engineering
Kratos 2.1: A Go Framework for Microservices — A "microservice-oriented governance framework" built around gRPC.
Kratos
truthy: Truthy Condition Testing with Go Generics — While this is "a little bit of a joke package", it’s still something we should start to see once 1.18 is out.
Carl Johnson
🕰 ICYMI (Some older stuff that's worth checking out...)
- This step-by-step tutorial shows us how to implement domain-driven design (DDD) in Go.
- Tyler Bui-Palsulich shows us how to go about finding and fixing memory leaks in Go.
- Here's a look at how to use structured JSON logging in Go apps — a first step to making your logs more searchable.
- Sam Lewis built a VPN tool in Go to figure out just how mesh VPNs work.