The story of one of my worst programming failures

My Rust dev setup in 2026

You don’t need many tools to write Rust—just a decent editor, and maybe an AI assistant or two. Here’s my Rust dev setup in 2026.

//go:fix inline and the source-level inliner

How Go 1.26's source-level inliner works, and how it can help you with self-service API migrations.

The Scheduler

In the previous article we explored how Go’s memory allocator manages heap memory — grabbing large arenas from the OS, dividing them into spans and size classes, and using a three-level hierarchy (mcache, mcentral, mheap) to make most allocations lock-free. A key detail...

Go errors: to wrap or not to wrap?

Exploring the tradeoffs between wrapping errors at every return site versus wrapping only at boundaries, with no definitive answer - just honest tradeoffs for the kind of software I write.

Go 1.26.1-1 and 1.25.8-1 Microsoft builds now available

A new release of the Microsoft build of Go including security fixes is now available for download. The post Go 1.26.1-1 and 1.25.8-1 Microsoft builds now available appeared first on Microsoft for Go Developers.

You'll never see my child's face

I became a dad recently, and I’m not publishing a bunch of photos of my kid like most parents do. Some people started asking me why, so here it is.

How Go 1.26 stack allocation optimizations beat hand-optimized code

#​592 — March 6, 2026 Read the Web Version Go Weekly Allocating on the Stack in Go 1.25+ — Go 1.25 and 1.26 reduce garbage collector overhead by stack-allocating slices in more cases than ever before — including, in 1.26, slices th...

Mutate your locked state inside a closure

Why your mutex wrapper should accept a closure for mutation instead of a plain value, with examples from the standard library and Tailscale.

Log messages are mostly for the people operating your software