#436 — November 11, 2022
The Go Weekly Newsletter
Thirteen Years of Go — It’s now an annual tradition for Russ Cox to blog about the past year of happenings (e.g. on Go’s 10th, 11th, and 12th birthdays) and now that Go is a teenager, there’s a lot to celebrate including fuzzing, improvements to generics, and soft memory limits.
Russ Cox
The Official Structured Logging Proposal — Go may be a teenager but that only means it’s continuing to grow! And so it goes with this formal proposal (which started life as this discussion) for bringing structured logging with levels to the standard library. Want to play? Try it here.
Jonathan Amsterdam
Troubleshoot and Optimize Golang App Performance with Datadog APM — Datadog’s APM generates detailed flame graphs to help you identify bottlenecks and latency in your Golang code. Navigate seamlessly between app traces, logs and metrics to troubleshoot and optimize performance issues fast. Try Datadog APM free.
Datadog APM sponsor
IN BRIEF
-
In Go 1.20 on macOS, DNS lookups will be made through the system rather than Go's built-in resolver.
-
Daniel Martí has a helpful Twitter thread covering 🐦 what's coming to Go 1.20 in early 2023.
-
The latest version of JetBrains' commercial GoLand IDE has entered beta. There are a lot of enhancements and it now includes an integrated Go playground too.
Thoughts on the 'Guard' Proposal for Error Handling — The topic of improving error handling syntax in Go has reared its head again after being a commonly cited point of concern in this year’s Go community survey. Lane isn’t a fan of all the added syntactic sugar but proposes a lighter weight option.
Lane Wagner
A Case for Code Generation: Testify — Testify adds assertions, helper functions and mocking to the Go testing mix. This post digs into how it works under the hood and how code generation helps with all the boilerplate.
Fred Bittencourt
Building a BitTorrent Client from the Ground Up — We linked this back in 2020 but it’s been doing the rounds on social media again and it’s truly worth revisiting.
Jesse Li
Forget Everything You Know About SSH — Say goodbye to managing SSH keys. Tailscale SSH works where Tailscale works & is free for personal use up to 20 devices.
Tailscale sponsor
▶ Let's Talk About Debugging in Go — The Go Time podcast is back with Liran Haimovitch (Rookout) and Tiago Queiroz (Elastic) talking about debugging practices, how the cloud affects debugging, the importance of logging, and more. (53 minutes.)
Go Time Podcast podcast
▶ Thinking About Where to Deploy Your Go HTTP APIs — Dominic shares the tale of how he moved from a simple VPS to git push-driven automated deployment on Render.
Dominic St Pierre podcast
Let's Write a Tiny Chess Engine in Go
Serge Zaitsev
🛠 Code & Tools
Canvas: Vectors to SVG, PDF, EPS or Rasterized Images — Provides a ‘common vector drawing target’ that can output in various formats, including to a canvas in the browser via WASM. "It can be considered a Cairo or node-canvas alternative in Go." There are lots of example programs to show off the API.
Taco de Wolff
GoToSocial: A Go-Powered ActivityPub Server — ActivityPub is the standard behind open federated social networks such as Mastodon. This is not Mastodon but does offer some compatibility with its API.
Super Serious Business
Argo CD as a Managed Service from the Creators of Argo — Akuity's architecture increases security, improves scalability, provides insights, and saves money. Available on free trial.
Akuity sponsor
Chroma: A General Purpose Syntax Highlighter in Pure Go — Based on Python’s Pygments which is kinda the big cheese in this space.
Alec Thomas
Notify: Send Notifications to Various Messaging Services — Supports about thirty different services including Discord, AWS SES and SNS, Microsoft Teams, Slack, and Telegram.
Niko Köser
Katana: A New Crawling and Spidering Tool — This project is only days old, but already shows promise. Note that it’s a crawler aimed at general CLI use, not a Go library.
ProjectDiscovery
Slashbase 1.0: A Collaborative IDE for Your Databases — Built with Go and Next.js, but distributable as a single binary, this is basically a client for Postgres and MongoDB. It’s open source too.
Slashbase
Joker 1.1: A Small Interpreted Dialect of Clojure Written in Go — A small interpreter, linter and formatter for the popular Lisp dialect. GitHub repo.
Roman Bataev
Evans: An Expressive Universal gRPC Client — Want a REPL for working with gRPC? Here you go.
Taro Aoki
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
-
Wails 2.2
↳ Cross-platform apps with Go, Electron-style. -
Ginkgo 2.5 – Popular testing framework.
-
Lux 0.16 – Video download library & CLI tool.
-
sqlc 1.16 – Generate type-safe code from SQL.
-
ZincSearch 0.3.5 – Elasticsearch alternative.
-
Cheat 4.4 – Command line cheat sheetin'
-
GoatCounter 2.4 – Web analytics with privacy.