#​467 — July 4, 2023

Unsub  |  Web Version

Together with  Ardan Labs

Go Weekly

Frequently Asked Questions About Go — Did you know there's an official Go FAQ? It's been around forever, but somehow we’d not run into it it before.. 😅 It’s packed with interesting stuff and worth a flip through. Some of our favorites:

The Go Team

How Grab Uses Its Own Go Module Proxy — The team behind Grab, a popular ‘super-app’ in Southeast Asia, relies on a large Go monorepo for its backend dev projects and they use the Athens Go module store and proxy to make their dev process smoother and, in particular, to reduce module fetching times.

Jerry Ng (Grab)

Go! Experts at Your Service — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.

Ardan Labs Consulting sponsor

Proposal: Let's Change the pprof Mutex Profile in Go 1.22 — This is, admittedly, a niche topic. The idea is to measure contention based on how many goroutines are blocked on a mutex rather than the number of OS threads (which may be just one). For example, if you hold a mutex for 10ms and several goroutines wait for it, only 10ms total contention would currently be recorded.

Russ Cox

IN BRIEF:

▶  MIT 6.824 Distributed Systems — It’s from 2020, but this playlist did the rounds on social media recently and what I’ve watched so far has been good. Prof. Robert Morris tackles the broad concepts of distributed systems, including fault tolerance, replication, and concurrency control. It’s broadly language agnostic, though Go is used for the main coding sections, such as the lecture on building a consensus algorithm in Go.

Robert Morris (MIT)

Creating a Simple Fixed-Window Rate Limiter in Redis — A short and sweet example of using a Lua script from Go to perform atomic actions in Redis.

Mahmud Ridwan

Rapidly Develop Golang Microservices In Kubernetes — Run your microservices locally and connect to real dependencies in a staging Kubernetes environment. Try our playground.

Signadot sponsor

About Structured Logging in Go 1.21 — We’ve mentioned the new structured logging (slog) package coming to Go 1.21 a few times recently, but Lukás pokes around, explains its interface, and how to use it today.

Lukáš Zapletal

Adventures in Building a Go Container with Nix — One developer’s notes are often another developer’s treasure.
James Williams

How to Deploy Your Existing Containers to OpenFaaS
Alex Ellis (OpenFaaS)

🛠 Code & Tools

Chroma 2.8: Pure Go Syntax Highlighter — Take source code and turn it into syntax highlighted HTML, ANSI colored text, or just grab the raw tokens in JSON. Brings most of the features of Pygments to Go and can use Pygments’ lexers and styles too. There’s an online playground where you can try it out. v2.8 adds support for ArangoDB Query Language and WebGPU Shading Language, plus more.

Alec Thomas

Announcing GoReleaser v1.19: The Big ReleaseGoReleaser is, unsurprisingly, a tool for releasing Go projects. It offers cross-compilation, release to systems like GitHub and GitLab, nightly builds, Docker image creation, packaging, and more. v1.19 improves support for Nix, Winget, Homebrew, Krew, and Scoop, among other things.

Carlos Alexando Becker

Encore: Declarative Infrastructure for Go — Define infrastructure directly in application code and get local, preview, and cloud environments automatically.

Encore sponsor

Mailpit 1.7: Email and SMTP Testing Tool — Built in Go, Mailpit is a general email testing tool and API for all developers. You can use it to view emails “sent” through its mock SMTP server, store emails, and even relay them on.

Ralph Slooten

Zygo: A Lisp Interpreter in 100% Go“Written in Go and plays nicely with Go programs and Go structs,” it could provide you with an interesting way to provide a DSL within Go apps.

Jason E. Aten, Ph.D.

Watermill: Library for Building Event-Driven Apps — A library for working with message streams (over numerous channels like Kafka, RabbitMQ, HTTP or even MySQL binlogs) to build event driven apps.

Three Dots Labs

Jobs

Find a Job Through Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
Hired

  • GoLand 2023.2 EAP7
    ↳ Now includes a LSP API for plugin developers.

  • Centrifugo v5
    ↳ Scalable real-time messaging server.

  • TiDB 7.2
    ↳ Distributed MySQL-compatible HTAP database. (Repo.)

  • FerretDB 1.5
    ↳ MongoDB alternative built atop Postgres (or, now, SQLite).

  • env 9.0
    ↳ Parse environment variables into a struct.

  • Goxygen 0.6
    ↳ Generate a full stack Web project. Now with Go 1.20 support.

  • Column 0.4
    ↳ High-performance, columnar in-memory store.

  • Kubo 0.21
    ↳ IPFS implementation in Go