For the presenter · recording setup
Record it from here.
The deck is the whole instrument. Slides, live playgrounds and the terminal output are all on screen — you only need a second window for your notes.
Pick an edit
Two cuts of the same lesson. Same rigour, same eight terminal demos, same code — the short edit simply carries fewer slides around them. Either one works on its own.
Short edit
33 slides · ~46 min →
The spine: why RAG, both pipelines, what an embedding is, the build, and the silent failure. All eight demos, two playgrounds.
Full lesson54 slides · ~78 min →
Everything: the reference tables, the gotchas, the re-run trap, troubleshooting, the check-yourself drills and all five playgrounds.
Setup
- Open the deck and go fullscreen with F. Open the deck →
- Press S for the speaker window — your narration, a timer, and a preview of the next slide. Put it on your second monitor. Allow the popup the first time.
- Record the deck window only, not the speaker window.
- If you are also running the demos in a terminal, run
./run.sh checkfirst — it makes a real API call and catches a dead key before you are on camera.
One thing to know
The deck also has a Narration button (T) that shows the same
notes inline, for people working through it alone. Leave it closed while you record —
you want the speaker window instead.
Keys
| → ← | next / previous slide |
| S | speaker window |
| F | fullscreen |
| O | slide overview — good for jumping |
| B | blank the screen |
| T | narration drawer (for learners, not for recording) |
Every cue, in order
Where to switch to the terminal, and where to pick up the mouse. Generated from the deck, so it stays in step. Slide numbers are per edit.
Short edit · 33 slides
| Slide | Title | What happens |
|---|---|---|
| 2 | Two windows, eight demos | ./run.sh check |
| 6 | Models do not read words | python 01_tokens.py |
| 12 | This is not an LLM | python 02_embedding_shape.py |
| 13 | Does that actually hold? | python 03_similar_meaning.py |
| 19 | Load the files | python 04_load.py |
| 20 | Chunk them | python 05_chunk.py |
| 22 | Try it: watch the chunks re-cut | interactive — drive it with the mouse |
| 23 | Embed and store — one call does both | python 06_embed_store.py |
| 25 | Ask it something | python 07_query.py "Who founded SpaceX?" |
| 29 | Same store. Same question. Nothing crashes. | python 08_model_mismatch.py |
| 30 | Try it: flip the model, break the system | interactive — drive it with the mouse |
Full lesson · 54 slides
| Slide | Title | What happens |
|---|---|---|
| 3 | Two windows, eight demos | ./run.sh check |
| 7 | Models do not read words | python 01_tokens.py |
| 10 | Try it: when do you actually need RAG? | interactive — drive it with the mouse |
| 15 | This is not an LLM | python 02_embedding_shape.py |
| 17 | Does that actually hold? | python 03_similar_meaning.py |
| 18 | Try it: the neighbourhood map | interactive — drive it with the mouse |
| 30 | Five articles | python3 tools/fetch_docs.py |
| 32 | Load the files | python 04_load.py |
| 35 | Chunk them | python 05_chunk.py |
| 38 | Try it: watch the chunks re-cut | interactive — drive it with the mouse |
| 39 | Embed and store — one call does both | python 06_embed_store.py |
| 42 | Ask it something | python 07_query.py "Who founded SpaceX?" |
| 44 | Try it: ask, and watch the prompt build | interactive — drive it with the mouse |
| 45 | Run it twice, pay twice | python 06_embed_store.py --append |
| 48 | Same store. Same question. Nothing crashes. | python 08_model_mismatch.py |
| 49 | Try it: flip the model, break the system | interactive — drive it with the mouse |