#305 — March 27, 2020

Unsubscribe  :  Read on the Web

NOTE: After sending it was raised to us that the people in the feature graphic are not exactly practicing safe social distancing(!) — this didn't occur to us at the time, but luckily they are all members of the same household.. stay safe out there, folks!

Golang Weekly

Go, the Go Community, and the Pandemic — An official post from three core team members on how the pandemic is affecting our community along with resources on things like online training, open-source, job postings, and current 1.15 impacts.

The Go Blog

How to Use Diago to Diagnose CPU and Memory Usage in Go Programs — Diago is a visualization tool that takes pprof output (profile, heap) and displays them in a tree format in the terminal.

Rémy Mathieu

How to Use PostgreSQL Together with the Programming Language Golang (Go) — Here are some step-by-step instructions on how to configure, connect and launch Go application with PostgreSQL.

EnterpriseDB sponsor

Announcing RxGo v2: Reactive Extensions for Go — RxGo is a Go implementation of ReactiveX, making it akin to RxJS, etc. if you want to write asynchronous programs oriented around streams of events/observables, pipelines, etc. The ‘Getting Started’ docs will help clarify the ideas. GitHub repo.

Teiva Harsanyi

typex: Examine Go Type Structures, Interfaces and Transitive Dependencies — In other words, print out a tree structure of Go packages and their type structures and interfaces on the command line.

Daniel T. Gorski

💻 Jobs

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.

Vettery

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

Stream

📚 Articles & Tutorials

Quickly Find Rust Program Bottlenecks Online Using a Go Tool — So, the next time a Rustacean tells you how good Rust is, ask them to come find you when they need to find issues in their Rust app 😄

PingCAP

Object Fingerprinting for Efficient Data Ingestion — Using a custom JSON unmarshal function to build a hash for objects that can be used for efficient comparison of already ingested objects.

Andrew Klotz

Video Streaming for Go — Build video for your app that Just Works™. Mux's Video API makes it super easy to build video or live streaming into any app.

Mux sponsor

Working with Postgres Transactions in Go

Mohit Khare

How Does Monzo Keep 1,600 Microservices Spinning? — Go only gets a brief mention here, but the entire tech stack might be a template for tackling complex distributed systems.

🛠 Code & Tools

Gopher2600: An Atari VCS Emulator — A relatively feature-complete emulator that includes controller support and gameplay recording.

Stephen Illingworth

ION: A Distributed Real-Time Communications (RTC) System — Powered by both Go and Flutter, ION supports WebRTC, as you’d expect, as well as a few other protocols for video conferencing, live streaming, etc.

Pion

lmdrouter: A Go HTTP Router for AWS API Gateway-Invoked Lambda Functions — A simple-to-use library for writing serverless functions that work upon API Gateway proxy requests.

Aqua Security

tube: A YouTube-like Video Sharing App — Want to deploy your own YouTube-esque site but running by your own rules? Worth a try. Supports automatic transcoding to MP4 H.265 AAC, multiple collections and RSS feeds.

James Mills

Faster CI/CD for All Your Software Projects Using Buildkite

Buildkite sponsor

Logrus 1.5: A Feature Rich Structured Logger — Supports JSON formatting, hooks (for sending certain log entries to external services, say), plus it’s API compatible with the standard library’s logger too, so try dropping it in.

Simon Eskildsen

Gold: A Reinforcement Learning Library — Provides a set of agents that can be used to solve challenges in various environments.

AUNUM

Duit: A Simple Money Tracker, Built with Go and Mithril.js — A complete, simple money tracking web app.

Radhi

💌 A valuable message from Russ Cox

Over on the golang-dev mailing list, Russ Cox posted a valuable message:

Go development is not isolated from world events; work on Go always comes second to more basic concerns like personal and family health and safety. Nearly all of us are working at reduced capacity these days. I expect that capacity to drop further over the next few months.

[...]

If our own working capacity is reduced but we keep the same timelines, then we must reduce the scope of what we expect to be in the release. Some new features or planned won't make it. That's OK - we'll get them next time. We all need to accept that, for our own work and work by others.

Most of all, let's all please be extra kind and charitable with each other. It's always good advice to remember that you don't know what external stresses are affecting the person on the other end of the email, review thread, or GitHub comment, but it's especially important now.

The above is just a quick summary of the main points, but it's also worth reading in full. Thanks Russ.