#​393 — December 24, 2021

Unsubscribe  |  Read on the Web

Go Weekly

The Best of Go Weekly in 2021

This is the last issue of the year so we're taking a look back at some of the most popular items we've shared throughout 2021 (plus one new one at the very end of the issue). There's bound to be a few things that escaped your attention at the time :-)
Peter Cooper, your editor

1.  Rust vs. Go: Why They’re Better Together — More than a few times in 2021 we’ve touched on Go and Rust's sibling-esque relationship (such as in the Rust vs Go opinion piece) and in this piece a member of the Go team and a member of the Rust community fittingly came together to balance the two and how they “supplement and support each other.” Will they be getting on even more in 2022?

Jonathan Turner and Steven Francia

2.  Thoughts on How to Structure Go Code — Many languages have conventions on how to structure files and directories for an application, but Go leaves it up to you. This is mostly a good thing, right?

Jon Calhoun

Put the “Flow” in Your Workflows with Shortcut — Whether you're a startup that iterates quickly by giving engineers a free pallet of Red Bull, or a large org that has strict ship dates to hit, Shortcut is the ideal solution for task management, bug tracking, iteration planning, and reporting.

Shortcut (formerly Clubhouse.io) sponsor

3.  How Does Go Calculate len()? — A walk through the compiler showing that len() is not an actual function call so it has to be handled differently for each type that has a length. This is great for those wanting to dig into the compiler a bit more.

Paschalis Tsilias

4.  The Busy Developers's Guide to Go Profiling, Tracing, and Observability — The first part of a promised lengthy series but what an excellent and straightforward start it is. Felix, whose work is well known in the Go community, deftly explains goroutine scheduling and how Go allocates and collects memory. One to watch.

Felix Geisendörfer

5.  A Few Bytes Here, A Few There, Pretty Soon You’re Talking Real Memory — The addition of a 24-byte ‘size class’ in Go 1.16 may not have seemed like a big deal, but it is, and Dave explained what a size class is and why this particular size proves so useful.

Dave Cheney

6.  The Darker Corners of Go — A long list of lessons learned about Go aimed at new to intermediate Gophers (including experienced developers coming from other languages). This remains a trove of things that will give you a deeper understanding of Go.

Rytis Bieliunas

Best of the rest:


Senior Golang Engineer (Cloud, Microservices, REST APIs) (Romania Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.

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.

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.

🛠 Top Code Items of 2021

PTerm: A Modern Go Module to Beautify Console Output — Boasting 100% test coverage and support on Windows, Linux, and macOS, PTerm wants to be your go-to package for creating attractive command line interfaces. Things like bar charts, bulletpoint lists, text centering, spinners, tables, and more. Check out the GitHub repo for screenshots and examples.

PTerm Contributors

Cobra 1.3.0: A 'Commander' for Modern Go CLI Interactions — A hugely popular toolset for creating powerful Go-based CLI apps – used in things like Hugo and by GitHub CLI. Not just a popular link of the year, v1.3.0 actually just dropped as a significant 'fall 2021' release.

Steve Francia

Encore: A Go API Backend Framework with 'Superpowers' — Encore uses code generation and static analysis to take care of a lot of the boilerplate you’d ordinarily end up with when creating APIs. Version 0.11.0 was just released, and it’s one of those things you need to see to get.


Observability Won't Replace Monitoring (Because It Shouldn't)

Lightstep sponsor

go-vcr: Record and Replay Your HTTP Interactions — Why? Faster, deterministic testing of potentially flaky endpoints. If you’ve ever dabbled with Ruby, you might recognize this as somewhat influenced by Ruby’s popular VCR library.

Marin Atanasov Nikolov

Spaghetti: A Dependency Analysis Tool for Go Packages — An interactive Web-based tool (that you run locally) to explore and understand the dependencies of a Go program with the aim of finding ways to eliminate dependencies and clean things up.

Alan Donovan

Lingua 1.0: A Natural Language Detection Library — Boasts being the most accurate natural language detection library in the Go ecosystem, although there aren’t many to choose from. This one supports 75 languages and can work with both short and long texts.

Peter M. Stahl

That's a wrap.. almost.

Last week we meant (but forgot) to include an item by Carl M Johnson about why he wrote his own (new) Go HTTP client, so check that out if you're interested to know why he created requests.

We're taking a week off for Christmas and the New Year, so we'll be back with you on Friday, January 7, 2022. Many thanks for continuing to support us this year. From all of us here at Cooperpress, season's greetings to you, however you celebrate (or not!) 😄
Peter Cooper, your editor