🇺🇦 #​405 — March 25, 2022 |
Unsubscribe  |  Read on the Web |
The Go Weekly Newsletter |
An Introduction to Generics — It’s brief but it’s as official an introduction as it gets with two Go project members introducing generics (as now generally available in Go 1.18) focusing on type parameters, type sets/constraints, and type inference in a well-explained set of examples. Some caution is advised, however, to tread carefully when deploying generic code in production. There’s a 30-minute talk from last year’s GopherCon, too, if you prefer video. Robert Griesemer and Ian Lance Taylor |
Implementing a Toy Version of TLS 1.3 — Julia is well known for her educational blog posts, and she’s currently interested in creating simple versions of various protocols and tools – this one covers TLS and exposes the design and mystery of it. All done in Go, too. Julia Evans |
Free Activity Feeds & Chat APIs for Qualifying Teams — The Stream Maker Account provides qualifying teams with full and free access to Stream's Chat and Activity Feed APIs, making them accessible to side projects and new startups. No credit card is required. Stream sponsor |
Why Bitly Writes (Almost) Everything in Go — Bitly is a well known URL shortening service and Go seems to be a natural fit for them with (nearly) all their back-end code written in it since 2015. Michael Richman |
How Glean Analyzed and Fixed a Go 'Memory Leak' (Sort Of) — It looked like a memory leak, smelled like a memory leak, and while it was ultimately down to a quirk of memory management that you’re not going to run into in Go 1.16+, you might enjoy this little look under the covers. Sharva Pathak |
Quick bits:
|
|
What Are Go Workspaces and How Do I Use Them? — While a lot of the excitement over Go 1.18 was, and still is, around generics, workspaces were another new feature that could help with organizing projects. Matt Boyle |
A Case Study in End-to-End Testing with Go — Through a case-study, Alex demonstrates real life unit tests and end to end tests, along with how to overcome challenges around speed and brittleness. Alex Ellis |
đź› Code & Tools |
chromedp 0.8: Drive Browsers using the Chrome DevTools Protocol from Go — This week’s version brings things up to Go 1.18 standards. Thorough docs and also an entire repo of examples of how to use it too. Kenneth Shaw |
Lo: A Lodash-Style Library for Go 1.18+ — Linked a couple of weeks ago, but perhaps now more relevant since 1.18 has been released. This library, inspired by JavaScript’s Lodash, brings similar utility methods for working with slices, maps, and more. Samuel Berthe |
Project Management for Today's (and Tomorrow's) Software Team Shortcut (formerly Clubhouse.io) sponsor |
GoReleaser 1.7: Release Go Binaries As Fast and Easily As Possible — Handles cross compilation, releasing to GitHub, GitLab or Gitea, create Docker images, nightly builds, packages, and more. GitHub repo. Goreleaser |
Garble: A Toolchain to Obfuscate Go Builds — Obfuscation has a deservedly awkward reputation given it can’t guarantee security but if you want to distance your binaries from your source as far as possible, Garble provides some ways to do that. Miscellaneous |
Bloom 3.2: A Package for Implementing Bloom Filters — Bloom filters are memory efficient data structures for determining set membership with a defined potential rate of false positives. Will Fitzgerald |
Joker: A Small Clojure Interpreter (and Linter) Written in Go — Linked this a couple of times over the years, but it’s just hit 1.0. Roman Bataev |
LotusDB: Fast File-Based Key/Value Storage Library — No, not as in Lotus 1-2-3.
|
Skopeo: Work Directly with Remotely Hosted Container Images
|
CDS: Data Syncing in Go ClickHouse
|