#304 — March 20, 2020

Unsubscribe  :  Read on the Web

✍️ We live in curious and unprecedented times and we hope you're doing okay. We're planning to keep publishing the Go newsletter in the normal way but you may notice the odd change here and there (such as a focus on code and tools, this week) – please hang in there with us 🙂

If you have anything to share that would help the community, virtual events, etc. hit reply and let us know and we'll try to share what we can :-)
— Peter C, your humble editor.

Golang Weekly

Illustrated Tales of the Go Runtime Scheduler — This might help if you really want to get a grip on how Go’s scheduler works and keep all those goroutines in check.

Ankur Anand

Building and Testing a REST API with Gorilla Mux and Postgres — A thorough walkthrough of how to build a simple and well-tested REST API backed by a Postgres database using Gorilla/Mux, a popular request router.

Kulshekhar Kabra

Get the Most Out of Redis — Seamless scaling, memory usage maps, key size tracking, and more.

RedisGreen sponsor

GopherCon 2020 Update: Postponed, But Not Gone — If you were looking forward to going to GopherCon 2020 (taking place in Disney World in June) you’ll need to wait a little longer as it’s going to be rescheduled. Details to follow, but existing tickets remain valid.

Brian Ketelsen and Erik St. Martin

Maintaining Consistency in Codebases with go vet — A demonstration of extending go vet with your own checks.

Jesús Espino

How to Use Netlify to Deploy a Free Go Web App — This is principally about leaning on Netlify’s AWS Lambda powered serverless functions service.

Carl M. Johnson

💻 Jobs

Software Engineer / Founding Teammate (Remote OK) — A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents.


Find a Dev Job Through Vettery — Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.


🛠 Code & Tools

slack-term: A Slack Client for Your Terminal — If you’re starting to use Slack more while working from home but don’t want to look uncool with the Web or desktop clients.. how about a Go powered text-based client instead? 😄

JP Bruins Slot

ntp: A Simple NTP Client Package for Go — For querying your Network Time Protocol server of choice for the current time. On a related tangent, Facebook recently wrote an interesting post about how they’ve implemented an accurate NTP service of their own.

Brett Vickers

Faster CI/CD for All Your Software Projects Using Buildkite — See how Shopify scaled from 300 to 1500 engineers while keeping their build times under 5 minutes.

Buildkite sponsor

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

Klaus Post

go-app-paths: Retrieve Platform-Specific Paths — For example, cache directories or log paths. Works on Unix, macOS, and Windows.

Christian Muehlhaeuser

go-immutable-radix 1.2: An Immutable Radix Tree Implementation


LaTTe: Generate PDFs using LaTeX Templates and JSON — It uses pdfLaTeX under the hood to create PDFs from .tex files that are filled in using text/template. There’s a live demo too.

Raphael Reyna

c2go: A Tool for Transpiling C to Go“The ultimate milestone is to be able to compile the SQLite3 source code and have it working without modification. This will be the 1.0.0 release.” Version 0.26.0 just landed, if that helps paint the picture, but development seems to have resumed after a hiatus. 🙂

Elliot Chance

The Go Security Checklist

Sqreen sponsor

gorush: A Push Notification Server Written in Go — Supports APNS (Apple Push Notification Service) and Firebase.

Bo-Yi Wu

Wingo: A Fully-Featured Window Manager Written in Go — Not a new project (indeed, it’s in ‘maintenance mode’) but I wasn’t familiar with any Go powered window managers till now, so you might fancy playing around with it if you have time to spare.

Andrew Gallant

go-github: A Go Client for the GitHub v3 API — v30 clears out a variety of deprecations. For the v4 GraphQL API you need this instead.