The magic function

How do you design user-friendly APIs in Rust? The answer is easy: you use them! Let’s build a simple Rust CLI tool using what I call the “magic function” approach.

Rust vs Go in 2025

Which is a better choice, Rust or Go? Which language should you choose for your next project, and why? How do the two compare in areas like performance, simplicity, safety, features, scale, and concurrency?

Why you can't meditate

You can't clear your mind, or achieve bliss by sitting on a special cushion. But you can start to gently train your brain to stop craving distraction and overstimulation. In this excerpt from Monk Mode, we'll see how.

Constraints in Go

Freedom is nothing without constraints, and Go’s generics gives us a powerful way to build polymorphic types and functions constrained by type sets. Let’s geek out.

Generic types in Go

What kind of idiot would carry a package for someone when they've absolutely no idea what's inside it? Well, generic types in Go are exactly like that, only in a good way.

Programming is fun

I was a guest on the Cup o’ Go podcast recently, talking with Shay Nehmad and Jonathan Hall about writing and teaching Go. Here’s a transcript of our chat.

Functional programming in Go

Thanks to generics, there are some interesting new ways to program in Go. This article explains how we can use functional programming techniques like Map, Filter, and Reduce, and what kind of problems they might help us to solve.

Iterators in Go

Iterators in Go are a neat way to write “lazy loops”, where we never generate more results than we actually use. Let’s see what that would look like in Go programs, and what new facilities it gives us in the standard library.

Shameless green

Building software is easy when we’re guided by tests, because we can start with quick-and-dirty solutions, without worrying about whether the code is elegant and readable—yet. Let’s see how to use the TDD technique called “Shameless Green”.