Capturing console output in Go tests

Ideally, every function that writes to the stdout probably should ask for a io.Writer and write to it instead. However, it’s common to encounter functions like this: func frobnicate() { fmt.Println("do something") } This would be easier to test if frobnicate wou...

Automagically migrating `golangci-lint` configuration to v2 with Renovate

As mentioned in Using Renovate to manage updates to golangci-lint versions I very much recommend using Renovate to update your golangci-lint versions. With the release of golangci-lint v2 a couple of weeks ago, consumers need to perform a one-time migration of their configuration...

How much does a Go book author make?

#​549 — April 9, 2025 Unsub  |  Web Version Go Weekly Faster Shuffling in Go with Batching — Put down that deck of cards.. ‘shuffling’ here refers to moving the contents of an array about. It is based on expensive random inte...

I'm on Fallthrough: APIs: Design Imperfectly, Improve Relentlessly

A couple of weeks ago, I joined the lovely Kris Brandow and Ian Wester-Lopshire on the Fallthrough podcast to talk some more about API design. As I mentioned in I'm on Fallthrough: An Exploration of APIs, Versioning, & HTTP this was a planned follow-up, as we didn't quite cha...

My pessimism about changes to error handling in Go (but they'll happen)

Reproducing word2vec with JAX

The word2vec model was proposed in a 2013 paper by Google researchers called "Efficient Estimation of Word Representations in Vector Space", and was further refined by additional papers from the same team. It kick-started the modern use of embeddings - dense vector repr...

Is Clean Architecture Overengineering?

Quick takeaways Clean Architecture is most beneficial for complex projects with larger teams - for small teams or simple projects, it can become overengineering. Separation of concerns is the core benefit - keeping domain logic separate from implementation details makes code mor...

Getting a (vague) understanding of error handling in Rust

When is it OK to panic in Go?

#​548 — April 2, 2025 Unsub  |  Web Version Go Weekly A Guide to Optimizing for High Performance in Go — An in-progress collection of technical articles aimed at helping Go developers write faster, more efficient apps. The initial foc...

More predictable benchmarking with testing.B.Loop

Better benchmark looping in Go 1.24.