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.

The iPhone and toilet paper freedom

November 11th, 2009

Geoffg is playing a lawyer in declaring his interpretation of the GPL as the truth, lambasting the Free Software Foundation for not updating some old articles, accusing them of spreading FUD and declaring the iphone as a missed marketing opportunity.

He makes the mistake however of reading the GPLv2 as a definition of freedom, rather than an implementation of it. As this fine person pointed out last year, it’s no good being able to change software if you can’t run it. This is the freedom to change software and use it as toilet paper.

Fine, maybe you can run GPLv2 software on your iphone, but you can’t exercise all the freedoms which the FSF campaign for. According to them, GPLv2 software in closed DRM is exploiting a loophole which GPLv3 was in part written to close.

I can see it’s difficult for people to reconcile their love for free software and their love for Apple products, but maybe it’s best to be mindful of the fact that you’ve bought a computer that you can’t run software on without the permission of a large corporation.

There’s a lot of weirdness in the computer music community around this. RJDJ is a port of the free PureData language to the iphone. Many of those involved are free software developers, but have to give up all their rights to RJDJ, a venture capital funded company. RJDJ in turn license the code back to them under the GPLv3. This means they are free to change and run the code under open operating systems, but not on the iphone. This is weird, using the GPLv3 as a firewall to protect commercial interests on a closed platform, while exploiting the work of a free software community.

Just to clarify; I’m not saying that people shouldn’t run open source software on the iphone, particularly when a permissive license like MIT or BSD is involved. I’m just objecting to ignorance of the FSFs definition of software freedom, which I happen to subscribe to and which is incompatible with the iPhone. I find the RJDJ case weird, but while I know of at least some cognitive dissonance in the RJDJ team, I don’t know that any of the authors are otherwise unhappy with the situation.

UPDATE: Michael from RJDJ contacted me to point out something I got wrong. RJDJ don’t release their whole iphone port of PureData, just part of it — rjlib. This is indeed released under a GPLv3 though; if you want to contribute towards rjlib, you have to transfer your rights to RJDJ or fork the code.

BTW they are also releasing a rather nice looking cross-platform gui-less version of PureData under the LGPLGPLv3 and LGPLv3 called zengarden.

Patterns of Movement in Live Languages

November 11th, 2009

I’m giving a paper at the CHArt conference in Birkbeck tomorrow. I’ll edit it a little after the conference for publication, but here’s a draft of the paper, here’s the presentation (which I’m currently editing) and here’s the abstract:

Programmers do their work by writing — a piece of software is a structure made from words. These structures are generally too big to comprehend in their entirety, so programmers instead focus on small detail and overall plans; zooming in to find parts to combine and simplify and zooming out to find places to build. But this is not architecture: these structures are more like machines than static buildings. A programmer’s work is set in motion by a program interpreter, with information flowing in and around processing units before being directed outward in response.

Usually a programmer will write some text, and then step back to start it up, watch it work and decide upon the next edit. Live coding programmers however work on their software while it is running, as if they were modifying a machine without switching it off first. Because software is built from words, this is done by editing it as text, adding new routines or changing the character of an existing one. Such a change takes immediate effect, allowing fast creative feedback.

Where a written novel exists to describe human activity, written software exists to simulate it. Therefore the live coder can take the role of an artist, constructing simulators in order to generate patterns of movement, either as music, video animation or both. This can be done in front of a live audience, so that the process of writing software becomes the process of improvising music or video in performance art.

Programmers are finally taking to the stage. Introspecting and encoding their musical thoughts before an audience. A tradition of live coding has quickly formed where computer screens are projected, making the programmer’s reactions to their work visible. Questions of authorship disappear; the performance is live, the programmer improvising through the medium of written language.

Acid sketching

November 8th, 2009

I’ve been thinking about visual languages and the morphology of symbols (as opposed to words) for a while. I had the opportunity to start putting some of these ideas into code at a really excellent openframeworks workshop this week, run by Joel Gethin Lewis and Arturo Castro.

Here’s what it does:

Makes the point nicely that symbols and spaces can intertwine.

Using opencv blob detection, the regularity, direction and area of the shapes map to envelope modulation, resonance and pitch. The drawing is then sequenced into a melody using the minimum spanning tree (from the boost library) of the shape centroids, where distance maps to inter-onset interval.

It also has a mode for projecting the red circles and highlights back on the drawing surface which worked well.

This is only the second thing I’ve made with openframeworks, and while I don’t really get on with the codeblocks editor recommended for linux, I’m impressed with how accessible it makes opencv and all that.

Update: sourcecode

Transferring

October 2nd, 2009

slub at shunt (c) Evan Raskob

slub at shunt (c) Evan Raskob

Tom Armitage wrote a nice wired article interviewing us (slub) about live coding.

I’m still working on my upgrade, hoping to be a proper PhD student by the end of this month…

I’m excited to be organising an evening called transfer at Goldsmiths, London on Friday October 16th.  It’ll be fantastic with all my favourite electronic music superheroes — Leafcutter John, Finn Peters, Yeeking and friends, Sarah Angliss as well as slub. Tickets now on sale!

Congratulations to those who made it to the end of the hackpact, sorry for breaking my part of the bargain but I really had to get this draft done, and couldn’t justify taking time away from my family without also taking time away from my nightly practice.  Looking forward to spending time on other parts of my life this month, including a rather looser aim of recording and editing one track every week.  If I manage it there’ll be an EP at the end of it.

Nice drunken live coding at shunt last night, the atmospheric photo from Evan is about all the documentation though, got to fix that for the next gig…

hackpact week 4

September 24th, 2009

Ok the third fourth week of hackpact actually started yesterday, but I didn’t think my contribution then warranted a new entry.

hackpact23

Bit of an error with the screencast, see if you can spot the problem. Pretty happy with the sound though. (will take a while to appear due to vimeo’s encoding queue)

I’m musically humbled by my son who has taught himself how to play the guitar and sing the blues. He’s two today (24th), happy birthday Harvey.

hackpactoops

Well I made a blueberry birthday cake for young Harvey on the 24th, which is a hacklet at a push, photo when I find the transfer cable. No creations at all on the 25th or 26th, I was away for the weekend and thankfully didn’t get a moment with my laptop. I did record a session last night thought that I’ll upload at some point…

The hackpact has been really good for making me get bored with my software and develop it further. I need some longer term development time now though to play out some of my frustrations I’ve been feeling over the last month. In particular using a command line interface is feeling like a big limitation, I need to express relationships over more than one line. Maybe I can adapt the yi haskell editor for my needs.

Next month I think I’ll switch to making a fixed recording every week. I’ve never really made fixed recordings so should be interesting.

Now I’ve fallen off the hackpact wagon I’m not sure if I’ll be able to totally get back on, particularly as I need to finish my PhD upgrade report by the end of this month. We’ll see..

Hackpact week 3

September 16th, 2009

It’s the third week of the hackpact. A few have fallen by the wayside, others are doing impressively well. Adam is doing great learning supercollider, Sam is cracking away on a diverse range of ideas, Joe has put a lot of himself into his involved hacks, poetry with a smell of solder, Gabor pushing fluxus in wild new directions every day, Scott still soldiering on with ChucK every day, part of the inspiration for the hackpact and now part of it, and Cormac’s easy sounding but in reality clearly really challenging rule based photography project that he’s tackling with increasing need for imagination. Honorary mention for Dan who threw himself at the project with some ace daily projects before going offline for a bit, hopefully he’ll rejoin us.
I hope I haven’t missed anyone, sorry if I have — let me know.

hackpact15

Another screencast with some good moments and also a couple of bugs found… I realised I forgot to switch off cpu scaling, so there might be more jumps in the recording.

hackpact16

Preparing for the haskell users group talk, so I tried to make some ultra quick demos of features of my pattern language. Failed really, I kept getting distracted at making the patterns sound better rather than demonstrate how they work, so I will likely just do a live demo instead.

The results are on youtube — I’m doing the presentation in google docs, and youtube is the only way of getting videos in there. In fact this is the only way I found of making a presentation with videos in under linux. Video support in openoffice sucks and didn’t work anyway, the html based s5 gets all slow and glitchy with videos in, the video library used in the python based bruce wouldn’t play any video I found, etc, etc…

hackpact17

Got through the haskell users group talk in one piece, happy with it actually. I managed to do some short sub-minute demos for it today which I think made it easier for people to follow, and I think count as today’s hackpact. Here’s the final presentation in full:

hackpact18

Uploaded my current Haskell stuff. Not very useful at all without instructions for how to install and use it which I’ll get to soon in a proper release, but some might be interested to read through the Pattern module at least.

Big shout out to Kassen, while he is behind on documenting his hackpact stuff he assures that he’s still doing daily hacks in the background. Hope to hear more from his side of our acidpact soon.

I’m pretty tired, going to try and make a new screencast tonight nonetheless.. Ah, here you are. Got rid of need for explicitly calling parser by using the overloaded string literals extension, thanks for the tip Ganesh.

hackpact19

Today’s screencast is here, although it’s not all that. No update tomorrow, we’re off to do some live coding at Plymouth Planetarium, documentation will hopefully surface eventually.

hackpact20

Well the planetarium experiment went well, hopefully will turn into a tour. Some documentation to appear sometime soon.

hackpact21

Too tired to make music, so worked on a poster design. Ended up too gloomy, to rework.

hackpact22
[[blue, blue [lightblue lightskyblue lightblue, lightblue lightskyblue lightblue ~] blue, blue], blue lightblue ~, blue]

Loebner prize

September 9th, 2009

GoldPrizeAMTNote: this post turned out to be controversial, if you read it be sure to read the comments too, particularly this one.  This comment on reddit is interesting too.

Here’s an annoying thing.  Alan Turing was a great thinker and forefather of computation, and certainly deserves an apology for the inhumane way he was treated.  The Loebner Prize, known as the “Turing test” is a competition supposedly based on predictions Turing included in a paper on machine intelligence.

The annoying thing is that the Loebner prize completely misrepresents Turing’s paper.  Embossed in the prize medal shown is the question “Can machines think?”  Also, the introductory text on their website states:

In 1950, in the article Computing Machinery and Intelligence … Alan Turing asked the question “Can a Machine Think?” He answered in the affirmative …

Did he?  Ok, so lets look at the first sentence of Turing’s paper:

I propose to consider the question, “Can machines think?”

Note that he is considering the question, not asking it.  In that same first paragraph, he goes on to consider trying to define the words ‘machine’ and ‘think’, and concludes:

… the meaning and the answer to the question, “Can machines think?” is to be sought in a statistical survey such as a Gallup poll. But this is absurd. Instead of attempting such a definition I shall replace the question by another.

So, Turing felt that the question “Can machines think?” was absurd.

Whoever wrote the Loebner text has perhaps read the first sentence of this paper they describe, but not got to the end of the first paragraph.  Based on the resulting misunderstanding they have stamped the question that annoyed Turing so much right there next to his face.  This amounts to posthumous intellectual torture, and disrespectful to the work of a fine man.

A comment thread removed after it went nowhere and turned into childish name calling.  Jeepers.