Clojure Gazette 1.56
From OO to Clojure Workshop!
Watch my free workshop to help you learn Clojure faster and shift your paradigm to functional.
liveliness and direct manipulation
October 25, 2013 ===================================
I have been thinking quite a bit about directly manipulated live systems: that is, systems where software is manipulated not as text but as composable objects.
Smalltalk was the first that I know of to make the objects "directly" manipulable. Self, of course, is the quintessential direct-manipulation programming language. A little bit of this "liveness" survives today in Apple's Interface Builder which comes with XCode.
P.S. I love hearing from readers. Just reply to this email!
A nice movie explaining the Self language and how it is represented on the screen. I just love the strong focus on direct manipulation.
Morphic: The Self User Interface Framework
Morphic is the Self user interface. This paper talks briefly of how the Morphic interface was structured to provide what it did.
What I like about Morphic is that the system is built up structurally of objects as opposed to primarily built of code. For example, a tool called the "core sampler" could be placed visually on an object to see a list of the objects that intersect with the target of the core sampler. Using it, you could see how objects were composed in layers.
David Ungar and Randall Smith explain the philosophy behind the Self user interface. Central is the idea of strongly maintaining the illusion that the objects you are manipulating are the objects in memory. That means that you never see two views of the same object.
This essay has nice videos and a bibliography.
Dan Ingalls returned from a hiatus from computer research to find that programming had gotten really complicated since the 80's. The web, with its profusion of languages and text files is much hard to break into than Smalltalk, which he helped develop.
So he created the Lively Kernel, which is a live system that runs in the browser. Shapes can be manipulated with the mouse, attached to each other, and programmed, all while they are moving and interacting on the screen.
David Ungar talks about his career and the philosophy behind the Self live object system. He also talks about the approach they took to system design: design it cleanly and build the efficiencies into the compiler.
Bret Victor has developed a live programming system that takes a different approach from Morphic. In Morphic, manipulations of objects will directly change their properties. Resizing a box will change its width and height.
In Victor's software, manipulations are recorded as steps in a program for constructing the objects. He makes a distinction between programming and coding. With coding, you have to guess at what the program will do. Programming does not necessarily have this setback.
These are all great papers, if largely overlapping, describing the philosophy and implementation of liveness in Self.
One page ( Directness and Liveness in the Morphic User Interface Construction Environment ) has an incorrect link to the PDF. The correct link is here .
Be sure to read the papers on the other topics relating to Self as well. Self has a lot to offer.