Alto System Project: Dan Ingalls demonstrates Smalltalk

Published 2019-03-12
This interpretive production of the Computer History Museum's Software History Center was created from archival footage of Dan Ingalls demonstrating the Smalltalk integrated environment and object-oriented programming language on the Museum’s restored Xerox Alto computer at the Museum’s Shustek Research Archives on February 13, 2018 and June 20, 2018. The brainchild of Alan Kay’s Learning Research Group at Xerox Palo Alto Research Center (PARC), Smalltalk was designed to transform computers into personal dynamic media, giving users (especially children) the capability to easily build simulations and to modify the system as they saw fit. Smalltalk also pioneered aspects of modern graphical user interfaces (GUIs) and integrated development environments (IDEs): overlapping windows, popup menus, paned hierarchical class browsers, integrated debuggers, as well as the BitBLT graphics primitive routine. In this video, Ingalls repeats a demonstration that he gave to Steve Jobs, who visited PARC in 1979: making live code changes to fundamental system behavior, such as text selection highlighting and scrolling. Ingalls also shows off Smalltalk’s graphics capabilities, including turtle graphics and bitmap editing.


Catalog number: 102738723
Lot number: X8485.2018

All Comments (11)
  • @judgegroovyman
    1:53:41 is my favorite question and answer in the whole video. Great video overall too thank you !
  • @m13v2
    this is so cool. the system which would later be used by ward cunningham and kent beck and help spark the agile movement, tdd, clean code, … and it’s level of interactivity is still far ahead from what most systems we are programming with today offer.
  • @AleksyGrabovski
    Original SmallTalk had such nice characters instead of ugly @ ^ and := which we see in today's versions.
  • Smalltalk does lexical binding! Just tried the following in GNU Smalltalk: countdown := [:n || m | m := n. [m := m - 1. m]]. c1 := countdown value: 5. c2 := countdown value: 6. c1 value printNl. c2 value printNl. c1 value printNl. c2 value printNl. and got the output: 4 5 3 4
  • 42:56 The problem I have with this is, how do you get a record of what’s changed? You can dump the state of your environment to a system image and give that to someone else to make use of your customizations, but how do you do a diff of that with some other system image so you can pick and choose which changes you want?
  • 36:45 No keyword search. Wasn’t that already being developed elsewhere, for online text databases and such?
  • @ChrisAthanas
    Did someone forget to get something for Dan to drink to clear his throat?