#483 — November 7, 2023
Go Weekly
Charm Raises 6ドルM to Build the Next Generation of the Command Line — Like much of the Go community, we’ve been huge fans of Charm’s approach to building useful Go-based tools and CLI libraries (such as Bubble Tea), so this is fantastic news. It’s mostly not about the money raised, either, but a roundup of Charm’s work in the area of CLI development and the projects they’ve released so far.
Toby Padilla and Christian Rocha (Charm)
Why a Team Used Go Instead of Rust to Develop a Desktop App — Krater, a desktop app for debugging Laravel apps, was initially developed in Rust using Tauri, but shifted to using Go with Wails due to Go’s developer experience.
Ronald Pereira
A Data Store Built for Modern Workloads — Dragonfly is a drop-in Redis replacement. Applications built on Dragonfly get the speed, reliability, and scalability that modern apps require, allowing you to deliver incredible experiences to your users while reducing costs and complexity.
Dragonfly sponsor
Go, Containers, and the Linux Scheduler — If you’re running Go in containers, the runtime will create one thread per CPU core regardless of any limit set by the container runtime. This can lead to significant GC cycle times, but GOMAXPROCS is your friend and it’s easy to apply.
River Phillips
QUICK BITS:
-
🎤 Filippo Valsorda and Roland Shoemaker of the Go team joined the Go Time podcast to discuss what's new in Go's cryptography libraries.
-
📗 Automate Your Home Using Go is a forthcoming Pragmatic Bookshelf ebook by Ricardo Gerardi and Mike Riley focusing on using Go on the Raspberry Pi to build motion detectors, temperature sensors, and more.
Generic Sorting in Go 1.21: A Tale of Two Performances — An analysis of the performance of the new generic slices.Sort function introduced in Go 1.21 reveals that while it provides a faster sorting method for numbers, it unexpectedly underperforms when sorting strings. This issue on GitHub might help you understand why, and how it may be resolved.
Andreas Auernhammer
Running the "Reflections on Trusting Trust" Compiler — Russ tells the story of Ken Thompson (co-creator of Unix) giving a talk on how to create a backdoor in a C program in the early 80s, which Russ attempts to recreate in Go.
Russ Cox
📰 Classifieds
Join Sticker Mule's "kick ass" team as a Site Reliability Engineer! Our software team operates from 17 countries and we're looking for more exceptional engineers to join our Security team.
Lead a team of engineers to shape the future of live video at Dyte: Lead an engineering team responsible for critical backend systems and APIs. Optimize, scale, and play a pivotal role in shaping product direction.
💻 Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
How We Reduced oapi-codegen's Dependency Overhead by ~84% — How to reduce the size of a module’s dependencies by taking advantage of module pruning. (More on the actual release, below.)
Jamie Tanna
Exploring Columnar Compression Challenges in Go
Jamie Brandon
🛠 Code & Tools
oapi-codegen v2: OpenAPI Client and Server Code Generator — A popular set of utilities for generating Go boilerplate code for services based on OpenAPI 3.0 API definitions, now with far fewer dependencies than before. If you want to see how to use it, start here.
DeepMap, Inc
The Redis Client for Go v9.3 – Now with JSON — The official Redis client takes a big step forward with direct support for JSON (which is directly supported by Redis when using the RedisJSON module).
Redis Team
Free Course: Introduction to Temporal Cloud — Check out our new course on the role and features of Temporal Cloud, designed for new and experienced users alike.
Temporal Technologies sponsor
DoltgreSQL: Postgres-Compatible Database with Version Control Functionality — Dolt is a long-standing Go-powered database providing a ‘git for data’-style experience with branching, cloning, merging and more, using the MySQL wire protocol. DoltgreSQL offers the same but emulates a Postgres server.
Daylon Wilkins
env 10.0: Parse Environment Variables to Structs — Simple, no dependencies, and supporting all built-in types as well as time.Duration, encoding.TextUnmarshaler and url.URL – you can define a custom parser function for any other type you want to support, too.
Carlos Alexandro Becker
GoLeak 1.3: Goroutine Leak Detector — Use this to detect if there are any unexpected goroutines running at the end of a test.
Uber Engineering
-
Cobra 1.8 – Library for building full-featured CLI apps.
-
color 1.16 – Colorized output with ANSI codes.
-
GoReleaser 1.22.0 – Build and release Go binaries for several platforms.
-
validator 10.16 – Value validations for structs and fields based on tags.
-
progressbar 3.14 – Basic thread-safe progress bar.
-
goverter 1.1 – Easily create type-safe converters.
💬 QUOTE
"The best programs are the ones written when the programmer is supposed to be working on something else."
___
Melinda Varian