I’m going to boldly attempt to order these by “urgency”. It does take time out of your day to read and watch and absorb this stuff, so I am thinking along the lines of “If you look at just one thing, it would have to be …”
Two names appear a lot: Alan Kay, and Bret Victor. Kay has been around for a while and has inspired many others, including Bret Victor. But the latter brings much to the table that nobody else, not even the other Kay-disciples, have seen.
The utterly maddening fact is that many of these ideas date back to the 1960s and 1970s — but have been ignored, dismissed or forgotten about.
None of what follows needs comprehensive understanding on a first viewing. Their real value is how they make us think, and how they show us the boxes we don’t realise we’re stuck in.
Note about videos: if on YouTube, try out faster playback speeds. In my opinion, Alan Kay speaks a bit slowly, and 1.5x lets me get through in only 2/3 of the time.
Also, in quotes, all bold emphasis is mine unless otherwise indicated.
A collaboration I am part of, with a shared mission to rescue the real computer revolution that never happened. Read the short readme and skim the “Concepts” page (no need to absorb fully).
Video: The Future Of Programming (30 mins)
There won’t be any, like, markup languages or style sheet languages, right? That would make no sense. Ivan Sutherland showed us how to do it back here in 1962. So it’s all going to be direct manipulation in the future and that’s going to be fantastic.
Jaw-dropping talk by Bret Victor. How far has the field of computer programming really advanced in the past forty years? Why is the way we craft software stuck in the assumptions and constraints of a world that has long since vanished?
… I do think that it would be kind of a shame if in forty years we’re still coding in procedures and text files in a sequential programming model. I think that would suggest we didn’t learn anything from this really fertile period in computer science.
Doc: Computer Software
Is the computer a car to be driven or an essay to be written? Most of the confusion comes from trying to resolve the question at this level. The protean nature of the computer is such that it can act like a machine or like a language to be shaped and exploited. It is a medium that can dynamically simulate the details of any other medium, including media that cannot exist physically. It is not a tool, although it can act like many tools. It is the first metamedium, and as such it has degrees of freedom for representation and expression never before encountered and as yet barely investigated. Even more important, it is fun, and therefore intrinsically worth doing.
Another masterpiece by Alan Kay, this time going into a lot of detail about computer software as a medium.
The question of “what should we use computers for”, I think, becomes the question of “what useful systems can we dream up?”, and “what systems can we create to aid the building, simulation and understanding of even more complex systems?”—i.e., to make what is currently in the primitive stage of “coding”, obsolete.
Video: Inventing On Principle (60 mins)
And so in order to write code like this, you have to imagine an array in your head, and you essentially have to play computer. You have to simulate in your head what each line of code would do on a computer. And to a large extent, the people that we consider to be skilled software engineers are just those people that are really good at playing computer. But if we’re writing our code on a computer… why are we simulating what a computer would do in our head? Why doesn’t the computer just do it… and show us?
Bret Victor speaking about his mission to bring “immediate feedback”, between creator and creation, to our software tools. Includes some breathtaking demonstrations of what could happen if we stopped shouldering the burden of computation ourselves, and instead legitimised that far-out notion that the computer should do what it was invented to do!!
…and that is so important to the creative process. To be able to try ideas as you think of them. If there is any delay in that feedback loop, between thinking of something and seeing it, and building on it, then there is this whole world of ideas which will just never be. These are thoughts that we can’t think.
Video: The Computer Revolution Hasn’t Happened Yet (60 mins)
There is no idea so simple and powerful, that you can’t get zillions of people to misunderstand it.
Classic talk by Alan Kay on the ideas that led him to coin Object-Oriented Programming, and their lack of resemblance to its widespread “adoption” as souped-up procedural programming. All the main ideas about building truly scalable systems are represented.
Doc: The 2006 STEPS Proposal
“Applications”: We want to be able to do what applications do (and more), but, as with “operating systems”, we think there are better paths than the traditional annoying stovepipes that give rise to a few proprietary objects in a way that makes it difficult to combine. Something more like a desktop publishing system that could allow any and all objects to be freely combined visually and behaviorly would be much better.
Back in 2006, a team of researchers at Viewpoints Research Institute made a proposal to the US National Science Foundation to fund their STEPS project. That is, to make to make “STEPS towards the Reinvention of Programming”, aimed at creating a fully expressive and “self-describing” personal computing environment, in no more than 20,000 total lines of code. Huge breadth, and moderate depth.
Paper: Open Reusable Object Models (OROM)
The artificial distinction between implementation language and end-user language can be eliminated by implementing the language using only end-user objects and messages, making the implementation accessible for arbitrary modification by programmers. We show that three object types and five methods are sufficient to bootstrap an extensible object model and messaging semantics that are described entirely in terms of those same objects and messages.
Heavily referenced throughout this site. Far from perfect, but still light-years ahead of the rubbish that we work with a decade after publication.
Huge source of inspiration for ideas about “bootstrapping” and “self-improving” systems. My own frustration with the language-based approach gave me the desire to implement the OROM object model visually, in an ongoing project that I call BootstrapLab.
Doc: Learnable Programming
Alan Perlis wrote, “To understand a program, you must become both the machine and the program.” This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.
How do we get people to understand programming?
We change programming. We turn it into something that’s understandable by people.
Bret Victor again, beginning with the increasingly frequent question of “how do we get people to understand programming?”
Unfortunately, this tends to mean “how can we
teach train school children to type text made out of jargon and symbols, guess pixel coordinates and numerical colour codes, and run the code in their heads, so that some pretty shapes can dance around on the screen?”.
Those of us who would rather not spend the rest of our lives singing praises to the machine-god in its ancient and arcane tongue should be asking, not “how”, but “why??”.
Another example. Most programs today manipulate abstract data structures and opaque objects, not pictures. How can we visualize the state of these programs?
Again, wrong question. A better attitude is to assert that we have to be able to understand the state of our programs. We can then ask: How do we design data structures that can be visualized? Can we invent data structures that are intended to be visualized? How do we move towards a culture where only visually-understandable data is considered sound? Where opaque data is regarded in the same way that “goto” is today?
Paper: The Real Computer Revolution Hasn’t Happened Yet
Simply put, the press in the 15th century was first thought to be a less expensive automation of hand written documents, but by the 17th century its several special properties had gradually changed the way important ideas were thought about to the extent that most of the important ideas that followed and the way they were thought about had not even existed when the press was invented.
Alan Kay on the same topic as his 1997 talk, but different content. Particularly important are his parallels between the printing press, the literacy that we all take for granted—the ability to read and write that is viewed as a requirement to be a fully functioning citizen—and the potential of a “computer literacy” to transform society in a similar way by recognising computer software as an entirely new medium of expression for ideas. This “computer literacy”, however, is not about proficiency with Microsoft Word—nor is it about writing code in a text editor!
One of the realizations we had about computers in the 60s was that they give rise to new and more powerful forms of arguments about many important issues via dynamic simulations. That is, instead of making the fairly dry claims that can be stated in prose and mathematical equations, the computer could carry out the implications of the claims to provide a better sense of whether the claims constituted a worthwhile model of reality.
That’s it for now … might add or reshuffle.