#455 — April 11, 2023 |
ℹ️ As mentioned last time, Go Weekly is now sent on Tuesdays, so if you missed us at all, we're now back on schedule 😄 |
|
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. JetBrains |
IN BRIEF:
|
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. Lobsters |
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. QI-ANXIN GROUP |
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. bearclaw |
QUICK RELEASES:
|
|
🕰 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 |
Comprehensive Guide to Testing in Go — Covers things like table-driven tests, fuzzing, and parallel tests.
|
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 |
Speeding Up a CLI App with Concurrency
|