#339 — November 20, 2020
Go Weekly
Go Standard Library Benchmarks: Intel i5 vs Apple's M1 — If you’ve wondered how Apple’s newest Arm-based CPU fares with Go, these results are promising. As with all benchmarks, though, maintain a critical eye, especially as these are microbenchmarks against an older i5 CPU(!) but it's still worth reporting and there's more info below..
Roland Shoemaker
The Pros of Conds — If you’ve never used sync.Cond (and it’s not that popular in Go code) Luke wants to sell you on why and where it’s useful. If you have events you need to sit around and wait for, this article is for you.
Luke Champine
Support for Geospatial Data - Written in Go — The most upvoted feature in the history of CockroachDB was support for geospatial data & indexing. And now it’s here. We’ve rebuilt all spatial data types and libraries in Go and we’d love for the Go community to test it out.
Cockroach Labs sponsor
🐦 Thread: "Let's See How The New M1 Chips Do On Go Benchmarks!" — Filippo Valsorda of the Go team does eventually get to the benchmarks but the real takeaway here is his journey (signed binaries are mandatory on arm64?) to get there. If you’re thinking of buying a new Mac, read this.
Filippo Valsorda
Go’s Recurring Security Problem — "go get does a lot under the hood, including invoking third-party tools like git and clang in ways that are heavily influenced by package configurations. Ensuring that these invocations are safe is an uphill battle that Go hasn’t quite won yet."
Chris Brown
- You know Go trainer extraordinaire Bill Kennedy? He's launched a new podcast focused on 'intimate conversations with engineers' – the first episode can be watched on YouTube or you can find it on Apple Podcasts (or RSS). His first guest is Googler and Gopher Andy Walker.
- GoLand 2020.3, the popular commercial Go IDE, is now in beta.
💻 Jobs
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.
Vettery
📘 Tutorials and Stories
Writing a Postgres Foreign Data Wrapper for Clickhouse in Go — Foreign data wrappers (FDWs) provide a way for Postgres servers to interact with external services (including other database systems), such as the ClickHouse OLAP DBMS covered here.
Arun Sori
Using 'Dot Imports' in Views — Dot imports let you import a package into the local namespace (so no prefixing is needed!) – it’s not a good practice, but also not super commonly known, and Markus has speculated on an interesting use case for them at least.
Markus Wüstenberg
Good and Bad Practices - A Limiting Perspective? — Certain patterns or approaches can get painted as being ‘good’ or ‘bad’ practices (see ‘dot imports’ above!) but is it always so binary? No, says Preslav.
Preslav Mihaylov
Storing Telegraf Telemetry in New Relic One — Learn how to use an output plugin that extends the Golang Telemetry SDK to ingest data with Telegraf and New Relic One.
New Relic sponsor
An Introduction to AWS Lambda Functions in Go — This detailed look includes forays into logging, triggers (including API Gateway), using Context, and versioning the functions.
Paschalis Tsilias 3rd degree connection
Refactoring for Better Testability — The first in a series of posts on refactoring existing code for testability. This is good practice! ;-)
Bartłomiej Klimczak
How to Build Your Own Serverless Subscriber List with Go and AWS — How to build an email subscription sign up flow (complete with double opt in) using Lambda and DynamoDB. Can’t be bothered? Simple Subscribe is Victoria’s project with it all done for you ;-)
Victoria Drake
Go Constants and JSON: To Iota and Back — Constants and iota are very useful...up until you combine them with JSON serialization. Thankfully, there’s a Marshal (and Unmarshal) in town to help.
Bojan Živanović
Checking If The Pi Is Done — Build a basic cluster monitoring system using a laptop, some Raspberry Pis, and Go’s RPC package.
Alex Ellis
🛠 Code & Tools
go-getter: Download Things from Various Sources with a URL — Reading the title you might think.. "so it’s an HTTP client then?" Not exactly. A GitHub URL can become a git URL, local filenames work, S3, Mercurial and BitBucket URLs all work as intended too.
HashiCorp
Peer Calls: Group Peer-to-Peer Video Call System — Want to get in on the action of rolling out a video chat service? The core of this one is written in Go. You can play with an example deployment here.
Peer Calls
eBPF: A Pure Go eBPF Library — Utilities for loading, compiling, and debugging eBPF programs.
Cloudflare and Cilium
Live Workshop: Getting Started with OpenTelemetry in Go
Lightstep sponsor
p5: An Initial Port of Processing to Go — It’s early days for this project, but this brings some initial concepts from Processing, a popular visual programming system, to Go.
Binet and de Carvalho
Fleets: Automatically Delete Tweets, Retweets, and Likes — A new, craftily-named library for cleaning up your Twitter account that leans heavily on the Anaconda Go Twitter library.
Karan Goel
gdriver: Download Large Files From Google Drive — A command-line tool for downloading large files from Google Drive (using API v3).
Marcin Tojek
h2go: Apache H2 Go SQL Driver — Experimental, right now.
JM Robles