[self-interest] Re: First Impressions of a running Self

Jecel Assumpcao Jr jecel at merlintec.com
Fri Feb 2 19:07:04 UTC 2001

On Thu, 01 Feb 2001, Stefan Matthias Aust wrote:
> I got "out of memory" errors displayed in the self console.  I looked into 
> "top" and noticed that only 130 MB were allocated, on a machine with 2 GB 
> free memory.

For 32 bits, 2G is a positive number for C unsigned variables but a
negative number for signed ones. I took a quick look at space.c in the
VM sources but didn't get far enough to see if this could be your

> Squeak notices if there's an error when it tries to display a morph.  In 
> that case, a special flag is set so that this display method isn't called 
> again until somebody fixes the problem and manually resets that flag.  A 
> flagged morph is displayed as a gray box with two crossing red lines.

I tried to do something similar in Self (see ozPatch.self in
http://www.lsi.usp.br/~jecel/release/patches/). I got this patch to
work in Self 4.0 but not in Self 4.1.2. Anyway, I think I just popped
up a notice with a button from which you could get an outliner for the
failed morph from inside the original window. The gray box is missing.

> 20?!  I never thought that morphic would scale to that number of users?  Is 
> it still responsive, especially if you move morphs?

As long as the students were mostly watching what I was doing, it
wasn't too bad. But they never did that for long, but always started
clicking furiously which would make typing nearly impossible. And a UI
crash was never far away when we got to that point :-(

> Yesterday, I tried to use Self remotely over a 128/160 Kbps DSL line and I 
> needed all of my patience to work with that system.  Actually, typing stuff 
> in or moving the mouse was okay, but opening menus, dragging morphs or 
> expanding outliners was a small pain.  I also tried to collaborate with 
> another colleague (which of course diveded the available bandwidth by 2) 
> and I wasn't barely able to open popup menus.  This was real pain.

I am patient. My first experience with Self 4.0 was using it over a
1200 bps modem....

> But why does it freeze at all?

It feels like a problem with the window creation code since the new
window takes a long time to appear. When it does, the old world seems
to start up again even before anything appears in the new window. At
least that was my impression.

> Only if you have just one image.  With multiple snapshots, it makes sense 
> to share as much as possible.  My 15+ Squeak images for example already 
> need more than 1 GB on my harddisk.

Note that in most Smalltalks you tend to have one sources file and one
changes file for each image. The Squeak people took extra care to get
everyone to agree to not condense the sources/changes except when
moving to a new major version. But nothing stops you from using it like
other Smalltalks (except common sense?). So in the normal case, you
only save virtual memory, not disk space by having an external sources

But I am not proposing just stuffing the sources in the image - I want
a persistent object store system that can be shared by multiple users
such that there is no duplicated stuff on the disks or memory.

> I gave that idea some thought but it seems to be quite difficult to 
> implement such a thing like an universal undo feature.  Some programming 
> support however is required or I cannot really do serious programming 
> within Self.

A universal undo is very hard to develop, but I think it can be done at
the persistent object store level.

> >If the object that you wish to be the new value for the slot is on the
> >screen, you can use the yellow button menu option "drag arrow" to get
> >the object to point to it. If it is not visible, then typing the whole
> >expression in the evaluator is your only option for now.
> I don't like that.  I definitely do not want to keep the numbers 0..10 
> handy on my screen to arrow-drag them to slots if needed.  The shell 
> evaluator is also too clumsy because it forces me to always typein the slot 
> name.

Perhaps "typing in the air" like you can with MorphicWrappers in Squeak
would make this easy to do. It also might be neat to be able to drop an
object on a slot to change its value...

> >There are several preferences objects that are supposed to tell the
> >editors what to use. Try "preferences" in any evaluator.
> That didn't work for me.

Hmmm... I see that

      preferences editorFontSize: 16

works in the sense that the preference is changed, but it has no
effect. Looking up "senders" for editorFontSize only turns up
initFontsFor: in traits boxSize. It doesn't seem like these preferences
are used very dynamically....

> However it's still too high.  I kept the system running over the weekend - 
> we normally don't log out as we've nice SunRay stations with smartcards at 
> our office - and it consumed more than 13 hours cpu time - too much for an 
> idle system.

True. Did you call up the spy? It is in the yellow button menu for the
world. There you can see that even when "idle" Self allocates and kills
object at an amazing rate.

-- Jecel

More information about the Self-interest mailing list