Self X demo

Mark Lentczner markl at
Wed Oct 25 17:26:21 UTC 1995


As requested, I thought I'd let you know how using the new Self-Via-X
server went.  I first had to allow the X connection through our firewall
(since I am President/Sys. Admin/Janitor of Glyphic, this didn't involve
too much arm twisting!)

My first attempt was via an X server (eXodus by White Pine) running on my
PowerMac.  This came up fine and everything looked beautiful... except that
I only have a 832x624 screen!  The demo is VERY biased to 1024x800!  In
fact the "panner" object is almost totally offscreen (if it were, I'd have
been stuck!)

My second attempt was via X-Free86 running on a 486DX4/100Mghz Linux
machine (with a 1024x800 screen).  While the colors were a little off (the
colormap also goes nuts when you move outside the Self window - a
combination of how Self handles color and how the server handles color -
eXodus is more intellegent about it), and the speed a little less
responsive (eXodus implements more of the optional X protocol, including
stuff to make better use of the connection) - over all:  IT WORKED!  I had
a blast running Self.

As for speed issues: I have an ISDN line to the Internet that runs usually
at 56kb/s, but can bump on to 128kb/s on demand.  During my run, it never
went up to 128kb/s, probably because the traffic is really very bursty and
averages (over the interval of 90sec that my router uses to measure these
things) well below 56kb/s.  It was quite usable, though a bit sluggish,
especially the first time any particular menu came up.  Are you cacheing
these in the X server or am I seeing the compile delay?  Over all the feel
was reminescent of early Smalltalks!  Probably next time I try it, I'll
force the line to 128kb/s and see if makes any difference.

I came accross these problems with me and/or the demo:

* I managed to loose the panner at one point - total death: there seems to
be no way to navigate without it, and there are no instructions on how to
use it other than the arrows.  I accidentally somthing-clicked in the map
part of it and my screen went to some outer-limits of the world:
unfortunatly the panner was nowhere to be seen.

* I mistyped some code, and got a debugger up in a new X window when I ran
it (I had typed "deposit 50" in an evaluator rather than "deposit: 50".
Unfortunately I just closed the new X window - leaving my world user
interface process hung in  a debugger I could no longer get to: You should
allow X windows to be closed w/o confirmation...  or you should restart the
main UI process after some dead-man timeout...

* Obvious minor nit: the demo asks you to save a module, only in this
configuration you don't have write access to the directory.  Oh well.  It
would be nice if I could write to it, and when the server finally shuts
down, you could mail me the files in the directory (just tar it!) and then
wipe it clean.  I would like to have seen the module save output file.

* I couldn't get the web browser to work - some error about unable to reach
the host in the URL I gave it.  Since it was a machine on the same subnet I
was running the demo on, and URL into our public web server, this is
probably a firewall/filter problem on your end.

On self as a whole:

UI2 is very nice: Congratulations John and Randy!  Two quirks come to mind:

(A) Setting properties on a nested collection of morphs to get them to
layout the way you want requires ALOT of mousing around.  In Codeworks we
solve this by when you get the properties of an Aligner (our equivelant to
a matrix of row and column morphs), you can set the layout properties of
whole rows or columns of embedded views (our equivelent of morphs) at the
same time from the same window.  You sort of have this in the core sampler,
but that is in the Z plane, and in the X and Y directions would be more

(B) The philosophic its-built-in-itselfness comes through rather heavily -
while loads of fun us programmer weenies, it sometimes gets in the way:
Right button menu Dismiss on a Right Button Menu to get it to go away is
cumbersome.  Similarly, since the buttons are press-hold-release, and they
retain the last option you choose as the default, (a terrible combination
in my view,) it is very easy to accidentally delete parts of the
programming interface:  Dismiss any morph, then accidentally momentarily
press right button over somthing useful in the interface (like the little
buttons in outliners) - there go your buttons into the void!  (Remember:
Right button is under the ring finger, the one that you have least moter
control over.  On a sensitive mouse, random extra right clicks are not
unprecidented.)  Perhaps things like outlines should be "locked" from morph
operations until expressly "unlocked" since most of the time most
programmers don't want to pull apart the outliners (even though it IS neat
that you can...)

Random musings:

I can't wait to see/play with Self with the distributed shared environment!
I wonder if there is a "lesser" form of this that could be designed where
the shared object protocols were such that different language systems could
participate.  Obviously I'm thinking it would be cool to be running
Codeworks/Glyphic Script on one machine, sharing an object space with a
Self system on another.  While certain types of interactions are clearly
not going to be possible (probably can't inherit from each other's objects)
- others should be easy (such as using the UI of each other's objects, and
storing each other's objects).  Glyphic Script isn't so far from Self that
this would inordinately hard (as opposed to trying to do it with, say,
ADA...)  Hmmmmm....

- Mark

Mark Lentczner
Glyphic Technology
1209 Villa Street
Mtn. View, CA 94041
markl at

More information about the Self-interest mailing list