[self-interest] First

Jecel Assumpcao Jr jecel at merlintec.com
Mon Jan 29 22:17:03 UTC 2001

On Sat, 27 Jan 2001, Stefan Matthias Aust wrote:
> [two hours at my company with a real Self]

Yes, it is fun. Most people can't imagine it just by reading papers
about it.

> [couldn't allocate more than 130 MB of memory] 

Very strange - my machine has just 64 MB. What do you mean by crash? I
can sometimes get the system to quit the session entirely (I can do
that in Linux by turning off swapping and running lots of
applications). The only thing I do that eats up a lot of memory is
asking Self to enumerate all objects (which must create a mirror for
every single one of them!).

> The second time, the system crashed was when I assigned a number to a label 
> morph (probably instead of a string).  I agree with my colleague, the UI 
> seems to quite fragile.  Self tried to open a new world but still, it 
> flooded my with debuggers.  I like the way Squeak deals with display errors 
> much better.

I don't think I've ever caused a display error in Squeak. How does it
deal with it? The UI is indeed extremely fragil, as my trainees found
out. It rarely crashed with me - I guess I instinctly work around
problem areas.
> Opening a morph factory freezes the whole system for 5-20 seconds.  I 
> think, this is unacceptable for a multi user system.  I've run Self on a 2 
> x 440MHz SPARC system.

It takes a lot less time than that on my 270MHz Sparc, so I had never
noticed this. When the machine was being shared by 20 students in the
class I gave then it did freeze up for a while whenever someone called
up a factory morph, but it also froze up in several other situations so
I paid no attention.

> It could be the multi user display or simply the age of the system, but 
> compared to VisualWorks on the same system, Self feels slow on the UI.

The only other thing I run on my Sparc is Squeak (2.2!), so I have
nothing to compare it with. There is a certain lag, but it was fast
enough on much slower machines (Ultra I) that I was able to write a
real time CAD program.

> It seems that the Smalltalk emulator is missing in the current distribution.

Yes. Here is a version of the BareBones snapshot that includes it:


My link is now a bit faster (128kbps), but I don't know if anybody will
actually be able to download the 6MB file from the above URL. My server
had a motherboard problem on Saturday, so I replaced it (with another
486) and am only now back online.

> The web browser throws an exception because a paint mgr doesn't understand 
> some messages.  It seems, there're some 24 bit-depth bugs.

I have only tested the 16 bit and 8 bit modes.

>  From time to time, I got strange errors like 4673826438 doesn't understand 
> asVMByteVector (so some similar message, I don't exactly remember), perhaps 
> because some missing 24 bit-depth support?

These look like the errors I was getting when I tried to add 16 bit
support to Self 4.0.

> When using the multi user mode, shouldn't every user have his own radarView 
> morph which is inaccessable for every other user?  Now, by navigating away, 
> I was able to leave my colleague alone on the start screen which no chance 
> to follow me.  We then duplicated a viewer but now  two or more viewers 
> always cluttered the screen.

One solution would be to move the radarView morph to another window,
ideally one that wasn't shared with other users. It could be configured
to affect the original window, not the one it is in.

> The system wasn't able to get our names.  Both mouse pointer were called 
> "Andre" which is the forename of first employee in the passwd file but 
> neither my nor my colleagues name.

I never got that to work at all, but haven't looked into the problem.

> I love the core sampler!  (This had to be said ;-)

While I thought this would be awkward (you have to drag it around to
point to the different objects, it easily gets buried underneath other
stuff, etc) I have found it much nicer to use in practice than Squeak's

> When changing methods, that's the best way to collect changes to post or 
> publish them?  There's changed modules morph, but it seems that it can only 
> write complete modules.  It also crashes if the directories it assumes 
> don't exist.  Is it correct that there's no change set concept as in Smalltalk?

Self 3 started to go in that direction (with a programming.log file to
save all changes), but Self 4 is based on modules. You have to remember
to keep tagging everything you add with a module name (though the
defaults tend to be right after a while) and to save the changed

> It seems the Self image contains all source code.  Why? Wouldn't it be 
> better to have a system similar to Smalltalk where source code and changes 
> are stored in external files and the image would contain only pointers to 
> that files?

No that is a bad idea. Smalltalk wouldn't have this either except that
they were forced to do this due to the addressing limitations on 16 bit
machines. With a proper object virtual memory, the sources can live on
disk and be brought to memory as needed in a much more elegant way than
Smalltalk's current manual solution.

> I really missed Squeak "revert" and "versions" menu commands.  They're easy 
> to implement once you've the concept of a changes file.

I did save my modules with RCS in order to have access to previous
versions, but that required some extra work.

If Self had a universal undo, then a lot of things besided writing code
would be nicer.

> When I was playing with the system trying to colorize a propertiesSheet 
> morph, I managed to color it red but then lost track what I'd changed and 
> couldn't find the place again.  Is there a way to list and browse changed 
> methods - and as multiple people can change methods, sorted by user?

The changed modules morph can show you what has been changed, but it
does not have a notion of different users.

> What's the best way to change the value of an assignable slot (the one 
> marked with ":").  I tried to open some kind of inplace editor but that 
> seems to work only for the slot name, not the slot value.  So I always had 
> to open a shell for that object and evaluate things like "width: 2".  At 
> least for simple literals, it would be nice if you could directly enter the 
> new value.

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.

> Does the text editor require a non-proportial font?  Or is any font 
> possible?  How can I change that?  What's about the font size?

There are several preferences objects that are supposed to tell the
editors what to use. Try "preferences" in any evaluator. I haven't
tried changing these things, so I don't know how much is hardwired.

> Is there a way to automatically update object outiners?  When I change 
> values, it seems that the new values are shown after a short time but I 
> don't know whether this is a feature or simply happened by accident because 
> the morph was redisplayed.  A manual update option would be nice.

They are updated in the "step" method by polling the object for its
current values. The polling rate is kept low in order not to waste
processor cycles. But the rate is high enough that by the time you
reached some "refresh" button it would probably be too late anyway.

> It also would be nice if all "tools" would behave and look the same.  I 
> dislike the fact that most tools don't have a close button.  Interestingly, 
> in the barebone image, the debugger has one while in the demo image, it has 
> an "abort" push button.

That is probably the result of some change being made to one snapshot,
the module saved but then not read back into the other snapshot. This
problem is typical of multi-image systems (you should see how messy my
Squeak stuff is!).

-- Jecel

More information about the Self-interest mailing list