Comments on “Sonja: the code”


That was a fun read

Steve Alexander's picture

That was a fun read… helps that I’m a bit familiar with Gauntlet. What follows are likely naive and uninformed thoughts on the code, seeing as I don’t really know Lisp, and don’t really understand your research! So, taken with that caveat:

I enjoyed the cultural references. Had not heard of MZB, but wikipedia article explains. Think I found a Frank Zappa reference. Reminds me of writing programs on a BBC Micro at age 9, and leaving messages for my future self to find at age 14. As I recall, some of them still made sense.

The code’s “2 years later, WTF does this actually do?” comments are of course a universal in the experience of making software over the course of months and years!

Also, strange how often the basic rules of arithmetic apparently break down… happens all the time. Although the specific kludges are different, the warts in the code seem quite familiar in contemporary code that’s dealing with UI concerns on a low level. (For example, displaying text at the level of choosing the size and position of glyphs.) It’s like there’s a form or pattern of some kind that arises when trying to make a rationally designed UI system do something that’s within what it’s ostensibly designed for, but just slightly skewed to what it’s become adapted for. Like a hydraulic machine leaving a specific pattern of moisture tracks on the concrete beneath it, caused by the leaks that occur when you try to run it in a way that wasn’t 100% intended.

The arbitration macrology reminds me of some code I’m familiar with that tries to figure out what touch gesture someone has made on a complex UI, where there are various claims to different gestures for the different contexts of the application.

Definition of pi is curious. I get why to define it with single precision, but why Why “3.141592685” and not “3.141592654”. I’m sure level of precision at the last two decimal places makes no practical difference… so is it just to screw with readers? A form of good humoured gas-lighting? “Wait a minute… I’m sure the eighth decimal of pi is 5 not 8. Or am I?”

re pyramid.lisp… I’d never considered whether condoms could be considered monadic. Need to think about this a bit. Also, getting “telepathic” knowledge of the distance is indeed a cheat :-)

I’m surprised not to see an implementation of a kind of short term memory, to manage things like “I’m looking for a doorway. Oh there’s one behind me! Ah, but in my goldfish mind, I recall I just passed through that, so dampen its relevance”. I see there is a note on using latching to provide hysteresis, to do some of the things I’d expect short term memory to provide. The implementation of this in code makes me think it’s more like a digger wasp than a lab rat. Or maybe Sonja is like a digger wasp, and the Advisor has a bit more context going on. I didn’t see code for the Advisor — or does advice come from outside of the program, like from a human?

Thanks for sharing the code, enjoyed the read!

Double bagging

That was a fun read, thanks!

Why “3.141592685” and not “3.141592654”?

I have no idea! At a guess I typed it in from memory and was just wrong.

I missed the condom joke when I did my read through. I have no memory of writing it, but I do remember vividly the incident it refers to. A woman I was hot for (and who was not interested in me) said (in a group conversation, not to me) that “double bagging” was obligatory as far as she was concerned. I have to say that made me rather less interested.

I’m surprised not to see an implementation of a kind of short term memory, to manage things like “I’m looking for a doorway. Oh there’s one behind me!”

This was a specific architectural choice. The representationalist approach was all about building up a model of the world, simulating possible actions in the model, choosing an optimal one, and then doing that. We wanted to demonstrate that this is not usually necessary (although obviously there are times when one does it). So Pengi maintained no state at all, and Sonja minimized it.

does advice come from outside of the program, like from a human?


I was excited to see the code

Ruben's picture

I was excited to see the code to Sonja posted as I’ve read both your and Agre’s papers and bits of your theses but I’ll be honest – I only skimmed through the code. Lisp looks daunting, though that’s probably due more to my limited experience with it than your then-programming skills.

It was reading about Sonja, then Shimon Ullman’s work, that got me so interested in how our visual routines ultimately determine so much of our interactions with the world around us. Your work also underlined how daunting a task figuring out perception is.

Without going into that right now, I wanted to question your comment on the worthiness of pursuit of AI – from an advocate of the devil point of view if no other. Your comment derived from the state of visual systems such as they are now, and were back then. They’re lacking and with perception the real issue, AI is destined for failure or at best a practical compromise far from the original goal. But could we not think about vision the other way around? Given that we want to support such-and-such interactions with the environment, the perception system needs to somehow attain this set of information. I’m not sure if this is what you’ve done with Sonja. It’s been a few years since I’ve read it. Given a set of visual routines, I believe you tried to figure out how to implement wanted behavior on top of that. But probably you also worked the other way around – at least a bit. Given the behavior you wanted, you pieced together visual routines to supply the necessary percepts.

I think that “other way around” can be useful for (contemporary) AI researchers. Too many seem to want too much from their systems. A proper characterization of the percepts needed might be able to show that not all of those desires are feasible. Then there might be a better appreciation of the limited information humans deal with on a day-to-day basis, and eventually an improved shared understanding of what’s within the realm of possibilities in AI. Starting from there, we could focus again on the actual challenges instead of putting on blinkers and working on subsystems that will never connect to anything related to reality. I feel like too many lessons learned by you and your colleagues have been forgotten or dismissed.

Anyway, mea culpa if I’ve greatly misinterpreted your work. Consider this a promise that I’ll familiarize myself with some of it again and that I’ll feel properly remorseful if I have.

I’m really happy you still look back on this older work from time to time, just like when you posted on your lost conference paper from 1986 (which I’ve managed to find somewhere by the way, though I seem to have misplaced it just now…).

Visual routines

Given the behavior you wanted, you pieced together visual routines to supply the necessary percepts… Too many seem to want too much from their systems. A proper characterization of the percepts needed might be able to show that not all of those desires are feasible. Then there might be a better appreciation of the limited information humans deal with on a day-to-day basis

Yes, this was the point of our vision work. The idea is that there’s a more-or-less fixed set of general-purpose “intermediate level” visual operations, which don’t do anything useful individually, but which can be combined in different ways to form task-specific routines.

I do think this could be a productive area for new research now!

So anyway, reading the code

Fierr's picture

So anyway, reading the code gave me warm fuzzies, but I can’t imagine that it will do you any good. If you find it interesting, though, leave a comment—I’d like to hear why!

I skimmed, and found it interesting (knowing ~nothing about AI) from a historical perspective. It’s surprising well-written and readable in comparison to other source code I’ve read from that era—granted, most of that was C, which permits kitten slaughter.

Do you still cut code David?


Sytse Wielinga's picture

Interestingly, I (of course) looked up one of the sites containing instructions on the version of Genera that you can actually ‘easily’ go and run today (which of course, I’ll be sure to plan to follow some day), and instantly came across this gem:

The source code for VLM was written in C, and as it happens, it was leaked to the public in the early 2000s. Soon thereafter, it was ported to 64-bit Linux.

And here we reach a grey area. Symbolics was dissolved in the mid 1990s, and the current state of its intellectual property is muddled. The rights holders of VLM and Genera itself are not well understood. There is no longer any “Symbolics, Inc.”

I thought you’d like that one.

Delighted to read your work

Bob Yu's picture


I listened a couple of interviews and read many of your postings on your websites. I am very happy and very inspired in seeing that somebody is articulating the meta-rationality or meaningness .

My martial arts teacher was the first 5th order of consciousness person that I ever met. He knew the limit of each martial art (or system); therefore a question like which martial art is the best art was deconstructed, re-articulated and then responded in an unexpected and novel away. When I discovered Wilber’s work many years later, I realized he was the first integral or Yellow person I met.

Since I am a web programmer, I notice the competition for the best programming language (4th order of consciousness) as well as seasoned programmers who recommend using the right programming language for the right project.

My former spiritual teacher articulated mono-paradigmatic, multi-paradigmatic, meta-paradigmatic, cross-paradigmatic and trans-paradigmatic minds or views. Basarab Nicholescu is another 5th order of consciousness thinker who presents his transdisciplinary view or meta-view.

What I notice is that many people are more meta-systematic, but not necessarily multi-systematic in that they can reflect upon their own system, but they are not comfortabe entering into a new system and functioning there. The martial arts teacher used to teach us many martial arts so I had to learn them whether I liked them or not; his rationale was that each art is in a way specialized for a particular kind of demands and environment of fighting; therefore it was pedagogically advantageous and stimulating to study them.

Almaas seems to be another spiritual teacher who is articulating a 5th order of consciousness spirituality that he calls a view of Totality where each view or realization of ultimate is not the end (runaway realization where each realization leads to another).

For me the paradox of stating that there are many (spiritual) ultimates is described by the mathematics of Cantor (finite, transfinite, infinite). Infinite cannot be stated, but transfinite can be stated and there are transfinites that are bigger than other transfinites.

I am very interested in the Bohmian dialogue because that seems to be the nature of conversation at 5th order. I define a “debate” as a competition for the best system; “discussion” is a sharing or exchanging different systems; “dialogue” is the meta-systematic meeting ground.

If a small talk is a flowing conversation where the topic just moves from one thing to another, then a dialogue is a flowing conversation where learning via the continuous ontological remodeling occurs. Thus a dialogue can result in a mutually constructed and harmonious system/meaning, as opposed to negotiating to settle upon a particular system among many systems.

Borrowing from my former spiritual teacher ‘s teaching (assuming I had understood him correctly), Hegel thought that he could create an ultimate system through dialectical synthesis, but the meta-systematic view realizes that all systems are inherently limited and all systems are fundamentally irreconcilable. The spiritual teacher said that this is why Buddhists and Christians cannot talk to each other due to their fundamentally irreconcilable assumptions/systems. However, the dialogical mind (probably similar to 5th order) can still have a conversation for it can operate above the limits of systems.

I am just glad to see to have found a blog that talks about these issues in depth.


Add new comment


You are reading a metablog post, dated April 11, 2020.

The next metablog post is A slice of The Eggplant.

The previous metablog post was Doing being rational: polymerase chain reaction.

General explanation: Meaningness is a hypertext book. Start with an appetizer, or the table of contents. Its “metablog” includes additional essays, not part the book.

Subscribe to new content by email. Click on terms with dotted underlining to read a definition. The book is a work in progress; pages marked ⚒︎ are under construction.