Bret Victor has another insightful essay up about “learnable coding”, which he says is an “immune response” to people saying his previous (also excellent) video was “about live coding”. He goes as far to say that live coding is “almost worthless” on its own.
That would be a fair point if live coding were only about live updates and nothing else. However in practice live coding isn’t a single technique, it’s a rich culture of ideas about liveness and code.
For example here’s live coding in Field:
[vimeo http://vimeo.com/3001412]
In SchemeBricks:
In Overtone:
[vimeo http://vimeo.com/22798433]
Just in those three you’ll find prior art for code timeline scrubbing, tangible values, auto-completion, the manipulation of history, and many of the other features that Bret argues for, in use in the wild. That’s not to say that Bret Victor isn’t contributing some really interesting and novel ideas, and that people shouldn’t run to read “mindstorms”, but in brushing off live coding out of hand, he’s missing out on some contemporary context too.
You are being a gentleman Alex and you found the most elegant way to highlight the main problem I have with Bret’s video. Since I have 10 minutes I’ll inflict the readership with some harping on the topic. I’m sticking to the video, not the article as I haven’t read it in detail.
He doesn’t reference any previous work. In fact, he does even worse than that, he only “references up” implicitly implying some sort of direct “relation of innovation” with his prototypes and the invention of the mouse and the invention of modeless interaction. There is no single mention of recent work, and, how to say, I do think there have been a thing or two that influenced his work and I think would deserve some sort of mention. I understand that the “conference talk” form doesn’t require references as, say, a published paper does, but I can’t just avoid thinking that Mr. Victor just indulged in the practice that in the art world is commonly called “name dropping”, i.e “referencing up” and carefully avoiding to reference “sideways” or even just a little next to the invention of the mouse. You mention time scrubbing. Let me just add to that, as an example, quite a big deal of research actually went into “un-doable” states and reversible machines (real and virtual), that resulted in well known commercial packages that let developers replay and rewind JVMs. This is commercial software that is routinely used for debugging purposes and is the result of a long line of research. Not a shade of mention, the concept is just shown as a total novelty.
That in my opinion is the cardinal sin that clouds my judgement about his commentary, but he pushes beyond that into, I dare say, “rambling” is the best description. In the same talk he manages to depict current software makers as killers of creativity, and also proposes a dichotomy between man of craft and man of genius. He weaves these statements just like that, gaining momentum next to his demo, topping it all with an epilogue that draws from the tones of martyrdom. The margin is too narrow and there is no space, I invite the reader to sieve these statements through the “wait a second” filter and draw her own conclusions.
The 10 minutes of demos are amazing. For the most part. They are amazingly well crafted and the package of one good demo next to another good demo multiplies the effect. There is genius at work there, I’m not questioning that.
But the name dropping? The summary disparaging of current commercial software? The supposed difference between genius and craftmanship? The final sequence where only a crucifixion is missing?
I take the demos for inspiration thank you very much, if I could see actual working code even better, and I stay tuned with a bucket of popcorn for what promises to be a spectacular climax of hyperboles.
Heh, I think maybe you’re a bit unfair, a lot of young and creatively frustrated programmers will find his talk inspiring.
You’re right about referencing up though, it’s not just him and Seymour Papert!
But maybe he’s just not aware of the broad scope of live coding, and a bit annoyed that his ambitions are being downgraded to “inventor of the interactive Javascript tutorial.” In which case hopefully he’d be pleased to discover (and start citing) all the related work in live coding, media computation, tangible interaction and all the rest.
Yes but I don’t understand why demoting craftsmanship to some sort of menial second-grade class of work should be inspiring to people. I think it’s for the greatest part a self-serving argument.
I genuinely think some commercial software is doing its bit to enable creativity. I think that photoshop is a majestic piece of engineering for example. Context-aware tools are beyond magical just to name one thing (it came from Academia but someone had to make it robust!). That the flash API has been a good model for a lot of the retained mode graphics world, including open source. That console manufacturers and game makers have enabled cheap 3D to enter our houses. That Intel is creating magical engineering every 1.5 years. That a lot of standards driven and funded in big part by Fortune-500 companies have produced new ways to do interactive web without plugins.
All of the above takes an insane amount of craftsmanship and money and I don’t understand where Bret’s disparaging line of though is leading. That we need less craftsmanship and more genius? I just don’t understand what that recipe means. What is he trying to say, that we need more innovation? Structured lighting and GTA V and 11-point touch screens that last all day – for the masses – what’s his problem with craftsmanship?
Actually I’m also pretty unimpressed by Bret.
Hard to put my finger on why precisely but I think the previous poster got close with his *rambling* comment. Actually I couldn’t bring myself to finish either the video or the paper. I’m really uncomfortable with the large number of “cant, must, have to” phrases. Actually Bret I don’t HAVE to do anything. Hmmm, on reflection it reads a lot like something I would write before going through and trying to edit out all the stupid claims I had made 😉
If he had toned it down a little I might have been able to finish one of these. I don’t think I would have learned anything but I would at least have finished. Maybe this is because I’ve already read mindstorms** … hmmm perhaps it’s a generational thing and I’m struggling to come to terms with being on the older side of that divide 😉
** as have about half the planet!!
I believe the quote is “live coding, on its own, is almost worthless”. Field, SchemeBricks and Overtone do not use live coding “on it’s own”, do they? The example in Bret’s article does. To be sure, Kahn Academy doesn’t either. This may be a straw-man argument, however what he says remains true: Live coding on it’s own is not enough. Khan Academy seems to try to make up for this with video instructions overlaying the environment and documentation around the edges. What Bret proposes is to embed superior discovery and understanding opportunities into our programming environments for the benefit of the learners and programmers.
can I just ask, when THE HELL did toplap suddenly turn into an awesome and actively maintained blog!?! I have been a fan of Dave Griffiths for such a long time and used to occasionally visit the toplap page (it was a but ugly wiki then) and pine for a place where all (you Alex, and you too Andrew) my favorite live coders might hang out and exchange thoughts and stuff (a bit like Lambda the Ultimate is for language nerds) and now HEAR IT IS!!.
On the topic, I like a lot of Brett’s ideas, and I know at least one kickstarter project, light table? that is working to implement his demos as a functioning IDE already. Yes he has a holier than thou attitude, but so what? His ideas are out there and we can all steal like crazy from any of them that we think are worth pursuing.
And just to commit my own sin of rambling, I think citation would be nice, but how much nicer would it be if there was more source code out there? I heard that there was an experimental OS for the Apple Newton written in Lisp by the name of Bauhaus, hearing about it and not being able to see the source is gut wrenching.
Anyway,
Hi Eric, not to reduce everything to semantics, but these are all live coding environments with a number of live coding features, including just about all the ones that Bret argues for. Live coding is absolutely not just automatic interpretation. In fact very few live coding systems exhibit automatic interpretation.
I’d agree that automatic interpretation is not enough, but by not referencing any of the wealth of live coding systems already implementing the features he is showing off in rigged demos, Bret looks naive.
I think what Bret is arguing for in his “immediate connection” principle is bricolage programming, as coined by Turkle and Papert in the early 90s, and a principle driving much of the work in live coding.
(Thanks Joseph!)
Andrew I guess Bret’s writing style is perfect for the Internet; get someone on your side, say everything else is wrong, have lots of eye candy. This is awful work academically, but in terms of making a point on the internet, it’s awesome. Remember that Bret worked for Apple for a while, I can imagine making an argument with visual examples is standard in a shouty, design-driven environment.
I have read all of this article and watched all the video, and there are some nice points there. I most enjoyed the reaching for grounded abstraction in this one, although it is the least convincing it is the most interesting in terms of spawning something genuinely new. I’d recommend jumping to that bit.
Alex, thank you for the pointers; I haven’t seen these projects before, even though I’ve been working on adding live coding features to my own Lua IDE (ZeroBrane Studio: http://studio.zerobrane.com/). I recorded several short screencasts demonstrating live coding in Lua (using turtle graphics: http://notebook.kulchenko.com/zerobrane/live-coding-in-lua-bret-victor-style) and in Love2d engine (http://notebook.kulchenko.com/zerobrane/live-coding-with-love).
I do agree that live coding is richer that may seem from Bret’s comment, but I think the reason for this statement is that he was upset with the oversimplification of his Inventing on Principle presentation as an implementation of cool live coding technique and not much else.
Yes I think you’re right Paul, he’s trying to disparage a live coding technique and not live coding in general. He should probably be a bit more careful with his words.
Live coding is about bringing code into live interaction, not some technical implementation of interactive programming. Therefore all he writes about is in fact about live coding.
What limits Bret’s argument is the focus on lone programmers interacting with their code. Live coding in general is much more about liveness in terms of social interactions. It’s this social context of live coding, much more than just visualisation, that has been proven to be so beneficial to computing education:
http://dl.acm.org/citation.cfm?id=1047482
Here’s a video from June 2012 where Alan Kay shows a bit of collaboration with Victor:
http://amturing.acm.org/acm_tcc_webcasts.cfm
You have to select “Extracting Energy from the Turing Tarpit” from the right. The Victor bit is at ~21 min.
Ah, good reference. In fact, what Alan Kay did in the talk with the bridge demo can be seen as this defnition of “live coding”. On stage with big audience, puts up (highly declarative) code for the bridge, edit them real time to get crowd pleasing effects…
For what it’s worth (and a bit late to the party) I just read this as meaning live coding as an interface mechanic on it’s own is worthless, which it is. I think Live Coding as a cultural movement (for want of a better description) is something else, and out of the context of this article. A lot of it made me think about a lot of the work which has been going on with Racket, especially this stuff: http://docs.racket-lang.org/quick/
Yes true Dave, but I think the focus on interface mechanics without considering social context is an enormous problem for this line of thought. I think this stems from the over-reliance on Piaget (via Papert), without taking into the more socially grounded and in my (admittedly naive) view, more plausible, account of Vygotsky.