Friday, January 28, 2011

Computational Epiphanies

A few weeks ago, I came to the realization that all my endeavours are not as disparate as I had previously thought.  There is one thread that runs through all of my interests and that could be used to weave a coherent story from my seemingly incompatible creative output.  I've realized that my writing, my drawing, my music and my video work all involve a computer and would not be possible without a computer (at least using the methods I've developed and on which I presently rely).

This may appear trivial at first glance.  After all, a great many people use computers on a daily basis to do a lot of different things.  What I find interesting about this insight is that it can help me overcome one lingering problem with my refusal to specialized: the impossibility of dedicating enough time to completely master any subject.  It's not that I'm lazy, but there's simply not enough time in a day to do it all at once.

However, I've previously learned that working on general skills (reading, writing, mathematics, logic) can yield benefits in all areas of interest.   It's becoming clear to me that becoming a better computer user would make me a better composer or writer (or comic book artist or video filmmaker).  This is why I've decided to dedicate a large part of this year's free time to learning the fundamentals of computer programming and software engineering.

I know some may be scratching their heads at this point, wondering how computer programming will make me a better musician/composer, comic book artist, writer, or filmmaker.  Well, I'll try to explain...

Computers and music

This should be an obvious one given my current musical obsessions.  More and more, I'm thinking about how to use my computer in novel ways to create interesting music both in performance and in the studio.  Lately, working with Max/MSP or Bidule, I've often wished I were better at coding to create either plugins or software to help me realize my musical vision.  And don't get me started on live coding (man that looks like fun, look at the video below).  To help me get there, I've started working through a wonderful book I recently purchased: The Audio Programming Book.

Algorithms are Thoughts, Chainsaws are Tools from Stephen Ramsay on Vimeo.

Computers and visual art

This is another field where computers have become indispensable.  Knowing how to program would not only mean that I could write some JavaScript to automate fonctions in Photoshop, but I could also write plugins or standalone software that would interact directly with the images.  Already, with my beginners' knowledge of Java, I was able to write a few simple programs that performed operations directly on the pixels of an image (moving them, changing colours, replacing them with pixels from another image).  There's a lot to explore on this front.

Computers and writing

This is one area where even my most favourable readers might think I shouldn't expect to gain any benefits from learning to program.  I'll happily grant that there hasn't been very much development in terms of digital creative tools for literature, but I've had an interest in computer generated (or assisted) prose and poetry since reading Charles Hartman's Virtual Muse about three years ago.  Hartman, under the influence of John Cage, is interested in using computers to introduce elements of chance and randomness in the writing process.  He wrote programs that either randomly reordered previously written lines or that generate grammatical sentences based on syntactical templates and a lexicon.  He would use the result to shake things up and generate new thoughts, in effect collaborating with the computer.

I would prefer to adopt an approach similar to how we think of musical filters and effects in music production.  An input text would be effected by a program following a set of instructions before displaying the result.  I've recently become aware of the work of  Daniel Howe whose RiTa toolkit for Java (as presented in his doctoral dissertation) aims to give writers the resources to harness the power of computation to produce prose and verse.  There's also the folks at the Expressive Intelligence Studio at UCSC and the group running Grand Text Auto that bear watching.

Computers and computers

For all these reasons, I'm very excited about learning to code.  In fact, I've already started by following introductory lectures in Java programming from Stanford University.  This class has been great so far and I quite enjoyed coding my own version of Breakout and some other fun games.  I'm grateful to Stanford for making these courses available freely and I intend to go through all the lectures for the introductory classes and, in time, some of the more advanced stuff as well.  I've also signed up for a certificate in information technology at l'Université du Québec en Outaouais and I'm working through the math pre-requisite this semester.