Skip to content

the catalogue

64 courses, two planes.

32 in Go, 32 in Rust. Every course is taught live to 8 people or fewer and costs £9.64 to £149.64, VAT included where it applies. None of them can be bought without talking to us first.

32 of 64 courses

Rust · Language

Ownership, traits and lifetimes, down to unsafe and the memory model.

R1.1

Rust from the first line

Variables, enums, pattern matching, Cargo, and a first honest meeting with ownership, on a command-line tool you write yourself. For people who have never written Rust, or who bounced off it once.

vec!["Ownership", "Enums", "Pattern matching", "Cargo"]

Level
Beginner
Main tool
Rust
Length
3 weeks
Price
£11.64

R1.2

Ownership and lifetimes, for real

Moves, borrows, lifetimes, Box, Rc, Arc and interior mutability, until the compiler's errors read like advice. You rewrite a design the borrow checker keeps refusing, and find out why it was right.

vec!["Borrowing", "Lifetimes", "Smart pointers", "Interior mutability"]

Level
Intermediate
Main tool
Rust
Length
3 weeks
Price
£33.64

R1.3

Traits, generics and API design

Traits, generics, iterators, error handling and the patterns the standard library uses. You design a small crate with an API that makes the wrong call fail to compile.

vec!["Traits", "Iterators", "Error types", "Crate design"]

Level
Intermediate
Main tool
Rust
Length
4 weeks
Price
£41.64

R1.4

Deep dive

Write your own Vec

Raw pointers, allocation, unsafe contracts, undefined behaviour and the memory model. You build Vec and a small arena allocator from scratch, then run them under Miri until it has nothing left to say.

vec!["Unsafe", "Miri", "Allocators", "Memory model"]

Level
Advanced
Main tool
Miri
Length
5 weeks
Price
£109.64

Rust · Concurrency

Threads, Send and Sync, async with Tokio, and how an executor works.

R2.1

Threads, Send and Sync

Threads, channels, Mutex and Arc, and the two marker traits that turn data races into compile errors. You write the program from our homepage, watch it fail to build, and then fix it three ways.

vec!["Threads", "Send", "Sync", "Channels"]

Level
Beginner
Main tool
Rust
Length
3 weeks
Price
£16.64

R2.2

Async Rust with Tokio

Tasks, select, channels, timeouts, and the rules that keep one blocking call from stalling everything. You build a small network service and watch it run in tokio-console.

vec!["Tokio", "Tasks", "select!", "tokio-console"]

Level
Intermediate
Main tool
Tokio
Length
4 weeks
Price
£51.64

R2.3

Async that holds up

Cancellation safety, streams, tower middleware, backpressure and graceful shutdown. You find the bug where a dropped future loses data, and design it out of the service for good.

vec!["Cancellation", "Streams", "tower", "Backpressure"]

Level
Intermediate
Main tool
tower
Length
3 weeks
Price
£31.64

R2.4

Deep dive

An async runtime from scratch

Futures, Pin, wakers and a reactor on top of epoll: you write a working executor, then a small HTTP server on it, and test the hard parts with loom. Tokio stops being magic in about the fourth week.

vec!["Futures", "Pin", "Wakers", "loom"]

Level
Advanced
Main tool
Rust
Length
5 weeks
Price
£93.64

Rust · Testing

What the compiler can't check: integration, properties, fuzzing and simulation.

R3.1

Testing Rust from the first test

Unit tests, integration tests, doc tests and cargo-nextest, and what the type system means you no longer have to test. For people who have been trusting the compiler to do everything.

vec!["Unit tests", "Doc tests", "cargo-nextest", "Coverage"]

Level
Beginner
Main tool
cargo test
Length
2 weeks
Price
£13.64

R3.2

Testing against the real thing in Rust

Real PostgreSQL in containers, sqlx test transactions, fakes behind traits and snapshot tests with insta. You delete the tests that were only testing the mocks.

vec!["sqlx", "Fakes", "insta", "Snapshots"]

Level
Intermediate
Main tool
Testcontainers
Length
3 weeks
Price
£42.64

R3.3

Property tests and fuzzing in Rust

proptest, cargo-fuzz and cargo-mutants, to catch the cases nobody thought to write down. A parser that never panics is harder to write than it looks, and you'll have one by the end.

vec!["proptest", "cargo-fuzz", "cargo-mutants", "Panics"]

Level
Intermediate
Main tool
proptest
Length
3 weeks
Price
£38.64

R3.4

Deep dive

Load, failure and simulation in Rust

Load tests, fault injection and deterministic simulation with turmoil, where a whole network of services runs inside one process. You reproduce a one-in-a-million bug on demand, then fix it.

vec!["Load testing", "Fault injection", "turmoil", "Simulation"]

Level
Advanced
Main tool
turmoil
Length
5 weeks
Price
£103.64

Rust · Services

axum, sqlx and tonic, with the compiler checking your queries, then your own storage engine.

R4.1

Your first Rust service

An HTTP API with axum, Tokio and serde: routing, extractors, validation and errors as types, with tests that call real handlers. For people who know a little Rust and want it to do a job.

vec!["axum", "serde", "Extractors", "Error types"]

Level
Beginner
Main tool
axum
Length
2 weeks
Price
£12.64

R4.2

Rust and PostgreSQL

sqlx and queries checked against a real database at compile time, connection pools, transactions and migrations. You change a column and let the compiler list every query you just broke.

vec!["sqlx", "Transactions", "Migrations", "Compile-time SQL"]

Level
Intermediate
Main tool
sqlx
Length
3 weeks
Price
£29.64

R4.3

gRPC and service contracts in Rust

Protobuf, tonic, streaming, deadlines and tower middleware, plus the schema changes a client you can't see will survive. You connect a Rust service to a Go one and evolve the contract between them.

vec!["Protobuf", "tonic", "Streaming", "Versioning"]

Level
Intermediate
Main tool
tonic
Length
4 weeks
Price
£57.64

R4.4

Deep dive

A storage engine in Rust

A write-ahead log, a B-tree, memory-mapped files and crash recovery, built from an empty file with the type system guarding the invariants. You pull the plug mid-write and prove that nothing was lost.

vec!["WAL", "B-trees", "mmap", "Crash testing"]

Level
Advanced
Main tool
Rust
Length
5 weeks
Price
£105.64

Rust · Data

SQL, caches and streams, down to a vectorised query engine of your own.

R5.1

SQL for Rust developers

Tables, keys, joins, aggregates, transactions and schema design, written by hand in psql and then called from Rust. For people who know the borrow checker better than they know a query plan.

vec!["Joins", "Transactions", "Schema design", "psql"]

Level
Beginner
Main tool
PostgreSQL
Length
3 weeks
Price
£17.64

R5.2

Caching and Redis in Rust

In-process caches with moka, Redis behind them, and the expiry, invalidation and stampede problems that come with both. You make a read-heavy endpoint an order of magnitude faster and keep it correct.

vec!["moka", "Invalidation", "Stampedes", "Expiry"]

Level
Intermediate
Main tool
Redis
Length
3 weeks
Price
£30.64

R5.3

Streams with Kafka and NATS in Rust

rdkafka and async-nats, consumer groups, ordering and the transactional outbox, with backpressure from Tokio to the broker. You move one feature onto a stream without losing a single event.

vec!["rdkafka", "async-nats", "Outbox", "Backpressure"]

Level
Intermediate
Main tool
Kafka
Length
4 weeks
Price
£54.64

R5.4

Deep dive

A query engine in Rust

A SQL parser, a planner and a vectorised executor over Apache Arrow, with enough of DataFusion read along the way to see how the real thing does it. You run one query through every stage and profile each of them.

vec!["Arrow", "DataFusion", "Query planning", "Vectorisation"]

Level
Advanced
Main tool
Arrow
Length
5 weeks
Price
£115.64

Rust · Systems

Sockets, proxies and replication, ending with Raft from the paper, guarded by types.

R6.1

Networks from a raw socket in Rust

TCP, DNS, timeouts and connection pools, with std::net on one side of the screen and a packet capture on the other. For people who know Rust and have only seen a network through a library.

vec!["TCP", "DNS", "Timeouts", "Packet capture"]

Level
Beginner
Main tool
std::net
Length
3 weeks
Price
£19.64

R6.2

Build a reverse proxy in Rust

hyper, rustls and Tokio, with load balancing, health checks, retries and HTTP/2, in a proxy you write yourself. You put it in front of a real service and kill backends while the traffic keeps flowing.

vec!["hyper", "rustls", "Load balancing", "HTTP/2"]

Level
Intermediate
Main tool
hyper
Length
4 weeks
Price
£50.64

R6.3

Replication and consistency in Rust

Leaders, followers, quorums, clocks and what the word consistency actually promises, with the states of each protocol written as types. You partition your own store and see which guarantees survive.

vec!["Replication", "Quorums", "Clocks", "Type states"]

Level
Intermediate
Main tool
Rust
Length
4 weeks
Price
£60.64

R6.4

Deep dive

Write your own Raft in Rust

Leader election, log replication and snapshots, from the paper to a working key-value store, with the type system guarding the invariants and turmoil breaking the network. You find out why the paper is so careful.

vec!["Raft", "Consensus", "Snapshots", "turmoil"]

Level
Advanced
Main tool
Raft
Length
5 weeks
Price
£121.64

Rust · Security

What memory safety doesn't cover: auth, TLS, and attacking your own service.

R7.1

Secure Rust from day one

What memory safety covers and what it doesn't: input validation, injection, secrets and password hashing, built into a small service from the first commit. For people who assumed the compiler had this handled.

vec!["Validation", "Injection", "Secrets", "Password hashing"]

Level
Beginner
Main tool
Rust
Length
2 weeks
Price
£15.64

R7.2

Authentication and authorisation in Rust

Sessions, OAuth 2, OpenID Connect, where JWTs help and where they hurt, and permissions encoded as types so a missing check won't compile. You secure one API for a browser and a mobile app at once.

vec!["OAuth 2", "OIDC", "JWT", "Typed permissions"]

Level
Intermediate
Main tool
OAuth 2
Length
4 weeks
Price
£46.64

R7.3

TLS and cryptography in Rust

rustls, certificates, mutual TLS between services, and which primitives to reach for and which to leave alone. You run your own small certificate authority and rotate its keys without downtime.

vec!["rustls", "mTLS", "Certificates", "Key rotation"]

Level
Intermediate
Main tool
rustls
Length
3 weeks
Price
£40.64

R7.4

Deep dive

Breaking Rust services

Your own code, read the way an attacker reads it: logic bugs, panics as denial of service, unsafe blocks and the supply chain, with cargo-audit and cargo-vet on the way. You break into a deliberately weak service, then close every hole you used.

vec!["Panics", "Unsafe audits", "cargo-audit", "cargo-vet"]

Level
Advanced
Main tool
cargo-audit
Length
5 weeks
Price
£107.64

Rust · Production

Release builds, tracing and porting real services: everything after it compiles.

R8.1

Ship a Rust binary

Release profiles, static builds with musl, small images, cross-compiling, and CI that doesn't take twenty minutes. For people whose Rust has only ever run under cargo run.

vec!["Release profiles", "musl", "Containers", "CI caching"]

Level
Beginner
Main tool
Cargo
Length
2 weeks
Price
£14.64

R8.2

Observability in Rust

The tracing crate, OpenTelemetry, metrics and tokio-console, and why a span in async code is harder than it looks. You instrument a service until any slow request explains itself.

vec!["tracing", "OpenTelemetry", "Metrics", "Spans"]

Level
Intermediate
Main tool
tracing
Length
3 weeks
Price
£49.64

R8.3

Porting a service to Rust

Finding the part worth porting, measuring before you start, and moving traffic across one endpoint at a time. You replace one hot path in a running service and prove the gain, or prove there wasn't one.

vec!["Strangler pattern", "FFI", "Shadow traffic", "Benchmarks"]

Level
Intermediate
Main tool
Rust
Length
4 weeks
Price
£59.64

R8.4

Deep dive

Rust at high traffic

Profiling with perf and flamegraphs, allocators, zero-copy parsing, load shedding and running an incident. You keep a service up through a simulated launch day, then write the postmortem.

vec!["Flamegraphs", "Allocators", "Zero-copy", "Incidents"]

Level
Advanced
Main tool
perf
Length
6 weeks
Price
£149.64

start here

Write it in Go.

Small, plain and fast to ship. A runtime schedules your goroutines and collects your garbage, and you learn exactly what that costs.

The Go planefrom £9.64

or here

Write it in Rust.

No collector and no data races, enforced before the program runs. The compiler argues with you, and you learn what it's protecting.

The Rust planefrom £11.64

Not sure which? Write to us about what you're building and where it hurts: [email protected]