Original post

Fellow engineer, I wish you a happy 2020! As you see, I start this year with a new newsletter design, sent with different and more native tooling. Maybe you will see some small tweaks here and there the coming weeks, but the content formula will always stay the same: the latest and finest blogs and tools out there. Enjoy!

By Justin Fuller

10 minutes –
In my last post Go Things I Love: Methods On Any Type, I demonstrated a feature of that makes it easy to build Object-Oriented software. Now I will demonstrate a few neat concurrency patterns in Go.

Exposing interfaces in Go

By Efe Karakus

5 minutes –
Interfaces are my favorite feature in Go. An interface type represents a set of methods. Unlike most other languages, you don’t have to explicitly declare that a type implements an interface.

PubSub using channels in Go

By Eli Bendersky

7 minutes –
Presenting a brief overview of some design decisions that arise when implementing PubSub for a Go application.

By Vincent Blanchon

4 minutes –
Goroutines are easy to create, have a small stack, and a fast context switch. However, a program that spawns many short living goroutines will spend quite some time creating and destroying them.

Go concurrency & scheduler affinity

By Vincent Blanchon

6 minutes –
Switching a goroutine from an OS thread to another one has a cost and can slow down the application if it occurs too often. However, through time, the Go scheduler has addressed this issue.

The await/async concurrency pattern in Go

By Matteo Madeddu

10 minutes –
We focus on parallelism and concurrency and how you can achieve the same behavioral pattern you can achieve with Node.js using await/async statements.

More fundamentals:


Real-world reports

Plumbing at scale

By Karan Kamath (Grab.com)

8 minutes –
Detailing Grab’s journey building and deploying an event sourcing platform in Go, building a stream processing framework over it, and then scaling it (reliably and efficiently) to service over 300 billion events a week.

Multiplexing channels in Go

By Tiago Katcipis

10 minutes –
Write simpler concurrent algorithms for fun and profit.

Continuous profiling in Go with Profefe

By Gianluca Arbezzano

3 minutes –
Taking a snapshot at the right time is nearly impossible. A very easy way to fix this issue is to have a continuous profiling infrastructure that gives you enough confidence of having a profile at the time you need it.

By Jesse Li

18 minutes –
What is the complete path between visiting the Pirate Bay and sublimating an mp3 file from thin air? We’ll implement enough of the BitTorrent protocol to download Debian.

A concurrency pattern tour via our new scheduler

By Andrew Cholakian (Elastic.co)

7 minutes –
Heartbeat, the agent behind the Elastic Uptime app, will get a new scheduler as part of our upcoming Elastic Stack 7.6.0 release.

Porting Pigo face detection library to Webassembly

By Endre Simo

7 minutes –
Porting Pigo to Webassembly (WASM) was the next step in the library evolution. I will give a detailed description of the code behind and I will explain the challenges I faced during the implementation.

More real-world reports:



Sorting maps in Go
By Austin Gebauer

3 minutes –
I’ll present a problem and show examples of how to solve it by sorting the contents of a Go map by keys and/or values.

Functional pipe in Go
By Ali AslRousta

7 minutes –
Introducing a practical approach for implementing the function composition in Go using pipe and reflection.

Making resilient Go net/http servers
By Ilija Eftimov

12 minutes –
Using timeouts, deadlines and context cancellation.

Building a GraphQL server in Go: Part 1
By Filip Wojciechowski

23 minutes –
We will use gqlgen and sqlc to build a working GraphQL server backed by a PostgreSQL database, and capable of performing basic CRUD operations.

How to start logging in Go projects – Part 2
By Anatoliy Fedorenko

4 minutes –
This is mostly about controlling your logs and I wanted to show how to use logs (of level Error or higher) to take quick actions in case something bad happens.

More tutorials:


Go tools

Why GoatCounter ignores ‘do not track’
By Martin Tournoij

5 minutes –
GoatCounter doesn’t support the Do-Not-Track (DNT) header, and that’s a feature.

Age: ncryption tool with small explicit keys

A simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.

Web crawler for discovery of endpoints and assets

Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application.

More tools:


By Drew Devault

3 minutes –
Let’s say you ask your language to do the simplest possible task: print out “hello world”. Most languages do a whole lot of other crap other than printing out “hello world”, even if that’s all you asked for.

My response to “Hello world

By Caleb Doxsey

16 minutes –
Drew DeVault shows a “Hello World” program in several languages, how long those programs take to execute, how large of a binary they produce and how many syscalls they execute. “Hello World” is a rather strange program to optimize, but since that was what was tested in the original blog post, we’ll run with it.

Following up on “Hello world”

By Drew Devault

7 minutes –
‘Hello world’ has been easily the most negatively received article I’ve written — a remarkable feat for someone who’s written as much flame bait as me. Naturally, the fault lies with the readers.

By Victor Fernandez

6 minutes –
An exploit is “the vehicle used to breach a system.” I will demonstrate the benefit of using deliberate exploit development techniques, with Go.

More perspectives:



How Gitlab scaled Git access with Go

By Oswaldo Ferreira

27 minutes –
Oswaldo Ferreira discusses the history of how GitLab switched from a Rails monolith to using Feature flags, Protocol Buffers, gRPC and Go. And what it gained from it.
About the Go Gazette:
The Go Gazette is a mailing with the latest and finest blogs and tools for Golang pros. I’m your curator Maarten, currently building Jexia, a cloud platform providing devs with a serverless back-end.
Product Examples Pricing