Before you walk in
Prepare
Most of every class is time at the keyboard, and that is the expensive kind: the room, the kit and the technician are all there at once. Every block below says what you must already be able to do, three things to actually go and do, and what to bring.
npx remotion studio
from Class 6. A toolchain fought in the first hour of a class is an hour of everybody's time, and
the toolchain is never what we are there to learn.Why a Technical Director Writes Code
What you must already be able to do#
Nothing about programming. This class assumes only that you have used a computer to do production work: a cue sheet, a patch, a plot, a budget. Bring that experience, because the whole class is about it.
You should be able to open a terminal on your own laptop and see a prompt. That is all. If you have never done it, Foundations gets you there in ten minutes.
Three things to do#
- Find the most repetitive thing you did on your last production. Renaming forty files. Retyping a channel list into three documents. Checking two hundred fixture addresses by eye. Write down what it was, how long it took, and how many times you did it. Bring the number.
- Ask one person who is not on your course what a computer program is. Write down their answer word for word. We will use several of these.
- Install one thing and confirm it runs. Python 3, from python.org or your package manager. Open a terminal, type
python3 --version, and write down what it says. If it says nothing you recognise, bring that too: half the class has the same problem and it takes four minutes to fix together rather than forty alone.
What to bring#
A laptop you are allowed to install software on. That last part is not a detail. A locked-down machine you cannot install a compiler on will cost you every practical block of this course. If your only machine is locked, tell the department now rather than in Class 2.
Inside the Language
What you must already be able to do#
Answer the four questions from Class 1 about a program somebody hands you: what state it holds, what one pass does, what it assumes, and how it fails. Open a terminal and run python3 --version.
You should have read Foundations as far as binary and hexadecimal. This class does arithmetic in three bases and does not stop to explain them.
Three things to do#
- Type six lines into a Python prompt and be surprised twice. Run
python3, then enter each of these and write down what came back:0.1 + 0.2,10 / 3,10 // 3,"3" + "4",[1,2] + [3],[1,2] * 3. Two of those do something you did not expect. Bring the two. - Find the loop in something you already use. Open a QLab script, an Arduino sketch, a console's macro language, a spreadsheet formula that fills down. Find the part that repeats and write down what changes on each repetition.
- Read one page of documentation for a function you have never used and write, in one sentence, what it takes in and what it gives back. Any language. The skill being practised is reading a signature, and it is the one that transfers to every language you will ever meet.
- Read the two extension sections at the end of this class, which are hello world in ten languages and where each language came from. They are reading rather than a lecture: ten minutes, at your own pace, before you arrive. Bring one question about them. The class spends ten minutes on your questions and none on delivering material you can read faster than I can say it.
What to bring#
Laptop with Python 3 running. A text editor you have actually configured: VS Code is the default and is free. The two surprising results from task 1.
Data, Structure and Keeping the Work
What you must already be able to do#
Write a function with parameters and a return value, and read somebody else's signature. Convert text to a number and know why you had to. Explain the difference between a value and a reference, and why it caused the shared-cue bug in Class 2.
Three things to do#
- Export something real. A fixture list, a cue list, a schedule, a stock list. Get it out of whatever software owns it, as CSV. Open it in a text editor, not a spreadsheet, and look at what is actually in the file. Bring it. We will parse the ones the class brings, and they will be messier than any example I could invent, which is the point.
- Install git and make one commit.
git initin a folder, add a file,git commit. If it asks for a name and an email, give it one. That is the whole task. Bring the output ofgit log. - Write down the worst thing that has happened to a file you needed. Overwritten, lost, three versions and nobody knew which was current, saved on a machine that went back to the rental company. One paragraph. Everybody has one and it is the argument for the second half of the class.
What to bring#
Laptop with Python and git. Your exported CSV. The file disaster story.
Coding With AI
What you must already be able to do#
Read a function signature and say what goes in and what comes out. Answer the four questions from Class 1 about a program you did not write. Run a Python script from a terminal and read a traceback. Make a git commit, because you will want to be able to undo today's work.
Three things to do#
- Ask an AI tool for a script you actually want, run it, and write down what happened. Something small and real: rename these files, sum this column, convert this list. Any tool. Bring the prompt you used, the code you got, and one sentence on whether it worked first time.
- Ask the same tool a question you already know the answer to, in your own field. Something a technical director knows and the internet is vague about: what a fixture does on DMX loss, what the pin-out of a five pin XLR is, what happens when two devices share an IP address. Write down where the answer was right, and where it was subtly, confidently wrong. This one matters most.
- Find out what your placement or employer's policy is on AI-assisted work, and whether the code you write in this class could legally go into a paid production. If there is no policy, write that down, because that is the answer we will discuss.
What to bring#
Laptop. Access to at least one AI coding tool, whichever your department provides or you already use. The three written pieces above, especially the wrong answer from task 2.
From Code to Effect: Arduino and Raspberry Pi
What you must already be able to do#
Write and run a Python script. Read a function signature. Answer the four questions about code you did not write. Use git.
And everything you did in Electronics last year, which this class assumes outright rather than revisiting: that a pin sources about 20 mA and no more; that a floating input is undefined rather than off, and what a pull-up is for; that an ADC's accuracy is its reference's accuracy; what PWM is actually doing; why a switch bounces; and why nothing inductive is ever connected directly to a chip. You spent four hours on each of those with a meter in your hand, so this class spends none.
If any of that has gone, half an hour with Electronics Class 11 brings it back. Do that before you arrive rather than during the first lab.
The division between the two years is worth stating plainly, because it is what makes both classes short enough to be good. Electronics taught you the hardware, and used firmware as the thing that drove it. This class teaches the software, and treats the hardware as settled. Neither repeats the other, and if you find somewhere they do, that is a defect and I want to know.
Three things to do#
- Blink an LED on a board before you arrive. Any Arduino-compatible board. Install the toolchain, load the blink example, change the interval to 200 ms, watch it change. If the toolchain fights you it will fight you for the first hour of class instead, and the toolchain is not what we are here to learn.
- Get a shell on a Raspberry Pi, over SSH if you can, on a keyboard and monitor if you cannot. Run
uname -aandip addr. Write down the IP address it gave itself and how it got it. - Describe one effect you want to build, in five sentences: what the audience sees, what starts it, what happens if it starts twice, what happens if it loses power halfway, and who is standing near it. Bring it. We will build one of them, and the third and fourth sentences are the ones we will actually spend the time on.
What to bring#
Laptop with the Arduino toolchain and Python. A board, if you own one. A USB cable that carries data rather than only charge, which wastes the first ten minutes of every class of this kind. Your five sentence effect.
Capstone: Build It, Prove It, Hand It Over
What you must already be able to do#
Everything from Classes 1 to 5. In practice: read code you did not write and answer the four questions about it, convert types at the boundary, choose a data shape on purpose, use git, run generated code through the verification loop, and specify what your thing does when it is alone and confused.
Three things to do#
- Decide what you are building, and write the five sentences. What it does, what starts it, what happens if it starts twice, what happens if it loses power or its network halfway, and who is standing near it. This is the same five sentences as Class 5 and it is the specification. Bring it written down. If you cannot write the five, you have not chosen a project yet.
- Bring the ugly input. The real fixture export with the quoted comma in it. The cue list somebody edited by hand. The row with the empty field. Whatever your thing consumes, bring the worst genuine example of it you can find, not one you invented.
- Make the repository and commit something.
git init, a README with ten lines, one commit. Empty is fine. Arriving with the repository already made removes twenty minutes from everybody's afternoon.
What to bring#
Laptop with everything from the earlier classes working. Your five sentences. Your ugly input. Any hardware your project needs, tested at home, with the cable that carries data.