Squeak SmalltalkJoker Squeak Smalltalk : Organization : prevnext Squeak End00

SqueakEnd '00 Report

The 'Squeak-end 00'at Santa Barbara. March 11th 2000 V1.0. By John M 
McIntosh. (JMM) johnmci_at_smalltalkconsulting.com 
http://www.smalltalkconsulting.com

    * Saturday

    * Sunday

History was made this weekend, by getting various Smalltalkers 
together from around the world to discuss Squeak, we had an 
opportunity to set and reflect on goals that we could pursue for the 
coming year. Sometimes we get buried in the details so it was 
refreshing to step back and address issues about the "Squeak out of 
the box experience" and get group cohesion about where Squeak should 
go.

These notes are rough and will be redone later in the coming week, by 
myself or other contributors as they see fit. For the purpose of 
posting information early before many Squeakers and Smalltalkers head 
to Camp Smalltalk in San Diego I've decide to make this information 
available as soon as possible. If I've made a mistake or missed a name 
or not correctly covered a topic please correct it, that's why it's on 
this Swiki. Please note that on Saturday most of the event was video 
taped, contact STP for information on obtaining a copy of the video. 
So the story begins… Early Saturday morning I appeared at Stephen 
Pope's house and found John Maloney and Dan Ingalls having breakfast 
with Stephen. Between toast & jam, discussion flew from concepts about 
stereo systems complete with mercury-shielded wire, to Jitter 3 and 
where was Squeak going. Then off to the University…

At roughly 9:30 Stephen Pope began the discussion with: Where should 
Squeak go, how should the weekend progress, should we build code? Show 
code problems? Watch and play? Should we have Birds of a Feather 
sessions so people could share what they are doing?

John Maloney suggest we do some demos today since Dan Ingalls wasn't 
going to be here on Sunday. From there we went forward to introduce 
the people present at the meeting. (As STP mentioned over the weekend 
we had 26 people attend.) I attempted to capture some information on 
each speaker, however they should review and change as they see fit. 
You can find that information here. Squeakers at Squeakend 00

The ability to deliver 'dead on delivery' application. Hey its just an 
application (shrink wrapped). You don’t know it's a Smalltalk 
application, pocket Smalltalk delivers a Palm OS application, not 
Smalltalk. That of course is the key requirement and item we need to 
work on. The key points of our Saturday discussion follow:

    * The out of the box experience is raw. Downloading doesn't work 
      because of the linefeed issue, much time and energy is take with 
      this issue, we should have solved that years ago. Hitting the 
      window title changes it, ARG!. Since it looks different it's 
      difficult to deal with from a novice user viewpoint, flop out 
      scroll bars, PLEASE. We need a way to give a good first user 
      experience. However remember it's still a development 
      environment, but is it? Don't confuse it with a simplistic 
      environment. If we can get the environment 70% there from a 
      look/feel viewpoint on a particular OS then people will be 
      happy. Right now it's a very different UI experience, this was 
      agreed to be a bad thing.

    * STP When Smalltalk was a little girl she thought she was an OS. 
      Is that true today?

    * Scrollbars are weird: run away run away…Hey if the look and feel 
      is wrong then the person having a casual look doesn't like it 
      and won't put the effort in.

    * It was pointed out the Red Hat distribution process work, we 
      could have a version for VM coders, one for learning, one for 
      novices. Many are special purpose and the market has decided 
      that the metaphor works. We can bundle platform specific stuff, 
      and address issues of general tools and architectures by having 
      different distros

    * JMM asked what is our target audience? Lots of us do business 
      applications. What is the interface design, what are we 
      attempting to do to attract people.

    * Some people don't care about native look at feel, an application 
      gives an experience.

    * KDE and Gnome are X-Windows applications a pain to write, how do 
      we capitalize on that. Lots of energy how to harness. We now 
      have a large large list of things to do, what are our shared 
      values, what's important to get Squeak going in the world? It's 
      difficult to judge what the targeted people want.

    * We need to lockdown morphs for novices, nothing like getting the 
      halos up when you don't understand what the heck they are. 
      Safety out of the box is key, then allow the learner to open up 
      the experience.

    * Debugger well sometimes you do something and your are history, 
      can we fix that.

Coffee ensued…

STP gave a tour of the campus and the beach bluffs, the laid back 
California lifestyle.

(Pictures? Pictures? JMM: I saw some interesting Digital camera there, 
where do those pictures lie) Neat Applications today? What can you do 
today, that we would want to do?

    * Applets (embedding in browsers) Flash hey don't forget that. 
      ShockWave. Etc. Flash supports form etc, someone in the group 
      admitted that they did Flash from within Visual Basic. Great way 
      to do simple input without involving a specific tool's GUI 
      builder.

    * Shell scripts, why not Squeak as a shell script. As mentioned we 
      should have a VM that can run short scripts. Currently people 
      use shell scripts from the command line, but Squeak would be 
      better but no support for that yet..

    * What about Electronic device support, cameras etc. Ability to 
      pull in material and manage from consumer devices. Need easy way 
      to do plugins for that type of application.

    * Lots of stuff in the image, but no time to learn it, again an 
      issue of time and energy.

    * What is Morphic? A dummy's guide to Morphic is needed. John 
      Maloney was asked to contribute a chapter on Morphic to the book 
      that is being constructed. For some people most of their 
      experience is working to learn Morphic, then discovering that it 
      is simpler than expected. For many of us with lots of Smalltalk 
      experience we accept it, but for others its difficult to 
      understand the original why, why things are done in a particular 
      manner.

    * Tim pointed out there is some good material now on the web. 
      There is interest for LearningWorks for Squeak but who has time 
      to migrate the package. {takers} The primrose path starts here, 
      but this all takes time. STP pointed out work he is doing on 
      siren documentation and early user experience (later in the 
      weekend he reviewed that with us). LearningWorks had active 
      books, will someone port that?

    * It was suggested that Squeak should shipped locked down, then 
      the user can jump to his knowledge level that allows him better 
      experience Squeak. We should jump to Morphic directly this gives 
      better experience, but it is slow… Could we make MVC a separate 
      environment? Yes Dan pointed out MVC is mostly separate we could 
      dispose of it.

      (JMM 03/14/00 Ooops perhaps 'dispose of it' (MVC that is) is too 
      an aggressive a term, seems I need to reword that. The thought 
      was that MVC should be a separate project, and a decision is 
      made to file it in and use it. MVC should NOT be the default 
      offering. We did discuss having a 'kitchen sink' image where 
      everything lurks to satisfy some developers that require all 
      things ever created and used past and present. Yes we realize 
      Morphic needs work to make it pleasant for us old VW programmers 
      to use. I personally doubt MVC will ever disappear, so don't 
      worry.)

    * Here is an opportunity to make changes to the environment and we 
      should seize the opportunity and run with it to better the 
      experience. {Key point to drop MVC or make it a file in, Key 
      point to go with Morphic at the start}

    * Someone pointed out we could take an Envy image and read it and 
      run it. This allows for porting to other platforms and different 
      OS versions.

    * Could the top layers become Squeak? Say could we take 
      VisualWorks window specs and translate to Squeak (yes that has 
      been done).

John Sarkela mentioned a port.

    * JMM noted that browsers are a delivery tool, more integration is 
      needed.

    * Dan pointed out that Morphic is just a delivery tool for the 
      visual image. Under the cover it is MVC compatible, but of 
      course there is more to allow animation.

    * MVC is accessible, Morphic is not, not a quick learning curve. 
      Many people today still build MVC, that wasn't the vision, they 
      should be doing Morphic.

    * Dan admits that Morphic started out as 10 methods now it is 
      huge. This code creep was done by Squeak Central, yet! However 
      someone could break out just that information into a new class 
      to make it easier for people to learn. {JMM Sounds like a Squeak 
      Central project to me}

    * Someone asked if there are two Morphic visions, two camps? 
      Layout issues? What are the core protocols?

    * Maloney pointed out that scripting added another complication, 
      he then offered to do a 1/2 hour demo on Morphic (loud 
      applause). This follows later, {Maloney also offered to fixup my 
      material on this and ensure it’s a good teaching tool.}

    * Sarkela wanted to know an effective way to build Books. Hey it's 
      simple but again the curve is hard. For example Dan spent a 
      month building the back to the future book,(mostly I suspect it 
      was a feedback coding cycle for him), but it should now be 
      simple to build books.

    * STP then tried to discuss where to go next. So much to learn, 
      perhaps we could do tag team tool tricks. Mostly for other to 
      learn something new since some of us don't have access to other 
      very very experienced smalltalkers.

    * STP did a short poll of the group. It's amazing how many of us 
      did punch tape, and punched cards. Does that date us?

Squeak-end or Squeak-Before.

Squeak? Why it's not called Smalltalk. Well Dan said because it was 
not political correct at the time at Apple to call it Smalltalk. But 
no words of wisdom why it's called Squeak. In fact at dinner your 
author attempted to grill Dan Ingalls on that topic and got nothing, 
perhaps a sly grin… Maloney gave an example of Morphic First how to 
find out how to make the default Text font bigger. We guessed and use 
find font in a selector, then fell back to 600x800 {This should be 
easy we suspect it's there but no-one could find it}

Fun with Morphic Dan Ingall's Demos Ok up to the Create research lab 
to see an demo from Dan Ingalls.

We got a 1024x768 projected image on acoustic tiles cool…

Dan brought up his OOPSLA demo. {JMM OOPSLA notes are here}

    * The Back to the Future project, the ability to drop in a morph 
      and have text flow around. Note black halo allows you to pick it 
      up and move it around. The brown halo moves it around with the 
      world so the surrounding Morph redraws to flow text around the 
      Morphic you are moving.

    * The Sound input demo.

          o Setting the FFT rate, the spectrum, and to display the 
          sonogram.

    * Night Over Bald Mountain

          o Disney Content o Play music, see music score. o Given a 
          movie morph from Fantasia we need to connect the movie to 
          the sound.

          o We drag a tumbnail of first frame to the music score. This 
          starts the movie when the sound starts. We then stop the 
          movie and grabbed a thumbnail from a point on the movie to 
          match a particular point in the score. Now on playback it 
          drops frames or extends the movie to match sound track. 
          Currently it does not change the sound track. The group 
          agreed that fiddling with the sound track would be a harder 
          project.

    * The movie morph has comments about how to build a movie in the 
      correct format.

    * Band of Bears Demo

      In this example we had some bear characters playing a band, 
      along with a midi controller. This example was built used the 
      scripting system. One of the features was that you can pick up a 
      character and change his stereo pin by moving him left or right 
      and move him back or to the foreground to change the volume, the 
      character of course resizes.

      Dan then showed a tool that allowed you to change the FM 
      envelope for the player. The envelope editor only took a few 
      methods it was mostly for free given some generous resuse, line 
      vertices etc are already provided. For the keyboard diagram we 
      internally places a bunch of morphs on the keyboard visual, then 
      on mouse down we stop the current sound, then play the new sound 
      for the pressed key.

    * Smalltalk 72 Demo

          o Dan did attempt to write a small program but was hampered 
          by the fact that the 72 grammer is very very different and 
          has some usage of iconic characters as command tokens. o 
          Smalltalk-76 hopefully will be resurrected since it runs in 
          100k, has no browser.

    * Flash Graphics. Vector versus BitMaps

          o In the given example a pixmap of the character is 41064 
          bytes, the flash version is 1064 bytes. o If we resize the 
          pixmap it gets bigger and looses resolution. The flash 
          version gets bigger but provides great resolution

    * Someone pointed out that Smalltalk V is Smalltalk Vivarium (not 
      Virtual) It was created to support Alan Kay's Vivarium work at 
      Apple and had to run in a very very small memory footprint.

    * Alice Demo

          o Dan then went on to show a demo they are working on which 
          takes advantage of Alice. He brought up what looked like a 
          browser window and zoomed into a browser image, which 
          changed into an Alice world with painting on the walls. We 
          can change the wall textures via drag and drop. And of 
          course add new pictures to the walls. The objective to allow 
          you to customize the walls etc as your personal experience. 
          Also set to music. The images are of course like, one of 
          them was a browser to the source code for the project. Dan 
          remarked that Alan Kay had taken this and created a personal 
          picture library. o Although there is no hardware 
          acceleration, response is ok. Andreas Raab is working on 
          this, his work has changed frame updates from 1 to 2 a 
          second to 40? o Someone noticed a artifact on the floor, Dan 
          and other realized that it's the back of the browser window 
          in our line of view. No collision detection so we can move 
          through the walls. More of this is coming… In theory when we 
          finish this then Disney will distribute via the network.

    * Disney's Stage One Plan

      Disney's plan for stage one is to have the project as the export 
      unit and to work on it on a server basis. So you can save a 
      project then distribute from a server. As someone pointed out a 
      project on the wall could be from somewhere else, say a thumb 
      nail. Animated? Yes. {JMM asked if the tumbnail could have a 
      protocol and be intelligent, you've only got a few seconds to 
      peak someone interest and if it's smart versus just being an 
      image then you could do more}

Got to see some of CREATE (web views are where STP?) Pictures folks?. 
Also got to see the world class recording rooms. STP related that they 
had good expenditure on sound proofing and equipment the founding 
professor spend grant money on infrastructure versus computer 
equipment which goes obsolete from year to year.

Back to sorting the work. John Sarkela

    * Shrinking the image is wrong, we need to start with a bare 
      image, then grow it. The key idea of modular, or declarative 
      Smalltalk to build an image of Smalltalk from nothing. The 
      programming environment is full sized, but the running code's 
      namespace is small. The trick is you work with a semantic 
      version of the code and it runs in an environment separate from 
      the image you are building the application in. {A keypoint was 
      made that we start small and grow large, not the other way 
      around. Dan Ingalls pointed out the paring scripts get broken 
      each revision and repair is painful, a new way of thinking is 
      needed)

    * 4th estate has looked has looked at the ANSI Smalltalk stuff and 
      built repository stuff and will soon release a system that 
      allows you to declare a set of Smalltalk classes, and 
      initialization information then build up an environment. Sarkela 
      showed us this system later in the weekend. {I believe he said 
      it was being open sourced}

    * Dan Ingalls points out that they have images that allow swap 
      in/out of functionality. For example the current release can be 
      swapped out to 1MB in size. As functionality is needed then it 
      is swapped in.

    * Team V, Envy tools are needed to allow you to version stuff. 
      Change sets are great, the dual change set is wonderful, we'll 
      raise a toast to Ted and Scott for this functionality.

    * Closures: Rules for ansi, rules for squeak, don't match. This is 
      something that needs to be fixed.

Tim Rowledge

    * Exceptions: Authors use them, followers don't.

          o Dan Ingalls said that Exceptions are in flux, Craig did 
          one, the 4th estate did one. Squeak Central adopted the 4th 
          estate one, but there are problems, non-local returns, a fix 
          is coming in next VM. Not used everywhere. Both use stack 
          stitching. o Steve Pair noted you can do a better job by 
          marking the stack. o A short term decision was to adopt 
          Craig Latta's fix. All this affects a Jitter implementation. 
          A cleaner implementation should be done after JIT 3, perhaps 
          using stack marking.

    * Debuggers/Browsers

      Why two, they should both be the same. Scott Wallace is looking 
      at integrating the browser with the debugger, start with a raw 
      object, then explore/create from there. Something is coming. If 
      you want to work on it talk to Scott. Scott.Wallace_at_disney.com 
      {Hint takers?}

However if we want to change the tools then this is a big job and a 
issue of freezing everything. Dan Ingalls pointed out Tim's VM work 
needed to be folded in, along with Jitter. Lots of critical low level 
work. Tim pointed out that most of the work with his VM was simple 
expect for one plugin. {JMM On Sunday Tim did review the plugable VM 
work, but your author was busy doing something else, Tim hopefully 
will relate more information}

Dan Ingalls pointed out discussion from a gathering like this is 
valuable. This can change direction from some of the original 
direction they were pursuing.

    * Native Threads

      Not easy, no reentrant VM. Do we need them. Smalltalk-X is great 
      for this. Lots of multithreaded stuff can be made serial. 
      However the issue is how do you do multiprocessor support! 
      Running multiple images and share memory? JMM stated time is 
      short, although machines are becoming multi-processor is that 
      important to Squeak? Remember the first 10 minutes.

    * Someone pointed out there is work going on sharing resources 
      between Squeak and other applications, ??? will post something 
      on this later. This allows one to allow threads within a Squeak 
      image talk to each other, simple but powerful. Works under 
      Linux, should work for windows/Mac.

    * Prototypes:

          o Good or Bad? Some discussion.

    * Dan Ingalls pointed out that one day 10,000 people could 
      suddenly want to try Squeak out. Gee we need to sort this out, 
      what is the biggest bang for the buck. Tim R tried to reorganize 
      our list of issues into:

          o Object Engine o Application Framework o User conveniences 
          o Novice experience.

    * We need some authors! "A taste of Squeak" These aren't technical 
      books, the target is different.

Dan Ingalls
Remote projects should allow you to link to content on the internet.

We need to clean up Squeak.org. We need to cleanup a release image. 
The user experience should be a good experience, you've only an hour 
to get a convert. If Squeak interest suddenly blooms then the PR is 
very important. If a bunch of tech writers for magazines want to spend 
a weekend reviewing Squeak then they should have a good experience. 
The Squeak Look and Feel should look mostly like stuff today. If they 
look unlike something today then a user is in terror.

Could we have a video, or a screen capture. Marketing material is 
important. Someone needs to assemble this and make it available. STP 
offered to build something for viewing. Tim R thought he could get 
Adele Goldberg to do it. {Both these are action items guys JMM}

JMM suggest we should have a book "Fun with Squeak in 24 hours."

Dan Ingalls said all this is valuable

DVD is coming technology, CDROM quicktime, etc as light weight 
publication can drive heavy publication like O'Rilley.

Laurence Rozier then discussed where does Dan Shafer sit? Dan has lot 
of exposure as a speaker, has professionally interested in being an 
promoter for Squeak. But we need to address the first hour experience. 
If we can do the polish then we can get the exposure. So how should we 
proceed?

What does Dan Ingalls want to take home? The top layer isn't hard to 
do, but it makes little difference to the stuff under the covers, like 
callbacks, multi-threading. But it will make the user experience 
better. It should look like a marketing slide when opened. Dan is 
happy with were things were going in the Squeak-end. {JMM think -> 
cake icing, worry about contents later, carrot, banana?}

It was aksed what is content size from a screen resolution? Disney 
does something like 342x512? to fit content into browser panel with 
advertising etc. Some discussion, no resolution? 1024768?

Marketing? Declare it a project. See who signs up. {who}

JMM stated Gnome, need an interface to or from us.

Some pointed out lots of applications are just simple business stuff, 
they want a page form layout. Some trivial hooked up logic. Fabrik 
answers that.

At this point we retired for dinner. STP arranged for the entire 
group, plus some spouses to met for dinner were we all had a wonderful 
time for many hours til very late into the evening.

Did you know Dan has an interest in weather stations?

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.

    * Jim Bean QuickTime in Squeak

    * STP CREATE Music

    * STP Siren/OperaBrowser

    * JMM screen update delays

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

[OOPSLA 1999>
http://www.smalltalkconsulting.com/papers/tipsAndThoughts/OOPSLA19
99.html]

[SqueakEnd 00>
http://minnow.cc.gatech.edu/squeak/1235]

[Camp Smalltalk 
CS1>http://wiki.cs.uiuc.edu/CampSmalltalk/The+CampSmalltalk+2000+story]

[Camp Smalltalk 
CS2>http://www.smalltalkconsulting.com/html/CampSmalltalk2.html]

[OOPSLA 2000>http://www.smalltalkconsulting.com/html/OOPSLA2000d1.html]

[Smalltalk Solutions 2001>
http://wiki.cs.uiuc.edu/CampSmalltalk/Smalltalk+Solutions+2001+Tri
p+report]

[Camp Smalltalk CS3>
http://wiki.cs.uiuc.edu/CampSmalltalk/Camp+Smalltalk+%40+Essen+ESUG]

[OOPSLA 2001>
http://wiki.cs.uiuc.edu/CampSmalltalk/OOPSLA+2001+Trip+report]