About
Subscribe
Books
Courses
Training
Blog
Contact
Sign In My Account
Blog RSS
Bitfield Consulting
Friendly, professional Go & Rust training
0
Red, green, refactor: writing perfect Go, with TDD
Nov 10

Nov 10 Red, green, refactor: writing perfect Go, with TDD

John Arundel

Make it work, then make it right: the “red, green, refactor” technique helps us craft Go code that’s correct and beautiful. It’s easy! Shall we play a game?

Put a little Pixie in your cluster
Nov 8

Nov 8 Put a little Pixie in your cluster

John Arundel

Pixie is a powerful troubleshooting and telemetry tool for clusters. Let’s see how it can help solve the Case of the Sluggish Service.

A hard rain's a-gonna fall: decoding JSON in Rust
Oct 27

Oct 27 A hard rain's a-gonna fall: decoding JSON in Rust

John Arundel

Everybody’s talking JSON at me, but I don’t hear a word they’re saying. Instead, I need to deserialize that data into a Rust value I can use. Luckily, there’s a crate for that.

The best Go training providers in 2025
Oct 13

Oct 13 The best Go training providers in 2025

John Arundel

Go is a unique language, and not all Go trainers are equal. Here's a breakdown of the community's favorite Go training providers and how to choose between them.

The best Rust training providers in 2025
Oct 11

Oct 11 The best Rust training providers in 2025

John Arundel

Choosing the right Rust training provider can be a tricky business. Here’s a shortlist of the five most trusted Rust trainers, with a breakdown of each offering and a handy comparison chart.

Starving, sleeping, and yielding: understanding Go's scheduler
Sep 29

Sep 29 Starving, sleeping, and yielding: understanding Go's scheduler

John Arundel

Writing concurrent programs is easy, but understanding why they don’t work is much harder. In our continuing tutorial, we’ll learn about when and why goroutines starve, sleep, or yield.

Self-driving people: is independence for you?
Sep 14

Sep 14 Self-driving people: is independence for you?

John Arundel

Your car may be self-driving (up to a point), but are you? Independent-minded people sooner or later reach a point where they can’t rise higher without becoming the boss. Should you go it alone and start your own business?

Elephants for breakfast: testing the untestable in Rust
Aug 29

Aug 29 Elephants for breakfast: testing the untestable in Rust

John Arundel

How do you test functions that can’t be tested? That’s easy: you don’t! Instead, you use the magic function technique to break down the elephants—excuse me, functions—into smaller bites that you can test.

Go go goroutines: understanding Go’s concurrency model
Aug 15

Aug 15 Go go goroutines: understanding Go’s concurrency model

John Arundel

Our brains can only do one thing at once, but Go programs can manage millions of independently-executing concurrent tasks. Let’s find out how that works, and learn why concurrency is central to Go.

Here comes the sun: building a weather client in Rust
Jul 6

Jul 6 Here comes the sun: building a weather client in Rust

John Arundel

Whither the weather? In another extract from the not-yet-award-winning book The Secrets of Rust: Tools, let’s write a simple API client that can tell us if it’s sweater or swimsuit season.

The joy of (type) sets: interfaces and generics in Go
Jun 14

Jun 14 The joy of (type) sets: interfaces and generics in Go

John Arundel

Generics introduces a whole new kind of interface to Go: one based not on methods, but on type sets. Let’s explore the possibilities.

For your eyes only: user-friendly errors in Rust
May 16

May 16 For your eyes only: user-friendly errors in Rust

John Arundel

Durable software not only handles errors, it presents them to users in a helpful and meaningful way. Let’s put the finishing touches to our line-counting program by completing the user interface.

Getting nothing done: how to let go and rest your mind
Apr 29

Apr 29 Getting nothing done: how to let go and rest your mind

John Arundel

You don't need a special place, or a special time, or even special clothes, to meditate. It's just letting the mind rest when it's not needed, and that's the case more often than you might think.

Bobcoin, blockchains, and cryptocurrency
Apr 12

Apr 12 Bobcoin, blockchains, and cryptocurrency

John Arundel

How do cryptocurrencies actually work, though? Join Alice and Bob as they embark on designing a new digital ledger for secure “Bobcoin” transactions.

Things fall apart: handling errors in Rust programs
Mar 24

Mar 24 Things fall apart: handling errors in Rust programs

John Arundel

The night is dark and full of errors—and durable Rust software is not only ready for them, but handles them sensibly. Let’s see how, by returning to our line-counter project.

Catching grace: don’t just do something, sit there
Mar 12

Mar 12 Catching grace: don’t just do something, sit there

John Arundel

Meditation is easy when you know what to do: absolutely nothing! It's hard at first, like trying to look at the back of your own head, but there's a knack to it.

Writing terrible code in Rust… makes great tests
Feb 27

Feb 27 Writing terrible code in Rust… makes great tests

John Arundel

The secret of being a great coder is to write terrible code. Wait, wait. Hear me out: I’m going somewhere with this.

Slow, flaky, and failing: tuning up your Go test suite
Jan 30

Jan 30 Slow, flaky, and failing: tuning up your Go test suite

John Arundel

Thou shalt not suffer a flaky test to live, because it’s annoying, counterproductive, and dangerous: one day it might fail for real, and you won’t notice. Here’s what to do.

How to know when it's time to go
Jan 13

Jan 13 How to know when it's time to go

John Arundel

Leaving a job is never easy, and it’s a consequential decision. But when it’s time, it’s time. Here’s how to escape the comfort trap, and take the next step in your career.

The magic function: designing clean APIs in Rust
Jan 3

Jan 3 The magic function: designing clean APIs in Rust

John Arundel

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.

Load More
 
 
 
 
0