#​422 — July 29, 2022

Unsubscribe  |  Read on the Web

The Go Weekly Newsletter

Charm Gum: A Tool for 'Glamorous' Shell Scripts — Much like actual gum, this is something you’ll either love or hate! It lets you create a CLI-based wizard just by providing a few arguments. The README is fantastic and packed with examples and animations. And if you’d rather brew your own in your own Go code, Bubble Tea and Lip Gloss, upon which Gum depends, are waiting for you too.

Charm

Building a Terminal-Based Pong Game in Go — Certainly an interesting learning experience, and this is a fun and engaging walkthrough that’ll be of particular interest if you want to pick up tcell for creating elaborate terminal experiences, visualizations, and the like.

Josh Alletto

GV (Google Ventures) Invests $35M Into Golang Notification Infrastructure — Too many engineering resources are wasted on notification template building and routing rules. This scalable and reliable no-code UI has parity with a robust API that lets you deliver to your users their preferred experience.

Courier.com sponsor

Go 1.19's Revised Memory Model — First mooted in a post by Russ Cox last year, Go 1.19 is seeing some revisions to Go’s memory model that aligns it more with other languages (C, C++, and Rust, for example), as well as some new types in the sync/atomic package. Note, though, “If you must read the rest of this document to understand the behavior of your program, you are being too clever.”

The Go Team

GoLand 2022.2 Released — The latest version of JetBrains’ popular (commercial) Go IDE is here with new features supporting generics and Go workspaces as well as fuzz testing. “In addition, GoLand now supports WebSocket connections and can send GraphQL queries over HTTP and WebSocket protocols.”

JetBrains

QUICK BITS:

Building an Ephemeral Note Sharing Service in Go — A fun tutorial that creates a self-destructing notes service from scratch using minimal dependencies (but a little Redis.)

Dustin Gorski

Exploring Function Parameter Types with Go Tooling — The example uses the x/tools/go/packages package which provides an AST for each file, allowing you to iterate and dive into packages, modules, and functions.

Eli Bendersky

Ten Gotchas While Building a Universal Currency Candlestick Iterator in Go
Mariano Gappa

🛠 Code & Tools

LiteFS: FUSE-Based File System for Replicating SQLite Databases Across a Cluster — This comes from the creator of BoltDB and Litestream fame, so the provenance is second to none and it’s fascinating to see SQLite continue to be taken to exciting new places.

Ben Johnson

Speedbump: A TCP Proxy for Simulating Variable Network Latency — The code is very straightforward and easy to read, I found. ToxiProxy is a bigger option in this space too, if you need even more chaos.

Paweł Kuffel

Unlock Completely Free Access to Stream's Chat and Activity Feed APIs

Stream sponsor

HLive: Server-Side WebSocket-based Dynamic Template-less View Layer — Think ‘single page JS app’ feel but with server-side Go goodness powered by a server-side virtual DOM.

Sam Hennessy

Chris: A Pratt Parser Implementation — This parser is focused on parsing mathematical expressions, and sadly has nothing to do with actor Chris Pratt.

Woo Jia Hao

gin-rate-limit: A Rate Limiter for the Gin Framework
JGL Technologies

⚡️ LIBRARY RELEASES:

modernc/sqlite 1.18.0 – Now supports fs.FS-based SQLite virtual filesystems (so you can embed SQLite databases into your binary).
Go Micro 4.8 – Microservices framework.
Sonic 1.3.4 – Super fast JSON (de)serializing library.
Sarama 1.35 – Go library for Apache Kafka from Shopify.
Bud 0.2.3 – A full stack framework for Go.
chromedp 0.8.3 – Drive browsers with the Chrome DevTools Protocol.
aws-lambda-go 1.34 – Libraries, samples & tools for AWS Lambda work.
Milvus 2.1 – Vector database for scalable similarity search.

🔧 RELEASES OF TOOLS WRITTEN IN GO:

Buf 1.7 – CLI tool for working with Protocol Buffers.
⭐️ fq 0.0.8 – Imagine jq but for binary formats.
imgproxy 3.7 – Standalone server for resizing & converting remote images.
Chaos Mesh 2.3 – A chaos engineering platform for Kubernetes.
gobackup 1.1 – Backup databases using FTP/scp/S3, etc.

Jobs

Golang Engineers — 100% Remote (North/South America & Europe) — We’ve got several opportunities for Go devs (some working directly with Bill Kennedy!) and would love to hear from those looking for new challenges in distributed systems projects.
Ardan Labs

Find a Job Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers.
Hired