#215 — June 14, 2018

Read on the Web

Golang Weekly

Why Add Versions to Go? — Still uncertain about vgo and why Go needs package versioning support at all? Russ Cox digs into the motivation here.

Russ Cox

Go Code Refactoring: The 23x Performance Hunt — Counting on presumptions like “concurrency is better” can lead to worse performance. Benchmarking, tracing, and profiling with different algorithms lead to true performance gains.

Val Deleplace

Telegraf: The Go Collection Agent — Learn more about Telegraf: an open source, lightweight, plugin-driven collection agent written in Go.

InfluxData sponsor

Experimenting with Go's Early WebAssembly Support — The forthcoming Go 1.11 supports compiling to WASM, so some basic examples of what to do with it are certainly welcome. If you’re into this topic, you may also appreciate these notes or this guide.

Lazy Hacker

Fo: An Experimental Language Which Adds Generics to Go — If you ask Go developers what new language features they’d like, ‘generics’ comes up as a common response. So, how could it work and what might it look like?

Alex Browne

Using GraphQL with Microservices in Go — This very complete tutorial includes micorservices, gRPC, and GraphQL to create a fake online store from the ground up.

Tin Rabzelj

Go 1.10.3 and Go 1.9.7 Released — Minor releases including fixes to the go command, and crypto/tls, crypto/x509, and strings packages, also very minimal support to the go command for the vgo transition.

Filippo Valsorda

Draft Release Notes for Go 1.11 — Go 1.11 is due for release in August 2018 so these notes are very much a work in progress.

The Go Programming Language

💻 Jobs

Sr. Software Developer at CrowdStrike (Multiple Locations) — CrowdStrike stops hackers using a massive micro services architecture written in golang.


Have You Tried Vettery? — Vettery matches top tech talent with fast-growing companies. Take a few minutes to join our platform.


📘 Tutorials

Using Job Queues in Go for Resilient Systems — The reasoning and a quick proof-of-concept using RabbitMQ.

Soham Kamani

How-To: Achieve Observability in Modern Applications 🔭 — Deep dive into modern observability challenges and why monitoring falls short.

ROLLBAR sponsor

What A Go Developer Needs to Know About Google Cloud Platform — The options for deploying to GCP, their respective advantages, along with the services offered on the platform.

Eno Compton (Google)

Hacking Drones (like the DJI Tello) with Go — This project shows how you can control the new DJI Tello drone flight commands and video using Go.

Ron Evans

Gracefully Restarting a Go Program Without Downtime

Russell Jones

'append' Is Not Always Thread Safe — Using append can lead to data races, if you’re not careful. This post explains how to work around the issue.

Jack Lindamood

Host Git Repository Servers w/ DigitalOcean’s One-Click GitLab App

DigitalOcean sponsor

Faster Test Driven Development With Go on macOS — Using fswatch and grc to automatically run relevant tests on every code change.

Tyson Maly

🔧 Tools & Code

ppds: Pretty Print Data Structures — ASCII-based pretty printing of trees, linked lists, stacks, and queues.

Shivam Mamgain

usql: A Universal Command-Line Interface for SQL Databases — The latest release adds support for Cassandra and switches from dep to vgo.

Kenneth Shaw

USBDMX: A USB DMX Library for Programatic Show Control — DMX is the standard for controlling intelligent lighting fixtures as used in stage lighting.

Oliver Read

Polluter: Seed a Database with Data from YAML Files

Roman Budnikov

Monitoring & Distributed Tracing for Go Apps. Try Datadog Free

Datadog sponsor

php-parser: A PHP Parser Written in Go — Uses goyacc and golex libraries to parse PHP sources into AST. Demo here.

Vadym Slizov

stripe-go: Go Library for The Stripe API — The latest release (v32) has some breaking changes.