Skip to content
liter8.sh
More
~/liter8/learn/README

The gyms

Eighteen gyms for the fundamentals of software engineering.

Eighteen free, hands-on gyms for the fundamentals of software engineering: Review, Secure, Debug, Test, Concurrency, Regex, SQL, Schema, Net, Shell, Git, Vim, System Design, Linux, Container, Deploy, Infra and Run. Each one runs a real engine in your browser and grades you on state. No account required.

Don't know where to start? Follow the roadmap → every gym listed after the ones it needs, with the reason.

01

The floor

5 gyms
  • run.liter8.sh

    Run — Predict the state before you press run

    A JavaScript execution gym: a real interpreter in your browser with a heap, a scope chain and a call stack you can step backwards. Predict what a program does before it runs — the value, the aliasing, the order — and be graded against the machine that did it. Free, local-first, no account required.

    Open run.liter8.sh ↗9 lessons · 16 exercisesengine: a tree-walking interpreter you can step backwardswhere it sits on the roadmap →
  • shell.liter8.sh

    Shell — The last interface that does not guess what you meant

    Learn the shell by driving a real one in your browser. Genuine quoting rules, the full expansion pipeline in order, a virtual filesystem with inodes, and grading on the state of that filesystem plus stdout plus the exit code.

    Open shell.liter8.sh ↗24 lessons · 7 tracksengine: a real shell with a virtual filesystemwhere it sits on the roadmap →
  • git.liter8.sh

    Git — Practise on a real object model

    Learn Git by driving a real commit graph in your browser. Type actual commands, watch the DAG, index, worktree and reflog change, and be graded on whether the repository truly reached the target state.

    Open git.liter8.sh ↗22 lessons · 26 drillsengine: a real Git object modelwhere it sits on the roadmap →
  • regex.liter8.sh

    Regex — Say what it matches before you run it

    A real backtracking regex engine in your browser, with every step visible. Predict what a pattern matches, write patterns against a step budget, and find the input that makes a generated regex hang. Free, local-first, no account required.

    Open regex.liter8.sh ↗18 lessons · 36 drills · 23 tasksengine: a backtracking VM that exposes every stepwhere it sits on the roadmap →
  • vim.liter8.sh

    Vim — Practise until it becomes instinct

    Learn Vim through interactive lessons, timed practice runs, and graded tests. Free, local-first, and no account required.

    Open vim.liter8.sh ↗51 lessons · 120 drillsengine: a deterministic Vim editing enginewhere it sits on the roadmap →
02

Reading

2 gyms
  • review.liter8.sh

    Review — Read the diff like it's lying to you

    A code review gym. Read a diff of the kind a model writes — clean, idiomatic, green test suite — find the one defect, name what class it is, and prove it with an input the correct build survives and this one does not. Free, local-first, no account required.

    Open review.liter8.sh ↗56 exercisesengine: a verifier that checks your witness inputwhere it sits on the roadmap →
  • test.liter8.sh

    Test — A green suite is a claim

    Write tests, then watch an engine break the code underneath them one edit at a time and count how many of those breaks your tests notice. Mutation testing as a learning instrument. Free, local-first, no account required.

    Open test.liter8.sh ↗10 lessons · 8 tracksengine: a mutation-testing enginewhere it sits on the roadmap →
03

Data

2 gyms
  • sql.liter8.sh

    SQL — Read the plan, not the query

    A real relational engine in your browser — parser, cost-based planner, statistics, volcano executor, MVCC. Write a query, see the rows it returned and the pages it cost. Free, local-first, no account required.

    Open sql.liter8.sh ↗23 lessons · 7 tracksengine: a relational engine with a cost-based plannerwhere it sits on the roadmap →
  • schema.liter8.sh

    Schema — Migrations that don't lock the table

    A database migration simulator in your browser: real lock levels, rewrites versus metadata changes, a live workload, and old and new application code running side by side. Write the migration, watch what it blocks, and ship it with the table still answering. Free, local-first, no account required.

    Open schema.liter8.sh ↗9 lessons · 10 tasks · 5 auditsengine: a lock manager conformed against real PostgreSQL 16where it sits on the roadmap →
04

The wire and the machine

3 gyms
  • net.liter8.sh

    Net — Read the handshake, not the docs

    A packet-level network simulator in your browser: links with latency and loss, DNS, TCP, TLS and HTTP as they actually happen. Read the capture, meet the latency budget, and find the retry loop that takes the upstream down. Free, local-first, no account required.

    Open net.liter8.sh ↗9 lessons · 7 tasksengine: a discrete-event packet simulatorwhere it sits on the roadmap →
  • linux.liter8.sh

    Linux — Read the strace, not the man page

    A Linux kernel simulator in your browser: a real process table, file descriptors in three levels, signals with honest delivery semantics, and a /proc generated from live kernel state. Run the program, read the trace it produced, and find out what the kernel actually did. Free, local-first, no account required.

    Open linux.liter8.sh ↗12 lessons · 5 tasks · 4 auditsengine: a syscall-level kernel model with /proc and stracewhere it sits on the roadmap →
  • concurrency.liter8.sh

    Concurrency — The bug that only happens on the fourteenth Tuesday

    A deterministic scheduler and model checker in your browser. Write concurrent code, and the engine explores the interleavings rather than running one — it finds the schedule that breaks your assertion and hands it back to step through, forwards and backwards.

    Open concurrency.liter8.sh ↗21 lessonsengine: a deterministic scheduler and model checkerwhere it sits on the roadmap →
05

Shipping

3 gyms
  • container.liter8.sh

    Container — An image is a filesystem diff, not a zip

    A container gym: a content-addressed layer store, a build cache that invalidates the way the real one does, and a runtime that isolates with namespaces and accounts with cgroups. Predict which layers rebuild, find out what your entrypoint does with SIGTERM, and be graded on the digest, the size and the signal. Free, local-first, no account required.

    Open container.liter8.sh ↗9 lessons · 9 tasks · 5 drillsengine: a layer store, a build cache and an OCI runtimewhere it sits on the roadmap →
  • infra.liter8.sh

    Infra — Read the plan before you apply

    An infrastructure-as-code gym: a configuration parser, a dependency graph, a state file, and a planner that tells an in-place change from a destroy and recreate. Read the plan an agent wrote, find what it is quietly about to replace, and be graded on the graph you hold. Free, local-first, no account required.

    Open infra.liter8.sh ↗9 lessons · 8 tasks · 6 drills · 4 auditsengine: a dependency graph with a real plan differwhere it sits on the roadmap →
  • deploy.liter8.sh

    Deploy — Declare the state, then watch the loop fight you

    A Kubernetes reconciliation simulator in your browser: spec and status, controllers on their own loops, probes and termination done properly, and traffic whose every failed request knows which controller decision caused it. Declare the state, then count what the rollout cost. Free, local-first, no account required.

    Open deploy.liter8.sh ↗10 lessons · 6 tasks · 2 incidentsengine: a reconciliation loop with a scheduler and live trafficwhere it sits on the roadmap →
06

Operating

3 gyms
  • system-design.liter8.sh

    System Design — Learn by operating systems

    Interactive System Design education. Build architectures, generate traffic, break them, and watch what happens. Completely free, no account required.

    Open system-design.liter8.sh ↗39 lessons · 4 labs · 4 missionsengine: a traffic simulator with real failure modeswhere it sits on the roadmap →
  • secure.liter8.sh

    Secure — Prove the exploit

    A security gym with a sandboxed application and an attacker console, entirely in your browser. Read a generated handler, find the defect, prove it with a request that succeeds on the vulnerable build and fails on the fixed one, then ship the fix. Free, local-first, no account required.

    Open secure.liter8.sh ↗21 lessons · 41 exercisesengine: a sandboxed app, an attacker console, and a witness verifierwhere it sits on the roadmap →
  • debug.liter8.sh

    Debug — Find the fault before the clock does

    An incident-response gym. Get paged into a simulated production system, read its traces, logs and metrics, prove a diagnosis, and ship a fix that holds. Free, local-first, no account required.

    Open debug.liter8.sh ↗9 incidentsengine: a simulated production system with traces, logs and metricswhere it sits on the roadmap →

All free. All local. Finish one and it hands you a mini certificate. Pick whichever you'd fail today.

Or ask the terminal