About
Subscribe
Books
Courses
Training
Blog
Contact
Blog RSS
Bitfield Consulting
Friendly, professional Go & Rust training
0
Rust’s Result and Option types make elegant APIs
May 27

May 27 Rust’s Result and Option types make elegant APIs

John Arundel

The night is dark and full of errors, so how should we handle these gracefully and safely in our Rust programs? Let’s introduce two of every Rust programmer’s favourite types: Option and Result.

Inside AES: Go’s standard library implementation
May 17

May 17 Inside AES: Go’s standard library implementation

John Arundel

The AES cipher is complicated in principle, but the code isn’t all that scary in practice. Let’s take a look at the implementation in the Go standard library. Even I can understand it!

Pricing yourself: if you need the money, don't take the job
May 2

May 2 Pricing yourself: if you need the money, don't take the job

John Arundel

Money: how to get people to give it to you, how much to ask for, and how to be worth what you're asking. Some real talk about the challenges you’ll face as a newly independent worker.

The smallest thing in Go: iota, enums, and magic constants
Apr 10

Apr 10 The smallest thing in Go: iota, enums, and magic constants

John Arundel

iota is a neat feature of Go that lets us create “enums”: lists of constants with arbitrary values. Let’s find out how to use iota, with this quick tutorial.

Test names should be sentences: communicating intent in Go
Apr 5

Apr 5 Test names should be sentences: communicating intent in Go

John Arundel

Tests communicate a lot of information, to readers, other developers, and even our future selves. Well-written tests focus on a single unit of behaviour that can be described in a brief sentence, and we can use that sentence as the name of the test.

Programming with confidence: test-driven development (TDD) in Go
Mar 27

Mar 27 Programming with confidence: test-driven development (TDD) in Go

John Arundel

There’s an easy, pleasant, and reliable way to build software in Go, guided by tests. Let’s find out what it’s like to program with confidence, in the first part of this TDD tutorial series.

Type parameters in Go: making functions generic
Mar 10

Mar 10 Type parameters in Go: making functions generic

John Arundel

Now that generics have come to Go, let's take a look at the new syntax for type parameters. We’ll find out why we need type parameters, how we write them, and how we can use them to create generic functions in Go.

Generics in Go: upgrading your code to the new style
Mar 10

Mar 10 Generics in Go: upgrading your code to the new style

John Arundel

Generics what now? This friendly, down-to-earth tutorial series explains how Go’s generic functions and types work, why we need them, and where we can use them.

Master of my domain: how I started my own business
Feb 28

Feb 28 Master of my domain: how I started my own business

John Arundel

Let’s talk business—independent business, that is. What’s the cost of being the boss? Some more hard-learned lessons from my own horrible career.

Cryptography in Go: AES explained
Jan 26

Jan 26 Cryptography in Go: AES explained

John Arundel

AES is the modern standard encryption algorithm, but how does it work? Where does it come from? Let’s kick the tyres with a high-level overview of AES internals.

Being a good co-worker is your job now
Jan 3

Jan 3 Being a good co-worker is your job now

John Arundel

In the final part of this series on the world of work, we’ll talk about how not to suck at meetings.

Not a real developer: transitioning from IT to dev
Dec 6

Dec 6 Not a real developer: transitioning from IT to dev

John Arundel

In the second part of my tell-all memoir, we find out why I was constitutionally unsuited to employment in a structured environment, or indeed any environment.

People skills for developers: how to thrive in a diverse team
Nov 8

Nov 8 People skills for developers: how to thrive in a diverse team

John Arundel

In the second part of this series on career skills for software engineers, we’ll look at how to deal with that trickiest of species: human beings.

My horrible career: how it started vs how it’s going
Oct 11

Oct 11 My horrible career: how it started vs how it’s going

John Arundel

Dev advocate Zack Proser grilled me lightly about my career, and why I haven’t taken any of my own advice. Read the full interview, but pay no attention to the man behind the curtain.

You can do this: surviving day one as a new developer
Sep 13

Sep 13 You can do this: surviving day one as a new developer

John Arundel

It’s day one of your new job as a developer. What should you expect? How should you act? Will you survive “max Q“?

Fixing a fuzzed-up function: Go fuzz testing explained
Jul 5

Jul 5 Fixing a fuzzed-up function: Go fuzz testing explained

John Arundel

In the thrilling conclusion to our fuzz testing series, we’ll use Go’s fuzzer to find a real bug in our code, and also to verify the fix.

Target acquired: fuzz targets in Go tests
Jun 7

Jun 7 Target acquired: fuzz targets in Go tests

John Arundel

Let’s continue our exploration of fuzz testing in Go with a look at how to write a fuzz target for a (nearly) realistic function. This time we’ll try to detect a common kind of bug involving a confusion between runes and bytes.

What the fuzz? Introducing fuzz testing in Go
May 10

May 10 What the fuzz? Introducing fuzz testing in Go

John Arundel

Fuzz testing is Go’s clever way of generating new test inputs that you didn’t think of—and that may flush out some hidden bugs. Stand by for things to get a little fuzzy!

The Tao of Go: writing software with kindness
Apr 15

Apr 15 The Tao of Go: writing software with kindness

John Arundel

What is the Tao of Go, and how can we work with it, like a surfer going with the waves instead of struggling against them? By being kind, simple, humble, and not striving; here’s how.

Random and property-based testing in Go
Apr 12

Apr 12 Random and property-based testing in Go

John Arundel

Choosing good test cases for our Go programs can be a bit hit-and-miss. What if we could automate that process? Let’s talk about randomisation, property-based testing, and Go’s built-in fuzz testing feature.

Load More
 
 
 
 
0