Skip to main content

Sessions

What happens in the room each week, what to bring, and how it relates to the target you are carrying.

Each week you apply that week's technique to one program. Where your assignment target suits the technique, use it — the work counts twice, and several weeks are built so that it will. Where it does not suit, take one of the suggestions offered; understanding a technique your own target does not need is most of what the course is for.

No target fits all twelve weeks. Week 3 wants something written in JavaScript; week 9 wants something you can obtain as a compiled binary; week 11 wants something that draws. Suggestions are given every week so that nobody spends the hour deciding what to work on.

Because the room is working on different programs, the comparison across the room is the part you cannot get alone — the same technique against a dozen targets, succeeding and failing for reasons you would never have hit yourself. Bring a laptop, and something you are prepared to be wrong about.

Four things that should not work

Run a PC, a kernel and two games in a browser tab, and form an opinion about what each one costs before anybody tells you

Week 1 · 22 February 2027

What does it need?

Take a program apart from the outside and write down what it requires, using evidence rather than assumption

Week 2 · 1 March 2027

The shim that almost works

Run real programs against a fake runtime and find the exact line where impersonation stops paying

Week 3 · 8 March 2027

Which interface stops you first?

Compile several things that have no business compiling, and find the pattern in how they fail

Week 4 · 15 March 2027

What does it ask the kernel for?

Take the syscall inventory of a real program and decide which surface could actually host it

Week 5 · 22 March 2027

Tested in Node, broken in a tab

Reproduce a defect that only exists in a browser, and work out what your test environment was quietly forgiving

Week 6 · 29 March 2027

What does it need from a filesystem?

Establish what your program actually requires of a filesystem, then break a filesystem that looks correct

Week 7 · 12 April 2027

What does it talk to?

Inventory your program's network requirements, then find out which of them a browser can actually satisfy and what the rest would cost

Week 8 · 19 April 2027

Could it run unmodified?

Establish what it would take to run your target as a binary rather than as source, and price the answer

Week 9 · 26 April 2027

Measuring a kernel

Take your own numbers off a prepared machine, then work out what a whole operating system would cost your target

Week 10 · 3 May 2027

The rendering path

Trace a pixel from a program to the screen, and find out what a committed approach leaves you able to draw with

Week 11 · 10 May 2027

Defending the commitment

Present the approach you committed to and have it attacked by people who committed to something else

Week 12 · 17 May 2027