My old laptop was falling apart, but buying a new one presented all kinds of ethical problems of which I have become increasingly aware. Also new laptops are badly made and I always much preferred the squarer 4:3 screens that weirdly got phased out in the switch to widescreen five years ago (around the same time that storing a collection of films on a laptop became practical I guess).
So, I built my dream laptop from ebay purchases (all prices include postage):
- IBM Thinkpad T60 with 1024×768 screen and 2GB RAM – £164.95
The last IBM branded thinkpad, widely considered the best laptops amongst linux musicians :) Apparently it is possible to find T61s with 4:3 screens but I couldn’t find one.
I did buy a T60 for £118, which had a higher resolution screen but it arrived damaged, and only had 1GB RAM. This one arrived beautifully reconditioned, well worth the extra, and the 1024×768 screen is good for matching projector resolutions.
- T7600 cpu – £94.99
Replacing the 1.8GHz processor with a faster 2.33 GHz one, the fastest that the T60 is compatible with. Installing it was tricky and nerve-wracking but a youtube video helped me through it. £95 is expensive for a second hand cpu, but that’s because it’s the fastest of its class and so in high demand..
- Arctic silver paste – £5.75
To help keep the faster processor cool. I was worried I’d have to upgrade the fan too but the cpu temperature has been fine so far.
- A Kingston 96GB SSD drive – £85.00
This probably makes a bigger speed difference than replacing the CPU, and makes the laptop much quieter.. I didn’t put much research into this but read that more expensive drives aren’t faster because of limitations of using an older laptop
- 9 cell battery – £20.55
The laptop came with a working battery, but £20 for a 6+ hour battery life is a no brainer.
So the total is £371, not that cheap but it’s a really nice, fast (for my uses), quiet and robust laptop. Returning to a 4:3 screen feels like opening the door after years squinting through a letterbox. Also, screw planned obsolescence, hopefully this five year old laptop will be with me for years to come.
I’ve been peeved by this FT article, and failing to express my annoyance over on twitter, so time for a post.
The central question is that “New technology is leading to some innovative instruments – but will musicians embrace them?” To start with this is the wrong way round, musicians have been inventing their own instruments for millennia and willingly embracing them. For example one of the oldest pieces of music technology is the Jew’s Harp, a highly expressive timbral instrument, augmenting the human body. I think all new instruments should be judged against it.
So on the whole technology is not some abstract machine churning out devices for musicians to scratch their heads over. As the antithesis of this point the article introduces Ken Moore, paraphrased and quoted as laying into the ReacTable as a fad, which is not often used for real music. He says a better way forward is to use motion-sensing equipment, in particular his own use of Wii controllers to create theramins. Now I like theramins very much, but Moore profoundly misunderstands the ReacTable, which actually includes motion-sensing technology at its heart. Indeed Moore’s videos could easily show him using a ReacTable in the air, but without visual feedback and with only two pucks.
The genius of the ReacTable, which in my view shows the way forward for music tech as a whole, is in combining visual, continuous gestures in a space of relative distance and rotation, defined by and integrated with the abstract, discrete symbols of language. This is what the Jew’s Harp had already done beautifully, thanks to human categorical vowel perception and continuous, multidimensional range of embodied expression in vowel space. The ReacTable pushes this further however, by bringing dataflow and to an extent computation into the visuospatial realm. This is a very human direction to take things, humans being creatures who fundamentally express ourselves both with language, and with prosody and movement, engaging with the striated and smooth simultaneously and intertwined.
I could rant about those crass arguments around ‘real music’ too. People dance to the ReacTable in large numbers, and I don’t see how you can get any more real than that. Still if the ReacTable is starting to get bad press then that’s potentially a good sign, that it’s forcing people into an uncomfortable position, towards changing their minds about where musician-led technology could really drag us… Towards new embodied languages.
Digital means discrete, and analog means continuous. Digital and analog support each other, as
Deleuze and Guattari put it:
… in the case of the striated, the line is between two points, while in the smooth, the point is between two lines.
When we speak, we articulate our vocal tracts in analog movements, creating discontinuities that the listener is able to segment into the digital phonemes, diphones and words of language. Language is digital, as is clear when we write it with a typewriter. The analog arrangement of ink on paper is woven into a perfectly discrete sequence of symbols, as our eyes saccade across them. But we reconstruct the analog movements of speech when we read; even when we read silently, we add paralinguistic phrasing in our heads to aid processing of the text. This analog phrasing is important, for example modulating the tone of voice with slight sarcasm tone can completely negate the meaning of what is said. Prosody can convey far subtler emotional feeling that this.
A great deal of what is called `digital art’ is not digital art at all, and it seems many digital artists seem ashamed of the digital. In digital installation art, the screen and keyboard are literally hidden in a box somewhere, as if words were a point of shame. The digital source code behind the work is not shown, and all digital output is only viewable by the artist or a technician for debugging purposes. The experience of the actual work is often entirely analog, the participant moves an arm, and observes an analog movement in response, in sight, sound or motor control. They may choose to make jerky, discontinuous movements, and get a discontinuous movement in response, but this is far from the complexity of digital language. This kind of installation forms a hall of mirrors. You move your arm around and look for how your movement has been contorted.
This is fine, computers allow abstractions away from particular perceptual modes and senses, and so are quite good at translation between modes. But computers really excel as machines for formal language, and so I hope the practice of hiding linguistic computation in `digital art’ will be a short lived fashion.
There is something about artist-programmers, the way they’re caught using general purpose languages and tools in specific, unusual circumstances. Many of the basic assumptions underlying the development of these general purpose systems, such as errors are bad, the passing of time need not be structured only minimised, standards and pre-defined plans are good, etc, often just don’t apply. It’s not that artist-programmers can get away with being bad programmers. Far from it, in my opinion they should be fluent with their language, it’s no good being baffled by syntax errors and spaghetti code while you’re trying to work out some weird idea. However if you are following your imagination as part of a creative process, then established and fashionable software development methods often look arbitrary and inhibiting.
The last few days I’ve been thinking about revision control. Revision control systems are really excellent and have a great deal to offer artist-programmers, particularly those working in groups. What I’ve been wondering though is whether they assume a particular conception of time that doesn’t always apply in the arts.
Consider a live coder, writing software to generate a music performance. In terms of revision control they are in an unusual situation. Normally we think of programmers making revisions towards a final result or milestone, at which point they ship. For live coders, every revision they make is part of the final result, and nothing gets shipped, they are already the end users. We might somewhat crassly think about shipping a product to an audience, but what we’re `shipping’ them isn’t software, but a software development process, as musical development.
Another unusual thing about live coding revisions is that whereas software development conventionally begins with nothing and finishes with a complete, complex structure, a live coder begins and ends with nothing. Rather than aim for a linear path towards a predefined goal, musicians instead are concerned with how to return to nothing in a satisfying manner. Indeed perhaps the biggest problem for Live Algorithms is the problem of how to stop playing. The musician’s challenge is both how to build and how to deconstruct.
There are two ways of thinking about time, either as a linear progression and as a recurrent cycle or oscillation. Here’s a figure from the excellent book Rhythms of the Brain by György Buzsáki:
“Oscillations illustrate the orthogonal relationship between frequency and time and space and time. An event can repeat over and over, giving the impression of no change (e.g., circle of life). Alternatively, the event evolves over time (pantha rei). The forward order of succession is a main argument for causality. One period (right) corresponds to the perimeter of the circle (left).” (pg. 7)
This illustrates nicely that these approaches aren’t mutually exclusive, they’re just different ways of looking at the same thing. Indeed it’s normal to think of conventional design processes as cycles of development, with repeating patterns between milestones. It’s not conventional to think of the code itself ending up back where it started however, but this can happen several times during a music performance, we are all familiar with chorus and verse structure for example, and performances necessarily begin and end at silence.
So where am I going with this? I’m not sure, but I think there’s plenty of mileage in rethinking revision control for artist-programmers. There’s already active, radical work in this area, for example the code timeline scrubbing in field looks awesome, and Julian Rohrhuber et al have some great research on time and programming, and have worked on non-linear scheduling of code changes in SuperCollider.
As far as I can see though, the revision control timeline has so far been treated as a linear structure with occasional parts branching and remeeting the main flow later on. You do sometimes get instances of timelines feeding back on themselves, a process called backporting, but this is generally avoided, only done in urgent circumstances such as for applying security fixes to old code.
What if instead, timelines were of cycles within cycles, with revision control designed not to aid progression towards future features, but help the programmer wrestle their code back towards the state it was in ten minutes ago, and ten minutes before that? Just questions for now, but I think there is something to be done here. After all, there is something about artist-programmers, the way they’re caught using general purpose languages and tools in specific, unusual circumstances.
There are some interesting comments to my “languages are languages” post that I wanted to highlight — a disadvantage of blogs is that comments are often the best bit but are subservient to the posts they are on. I also brought the subject up on the PPIG (Psychology of Programming Interest Group) mailing list, again prompting some enlightening discussion.
By the way, PPIG are holding a Work In Progress meeting here in Sheffield from the 18th-19th April. A call for abstracts is out now. Heartily recommended!
Ian Bogost has an interesting argument that computer languages are not languages, but systems.
He starts off arguing that learning a programming language shouldn’t meet a curricular requirement for learning a natural language. That’s a fair argument, except he does so on the basis that computer languages are not languages at all.
”the ability to translate natural languages doesn’t really translate (as it were) to computer languages”
It clearly does translate. You can either translate literally from C to Perl (but not really vice-versa), or idiomatically. It’s straightforward to translate from C to English, but difficult to translate from English to C. But then, it’s difficult to translate a joke between sign and spoken language; that doesn’t mean that sign language isn’t a language, indeed sign languages are just as rich as spoken ones… The experience of signing is different from speaking, and so self-referential jokes don’t translate well.
We can approach translating from English to C in different ways though. We can model the world described in a narrative in an object oriented or declarative fashion. A human can get the sense of what is written in this language either by reading it, or perhaps by using it as an API, to generate works of art based on the encoded situation. Or we could try to capture a sense of expectation in the narrative within temporal code structure, and output it as music.
From the comments:
”If we allow computer languages, we should allow recipes. Computer codes are specialized algorithms. So are recipes.”
This seems to be confusing utterances with languages. Recipes are written in e.g. English. Computer programs are written in e.g. C.
“[programming code is] done IN language, but it ISN’T language”
You could say the same of poetry, surely? Poetry is done in language, but part of its power is to reach beyond language in new directions. Likewise code is done in language, but you can also do language in code, by defining new functions or parsing other languages.
The thing is that natural languages develop with a close relationship with the speaker, words being grounded in the human experience of their body and environment, and movements and relationships within it. Computer languages aren’t based around these words, but we can still use the same symbolic references by using those words in the secondary notation of functions names and variables, or even by working with an encoded lexicon such as wordnet as data. In doing so we are borrowing from a natural language, but we could just have easily used an invented language such as Esperanto. Finally the language is grounded in the outside world when it is executed, through whatever modality or modalities its actuators allow, usually vision, sound and/or movement.
… replacing a natural language like French with a software language like C is a mixed metaphor.
Discussing computer language as if it were natural language surely isn’t a mixed metaphor, if anything it’s just a plain metaphor. But both have strong family resemblances, because both are languages.
The claim that computer languages are not languages reads as an attempt to portray computer languages as somehow not human. Get over it, digital computation is something that humans do with or without electronic hardware, we can do it to engage fully with all of our senses, and we can do it with language. Someone (who I keep anonymous, just in case) said this on a mailing list recently:
“Having done a little bit of reading in Software Studies, I was surprised by just how many claims are invalidated with a single simple example of livecoding.”
I think that this is one of them.
At least in my world, it has become normal and expected for deadlines to be extended by around a week. The only explanation given is something like ‘numerous requests by authors’. However I get the strong impression that the paper committees always intended to extend the deadline, and built it into their only schedules. So many conferences do this now that it is expected; I suspect that if a conference didn’t, they would get very few submissions.
There are particular conference seasons, and so often deadlines fall around the same date. This uncertainty can cause a lot of scheduling problems. It can also annoy those organised folks who work to original deadlines.
Most recently, a Monday deadline extension to the following Friday wasn’t announced until the Friday before. Until it was announced, I was wondering how much time I would be able to spend with my family over that weekend. To get around this kind of thing a couple of times, I have written to paper chairs a week or so before a deadline, politely asking whether their deadline will be extended, saying I have a tricky schedule. This worked once, although the other time I didn’t get a reply (unsurprisingly, the workload of a paper chair is unenviable).
So I propose a different approach; that deadline extensions are announced alongside the original deadlines, in the original call for proposals.
Obviously this makes no sense, but we (Nick Collins, Thor Magnusson and I) are trying it anyway in our call for video submissions, and it’ll be interesting to see how well it works. By pre-announcing the extension but being vague about what it will be, hopefully people will put the original deadline in their calendars and work to that. However while doing tricky scheduling they’ll be able to keep the extension in mind and avoid unwarranted stress…
At some point in my youth I got very interested in programming, really interested, much more so than my peers. When I got to University, with access to the Internet (back when it was a largely text based affair) I met like minded people, and started identifying myself as a hacker. In the media hacking was exclusively illegal activity, but real hackers knew it was just about exploring possibilities with technologies. I read the alt.hackers usenet group. I bought a copy of the hackers’ dictionary, I read Stephen Levy’s book about the MIT hackers, and ran a telnet BBS. I felt some sense of belonging..
It’s frustrating then that the word has been hijacked by some strange characters with, from my perspective, uncomfortably right-wing agendas. Paul Graham wrote a piece nominally about Hackers and Painters, but actually about himself. It contains the following passage on computer science: “The way to create something beautiful is often to make subtle tweaks to something that already exists, or to combine existing ideas in a slightly new way. This kind of work is hard to convey in a research paper.” Clearly Paul Graham doesn’t know much about the nature of computer science research (most certainly nothing about MIR), but he knows a lot about startups, indeed the thrust of his Hackers and Painters essay is actually to evangelise hacker startups. Paul Graham has a venture captial company, y-combinator, funding tech startups. Once, he ran a social news website called `startup news‘, which he one day decided to rename to `hacker news’. It’s become one of the more popular websites among programmers, but still carries a large proportion of news items about startups. I’d guess that among these people, hacking has come to mean being as much about becoming a millionaire as enjoying programming for the sake of it.
Eric S. Raymond is perhaps more of a right wing nutcase. ESR is the self-proclaimed editor of the jargon file, AKA the hacker’s dictionary. In 2003 he took it upon himself to make a number of edits to the jargon file to recast the hacker in his own image. The typical political position of a hacker was edited from “vaguely liberal-moderate” to “moderate to neo-conservative”, and the anti-war journalist Robert Fisk was given his own special entry in order to dismiss his opinions.
So I began to feel that the word ‘Hacker’ had been stolen by right wing entrepreneurs. But I’ve realised, that’s really not true. Considering those original hackers at MIT that Stephen Levy wrote about. They were privileged young white male model railway enthusiasts and phone phreakers, leading hidden lives working for the military while the Vietnam war flared, with a war game among their greatest accomplishments. Are they really great role models? There are some amazing groups of hackers around Europe doing wildly creative things. I feel totally inspired by these people, but unfortunately they don’t own the word Hacker any more than Paul Graham or ESR does…
It seems this word means nothing outside a specific community. So, for what it’s worth, these days, if anyone asks, I’m a dork..
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.
2000 – Discovered 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…
2002 – Some 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 Wiggins. Dave Griffiths, another huge inspiration, officially joined slub for a gig at Sonar.
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.
There’s often seen to be a fight between symbolic AI and artificial neural networks (ANNs). The difference is between either modeling either within the grammar of a language, or through training of a network of connections between cells. Both approaches have pros and cons, and you generally pick the approach that you think will serve you best. If you’re writing a database backed website you’ll probably use symbolic computation in general, although it’s possible that you’ll use an ANN in something like a recommendation system.
There is a third approach though, one I’ve fallen in love with and which unifies the other two. It’s really simple, too — it’s geometry. Of course people use geometry in their software all the time, but the point is that if you see geometry as a way of modeling things, distinct from symbols and networks, then everything becomes beautiful and simple and unified. Well, maybe a little.
Here’s an example. I’m eating my lunch, and take a bite. Thousands of sensors on my tongue, my mouth and my nose measure various specialised properties of the food. Each sensor contributes its own dimension to the data sent towards the brain. This is mixed in with information from other modalities — for example sight and sound are also known to influence taste. You end up having to process tens of thousands of data measurements, producing datapoints existing in tens of thousands of dimensions. Ouch.
Somehow all these dimensions are boiled down into just a few dimensions, e.g. bitterness, saltiness, sweetness, sourness, sweetness and umami. This is where models such as artificial neural networks thrive, in constructing low dimensional perception out of high dimensional mess.
The boiled-down dimensions of bitterness and saltiness exist in low dimensional geometry, where distance has meaning as dissimilarity. For example it’s easy to imagine placing a bunch of foods along a saltiness scale, and comparing them accordingly. This makes perfect sense — we know olives are saltier than satsumas not because we’ve learned and stored that as a symbolic relation, but because we’ve experienced their taste in the geometrical space of perception, and can compare our memories of the foods within that space (percepts as concepts, aha!).
So that’s the jump from the high dimensional jumble of a neural network to a low dimensional, meaningful space of geometry. The next jump is via shape. We can say a particular kind of taste exists as a shape in low dimensional space. For example the archetypal taste of apple is the combination of particular sweetness, sourness, saltiness etc. Some apples are sharper than others, and so you get a range of values along each such dimension accordingly, forming a shape in that geometry.
So there we have it — three ways of representing an apple, either symbolically with the word “apple”, as a taste within the geometry of perception, or in the high dimensional jumble of sensory input. These are complimentary levels of representation — if we want to remember to buy an apple we’ll just write down the word, and if we want to compare two apples we’ll do it using a geometrical dimension — “this apple is a bit sweeter than that one”.
Well I think I’m treading a tightrope here between stating the obvious and being completely nonsensical, I’d be interested in hearing which way you think I’m falling. But I think this stuff is somehow really important for programmers to think about — how does your symbolic computation relate to the geometry of perception? I’ll try to relate this to computer music in a later blog post…
If you want to read more about this way of representing things, then please read Conceptual Spaces by Peter Gärdenfors, an excellent book which has much more detail than the summary here…