 Wel, ddweud yw'n gwybod. Yn ystod y cyfliadau, sy'n gallu ddweud yw'n gwybod sy'n gallu ei wneud gwybod, i'n mynd i chi dechrau. Wel, ddweud yw'n cyfliadau. Dw i'n gyflig. Rydw i'n meddwl ei wneud ei wneud. Rydw i'n meddwl ei wneud am ychydig. Rydw i'n meddwl ei wneud am gael? Rydw i'n meddwl ei wneud am y cwmfroes. Okay. So, this is the live-coning conference. We're going to have three days. You know this already. I mean, we've already written a welcome view to read in the programme, so you can read that. And we'll have a session at the end where we talk about next steps like the journal which you're editing with Kate. One thing I want to mention is that tonight we've got some food provided by the real junk food company. We tried to find out how much it would cost and they wouldn't tell us, so they say it's pay-as-you-feel. So if you can take a couple of pounds or something, I don't know. And donate it to this charity that's providing our food tonight. I think they're charity, but that'd be good to also top it up from whether or not you've got left. And that's at seven. I think Ash is going to lead us all there in Convoy. So, what else should we say? Should we just start? Yeah, we were just going to mention also that this conference is kind of the result of the live-coding research network that's been running. It's been running for nearly two years now. It's a collaboration between Sussex and Leeds. We've had a few events, like a kick-off event in London. Live-coding in the body symposium in Brighton. Live-coding and collaboration in Birmingham. And then we had an event about live-coding and education in Cambridge. All these events have been designed to explore live-coding in the future of live-coding and how different people interface with live-coding from different fields. So, I guess that's something that you're interested in in terms of this conference as well. That the conference is not so defined, but it's very open and it's up to us all to kind of shape it and take it into the future. Yeah, that's the spirit of live-coding. I think changing rules as they follow. If something happens which you're not quite sure whether it fits your definition of what live-coding is, then we just have to redefine it. So, we're going to get started now, but just to mention before, in the panel session we will discuss the journal. We are editing a journal called the International Journal of Performance Art and Digital Media. And we would be really interested if you would maybe turn some of your work, maybe your papers here into articles for that journal. So that could be interesting. The deadline for an abstract is in September. You don't have to write the whole article, so the abstract deadline is in September. And that could be a development of the paper that you've got here. Or some ideas that you have during this conference. So, we should hand over to David, who's going to lead this session. It's really great to be here. I'm sure this first session. Three presenters in this session all need scarcely any introduction in the live-coding community. So, I'll keep the introductions. Our first presenter is Alan Blackwell, who has the distinction, we think, of being the first full professor in the world in live-coding. And we've also been the supervisor of a number of people in the live-coding community. Something the community I'm sure will always be grateful for. And the title of this talk today is Patterns of User Experience in Performance Program. Thank you very much, David. So, I'm sure there are other professors in the community too, but I just got promoted. So, I'm celebrating that live-coding didn't ruin my chances of an academic career. So, I'm guessing we need a VGA cable somewhere. Do we have an expert on these video arrangements? Is this the one? I'll plug it in and see what happens. These little things are smooth actually. I'll try this button. Excellent. Let's try that again. Okay, things are looking good. It's detected a display. It has now. And it's on here. Okay, this is good. Oh, yeah. We're getting close. Okay, that'll look good. Great! Well, very nice to be the first speaker in the first International Conference on Live Coding. Thank you for bearing with us. So, this is not a particularly special talk. It's just a paper I submitted to the conference. I feel like I need to be apologetic about that. But I hope it's interesting in some respect. It's just randomly I got chosen to be first up. So, we'll hear lots more interesting stuff later, I'm sure. So, that's the total. That's the title. What are we going to do? The purpose of this talk, I want to tell you a pattern language that we can use for thinking about what it means to do live coding. And in particular, thinking about what the user experience of live coding is. So, there was one special word there, pattern language. Now, I'm guessing that quite a lot of people in any technology community are going to near that. But I'll just take this chance for a gratuitous piece of screen art. What is a pattern language? So, for any of you who hang around in computer science departments, a pattern language looks like this. So, there's this famous book by the gang of four called Design Patterns. It's a catalogue of components of ways to build software. And an individual pattern looks like this. It's the arrangement of a few parts inside of your program. So, that's what most computer scientists would think that a pattern language looks like. Perhaps I should have asked for a show of hands. How many of you already know all this and I can accelerate? Not two, about half. OK. So, that's the computer science view that a design pattern is a way to make a piece of software and a pattern language is a collection of those, a kind of a catalogue. But some of you may also know that computer science stole the word. It came from this book by a philosopher of architecture called Christopher Alexander. And a pattern language from his perspective, it's a collection of things that he calls patterns, but they look like this. So, these are architectural patterns. They're not software patterns. They don't look like diagrams. You don't make them out of source code. And it's telling you something about what it's like to be in a building. Make all the outdoor spaces which surround and lie between your buildings positive. So, this is more like something you might read in the little book of CAM. It says nothing about how to bang in nails or how to arrange the structure of your building so that the roof doesn't fall down. So, architects like these things too, but architects talk in quite a different way to how computer scientists do. So, this is just a collection of patterns as created by an architectural practice. And it's ways of thinking about what it might be like to be in different sorts of building. So, here's a couple of definitions. So, in software engineering, and this is what you'll see if you search online for design pattern, it's a description or a template for how to solve a problem. So, it's really an engineering thing. Christopher Alexander, in his books though, this is his most concise definition, a pattern language is nothing more than a precise way of describing someone's experience. So, hopefully now you see why I'm at a live coding conference talking like this. Because are we making a catalogue of technical things or are we describing an experience? Well, here I think nobody in this audience is going to disagree that what we're interested in is experience. So, in this paper, I actually tried to stretch out a little bit wider than simply assuming that we all mean the same thing by live coding. In the title I used the word performance programming. And for me, what this means fundamentally is that there's at least two people involved. Now, I know some of you will disagree with this, we can argue later. There are situations where there is a performer and an audience. And so, this applies to lots of contexts that you already know about and that we'll experience while we're here. So, including algorithms and recitals, including hackathons, including demos, many kinds of conference talks for me are performance programming. Agile development often involves a kind of performance because you're often sitting alongside people who are watching you code. Being in a classroom and teaching coding is a performance. So, we're kind of in the advance of this, but actually performance programming is all around us. And I think we're going to see more and more of this. I think coding is increasingly going to become a public manifestation of a kind of a practice. So, live coding gives us a chance to look into the future from our experiences here and say what's the future bringing to us. So, that's why I'm doing this. The ideas are not completely original. It's very much based on the work of my PhD supervisor, Thomas Green, and a number of you here know him. He came to the live coding Darkstool seminar. So, one of Thomas' most influential pieces of work was something called the cognitive dimensions of notations, by which you take some kind of information structure and then look at how people interact with that information structure. In order to do, we think pretty much the same thing that Christopher Alexander was aiming for. Thomas didn't say this himself, but cognitive dimensions in many ways was a way of precisely describing the experiences people have with structured information. Thomas was interested in all kinds of structure. So, he's a musician and he's also interested in software, and he very much recognised that when you've got a musical score, it's structured information just as a piece of source code and a program is. So, building on that and thinking about the ways that we interact with the structure of music and software when we're doing performance programming, there's a range of different kinds of things that we're likely to do. There's interpreting where you've got a structure presented to you either sonically or visually or through dance or in source code. So, there's a certain number of characteristic things we do when we're interpreting structured information. Sometimes we search to find something, sometimes we compare parts of the structure to each other, sometimes we're just faced with a barrage of structure and then we have to do sense making, which is to reconstruct what the structure was out of what we're perceiving. Another kind of activity is constructing where we're actually making a structure, and we might be making it a piece at a time, maybe just by adding a little piece, or we might take a structure somebody else has made, like a bark fug, for example, and we transcribe it to the organ. We have to re-express the things that we see on the staff and re-express them in terms of the structure of the keyboard. Or we might be just hacking, so we're creating a structure, but we don't even know what it is yet, so the structure will emerge as we're making it. Thirdly, there are times when we share structure with other people, and actually many art forms, all performance art forms in some way are sharing structures between the performer and the audience. We've got ways of talking about these kinds of experience, so there are narratives where somebody is expressing a structure to somebody else. There are discussions where people build a structure together. There's persuasion where you try to get somebody else to build a structure, but you know what that is. So some of you will recognise that there are some similarities here to the ways that the cognitive dimensions are often described. But what's really different in this community is that the audiences and the performers are doing different things. So one of them is creating, one of them is reading. Maybe they're collaborating, one of them is observing, one of them is expressing, and so on. And so the written paper, which has got a lot more exploration of these philosophical ideas about experience, I guess, carries through those arguments in a lot more detail. But I want to give you just a brief expression of just a survey of some of the interesting highlights by looking at the things that we all have seen in live coding performances and different kinds of genre, although I mainly focus on music in the paper, and think about what kinds of experiences arise. And I'm going to give one example of each of these seven if I have time within before we have to configure the projector for the next speaker. So the first of these is the degree to which the structure is visible. So a characteristic thing about live coding is that there's not much room on the screen. By the time the audience can see what's on the screen, you don't have space for a lot of text. It makes it very different to most software development genres. But it's still necessary for people to understand they look at specific elements of the code, they need to know what that element means in the context of a larger structure, whether it's the work or whether it's the other code that they've seen you writing. If you want to achieve that, it's necessary to have some way that the pieces that are more important than others because it's not uniform, it's not flat. How do you draw people's attention to what you want them to be looking at? This is a question which conventional programming language editor designers really hardly think about. Because the programmer is looking at it, they already know in their mind which is the most important part. If you've got an audience, that's not true. So what do programming language editors look like when you need to draw people's attention to parts? So that was about visibility. The second class of these experiences in this pattern language, these are all patterns of user experience, is about how we experience structure. One of the things that we're always doing in music is that we're saying how is one part of what I've heard related, is it a recapitulation or is it an inversion? How do we relate the relationships between things that might be expressed differently on the screen to the things that we're perceiving? But it's also necessary to be able to change your mind. So the more the structure is expressed on the screen, the harder it is to change it because the structural relations get in your way. This is what Thomas called viscosity, the most famous of the cognitive dimensions. But in less technical language, it's simply about being able to change your mind. In the case of live coding obviously this is about responding to audiences, about improvisation, things that we really value a lot in this community, far more than in many conventional software development situations. Experiences of meaning, this is the ways in which something that we see two dimensional stuff on the surface, how does it have meaning to us? So this is about semiotics if you like, it's either about communicating clearly or possibly not communicating clearly. And we can look at, compare some examples, so there we have a piece of tidal and a piece of the Thranoscope, Sonic Pi. Visually these things look completely different to each other, they've got very different intentions. So the way that they carry meaning between the audience and the performer is intentionally different. These are user interfaces, so the same kind of mundane usability things is it easy to press the buttons and see where things are. One of the things that can be attention in live coding is are you able to interact very fluidly, perhaps by using a lot of shortcut keys, or can the audience see what you're doing? Or is it a system that's clear to a newcomer? With Sonic Pi we've really had to work hard to get something which an 11 year old child can walk up and see what to do, but Sam can still perform fast in a nightclub without having to go through all the menu structures that they do. And is its behaviour predictable? With most computer systems you want them to do the same thing, the same action should have the same result whenever you do it. But quite often in arts contexts we're more interested in serendipity. We're quite interested in having an action that will have a different effect next time we do it. The ways we think about things, there's obviously a lot of cognitive challenge involved both in programming and in live coding. Something that's very interesting with live coding languages that is not like most software development is the way that you get drawn in to play around and audiences see you doing that as well. Often this comes from having something where it's not completely clear what it means. So if it's not completely clear what it means then that means that as a performer it can take you to a new place and an audience you can interpret it differently and you have a richer experience. The processes of live coding obviously very different to processes of software development. Some people including us have tried to describe them as hyperagile as if it's kind of a business application. But I think the most important thing to us in this performance context is that the audience needs to be engaged even when you haven't finished the program yet. And that again is extremely different to how we normally think of software. So you need to work with partial products and you also need to be able to proceed without saying that's the final end. You need to be able to backtrack and say actually I wasn't, I won't design it that way after all. And then finally experiences of creativity. One of the most important things for creative ideation as a design theorist like to call it is that you need to be able to redefine parts of the language that you're using. When you look again it's useful if it looks different because then that gives you another creative direction. So that's an overview of the pattern language. The whole thing fits together in the same way that Christopher Alexander recommended for architecture. It's got nothing to do with design patterns that you teach your students in computer science departments if you do that or as I do. One of the reviewers for this conference kindly pointed out that I had misunderstood what user interface patterns are and I had to link the response to that reviewer explaining I really am saying that the whole of computer science has gone in the wrong direction all those textbooks are wrong. The future of computer science is this kind of stuff and we need to understand experiences not just engineering. So here's the summary. Performance programming I think has got an important future that actually we're the advance guard here but I think it's bigger than what we're doing here. Performance programming will become a major technical a technical trend. A pattern language is about experiences not about just recipes but we can think systematically about what we're doing. So although we're artists and we're critics that doesn't mean we have to be unsystematic we can think about experience from systematic perspectives and we can consider the ways in which the experiences we have are shaped by our tools. Sorry, where do we go next? Well, the stuff that I've outlined in the paper here I think could immediately be used if there's any keen students. If you wanted to study audiences or study performers then you could use this as a coding frame to analyse the things people say about their experiences. And we've already done something similar to that a few years ago with cognitive dimensions. It can be used as a design vocabulary so if you're building new tools and you're wondering what your options are what experiences do I want people to have with this tool? What sort of structures of visibility and so on are necessary? Hopefully we'll create new performance tools by exploring parts of this space of options that haven't been looked at before and that's what I did in the Palimpsest system that I'll be talking about a little bit later in the conference and performing with on Wednesday. And I think it's quite interesting to ask whether these ideas of pattern languages of user experience are not fundamentally technical that they're about thinking of the ways that we structure our lives including aesthetic experiences that maybe arts practice more generally can build on the things we learn in this more kind of technological arts practice of live coding. That's the story. There is a concert to go after I'll go to after this. Do we have one question? Perhaps from the audience? What about... I mean this has been a logical one could call and without maybe it's not nice to call it that way but ergonomical things that try to make it technical but a lot about live coding is also about making it worse? I absolutely agree. So things like being able to change something easily so is this necessarily making it better? If you are designing a nuclear power station you really don't want to be able to create to change something easily if you're giving a performance on stage and it's improvised possibly you do. So yes, you're absolutely right and in fact concert dimensions talk a lot more care to try to phrase things and be very clear all the time saying these are neither good or bad unfortunately in teaching that in my experience that made it harder to teach because people never understood what you were saying so that's one of the reasons why and more everyday language and also in a way that says for the conventional engineering situation there's one answer that might seem to be right but introducing new things like experiences of creativity that wasn't in the previous concert dimension stuff so actually there's a counterbalance there not everybody needs to be creative but for those of us who do we know that those ones are really high priority. And of course there'll be ample opportunity in the next two days to button hold Alan or any of our presenters or get them further questions people at the back if you don't mind filing down here there's plenty of space for you here at the front or people at the edges you can file over to the slides a little bit so no one has to stand great our next presenter is Charlie Roberts many of you will know Charlie as the creator of the popular gibber I always want to say gibber for some reason don't you? I said it inconsistently for a long time but yeah creator of the gibber environment finishing a postdoc at the University of California Santa Barbara and just about to begin a position as assistant professor at the Rochester Institute of Technology so the neighbors awesome how about a hand for Charlie Roberts Thanks everybody and thanks to all the organizers for putting this on I'm really excited to be here so I'm going to talk a little bit today and do a little demo of some editions I've been adding to gibber as David mentioned gibber it's a browser based live coding environment that I've been working on for a few years now and one of the things I've spent time thinking about it is various ways of affording collaboration inside of the environment and that's really what I'm going to be talking about today I've been working on this research with a few other people Carl Yorkies, Danny Imbazo particularly spent some time helping me with some clock synchronization that I'll be discussing later and two of my advisors, Matthew Wright and Shigewan Kachara Moran so since gibber is a browser based environment it kind of becomes this naturally networked situation where collaboration really makes a lot of sense because you have all these tools all these frameworks, all these APIs embedded inside of the browser that you really just have to do a little programming in order to be able to take advantage of it so one of the first things that we were kind of interested in with gibber was thinking about asynchronous collaboration not just the idea of doing ensemble performances together in the same room at the same time but how can we distribute code how can we let other users access code see code and build off of those things so gibber has inside of it a database backend, a centralized server that you can publish code documents to and then every code document that you publish is giving a unique URL so that you can send those links out to other people and people can access those URLs, look at the code modify it, experiment with it create their own documents that they then distribute to other people so it's kind of creating a space to easily distribute code not as a rendered audio file or as a rendered video file but as the code document itself in the environment in which it's executed so inside of gibber when you launch it it looks I thought I had a bigger version but it looks a little like this and over here on the side there's this thing to browse the giblets I don't know if there's any way to make that brighter but nice, thanks so over here you can kind of see there's a section for demos tutorials, there's a list of the recent files that people have added to the database there's a way to search for files that might have a particular type of unit generator inside of it you can search the full text of the code or by authors or by tags and again, each one of these publications gets a unique URL that's been added to it so that you can easily go and look at it and distribute those to other people I think that's been a really nice thing for teaching as well so that people can distribute their compositions or sketches to friends very easily so the second way so that's kind of the asynchronous idea of collaboration making it easy for people to look at each other's work and comment and build off of it the next thing we were interested in is this kind of co-located performances and we started off by doing it with a central server so I performed in an ensemble at UCSB called the Create Ensemble that's directed by Matt Wright and our first performance using jibber basically we all sat with our individual laptops wrote code inside of jibber and then sent that over the network to one central computer which then played all the different code fragments and one of the nice side effects of that is that you can actually run your code locally and preview the output in headphones and see how it kind of sounds maybe not in sync with what's coming out of the master server but you can at least get some idea of the timbers that you're generating before you send it out to the central display and then there's also a chat system that went along with that so we kind of provide a meta score for that and even though there wasn't this kind of centralized clock there's actually a pretty, there's a lot of space for doing things without clock as I'm sure a lot of people realize but even possibilities of still maintaining sync the laptop orchestra of Louisiana did a performance using jibber where all the members submitted through the chat dialogue submitted their code to a central conductor who would then kind of look at the code and choose which pieces of the code they wanted to run at any moment in time on their one machine and since all the code was running on that person's machine it all kind of naturally became synchronized without having to do any extra technical effort so that was kind of where we were doing it with having a centralized audio source and then the next step was thinking about what can we do with having a more distributed system where everybody's running code on their own laptop so we did a performance kind of in the style of power books on plug where we were all sitting among the audience and sending code fragments around from one person to the next in an exquisite corpse basically each person somebody starts it off sends the code fragment to one person that person modifies it they send it to the next person and it kind of gradually goes around the network with that another kind of technique of doing this performance without having the clock synchronization actually in place but then we started thinking about well what can we do to actually share code and start thinking more about how to set up the clocks for doing these performances together and one of the things Jibber has in it is a chat system so if I log in there's a very simple chat system right now that it's empty and I can type messages and other people can type messages and this shouldn't work what I'm about to do right now but I'll use it to demonstrate this idea anyways one of the nice things about this chat feature is that if I click on the name of any user inside of there it opens up this little dialogue that enables remote code collaboration so you can be chatting with a person and then click on their name and immediately say oh I want to share a code column that I'm working on with that person and enter into a collaborative editing session in the style of Google Docs so it's a really simple way just click on the person's name and give them some permissions and if you check the enable remote code execution then you can actually send code across the network to be executed assuming the other person grants permission for that to happen so we had this kind of system and we were using it and kind of experimenting with it trying to figure out if we could use this to share code in a performative settings and it became unwieldy with large ensembles really quickly because you had to click on everybody's name and exchange all these permissions and it created all these code columns and it became very difficult to manage so the end goal that we kind of settled on was to try and create a system where all the members of the ensemble or all the students in a class whatever situation could come in to Giver enter one line of code and immediately join a network performance setting where everybody could see and edit everybody else's code everybody could execute code on everybody else's computer and the clocks were synchronized all together and so we call that system Jabber and it basically works like this so if I have a document right here I can type this one line of code where I just say jabber.init and then I give the performance a unique name and that's kind of how all the performance members get hooked up with one another this is just a little too big so as soon as you do that it creates a column and this is where other people's code is going to appear in that room and puts you inside of it and if you're not logged in it also gives you an anonymous ID and so let's call this person A and let's go and open up this person and we'll call this person B and one more we'll call this person C and so now if I go back to the original A performer you see in the column right here I don't know if it's possible to read these letters but there's two tabs for each of the different performers and if I click on the tabs I can see the code for that particular performer and I can go in and edit that person's code and you can see right there the edits have been applied so if I start the performance by running this line of code right here ideally the clocks will be synchronized and the clock synchronization is a work in progress we've been trying a lot of different stuff and the idea well that looks pretty good so let's see what happens if I run a line of code here so let's say I'll just make a cube so that we can all see it that was good so they've made the cube pretty much at the start of the first measure and this is actually synchronizing with the central gibber server in Santa Barbara so it's kind of a crazy method that we're using to do this synchronization it's a two-part hybrid controller combining this a brutal correction basically whenever the clock drifts off by too much we just reset the clock to be exactly what the server reports and then kind of a gentler controller, a proportional integral controller that kind of gradually locks in on the central signal that the clock is sending so I think I'll just end by showing a very short clip of a performance that was done using the Jabber Syntexus was one of the performers that I performed at what I believe to be the first algorithm to be held in the United States a month and a half ago or so inside of Santa Barbara and I don't have audio this really isn't critical I'm not going to worry about that and I lost mine I'm just going to end it there and thank the Robert W. Deutsch Foundation that funds my research so thank you very much if you look up if you google Santa Barbara algorithm there's a video where you can see some of the clips I'll probably put that link on the slap nice idea we have one question for Charlie no worries I should have thought of it before I'm sure they'll come to you and you cannot Charlie at another time for the sake of time we'll move on our next final speaker for this session is Mariah Baillman Mariah is an artisan musician from Amsterdam a long standing member of the super fighter community and the title of her paper embodiment of code please welcome Mariah Baillman I have this issue that the switch is not the screen the switch is not giving a signal like hey I am a screen I have this in the other space too so I'll just stand so I'm going to talk a little bit about embodiment of code I sort of wrote the paper after last year I was invited for the life coding and the body symposium and well it was a way for me actually to have a deadline to actually write down the things that I was talking about then and work them out a little bit more but it is in a sense for me still like a first sort of start of developing these thoughts on what is happening when I perform and I'm linking it a little bit to the idea of embodiment from Pharrella, Thompson and Rush who are talking about cognition saying like first that's cognition depends on the kinds of experience that's come from having a body with very sorry amount of capacities so that's the idea that's cognition well it's not something that's just like that happens in the brain but it's actually by interacting with the environment that is when you actually learn things so it's both doing and sensing that actually creates cognition and second that's these individual sensory motor capacities are themselves embedded in a more encompassing biological and cultural context so that means we're not doing this on our own we're doing this all together that enables us to keep changing and learning and developing and I'm also linking it a little bit to Catherine Hales who is also talking about relationships between technology humanities where she's also kind of addressing this problem that when you write like software it's not just an engineering task it's actually closely linked to what you actually try to achieve and she in her book how we think writes conceptualization is intimately tied in with implementation design decisions often have theoretical consequences algorithms embody reasoning and navigation carries interpretive weight so in her view like the humanity scholar graphic designer programmer should work together in continuous and respectful communication with another if they develop like a software that needs to be used by all of these people and I mean there's now already also some examples where actually programming is affecting society because like they implement technological systems where suddenly the deaf person can't get welfare anymore because they can't make a phone connection to they can't telephone to change like what the situation is so that's where systems are programmed in such a way that really affect humanity again so these are some like starting points context to the discussion and I sort of split it up in different little chapters so what we do when we like learn a programming language is that we well when we first encounter a language we sort of try to get our head around it there is an expression to understand how the language works what we can do with it and then we sort of adapt our vocabulary within the language to express what we want to do to express our concepts and as we are going along we extend our vocabulary within the language or if we are not happy with what we find in there we try to extend it and if we are completely not happy we switch to another language and look for that but it's also going in the other direction as we are using the language sort of that language gives us suggestions on what we might want to express so some things are really easy to express in one language but not so easy in another language myself of natural languages I speak like Dutch, German and English very fluently and some things are just easier said in German than in English or some things or some expressions are much easier to say in Dutch than they are in another language and I think there has also been some research that people actually change sort of personality based on the language that we are speaking so some people who speak French English like in French are very authoritative and in English are much more easy going because of the vocabulary and the language they use so it's really sort of changing the language that you use is changing how you think or shaping your thinking so there's this continuous dialogue going on between ourselves and the language and also quoting Julian Rohrwbert, Tom Hall and Alberto de Campo they wrote about systems within systems in the superglider book but it pretty much said that adaptations of the programming language are less like engineering tasks but more than like works of literature, formal science and conceptual and performative art so it's not it's changing its expression more than optimizing for some sort of task or something and then as we all know there's a lot of co-evolution going on by sharing code and language extensions other coders and developed ideas based on that used them and sent their extensions back and creates more extensions and adaptations so there's a dialogue between all kinds of different people through the programming language then on the other side looking from the machine thinking of the machine as having a body that interprets the code and I was actually my father he worked for the boroughs for quite a long time since the late 60s until like the early 80s and he talked to me and then I read some more papers about it but the early boroughs machines they were actually designed based on the requirements coming from the programs from the software developers which actually meant that their hardware was much more efficient in running these programming environments the hardware was much more complex but they were optimised for these coding languages so actually the software design took a lot less time and they had some amazing things like variable bits addressable memory user definable instructions in the instruction set so you could actually do real life coding changing the machine as it's running and there was a very close relationship between the code written in the higher level programming language and the resulting machine code reducing the time to design and also run these programs unfortunately their marketing didn't realise their advantage didn't sell this very well so that did not become the main architecture on one of the articles they compared with their competitors where the software designers have to be stretched on a procrastin bed to sort of fit around the machine so on that side we've sort of developed from like sort of byte oriented programming and sort of the languages at first were very much shaped around having to run on these machines that had these restrictions and I think only now we're getting at a point well later on now we're getting to this point where we're actually not so much aware anymore of the hardware that our code is running on and it's run on virtual machines that are optimised for the language so this is one less changing code while it's running can we? I think on modern computers we can't really we just can sort of manipulate code before it's actually going into the machine instructions but once it's in that pipeline we sort of have to rely on the hardware just doing that unless we actually physically go into the machine like Jonathan Rose does in his iMac music where he is like literally hacking into the computer during the performance while the code is running changing the output of it in real time and also the machine's body as we code in it it gets warm as it is running it gets warm when it's pushed to extremes and then also cooling mechanisms start to kick in when it gets too hot like the fan goes on and fetching data from a hard drive like disks are spinning and currents will flow and you get all kinds of electromagnetic radiation so all the things that we do with our code have other side effects that we maybe do not intend there's another piece where Jonathan Rose is actually picking up these electromagnetic fields and translating them into sound which he then manipulates again creating a kind of feedback loop between what the machine's body is doing and what the audible output is giving this is very very quick I sort of try to create a schematic of what is happening when we are live coding it's far from complete I think but we have some idea of what we are doing we are trying to translate that into our motor system to get them into the keywords to produce the code we see that in an editor that is actually in the memory of the computer's program we can send it to the interpreter which is send it to the CPU then produce output data from the editor we have a display going back showing us like what the code is looking like which we see and then we adapt as we go there's output media sound lights, visuals whatever we are live coding so we're kind of in this continuous loop sort of trying to make this as fast as possible our interaction with the editor making it as fast as possible so we can express our concepts more easily and a lot of the extensions we write is actually just optimizing this like when we are not live coding but creating software for live coding is optimizing this interaction loop where actually I had one performance where I was like live coding the sound from the typing like the input for the sound for the piece was the input from the microphone so the whole performance was about the actual act of live coding you couldn't just play back the code and get the same result but it was about the act of live coding and it was an interesting comment that I got on the superglider list about this video where there was a discussion about the auto-completion of the e-max editor and someone was complaining that it was really slow because he'd seen my video and I had to write back to him and say no, there was no auto-completion so it was my typing so he was interpreting the speed of how the letters appeared on the screen as an extension of the editor where in fact it was the training of my body so I think that's also interesting in this perspective of embodiment like well at some point since it's such a close related loop you don't necessarily know what is what anymore and before David gets really angry I just have some speculations to end with so yeah just speculating what live coding would have looked like when a burst machine from the start had been like the predominant way of creating machines I mean would we have hardware that runs superglider or title like on a machine level so we'd hardly need a compiler to run it I mean just imagine what that would look like or can we imagine different interfaces in the keyboard in the mouse and the screen to input codes into the machine would that allow for different ways of embodying the code like what programming languages what kind of programming languages would evolve from that what kind of conversations would we have I don't know thank you yes we do have an example of the small talk machine so that was a language a language defined for a particular thinking reason and creating making music they built an architecture to run it but it was so many years ago that now you can actually run the whole the small talk faster yes yes so maybe there's a needed language yeah I think there's a general point if you look at these things as boundary negotiations between the various groups then there are some things that it's easy to make physics do and there are some things that people find easy to do and turning the turning the thing assuming that you can make the physics do the same thing as what people find easy without any intermediate step may not actually turn out to give less strategy for implementation does not make sense yeah but yeah it does make sense I mean with the first computers one of the main things was that the hardware was more complex than the other machines were but I don't know some of the articles I read on it like the second article I read about it was from 1982 which was talking about the title of it is one of the British machines 20 years later and still ahead of his time so like even then like looking back to like the late 60s they were still like faster than the Intel machines in 1982 so that is kind of interesting like just considering like if that evolution had taken this other direction that was there what would have happened where would we have been now similar sort of with the DOS operating system that only had a certain amount of memory and just seeing how Windows or Microsoft took a very long time to overcome that limit to think about like what other computer science evolutions could there have been if not for these decisions at the start We want to get over for the concert performance in the concert hall, we're supposed to start right now but I think they'll probably give us five minutes how about another hand for our 3% Thank you Mara, that's great