Category Archives: misc


A busy couple of weeks ahead:

  • This weekend (Saturday 17th March) I am playing as part of slub at a live algorave in London.
  • Then the following weekend I’m doing a few things at the 2012 Lovebytes festival in Sheffield:
  • Friday 30th March – A performance at PRISM in Sheffield, in collaboration with choreography hacker Kate Sicchio.
  • Plus heads up for April 5th, a live coding seminar followed by performances at King’s College, London.

Quick custom Linux live CDs for workshops

People bring all kinds of laptops to workshops, and installing your software on them might take hours.  So it’s nice to just give everyone a bootable USB stick or CD, containing a live linux distribution (i.e. one that runs straight from the USB stick/CD) and the software.  This can get a room full of people up booting into an identical system in a matter of minutes.  Here’s an easy way that I’ve found to do it:

Choose your base distribution

For workshops, I like Linux Mint LXDE edition. It’s lightweight so works with less powerful machines that people might bring, and is based on Ubuntu.  There’s also a debian based edition of Linux Mint which is great, but it only comes in DVD size which doesn’t fit on cheaper USB sticks, and the customisation process takes long enough compressing a CD’s worth of OS.

Whatever version of linux you choose, download the .iso file of the installation CD or DVD.

Load the .iso file in a virtual machine

Install VirtualBox OSE, create a virtual machine with enough disk space for what you want to do, and set the CD of the virtual machine to point at the .iso you downloaded.  Then start the virtual machine, install the distribution to it, and boot into it.

Customise the OS

Install everything you need for the workshop.  You might want to remove some stuff too, especially if you want everything to fit back onto a CD.

Create a new .iso

Install remastersys and run this command:

sudo remastersys backup

This takes a fair few minutes to run, but is fully automated.  You end up with an .iso that is a live CD of the system you’ve customised.  Remastersys is really the hero there, I’ve gone through a manual process before and it was painful.

I have had one strange problem with running this under linux mint lxde — failed boots due to lack of ubninit.  For USB keys this is easily fixable by grabbing the initrd file from /boot in the virtual machine, and copying it into /ubninit on the USB key.  Not sure how you’d do it for CDs and DVDs, I guess you’d have to edit the .iso somehow.

Burn to CD or USB keys

I really recommend USB keys, I’ve found booting from CDs really slow on some machines, especially those apple mac laptops for some reason…  Plus a lot of laptops and netbooks don’t have CD drives these days.  To burn an .iso to USB I recommend unetbootin.  Be sure to unmount/eject/”safely remove” the USB key properly before removing it. **update** It seems Macs can’t boot from a USB key without hassle, so you have to burn CDs for mac people, or get them to buy a better computer.


Install an .iso distro into a virtualbox, get it right there, then use remastersys to make a new iso and burn to CD, or preferably write to USB keys with unetbootin.

Social network time

I’m privileged to be able to hear my grandmother Billie Campbell singing The Old Lamplighter in the 1940s, even though I was born after her death.  I’m also privileged to be able to see (but not hear) my great-grandfather John Ross Campbell on his release from being a political prisoner for incitement to mutiny in 1924.

I’m privileged because I’m in my 30s, and recordings were comparatively rare in my foremother and forefathers’ days — these singular glimpses are treasured as extraordinary, I feel very lucky to have them.  I really have no feeling of what it would be like to be a child born now, growing up with access to the  minutiae of my parents’ social networking timelines.  Overall probably positive, I think, but perhaps it could be more positive if we were made to be more mindful of what we say there.  Timelines are not just about a linear sequence of stray moments, but of the cycles of life, including the flashes of emotion around the birth and death of stages of life and of the lives of people.  Personal history is not just about projection from the past to the future, but also about the alignment of the lives of those we touch with our own.

I think that if the phrase “social network” is to live up to the meaning it had before the dawn of firefly, friendster, facebook and whatever comes next, then the programmers of these systems have to start taking a longer, more structured view of time.


Rumour has it that I may be something to do with the new ChordPunch label, which is promoting algorithmic music for ears and feet. Be careful not to get emotionally attached to any of the chordpunch output, their music, artist roster and administrative staff have algorithmic components in certain cases.

Attending to presentation slides

I had some fun with my talk at ICMC earlier this month.

I started in the usual way with an outline slide, going through bullet points one by one outlining the structure of my talk.  Importantly, I tried to talk continuously while the slide was up.

On the next slide was a picture of a boy throwing a stone into the sea, I talked about it for a while, making the point that it was easy to perceive the image while listening to my voice.  The audience hopefully found they could attend simultaneously to the visual scene and my linguistic speech.

I then skipped back to the previous slide and pointed out that the outline slide actually had little to do with what I had been saying.  Here’s the contents of that first slide:

  • A live coding talk towards the end of the conference
  • Some strange programming languages were shown
  • He made a point about cognition that I didn’t quite get
  • The demo didn’t work out too well
  • I was a bit tired but he seemed to be trying to say something about syntax

This got some laughs.  There were quite a lot of people in the room, and the slide had been up for a while, but as far as I could gather no-one had managed to read any of it.  My contention was that they couldn’t read it while listening to my voice, it’s too difficult to attend to two streams of language at once.  I didn’t really know what would happen, but from talking to audience members afterwards it seems at least some people got a sense that something was wrong, but couldn’t work out what it was until I told them.

This was a nice practical demonstration of Dual Coding theory, and lead into my argument for greater integration between visual and linguistic elements of computer languages.  However there’s probably a point in there about the design of presentation slides.  If you want people to listen to what you’re saying, put short prompts on your slides, but not real sentences, because the audience won’t be able read them while listening to your voice.


Bricolage programming example

I wrote this for the PPIG newsletter last year, but as there has been a hold-up in publishing the newsletter, I’ve put it here:

My paper for PPIG 2010 was about bricolage programmers, in
particular artists who write software without any clear plan, but just
reacting to the results of each edit. From feedback it is clear that
the paper could have done with a decent case study, so I thought I’d
contribute the following example to this newsletter. This is not
meant to illustrate great art, or indeed great programming, but just
to act as a talking point when discussing alternative approaches of
programming. Full versions of the examples are available
on sketchpatch.

Imagine a visual artist, programming their work using the Processing
environment, a language based on Java. They begin with an urge to
draw superimposed curved lines, and come up with the following
program, shown with its output:

  1. float rx() { return(random(width)); }
  2. float ry() { return(random(height)); }
  4. void draw() {
  5.   background(255);
  6.   for (int i = 0; i < 20; ++i) {
  7.     bezier(rx(), ry(), rx(), ry(), rx(), ry(), rx(), ry());
  8.   }
  9. }

On seeing the output, they are struck first by how hairy it looks,
but then by the suggestion of a scribble. They decide that they are
interested in the latter, and change their program to join the curves
together, removing the hairiness and accentuating the scribble:

  1. void draw() {
  2.   background(255);
  3.   float x = rx(); float y = ry();
  4.   for (int i = 0; i < 5; ++i) {
  5.     float x1 = rx(); float y1 = ry();
  6.     bezier(x, y, rx(), ry(), rx(), ry(), x1, y1);
  7.     x = x1; y = y1;
  8.   }
  9. }

The artist reflects upon the letter-like quality of the scribble
forms, and decides to try writing letters across the page, grouped
into word-like forms:

  1. float letterSpace = 30;
  3. float rx() { return(random(letterSpace + 10)); }
  4. float ry() { return(random(height - 10)); }
  5. int rWordlen() { return(3 + int(random(4))); }
  7. void draw() {
  8.   background(255);
  9.   int letters = (int) (width / letterSpace) - 4;
  10.   int wordLen = rWordlen();
  11.   int word = 0;
  12.   float x = rx(); float y = ry();
  13.   for (int letter = 0; letter < letters; ++letter) {
  14.     float ox = letter * letterSpace + word * letterSpace;
  15.     if (wordLen == 0) {
  16.       wordLen = rWordlen();
  17.       word++;
  18.     }
  19.     for (int i = 0; i < 3; ++i) {
  20.       float x1 = rx() + ox; float y1 = ry();
  21.       bezier(x, y, rx() + ox, ry(), rx() + ox, ry(), x1, y1);
  22.       x = x1; y = y1;
  23.     }
  24.   }
  25. }

The output has a handwritten quality, almost appearing to be readable,
a quality of `automatic writing’ used by mystics to supposedly channel
the spirit world. This may bring further conceptual development in
our artist’s mind, but at this point we leave will them pondering.

Programming of the Art Computer

After getting frustrated with trying to have a discussion about programming languages within the confines of twitter, I made a mailing list, mentioned it to a few people and suddenly 100 people appeared.  It’s called potac, Programming of the Art Computer, with the topic being the design of (rather than the use of) programming languages for the arts.  It’s unmoderated, but it’s well worth browsing the archives to get a feel for the topic before diving in.

New job + thesis progress

I’m looking forward to getting started as a research assistant (or associate, not sure) with the OAK group at Sheffield University, working with Simon Tucker on a linked data project for the next six months.  Well 80% of me will be doing that, the other 20% will be getting my thesis finished…  Speaking of which, feedback on my first thesis draft has been very helpful so far and generally positive, although I need to work on the more traditional elements (introduction, conclusion, methodology…).

Pitter split

More live coding, this time multitrack (oops added wrong one earlier, fixed now):

Some glitches, with audio and video falling out of sync at times… I quite like the results though, as it goes back in again somehow.

UPDATE, here’s another one, with tight time sync this time:

Some videos

First a quick screencast of my new live coding environment called Text, which is I think a good proof of concept but crashes quite often (including at the end of this video).It’s basically Haskell but with syntax based on proximity in 2D space, rather than adjacency. Type compatible things connect automatically, made possible though Haskell’s strong types and currying. I implemented the interface in C, using clutter, and ended up implementing a lot of Haskell’s type system. Whenever something changes it compiles the graph into Haskell code, which gets piped to ghci. The different colours are the different types. Lots more to do, but I think this could be a really useful system for live performance.

Secondly here’s some nice video from an event at access space, including live coding from a duet by Scott Hewitt and I, and beatbox livecoding from MCLD:

Thirdly here’s video from a slub performance at piksel fest.The sound and video are out of sync at some points, and I think the camera falls over and cuts out towards the end because the camerawoman was off dancing to our code… Was a fun night! An ogg file is also available here.