FREE, HANDS-ON SOFTWARE LABS

Practice software engineering by taking systems apart.

Interactive labs on caching, queues, consistency, architecture, and AI-assisted delivery, with real Python in your browser and a project you can show in your portfolio. New to programming? A free path takes you from your first function.

  • Free
  • No account needed
  • Progress stays on your device
  • English and Spanish

Python test workbench

test_cache.py
TerminalPASSED

Example: a Python test checks that an LRU cache evicts its least recently used item, and both tests pass.

Open the workbench ↗
THE LABS

Change one thing. Watch the system react.

Each lab isolates one idea: predict what will happen, move a lever, and check. Use them on their own, or as practice for a lesson.

8 more labs are in the works. See what is coming ↓

NEW TO PROGRAMMING? START HERE

Learning paths

A path is a sequence of stages with short lessons, practice, and checkpoints, free from start to finish. Lessons shared between paths count once.

Available

Software engineering

From values and functions to data structures, tests, APIs, architecture, distributed systems, production, and engineering with AI.

8 stages · 40 lessons · 15 Python challenges · 5 experiments

Open the path ↗
  1. 01First principles
  2. 02Data & decisions
  3. 03Code you can trust
  4. 04Programs meet the world
  5. 05Software Architecture
  6. 06Systems under pressure
  7. 07Engineering in the open
  8. 08Engineering with AI

4 more paths are in the works. See what is coming ↓

HOW YOU LEARN HERE

Understand, experiment, build, repeat.

Lessons you can see

Every lesson has a diagram, short sections, glossary terms explained on the spot, and a two-question checkpoint. Spaced recall brings ideas back before you forget them.

Real Python, no setup

Write and run Python in the browser against real tests. Hints when you are stuck, and your drafts are saved as you type.

Experiments with levers

Change one variable and watch a cache, a queue, or a replica react. Predict first, then check.

A project that grows with you

Relay starts as a tiny job queue and gains an API, a database, workers, and observability, one stage at a time.

THE PROJECT

Relay: from a list in memory to a system that survives failure.

One codebase, seven evolutions. Each stage adds a capability you can explain, test, and show in an interview.

  1. 01A useful programFirst principles
  2. 02Make the data do the workData & decisions
  3. 03A codebase someone else can trustCode you can trust
  4. 04Turn the program into a servicePrograms meet the world
  5. 05An architecture with a reasonSoftware Architecture
  6. 06Design for concurrency and failureSystems under pressure
  7. 07Operate it and explain your decisionsEngineering in the open
WHAT’S NEXT

New labs first, then new paths.

A direction, not a promise: what is being planned and in which order. New labs come first, because each one is practice you can use on its own. Everything here will be free, like the rest.

Labs in the works

01
Up nextWorkbench

SQL workbench

Write SQL against a small seeded database that runs in your browser, check each query against the expected rows, and keep your drafts as you go. The same editor as the Python challenges, for joins, grouping, and constraints.

  • SQL
  • joins & grouping
  • SQLite in the browser
02
PlannedExperiment

Rate limits under pressure

Send bursts of traffic to a fixed window, a sliding window, and a token bucket side by side. See where each one lets a burst through, what a refused client receives, and how a limit protects a shared service. The Python challenge builds one token bucket; this lab compares the algorithms under traffic.

  • token bucket
  • sliding window
  • HTTP 429
03
PlannedExperiment

Retries without a storm

Many clients retry against a service that is recovering. Compare immediate retries, exponential backoff, jitter, and a retry budget, and watch when retries help and when they keep the service down. The Python challenge computes one schedule; here you see a crowd of clients at once.

  • backoff
  • jitter
  • retry budget
04
PlannedExperiment

Index or full scan

Move a selectivity slider and compare reading a table through an index with scanning all of it, then add writes and watch each index slow them down. The search experiment compares two ways to search a sorted list; this one asks when a database should keep that sorted shortcut at all.

  • indexes
  • selectivity
  • query plans
05
PlannedWorkbench

Visual Git

Run commit, branch, merge, rebase, reset, and revert, and watch the commit graph and HEAD change as you type. Challenges ask you to reach a target graph or recover a lost commit, without touching your own repositories.

  • branches
  • merge & rebase
  • recovering work
06
PlannedWorkbench

A terminal you cannot break

A simulated shell on a virtual file system: move around, combine small tools with pipes and redirection, and solve tasks checked by the files you leave behind. It is deterministic and safe, so a wrong command costs nothing.

  • shell
  • pipes
  • exit codes
07
ExploringExperiment

Spread the load

Send requests to several servers with round robin, least connections, and two random choices. Slow one server down and see which policy notices. The queues experiment has one shared line; here each server has its own, and the balancer has to choose.

  • round robin
  • least connections
  • tail latency
08
ExploringWorkbench

Follow the signal

A service gets slow. Use its logs, metrics, and a trace to find the dependency behind it, write down the evidence, and decide which alert would have caught it sooner.

  • logs
  • metrics
  • traces

Paths in the works

01
Up next

Fundamentals

Start from zero: how a computer works and why software runs, logic and your first programs in Python, and algorithmic thinking with searching, sorting, and recursion. The recommended first path.

  • how computers work
  • logic & Python
  • 15 lessons
02
Planned

Terminal & Git

Move around a Linux shell with confidence, combine small tools with pipes, write safe bash scripts, and use Git without fear: branches, merges, and recovering lost work. With a simulated terminal and a visual Git lab in the browser.

  • bash
  • Git
  • 10 lessons
03
Planned

Data engineering

From your first SQL query to modeling, query plans, isolation levels, and incremental pipelines, then streaming and data in production. With a SQL workbench in the browser and Pulse, an analytics pipeline built on Relay.

  • SQL
  • pipelines
  • Pulse project
04
Planned

DevOps

Servers, containers, continuous delivery, infrastructure as code, orchestration, and reliability, practiced with browser simulations and guided local exercises, ending with Ship Relay: package, deploy, observe, and operate the system you built, optionally on a free cloud account.

  • containers
  • CI/CD
  • Ship Relay

Honest by design

No account, your data stays with you

Your progress, notes, and drafts live in your browser, not on a server. Export a backup whenever you like.

Evidence over hype

The learning design follows research on retrieval, spacing, and worked examples, and says where the evidence ends.

Built to be reviewed

Every exercise is tested automatically, and the content says plainly what has not been reviewed yet.

Read the learning design ↗

Not sure where to begin?

Answer a few short questions and get a starting stage. About three minutes, nothing is graded.