#262 — May 16, 2019

Read on the Web

Golang Weekly

A Series on Garbage Collection in Go — Want to understand more about the mechanics behind Go’s garbage collection system? Go trainer extraordinaire William Kennedy dives in with this series.

William Kennedy

The Go Playground Has Just Gotten A Lot Better — The Go Playground has long been a neat online sandbox for playing with Go related ideas and this week it has taken two huge steps forward:

Both of these features will significantly extend the use cases for the playground in showing off Go techniques. (If you have any good ones of your own, let us know.)

The Go Playground

How to Test Software: Mocking, Stubbing, and Contract Testing — We’ll cover the techniques of mocking and stubbing, and test-driven development to help each testing layer. First, let’s review the test pyramid. This helps illustrate the difference between different kinds of tests and when it’s advantageous to do them.

CircleCI sponsor

Introducing GopenPGP: An OpenPGP-Based Encryption Library for Native Apps and Go — Developed by ProtonMail and built on a fork of the Go crypto package. Project homepage.

GopenPGP

Quicktest: Wrapping *testing.T for Fun and ProfitQuicktest is a set of new lightweight Go testing helpers that add extra sugar such as assertions, pretty printing and deferred execution to tests.

Savoury Morsels

A Peek at Better Go Error Handling with xerrorsxerrors implements functions to manipulate errors and is to be largely included in Go 1.13’s errors package, so get a taste of the future today.

Luke Freeman

💻 Jobs

Product-Focused & Driven Frontend Engineers in Stockholm — Join our 30-person team of A-players, solve problems at global scale & help us become the most trustworthy online health company.

Diet Doctor Sweden AB

Find a Go Job on Vettery — Vettery specializes in tech roles and is completely free for job seekers.

Vettery

📘 Articles & Tutorials

Notes on Converting a Repository to Use Modules — An incremental approach that covers a couple of special cases, like dependencies with local changes and keeping the vendor directory around.

Mark Fletcher

Using Postgres's JSONB Columns with Go — And if you like Postgres, we have a Postgres newsletter too! :-)

Alex Edwards

▶  Discussing Go for Beginners — Yes, this is definitely an episode for beginners who want to learn how to learn Go, so pass it on (and get them to subscribe to Golang Weekly too!)

Go Time Podcast

Do You Need Help Building and Migrating in an Application to Go?

Ardan Labs sponsor

Emulating an OpenMP Parallel For-Loop with GoroutinesOpenMP is a popular API for shared memory multiprocessing (predominantly in C and C++), something goroutines are also suited to enable.

Tim Downey

Encrypting Streams in Go — If you have large files that require encryption, the main option is using stream ciphers, which you can do with the standard library.

Michael Turner

Why Bother Writing Tests At All? — Not super Go specific, but solid advice on why writing tests is critical to successful product development because, after all, someone will be testing your software and it might not be someone with good intentions.

Dave Cheney

🔧 Tools & Code

panicparse: A Panic Stack Trace Parser and Debugging Tool“Crash your app in style”(!) This tool has just been updated to using Go modules and gives you more compact and readable output than a standard stack dump.

M-A

kcp-go: A Production-Grade Reliable-UDP Library for Go — It’s UDP, but not as you know it as this library adds resilient, ordered and error-checked delivery on top. Aimed at use cases like gaming and streaming.

Daniel Fu

gqlgen: A go generate-Based GraphQL Server Library — Check out the getting started guide for a feel for the project.

99designs

Get the Resources Your Go Apps Need Without the Billing Surprises — Deploy your next Go project on the most developer-friendly cloud platform with flat pricing across all global regions.

DigitalOcean sponsor

Godo: A DigitalOcean Go API Client — A client library for accessing the DigitalOcean V2 API.

DigitalOcean

uiprogress: Render Progress Bars in Terminal Appsprogressbar is a similar library worth considering too.

Greg Osuri

dicom: A High Performance DICOM Medical Image Parser — This is a a very specialized med-tech usage of Go, but if you’ve had an MRI, say, done (I have!) and they gave you a disc with the data on it, this could be of interest. Or if you're building medical software, of course.. 😉

Suyash Kumar