ReferenceExaminable
Numbers to know
Every number the course expects you to have, in class order. It is generated from the classes themselves, so it cannot drift from what you were actually taught. There is a short verbal quiz at the top of every class, drawn from this deck, so nothing in it is a surprise and nothing in it is a trick.
Class 1 · Why a Technical Director Writes Code #
| Thing | Value |
|---|---|
| Operations a modern CPU core executes per second | Roughly 10⁹, a thousand million |
| What a computer fundamentally does | Fetch, arithmetic, store, decide what is next |
| Layers between a voltage and a cue button | About eight |
| The four questions | State, each pass, assumptions, failure |
Loop rate for sleep(0.02) | 50 times per second, ignoring the work itself |
| Human perception threshold for a light change | Around 10 to 20 ms |
| Frames at 25 fps | 40 ms each |
| Automate when | Times × duration exceeds writing plus maintenance, or hand work is error-prone |
| The four failure modes | Crash, hang, hold last value, carry on regardless |
| Default failure mode if nobody chooses | Carry on regardless |
| What a fixture does on DMX loss | Holds its last look |
| What an amplifier does on clock loss | Mutes |
| What a hoist does on signal loss | Stops and holds |
Class 2 · Inside the Language #
| Thing | Value |
|---|---|
| Steps from source text to execution | Four: lex, parse, compile, execute |
Why 2 + 3 * 4 is 14 | Precedence is in the tree the parser builds |
| Bits in a double-precision float significand | 53 |
| Relative error of a double | About 1 part in 10¹⁶ |
0.1 + 0.2 in any IEEE 754 language | 0.30000000000000004 |
| Safe float comparison | abs(a - b) < tolerance |
| Range of an 8-bit unsigned integer | 0 to 255, which is one DMX slot |
| Range of a 16-bit unsigned integer | 0 to 65535, which is 16-bit pan or tilt |
| DMX universe size | 512 slots |
| What arrives from a file, network or serial port | Text, always, until you convert it |
| Simple values on assignment | Copied |
| Collections on assignment | Referenced, not copied |
| The four shapes of control flow | Sequence, branch, loop, call |
| The first thing to read in any function | Its signature, then one line of the docstring |
| What a patcher is | The parser's tree, edited directly, with the parsing step removed |
| Ladder logic | A graphical language in IEC 61131-3, and what runs safety-rated automation |
| What block languages remove | Syntax errors, not any of the four questions |
| Where a patch is weakest | Version control, search, review, reuse and scale |
| An unconnected input in most node environments | Silently zero, black or the last value, reported by nothing |
| C | 1972, for writing an operating system without assembly |
| Python | 1991, for scripting that is pleasant to read |
| JavaScript | 1995, designed in ten days, and it owns the browser by being the only option |
| Lua | 1993, small enough to embed inside another application |
| Rust | 2010, memory safety without a garbage collector |
| Ladder logic | 1960s, so electricians could program controllers from relay diagrams |
| Why a language dominates a field | Its original constraint is still that field's constraint |
| What the ceremony around hello world tells you | What the language decided to buy, and what it charged for it |
Class 3 · Data, Structure and Keeping the Work #
| Thing | Value |
|---|---|
| Finding an item in a list of n | Up to n comparisons |
| Finding an item in a dictionary | One lookup, regardless of size |
| A loop inside a loop over the same data | n², the shape that ambushes you |
| 4000 items, compared every pair | 16 million operations, about 0.2 s |
| 20 000 items, compared every pair | 400 million operations, about 30 s |
| Sorting n items | n log n |
| What a git commit stores | A snapshot of every file, not a difference |
| Commands covering 90 per cent of solo git | init, add, commit, log, checkout |
| Date format that sorts correctly | ISO 8601: YYYY-MM-DD |
| Bisections to search 1000 lines | About 10 |
| Where to convert text to numbers | At the boundary, on the way in |
| What an empty CSV field means | Whatever you decided in writing. Otherwise, a future argument |
| Copies of a repository needed for it to be a backup | At least two, on different machines |
| Lines in a project README | About ten, and never zero |
Class 4 · Coding With AI #
| Thing | Value |
|---|---|
| What a model computes | A probability distribution over the next token |
| A token, in English | About 0.75 of a word, three to four characters |
| A token, in code | Rather less; punctuation and identifiers split |
| Context window, current frontier models | Around one million tokens |
| Context window, smaller and older models | 200 000 tokens or fewer |
| Relative cost of output tokens | Several times input, typically about five |
| Cost of a cached prefix re-read | A large discount, on exact prefix match |
| Cost of asynchronous batch work | Typically about half |
| Where the model is strongest | Common languages, conventional structure, boilerplate |
| Where it is weakest | Niche industry tooling, undocumented hardware, your rig |
| Steps in the loop | Describe, draft, read, run on a copy, prove by hand, commit |
| First thing to read in generated code | Anything that deletes, overwrites or writes |
| Most common dangerous generated behaviour | Silently skipping the rows it could not parse |
| What never goes to a model | Credentials, NDA material, personal data, network diagrams |
| What a model never sits between | A performer and a machine |
Class 5 · From Code to Effect: Arduino and Raspberry Pi #
| Thing | Value |
|---|---|
| Microcontroller response time | Microseconds, consistent |
| Raspberry Pi boot time | 20 to 40 seconds |
| A Pi's response time | Usually milliseconds. Not guaranteed |
| Button debounce | Ignore changes for 20 to 50 ms |
| Human-imperceptible check interval for a button | 10 ms |
| DMX512 data rate | 250 kbit/s |
| DMX512 full frame | Up to 23 ms, so 44 refreshes per second maximum |
| DMX slots in one universe | 512 |
| RGB pixels in one universe | 170 |
| Bytes per RGB pixel per frame | 3 |
| WS2812 write time per pixel | About 30 microseconds |
| 1000 WS2812 pixels, one frame | About 30 ms of blocking write |
| 5000 pixels at 40 fps | 600 kB/s, and 30 universes |
millis() wrap period | About 49 days |
| Correct timing comparison | millis() - started >= interval |
| A microcontroller pin's current limit | About 20 mA, and less across the whole chip |
| Cue timeout before going safe | Decided in the design meeting, written down |
Class 6 · Capstone: Build It, Prove It, Hand It Over #
| Thing | Value |
|---|---|
| The four steps of done | Works, survives, fails as chosen, somebody else can run it |
| Time in this class on making it work | One hour of four |
| Time on everything after that | Nearly three hours of four, which is the ratio of the job |
| Lines in a README | About ten, and never zero |
| Sentences specifying an effect | Five: what, what starts it, twice, power loss, who is near |
| Scope test for a capstone | Could you finish it badly in an afternoon |
| First thing to check in somebody else's | Can you run it from the README alone |
| First code to read in somebody else's | Everything that writes or deletes |
| Safe to run twice | Idempotent, and worth roughly double one that is not |
| Required before anything destructive | A dry run, and a copy |
| What a finding should contain | What you did, what happened, and the row or the traceback |
| Who is responsible for a generated line | Whoever shipped it |
| Value of a tool nobody else can run | Zero, from the day you are unavailable |