In Smalltalk, you can, using something called "The Browser," pull up the "source code" for any object in the system. "Object" in this case means anything in the system whatsoever, including windows, widgets, numbers. "Source code" is the stuff that a compiler translates into machine code so the computer can do something with it. If you want, you can modify that code right there, or copy it and create a new object with user-customized behavior.The entire system is transparent and modifiable.
The Smalltalk code browser has always felt uncomfortable to me. One reason is the peeking-through-a-pinhole claustrophobia of only seeing the definition for a single method at a time, instead of seeing everything in context. It seems like it should be great, in principle, to be able to pull up the code for any object you see, but to me, it feels like the code has been parceled into a thousand tiny closed boxes, and you have to synthesize an understanding of the system by peeking into each little box, one by one.
A counter to this, maybe, is this slide I did of the entire source code of Gezira on a single page. One can imagine editing in such an environment, where you can develop a mental map for where everything is, and you can compare and cross-reference with just a movement of the eyes. [1]
But the more germane reason here, why the Smalltalk browser feels uncomfortable, is its "peek-a-boo" nature -- when you open the browser window, a method definition pops into existence, you read or edit it, and then it poofs out of existence when you close the window. It is very clearly a "view" is constructed on-the-fly for "data" under the "hood", instead of a thing that always exists.
A counter to this, maybe, is what I'm trying to do with the Room databases (still nascent, but the intention is there) -- the entire state of the system has a permanent location in the space, you can always point it it and it's always there and everything is there, it's self-describing (it teaches you what it means), nothing is ever hidden. There doesn't (or shouldn't) feel like there is a "hood" where things are "under". [2]
There's the (old?) joke that the game of "peek-a-boo" is just making fun of babies for not understanding object permanence. The concept of "object permanence" (and finding ways to not push it too far?) seems relevant here..
---- ---- ---- ---- ----
[1]
<nile.png>
[2]
<Screen Shot 2015-01-21 at 8.40.22 PM (2).png>
On Jan 31, 2015, at 8:04 PM, Bret Victor wrote:
[pulling this from the drafts folder, written a week ago]
After rereading Craig's essay, the word "ethereal" is sticking with me.
The Web dwells in a never-ending present. It is—elementally—ethereal, ephemeral, unstable, and unreliable. Sometimes when you try to visit a Web page what you see is an error message: “Page Not Found.” This is known as “link rot,” and it’s a drag, but it’s better than the alternative. More often, you see an updated Web page; most likely the original has been overwritten. (To overwrite, in computing, means to destroy old data by storing new data in their place; overwriting is an artifact of an era when computer storage was very expensive.) Or maybe the page has been moved and something else is where it used to be. This is known as “content drift,” and it’s more pernicious than an error message, because it’s impossible to tell that what you’re seeing isn’t what you went to look for: the overwriting, erasure, or moving of the original is invisible.
I wonder if a lot of what drives me is the fight against ethereality. Maybe what's important is not physicality or tangibility in themselves, but a kind of stability and "reliable existence" which physicality happens to provide.
[now]
I was reminded of the response I gave to Hesam's skepticism of the OOPSLA talk:
To rephrase my question now: My comment was not about the earlier parts of your talk. It is more about the parts you start showing sketches with visualizations
in the physical world: walking in the museum, lecturing with props, a book as a building space, etc. What I’m saying is that it is not clear that the best “medium”/
"representation” to perceive concept C necessarily has to be a tangible thing in the physical world.
Those representations from the earlier part of the talk would not have been possible without the invention of writing. And writing is exactly an instance of this thing that you are so skeptical of -- turning an ephemeral mental concept into a "tangible thing in the physical world".
That shift -- from speech and memory, through lists and tables and mnemonics, to written language -- is I guess the primary example of anti-ephemeralization, where thought itself went from being ethereal and fleeting to having a stable, reliable, pointable existence.
I think that what my instincts might be reacting to is that virtual representations (such as windows on a screen) feel like they have a "slippery" character similar to speech and memory. (Where is a word after it's been spoken? Where is a window after it's been closed?) But it's non-obvious, because we are used to the dichotomy of "memory is internal; writing is externalized", and we assign virtual representations to the "externalized" bin and assume they therefore provide the same benefits as writing. And they do to a certain extent.
But maybe the more appropriate dichotomy is not "internal vs externalized", but "slippery vs stable". (Not sure of the right words here.) Whether the representation is "speech-like" or "writing-like":
speech-like -- synthesized on demand and dissipated afterwards, persisting not in any "place" but just as an observer's memory of an event
writing-like -- having an independent continuing existence in a location
Maybe "persistent" representations are what I'm going for.