#287 — November 8, 2019

Read on the Web

Golang Weekly

Introducing Pkger: Static File Embedding in Go — There are already a few ways to embed static files into Go binaries (such as Packr or Statik) but when the creator of Packr says he’s ‘rethought’ the problem and has come up with a new solution.. I listen! There’s a 20 minute screencast too, if you want a truly complete tour. GitHub repo.

Mark Bates

Go Modules: v2 and Beyond — The last in a series of posts on the official Go blog about using modules, as introduced in Go 1.11 and made a default feature in Go 1.13. On this outing, the focus is on versions and how to create and publish major new versions of your modules.

Jean de Klerk and Tyler Bui-Palsulich

Future-Proof Your Platform with a Video Stack That Scales — Keep up with new devices and new formats without extra work. Mux handles scaling so you don't have to.

Mux sponsor

Staticcheck in Action — An introduction to the static analysis tool Staticcheck for analyzing and then improving Go code.

Shawn Smith

How Many Go Developers Are There? — Russ has an update to some research he did a couple of years ago, complete with a new estimate: “As of November 2019, my best estimate is between 1.15 and 1.96 million.” To the 2.5% of you who subscribe to this newsletter, thank you! 😄

Russ Cox

Finding a Memory Leak in a Go App with cgo Bindings — Kir’s team had to find and fix a memory leak in a C extension that was being used by their Go app. Here’s how they did it.

Kir Shatrov

TiDB in the Browser: Running a Go-Based Database on WebAssembly — An interesting demo. The author wonders if a database like TiDB written in Go can run in a web browser, what about other complex Go apps? Go’s WebAssembly future is looking quite positive.

Queeny Jin

💻 Jobs

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.


Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring — Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.


Find a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.


📘 Articles & Tutorials

Separate Your Go Tests with Build Tags — ‘Build tags’ are directives that can be placed at the top of Go source files and used as a way to logically separate tests.

Josh Michielsen

Building Sustainable Microservices, Our Opinions and Advice — A ‘semi opinionated guide’ that answers some questions that Echo is often asked internally by new developers who are new to the company, (micro)services, Go or distributed systems in general.

Alex Barlow

Instrumenting Go Code En Masse via AST Manipulation — With a large number of API handlers to instrument, Mattermost took a novel approach of finding and editing them all.

Eli Yukelzon

GopherCon 2019 Spotlight — What were GopherCon attendees excited about? Mattel, GitHub, Microsoft, and others share Go integrations and their work.

Heroku sponsor

Unit Testing exec.Commandexec.Command executed a named program with arguments you supply, but how can you test functions that use it?

Jamie Thompson

Managing CPU Load in Golang — Patterns for handling requests, including worker pools, buffered channels, and offloading to third parties.


Analyzing Go Executables with JEBJEB is a commercial reverse engineering tool and it can be used to analyse Go binaries in various ways, as seen here (where the focus is on analyzing malware written in Go).

Joan Calvet

Realizing That Go Constants Are Always Materialized Into Values

Chris Siebenmann

Instrumenting Your Go Distributed Application for Tracing with Jaeger — If you are building an application from microservices, tracing is paramount to production success.

Carlos Eduardo

🛠 Code & Tools

goque: Persistent Stacks and Queues for Go Backed by LevelDB — Now also supports encoding/decoding objects as JSON which can make storing complex objects easier.

Conner Hewitt

lungoDB: A MongoDB-Compatible Embeddable Database and Toolkit — Imagine something like SQLite but MongoDB flavored. There are numerous possible use cases, well outlined in the README here.

Joël Gähwiler

Go DNS: A Library to Work with DNS from Go — It’s technical and you need to be prepared to dig around a bit but this library supports an incredible amount of DNS related RFCs and features.

Miek Gieben

Speed Up Frontend Development with FaunaDB's Auth and Native GraphQL

FaunaDB sponsor

Stripe CLI: A Command Line Development Environment for Stripe Users — Stripe has become somewhat ubiquitous in the payment processing space and their focus on developers is pretty neat, not least in this new (Go powered!) tool for building and testing integrations.

Tomer Elmalem

sqlhooks: Attach Hooks to Any database/sql Driver — An unobtrusive way to instrument SQL queries. Has just had its first update in almost two years with go mod support added.

Gustavo Chaín

Viper: A Complete Configuration Solution for Go Apps — A mature project used by projects like Hugo, Nanobox and Docker Notary for their configuration needs.

Steve Francia