#302 — March 6, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

I Want Off Mr. Golang's Wild Ride — Well, not everyone loves Go. This is a very detailed.. rant that goes beyond generics and takes issue with the idea that Go is simple. Worth a read, as things like this can help us flesh out our own opinions and figure out just why we do love Go.

Amos Wenger

A New Go API for Protocol Buffers — Reflecting (ha!) on some of the things missing from version 1, v2 has a reflection API and a new import path. It’s a breaking change, but there is a version of 1 that is backed by 2 so you can upgrade gradually.

Tsai, Neil, and Ong

Do You Need Go, Docker or Kubernetes Training? — We offer on-site corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

ArdanLabs sponsor

Is Go Duck-Typed? — I hate to be a spoiler here, but the answer is “kinda.” Maybe we should call Go’s version “Gopher Typing”. The analysis is worth the read, though.


How to Find Goroutines During Debugging — If you have a ton of goroutines, you can use new features in GoLand or delve to add custom labels to them, making them easy to find in a debugging session.

Florin Pățan

💻 Jobs

Software Engineer / Founding Teammate (Remote OK) — A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents.


Golang Developer at X-Team (Remote) — Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers.


Find a Dev Job Through Vettery — Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.


📘 Articles & Tutorials

How to Use Git History to Identify Pain Points in a Project? — The basic idea is that files that change often tend to be the ones where most issues occur.

Preslav Rachev

Track Latency and More in Go Apps to Quickly Optimize Performance — Trace requests across service boundaries end-to-end to identify bottlenecks and other potential errors. Try Datadog APM.

Datadog sponsor

Building a Terminal Dashboard in 300 Lines of Go — This uses runtime.MemStats to create a colorful, live dashboard and shows (again) how amazing Go can be with just a bit of code.

Che Dan

What Versions of Go Support Which OpenBSD Releases — The audience for this is tiny but such obscure knowledge may be useful, especially if you’re an OpenBSD user! And if you are, you may also appreciate Chris’s post on the situation with Go on OpenBSD.

Chris Siebenmann

Implementing Raft: Part 3 - Persistence and Optimizations — The third in a series of posts describing the implementation of the Raft consensus algorithm in Go.

Eli Bendersky

Interacting with a GraphQL API from Go — Learn the basics of consuming data from a GraphQL API using Go and simple HTTP requests.

Nic Raboy

Interning Strings in Go — Interning strings is a method of storing each unique string and reusing it instead of making new copies, which may sound desirable but could actually hurt performance.

Josh Bleecher Snyder

🛠 Code & Tools

dque: A Fast, Embedded, Durable Queue — The just-released version 2.2 includes a blocking dequeue method to wait until something is added to a queue.

Jon Carlson

goxygen: Generate a Go and MongoDB-Backed JS Project in Seconds — We only first linked this opinionated full stack app generator a few weeks ago, but since then it’s had a 0.2 version that extends its support from React to Angular and Vue.js too.

Sasha Shpota

Genji: A Document-Oriented, Embedded SQL Database — Works with Bolt, Badger and memory and also with database/sql.

Asdine El Hrychy

The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

⚠️ Monkey: Arbitrary Monkey Patching in Go — Billed as a fun experiment, this rewrites executables at runtime and inserts jumps to redirect where things go. This is very unsafe, do not use it for anything beyond fun 😂 Even the project’s license says “Don’t use it.”

Bouke van der Bijl

Gonum 0.7: Numeric Libraries for Go — Covers matrices, statistics, optimization, etc. We first linked this two years ago but it continues to get updates.

Gonum Team

goukv: An Abstraction Layer for Key-Value Stores — Currently supports BadgerDB and GolevelDB.

Mohammed Al Ashaal

go-imap 1.0.4: An IMAP4 Library for Clients and Servers

Simon Ser