#403 — March 11, 2022
The Go Weekly Newsletter
GoPlay: A Better Go Playground? — Powered by React and the Monaco editor control behind VS Code, the "better" here includes a dark theme, autocompletion, a ton of loadable snippets, file loading/saving, and WASM support. There’s also a Docker image so you can have a private playground of your own and tell those kids to get off your lawn.
Denis Sedchenko
Isolating Problematic Cgo Code — This is a wonderfully explained tutorial on using parent-child processes to create, pass, and monitor file descriptors for memory- and CPU-intensive work.
Jon Williams
Understand a Complex Codebase in Minutes, Not Weeks — Decrease time to first commit with self-serve onboarding, codebase exploration, and knowledge sharing. Improve dev velocity by making it easy to search and find code and context.
Sourcegraph sponsor
Quick bits:
-
Go 1.18 is tantalizingly close with very few release blocking issues remaining. Fingers crossed they don't like releasing on a Friday though.. 😏
-
📘 Interested in using WebAssembly along with Go? Wasm Cooking with Golang may be the e-book for you. There are three chapters you can grab for free.
-
GitHub has an interesting quirk where credit for commits can be claimed/taken over when those commits were made by non-GitHub users. Arpad Ray showed how he managed to claim some old Go commits of Brian Kernighan's in this way.
Shell Scripting with Go — John has created a script library that brings all the pipeline utility goodness into Go so you can create and deploy binaries instead of maintaining traditional Unix scripts (if you prefer).
John Arundel (Bitfield Consulting)
▶ Discussing Logging in Go with Ed Welch — Ed works on the Go-powered Grafana Loki log aggregation system so knows a fair bit about the topic. (1 hour 8 minutes.)
Go Time Podcast podcast
Jobs
Golang Developer at X-Team (Remote) — Join the most energizing community for developers and work on long-term projects for Riot Games, FOX, Sony, Coinbase, and more.
X-Team
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
Rewriting Bash Scripts in Go using Black Box Testing — When rewriting software in a new language, how do you test that your new and old programs do the same thing? Here’s how one engineer approached it.
Daniel Orner
▶ Making a Wordle Clone with Go and Ebiten — Making a word game that runs in the terminal is one thing, but how about an all singing, all dancing graphical version? Ebiten to the rescue.
Avery Makes Games
Looking at pix: A Minimalistic Graphic Library — This library is oriented towards embedded and simple LCD and OLED display controller usage, rather than on the desktop. Some neat examples here and the code is very easy to follow.
Michał Derkacz
Finding Goroutine Leaks in Tests
Egon Elbre
Building a Monorepo in Go
Brandon Schurman
🛠 Code & Tools
termsvg: A Terminal to SVG Recording CLI Tool — The output from something like this can be much more efficient for demos in your GitHub READMEs than traditional animated GIFs.
Alvaro Tinoco
go-rabbitmq: A High(er)-Level RabbitMQ Client for Go — The official AMQP library from the RabbitMQ team is good, but what if you need a bit more like reconnection logic, boilerplate, flow control..? Enter go-rabbitmq.
Lane Wagner
Tygo: Generate TypeScript Types from Go Source Code — The idea is that you can create types for the front-end based on those used by your Go powered backend by parsing the code that’s actually there. TypeScriptify is another option in this space which uses reflection instead.
Guido Zuidhof
Site Reliability Engineer Needed (Remote)
Buildkite sponsor
Dasel: Query and Update Data Structures from the Command Line — Think of jq, but for many more formats, such as JSON, TOML, YAML, XML, and CSV. Can be used as a CLI tool or as a Go package.
Tom Wright
AWS Vault: A Vault for Securely Storing and Accessing AWS Credentials in Development — Stores IAM credentials in your OS’s keystore and then generates temporary credentials from those to expose to your shell and apps.
99designs
fakegen: Single Binary CLI for Generating a Random Schema of M Columns to Populate N Rows of Data — Easy, quick, fake JSON data.
Multiprocess Labs LLC
httpx 1.2: A Multi-Purpose HTTP Toolkit for Probing Servers — A command line tool, written in Go, for running numerous HTTP ‘probers’ at the same time using the retryablehttp library under the hood.
Project Discovery
Dynamo: An Expressive Amazon DynamoDB Library — Integrates with the official AWS SDK but gives you a tidier abstraction.
Greg Roseberry
gocql 1.0: A Fast and Robust Cassandra Client Library — Hitting v1.0 for a 7 year old project is no small milestone.
gocql
Subfinder: Subdomain Discovery Tool for Domains
ProjectDiscovery