Self X demo

Randy Smith Randall.Smith at Eng.Sun.COM
Wed Oct 25 09:19:13 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!)

Yow! Good point!  we're just using the standard release, in which we
tailored the screens to fit Sun displays comfortably.

> 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. 

Yes, I would guess that you could make use of the
higher bandwidth to capture those bursts.

> 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?  

Probably the compilation delay (guess).

> 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.

You can use the background menu to make a factory window, from which a
new panner (acutally "radar view") can be plucked, and directly carried
across windows into your world. Or perhaps quicker given the latency
concerns of opening a new window, make a new shell from the background
window, type in "radarView copy" then middle button select from the top
of the resulting outliner "show morph".

> * 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...

Hmm, an innocent error like yours should not cause the ui to fail like
that.  Anyway, again, for the normal release you have a shell to type
into for emergencies.  The timeout for a new UI might be a good idea,
but even that would not solve corrupted world display code, for example. 

> * 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.

Wow. Weird and cool! We'll see...

> * 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.

We're mystified on this one.  Mario tried it again here and seems okay (?)

> 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
> useful.

Get it...yes, a table morph might be a nice addition, plus extra tools
for layout too, I suppose.  Sigh, more tools...

> (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.  

This is often did you have to do that and why?

> 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...)

There is supposed to be a time sensitivity in there so that nothing
happens if you click then release too quickly.

I really like the remember-the-last-selection behavior.

> 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....

Hmmm indeed!  Wow. Actually it sounds pretty difficult.

Thanks very much for your thoughtful comments!

More information about the Self-interest mailing list