"Live coding is about programming while the program is actively running"
"Live programming [Hancock03] promises for much more fluid feedback between the programmer and a program that is executing while it is being edited."
These statements are connected.
Yes software engineering is a different activity from making music. But, if I want to address live coding of music in particular I just add a word or two. I'm often interested in cross-disciplinary discussion though.
We've been around this a couple of times though, and I think can probably predict each other's points by now. :)
Whereas live coding has been presented as a new experience that transcends programming as we know it, live programming is just a new twist and substantial incremental improvement on the old programming experience, boring and pragmatic. In much the same way, Victor's Learnable Programming provides similar feedback to improve how programming is taught, and not to revolutionize what programming is.
I used to read a lot of Shadowrun in High School; the decking experience was about hacking through heavily secured computer systems by creating and customizing programs in real time. But when I started doing this, programming turned out to be more of a cerebral experience where real-time problem solving is neither necessary nor (yet) very effective. I'm quite OK with improving on that experience.
> We've been around this a couple of times though, and I think can probably predict each other's points by now. :)
Surely. We need to have a formal debate sometime if we ever attend the same conference.
But you can't claim Victor for your cause, he is explicitly concerned with reinventing programming, and not incremental improvement.
For example he says his "Up and Down the Ladder of Abstraction" essay is his personal manifesto, and that "it's not about programming. It's about a way of thinking". http://worrydream.com/MediaForThinkingTheUnthinkable/note.ht...
He says in that same note that he was goaded into writing his "learnable programming" essay by people relating his work with live coding. It seems that for him, discussing improving programming tools was a diversion from his long term aims of uncovering a new way of thinking with computers. His disassociation from live coding seems to be a direct criticism of Khan Academy's approach but maybe he has a more general criticism of live coding... In any case, I wouldn't claim him for my cause either.
> It seems that for him, discussing improving programming tools was a diversion from his long term aims of uncovering a new way of thinking with computers. His disassociation from live coding seems to be a direct criticism of Khan Academy's approach but maybe he has a more general criticism of live coding...
I don't think this is indicated in his essay. i.e.
> Programming is a way of thinking, not a rote skill. Learning about "for" loops is not learning to program, any more than learning about pencils is learning to draw. ... Thus, the goals of a programming system should be: (1) to support and encourage powerful ways of thinking; (2) to enable programmers to see and understand the execution of their programs
He very much is concerned with programming not as a new way of thinking, but as an existing way of thinking. The examples in his essays then go on to elaborate on programming with better tools to understand execution; it is not a re-invention in any sense. We could try to interpret this passage:
> We change programming. We turn it into something that's understandable by people.
I think this means: we make programming into something that's understandable by people. Comprehensible. Is it change, or is it augmentation? His words imply the former, but his actions (features) imply the latter. Finally we get to:
> Likewise, a well-designed system is not simply a bag of features. A good system is designed to encourage particular ways of thinking, with all features carefully and cohesively designed around that purpose. This essay will present many features! The trick is to see through them -- to see the underlying design principles that they represent, and understand how these principles enable the programmer to think.
Yep, it is about design. He is just scratching the surface of a field I refer to as PXD (programmer experience design) :). The essay then goes onto to present design principles useful in helping make programming more understandable, and examples of those principles at work through various demoed features. Some of those features include some form of liveness; but many don't.
His recent talk calls for a break from established norms and a return to the free thinking of the early days of computer science. His work combining geometry with syntax (which is also an interest of mine) follows on from that early work, it's as though he's treating the last few decades of software engineering as a diversion.
To me it's quite clear that Victor is calling for something more akin to augmenting and extending human thought, maybe your 'cybernetic melding'. He argues that this software will be used in ways which we cannot yet understand -- he thinks it'll be future generations who develop use and understanding for such technology, he's just chipping away at the possibilities.
But maybe your more approach is more optimistic in this regard, in that you're finding ways that could improve programmers' lives now.
I think my approach is optimistic too, in developing technology through use, taking communities of practice as a starting point, not an end goal.
I feel the same way.
> But maybe your more approach is more optimistic in this regard, in that you're finding ways that could improve programmers' lives now.
I'm actually pessimistic that we have much time to innovate. I see programming as a viable profession only for at most another 20 years; by then speech dialogue based systems (aka AIs) are advanced enough to take over on what were programming these tasks before.
>In this case livecoding.io only seems to be for coding fixed media. Is the program actively running or not? In terms of UX it doesn't really matter either way, so our live coding/live programming distinction is pretty much irrelevant.
Agreed. Such simple systems (like khan academy) tend to be single trick ponies around live refresh. One mechanism doesn't make a story, and so it doesn't even make sense to put it in a story bucket.
>If it was possible to do animation in livecoding.io then it would be a clearer case of live coding by our definition, but obviously that wouldn't stop it from also being a live programming environment.
Agreed, they can overlap, but how animation was dealt with could lead down either path to the exclusion of the other (does it support improvisation or development). From me on LtU:
> In that sense, I'm not working on a new way of programming, just speeding up the feedback loop of our current programming practice. If some new way of cybernetic programming eventually emerges from the faster feedback (unexpected benefits of improved tooling happen all the time), maybe live coding will make more sense to me. Maybe that is the key difference of our approaches.
Mechanism is perhaps less relevant than the experience trying to be achieved. In this essay, I described a live programming "make development better" experience. Someone could probably take my videos and describe them with a very different improvised live coding story on top of them also, focusing on activities I don't understand and definitely did not design for, but since the mechanisms involved overlap...
This is why terms are so powerful: the use of "live coding", if it stands for something, is a brand that allows us to quickly decide what we are going to see and experience when we click on the link. It will also elicit strong denial from those who don't want to be in that brand, since their problem spaces and approaches are very different.