In Go, pointers (mostly) don't go with slices in practice

I18n in Go: Managing Translations

Recently I've been building a fully internationalized (i18n) and localized (l10n) web application for the first time with Go's golang.org/x/text packages. I've found that the packages and tools that live under golang.org/x/text are really effective and well designed, although it...

Signing releases with cosign and GoReleaser

In GoReleaser v0.176.0 (both OSS and Pro), we released the ability to sign Docker images - with cosign in mind, and also did small quality-of-life improvements in the artifact signing feature. In this post we’ll explore how to quickly add this to your GoReleaser config so y...

Supply chain integrity with GoReleaser using Go mod proxy

Since the infamous SolarWinds attack, supply chain integrity is something a lot of people are discussing and working on. In this post we’ll see how we can verify a binary built with Go is indeed what it says it is. Building from Go mod proxy Using go install The easiest way...

Configuration (and configuration files) is not and cannot be generic

Some of my views on using YAML for human-written configuration files

Go keeps surprising me with its careful design and specification

Common Anti-Patterns in Go Web Applications

At one point in my career, I was no longer excited about the software I was building. My favorite part of the job were low-level details and complex algorithms. After switching to user-facing applications, they were mostly gone. It seemed programming was about moving data from on...

The Ultimate Channel Abstraction

Author(s): Changkun Ou Permalink: https://golang.design/research/ultimate-channel Recently, I have been rethinking the programming patterns regarding graphics applications, and already wrote a 3D graphics package in Go, called polyred. While I was designing the rendering pipelin...

Anonymous ("transparent") structures are a good thing in programming languages