#320 — July 10, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

Keeping Your Modules Compatible — The latest in a series on Go modules (on the official Go blog) that dives into designing for compatibility - so you can help future developers (including you) use a module with confidence that a new version won’t break compilation.

Jean de Klerk and Jonathan Amsterdam

copyist: Mocking Your SQL Database in Go Tests Has Never Been Easier — Uses a record-playback approach to mocking database calls so that they’ll run a lot faster without needing a database connection.


Monitor Golang Application Uptime & Trace App Requests in Real Time — Trace requests across service boundaries and identify latency and other potential errors with end-to-end application tracing. Then, correlate with related metrics and logs for fast troubleshooting. Track Golang app performance end-to-end with Datadog APM.

Datadog sponsor

Gopherize.me: Create a Unique Go Gopher of Your Own — We linked to this back three years ago, but it’s still pretty neat and may well be for you if you need a new avatar or a graphic for a blog post, etc.

Mat Ryer

Building Versatile Microservices in Go — A ten-post series on creating microservices using gRPC and protocol buffers that covers authentication with JWT, Docker Compose, event brokering, and more. First published in 2017, it’s been updated for 2020 and Go 1.13+.

Ewan Valentine

💻 Jobs

Sr. Software Engineer at CrowdStrike (Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.


Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring — Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.


Find a Job Through Vettery — Use Vettery to connect with growing tech teams at startups and Fortune 500 companies.


📚 Articles & Tutorials

How I Structure Go Packages — Some tips (presented in a neat slide-deck style arrangement) that will give your packages, both in-app and standalone, better names, less dependencies, and longer lives.

Benjamin Cane

Build Maintainable APIs with Goa — A from-scratch tutorial that shows how Goa designs, documents, and enhances (think plugins) your API as it evolves.

Gleidson Nascimento

Profiling a Go HTTP Service with pprof and expvar — A very simple way to add a “debug” server to a production app for those times when you need it.

Rafał Lorenz

▶  Building Go Services with a DDD Approach — A 20-minute talk from GopherCon Israel earlier this year on using Domain Driven Design to build microservices in Go.

Eddy Kiselman

You Are What You Git: How Your VCS Branching Model Affects Performance

CircleCI sponsor

Why Go’s Error Handling is Awesome — Things like this are always partly a matter of taste, but Go’s direct and explicit nature in error management has a lot going for it.

Raul Jordan

A Go Lesson Learned: Sometimes I Don't Want to Use Goroutines If Possible — Another example of goroutines seeming like the right answer, but being proven wrong by execution.

Chris Siebenmann

Go's History in Code — Much of Go’s syntax and features have their origins in languages that came before, such as Newsqueak, Alef, Plan9 C, Limbo. This post runs through examples in each language as a reference.

Sean Hinchee

🛠 Code & Tools

gomacro: An Interactive Go Interpreter and Debugger — Can be used as a typical REPL or as a debugger, alternatively it can bring an Eval() function and scripting capabilities to existing Go code, or even be used to experiment with generics and Lisp-like macros.

Massimiliano Ghilardi

Goka 1.0: A Distributed Stream Processing Library for Apache Kafka — Last week we linked to Trubka, a Go powered CLI tool for managing Kafka – this week Kafka is back and this library will let you build scalable services on top of it instead.


Get Instant Debug Data with eBPF — Pixie saves you time. Get metrics, events, traces & logs without changing code, manual UIs or trucking data off‑cluster.

Pixie sponsor

SFTPGo 1.0: A Full Featured SFTP Server Built in Go1.0.0 has just come out and supports things like multi-step authentication and user certificate authentication.


Bleve: Full-Text Search and Indexing for Go — Index any go data structure (including JSON) and query in multiple ways. You can test it out live on Bleve’s own project site.


GhostDB: A Distributed, In-Memory, General Purpose Key-Value Data Store — It’s early days for this university project-turned-database and it has some similarities to Redis, but it’s written in Go which is neat, naturally.

Jake Grogan

gitqlite: Query Git Repositories with SQL — This is useful if you want to track and display git metrics for your team.