Paper on bricolage programming

June 13th, 2010

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

Abstract:

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.


Read the rest of this entry »

Flash on eval

May 29th, 2010

Here’s a tech demo of my current Haskell live coding environment, an emacs mode adapted from Rohan Drape’s haskell supercollider mode, with flash on eval adapted from the syntax tail highlighting minor mode.

Source coming soon here

haskell 2 minute acid tech demo from yaxu on Vimeo.

Visualisation of Live Code

May 29th, 2010

I wrote a paper with Dave Griffiths and Nick Collins on the visualisation of live code, exploring ideas around live coding interfaces, accepted for the EVA London 2010 conference in July. A HTML version is below, or see the PDF Preprint.


Alex McLean (Goldsmiths), Dave Griffiths (FoAM), Nick Collins (University of Sussex) and Geraint Wiggins (Goldsmiths)

Abstract

In this paper we outline the issues surrounding live coding which is projected for an audience, and in this context, approaches to code visualisation. This includes natural language parsing techniques, using geometrical properties of space in language semantics, representation of execution flow in live coding environments, code as visual data and computer games as live coding environments. We will also touch on the unifying perceptual basis behind symbols, graphics, movement and sound.

Read the rest of this entry »

Formatting LaTeX for on-screen proof reading

April 28th, 2010

A few people on twitter found this useful so here it is in full:

I’ve been writing a few papers lately and going through the cycle of write -> print -> proofread -> write, generating a lot of paper.  I’ve text to hard to read on screen, and raw LaTeX somehow feels too malleable to read as a document.  Then I thought the obvious; why not format the document for the screen.

I came up with this, two columns with minimal margins:

%\documentclass[compact,twocolumn]{article}
%\usepackage[top=0.1in, bottom=0.1in, left=0.3in, right=0.3in, paperwidth=11in, paperheight=7in]{geometry}
%\setlength{\columnsep}{30pt}

This fits nicely on my laptop screen but adjust for your particular aspect ratio and so on.  Then view in full screen or presentation mode and hey presto.  Evince in linux is great in presentation mode (rather than full screen mode, which keeps a menu bar), and automatically picks up changes when you recompile your PDF.

If you still find yourself with eye strain, rather than reading from paper, consider adjusting the position of your monitor.  There’s a lot of hype around e-paper, and it does look lovely, but I’m unsure that the evidence shows that LCDs are significantly worse for eye strain if at all…  Is light really that different when it reflects off something rather than emitting from something?  I reckon distance between eyes and monitor is a bigger factor at least.

Upcoming events

April 26th, 2010

A few things coming up

1st May 2010 – Slub VJing with Kirk Degiorgio at Lambda Festival, Antwerp
2nd May 2010 – Slub Live at Lambda Festival again
13th May 2010 – Participating on a Cenatus Panel Session on the Future of Music at FutureEverything, Manchester
3rd September 2010 – Live coding at FACT Liverpool (TBC)

Plus we’re doing a live coding tour of the North of England towards the end of the year.

Also coming up, next month’s dorkbotlondon, probably at a venue near Kings Cross.  Dorkbot will likely have some involvement with the Big Chill this year too.  Been thinking about doing a another placard or pubcode too, and the date of the annual dorkcamp should be confirmed soon…


The Joy of Interpretation

April 26th, 2010

Without interpreters, we wouldn’t have software, but yet interpreters are also software.  This is why we talk about `bootstrapping’, where software pulls itself from the floor by its bootstraps, a paradox settled by the existence of hardware microcode.

Any piece of software exists as a combination of two parts, some instructions in a computer language and an interpreter of that language.  Alone they do nothing, put them together and they can notionally do anything.  Often there are intermediary steps, commonly interpretation into another language called `bytecode’ to produce `binaries’, but these are just translations into another language, which still needs interpreting for the magic to happen.

Interpreters are fantastic, they allow us to try out ideas beyond our imaginations, adding some instructions, interpreting them to get output rendered as sound or light to our senses, perceiving otherwise impossible worlds, and returning to the source code to twist the encoded structures into new contortions inspired by the results so far.  We humans expand the realms of perception through computation, not creating things but writing about things in order to magic them into existence.  We’re only scratching the surface of what’s possible, artistic and otherwise, from marrying high speed computation with embodied human experience.

It’s a shame then that the freedom of thought that interpreters give us happen to threaten business models of large companies, who are accordingly searching for the power to make free access to them them illegal.  `Console’ computers (a misnomer if I ever saw one) are those where the end user is not allowed access to an interpreter, without paying for a restrictive license and/or expensive hardware.  You are not allowed to modify code, certainly not allowed to modify the interpreter, and so must be satisfied with using whatever programs the manufacturer allows you to.

What is frightening is that these business models are spreading — from computer games, to handheld computers and now to tablets.  The iPhone (and now iPad) was a particular shock as a device from a company producing hardware traditionally marketed at the creative.  You certainly can be creative with an iPad, but only using a surface level interface; you can touch the screen to make a mark, but you can’t write a program about touch, or about marks.  iScratch, a project that allowed children to interpret their programs on the iPhone, has been rejected from the apple store.  Such interpreters have been banned from the iPhone from the start (apart from the concession of a javascript web browser VM without access to, for example, sound synthesis), but a big media stir has only been made since interpretation was locked down on the development side too, having impacts on some crappy tools by a large company.

This creep towards centralised control over interpretation is deeply worrying, and arguments that end-users get confused or threatened by higher order thought are frankly sinister.  Can we have our languages back, please?

UPDATE: If you needed convincing on the point of interpreters allowing higher order creativity, check out Dave’s latest work: http://www.pawfal.org/dave/blog/2010/04/lazybotz/

Bricolage programming and patterns

March 24th, 2010

It’s Ada Lovelace day today, and it turns out my main influences lately have been two women.

One is Sherry Turkle, via her book The Second Self: Computers and the Human Spirit, and her work on Epistemological Pluralism and the Revaluation of the Concrete together with Seymour Papert.  Two decades on, some aspects of this work are dated, but the main drive reads like a message from the future; to fully accept computer programming in our creative lives we should consider the feminine, do away with purity and black boxes and work within our code rather than upon it.  Computer programming languages and culture is biased towards abstract approaches and against anthropomorphism.

Perhaps live coding is a swing back towards a more feminine approach, where humans are immersed in the same time flow as algorithms, fully engage their perceptual and aesthetic faculties while writing code, and have their whole program before them ready to be manipulated, rather than abstracting parts in black boxes according to grand designs.

Here’s a choice quote from the epistemological pluralism paper:

The conventional route into formal systems, through the manipulation of abstract symbols, closes doors that the computer can open. The computer, with its graphics, its sounds, its text and animation, can provide a port of entry for people whose chief ways of relating to the world are through movement, intuition, visual impression, the power of words and associations. And it can provide a privileged point of entry for people whose mode of approach is through a close, bodily identification with the world of ideas or those who appropriate through anthropomorphization. The computational object, on the border between the idea and a physical object, offers new possibilities.

My other recent influence is Laurie Spiegel, in particular her writing on the manipulation of musical patterns.  I’d already found myself making a pattern language when I found her paper, and found it a great inspiration.  In this 1981 paper she recognises computation as pattern transformation (which after all is all that it is, a Jacquard loom head that transforms), and applies this insight directly to music; computation then becomes music pattern transformation, the structure of computation forming the structure of music.  There’s much more inspiration for musician-programmers to be gained from her other writings.

Pure dyne

January 20th, 2010

I’ve been through a few linux distros over the years, neatly getting progressively easier to install and configure as I get less willing to spend time recompiling kernels, culminating in ubuntu, enjoying the attention to detail and simplicity of use.  Recently though, I’ve had to give ubuntu up and go back upstream to the rather higher maintenance Debian again.  Linux suffers from creeping featurism in its layers of audio APIs, it started with OSS, a straightforward API based on files, then came ALSA, a wildly complex API with broken documentation in a wiki you can’t edit, and an architecture that somehow means only one OSS application can write sound at a time.  It seems to me that it’s a failing of ALSA that further layers of abstraction are piled on top of it, creating a rather complex landscape for sound hackers to navigate.

Ubuntu has joined in the fun by shipping with PulseAudio, which is probably great for general users but a pain for those needing to work with audio on a low level without using loads of CPU.  Pulse is not straightforward to remove, and when I removed it had problems with volume controls not working, and the likelihood that future system upgrades wouldn’t work so well.  That’s why I switched to debian sidux, but then I couldn’t get laptop hibernation, or my firewire sound card working, and had the stress of maintaining an unstable distribution.

However this week Puredyne carrot and coriander came out, and it’s really great.  The kernel is optimised for realtime sound, and jack audio runs solidly without any drop outs, something I haven’t seen before.  My firewire sound works reliably, better than I managed under ubuntu.  It has a really nice logo and clean look, with no plump penguins in sight.  It comes with all the best a/v software beautifully packaged, including all the live coding languages.  The people behind it are super friendly and helpful.  It’s downstream from ubuntu, so all the software is available.  It’s a dream!

They make a big deal out of it being good for booting off a USB key, and I think have worked out some nice practicalities of working that way.  This makes it great for doing workshops and running linux in a non-linux lab etc.  It installs and works just as nicely on a permanent hard drive though, and that’s what I’ve done.

Anyway, heartily recommended, a dream come true, congratulations to all those involved.

2000 to 2009

December 31st, 2009

Inspired by Christof, here’s my roundup of 2000 to 2009, seriously inhibited by my terrible memory.  Will add to this as I remember events.

2000Discovered generative music and formed slub with ade, with the aim of making people dance to our code, generating music live according to rigorous conceptual ideals.  Most of what I’ve done since has revolved around and spun out of this collaboration.  Worked as a Perl hacker with the afore-mentioned Christof during the first Internet boom for mediaconsult/guideguide, a fun time hacking code around the clock in a beautiful office with a concrete floor and curvy walls.

2001 – slub succeeded in getting people to dance to our code, at sonic acts at the paradiso in Amsterdam.  It was around this time that I left guideguide for state51 to work on a digital platform for the independent music industry – they were very much ahead of their time then and still are now.  Got a paper accepted for a conference as an independent researcher, and met Nick Collins for the first time there, another fine inspiration.  Co-founded dorkbotlondon, co-organising over 60 events so far…

2002Some really fun slub gigs this year.  Followed in Ade’s footsteps by winning the Transmediale software art award for a slightly odd forkbomb, which later appeared in an exhibition curated by Geoff Cox alongside work by great artists including Ade, Sol Lewitt, Yoko Ono and some monkeys.  Met Jess.

2003 – Programmed the runme.org software art repository, together with Alexei Shulgin, Olga Goriunova and Amy Alexander.  Co-organised the first london placard headphone festival; did a few more after, but didn’t yet match the amazing atmosphere of the first.

2004 – Co-founded TOPLAP together with many amazing people, to discuss and promote the idea of writing software live while it makes music or video.  Wrote feedback.pl, my own live coding system in Perl.  Bought a house with Jess.

2005 – Started studying part time, doing a MSc Arts Computing at Goldsmiths, with help and supervision of Geraint WigginsDave Griffiths, another huge inspiration, officially joined slub for a gig at Sonar.

2006 – Fiddled around with visualisations of sound including woven sound and voronoi diagrams.  Learned Haskell.  Co-organised the first dorkcamp, which was featured on french tv.

2007 – Got interested in timbre and the voice, came up with the idea vocable synthesis.  Helped organise LOSS livecode festival with Access Space in Sheffield.  Went on a camping holiday in Wales and got married to a rather pregnant Jess.  Had a baby boy called Harvey a few months after.  Got my MSc and carried on with a full time PhD in Arts and Computational Technology, supervised again by Geraint.

2008 – Got interested in physical modeling synthesis, using it to implement my vocable synthesis idea.  Got interested in rhythm spaces too, through a great collaboration with Jamie Forth and Geraint.  Knitted my mum a pair of socks.

2009 – A bit too close, and in part painful, to summarise.  Also, it’s not over yet.

Metaphors of javadoc

December 11th, 2009

Conceptual metaphor theory holds that our understanding of the world is largely structured by metaphor.   This presumably includes our understanding of computer programs, which is the basis of Metaphors we Program By: Space, Action and Society in Java, a paper by Alan Blackwell. The paper shows analyses of documentation for some standard Java libraries, looking for the metaphors that structure human understanding of the library components and their interactions. I’ve taken the liberty of extracting the metaphors related in the paper but if you’re interested you should go and read the whole thing, it’s a good one. I feel I could meditate on this list for some time, and I’d love to see comparisons with the metaphors used in the documentation of other languages.

  • Components are agents of action in a causal universe.
  • Programs operate in historical time.
  • Program state can be measured in quantitative terms.
  • Components are members of a society.
  • Components own and trade data.
  • Components are subject to legal constraints.
  • Method calls are speech acts.
  • Components have communicative intent.
  • A component has beliefs and intentions.
  • Components observe and seek information in the execution environment.
  • Components are subject to moral and aesthetic judgment.
  • Programs operate in a spatial world with containment and extent.
  • Execution is a journey in some landscape.
  • Program logic is a physical structure, with material properties and subject to decay.
  • Data is a substance that flows and is stored.
  • Technical relationships are violent encounters.
  • Programs can author texts.
  • Programs can construct displays.
  • Data is a genetic, metabolizing lifeform with body parts.
  • Software tasks and behaviour are delegated by automaticity.
  • Software exists in a cultural/historical context.
  • Software components are social proxies for their authors.

I’ve written about Alan Blackwell’s research before.

Then this morning I saw this tweet:

<laputean> “hello world” programm is the ‘perfect’ starting point of fastidious and wrong epistemological assumptions that one carries for all life

A neat reminder that the ways in which we perceive the workings of computer `agents’ and source code is very much within a particular social context.