Original post

Go Gazette

Weekly curated blogs and tools for Angular pros.

By Justin Fuller

10 minutes –
In my last post Go Things I Love: Methods On Any Type, I demonstrated a feature of Go 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:

Tutorials

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 programming 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:

Presentations

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 me and my own project:

I’m Maarten, a software architect and back-end engineer from The Netherlands. Currently I’m building Jexia, a cloud hub providing front-end devs with a serverless back-end. In pure Go!
Product Examples Pricing