Join The Go Gazette


| The Go Gazette - weekly newsletter for Golang engineers.

 

The Go Gazette

The Go Gazette

Weekly resources for Golang pros. Carefully curated by Maarten from Jexia.



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