Plenary Session 2013-04-21

LIVE 2013 will start with a bang, featuring three speakers with deep roots in the history of live programming. Steve Tanimoto will be revisiting his framework on "liveness" and thoughts on new levels and directions.
David Ungar and Randy Smith will be jointly talking about the hugely inspirational systems ARK and Self.
Thor Magnusson will be speaking about the history of the live coding music scene and his newest live coding system.

Steve Tanimoto Revisits Liveness

Tanimoto

Liveness in programming environments generally refers to the ability to modify a running program. It can be considered as a form of a more general class of behaviors that are various forms of information to programmers about what they are constructing. This paper gives a brief historical perspective on liveness and proposes an extension of a hierarchy given in 1990, to now account for even more powerful execution-oriented tools for programmers. In addition, while liveness concerns the timeliness of execution feedback, considering a broader array of forms of feedback is helpful both in better understanding liveness and in designing ever more powerful development tools.

Full paper will be posted after conference.

David Ungar and Randall Smith Reflect on Self

Ungarsmith

Live Programming Contest Winners 2013-04-12

Live Demos

We are proud to announce the winners of this year's LIVE programming contest!

We received 14 outstanding live programming demos and had a really hard time selecting the 3 winners. All demos will be presented live at the LIVE workshop, on May 19, in San Francisco.

Contest Winners

1st Place, Conception

Conception is a programmer's playground that blends ideas from systems such as Code Bubbles and Self, allowing a programmer to manipulate source code, execution, output, and many other programming artifacts, such as diffs and gists. Even at an early stage, Conception has many neat ideas. Watch the video!

2nd Place, CodeHint

CodeHint is an excellent example of how ideas from live programming can be extended into mainstream programming environments. CodeHint supports predictive programming, which Tanimoto describes as a "fifth-level" of liveness. CodeHint does this by simultaneously executing different possible API calls, allowing a programmer to interactively select which new changes to encorporate into the program.

The video is best viewed in full-screen with audio.

3rd Place, urMus

urMus is a collaborative live coding system, which produces a live instrument manipulated by a performer. The prototype system offers an interesting perspective on the production of live coding, as well as opening up interesting possibilities for a collobrative team of programmers to bring something to life.

A History of Live Programming 2013-01-13

alt text

The history of live programming stretches back to the earliest days of computing, assuming several different names, and manifesting in different forms: from interactive interpreters to live art performances.

In the past year of 2012, the concept of “live programming” has received broad interest among professional software developers and software engineering researchers. In February, Bret Victor’s CUSEC keynote talk "Inventing on Principle" received over 400,000 views. Victor’s compelling demonstrations of live programming concepts spurred widespread interest, discussions, and followup experiments. In April, Chris Granger’s Light Table project raised $316,720 from 8,000 people through a crowd-funded Kickstarter campaign, and subsequently entered the Y Combinator program. In August, John Resig (jQuery creator) announced that Khan Academy had redesigned their introductory computer science materials to use live programming-like techniques to increase learner engagement.

But where did these ideas come from and where are we headed? We review some of the history and give a list of useful resources and citations at the end.

Classic Era - Interactive Programming

Screenshot of a Smalltalk system.

Live programming is an idea espoused by programming environments from the earliest days of computing, such as Lisp machines, Logo, Hypercard, and Smalltalk. In common with all these systems was liveness: Feedback is nearly instantaneous and evaluation is always accessible. For example, any part of the SmallTalk environment could be modified at any time and reflected instantly. Likewise, in HyperCard, the state of any object was considered to be live and editable at any time.