#​461 — May 23, 2023

Unsub  |  Web Version

Together with  Courier logo

Go Weekly

How to Start a Go Project in 2023 — The same author wrote a similar piece in 2018; a bit has changed since then. While this may be aimed at new gophers, experienced folks could find something to take away. “Older guides will mention setting up your $GOPATH. This is something you can comfortably ignore in 2023.” Quite!

Ben E. C. Boyter

On Adding a Reverse Operation to slices — The slices package defines several useful functions for working with slices, but there’s no way to reverse one in-place. This idea seems to be popular, though. There’s already a patch, and Russ Cox just recently put the idea forward to be reviewed at a proposal review meeting with the result being a 'likely accept.'

Alan Donovan et al.

We Built a Custom User Notification Center for Go Apps — This customizable service can be dropped into any front end and give the user a centralized place to interact with all things notifications like important alerts, customizable preferences, and even toast messages.

courier․com sponsor

A Guide to Zap Logging in GoZap is a popular, high-performance leveled logging option for Go and here’s a particularly well written, comprehensive, and practical walkthrough.

Better Stack Team


Let's Enhance http.ServeMux's Routing? — Jonathan Amsterdam has kicked off a discussion that he hopes will lead to a proposal to extend the standard HTTP multiplexer’s capabilities by adding HTTP method-based routing and support for wildcards in matched paths. It goes deeper than you’d expect and if you have any interest in HTTP serving and routing game, dive in.

Jonathan Amsterdam

C to WASM to Go — Adding MySQL-compatible regex support to Dolt (a Git-inspired SQL database) proved quite a journey with the simplest solution still being complex. This post touches on CGo, WebAssembly, go embed, and a slew of other tools and technologies.

Daylon Wilkins (DoltHub)

Video: Most Common Kubernetes Security Misconfigurations — Anaïs and Ben discuss Kubernetes misconfigurations, what they are, and how to identify, prevent, and fix them.

Teleport | goteleport․com sponsor

Using a Go Package in Python via Gopy — Gopher and Python sitting in a tree.. etc. etc. Gopy generates CPython extensions from Go packages, so you can use Go code from Python.

Arjun Mahishi

Steps to Build a 'Snake' Game in GoEbiten is ideal for this.

Kuldeep Singh

If you like this sort of thing, last year's guide on building a Pong game was good too. (Part two.)

🛠 Code & Tools

Mods: Charm-ing AI for the Command Line? — Those Charm folks (of Bubble Tea fame) are back again with another command line concoction: this time in the shape of an OpenAI-powered command line AI tool for analyzing code, making recommendations, writing docs, and more.


go-datastructures 1.1: Numerous Threadsafe Data Structures — There’s a lot packed in here: queues, heaps, trees, sets, tries, skiplists, graphs, and often multiple types of each.


Auth. Built for Devs, by Devs — Easily add login, registration, SSO, MFA, user management and a bazillion more auth features to your Go application.

FusionAuth sponsor

Simulated Hospital: Generate Realistic, Configurable Hospital Patient Data — Sadly it’s not a rehash of 1997’s Theme Hospital, but if you have to work with patient data (think HL7v2 records), then this ‘SimHospital’ might make your local testing and development easier and safer.


Gain: High-Perf io_uring Networking Framework in Pure Go — Currently only Linux is supported and it’s considered a not-for-prod alpha.

Paweł Gaczyński

Neotest: A Framework for Interacting with Tests from NeoVim — If you’re a NeoVim user, this is for you. It’s written in Lua but neotest-go extends it to support working with Go-based tests.

Rónán Carrigan et al.

  • FerretDB 1.2 – Open MongoDB alternative. Now with a SQLite backend option.

  • VHS 0.5 – CLI 'home video recorder'. "Write terminal GIFs as code for integration testing and demoing your CLI tools."

  • Roaring 1.3
    ↳ Compressed bitmap data structure.

  • Lancet 2.2
    ↳ 100+ common reusable functions for Go.

  • Buf 1.19
    ↳ CLI for working with Protocol Buffers.

  • DNSControl 4.0
    ↳ DSL to sync your DNS to multiple providers.

  • OpenFGA 1.1
    ↳ Google Zanzibar-inspired permissions engine.


Game of Realms Contributor in Gno.land — Want to do something different? Help build Gno.land, the next-generation smart contract platform for web3. We hire contributors.

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.

🧑‍💻 Got a job listing to share? Here's how.