#295 — January 17, 2020

Read on the Web

Golang Weekly

Porting the Go Pigo Face Detection Library to WebAssemblyPigo is a neat face detection library we’ve linked to a few times now, but wouldn’t it be great to use directly in the browser too? Here’s what was involved.

Endre Simo

Plumbing At Scale: Event Sourcing and Stream Processing Pipelines at Grab — Grab is a Singapore-based food ordering app and this post digs into their journey building and deploying an event sourcing platform with Go for servicing 300 billion events each week.

Karan Kamath (Grab)

Start 2020 Strong. Ultimate Go Training: Charlotte, NC - January 27-29, 2020 — Take advantage of the early bird pricing and attend Bill Kennedy's Ultimate Go Training in Charlotte, North Carolina in January 2020. If you have a team of 5 or more engineers request a group discount here.

Ardan Labs sponsor

How We Optimized Our DNS Server using Go Tools — It’s written in an idiosyncratic way but there’s a lot to enjoy here.

Arash Cordi

Stream Is Deprecating Virtual Go (vg): It’s Time to Move to Go Modulesvg was a project providing ‘workplace based’ development for Go to avoid problems with dependencies clashing between multiple projects.. but Go modules now solve that problem.

Tommaso B (Stream)

💻 Jobs

Sr. Software Engineer at CrowdStrike (Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.


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 is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.


📘 Articles & Tutorials

Exposing Interfaces — Writing good interfaces can be tricky, but there are some guidelines you can follow which this article outlines with examples.

Efe Karakus

▶  How GitLab Scaled Git Access with Go — A 25 minute talk on the story behind how GitLab switched from a Ruby on Rails app to using feature flags, protocol buffers, gRPC and Go.

Oswaldo Ferreira

PubSub Using Channels in Go — As with most things, there are multiple possible approaches here. Eli covers several and chooses his favorite.

Eli Bendersky

Go Things I Love: Channels and Goroutines — A quick look at a few concurrency patterns.

Justin Fuller

▶  Go at Heroku — Take a peek into how Heroku uses Go for its services, and how they teach through style guides and pairing sessions.

Heroku sponsorpodcast

The 'await/async' Concurrency Pattern in Go — Another look at concurrency from the perspective of replicating the await/async type approach you might have used in something like Node.js.

Matteo Madeddu

How Go's net.DialContext() Stops Things When The Context Is Cancelled

Chris Siebenmann

🛠 Code & Tools

BLAKE3: A Pure Go Implementation of the BLAKE3 Cryptographic Hash Function — BLAKE3 is a Merkle-tree based cryptographic hash function (originally implemented in Rust) that’s fast, secure, and highly parallelizable. And in case you’re wondering why you’d want a faster hash, here are some ideas.

Luke Champine

sqlmw: Wrap a database/sql Driver with Middleware — Provides an abstraction similar to HTTP middleware or gRPC interceptors but for database/sql so you can do logging and tracing more easily.

Alan Shreve

Avo: Better x86 Assembly Generation from Go — Avo makes assembly easier to write by using Go control structures and virtual registers, with values handled for you. The basic adding two numbers example shows off how it works in a simple way.

Michael McLoughlin

GoJSONQ: A Package to Query JSON Data — Provide a fluent chainable API to query JSON documents.

Saddam H

asciigraph: Make Lightweight ASCII Line Graphs — We’ve linked this a few times over the years, but I still love the output from this package and it continues to get updates from time to time.

Rohit Gupta

Aini: Go Library for Parsing Ansible Inventory Files


Fault Tolerant Job Scheduling System for Cloud Native Environments

dkron.io sponsor

ok-zoomer: Turn Portraits Into Zooming Animated GIFs — Finds a face in an image using Pigo then zooms in and out of that face and turns the result into an animated GIF. Got it? 😂

Justin Birmingham

zero-width: Zero-Width Character Detection and Removal — Things like zero width spaces in strings can cause all sorts of headaches.

Nikola Trubitsyn