<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xml:lang="en" xml:base="http://yaxu.org/wp-atom.php">
	<title type="text">Alex McLean</title>
	<subtitle type="text">Making music with text</subtitle>

	<updated>2010-08-19T21:23:53Z</updated>

	<link rel="alternate" type="text/html" href="http://yaxu.org" />
	<id>http://yaxu.org/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/yaxu" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="yaxu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Paper on bricolage programming]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/bricolage-programming-2/" />
		<id>http://yaxu.org/?p=489</id>
		<updated>2010-06-13T21:24:48Z</updated>
		<published>2010-06-13T21:24:48Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[I&#8217;m very happy to have a paper &#8220;Bricolage Programming in the Creative Arts&#8221; accepted to this year&#8217;s PPIG (the Psychology of Programming Interest Group).  You&#8217;re probably better off reading the PDF version, but I&#8217;ve put it here too: Bricolage Programming in the Creative Arts Alex McLean &#XA0;&#XA0;Geraint Wiggins Centre for Cognition, Computation and CultureDepartment of [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/bricolage-programming-2/">&lt;p&gt;I&amp;#8217;m very happy to have a paper &amp;#8220;Bricolage Programming in the Creative Arts&amp;#8221; accepted to this year&amp;#8217;s &lt;a href="http://www.ppig2010.org/"&gt;PPIG&lt;/a&gt; (the Psychology of Programming Interest Group).  You&amp;#8217;re probably better off reading the &lt;a href="http://yaxu.org/writing/ppig.pdf"&gt;PDF version&lt;/a&gt;, but I&amp;#8217;ve put it here too:&lt;/p&gt;
&lt;p&gt;&lt;TABLE CLASS="title"&gt;&lt;TR&gt;&lt;TD&gt;&lt;H2 CLASS="titlemain"&gt;Bricolage Programming in the Creative Arts&lt;/H2&gt;&lt;br /&gt;
&lt;h3 CLASS="titlerest"&gt;Alex McLean &amp;#XA0;&amp;#XA0;Geraint Wiggins&lt;/h3&gt;
&lt;h4&gt;Centre for Cognition, Computation and Culture&lt;br /&gt;Department of Computing&lt;br /&gt;Goldsmiths, University of London&lt;/h4&gt;
&lt;p&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;BLOCKQUOTE CLASS="abstract"&gt;&lt;B&gt;Abstract: &lt;/B&gt;&lt;P&gt;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&amp;#X2019;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&amp;#X2019;s relation to time.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;!--TOC section Introduction--&gt;&lt;br /&gt;
&lt;span id="more-489"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc1"&gt;1&lt;/A&gt;&amp;#XA0;&amp;#XA0;Introduction&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;Over the last decade, computer programming has enjoyed a major resurgence as a medium for the arts. A wealth of new programming environments for the arts, such as Processing, SuperCollider, ChucK, VVVV and OpenFrameworks have joined more established environments such as PureData and Max which have themselves gained enthusiastic adoption outside their traditional academic base. These environments offer varied approaches to supporting artistic use, including alternative programming languages, interfaces and workflow.&lt;/P&gt;&lt;P&gt;The purpose of the present discussion is to examine psychological issues which the resurgence of artistic programming has brought to the fore. What is the relationship between an artist, their creative process, their program, and their artistic works? We will look for answers from perspectives of psychology, cognitive linguistics, computer science and computational creativity, but first from the perspective of the artist.&lt;/P&gt;&lt;!--TOC section Creative Processes--&gt;&lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc2"&gt;2&lt;/A&gt;&amp;#XA0;&amp;#XA0;Creative Processes&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A NAME="sec:creat-progr-proc"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The painter Paul &lt;A HREF="#Klee53"&gt;Klee [1953,  p. 33]&lt;/A&gt; describes a creative process as a feedback loop: &amp;#X201C;Already at the very beginning of the productive act, shortly after the initial motion to create, occurs the first counter motion, the initial movement of receptivity. This means: the creator controls whether what he has produced so far is good. The work as human action (genesis) is productive as well as receptive. It is &lt;B&gt;continuity&lt;/B&gt;.&amp;#X201D; This is creativity without planning, a feedback loop of making a mark on canvas, perceiving the effect, and reacting with a further mark. Being engaged in a tight creative feedback loop places the artist close to their work, guiding an idea to unforeseeable conclusion through a flow of creative perception and action. Klee writes as a painter, working directly with his medium. Programmer-artists instead work using computer language as a textual representation of their medium, and it might seem that this extra level of abstraction could hinder creative feedback. We will see however that this is not necessarily the case, beginning with the account of &lt;A HREF="#Turkle92"&gt;Turkle and Papert [1992]&lt;/A&gt;, describing a &lt;EM&gt;bricolage&lt;/EM&gt; approach to programming by analogy with painting:&lt;/P&gt;&lt;BLOCKQUOTE CLASS="quotation"&gt; The bricoleur resembles the painter who stands back between brushstrokes, looks at the canvas, and only after this contemplation, decides what to do next. Bricoleurs use a mastery of associations and interactions. For planners, mistakes are missteps; bricoleurs use a navigation of midcourse corrections. For planners, a program is an instrument for premeditated control; bricoleurs have goals but set out to realize them in the spirit of a collaborative venture with the machine. For planners, getting a program to work is like &amp;#X201C;saying one&amp;#X2019;s piece&amp;#X201D;; for bricoleurs, it is more like a conversation than a monologue. [&lt;A HREF="#Turkle90"&gt;Turkle and Papert, 1990,  p. 136&lt;/A&gt;]&lt;br /&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;Although Turkle and Papert address gender issues in education, this quote should not be misread as dividing all programmers into two types; while associating bricolage with feminine and planning with male traits, they are careful to note that these are extremes of a behavioural continuum. Indeed, programming style is clearly task specific: for example a project requiring a large team needs more planning than a short script written by the end user.&lt;/P&gt;&lt;P&gt;Bricolage programming seems particularly applicable to artistic tasks, such as writing software to generate music, video animation or still images. Imagine a visual artist, programming their work using Processing. They may begin with an urge to draw superimposed curved lines, become interested in a tree-like structure they perceive in the output of their first implementation, and change their program to explore this new theme further. The addition of the algorithmic step would appear to affect the creative process as a whole, and we seek to understand how in the following.&lt;/P&gt;&lt;!--TOC subsection Creative Process of Bricolage--&gt;&lt;br /&gt;
&lt;H3 CLASS="subsection"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc3"&gt;2.1&lt;/A&gt;&amp;#XA0;&amp;#XA0;Creative Process of Bricolage&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A NAME="sec:creat-proc-bric"&gt;&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE CLASS="figure"&gt;&lt;DIV CLASS="center"&gt;&lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt; &lt;IMG SRC="/images/create_diamond.png"&gt; &lt;DIV CLASS="caption"&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 1: The process of action and reaction in bricolage programming&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;
&lt;/TABLE&gt;&lt;/DIV&gt; &lt;A NAME="fig:process"&gt;&lt;/A&gt; &lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Figure &lt;A HREF="#fig:process"&gt;1&lt;/A&gt; shows bricolage programming as a creative feedback loop encompassing the written algorithm, its interpretation, and the programmer&amp;#X2019;s perception and reaction to its output or behaviour. The addition of the algorithmic component in the creative feedback loop makes an additional inner loop explicit between the programmer and their text. At the beginning, the programmer may have a half-formed concept, which only reaches internal consistency through the process of being expressed as an algorithm. The inner loop is where the programmer elaborates upon their imagination of what might be, and the outer where this trajectory is grounded in the pragmatics of what they have actually made. Through this process both algorithm and concept are developed, until the programmer feels they accord with one another or otherwise judges the creative process to be finished.&lt;/P&gt;&lt;P&gt;Representations in the computer and the brain are evidently distinct from one another. Computer output evokes perception, but that percept will both exclude features that are explicit in the output and include features that are not, due to a host of effects including attention, knowledge and illusion. Equally, a human concept is distinct from a computer algorithm. Perhaps a program written in a declarative rather than imperative style is somewhat closer to a concept, being not an algorithm for how to carry out a task, but rather a description of what is to be done. But still, there is a clear line to be drawn between a string of discrete symbols in code and the morass of symbolic, spatial and relational representations we assume underlies cognition.&lt;/P&gt;&lt;P&gt;There is however something curious about how the programmer&amp;#X2019;s creative process spawns a second, computational one. The computational process is lacking in the cognitive abilities of its author, but is nonetheless both faster and more accurate at certain tasks by several orders of magnitude. It would seem that the programmer uses the programming language and its interpreter as a cognitive resource, augmenting their own abilities in line with the extended mind hypothesis [&lt;A HREF="#Clark08"&gt;Clark, 2008&lt;/A&gt;]. We will revisit this issue within a formal framework in &amp;#XA7;&lt;A HREF="#sec:comp-creat"&gt;5&lt;/A&gt;, after first looking more broadly at how we relate programming to human experience, and related issues of representation.&lt;/P&gt;&lt;!--TOC section Anthropomorphism and Metaphor in Programming--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc4"&gt;3&lt;/A&gt;&amp;#XA0;&amp;#XA0;Anthropomorphism and Metaphor in Programming&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt; &lt;A NAME="sec:anthropomorphism"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Metaphor permeates our understanding of programming. Perhaps this is due to the abstract nature of computer programs, requiring metaphorical constructs to allow us to ground programming language in everyday reasoning. &lt;A HREF="#Petre99"&gt;Petre and Blackwell [1999]&lt;/A&gt; gave subjects programming tasks, and asked them to introspect upon their imagination while they worked. These self reports are rich and varied, including exploration of a landscape of solutions, dealing with interacting creatures, transforming a dance of symbols, hearing missing code as auditory buzzing, combinatorial graph operations, munching machines, dynamic mapping and conversation. While we cannot rely on these introspective reports as authoritative on the inner workings of the mind, the diversity of response hints at highly personalised creative processes, related to physical operations in visual or sonic environments. It would seem that a programmer uses metaphorical constructs defined largely by themselves and not by the computer languages they use. However mechanisms for sharing metaphor within a culture do exist. &lt;A HREF="#Blackwell06a"&gt;Blackwell [2006a]&lt;/A&gt; used corpus linguistic techniques on programming language documentation in order to investigate the conceptual systems of programmers, identifying a number of conceptual metaphors listed in Figure &lt;A HREF="#fig:java-metaphor"&gt;2&lt;/A&gt;. Rather than finding metaphors supporting a mechanical, mathematical or logical approach as you might expect, components were instead described as actors with beliefs and intentions, being social entities acting as proxies for their developers.&lt;/P&gt;&lt;P&gt;The above research suggests that programmers understand the operation of their programs by metaphorical relation to their experience as a human. Indeed the feedback loop described in &amp;#XA7;&lt;A HREF="#sec:creat-progr-proc"&gt;2&lt;/A&gt; is by nature anthropomorphic; by embedding the development of an algorithm in a human creative process, the algorithm itself becomes a human expression. &lt;A HREF="#Dijkstra88"&gt;Dijkstra [1988]&lt;/A&gt; strongly opposed such approaches: &amp;#X201C;I have now encountered programs wanting things, knowing things, expecting things, believing things, etc., and each time that gave rise to avoidable confusions. The analogy that underlies this personification is so shallow that it is not only misleading but also paralyzing.&amp;#X201D; Dijkstra&amp;#X2019;s claim is that by focusing on the operation of algorithms, the programmer submits to a combinatorial explosion of possibilities for how a program might run; not every case can be covered, and so bugs result. Dijkstra argues for a strict, declarative approach to computer science and programming in general, which he views as so radical that we should not associate it with our daily existence, or else limit its development and produce bad software.&lt;/P&gt;&lt;P&gt;The alternative view presented here is that metaphors necessarily structure our understanding of computation. This view is sympathetic to a common assumption in the field of cognitive linguistics, that our concepts are organised in relation to each other and to our bodies, through conceptual systems of metaphor. Software now permeates Western society, and is required to function reliably according to human perception of time and environment. Metaphors of software as human activity are therefore becoming ever more relevant.&lt;/P&gt;&lt;BLOCKQUOTE CLASS="figure"&gt;&lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;DIV CLASS="center"&gt; &lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components are agents of action in a causal universe.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Programs operate in historical time.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Program state can be measured in quantitative terms.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components are members of a society.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components own and trade data.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components are subject to legal constraints.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Method calls are speech acts.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components have communicative intent.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;A component has beliefs and intentions.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components observe and seek information in the execution environment.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Components are subject to moral and aesthetic judgement.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Programs operate in a spatial world with containment and extent.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Execution is a journey in some landscape.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Program logic is a physical structure, with material properties and&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;subject to decay.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Data is a substance that flows and is stored.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Technical relationships are violent encounters.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Programs can author texts.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Programs can construct displays.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Data is a genetic, metabolizing lifeform with body parts.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Software tasks and behaviour are delegated by automaticity.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Software exists in a cultural/historical context.&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;Software components are social proxies for their authors.&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt; &lt;/DIV&gt;&lt;DIV CLASS="caption"&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 2: Conceptual metaphors derived from analysis of Java library documentation by &lt;A HREF="#Blackwell06a"&gt;Blackwell [2006a]&lt;/A&gt;. Program components are described metaphorically as actors with beliefs and intentions, rather than mechanical imperative or mathematical declarative models.&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;/DIV&gt;&lt;P&gt; &lt;A NAME="fig:java-metaphor"&gt;&lt;/A&gt; &lt;/P&gt;&lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;!--TOC section Symbols and Space--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc5"&gt;4&lt;/A&gt;&amp;#XA0;&amp;#XA0;Symbols and Space&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A NAME="sec:space"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;We now turn our attention to how the components of the bricolage programming process shown in Figure &lt;A HREF="#fig:process"&gt;1&lt;/A&gt; are represented, in order to ground understanding of how they may interrelate. Building upon the anthropomorphic view taken above, we propose that in bricolage programming, the human cognitive representation of programs centres around perception. Perception is a low dimensional representation of sensory input, giving us a somewhat coherent, spatial view of our environment. By spatial we do not just mean in terms of physical objects, but also in terms of features in the spaces of all possible tastes, sounds, tactile textures and so on. This scene is built through a process of dimensional reduction from tens of thousands of chemo-, photo-, mechano- and thermoreceptor signals. Algorithms on the other hand are represented in discrete symbolic sequences, as is their output, which must go through some form of digital-to-analogue conversion before being presented to our sensory apparatus, for example as light from a monitor screen or sound pressure waves from speakers, a process we call observation. Recall the programmer from &amp;#XA7;&lt;A HREF="#sec:creat-progr-proc"&gt;2&lt;/A&gt;, who saw something not represented in the algorithm or even in its output, but only in their own perception of the output; observation may itself be a creative act.&lt;/P&gt;&lt;P&gt;The component from Figure &lt;A HREF="#fig:process"&gt;1&lt;/A&gt; not yet mentioned in this section is that of programmers&amp;#X2019; concepts. A concept is &amp;#X2018;a mental representation of a class of things&amp;#X2019; [&lt;A HREF="#Murphy02"&gt;Murphy, 2002,  p.5&lt;/A&gt;]. Figure &lt;A HREF="#fig:process"&gt;1&lt;/A&gt; shows concepts mediating between spatial perception and symbolic algorithms, leading us to ask; are concepts represented more like spatial geometry, like percepts, or symbolic language, like algorithms? Our focus on metaphor leads us to take the former view, that conceptual representation is grounded in perception and the body. This view is taken from Conceptual Metaphor Theory (CMT) introduced by &lt;A HREF="#Lakoff80"&gt;Lakoff and Johnson [1980]&lt;/A&gt;, which proposes that concepts are primarily structured by metaphorical relations, the majority of which are orientational, understood relative to the human body in space or time. In other words, the conceptual system is grounded in the perceptual system. &lt;A HREF="#Gardenfors00"&gt;G&amp;#XE4;rdenfors [2000]&lt;/A&gt; builds upon this by further proposing that the semantic meanings of concepts and the metaphorical relationships between them are geometrical properties and relationships. Concepts themselves are represented by geometric regions of low dimensional spaces defined by quality dimensions, either mapped directly from, or structured by metaphorical relation to perceptual qualities. For example &amp;#X201C;red&amp;#X201D; and &amp;#X201C;blue&amp;#X201D; are regions in perceptual colour space, and the metaphoric semantics of concepts within the spaces of mood, temperature and importance may be defined relative to geometric relationships of such colours.&lt;/P&gt;&lt;P&gt;G&amp;#XE4;rdenforsian conceptual spaces are compelling when applied to concepts related to bodily perception, emotion and movement, and &lt;A HREF="#Forth08"&gt;Forth et&amp;#XA0;al. [2008]&lt;/A&gt; report early success in computational representations of conceptual spaces of musical rhythm and timbre, through reference to research in music perception. However, it is difficult to imagine taking a similar approach to computer programs. What would the quality dimensions of a geometrical space containing all computer programs be? There is no place to begin to answer this question; computer programs are symbolic in nature, and cannot be coherently mapped to a geometrical space grounded in perception.&lt;/P&gt;&lt;P&gt;For clarity we turn once again to &lt;A HREF="#Gardenfors00"&gt;G&amp;#XE4;rdenfors [2000]&lt;/A&gt;, who points out that spatial representation is not in opposition to symbolic representation; they are distinct but support one another. This is clear in computing, hardware exists in our world of continuous space, but thanks to reliable electronics, conjures up a symbolic world of discrete computation. Our minds are able to do the same, for example by computing calculations in our head, or encoding concepts into phonetic movements of the vocal tract or alphabetic symbols on the page. We can think of ourselves as spatial beings able to simulate a symbolic environment to conduct abstract thought and open channels of communication. On the other hand, a piece of computer software is a symbolic being able to simulate spatial environments, perhaps to create a game world or guide robotic movements, both of which may include some kind of model of human perception.&lt;/P&gt;&lt;P&gt;Computer language operates in the domain of abstraction and communication but in general does not at base include spatial semantics. In some cases computer languages are described as &amp;#X2018;visual&amp;#X2019; even when spatial arrangement is purely secondary notation, ignored by the interpreter, such as in Patcher languages [&lt;A HREF="#Puckette88"&gt;Puckette, 1988&lt;/A&gt;]. In fact spatial layout is a feature of secondary notation in mainstream &amp;#X2018;textual&amp;#X2019; languages too, through use of whitespace with no syntactical meaning. That programmers need to use spatial layout as a crutch while composing symbolic sequences is telling; to the interpreter, a block may be a subsequence between braces, but to an experienced programmer it is a perceptual gestalt grouped by indentation. From this we can understand computation as separate from spatial reasoning, but supported by it, with secondary notation helping bridge the divide.&lt;/P&gt;&lt;P&gt;An important aspect of CMT is that a conceptual system of semantic meaning exists within an individual, not in the world. Through language, metaphors become established in a culture and shared by its participants, but this is an effect of individual conceptual systems interacting, and not individuals inferring and adopting external truths of the world (or of possible worlds). This would account for the varied range of metaphor in programming discussed in &amp;#XA7;&lt;A HREF="#sec:anthropomorphism"&gt;3&lt;/A&gt;, as well as the general failure of attempts at designing metaphor into computer interfaces [&lt;A HREF="#Blackwell06c"&gt;Blackwell, 2006b&lt;/A&gt;]. Each programmer has a different set of worldly interests and experiences, and so establishes different metaphorical systems to support their programming activities.&lt;/P&gt;&lt;!--TOC section Components of creativity--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc6"&gt;5&lt;/A&gt;&amp;#XA0;&amp;#XA0;Components of creativity&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A NAME="sec:comp-creat"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;We now have sufficient grounds to fully characterise how the creative process operates in our case study of bricolage programming. For this we employ the Creative Systems Framework (CSF), a high-level formalisation of creativity introduced by &lt;A HREF="#Wiggins06"&gt;Wiggins [2006a]&lt;/A&gt;, &lt;A HREF="#Wiggins06a"&gt;Wiggins [2006b]&lt;/A&gt; and based upon the work of &lt;A HREF="#Boden03"&gt;Boden [2003]&lt;/A&gt;. Creativity is characterised as a search in a space of concepts. Three sets of rules are employed in this search; &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; defining the &lt;EM&gt;search space&lt;/EM&gt; itself, &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; defining &lt;EM&gt;traversal&lt;/EM&gt; of the space and &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt; defining &lt;EM&gt;evaluation&lt;/EM&gt; of concepts found in the space. However, the CSF describes much more than a reactive process of traversal and evaluation. Creativity also requires introspection, self-modification and for boundaries to be broken. In other words, the rulesets &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; and &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt; are examined and challenged by the creative agent following them.&lt;/P&gt;&lt;P&gt;Using the terms of &lt;A HREF="#Gardenfors00"&gt;G&amp;#XE4;rdenfors [2000]&lt;/A&gt;, &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; is a concept defining a space of concept instances.&lt;SUP&gt;&lt;A NAME="text1" HREF="#note1"&gt;1&lt;/A&gt;&lt;/SUP&gt; For example in a creative search for music within a genre, the genre would be the concept and a piece of music conforming to a genre would be a instance of that concept. Crucially, &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; is not a closed space, but rather defined as a subspace of the universe of all possible concepts. This means that a creative agent may creatively push beyond the boundaries of the search as we will see.&lt;/P&gt;&lt;P&gt;We are now in a position to clarify the bricolage programming process introduced in &amp;#XA7;&lt;A HREF="#sec:creat-proc-bric"&gt;2.1&lt;/A&gt; within the CSF. As shown in Figure &lt;A HREF="#fig:process-rte"&gt;3&lt;/A&gt;, the ruleset &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; defines the programmer&amp;#X2019;s concept, being their current artistic focus structured by learnt techniques and conventions, the traversal strategy &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; is the process of encoding and interpreting the algorithm, and the evaluation function &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt; is the perceptual process of observation and reaction.&lt;/P&gt;&lt;BLOCKQUOTE CLASS="figure"&gt;&lt;DIV CLASS="center"&gt;&lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt; &lt;IMG SRC="/images/create_diamond_rte.png"&gt; &lt;DIV CLASS="caption"&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 3: The process of action and reaction in bricolage programming from Figure &lt;A HREF="#fig:process"&gt;1&lt;/A&gt;, annotated with the &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; conceptual space, &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; traversal strategy and &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt; evaluation components of the Creative Systems Framework.&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;/DIV&gt; &lt;A NAME="fig:process-rte"&gt;&lt;/A&gt; &lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;In &amp;#XA7;&lt;A HREF="#sec:creat-progr-proc"&gt;2&lt;/A&gt;, we alluded to the extended mind hypothesis [&lt;A HREF="#Clark08"&gt;Clark, 2008&lt;/A&gt;], claiming that bricolage programming takes part of the human creative process outside of the mind and into the computer. The above makes clear what we claim is being externalised: part of the traversal strategy &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt;. The programmer&amp;#X2019;s concept &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; motivates a development of the strategy &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; to be encoded in a program, but the programmer does not necessarily have the cognitive ability to fully evaluate the program. That task is taken on by the interpreter running on a computer system, meaning that &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; encompasses both encoding by the human and interpretation by the computer.&lt;/P&gt;&lt;P&gt;The traversal strategy &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; is structured by the techniques and conventions employed to convert concepts into operational algorithms. These may include &lt;EM&gt;design patterns&lt;/EM&gt;, a standardised set of &lt;EM&gt;ways of building&lt;/EM&gt; that have become established around imperative programming languages. Each design pattern identifies a &lt;EM&gt;kind&lt;/EM&gt; of problem, and describes a &lt;EM&gt;kind&lt;/EM&gt; of structure as a &lt;EM&gt;kind&lt;/EM&gt; of solution.&lt;SUP&gt;&lt;A NAME="text2" HREF="#note2"&gt;2&lt;/A&gt;&lt;/SUP&gt;&lt;/P&gt;&lt;BLOCKQUOTE CLASS="figure"&gt;&lt;DIV CLASS="center"&gt;&lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt; &lt;IMG SRC="/images/transform.png"&gt; &lt;DIV CLASS="caption"&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 4: Application of a traversal strategy &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; leading outside the concept &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, triggering transformational creativity.&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;/DIV&gt; &lt;A NAME="fig:transform"&gt;&lt;/A&gt; &lt;DIV CLASS="center"&gt;&lt;HR WIDTH="80%" SIZE=2&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;The creative process is constrained by &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, being the programmer&amp;#X2019;s idea of what is a valid end result. This is shaped by the programmer&amp;#X2019;s current artistic focus, being the perceptual qualities they are currently interested in, perhaps congruent with a cultural theme such as a musical genre or artistic movement. Transformational creativity can be triggered in the CSF when application of &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; results in a concept instance that exists outside the constraining bounds of &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, shown in Figure &lt;A HREF="#fig:transform"&gt;4&lt;/A&gt;. If the instance is valued according to &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt;, then &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; is changed to include it. If the instance is not valued, then &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; is changed to avoid that instance in the future. As a result of including external interpretation in &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt;, the programmer is likely to be less successful in writing software that meets their preconceptions, but as a result more successful in being surprised by the results. In other words, the artist&amp;#X2019;s act of externalising part of &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; as a computer program makes the results less predictable, and transformational creativity more likely.&lt;/P&gt;&lt;P&gt;In artistic bricolage programming, then, we conclude that creativity is a process of imagining a concept &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, encoding an operational algorithm as part of &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; to explore within and beyond &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt;, and a perceptual process &lt;FONT COLOR=red&gt;&lt;I&gt;E&lt;/I&gt;&lt;/FONT&gt; to evaluate the output. Through this process both &lt;FONT COLOR=red&gt;&lt;I&gt;R&lt;/I&gt;&lt;/FONT&gt; and &lt;FONT COLOR=red&gt;&lt;I&gt;T&lt;/I&gt;&lt;/FONT&gt; are continually transformed in respect of one another, in creative feedback.&lt;/P&gt;&lt;P&gt;According to our embodied view, not only is perception crucial in evaluating output within bricolage programming, but also in structuring the space in which programs are conceptualised. Indeed if the embodied view of CMT holds in general, the same would apply to all creative endeavour. From this we find a message for the field of computational creativity: a prerequisite for an artificial creative agent is in acquiring computational models of perception sufficient to both evaluate its own works and structure its conceptual system. Only then will the agent have a basis for guiding changes to its own conceptual system and generative traversal strategy, able to modify itself to find artifacts that it was not programmed to find, and place value judgements on them. Such an agent would need to adapt to human culture in order to interact with shifting cultural norms, keeping its conceptual system and resultant creative process as coherent within that culture. For now however this is all wishful thinking, and we must be content with generative computer programs which extend human creativity, but are not creative agents in their own right.&lt;/P&gt;&lt;!--TOC section Programming in Time--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc7"&gt;6&lt;/A&gt;&amp;#XA0;&amp;#XA0;Programming in Time&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;A NAME="sec:programming-time"&gt;&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE CLASS="quotation"&gt; &amp;#X201C;She is not manipulating the machine by turning knobs or pressing buttons. She is writing messages to it by spelling out instructions letter by letter. Her painfully slow typing seems laborious to adults, but she carries on with an absorption that makes it clear that time has lost its meaning for her.&amp;#X201D; Sherry &lt;A HREF="#Turkle05"&gt;Turkle [2005,  p. 92]&lt;/A&gt;, on Robin, aged 4, programming a computer. &lt;/BLOCKQUOTE&gt;&lt;P&gt;Having investigated the representation and operation of bricolage programming we now examine how the creative process operates in time. Considering computer programs as operating in time at all, rather than as logic abstract from the world, is itself a form of the anthropomorphism examined in &amp;#XA7;&lt;A HREF="#sec:anthropomorphism"&gt;3&lt;/A&gt;. However from the above quotation it seems that Robin stepped out of any notion of physical time, and into the algorithm she was composing, entering a timeless state. Speaking anecdotally, programmers report losing hours as they get &amp;#X2018;in the flow&amp;#X2019; when writing software. Perhaps a programmer is thinking in algorithmic time, attending to control flow as it replays over and over in their imagination, and not to the world around them. Or perhaps they are not attending to the passage of time at all, thinking entirely of declarative abstract logic, in a timeless state of building. In either case, it would seem that the human is entering time relationships of their software, rather than the opposite, anthropomorphic direction of software entering human time. However there are ways in which human and computational time may be united, which we will come to shortly.&lt;/P&gt;&lt;P&gt;Temporal relationships are generally not represented in source code. When a programmer needs to do so, for example as an experimental psychologist requiring accurate time measurements, or a musician needing accurate synchronisation between processes, they run into problems. With the wide proliferation of interacting embedded systems, this is becoming a broad concern [&lt;A HREF="#Lee09"&gt;Lee, 2009&lt;/A&gt;]. In commodity systems time has been decentralised, abstracted away through layers of caching, where exact temporal dependencies and intervals between events are not deemed worthy of general interest. Programmers talk of &amp;#X2018;processing cycles&amp;#X2019; as a valuable resource which their processes should conserve, but they generally no longer have programmatic access to the high frequency oscillations of the central processing units (now, frequently plural) in their computer. The allocation of time to processes is organised top-down by an overseeing scheduler, and programmers must work to achieve what timing guarantees are available. All is not lost however, realtime kernels are now available for commodity systems, allowing psychologists [&lt;A HREF="#Finney01"&gt;Finney, 2001&lt;/A&gt;] and musicians (e.g. via &lt;TT&gt;http://jackaudio.org/&lt;/TT&gt;) to get closer to physical time. Further, the representation of time semantics in programming is undergoing active research in a subfield of computer science known as &lt;EM&gt;reactive programming&lt;/EM&gt; [&lt;A HREF="#Elliott09"&gt;Elliott, 2009&lt;/A&gt;], with applications emerging in music [&lt;A HREF="#McLean10a"&gt;McLean and Wiggins, 2010&lt;/A&gt;].&lt;/P&gt;&lt;!--TOC subsection Interactive programming--&gt; &lt;H3 CLASS="subsection"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc8"&gt;6.1&lt;/A&gt;&amp;#XA0;&amp;#XA0;Interactive programming&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;Programmers who &amp;#X2018;think&amp;#X2019; in algorithmic time, like Robin earlier, are well served by dynamically interpreted languages. These allow a programmer to examine an algorithm while it is interpreted, taking on live changes without restarts. This is known as &lt;EM&gt;interactive programming&lt;/EM&gt;, and unites the time flow of a program with that of its development. Interactive programming makes a dynamic creative process of test-while-implement possible, rather than the conventional implement-compile-test cycle, so that arrows shown in Figures &lt;A HREF="#fig:process"&gt;1&lt;/A&gt; and &lt;A HREF="#fig:process-rte"&gt;3&lt;/A&gt; show concurrent influences between components rather than time-ordered steps.&lt;/P&gt;&lt;P&gt;Interactive programming not only provides a more efficient creative feedback loop, but also allows a programmer to connect software development with time based art. Since 2003 an active group of practitioners and researchers have been developing new approaches to making computer music and video animation, collectively known as &lt;EM&gt;Live coding&lt;/EM&gt; [&lt;A HREF="#Blackwell05"&gt;Blackwell and Collins, 2005&lt;/A&gt;, &lt;A HREF="#Ward04"&gt;Ward et&amp;#XA0;al., 2004&lt;/A&gt;, &lt;A HREF="#Collins03a"&gt;Collins et&amp;#XA0;al., 2003&lt;/A&gt;, &lt;A HREF="#Rohrhuber05"&gt;Rohrhuber et&amp;#XA0;al., 2005&lt;/A&gt;]. The archetypal live coding performance involves programmers writing code on stage, with their screens projected for an audience, while the code is dynamically interpreted to generate music or video. Here the process of development is the performance, with the work generated not by a finished program, but its journey of development from an empty text editor to complex algorithm, generating continuously changing musical or visual form along the way. This is bricolage programming perhaps taken to a logical and artistic conclusion.&lt;/P&gt;&lt;!--TOC section Conclusion--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;&lt;A NAME="htoc9"&gt;7&lt;/A&gt;&amp;#XA0;&amp;#XA0;Conclusion&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;P&gt;What we have seen provides strong motivation for programming which address the concerns of artists. These include concerns of workflow, where any time elapsed between source code edit and interpreted output is slows the creative process. Concerns of interfaces are also important, where in certain situations greater emphasis is placed on presentation of short scripts in their entirety as per bricolage programming, rather than hierarchical views of larger codebases. Perhaps most importantly, we have seen motivated the development of programming languages to greater support artistic expression.&lt;/P&gt;&lt;P&gt;From the embodied view we have taken, it would seem useful to integrate time and space further into programming languages. In practice integrating time can mean on one hand including temporal representations in core language semantics, and on the other uniting development time with execution time, as we have seen with interactive programming. Temporal semantics and interactive programming both already feature strongly in some programming languages for the arts, as we saw in &amp;#XA7;&lt;A HREF="#sec:programming-time"&gt;6&lt;/A&gt;, but how about analogous developments in integrating space into the semantics and activity of programming? This is a less well understood area requiring further research, but it would seem that novel approaches to the integration of computational geometry and perceptual models such as computer vision into programming language could serve artists well. By harnessing and extending research into visual programming languages, this could extend to notation, taking for example the ReacTable as inspiration [&lt;A HREF="#Jorda07"&gt;Jord&amp;#XE0; et&amp;#XA0;al., 2007&lt;/A&gt;].&lt;/P&gt;&lt;P&gt;We began with Paul Klee, a painter whose production was limited by his two hands. The artist-programmer is not so limited, but shares what Klee called his limitation of reception, by the &amp;#X201C;limitations of the perceiving eye&amp;#X201D;. This is perhaps a limitation to be expanded but not overcome, rather celebrated and fully explored using all we have, including our new computer languages. We have characterised a bricolage approach to artistic programming as an embodied, creative feedback loop. This places the programmer close to their work, grounding symbolic computation in orientational and temporal metaphors of their human experience. However the computer interpreter extends the programmer&amp;#X2019;s abilities beyond their own imagination, making unexpected results likely, leading the programmer to new creative possibilities.&lt;/P&gt;&lt;!--TOC section References--&gt; &lt;H2 CLASS="section"&gt;&lt;!--SEC ANCHOR --&gt;References&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;DL CLASS="thebibliography"&gt;&lt;DT CLASS="dt-thebibliography"&gt;    &lt;A NAME="Alexander77"&gt;&lt;FONT COLOR=purple&gt;Alexander et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1977]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Christopher Alexander, Sara Ishikawa, and Murray Silverstein. &lt;EM&gt;A Pattern Language: Towns, Buildings, Construction&lt;/EM&gt;. Oxford University Press, first edition, August 1977. ISBN 0195019199.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Blackwell05"&gt;&lt;FONT COLOR=purple&gt;Blackwell and Collins&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2005]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Alan Blackwell and Nick Collins. The programming language as a musical instrument. In &lt;EM&gt;Proceedings of PPIG05&lt;/EM&gt;. University of Sussex, 2005.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Blackwell06a"&gt;&lt;FONT COLOR=purple&gt;Blackwell&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2006&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Alan&amp;#XA0;F. Blackwell. Metaphors we program by: Space, action and society in java. In &lt;EM&gt;Proceedings of the Psychology of Programming Interest Group 2006&lt;/EM&gt;, 2006a.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Blackwell06c"&gt;&lt;FONT COLOR=purple&gt;Blackwell&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2006&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;b&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Alan&amp;#XA0;F. Blackwell. The reification of metaphor as a design tool. &lt;EM&gt;ACM Trans. Comput.-Hum. Interact.&lt;/EM&gt;, 13 (4): 490&amp;#X2013;530, December 2006b. ISSN 1073-0516. doi: 10.1145/1188816.1188820.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Boden03"&gt;&lt;FONT COLOR=purple&gt;Boden&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2003]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Margaret&amp;#XA0;A. Boden. &lt;EM&gt;The Creative Mind: Myths and Mechanisms&lt;/EM&gt;. Routledge, 2 edition, November 2003. ISBN 0415314534.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Clark08"&gt;&lt;FONT COLOR=purple&gt;Clark&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2008]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Andy Clark. &lt;EM&gt;Supersizing the Mind: Embodiment, Action, and Cognitive Extension (Philosophy of Mind Series)&lt;/EM&gt;. OUP USA, November 2008. ISBN 0195333217.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Collins03a"&gt;&lt;FONT COLOR=purple&gt;Collins et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2003]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Nick Collins, Alex McLean, Julian Rohrhuber, and Adrian Ward. Live coding in laptop performance. &lt;EM&gt;Organised Sound&lt;/EM&gt;, 8 (03): 321&amp;#X2013;330, 2003. doi: 10.1017/S135577180300030X.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Dijkstra88"&gt;&lt;FONT COLOR=purple&gt;Dijkstra&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1988]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Edsger&amp;#XA0;W. Dijkstra. On the cruelty of really teaching computing science. 1988.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Elliott09"&gt;&lt;FONT COLOR=purple&gt;Elliott&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2009]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Conal Elliott. Push-pull functional reactive programming. In &lt;EM&gt;Haskell Symposium&lt;/EM&gt;, 2009.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Finney01"&gt;&lt;FONT COLOR=purple&gt;Finney&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2001]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Steven&amp;#XA0;A. Finney. Real-time data collection in linux: A case study. &lt;EM&gt;Behavior Research Methods, Instruments, &amp;amp; Computers&lt;/EM&gt;, 33 (2): 167&amp;#X2013;173, May 2001.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Forth08"&gt;&lt;FONT COLOR=purple&gt;Forth et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2008]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Jamie Forth, Alex McLean, and Geraint Wiggins. Musical creativity on the conceptual level. In &lt;EM&gt;IJWCC 2008&lt;/EM&gt;, 2008.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Gardenfors00"&gt;&lt;FONT COLOR=purple&gt;G&amp;#XE4;rdenfors&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2000]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Peter G&amp;#XE4;rdenfors. &lt;EM&gt;Conceptual Spaces: The Geometry of Thought&lt;/EM&gt;. The MIT Press, March 2000. ISBN 0262071991.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Jorda07"&gt;&lt;FONT COLOR=purple&gt;Jord&amp;#XE0; et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2007]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; S.&amp;#XA0;Jord&amp;#XE0;, G.&amp;#XA0;Geiger, M.&amp;#XA0;Alonso, and M.&amp;#XA0;Kaltenbrunner. The reactable: Exploring the synergy between live music performance and tabletop tangible interfaces. In &lt;EM&gt;Proc. Intl. Conf. Tangible and Embedded Interaction (TEI07)&lt;/EM&gt;, 2007.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Klee53"&gt;&lt;FONT COLOR=purple&gt;Klee&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1953]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Paul Klee. &lt;EM&gt;Pedagogical sketchbook&lt;/EM&gt;. Faber and Faber, 1953.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Lakoff80"&gt;&lt;FONT COLOR=purple&gt;Lakoff and Johnson&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1980]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; George Lakoff and Mark Johnson. &lt;EM&gt;Metaphors We Live By&lt;/EM&gt;. University of Chicago Press, first edition edition, April 1980. ISBN 0226468011.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Lee09"&gt;&lt;FONT COLOR=purple&gt;Lee&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2009]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Edward&amp;#XA0;A. Lee. Computing needs time. &lt;EM&gt;Commun. ACM&lt;/EM&gt;, 52 (5): 70&amp;#X2013;79, 2009. ISSN 0001-0782. doi: 10.1145/1506409.1506426.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="McLean10a"&gt;&lt;FONT COLOR=purple&gt;McLean and Wiggins&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2010]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Alex McLean and Geraint Wiggins. Petrol: Reactive pattern language for improvised music. In &lt;EM&gt;Proceedings of the International Computer Music Conference&lt;/EM&gt;, June 2010.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Murphy02"&gt;&lt;FONT COLOR=purple&gt;Murphy&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2002]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Gregory&amp;#XA0;L. Murphy. &lt;EM&gt;The Big Book of Concepts (Bradford Books)&lt;/EM&gt;. The MIT Press, August 2002. ISBN 0262632993.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Petre99"&gt;&lt;FONT COLOR=purple&gt;Petre and Blackwell&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1999]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Marian Petre and Alan&amp;#XA0;F. Blackwell. Mental imagery in program design and visual programming. &lt;EM&gt;International Journal of Human-Computer Studies&lt;/EM&gt;, 51: 7&amp;#X2013;30, 1999.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Puckette88"&gt;&lt;FONT COLOR=purple&gt;Puckette&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1988]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; M.&amp;#XA0;Puckette. The patcher. In &lt;EM&gt;Proceedings of International Computer Music Conference&lt;/EM&gt;, 1988.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Rohrhuber05"&gt;&lt;FONT COLOR=purple&gt;Rohrhuber et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2005]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Julian Rohrhuber, Alberto de&amp;#XA0;Campo, and Renate Wieser. Algorithms today: Notes on language design for just in time programming. In &lt;EM&gt;Proceedings of the 2005 International Computer Music Conference&lt;/EM&gt;, 2005.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Turkle05"&gt;&lt;FONT COLOR=purple&gt;Turkle&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2005]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Sherry Turkle. &lt;EM&gt;The Second Self: Computers and the Human Spirit, Twentieth Anniversary Edition&lt;/EM&gt;. The MIT Press, 20 anv edition, July 2005. ISBN 0262701111.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Turkle90"&gt;&lt;FONT COLOR=purple&gt;Turkle and Papert&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1990]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Sherry Turkle and Seymour Papert. Epistemological pluralism: Styles and voices within the computer culture. &lt;EM&gt;Signs&lt;/EM&gt;, 16 (1): 128&amp;#X2013;157, 1990. ISSN 00979740. doi: 10.2307/3174610.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Turkle92"&gt;&lt;FONT COLOR=purple&gt;Turkle and Papert&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [1992]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Sherry Turkle and Seymour Papert. Epistemological pluralism and the revaluation of the concrete. &lt;EM&gt;Journal of Mathematical Behavior&lt;/EM&gt;, 11 (1): 3&amp;#X2013;33, March 1992.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Ward04"&gt;&lt;FONT COLOR=purple&gt;Ward et&amp;#XA0;al.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2004]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; Adrian Ward, Julian Rohrhuber, Fredrik Olofsson, Alex McLean, Dave Griffiths, Nick Collins, and Amy Alexander. Live algorithm programming and a temporary organisation for its promotion. In Olga Goriunova and Alexei Shulgin, editors, &lt;EM&gt;read_me &amp;#X2014; Software Art and Cultures&lt;/EM&gt;, 2004.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Wiggins06"&gt;&lt;FONT COLOR=purple&gt;Wiggins&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2006&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; G.&amp;#XA0;A. Wiggins. A preliminary framework for description, analysis and comparison of creative systems. &lt;EM&gt;Journal of Knowledge Based Systems&lt;/EM&gt;, 2006a.&lt;/DD&gt;&lt;DT CLASS="dt-thebibliography"&gt;&lt;A NAME="Wiggins06a"&gt;&lt;FONT COLOR=purple&gt;Wiggins&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; [2006&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;b&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thebibliography"&gt; G.&amp;#XA0;A. Wiggins. Searching for computational creativity. &lt;EM&gt;New Generation Computing&lt;/EM&gt;, 24 (3): 209&amp;#X2013;222, 2006b.&lt;/DD&gt;&lt;/DL&gt;&lt;!--BEGIN NOTES document--&gt; &lt;HR CLASS="footnoterule"&gt;&lt;DL CLASS="thefootnotes"&gt;&lt;DT CLASS="dt-thefootnotes"&gt; &lt;A NAME="note1" HREF="#text1"&gt;1&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thefootnotes"&gt;The terms used by &lt;A HREF="#Gardenfors00"&gt;G&amp;#XE4;rdenfors [2000]&lt;/A&gt; diverge from those used by &lt;A HREF="#Wiggins06"&gt;Wiggins [2006a]&lt;/A&gt;, &lt;A HREF="#Wiggins06a"&gt;Wiggins [2006b]&lt;/A&gt;. Wiggins uses the term &lt;EM&gt;conceptual space&lt;/EM&gt; in the place of G&amp;#XE4;rdenfors&amp;#X2019; &lt;EM&gt;concept&lt;/EM&gt;, and &lt;EM&gt;concept&lt;/EM&gt; in the place of &lt;EM&gt;concept instance&lt;/EM&gt;. The meaning is however the same, particularly when the recursive hierarchy of Wiggins&amp;#X2019; theory is taken into account. &lt;/DD&gt;&lt;DT CLASS="dt-thefootnotes"&gt;&lt;A NAME="note2" HREF="#text2"&gt;2&lt;/A&gt;&lt;/DT&gt;&lt;DD CLASS="dd-thefootnotes"&gt;Interestingly, this structural heuristic approach to problem solving originated in the field of urban design [&lt;A HREF="#Alexander77"&gt;Alexander et&amp;#XA0;al., 1977&lt;/A&gt;]. &lt;/DD&gt;&lt;/DL&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/x71P4tr7sBs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/bricolage-programming-2/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/bricolage-programming-2/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Flash on eval]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/flash-on-eval/" />
		<id>http://yaxu.org/?p=466</id>
		<updated>2010-06-05T07:24:16Z</updated>
		<published>2010-05-29T20:43:01Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[Here&#8217;s a tech demo of my current Haskell live coding environment, an emacs mode adapted from Rohan Drape&#8217;s haskell supercollider mode, with flash on eval adapted from the syntax tail highlighting minor mode. Source coming soon here&#8230; haskell 2 minute acid tech demo from yaxu on Vimeo.]]></summary>
		<content type="html" xml:base="http://yaxu.org/flash-on-eval/">&lt;p&gt;Here&amp;#8217;s a tech demo of my current Haskell live coding environment, an emacs mode adapted from Rohan Drape&amp;#8217;s haskell supercollider mode, with flash on eval adapted from the syntax tail highlighting minor mode.&lt;/p&gt;
&lt;p&gt;Source coming soon &lt;a href="http://yaxu.org/tidal/"&gt;here&lt;/a&gt;&amp;#8230;  &lt;/p&gt;
&lt;p&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12127980&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=12127980&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/12127980"&gt;haskell 2 minute acid tech demo&lt;/a&gt; from &lt;a href="http://vimeo.com/user2179736"&gt;yaxu&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/XtboJuT9btQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/flash-on-eval/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/flash-on-eval/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Visualisation of Live Code]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/visualisation-of-live-code/" />
		<id>http://yaxu.org/?p=431</id>
		<updated>2010-05-29T20:39:49Z</updated>
		<published>2010-05-29T20:22:33Z</published>
		<category scheme="http://yaxu.org" term="livecoding" /><category scheme="http://yaxu.org" term="visualisation" />		<summary type="html"><![CDATA[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 [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/visualisation-of-live-code/">&lt;p&gt;I wrote a paper with &lt;a href="http://pawfal.org/dave/"&gt;Dave Griffiths&lt;/a&gt; and &lt;a href="http://www.informatics.sussex.ac.uk/users/nc81/"&gt;Nick Collins&lt;/a&gt; on the visualisation of live code, exploring ideas around live coding interfaces, accepted for the &lt;a href="http://www.eva-conferences.com/eva_london/2010_home"&gt;EVA London 2010&lt;/a&gt; conference in July.  A HTML version is below, or see the &lt;a href="http://yaxu.org/writing/visualisation-of-live-code.pdf"&gt;PDF Preprint&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Alex McLean (Goldsmiths), Dave Griffiths (FoAM), Nick Collins (University of Sussex)  and Geraint Wiggins (Goldsmiths)&lt;/p&gt;
&lt;h2&gt;Abstract&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-431"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;1. Introduction&lt;/h2&gt;
&lt;p&gt;Live coding, the improvisation of video and/or music using computer language, has developed into an active field of research and arts practice over the last decade &lt;span class="cite"&gt;(Wang and Cook; &lt;a href="#Wang04"&gt;2004&lt;/a&gt;; Ward et al.; &lt;a href="#Ward04"&gt;2004&lt;/a&gt;; Collins et al.; &lt;a href="#Collins03a"&gt;2003&lt;/a&gt;)&lt;/span&gt;. Live coding is made possible by dynamic language interpreters, which allow algorithms to run while they are being modified, taking on changes without any break in the audio or visual output generated by the code. The development of software becomes part of the art in a very real sense; at the beginning of a typical live coded performance there is no code and no audiovisual output, but the output grows in complexity with the code.&lt;/p&gt;
&lt;p&gt;A frequent criticism of computer music is the lack of performance, where an artist hides behind their laptop screen, and the audience is unable to see any activity that might ground their experience of the music &lt;span class="cite"&gt;(Cascone; &lt;a href="#Cascone03"&gt;2003&lt;/a&gt;)&lt;/span&gt;. Solutions continue to be explored, with many researchers focussing on developing tangible interfaces which bring the computer closer to a traditional instrument. However, a live coding tradition has developed taking the straightforward approach of projecting whatever is on the artist’s screen: the code, moving cursors, the debugging output&amp;#8230; The audience is then able to see the human movements and code structures behind an improvisation.&lt;/p&gt;
&lt;p&gt;This tradition of projecting screens is itself open to criticism; the audience members may feel distracted, or perhaps even excluded by the projection of code written in language they do not necessarily understand. The alternative of showing nothing, hiding behind a laptop screen, is felt to be untenable, but perhaps more should be understood about the practice of projecting code. Watching the articulations of a live guitarist may enhance the experience of a listener who does not play a musical instrument themselves. Can a live coder elucidate the more abstract thinking gestures of their practice? The search is on for ways of visualising code development that allows non-programmers to enhance their enjoyment and understanding of a live coded piece.&lt;/p&gt;
&lt;h2&gt;2. Perceiving code&lt;/h2&gt;
&lt;p&gt;Generally, a programmer cannot work with their eyes closed; a programmer’s text editor is a visual interface&lt;a class="footnote" href="#a0000000004"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;. Text editors have gained many features over the last few decades, to the point where we no longer call them text editors but Interactive Development Environments (IDEs). The visual presentation of code has developed its own aesthetic; colour is used to highlight syntax, fonts have been designed for code (e.g. ProFont, proggy), and visual tools for navigating around tree-like code structures. Nonetheless computation is fundamentally about symbol manipulation, and the composition of symbols lies at the heart of every IDE. When our eyes saccade across code, the shapes on the screen are categorised into these symbols, and we perceive them as the tokens (words) and statements (sentences) making up our program. The computer interprets code as a one dimensional string of discrete symbols, but humans perceive it as symbols within a spatial scene. Expert programmers may be able to chunk larger blocks of code as meaningful entities; less experienced live code audiences may become stuck on small details, but an elaborate dance of spatial change to code is evident over time.&lt;/p&gt;
&lt;p&gt;Our perception of source code is aided not only by spatial organisation, but also by colour highlighting, in-line documentation and the well chosen names given to abstractions and data structures. These features are collectively known as secondary syntax&lt;a class="footnote" href="#a0000000005"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;, being that ignored by the interpreter but of benefit to programmers in understanding and organising their code. A challenge to those pushing the boundaries of programming language design is to find ways of taking what is normally secondary syntax as primary. For example the ColorForth language uses colour as primary syntax, replacing the need for punctuation. Even more radically, the instruction set of the Piet language illustrated in Figure &lt;a href="#fig:piet"&gt;2&lt;/a&gt; is formed by first order colour relationships within a two dimensional grid; instructions include directional modifiers so that control flow travels in two dimensions. Piet, among many other esoteric languages, is inspired by the two dimensional syntax of Befunge shown in Fig. &lt;a href="#fig:befunge"&gt;1&lt;/a&gt;, a textual language where arrow-like characters change the direction of control flow. Some languages bordering on mainstream, such as Haskell and to a lesser extent Python have a syntax that takes two dimensional arrangement into account when grouping statements, although this is otherwise unusual.&lt;/p&gt;
&lt;p&gt;Secondary syntax is of great importance to human understanding, despite being ignored by the computer interpreter. Without spatial layout and elements of natural language a program would be next to unreadable by humans. Humans live an embodied existence in a spatial environment, and while we are perfectly able to perform computation, our spatial ability still supports such thought processes &lt;span class="cite"&gt;(Gärdenfors; &lt;a href="#Gardenfors00"&gt;2000&lt;/a&gt;)&lt;/span&gt;. As a result source code, as Human Computer Interface, is a half-way mixture of geometrical relations and symbolic structures. This is true even of the ‘patcher’ dataflow languages in common use in the digital arts &lt;span class="cite"&gt;(Puckette; &lt;a href="#Puckette88"&gt;1988&lt;/a&gt;)&lt;/span&gt;, such as Max and PureData. Patcher languages are often described as ‘visual’, but in fact all the functions are defined textually, and the visual arrangement is purely secondary syntax &lt;a class="footnote" href="#a0000000006"&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Visualisation of code may either act as secondary syntax in order to enhance code comprehension for human viewers, or go further as primary syntax to enhance meaning for both humans and computers. The latter is of particular interest, as to some extent it requires making models of human perception the basis of computer language.&lt;/p&gt;
&lt;h3 id="a0000000007"&gt;2.1. Morphology of Sound, Shape and Symbols&lt;/h3&gt;
&lt;p&gt;TurTan is a geometric visual live coding language introduced by &lt;span class="cite"&gt;Gallardo et al. (&lt;a href="#Gallardo08"&gt;2008&lt;/a&gt;)&lt;/span&gt;, using the technology of the Reactable &lt;span class="cite"&gt;(Jordà et al.; &lt;a href="#Jorda07"&gt;2007&lt;/a&gt;)&lt;/span&gt;. The functions of the language are manipulated as physical blocks that are placed on a tabletop interface, with nearest neighbours forming a sequence, and relative angle mapping to the function’s parameter. The functions describe turtle graphics operations, and the resulting recursive forms are continuously updated on the table surface display.&lt;/p&gt;
&lt;p&gt;TurTan inspired a system by Alex McLean and introduced here, with the working title of Acid Sketching. In Acid Sketching, a sound is specified simply by drawing a shape, where morphological measurements are mapped to parameters of an acid bassline synthesiser. The area of a shape is mapped to pitch, its regularity (perimeter length vs area) mapped to envelope modulation, and relative angle of central axis mapped to resonance. Several such shapes are drawn in an arrangement, where a minimum spanning tree of their centroids is taken as a polyphonic sequence, where distance equals relative time. Feedback may be projected back on to the drawing surface, so shapes flash red as they are triggered. A static figure would not make this clearer, however illustrative video is available online at &lt;a href="http://yaxu.org/acid-sketching/"&gt;http://yaxu.org/acid-sketching/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While Acid Sketching and TurTan are far from what is typically understood as live coding, both lead us to challenge understanding of the role of symbols, shape and geometry in computation. Investigating how such concrete forms of interaction could be married with the abstractions of general, Turing complete programming languages could be an interesting research topic itself.&lt;/p&gt;
&lt;p&gt;Critically connected to live coding engagement with time-based media, is the time-based revelation of code itself. For electroacoustic music, Pierre Schaeffer’s theories of sound timbre have been further dynamised into the time-variant sonic gestures of Denis Smalley’s spectromorphology &lt;span class="cite"&gt;(Landy; &lt;a href="#Landy07"&gt;2007&lt;/a&gt;)&lt;/span&gt;. For live coding, we might analogously dub ’codeomorphology’ as the changing shape of code over time. Examples include the accumulating code revisions referenced on the edge of ChucK language Audicle documents, or SuperCollider’s ‘History’ class to document a live code performance. More visual representations of change over time would include accessible visualisations of programmer activity. Metrics might be displayed to characterise changes per second, from coarse keystroke counts to the depth of parse tree disruption; this brings us to self-evaluating performances, and coder re-coding of their very visualisations&amp;#8230;&lt;/p&gt;
&lt;h2&gt;3. Visual experiments in live code&lt;/h2&gt;
&lt;p&gt;This section serves to introduce four novel visual/geometric live coding systems by Dave Griffiths, namely &lt;em&gt;Scheme Bricks&lt;/em&gt;, &lt;em&gt;Betablocker&lt;/em&gt;, &lt;em&gt;Al-Jazari&lt;/em&gt; and &lt;em&gt;Daisy Chain&lt;/em&gt;, along with some of the systems which inspired them. All of these languages were constructed within Fluxus, a game engine designed for live coding performances and experiments and available under a free (GPL) license from &lt;a href="http://www.pawfal.org/fluxus/"&gt;http://www.pawfal.org/fluxus/&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="sec:exec-flow-oper"&gt;3.1. Execution flow and operational events&lt;/h3&gt;
&lt;div id="fig:befunge" class="figure"&gt;
&lt;pre style="color: #000;"&gt;
vv  &amp;lt;      &amp;lt;
    2
    ^  v&amp;lt;
 v1&amp;lt;?&amp;gt;3v4
    ^   ^
&amp;gt;  &amp;gt;?&amp;gt;  ?&amp;gt;5^
    v   v
 v9&amp;lt;?&amp;gt;7v6
    v  v&amp;lt;
    8
 .  &amp;gt;  &amp;gt;   ^
^&amp;lt;&lt;/pre&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;: &lt;span&gt;A pseudo-random number generator written in the two-dimensional language Befunge.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:piet" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0001.png" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/piet.png}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 2&lt;/strong&gt;: &lt;span&gt;Source code written in the Piet language with two dimensional, colour syntax. Prints out the text “Hello, world!”.  Image © Thomas Schoch 2006. Used under the Creative Commons BY-SA 2.5 license. &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:corewar" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0002.png" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/corewar.png}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 3&lt;/strong&gt;: &lt;span&gt;Core war runtime display, showing visualisation of process memory shared between the players&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:betablocker" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0003.jpg" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/betablocker.jpg}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 4&lt;/strong&gt;: &lt;span&gt;A live edit in the Betablocker environment, selecting an instruction from a wheel of possibilities.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:aljazari" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0004.jpg" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/aljazari.jpg}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 5&lt;/strong&gt;: &lt;span&gt;The robots of Al-Jazari, each with a thought bubble containing a program, live coded with a gamepad.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:schemebricks" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0005.jpg" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/sbricks.jpg}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 6&lt;/strong&gt;: &lt;span&gt;SchemeBricks, a lisp environment using colour instead of parenthesis, and flashes as a cue for control flow.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="fig:daisychain" class="figure"&gt;
&lt;p&gt;&lt;img style="width: 75mm;" src="/images/visualisationlivecode/img-0006.png" alt="\includegraphics[width=75mm]{/images/visualisationlivecode/daisychain.png}" /&gt;&lt;/p&gt;
&lt;div class="caption"&gt;&lt;strong&gt;Figure 7&lt;/strong&gt;: &lt;span&gt;A section of a Daisy Chain program.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Computation is a metaphorical movement, where algorithmic processes operate on data (which can include the algorithms themselves) in memory in the discrete time steps of the CPU. Ways of visualising memory as it is changed have been developed for conventional debuggers, particularly in microcontroller applications where memory is small enough to be viewed in its entirety. More novel visualisations also exist, such as Tierra, an artificial life simulation where code evolves in a Darwinian competition which can only be appreciated when viewed as such, or Core War (Fig. &lt;a href="#fig:corewar"&gt;3&lt;/a&gt;), a game where player/programmers write code which fight over memory address space.&lt;/p&gt;
&lt;p&gt;Live coding has the unique opportunity to visualise the movement of an underlying process while it is being formed. This helps an audience appreciate a live coding performance in a more meaningful way – as it bridges the gap between an abstract description of a process (the code) and process itself (the generated pattern of movement through memory). Betablocker (Fig. &lt;a href="#fig:betablocker"&gt;4&lt;/a&gt;) is a raw visualisation of an imaginary 8-bit processor operating in 256 bytes of memory. This brightly coloured live coding environment is operated by writing assembly code with a gamepad. The processes are visualised while they operate on the memory addresses and trigger sound events. Processes are able to modify themselves and each other, resulting in highly dynamic relationships which are challenging to control.&lt;/p&gt;
&lt;p&gt;A more traditional method of programming is employed in &lt;em&gt;Scheme Bricks&lt;/em&gt; (Fig. &lt;a href="#fig:schemebricks"&gt;6&lt;/a&gt;), a geometric interface for constructing Scheme programs. Scheme Bricks takes advantage of the isomorphism of code and data in the Scheme programming language, and is inspired by the Scratch language designed for use by children &lt;span class="cite"&gt;(Resnick et al.; &lt;a href="#Resnick09"&gt;2009&lt;/a&gt;)&lt;/span&gt;. Scheme Bricks allows you to drag, drop and plug together programs rather than typing. This has some potential side effects; in a performance situation, it is impossible to have a mismatched parenthesis error, as is common in other lisp-like languages. It is quicker to change the overall structure of the program as sections can be removed and reinserted easily by drag/drop actions. Unwanted sections are pulled out of the program and set aside rather than being deleted, and accumulate around the program as ‘spare parts’ which are often later ‘recycled’ by being pulled back into another section.&lt;/p&gt;
&lt;p&gt;Scheme Bricks uses visual feedback to relate sound events to the code; the instruction which triggered a sound event flashes as the sound is played. This minimal approach to process visualisation makes the relationship between sound and code structure clearer than &lt;em&gt;Betablocker&lt;/em&gt;’s more complete visualisation, and is useful for the performer to immediately locate the code generating a particular sound event.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Daisy Chain&lt;/em&gt; (Fig. &lt;a href="#fig:daisychain"&gt;7&lt;/a&gt;) is an attempt to embrace less rigid structures while maintaining enough of a computational basis to qualify as a live coding performance. It follows a processing system based on Petri nets &lt;span class="cite"&gt;(Petri; &lt;a href="#Petri66"&gt;1966&lt;/a&gt;)&lt;/span&gt;, where executable instruction tokens move around a directed graph. Daisy Chain programs create and modify the graph topologies that they inhabit, producing sounds as a side effect of the computation. The look of the performance was designed to be as far from conventional programming as possible, hand animated flowers and drawn instruction symbols moving around graphs constrained by spring models.&lt;/p&gt;
&lt;p&gt;The nodes of a Daisy Chain graph have a fixed lifetime, which was introduced in order to counter a common problem with live coding where the audience watching and performer concentrating on programming tend to perceive time differently. Daisy Chain prevents musical structures from persisting too long, keeping the performance moving forward at a rate the performer can control beforehand.&lt;/p&gt;
&lt;h3&gt;3.2. Computation in game worlds&lt;/h3&gt;
&lt;p&gt;Code has a long tradition of use in games as a gameplay mechanic, an early example being Core War developed in the mid 1980s and discussed above in §&lt;a href="#sec:exec-flow-oper"&gt;3.1&lt;/a&gt;. More recent games such as Carnage Heart and Marionette Handler are mainstream games for the Playstation which employ programming environments using icons. These programs are used to control robots which battle it out in large virtual arenas. Popular game titles such as Little Big Planet allow the player to construct machines as part of game worlds, complex enough to support Turing complete computation. Kodu, a research project at Microsoft goes even further, as an end-user games programming environment on the XBox.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Al-Jazari&lt;/em&gt; is a deliberate attempt to fuse games and live coding performances. It was designed to use a similar visual process to BetaBlocker, but this time mediated through the actions of robotic agents moving around a 3D world, triggering sounds as they do so (Fig. &lt;a href="#fig:aljazari"&gt;5&lt;/a&gt;). The use of visual agents following commands rather than abstract processes is intended to make the performance more immediately understandable for the audience. Al Jazari has been expanded as an art installation, audience participatory performance and recently as a facebook game &amp;#8211; with the aim to increase the accessibility of live coding to the point where anyone can become a live coder.&lt;/p&gt;
&lt;h2 id="a0000000010"&gt;4. Conclusion&lt;/h2&gt;
&lt;p&gt;Visualisation is central to live coding. In this article, we have confronted how code is perceived by performers and audiences, and in what ways visual elements contribute to the primary syntax and semantics of a programming language meant for live coding. Consideration of visual elements of code have also become essential as live coding has formed the basis of virtual game worlds. We have introduced a number of novel systems, presented here as explorations of these themes. Visualisation of live code however remains under-investigated in terms of the psychology of programming; while &lt;span class="cite"&gt;Blackwell and Collins (&lt;a href="#Blackwell05"&gt;2005&lt;/a&gt;)&lt;/span&gt; lead the way into HCI, evaluation protocols are yet to be adapted and applied to experience of live coded performances. This is however fertile ground for practice based research, and we anticipate the changing shapes of code over time, a codeomorphology at timescales from individual performances to lifetimes of artistic and technological development.&lt;/p&gt;
&lt;div&gt;
&lt;h2&gt;Bibliography&lt;/h2&gt;
&lt;dt&gt;
[&lt;a name="Blackwell05"&gt;1&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Blackwell, A. and Collins, N. (2005). The programming language as a musical instrument. In &lt;em&gt;Proceedings of PPIG05&lt;/em&gt;. University of Sussex. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Cascone03"&gt;2&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Cascone, K. (2003). Grain, sequence, system (three levels of reception in the performance of laptop music). In Kleiner, M. S. and Szepanski, A., editors, &lt;em&gt;Soundcultures&lt;/em&gt;. Suhrkamp. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Collins03a"&gt;3&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Collins, N., McLean, A., Rohrhuber, J., and Ward, A. (2003). Live coding in laptop performance. &lt;em&gt;Organised Sound&lt;/em&gt;, 8(03):321–330. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Gallardo08"&gt;4&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Gallardo, D., Julià, C. F., and Jordà, S. (2008). Turtan: a tangible programming language for creative exploration. In &lt;em&gt;Third annual IEEE international workshop on horizontal human-computer systems (TABLETOP)&lt;/em&gt;. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Gardenfors00"&gt;5&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Gärdenfors, P. (2000). &lt;em&gt;Conceptual Spaces: The Geometry of Thought&lt;/em&gt;. The MIT Press. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Jorda07"&gt;6&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Jordà, S., Geiger, G., Alonso, M., and Kaltenbrunner, M. (2007). The reactable: Exploring the synergy between live music performance and tabletop tangible interfaces. In &lt;em&gt;Proc. Intl. Conf. Tangible and Embedded Interaction (TEI07)&lt;/em&gt;. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Landy07"&gt;7&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Landy, L. (2007). &lt;em&gt;Understanding the Art of Sound Organization&lt;/em&gt;. The MIT Press. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Petri66"&gt;8&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Petri, C. A. (1966). Communication with automata. Technical report, Applied Data Research Inc. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Puckette88"&gt;9&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Puckette, M. (1988). The patcher. In &lt;em&gt;Proceedings of International Computer Music Conference&lt;/em&gt;. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Resnick09"&gt;10&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Resnick, M., Maloney, J., Hernández, A. M., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., and Kafai, Y. (2009). Scratch: programming for all. &lt;em&gt;Commun. ACM&lt;/em&gt;, 52(11):60–67. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Wang04"&gt;11&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Wang, G. and Cook, P. R. (2004). On-the-fly programming: using code as an expressive musical instrument. In &lt;em&gt;NIME ’04: Proceedings of the 2004 conference on New interfaces for musical expression&lt;/em&gt;, pages 138–143, Singapore, Singapore. National University of Singapore. &lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;
[&lt;a name="Ward04"&gt;12&lt;/a&gt;]
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Ward, A., Rohrhuber, J., Olofsson, F., McLean, A., Griffiths, D., Collins, N., and Alexander, A. (2004). Live algorithm programming and a temporary organisation for its promotion. In Goriunova, O. and Shulgin, A., editors, &lt;em&gt;read_me — Software Art and Cultures&lt;/em&gt;. &lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;p&gt;&lt;strong&gt;Footnotes&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li id="a0000000004"&gt;A counter-example would be programming interfaces for the blind, which employ speech synthesis.&lt;/li&gt;
&lt;li id="a0000000005"&gt;The term ‘secondary syntax’ is problematic. Firstly, secondary syntax is only secondary relative to the computer interpreter, and not the human. Secondly, secondary syntax is not syntax in any clear sense; indeed spatial relationships are the basis of semantic meaning as understood in the field of cognitive linguistics. However as secondary syntax is the standard term used in the field of Human Computer Interaction (HCI) we persist with using it here.&lt;/li&gt;
&lt;li id="a0000000006"&gt;In Max, left-right position alters execution order, although relying upon this is discouraged in favour of the ‘trigger’ object.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/rOYTPylhnjs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/visualisation-of-live-code/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/visualisation-of-live-code/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Formatting LaTeX for on-screen proof reading]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/formatting-latex-for-the-screen/" />
		<id>http://yaxu.org/?p=428</id>
		<updated>2010-04-28T08:27:35Z</updated>
		<published>2010-04-28T08:27:35Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[A few people on twitter found this useful so here it is in full: I&#8217;ve been writing a few papers lately and going through the cycle of write -&#62; print -&#62; proofread -&#62; write, generating a lot of paper.  I&#8217;ve text to hard to read on screen, and raw LaTeX somehow feels too malleable to [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/formatting-latex-for-the-screen/">&lt;p&gt;A few people on twitter found this useful so here it is in full:&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been writing a few papers lately and going through the cycle of write -&amp;gt; print -&amp;gt; proofread -&amp;gt; write, generating a lot of paper.  I&amp;#8217;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.&lt;/p&gt;
&lt;p&gt;I came up with this, two columns with minimal margins:﻿﻿﻿&lt;/p&gt;
&lt;pre&gt;%\documentclass[compact,twocolumn]{article}&lt;/pre&gt;
&lt;pre&gt;%\usepackage[top=0.1in, bottom=0.1in, left=0.3in, right=0.3in, paperwidth=11in, paperheight=7in]{geometry}&lt;/pre&gt;
&lt;pre&gt;%\setlength{\columnsep}{30pt}&lt;/pre&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;If you still find yourself with eye strain, rather than reading from paper, consider adjusting the position of your monitor.  There&amp;#8217;s a lot of hype around e-paper, and it does look lovely, but I&amp;#8217;m unsure that the evidence shows that LCDs are significantly worse for eye strain if at all&amp;#8230;  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.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/DOQ0VprP7BA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/formatting-latex-for-the-screen/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/formatting-latex-for-the-screen/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Upcoming events]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/upcoming-events/" />
		<id>http://yaxu.org/?p=426</id>
		<updated>2010-04-26T19:51:34Z</updated>
		<published>2010-04-26T19:51:34Z</published>
		<category scheme="http://yaxu.org" term="events" />		<summary type="html"><![CDATA[A few things coming up 1st May 2010 &#8211; Slub VJing with Kirk Degiorgio at Lambda Festival, Antwerp 2nd May 2010 &#8211; Slub Live at Lambda Festival again 13th May 2010 &#8211; Participating on a Cenatus Panel Session on the Future of Music at FutureEverything, Manchester 3rd September 2010 &#8211; Live coding at FACT Liverpool (TBC) [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/upcoming-events/">&lt;p&gt;A few things coming up&lt;/p&gt;
&lt;p&gt;1st May 2010 &amp;#8211; &lt;a href="http://slub.org/"&gt;Slub&lt;/a&gt; VJing with Kirk Degiorgio at &lt;a href="http://dagosondervan.wordpress.com/lambda-elektronisch-muziekfestival/"&gt;Lambda Festival&lt;/a&gt;, Antwerp&lt;br /&gt;
&lt;span style="font-size: 13.2px;"&gt;2nd May 2010 &amp;#8211; &lt;a href="http://slub.org/"&gt;Slub&lt;/a&gt; Live at Lambda Festival again&lt;br /&gt;
13th May 2010 &amp;#8211; Participating on a &lt;a href="http://dagosondervan.wordpress.com/lambda-elektronisch-muziekfestival/"&gt;Cenatus Panel Session&lt;/a&gt; on the Future of Music at FutureEverything, Manchester&lt;br /&gt;
3rd September 2010 &amp;#8211; Live coding at FACT Liverpool (TBC)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 13.2px;"&gt;Plus we&amp;#8217;re doing a live coding tour of the North of England towards the end of the year.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 13.2px;"&gt;Also coming up, next month&amp;#8217;s &lt;a href="http://dorkbotlondon.org/"&gt;dorkbotlondon&lt;/a&gt;, 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 &lt;a href="http://leplacard.org/"&gt;placard&lt;/a&gt; or &lt;a href="http://toplap.org/uk/"&gt;pubcode&lt;/a&gt; too, and the date of the annual &lt;a href="http://dorkbotlondon.org/wiki/index.php/DorkCamp10"&gt;dorkcamp&lt;/a&gt; should be confirmed soon&amp;#8230;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 13.2px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/_X5a80laWBY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/upcoming-events/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/upcoming-events/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[The Joy of Interpretation]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/the-joy-of-interpretation/" />
		<id>http://yaxu.org/?p=406</id>
		<updated>2010-04-26T11:43:24Z</updated>
		<published>2010-04-26T09:21:35Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[Without interpreters, we wouldn&#8217;t have software, but yet interpreters are also software.  This is why we talk about `bootstrapping&#8217;, 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 [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/the-joy-of-interpretation/">&lt;p&gt;Without interpreters, we wouldn&amp;#8217;t have software, but yet interpreters are also software.  This is why we talk about `bootstrapping&amp;#8217;, where software pulls itself from the floor by its bootstraps, a paradox settled by the existence of hardware microcode.&lt;/p&gt;
&lt;p&gt;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&amp;#8217; to produce `binaries&amp;#8217;, but these are just translations into another language, which still needs interpreting for the magic to happen.&lt;/p&gt;
&lt;p&gt;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&amp;#8217;re only scratching the surface of what&amp;#8217;s possible, artistic and otherwise, from marrying high speed computation with embodied human experience.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a shame then that the freedom of thought that interpreters give us happen to threaten business models of large companies, who are accordingly &lt;a href="http://en.wikipedia.org/wiki/Jailbreaking_for_iPhone_OS#USA_Legal_issues"&gt;searching for the power to make free access to them them illegal&lt;/a&gt;.  `Console&amp;#8217; 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.&lt;/p&gt;
&lt;p&gt;What is frightening is that these business models are spreading &amp;#8212; 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&amp;#8217;t write a program about touch, or about marks.  iScratch, a project that allowed children to interpret their programs on the iPhone, &lt;a href="http://blog.scratch.mit.edu/2010/04/scratch-on-iphone.html"&gt;has been rejected from the apple store&lt;/a&gt;.  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 &lt;a href="http://www.mikechambers.com/blog/2010/04/20/on-adobe-flash-cs5-and-iphone-applications/"&gt;large company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;p&gt;UPDATE: If you needed convincing on the point of interpreters allowing higher order creativity, check out Dave&amp;#8217;s latest work: &lt;a href="http://www.pawfal.org/dave/blog/2010/04/lazybotz/"&gt;http://www.pawfal.org/dave/blog/2010/04/lazybotz/&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/AH-AFVYtIYQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/the-joy-of-interpretation/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/the-joy-of-interpretation/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Bricolage programming and patterns]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/bricolage-programming/" />
		<id>http://yaxu.org/?p=398</id>
		<updated>2010-03-25T14:52:29Z</updated>
		<published>2010-03-24T14:28:13Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[It&#8217;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 [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/bricolage-programming/">&lt;p&gt;It&amp;#8217;s &lt;a href="http://findingada.com/"&gt;Ada Lovelace&lt;/a&gt; day today, and it turns out my main influences lately have been two women.&lt;/p&gt;
&lt;p&gt;One is &lt;a href="http://www.mit.edu/~sturkle/"&gt;Sherry Turkle&lt;/a&gt;, via her book ﻿&lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=10515"&gt;The Second Self: Computers and the Human Spirit&lt;/a&gt;, and her work on ﻿&lt;a href="http://www.papert.org/articles/EpistemologicalPluralism.html"&gt;Epistemological Pluralism and the Revaluation of the Concrete&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a choice quote from the epistemological pluralism paper:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;My other recent influence is &lt;a href="http://retiary.org/ls/"&gt;Laurie Spiegel&lt;/a&gt;, in particular her writing on the &lt;a href="http://retiary.org/ls/writings/musical_manip.html"&gt;manipulation of musical patterns&lt;/a&gt;.  I&amp;#8217;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 &lt;em&gt;all&lt;/em&gt; 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&amp;#8217;s much more inspiration for musician-programmers to be gained from her &lt;a href="http://retiary.org/ls/writings.html"&gt;other writings&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/FT6iDknUCG0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/bricolage-programming/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/bricolage-programming/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Pure dyne]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/puredyn/" />
		<id>http://yaxu.org/?p=395</id>
		<updated>2010-01-20T09:39:02Z</updated>
		<published>2010-01-20T09:39:02Z</published>
		<category scheme="http://yaxu.org" term="livecoding" /><category scheme="http://yaxu.org" term="music" /><category scheme="http://yaxu.org" term="supercollider" />		<summary type="html"><![CDATA[I&#8217;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&#8217;ve had to give ubuntu up and go back upstream to the rather [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/puredyn/">&lt;p&gt;&lt;a href="http://yaxu.org/wp-content/uploads/2010/01/header.png"&gt;&lt;img class="alignnone size-full wp-image-396" title="puredyne" src="http://yaxu.org/wp-content/uploads/2010/01/header.png" alt="" width="393" height="141" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;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&amp;#8217;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&amp;#8217;t edit, and an architecture that somehow means only one OSS application can write sound at a time.  It seems to me that it&amp;#8217;s a failing of ALSA that further layers of abstraction are piled on top of it, creating a &lt;a href="http://0pointer.de/blog/projects/guide-to-sound-apis.html"&gt;rather complex landscape&lt;/a&gt; for sound hackers to navigate.&lt;/p&gt;
&lt;p&gt;Ubuntu has joined in the fun by shipping with &lt;a href="https://wiki.ubuntu.com/PulseAudio"&gt;PulseAudio&lt;/a&gt;, 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&amp;#8217;t work so well.  That&amp;#8217;s why I switched to &lt;a href="http://www.sidux.com/"&gt;debian sidux&lt;/a&gt;, but then I couldn&amp;#8217;t get laptop hibernation, or my firewire sound card working, and had the stress of maintaining an unstable distribution.&lt;/p&gt;
&lt;p&gt;However this week &lt;a href="http://puredyne.goto10.org/download.html"&gt;Puredyne carrot and coriander&lt;/a&gt; came out, and it&amp;#8217;s really great.  The kernel is optimised for realtime sound, and jack audio runs solidly without any drop outs, something I haven&amp;#8217;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&amp;#8217;s downstream from ubuntu, so all the software is available.  It&amp;#8217;s a dream!&lt;/p&gt;
&lt;p&gt;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&amp;#8217;s what I&amp;#8217;ve done.&lt;/p&gt;
&lt;p&gt;Anyway, heartily recommended, a dream come true, congratulations to all those involved.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/NY6SvBePxBk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/puredyn/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/puredyn/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[2000 to 2009]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/2000-to-2009/" />
		<id>http://yaxu.org/?p=381</id>
		<updated>2009-12-31T14:16:15Z</updated>
		<published>2009-12-31T00:26:45Z</published>
		<category scheme="http://yaxu.org" term="rant" />		<summary type="html"><![CDATA[Inspired by Christof, here&#8217;s my roundup of 2000 to 2009, seriously inhibited by my terrible memory.  Will add to this as I remember events. 2000 &#8211; 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 [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/2000-to-2009/">&lt;p&gt;Inspired by &lt;a href="http://christof.damian.net/2009/12/2000-to-2009.html"&gt;Christof&lt;/a&gt;, here&amp;#8217;s my roundup of 2000 to 2009, seriously inhibited by my terrible memory.  Will add to this as I remember events.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2000&lt;/strong&gt; &amp;#8211; &lt;a href="http://www.generative.net/papers/MIDI::Realtime/"&gt;Discovered generative music&lt;/a&gt; and formed &lt;a href="http://slub.org/"&gt;slub&lt;/a&gt; with &lt;a href="http://www.adeward.com/wiki/default/read/home"&gt;ade&lt;/a&gt;, with the aim of making people dance to our code, generating music live according to &lt;a href="http://www.generative.net/images/generative-manifesto.png"&gt;rigorous conceptual ideals&lt;/a&gt;.  Most of what I&amp;#8217;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2001&lt;/strong&gt; &amp;#8211; 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 &lt;a href="http://state51.com/"&gt;state51&lt;/a&gt; to work on a digital platform for the independent music industry &amp;#8211; they were very much ahead of their time then and still are now.  Got a paper accepted for a &lt;a href="http://www.mti.dmu.ac.uk/events-conferences/0106nowalls/index.htm"&gt;conference&lt;/a&gt; as an independent researcher, and met &lt;a href="http://www.cogs.susx.ac.uk/users/nc81/"&gt;Nick Collins&lt;/a&gt; for the first time there, another fine inspiration.  Co-founded &lt;a href="http://dorkbotlondon.org/event/dorkbotlondon1/"&gt;dorkbotlondon&lt;/a&gt;, co-organising over 60 events so far&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2002&lt;/strong&gt; &amp;#8211; &lt;a href="http://slub.org/back/20020525.mp3"&gt;Some&lt;/a&gt; &lt;a href="http://slub.org/back/20020715.mp3"&gt;really&lt;/a&gt; &lt;a href="http://slub.org/back/20020525.mp3"&gt;fun&lt;/a&gt; slub gigs this year.  Followed in Ade&amp;#8217;s footsteps by winning the Transmediale software art award for a slightly odd &lt;a href="http://www.runme.org/project/+forkbomb/"&gt;forkbomb&lt;/a&gt;, which later appeared in an &lt;a href="http://www.generative.net/generator/"&gt;exhibition&lt;/a&gt; curated by Geoff Cox alongside work by &lt;a href="http://www.generative.net/generator/"&gt;great artists&lt;/a&gt; including Ade, Sol Lewitt, Yoko Ono and some monkeys.  Met Jess.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2003&lt;/strong&gt; &amp;#8211; Programmed the &lt;a href="http://www.runme.org/"&gt;runme.org&lt;/a&gt; software art repository, together with &lt;a href="http://www.easylife.org/"&gt;Alexei Shulgin&lt;/a&gt;, &lt;a href="http://www.londonmet.ac.uk/depts/dass/staff/olgagoriunova/olgagoriunova_home.cfm"&gt;Olga Goriunova&lt;/a&gt; and &lt;a href="http://amy-alexander.com/"&gt;Amy Alexander&lt;/a&gt;.  Co-organised the first &lt;a href="http://london.leplacard.org/"&gt;london placard headphone festival&lt;/a&gt;; did a few more after, but didn&amp;#8217;t yet match the amazing atmosphere of the first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2004&lt;/strong&gt; &amp;#8211; Co-founded &lt;a href="http://toplap.org/"&gt;TOPLAP&lt;/a&gt; together with many amazing people, to discuss and promote the idea of writing software live while it makes music or video.  Wrote &lt;a href="http://www.perl.com/pub/a/2004/08/31/livecode.html"&gt;feedback.pl&lt;/a&gt;, my own live coding system in Perl.  Bought a house with Jess.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2005&lt;/strong&gt; &amp;#8211; Started studying part time, doing a MSc Arts Computing at Goldsmiths, with help and supervision of &lt;a href="http://www.doc.gold.ac.uk/~mas02gw/"&gt;Geraint Wiggins&lt;/a&gt;.  &lt;a href="http://pawfal.org/dave/"&gt;Dave Griffiths&lt;/a&gt;, another huge inspiration, officially joined slub for a gig at Sonar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2006&lt;/strong&gt; &amp;#8211; Fiddled around with visualisations of sound including woven sound and &lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4276133"&gt;voronoi diagrams&lt;/a&gt;.  Learned Haskell.  Co-organised the first &lt;a href="http://dorkbotlondon.org/event/burningdork/"&gt;dorkcamp&lt;/a&gt;, which was featured on &lt;a href="http://www.dailymotion.com/video/x38n7j_les-dorkbots-tracks-arte_school"&gt;french tv&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2007&lt;/strong&gt; &amp;#8211; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2008&lt;/strong&gt; &amp;#8211; 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 &lt;a href="http://doc.gold.ac.uk/isms/cspace/wp-content/uploads/2008/09/cc08.pdf"&gt;Jamie Forth and Geraint&lt;/a&gt;.  Knitted my mum a pair of socks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2009&lt;/strong&gt; &amp;#8211; A bit too close, and in part painful, to summarise.  Also, it&amp;#8217;s not over yet.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/y3EforGPDHU" height="1" width="1"/&gt;</content>
<link href="http://slub.org/back/20020525.mp3" rel="enclosure" length="33229259" type="audio/mpeg" />
<link href="http://slub.org/back/20020715.mp3" rel="enclosure" length="19663954" type="audio/mpeg" />
		<link rel="replies" type="text/html" href="http://yaxu.org/2000-to-2009/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/2000-to-2009/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>Alex</name>
						<uri>http://doc.gold.ac.uk/~ma503am/</uri>
					</author>
		<title type="html"><![CDATA[Metaphors of javadoc]]></title>
		<link rel="alternate" type="text/html" href="http://yaxu.org/metaphors-of-javadoc/" />
		<id>http://yaxu.org/?p=369</id>
		<updated>2009-12-11T14:26:58Z</updated>
		<published>2009-12-11T14:26:58Z</published>
		<category scheme="http://yaxu.org" term="misc" />		<summary type="html"><![CDATA[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, [...]]]></summary>
		<content type="html" xml:base="http://yaxu.org/metaphors-of-javadoc/">&lt;p&gt;&lt;a href="http://www.press.uchicago.edu/presssite/metadata.epl?mode=synopsis&amp;amp;bookkey=3637992"&gt;Conceptual metaphor theory&lt;/a&gt; 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 &lt;a href="http://www.ppig.org/papers/18th-blackwell.pdf"&gt;Metaphors we Program By: Space, Action and Society in Java&lt;/a&gt;, a paper by &lt;a href="http://www.cl.cam.ac.uk/~afb21/"&gt;Alan Blackwell&lt;/a&gt;.  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&amp;#8217;ve taken the liberty of extracting the metaphors related in the paper but if you&amp;#8217;re interested you should go and read the whole thing, it&amp;#8217;s a good one.  I feel I could meditate on this list for some time, and I&amp;#8217;d love to see comparisons with the metaphors used in the documentation of other languages.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Components are agents of action in a causal universe.&lt;/li&gt;
&lt;li&gt;Programs operate in historical time.&lt;/li&gt;
&lt;li&gt;Program state can be measured in quantitative terms.&lt;/li&gt;
&lt;li&gt;Components are members of a society.&lt;/li&gt;
&lt;li&gt;Components own and trade data.&lt;/li&gt;
&lt;li&gt;Components are subject to legal constraints.&lt;/li&gt;
&lt;li&gt;Method calls are speech acts.&lt;/li&gt;
&lt;li&gt;Components have communicative intent.&lt;/li&gt;
&lt;li&gt;A component has beliefs and intentions.&lt;/li&gt;
&lt;li&gt;Components observe and seek information in the execution environment.&lt;/li&gt;
&lt;li&gt;Components are subject to moral and aesthetic judgment.&lt;/li&gt;
&lt;li&gt;Programs operate in a spatial world with containment and extent.&lt;/li&gt;
&lt;li&gt;Execution is a journey in some landscape.&lt;/li&gt;
&lt;li&gt;Program logic is a physical structure, with material properties and subject to decay.&lt;/li&gt;
&lt;li&gt;Data is a substance that flows and is stored.&lt;/li&gt;
&lt;li&gt;Technical relationships are violent encounters.&lt;/li&gt;
&lt;li&gt;Programs can author texts.&lt;/li&gt;
&lt;li&gt;Programs can construct displays.&lt;/li&gt;
&lt;li&gt;Data is a genetic, metabolizing lifeform with body parts.&lt;/li&gt;
&lt;li&gt;Software tasks and behaviour are delegated by automaticity.&lt;/li&gt;
&lt;li&gt;Software exists in a cultural/historical context.&lt;/li&gt;
&lt;li&gt;Software components are social proxies for their authors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;ve written about Alan Blackwell&amp;#8217;s research &lt;a href="http://yaxu.org/how-we-program/"&gt;before&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then this morning I saw &lt;a href="http://twitter.com/laputean/status/6545798416"&gt;this tweet&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;laputean&amp;gt; &amp;#8220;hello world&amp;#8221; programm is the &amp;#8216;perfect&amp;#8217; starting point of fastidious and wrong epistemological assumptions that one carries for all life&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A neat reminder that the ways in which we perceive the workings of computer `agents&amp;#8217; and source code is very much within a particular social context.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/yaxu/~4/vVr_V69ukpQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://yaxu.org/metaphors-of-javadoc/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://yaxu.org/metaphors-of-javadoc/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
	</feed><!-- Dynamic page generated in 0.820 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-08 11:03:33 -->
