Category Archives: misc

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.

New text editor

I stopped using, a self-modifying live code editor written in Perl, some time ago, in favour of editing Haskell in emacs.  It’s about time I made a specialised editor for the pattern stuff I’ve been doing with Haskell.  Actually I have been dreaming of a visual programming language editor for some time, which for the moment I’m just calling `Text’.  Here’s a screen shot of its current state:

I’ve noticed that Visual Programming Languages like Max and PD are still based around text, using e.g. distance as secondary notation, not actually part of the language syntax.  In Text, words that are closest together are automatically connected if their types are compatible.  You can see that I haven’t quite got the ‘closest together’ algorithm nailed yet, I’ve no idea why its decided to parse this as three separate, overlapping statements.  However I have got currying working, which I’m happy with.  At the moment it’s written in C using the clutter library, which I’m finding fun.  Anyway just a quick update, I’ve got a lot more ideas to implement before I know whether this idea has legs or not…

Upcoming performances and workshops

I’ve been doing things a bit on the quiet lately, including Live Coding on the streets of Liverpool, and in a nice bar in Huddersfield.  Time to update the blog I think.

Next week we’re doing some live coding in Sheffield:

6:30pm, Oct 29th 2010, Access Space, Sheffield UK - Live Coding alongside Jamie Forth, Scott Hewitt and Dan Stowell at Access Space, who hosted the international LOSS Live Code festival a few years ago.

Then in November Dave and I are doing a workshop on making music with functional programming at Piksel Festival in Norway Nov 18-21st 2010, we’ll do a slub performance too.

There’ll be some kind of thing at Goldsmiths, London on December 16th, more details nearer the time but will likely feature a slub performance by Ade and I and maybe Dave too if he’s around.  There are rumours bubbling up from Brighton that there may be a Live Coding tour of Japan next year as well.

Aside from that I’m moving house, writing up my PhD thesis, and dreaming up a visual programming language.  A post is brewing about the latter at least…

Heading north

I’m heading for Sheffield with my family in September.. I’ll have finished writing up my PhD by the time my funding runs out in April, and so will be looking for gainful employment from then, something like teaching, research, software development, music and/or event production in or around Sheffield. Any leads, including interesting people to meet, possible hosts for research applications (programming language design for artistic domains, interactive music interfaces etc) or anything else much appreciated. I am aware of the excellent access space and also the fine Adrian Moore at Sheffield Uni but little else… I’d also consider remote work/collaboration.

Paper on bricolage programming

I’m very happy to have a paper “Bricolage Programming in the Creative Arts” accepted to this year’s PPIG (the Psychology of Programming Interest Group).  You’re probably better off reading the PDF version, but I’ve put it here too:

Bricolage Programming in the Creative Arts

Alex McLean   Geraint Wiggins

Centre for Cognition, Computation and Culture
Department of Computing
Goldsmiths, University of London


In this paper we consider artists who create their work by writing algorithms, which when interpreted by a computer generates their plotted drawings, synthesised music, animated digital video, or whatever target medium they have chosen. We examine the demands that such artists place upon their environments, the relationships between concepts and algorithms, and of cognition and computation. We begin by considering an artist’s creative process, and situating it within the bricolage style of programming. An embodied view of bricolage programming is related, underpinned by theories of cognitive metaphor and computational creativity, and finally with consideration of the bricolage programmer’s relation to time.

Continue reading