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]