#​455 — April 11, 2023

Unsub  |  Web Version

ℹ️ As mentioned last time, Go Weekly is now sent on Tuesdays, so if you missed us at all, we're now back on schedule 😄
Peter Cooper, your editor

Together with  Teleport logo

The Go Weekly Newsletter

The Smallest Go Binary - 5KB? — I thought this sounded a bit silly at first, especially dated April 1st, but the author (also the main maintainer of purego) had an interesting use case: they wanted to use Go’s assembler but not Go’s runtime. Turns out it’s possible, with a lot of fiddling around. Note: You will almost certainly never need to do this yourself, but it's fun to see the parts involved in doing so.

Over Engineered

Developing a RESTful API with Go and Gin — It’s neat to see a tutorial like this pop up on the official Go site. It walks through the basics of using Gin to create a simple RESTful API that stores its data in memory for simplicity.

Official Go Docs

What's Next in Kubernetes Access? — Manage and audit access to all Kubernetes infrastructure - databases, clusters, and more - using biometrics rather than shared tokens and gain visibility on all actions in a K8s pod with full session recordings, all with a free trial of Teleport.

Teleport | goteleport.com sponsor

FerretDB 1.0: An Open Source MongoDB Alternative — FerretDB is an interesting project we’ve been following over the past year. Built in Go, it converts MongoDB’s wire protocol queries into SQL with Postgres on the backend, so you can reproduce the MongoDB experience but without its controversial license change.

Peter Farkas

What's New in GoLand 2023.1 — GoLand is a popular (though commercial) IDE in the Go space, often coming in second only to VS Code, so it’s interesting to see what they’ve added. The latest version introduces a vulnerability checker and vulnerable package updater, improved gRPC tooling, and the ability to run ‘scratch’ files with non-standard-library packages.



How Do You Name Your Go Variables — While this is a simple question on the surface, it often generates a ton of very strong opinions and lively discussion, as it did with the Lobsters community.


Send Transactional Emails with Golang — Step-by-step guide with three different methods: SMTP, 3rd party email provider, and with notification infrastructure.

Courier.com sponsor

How to Secure a Go App with JWT — Authentication and authorization with middleware while staying stateless with REST.

Dilara Görüm

🛠 Code & Tools

Excelize: Library for Working with Excel Spreadsheets — Read and write XLAM / XLSM / XLSX / XLTM / and XLTX files. A long time library that keeps going from strength to strength. GitHub repo.


GoReleaser v1.17: Go Binary Build and Delivery Tool — The motivation for GoReleaser is to simplify the release process by building binaries for multiple platforms, creating a GitHub release, and even releasing a Homebrew formula. GitHub repo.

Carlos Alexandro Becker

Authorization Simplified with an Open-Source Authorizer Written in Go — Topaz is a Go native authorization service with built-in support for every authorization model: RBAC, ABAC, and ReBAC.

Aserto sponsor

Tokenizer: Pure Go Implementation of OpenAI's Tokenizer — When you use OpenAI’s GPT, input and output is delivered in ‘tokens’ which are not the same as characters, syllables or words, but somewhere in between. Truly mindboggling.

Wahlmann and Wendt

bearclaw: A Tiny Static Site Generator“makes converting markdown into websites easy.” Offers an RSS feed too. Possibly worth considering if you want something even simpler than Hugo.




Site Reliability Engineer — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers.
Sticker Mule

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.

🕰   ICYMI (Some older stuff we might have missed)

GitHub Actions and Go — A CI workflow for Go you can reuse and tailor to your own needs. See the final build.yml.
Oleg Kovalov

Comprehensive Guide to Testing in Go — Covers things like table-driven tests, fuzzing, and parallel tests.
Alexandre Couëdelo

Efficiently Writing Binary Data..or speeding up writing binary data in Go by 14x. Serializing data structures is a common need, but in some cases you may need a more efficient option than binary.Write.
Javier Honduvilla Coto

Speeding Up a CLI App with Concurrency
Michael Cuffaro