Skip to content
liter8.sh
~/liter8/00_hero

Free · hands-on · no account required

The model writes the code. You still make the call. Eighteen free, hands-on gyms across the whole stack — the shell, the object model, the planner, the kernel, the rollout.

new here? $ make all — the gyms in the order they need each other.

↓ keep reading. the cursor comes with you.

~/liter8/01_read.diff

A green suite is a claim. This is what checking it looks like.

Each snippet below is the kind a competent model produces: clean, idiomatic, tests passing, and wrong in exactly one line.

sum.js· model output · generated in 0.4s1 defect
export function total(items) {
let sum = 0;
for (let i = 0; i <= items.length; i++) {
sum += items[i].price;
}
return sum;
}

Read this.

line 3 · off-by-one

`<=` reads one past the last element. items[items.length] is undefined, and `.price` throws.

Caught it? That's the skill. Train it at review.liter8.sh

The suite is green. Read the lines anyway.

1/4
~/liter8/02_why.md

The argument

Why software-engineering fundamentals, now.

01

Reading is the new writing.

Generated code arrives faster than anyone can review it. The bottleneck moved from typing to judgment: does this diff do what it claims, and what happens on the input nobody tried?

02

The fundamentals, named.

Not a vibe. The execution model, the object graph under your commits, the query planner, the packet, the kernel, the reconcile loop. Six layers, eighteen gyms, one real engine each.

03

Practice on the real thing.

Every gym runs a real engine in your browser: a shell with inodes, a Git DAG, a SQL planner, a model checker. Grading is arithmetic on state, not an opinion about your answer.

~/liter8/03_gyms

The gyms

Eighteen gyms. One real engine each.

Six layers, from what you type into to what pages you at 3am. Pick whichever you'd fail today — every card is a live sketch of the engine underneath.

01

The floor

5 gyms
02

Reading

2 gyms
03

Data

2 gyms
04

The wire and the machine

3 gyms
05

Shipping

3 gyms
06

Operating

3 gyms

More than half of them close on the same track — reading what the model generated. Review is that track stretched to a whole gym.

See all eighteen with details →free · local-first · no account
~/liter8/04_how.md

How it works

How every gym works.

engineReal engine, not an animation.
Type actual commands. Watch the actual object model change. There are no fake dials and no cartoon graphs.
gradeGraded on state, not opinion.
Did the filesystem reach the target? Did the repository? Did your test notice the mutant? The engine checks, and it does not round up.
localLocal-first. Free forever.
No account, no backend, no analytics. Every byte of progress stays in your browser. It is the reason the whole thing can be free.
~/liter8/05_terminal

Or just ask the terminal

This site has been a shell since day one. It still is.

The cursor you followed down the page ends here, inside a real terminal (built on our own xterm-mock). Try:

  • $ cd learn
  • $ ls
  • $ cat sql
  • $ route sql
  • $ cat Makefile
  • $ help
guest@liter8:/
booting shell…
~/liter8/06_workbench.md

Also on the workbench

Open-source tools in Rust, Go and TypeScript, and engineering notes on the blog.