#​447 — February 10, 2023

Unsub  |  Web Version

Together with  Retool logo

The Go Weekly Newsletter

An Introduction to Go's Profile-Guided Optimization — What if the Go compiler could improve how it compiles software based upon real-world profiling? Profile-Guided Optimization (PGO) feeds runtime profiles to the compiler to optimize the binary based on usage. Go 1.20 includes initial support for this, so try this with your apps and (hopefully) see some perf gains.

Michael Pratt

Transparent Telemetry for Open Source Projects — It's an emotive topic, but Russ puts forth a concept of ‘transparent telemetry’, a privacy-sensitive approach to gathering usage data in the Go toolchain to help Go library devs, the core team, and others. There’s a lot to unpack and there's a a GitHub discussion where you can have your own say (as things stand it has 144 👍 and 449 👎…)

Russ Cox

Russ also has a use cases post which might help win you over or at least realize there are things that surveys alone cannot capture. He makes a compelling case.

The Fast Way for Developers to Build Mobile Apps — Build native iOS and Android apps with no mobile expertise—all you need is JS and SQL. Retool Mobile is the fast way for developers to build business apps for teams on the go, at a warehouse, or in the field. Teams of up to 5 can build for free.

Retool sponsor

Building Conc: Better Structured Concurrency for Go — A month ago we featured Conc, a new set of abstractions for working with concurrency in Go, and now its author gives the full backstory and explains where it fits in.

Camden Cheek

Slidedeck: Five Steps to Make Your Go Code Faster and More Efficient — From FOSDEM 2023, the author of Efficient Go walks through the steps you can start using in your code today. It’s much easier than you might expect. Bonus: New acronyms abound here.

Bartłomiej Płotka


Fast and Dynamic Encoding of Protocol BuffersProtocol Buffers (a.k.a. protobuf) provide one common language-neutral way to serialize data structures. This post looks at the fastest way to create them dynamically in Go without proto files.

Vincent Bernat

Working at the Bit Level in Go — A lot of developers will never need to work at the bit level, but this is very useful stuff to at least know about.

Daniel Lemire

User or *User - Do We Need Struct Pointers Everywhere? — The answer, as you might’ve guessed, is “no.” But, it’s also more nuanced due to the lifetime of a struct, its usage, and other aspects that boil this down to general guidelines and case-by-case analysis.

Preslav Rachev

Top Trending Content: Terraforming Kubernetes (Free 75‑Minute Course) — Lead by Udemy instructor, Justin Mitchel, this course shows you how to spin up a K8s cluster on Linode using Terraform.

Linode sponsor

▶  The History of Building Webapps, And Is 'htmx' The Way to Go?htmx is a modern, lightweight JavaScript library for making modern dynamic page features that’s particularly popular with folks outside the JS ecosystem.

Go Time Podcast podcast

Testing Generated HTML with goquery
Brian St. Pierre

🛠 Code & Tools

Plumber 2.0: A 'Swiss Army Knife' CLI Tool for Messaging Systems — Event streaming and pub/sub systems, more particularly, including Kafka, RabbitMQ, Google Cloud Platform PubSub, MQTT, Kinesis Streams, SQS, SNS, NATS, and more.


Goption: Optional Values for Go — An implementation of a generic optional type that supports common encoders/decoders, SQL, and stdlib string formatting.

Jordan Bonecutter

Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut — The best issue tracking software is one that software developers are actually happy to use.

Shortcut (formerly Clubhouse.io) sponsor


Software Engineer C++ — 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.

🔠 Go's not just a language..

It's also a typeface! You may or may not recall that back in 2016, the Go team announced the release of the Go fonts, available in both proportional and monospace variants.

If you want to give them a Go for yourself, they're located alongside Go's image libraries and you can get them like so:

git clone https://go.googlesource.com/image

The TTF files are then located at: image/font/gofont/ttfs