September 10, 2004

Performance programming

by Michael Mateas · , 4:31 pm

Alex McLean recently published Hacking Perl in Nightclubs at perl.com. Alex is a musician who performs electronic music by hacking music generation perl code live in a front of the audience. He’s also one of the founders, along with Nick Collins, of the Temporary Organisation for the Promotion of Live Algorithm Programming.

Why does Alex do perl programming performances? He says:

However, when running my Perl scripts during a performance I grew to feel as if I wasn’t really performing — I was running software I’d written earlier, so to some extent the performance was pre-prepared. I could tweak parameters and so on, but the underlying structure was dictated by my software. So what’s the alternative?

Over the last couple of months, I’ve moved toward writing software live, in front of an audience. If a programmer is onstage, then they should program!

He’s developed a perl infrastructure and a custom programming environment (his program editor doesn’t have a save command) that allows him to generate music through live code hacking. One of the interesting features of his environment is that the running code can modify it’s visible source code in the editor. He uses this feature to do things like have the program dynamically add and change comments in the code that describe what the program is currently doing; he has dynamic bi-directional communication with his running music generation processes at the source-code level.

Similar to the dogme manifesto, the TOPLAP Manifesto describes the conditions for live programming performances that qualify for the TOPLAP seal of approval. A couple of my favorite manifesto points: “Programs are instruments that can change themselves”, and “Code should be seen as well as heard, underlying algorithms viewed as well as their visual outcome.”

Programming performances can be seen as part of the contemporary software art movement (and indeed, TOPLAP participated in the Readme software art festival) as well as a current within the tradition of constrained programming, other examples being the Demoscene (1 2), competitions such as 5k (all program entries in 5K must be 5K or less in size), the modern classics game scene (people writing new games for historic consoles – Nick blogged about this recently) and generally anyone trying to pull off interesting programming feats on old, highly constrained hardware (check out the 1998 Manchester Baby programming competition)