#​490 — January 9, 2024

Unsub  |  Web Version

Together with  Ardan Labs

Go Weekly

Rob Pike: 'What We Got Right, What We Got Wrong' — A written version (the script, really) of Rob’s GopherConAU talk given in November (▶️ 47-minute video here), where he recounts stories from building Go, including the team’s goals and how and why decisions were made.

Rob Pike

Interactive Release Notes for Go 1.22 — Don’t panic, Go 1.22 isn’t due for final release until next month, but this is a neat set of interactive notes showing off various 1.22 features. This is so worth a look to get up to speed.

Anton Zhiyanov

Help GopherConEU in Athens, Greece be a Memorable Event! — Join GopherConEU in Athens, Greece between February 6 - 8th, 2024. Bill Kennedy and Miki Tebeka are part of GopherConEU Training workshops sharing cutting edge Go engineering best practices, libraries, frameworks, performance optimization, and more.

Ardan Labs & GopherConEU sponsor

Fun with Embeddings in Go“Whilst Python is and will remain the dominant language in the AI/ML space, there are plenty of Go modules that let you do some interesting things with data and vector embeddings.” This is a neat article, and includes a cool interactive 3D visualization for good measure.

Milos Gajdos

📊  Benchmarking Different Go SQLite Drivers — As with any benchmark results, maintain a critical eye, but the author found significant differences between the seven options.

Christoph Vilsmeier

QUICK BITS:

  • The meeting notes for the Go compiler team's most recent weekly meeting had some interesting points around things in the Go survey that surprised attendees, plus a rumor about ARM's Go team in China.

  • Over at Hacker News, someone asked is Go the new BASIC? No..

  • A reminder that the go1.x runtime on AWS Lambda is now deprecated.

Constraining Complexity in the Generics Design — An in-depth post based on a GopherConAU talk (▶️ video here) that explains, by way of a little computer science, why union elements cannot call a method as a fallback and what the future holds for possible workarounds.

Axel Wagner

How CompareAndSwap Is Not Always 'Compare and Swap' — The sync/atomic package provides access to primitive atomic operations that are useful when dealing with concurrency (more here). What happens if an architecture doesn’t support one of the features?

Luciano Calamia

Uber's Go Style Guide — Want to know how a large org writes Go? Take a ride with Uber's guidelines, performance notes, and style concerns.

Uber

Learn How to Convert Your Cron into a Schedule with Temporal and Go — Converting Cron jobs to Temporal Schedules in the interface of your choice is very simple. See an example in our Go SDK.

Temporal Technologies sponsor

On Writing a Simple JSON Parser in Go — This is really about the journey and learning some of the pieces involved.

Öner Çiller

Bundling Go Lambda Functions with the AWS CDK
Matt Bacchi

Interfaces Are Not Meant for That
Preslav Rachev

🛠 Code & Tools

Introducing astjson: Transform and Merge JSON Objects at Speed — Wundergraph's GraphQL Gateway product needs to aggregate and merge data from many sources fast. They built astjson to improve performance with some striking gains, even outperforming other (Rust-based) tools.

Jens Neuse (WunderGraph)

Tarmac: A Language Agnostic Framework — At the risk of sounding like a framework for everything, Tarmac takes an interesting, serverless approach for an app framework. It’s Go-powered but uses WebAssembly to allow languages like Go, Rust, Zig, and others, to be used as you prefer for writing your functions, while Tarmac keeps them connected to the real world, databases, etc.

Benjamin Cane

A New Way to Host Go Modules on Your Domain — Introducing GoHome, a small server to manage hosting your Go modules on your own domains.

Peter Sanchez

  • wazero 1.6 – The zero dependency WebAssembly runtime for Go. A big release, now featuring an (optional) optimizing compiler.

  • rqlite 8.16.0 – SQLite-backed distributed database, now with support for auto-backups and auto-restore to/from S3-compatible stores.

  • golang-set 2.6 – Robust generic set type.

  • Mock 0.4 – Mocking that integrates with testing.

  • Gobot 2.3 – The robotics / drones / IoT framework.

  • dae 0.5 – High-perf transparent proxy based on eBPF.

  • Expr 1.15.8 – Expression language and evaluation.

  • Otto 0.3 – Go-powered JavaScript interpreter.

  • go-redis 9.4 – Redis client library.

🏓 A Whole Old Ball Game?

A Go-Powered Arkanoid Clone — For those who weren’t gaming in the 80s, think a bat and ball game 😄 This one is written in Go, uses Ebitengine, and adopts an entity component system (ECS) architecture.

x-hgg-x