#​451 — March 10, 2023

Unsub  |  Web Version

Together with  Ardan Labs

The Go Weekly Newsletter

Why Turborepo is Migrating From Go to RustTurborepo is a high performance JavaScript build system built upon Go but.. perhaps not for much longer. Why? It mostly seems subjective, but you might find their arguments interesting.

Vercel Engineering Team

Code Coverage for Go Integration Tests — While Go has had coverage support at the package test level for almost ten years, coverage for integration tests run outside of the go test mechanism has been non-existent. With Go 1.20, it’s possible to instrument a binary and generate coverage files for both the module code and dependent packages.

Than Macintosh

Go! Experts at Your Service — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.

Ardan Labs Consulting sponsor

A Journey to High-Perf JSON Parsing in Go — A distributed SQL database needs to maximize data parsing, so CockroachDB’s (very successful) story about doing so is worth the read. The answer came from a somewhat unexpected place and benefits anyone looking to speed up JSON parsing.

Yevgeniy Miretskiy (CockroachDB)

Getting Started with Multi-Module Workspaces — Potentially overlooked in Go 1.18 because they weren’t generics, workspaces let you tell the Go command you’re writing code in multiple modules at the same time and easily build and run code in those modules.

Official Go Docs

IN BRIEF:

Things to Consider When Going with sqlcsqlc (the SQL to type-safe code generator) is a handy time and boilerplate saver, but isn’t a one-size-fits-all solution.

Preslav Rachev

Terraforming Kubernetes (Free Course) — Lead by Udemy instructor, Justin Mitchel, this course shows you how to spin up a K8s cluster using Terraform.

Akamai Connected Cloud sponsor

errors.Join Loves defer? — In Go 1.20, you can join errors so that original errors aren’t overridden. William looks at how nicely this meshes with the use case of handling close errors in a defer.

William Wennerström

How Not to Use context.WithValue
Vishnu Bharathi

Higher-Order Functions in Go
Eli Bendersky

🛠 Code & Tools

ngrok-go: Ingress to Your Go Apps as a net.Listenerngrok is a long standing tool (and, increasingly, commercial service) for opening up a locally hosted service to the public Internet and now there’s an idiomatically Go way to embed ngrok-style ingress into apps.

Alan Shreve (ngrok)

Valgo: An Expressive Validator Library — Type-safe and extensible validator library that supports localization and is built upon generics. “Valgo differs from other validation libraries in that the rules are written in functions and not in struct tags. This allows greater flexibility and freedom when it comes to where and how data is validated.”

Cohesive Stack

Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut

Shortcut (formerly Clubhouse.io) sponsor

Gool: A Generic Goroutine Pool — If you’re familiar with Python’s ThreadPoolExecutor, you might like this as it provides sync and async versions of Submit and Map to run tasks.

Tommy Tian

go-ssaviz: SSA Visualization with Graphviz — You won’t need this unless you’re doing some really low level work, but this tool lets you see Go’s internal use of static single-assignment in your Go package of choice.

Shengyu Zhang

Convolutional Encoder and Viterbi Decoder for Go — If you need this, you’ll know. The author explains the error-correcting nature of such encoders and decoders in this comment.

8FF

Jobs

Site Reliability Engineer — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers.
Sticker Mule

Find a Job Through Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
Hired

🧑‍💻 Got a job listing to share? Here's how.