Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
SqueakEnd'00 Sunday
Last updated at 6:34 pm UTC on 31 October 2006
SqueakEnd'00 Sunday March 12th 2000
By John M McIntosh (johnmci@smalltalkconsulting.com)
http://www.smalltalkconsulting.com

Starting 9:30 AM

Some more people arrived.

Steve reviewed what CREATE does. Our goal for the day was to do some demos and review the list of things to do.

Steve then reviewed the list of things to do and we got people to volunteer give some demos.


First we decided to tackle some of the problems on the list as a group project. Our choice was Layout frames, this was done mostly to see if we had a quick fix, and also to see how people approached the problem.

The issue in the browser is that the 'instance ? class' pane scales in size when you resize the browser window. The problem is that the containing rectangle gets bigger and then it looks strange. What should happen is that the display panel should placed 30% down and be a fixed size based on the pixels from the bottom menu. So position and size should be a factor of percentage and pixel count. We want the pane to stay the same size, just move in the proper perspective.

Some discussion ensued about how to tackle the problem. Steve wanted to drive but we decided it was a group activity. Someone for example suggest we invoke the browser and display the halo for the frame and see what the object is so we can better understand how to tackle the problem.

How to do it was raised. Maloney yesterday built a class, did method creation in the browser then tested. STP explained he prefers to build in the debugger, or the 'dynamic code reconfiguration tool' as he called it.

To start STP did LauncherView someInstance halt. The LauncherView is a tool that STP has that suffers from the same problem with the frame layout. In this case any old instance will do.

A question was raised could the Object Explorer replace the Inspector? Some people felt so, but it would require some work.

Tim Rowledge mentioned (for some reason I didn't catch) don't override printOn: and display the class name as a hard coded string, you will pay a price much later when you subclass and become very confused when the inspectors fail to show the correct name. {Strangely enough we discovered a Squeak Central class were this very thing was done and we were confused for a few minutes until we realized the hack)

We then decided to look at the browser window versus STP's Launcher window.

It was noted that windows need a metaphor to show were the resize area is? Change cursor, have visual hint? One of those bad out of the box experiences. {JMM Someone should look at other OS, some of the examples in Gnome and decide what is best to do). Right now a newbie can't figure out how to change the window size since there isn't a visual clue. Oh and a slight discussion arose about the close box and issues about were am I? Which OS is this? Is that a minimize button or close box, clicking can be dangerous. Tim Rowledge pointed out if we change the interfaced based on the hosting OS then that’s not nice. He works with multiple OS and having the same look feel across all OS is a benefit within Squeak. Perhaps this can be an option, don't inherit hosting OS behavior.

John Maloney suggested that we put a halt in on the button and catch when the resize happens.

STP showed that we could run the process then halt. In this case John Maloney pointed out the fastDrag option was turned on and the screen update didn't actually cause the window to repaint itself, rather a bit image of the screen was being manipulated. We turned that option off and found that resizing now was slow, very slow, but we could now expect to halt in the pane redraw code. Some more attempts were tried and we realized that halts were showing up in newEvents. Alas that is were the UI see the command '.' (or keyboard halt command)

Usually the method above works, but when working with the user interface we don't get the expected behavior.

We then attempted to look using halos.

"Cool trick of the day"

Maloney suggested we do a create subclass of the Morphic. From the debug menu invoke make own subclass. This creates a subclass and becomes the object to the subclass, now we can override a method without breaking the AlignmentMorph, since we are now manipulating the one instance of the newly created class. This was simpler than doing code within AlignmentMorph method that looks for a particular object being the trigger. Of course the problem is that we can't just put a halt in the window update code because that would cause interesting things to happen, usually fatal.

Ok when we got the breakpoint in window redraw code this of course caused a recursive error when the debugger came up and the UI then attempted to redraw the damaged area. This is a problem with Morphic since in MVC the redraw is done differently. The fix Squeak Central came up with was to handle exceptions raised by the debugger and catch the error and mark the window as invalid. Then drop into the debugger. Further window redraws are not done, in some cases Maloney mentioned that the window might get a red X through it, redrawing the window is not done again. However in this case we managed to break the image and had to force quit and restart. Debugging a base tool is never easy.

We then attempted to do a 'left shift hack' (part of STP goodies) it's a simple thing found below. We did attempt to find it in a raw image but we also noted that there is a number of ways to see the shift key, either both, or just the left one, how many methods does one need anyway…

{JMM ok ok I do need to correct some of the names, and code below I'm sure}
safeHalt
Sensor leftShiftDown ifTrue: [self halt].

fixLayout
	self safeHalt
	super fixLayout


Ok now we captured the halt. We then found the debugger was off by one byte code in displaying the code, ah that was a bizarre error, I'm sure if it was a smaller group and a VM guru present we should have chased that little gem, I'm sure we'll never see that again, it was only there to remind us of work to do… We then decided to look at resizeAsNeeded.

We then found
setBoundsOfPanelMorph
where it scales the frame.

In
SystemWindow addMorph:frame:
also does
scaleBy:
then
translateBy:


SystemWindow setPaneRectsFromBounds

We had some discussion about 'pretty print' Craig Latta mentioned that they are working on a parameterized tool which allows you to say how you want to layout the text. This tool will also do reformatting on fly.

We diverged and talked about accelerator keys for doing pretty print which we then attempted to find using the package manager. In the package manager we can find a class using a wild class find, or display the last 16 odd classes we have visited.

{JMM? An accelerator key table would be nice ?, this should be a panel/text window easily found in the How to Squeak information}

{JMM Hierarchical menus are needed who wants to do? }

In the browser pane we typed in pretty and did find string in method to get where the string appears.

We noted the PlugableTextMorph is named PlugableText in the debugger, which is a hack. There was some discussion about the Squeak Central fellow who did that, but he wasn't present, perhaps this could be fixed? This does violate the spirit of printOn: that Tim mentioned above, tsk tsk…

We then found the location where the keytable was initialized. We did note the method used to build the command key table and define the menu string needs to be cleaned up since the two actions aren't tied together and it makes use of magic numbers, tsk tsk as Tim stated.

Some discussion occurred about to build menus and which menus should be attached to which objects and at what time (for example coding versus deployment).
{JMM sounds like another project}

Coffee…

STP knows were all the coffee/expresso haunts are on campus. Missing were the sofas, STP note we need bean bag chairs next year.

After Coffee

Sarkela of the 4th estate showed their work on the repository manager.
It allows you to select a package and create versions/revisions. You can view older versions. The display allows live editing. Of course the Browser is all hooked to enable you to see what you have touched etc. Revisioning is an active function, not passive. More like Team V, not like Envy.

{JMM General feeling is that Envy is heavy, besides where is a Squeak version? We need a team management tool, more power to us if we create one}

Also showed a T-Gen implementation. With it you can take a grammar and it enable you to read a text file based on the grammar and create a parse tree node. You can of course build an entire parse tree and decide if it is viable before committing to building classes for each of the nodes.

These are tools we needed for distributed work and of course to satisfy a customers business rules around the ability to reconstruct an image to a known state. As John Sarkela pointed out some businesses (telecom) expect you to be able to build a version of an application to a known state!

Currently the backing store is abstracted. Working is continuing on concurrent access, which of course isn't easy. John Sarkela pleaded for some assistance on this project.

Lunch…


After lunch

Tim Rowledge talked about making the plugable VM. I couldn't capture that information since I was setting up for my demo on:

Deferred screen updates which you can read about here: http://www.smalltalkconsulting.com/papers/tipsAndThoughts/codeFragments.html

I was surprised in the interest. Someone mentioned that perhaps this would solve a problem he had with long update sequences when he uses the Virtual Network Computing tool. (http://www.uk.research.att.com/vnc/):

Which allows for remote console manipulation. I'm sure Squeak updates at 28.8K are slow.

After my presentation we had Maloney talk about the Casio pia? A PDA that sells in Japan, coming? is one with a 200Mhz strong Arm processor, 128mb of memory, also 16 bit stereo. Squeak needs a MP3 plugin to play MP3. There is serious hardware in Japan that can be used for a squeak engine, if you want one talk to Maloney about how to acquire. (Don't expect any English, in the interface) Also the screen was something amazing sub-VGA readable in the sunlight of Santa Barbra.

Maloney then displayed some demo that targets the educational market. In this example we had something called StarLogoWorld which created 1000 turtles each of which had a behavior to start in a random position and move forward.

Then we wrote some Smalltalk to place all the turtles in one spot, and then told them to move forward in a random starting direction. This created a circle.

Then we lined them up and had them go forward a random amount and got a growing halo type of image.

Although you are dealing with thousands of turtles you can do neat things. For example we can have the turtles leave scent trails, then we can have the turtles hunt for the best scent intensity. For that example you get clumps of turtles, with turtles occasionally peeling off and going to another scent clump.

He will look into the distribution of theis work. This is the type of thing Disney would like to package up and deliver on the network to the education market.

Maloney showed a commerical Logo system that contained numerous examples of this. For example a very small lisp program that shows fire propagation thru a forest Another example using genetics. A interface using 5 genes that lets you create a image of an insect. Makes nice pictures.

Maloney then when on to talk about Etoys. Yes Yes we realize someone else stole? the name or got the trademark first.

Steps to do the car demo. {JMM actually I think there are better documents on this on the Web, Where?} However I captured the event below as part of the transcript.

Draw a car using the paint tool, keep the Morph.
Add a scripting area, drop the Morph into the play field. {JMM I and other found how to do this hard to remember, should fix that issue, perhaps a save this Morph or keep this Morph to this list of playfields, or a new playfield?}

Maloney : Think of the scripting tool as a sub application that controls the Morph. The scripting tool is kinda like an inspector since of course it displays information about the Morphic. By manipulating numbers in the scripting tool you manipulate the car. Now you can move the car manually, but lets write a program to make the car turn in a circle.

So a script was created to go forward by 5 and turn by 5. The Morphic stepping routine then automatically does the work. NOTE that a yellow backdropped exclamation point means a command you can invoke. We then added logic to bounce the car off the wall, and make a noise when it contacted the wall. Now we want to tie the car Morphic to a steering wheel.

Which we did and of course modified to control the feedback, the arithmetic controls in the scripting panels were added to solve this problem There is lots of work and the interface is still rough and complicated (5th and 6th grade is the target). Although past work by Allan target older grades it is felt now that kids get so much computer exposure that we can start much earlier about teaching them how to do programming.

We then had more questions about feedback and control. Maloney said yes these things are available. Maloney then show an example from Alan Kay's image. A simplistic example of a green grasshopper behind a wall of green grass, when the grasshopper is still it's hard to see, when moving you notice it.

An animated bird, doing double buffering, with four images moving it appears to fly.

A more ambitious one. The rule is that the butterfly that keeps light off to the left. This makes the butterfly circle and approach a bright light. Logic is used to align the body with head etc and the butterfly circles, no it didn't burn up, perhaps more work is needed?

A more professionally detailed example, Simba the lion club that changes scale, changes speed etc and angle so it appears that to run side to side and move to the background, then to the foreground. {JMM Although the detail is there I believe the code needed was small}

We broke at this point to go up stairs to the lab and see a quicktime demo from Jim Bean.

Jim Bean attempted to show a Quicktime plugin, which he had problems with, an issue with the FFT plugin and Quicktime plugin clashing. Instead he then gave an example of VRML, in this example he had text on a picture, click on the text, the text rotates. He then rotated the viewpoint which was a panoramic view of Yosomite. The panoramic image was manipulated by Quicktime, and the rotating text was layered on the buffer before displaying.

So what type of applications can we run on this? An example of a kitchen/restaurant interior view was given. We rotated the camera around. In this example game a puppet ran a triggered action and asked you to do something. Of course then you interact with the environment. Although this was not in Squeak, Squeak could do this in a year or so, but perhaps with a plugin since parsing the VRML is too slow.

Another example of building a VRML model is by taking pictures and have software use geometry to calculate the physical model. Then you can move the camera around and it appears you are there. Most people there thought this was very neat. {Note we didn't see this, but a copy of this example using the Stanford Bell tower lurks on the Web somewhere}

Maloney and Jim Bean talked about an issue with dynamic loading and how this all works it's complicated. STP said what about booting Squeak on bare metal. Nice but not in the near future. Tim Rowledge pointed out that with Linux you could boot to a console then have Squeak manipulate /dev/fb and the like and not even use X. {Think internet appliance?}

STP then lead a discussion about where the Squeak community is going. Who wants to carve off a responsibility of an item on the outline. Tim Rowledge wanted to split them into huge problems and small problems, then put them on the Swiki and see if people want to claim a problem/issue or two.

Community issues:

Dan had mentioned squeak.org and having a separate swiki. Could we do something about domain names and tie the swiki somewhere and on a faster machine. In general this domain and it's linkages need to be cleaned up and supported in a more professional manner {JMM Don't we have a Web designer or two that could do this, polish is needed, apply the right people in the right places, those Squeak central folks need to code Smalltalk, not HTML}

Mailing list. How to make better? News groups are ugly! Lots of suggestions. Perhaps now we need to reflect on the list and think about where to go from here.

The TODO List:

As for the material STP pointed out it could take 72 hours or so to re-sort and refactor the things to do once the swiki pages are up and running.

Are there interdependencies? Most are not related but some are, how do we display information about that and make it easy to implement?

Laurence Rozier

He then gave a demo of WorldCraft.
On the left side is ObjectExplorer, on the right is an inspector, well it looks like a inspector but it's not.

The left list contains not only objects, but projects, email messages etc. All the objects of interest in his world. This allows him to better manage a very large image and of course manage all the data of important to him. An inspector like object called costumes allows him to display information in meaningful ways. Later when I talked to him he explained that costume is responsible for displaying an object. An object can have many costumes that can display it in many forms. You as the user can pick which costume is used to best visually display the information important to you.

An example was inspecting a email message that originally came from Celeste.

Use of the Composite pattern, simple hierarchy relationship allow his 'Freedom' framework to organize data.

Laurence spent some time talking about methodologies that use color, I'll allow him to provide hints about these theories if he can find time to update this page. {As mentioned in the discussion he will provide code, documentation etc over the next coming weeks}

How it works:

Made FreeDOM class and then Model is a subclass, this was an interm step, later functionality will move to Object. At this point someone pointed out ProtoObject. STP went on to explain about ProtoObjects and why, also a discussion about using dependencies field to mimic instance variables.

Right now a new object being brought into the image from a project isn't being 'freedomized' There is a command to do this, but this may change in the future to do it automatically. Each object you click on causes the object to display a costume in the right pane. This is more detailed and richer than a normal text display from printOn:.

The thought is that the web will become a distributed object oriented space.
Then the question is how to interact with it, and how to navigate and how it's displayed. Squeak gives wonderful control over that, we must exploit that. If everything in the environment can be brought into Squeak then we gain control. This allows us to organize and manipulate data as items. For example the Unix unified name space {link?} allows you to access items using Unix file paths which mean you can use all sorts of tools to manipulate not only files, but devices, pipes, remote objects. Laurence mentioned this is becoming a Web standard and will affect how things are interconnected in the Web.

As for distributed objects Laurence's company has a Server that talks to Squeak and can scale. More information will be posted on their site real soon now.

wetalknetwork.com
thepattern.com

Freedom freedomizes everything.

STP thought this was a neat use of object explorer. One of the things he has been working on is exploding a hierarchy within an existing hierarchy. In the Smalltalk Browser it only shows 4 levels, but people need more to organize but they can't deal with more than 4 level.

"The art of memory" A book (ISBN: 071265545X)

JMM discussed 3d spatial orientation of data and how it makes easier to management data. For example I've lost lots of things occasionally on my Hard disk within the existing 50,000 files collected over the last 15 years (not all my content, Microsoft is really bad in dumping thousands of files into your system). However physical things of importance exist right where I expect them to be, even if they were placed there 30 years ago, do you know where your passport is? Does anyone remember OpenDoc frameless context free services?

Laurence felt that the Web methodologies group W3C were object unfriendly. Just look at XML. He had discussed OO technologies with various players, but too many mind sets and hot issues, so no action was taken. The Smalltalk people need to seize the moment and integrate and be the leaders for new Web technologies. We solve many of the problems 25 years ago, and now the Java folks are reliving it again today. We have been stuck with browsers as the presentation material, everything lives in the browser and you can't interact with it at a programmatic level.

It was pointed out the browser is two dimensional.

Recommended Reading List.
STP asked people to suggest material.
{Links can go here}

STP showed a demo on Siren. After getting much feedback from people on the Siren out of the box experience he realized that many of his fellow professors and of course students were turned off before they could really get into the product. Thus some effort to improve the out of the box experience. So for example:

A commercial splash screen, simple but a generic user expectation.

It comes up with a text display selection list giving an intelligent sorted list of material that a new user can read and explore before attempt to use the tool. In a sense a training guide. Experienced users can dispose of, but for the novice this is hand holding.

The objective is create a 30 minute, a few hours, the first 24 hour experiences. This makes the user comfortable. STP had used [] and a 'p' or 'd' or 'I' tag in his interactive examples. We suggested that example use the click metaphor to invoke the functionality needed, versus the [] p. It was pointed out there was a command key option 6 to allow you to select a text string and link it to an inspect or do-it. STP tried to deny it existed, that command only does color, we brow-beat him into doing it. STP just DO-IT. STP found of course someone had managed to sneak the feature in, one should read those change sets more carefully.

Another project STP is working on is the storage of an musical opera. The containment hierarchy, images, and sound can of course be done in Squeak, and the content distributed on DVD. What STP saw was the Explorer could become the basis of the application

The opera starts with a strict hierarchy but we can reorganize and resort, this allows analysis. At ParcPlace David Liebs and STP did an extended MVC. {STP comments?}

STP then opened a window which started at the top level and allowed you to traverse the hierarchy and much more: (expand/collapse), add link, views, annotations.
Also the ability to organize trays at the top level as roots of the trees. It is less than 10 classes, many methods deal with initialization, and many are just accessors.

It was discussed that wrappers and object explorer needs to be refactored, or perhaps bettered understood. {yet another project to carve off)

As the sun set so does Squeak-End 00 ends, and planing starts for next year on the SqueakEnd'01 page.
Other Stories by the same author are