#328 — September 4, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

GORM 2.0 Released: A 'Fantastic ORM' for Go — With version 2, GORM has been rewritten from scratch and boasts improved performance and modularity. It’s a huge upgrade (nested transactions, batch processing, dry runs, context support..) so updating existing GORM code may take a little work, but if you haven’t used it before, it’s well worth checking out. GitHub repo.


An Update on the Proposal for Embedding Files in Go Binaries — While there are plenty of tools for embedding files in Go binaries already, the Go team has been discussing the potential of making it an official feature built into cmd/go itself. Here’s the latest discussion on the topic.

Russ Cox

Remote Instructor-Led Go, Docker, Kubernetes, & Python Training — We offer live-streaming remote training sessions for individual engineers and companies that want to augment their knowledge in Go, Docker, Kubernetes, and Python. We’ve trained over 5,000 engineers via our carefully crafted classes.

Ardan Labs sponsor

Some Examples of Using Generics by the Go Teamgo2go is a translation tool for experimenting with generics in Go and these examples follow the current generics design draft complete with square brackets.

The Go Team

Even in Go, Concurrency Is Still Not Easy (With An Example) — Goroutines and channels are not all there is to concurrency and you can still make mistakes. Chris shows one such example to prove it’s still on the programmer to use the tools properly.

Chris Siebenmann

Go 1.15.1 and 1.14.8 Released — Two releases that fix a recently reported security issue when you don’t explicitly set a Content-Type in an HTTP handler (when using net/http/cgi or net/http/fcgi). More about that issue here or hit the downloads page.

Filippo Valsorda et al.

💻 Jobs

Stream Provides APIs for Building Activity Feeds and Chat — Stream is looking for a full time Backend Software Engineer to join our development team. If you are interested in becoming a part of what we do, apply now.


Golang Developer at X-Team (Remote) — Join the most energizing community for developers and work on projects for Riot Games, FOX, Sony, Coinbase, and more.


Find a Job Through Vettery — Create a profile on Vettery to connect with hiring managers at startups and Fortune 500 companies. It's free for job-seekers.


📘 Tutorials

Hugo Modules: Everything You Need to Know — Hugo, Go’s favorite static site generator, introduced a module system in 0.56.0. This allows you to mount any Hugo project and use some or all of its files.

The New Dynamic

Introducing Clean Architecture by Refactoring a Go Project — Three Dots Labs has a series of posts building a real microservices project in Go. This post starts a refactoring toward Clean Architecture, an idea around defining clear boundaries within a system.

Miłosz Smółka

An Introduction to the Go Client for Elasticsearch — If you’ve got a large amount of data you want to run full text search over, Elasticsearch has probably turned up on your radar. The official Go client now includes features such as retrying requests and discovering cluster nodes and this post digs into how it works.

Karel Minarik

Discovering Alloc Size Classes in Go — Go 1.15 changed the way bytes are allocated for an object, rounding up to the nearest “size class.” Read on to find out what that means.

Josh Bleecher Snyder

Bitmovin Live IBC Edition - Focused on Innovative Ways to Reduce Costs

Bitmovin Inc. sponsor

Turn a Go REST API to GraphQL using Hasura Actions — How to convert an existing REST API to GraphQL by just defining types and configuring endpoints.

Gavin Ray

🛠 Code & Tools

Echelon: Hierarchical Progress Bars in Terminal on Overdrive — A cross-platform library (yes, even on Windows) to organize progress bars in a hierarchical structure and that can be used from multiple goroutines.

Cirrus Labs

Apache Pulsar Go Client LibraryApache Pulsar is a distributed messaging and streaming platform originally built at Yahoo, and it now has a pure-Go client library.

The Apache Software Foundation

Get Instant Insights into Golang App Performance with Distributed Tracing — Trace requests across service boundaries and optimize bottlenecks by drilling into individual traces end-to-end with flame graphs.

Datadog APM sponsor

gomplate: A Flexible CLI Tool for Template Rendering — A template renderer that supports a growing list of sources, such as: JSON, YAML, AWS EC2 metadata, BoltDB, Hashicorp Consul and Hashicorp Vault secrets. Worth looking at the examples here.

Dave Henderson

gookit/color: Terminal Color Rendering Tool Library — No dependencies. Supports rich color output at 16-color, 256-color, or even true color (24-bit, RGB) levels.


db: A Productive Data Access Layer for Different Data Sources — db is ORM-‘like’ and provides an agnostic way to work with numerous databases like Postgres, SQLite, MySQL, MongoDB, and SQL Server. There’s a neat online tour stepping through how it works too.


pgzip 1.2.5: Parallel gzip Compression and Decompression — A drop in replacement for compress/gzip with added parallelism.

Klaus Post

Go Stripe: The Official Library for the Stripe API — For when you’re using Stripe for your billing. v72 is out now – they certainly like their releases at Stripe :-)


Zap 1.16: Fast, Structured, Leveled Logging in Go


httpx 1.0: A Multi-Purpose HTTP Toolkit for Probing Servers — A command line tool, written in Go, for running numerous HTTP ‘probers’ at the same time using the retryablehttp library under the hood.

Project Discovery

🎲 Fun and Side Projects

▶  A Music Video Coded with Go — It’s all text-based but a neat experiment all the same. Here’s the source code.