---
title: "Go becomes a teenager"
publication: "Go Weekly"
issue: 436
published_at: "2022-11-11"
canonical_url: "https://golangweekly.com/issues/436"
---

Plus what's coming to Go 1.20, a Go-powered Mastodon-a-like, and a look under the covers at Testify. |        

#​436 — November 11, 2022 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/436)  

Together with [![Datadog\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_700,h_190/e_make_transparent/co_white,e_outline:10/vuhqm1wlyvxuddx1zxr8.png)](https://www.datadoghq.com/dg/apm/debugging-go/?utm_source=advertisement&utm_medium=newsletter&utm_campaign=dg-cooperpress-applications-ww-go-p-debugging)  

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mqmgznelwbwahnr90b2a.jpg)](https://go.dev/blog/13years)  

[Thirteen Years of Go](https://go.dev/blog/13years) — It’s now an annual tradition for Russ Cox to blog about the past year of happenings (e.g. on Go’s [10th](https://go.dev/blog/10years), [11th](https://go.dev/blog/11years), and [12th](https://go.dev/blog/12years) 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](https://go.googlesource.com/proposal/+/master/design/56345-structured-logging.md) — 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](https://github.com/golang/go/discussions/54763)) for bringing structured logging with levels to the standard library. Want to play? [Try it here.](https://go.dev/play/p/QstITZ2mF1k) 

Jonathan Amsterdam   [![\](https://copm.s3.amazonaws.com/d100adc9.png)](https://www.datadoghq.com/dg/apm/debugging-go/?utm_source=advertisement&utm_medium=newsletter&utm_campaign=dg-cooperpress-applications-ww-go-p-debugging) 

[Troubleshoot and Optimize Golang App Performance with Datadog APM](https://www.datadoghq.com/dg/apm/debugging-go/?utm_source=advertisement&utm_medium=newsletter&utm_campaign=dg-cooperpress-applications-ww-go-p-debugging) — 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](https://danp.net/posts/macos-dns-change-in-go-1-20/) rather than Go's built-in resolver.
- Daniel Martí has a helpful Twitter thread covering [🐦 what's coming to Go 1.20](https://twitter.com/mvdan_/status/1588242469577117696) in early 2023.
- The latest version of JetBrains' commercial GoLand IDE has [entered beta](https://blog.jetbrains.com/go/2022/11/04/goland-2022-3-reaches-beta/). There are a _lot_ of enhancements and it now includes an integrated Go playground too.   

[Thoughts on the 'Guard' Proposal for Error Handling](https://wagslane.dev/posts/guard-keyword-error-handling-golang/) — 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](https://levelup.gitconnected.com/a-case-for-go-code-generation-testify-73a4b0d46cb1) — [Testify](https://github.com/stretchr/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](https://blog.jse.li/posts/torrent/) — 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](https://tailscale.com/tailscale-ssh/?utm_source=golang&utm_medium=email&utm_campaign=2022-11-11&utm_content=brand) — 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](https://changelog.com/gotime/255) — 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](https://go.transistor.fm/episodes/011-options-where-to-deploy-your-go-servers) — 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](https://zserge.com/posts/carnatus/) 
Serge Zaitsev  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lyj5d1ewfsyaoxvrxt1p.jpg)](https://github.com/tdewolff/canvas)  

[Canvas: Vectors to SVG, PDF, EPS or Rasterized Images](https://github.com/tdewolff/canvas) — 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](https://github.com/tdewolff/canvas#examples) to show off the API. 

Taco de Wolff   

[GoToSocial: A Go-Powered ActivityPub Server](https://github.com/superseriousbusiness/gotosocial) — [ActivityPub](https://www.w3.org/TR/activitypub/#Overview) is the standard behind open federated social networks such as [Mastodon](https://mastodon.social/). 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](https://akuity.io/akuity-platform/?utm_source=newsletter&utm_medium=cooperpress-sponsored&utm_campaign=golangweekly) — 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](https://github.com/alecthomas/chroma/) — Based on Python’s [Pygments](https://pygments.org/) which is kinda the big cheese in this space. 

Alec Thomas   

[Notify: Send Notifications to Various Messaging Services](https://github.com/nikoksr/notify) — Supports about [thirty different services](https://github.com/nikoksr/notify#supported-services-) including Discord, AWS SES and SNS, Microsoft Teams, Slack, and Telegram. 

Niko Köser   

[Katana: A New Crawling and Spidering Tool](https://github.com/projectdiscovery/katana) — 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](https://slashbase.com/) — 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](https://github.com/slashbaseide/slashbase) too. 

Slashbase   

[Joker 1.1: A Small Interpreted Dialect of Clojure Written in Go](https://joker-lang.org/) — A small interpreter, linter and formatter for the popular Lisp dialect. [GitHub repo](https://github.com/candid82/joker). 

Roman Bataev  

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bmqrlqe4dp3k0fervpav.jpg)](https://github.com/ktr0731/evans)  

[Evans: An Expressive Universal gRPC Client](https://github.com/ktr0731/evans) — Want a REPL for working with gRPC? Here you go. 
Taro Aoki    

Jobs  

[Golang Engineers — 100% Remote (North/South America & Europe)](https://www.ardanlabs.com/careers/mid-level-and-senior-backend-engineer.html) — 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](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job) — 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](https://github.com/wailsapp/wails/releases/tag/v2.2.0)
 ↳ Cross-platform apps with Go, Electron-style.
- [Ginkgo 2.5](https://github.com/onsi/ginkgo/releases/tag/v2.5.0) – Popular testing framework.
- [Lux 0.16](https://github.com/iawia002/lux) – Video download library & CLI tool.
- [sqlc 1.16](https://github.com/kyleconroy/sqlc) – Generate type-safe code from SQL.
- [ZincSearch 0.3.5](https://github.com/zinclabs/zinc) – Elasticsearch alternative.
- [Cheat 4.4](https://github.com/cheat/cheat) – Command line cheat sheetin'
- [GoatCounter 2.4](https://github.com/arp242/goatcounter) – Web analytics with privacy.         

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*)
[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
