Users Or Consumers
While at university in the previous millennium, I was very much in love with the Smalltalk language and especially the Smalltalk system. Built on top of the core language, the latter includes the possibility to study and modify every aspect of the whole system through the class browser and image persistence. Such a setup allowed a freedom of creativity that I since miss in programming. The mythical Lisp machine must have been of a similar pedigree but having never used such a machine this is only what I can guess by reading about it.
This nice blog post by J.V. Toups reminded me of those days but also looks at this from a very different, yet interesting, angle. Just how much potential of our digital computers do we lose every second by having divided the world into a tiny class of "producers" and a gigantic class of "users" with all the rest of the world in it. Being patronized, members of the last class unfortunately have no idea whatsoever about how empowering computers really can be. If the system is designed to include the user, then it only takes a small amount of time to learn the basics of how to "program" them.
Current programming languages like C++, Java or even Python do not easily allow to author and use programs written in them. Of course there are the IDEs helping with aspects of that task, but compared to programming in Smalltalk, this is just cumbersome in comparison.
Candidates for the contemporary equivalent of the Alto machine in my view are the modern Smalltalk systems Squeak and Pharo. In case you really have no idea what I am talking about in this post, you should try watching this short YouTube video showing off TiledMaps in Squeak. From a pristine Squeak image it takes only a few minutes to have a basic map viewer that can access OpenStreetMap, Bing satellite imagery. It can talk to multiple geocoders to locate points of interest in the map. This is then turned into a primitive UI including buttons for zooming and searching.
If the GUI part makes your head spin, then you need to read up on Morphs and the power they provide by assembling and connecting them directly in your running image.
Note that I selected this demo totally randomly - there are lots of amazing demos and tutorials out there. Here's another one demonstrating Squeak on a BeagleBone reading measurements from a light sensor.
Incidentally while editing this blog post, I ran across a different blog post with the same spirit. It does argue for Pharo instead of Squeak but I do not have enough experience with either to comment on this.