[DISCUSSION] Hidden and Open: O'Keefe as "everyman"

Richard A. O'Keefe ok at cs.otago.ac.nz
Thu Feb 13 22:34:16 UTC 2003

Ned Konz <ned at bike-nomad.com> wrote:
	You have to have a sentence already; you can replace its noun 
	(receiver or object) with the tile. Just drag the tile over the old 
	noun to change it.
	Open a viewer on some other object, and drag out the sentence 
	"SomeObject start script script1". Drop it on the desktop. Now get a 
	tile from another object; you can drop that tile on SomeObject and 
	change the receiver of the start script message.
I do hope someone is harvesting these helpful hints.

I'm afraid the direct manipulation metaphor has been strained past its
breaking point here.  We have Tiles which are like pointers to objects,
and dropping one Tile on another will do nothing or cause a replacement
depending on, stuff, I guess.

I tried the following.
1. Start up a fresh Squeak 3.2.
2. Make tiles for "A Word of Caution" (WC) and "ReadMe.txt" (RM).
3. Drag RM and drop it on WC.  Nothing happens.
4. Halo/menu/embed.  Now we have a WC tile with an embedded RM.
5. Halo/viewer on "SqueakLogo".
6. Drag (RM)WC and drop on "SqueakLogo" tile in "make sound croak"
   script.  Nothing happens.
7. Drag the "SqueakLogo make sound croak" script out onto the desktop.
8. W a  i   t while the script opens up.  (250MHz Mac PPC)
9. Drag (RM)WC onto (SqueakLogo) in the script.
So I now have a script with
    [[ReadMe.txt]A Word of Caution...] make sound [croak].
10. Click on the exclamation mark in the top left corner of the script.

OK, it croaks.

Try to pull the tile out of the script so I can use it in another
experiment.  Eventually use "pick up" handle.  Script promptly breaks,
and when I insist, vanishes.  I had expected the original "noun" to

It should not be too hard to make that work, surely?
I don't suggest that the "phrase" tile should remember the original
"noun", but the "script" morph that it's in certainly _does_ remember
"The Scriptee" (as the help balloon puts it), so if a phrase tile
finds itself without a receiver, couldn't it ask the containing script
for one?

Drag out "[SqueakLogo] turn by [5]".  W a i t.  Drop (RM)WC tile onto it.
Click on exclamation mark.

Now the "noun" of this command quite obviously mentions BOTH ReadMe.txt
AND A Word of Advice, but only the latter turns.

Trying to built up a "conjuction" of "nouns" like this seems an obvious
thing to do if you want several things to turn together.  If it's not
going to work, maybe Tiles should refuse to accept Tiles?

I'm not sure what the best way to deal with that is.
Should some tile class override #addMorphFront:fromWorldPosition:
and if so which?

Let's go through the vanishing script process one more time.

1. Start a fresh Squeak 3.2
2. Open a viewer on SqueakLogo.
3. Drag "[SqueakLogo] forward by [5]" onto the desktop.
4. Grab [SqueakLogo] and move it onto the desktop.
   Surprise!  This time you get one of the desktop and there is
   still one there again.  (Black halo handle.)
5. Do it again.
   Double surprise!  Get "Syntax Error
   Player50 scripts script1
       ( expression expected ->forward: (5))"
6  Dismiss the error message by clicking on the X.
   Surprise!  Last time I tried this, the script disappeared.
   This time it didn't!
7. Poke at it a bit, accidentally moving what's left of the phrase tile.
   Error: subscript is out of bounds: 1
   ... TilePadMorph(Morph)>>firstSubmorph
8. Sweep the broken vase under the carpet and run away to play outside,
   hoping Mummy won't notice.

I don't think this is Pink Plane, I think it is Twilight Zone.

The thing that seems to be missing is
 - a clear conceptual model of whether a phrase tile may have a
   missing receiver or not.
 - a failure to enforce this in the code at the right level.
   That is, the code neither makes sure that there always _is_ a
   receiver, nor works reliably when there _isn't_.

There is excellent balloon help for the items in the top row of
a script.  There is good balloon help for the "verb" of a phrase.
But there isn't balloon help for the "subject" or for the phrase as
a whole, so you don't get to find out what you can do with this bit
the same way that, for example, you get to find out what the handles
in a halo do.

Since tiles don't seem to have any balloon help when on their own,
is there any way to get them to delegate balloon helpfulness to their
container, and give a tile pad some useful balloon help?  I'd be happy
to submit something, but I don't understand this part of the system
well enough to do it.

More information about the Squeak-dev mailing list