Nov 9, 2002.

(OOPSLA 2002) Tuesday


back to Monday

Note on Nov 11th 2002 this paged was moved to a Wiki so you can edit it there. Please read it over there, this copy is here for historical reasons. http://wiki.cs.uiuc.edu/CampSmalltalk/OOPSLA+2002+Trip+report+Tuesday


For most of the day I spent time in an workshop addressing how to build software that outlives it's creators. My comments after doing dueling words with Bobby Woolf was: "Software is not a dairy product" -"Which is unfortunate" I'll let the powers that be post the end results of the workshop since I had to depart a bit early to discuss a few things with some folks before the Squeak BOF that was to be held this evening.

S#, what’s that? Well if you had come to Camp Smalltalk @ oopsla 2002 then you’d know. So drag out those search engines and start looking. Don & John were busy working on a new VM. An ANSI smalltalk for .NET which is still unnamed. Right now they were building the Smalltalk library by wrapping and maybe later subclassing the .NET classes. The wheel is round already why reinvent things. In fact .NET gives great floating point performance numbers (it's a compiler thing according to Eliot), but has lousy integer performance because of the boxing/unboxing issues. At the moment they were writing the large integer code. No hints on when this stuff will be released.

One of the benefits of coming to Camp Smalltalk and OOPSLA is sitting down and discussing real world problems and I had an interesting discussion with a fellow from Cargill who was working on some VSE, VW and Corba issues. This was just a small overview of the conversations since about 30 folks were sitting around tables at this point discussing various items. I even got to see a tablet PC, and hear discussion about the Smalltalk support for that platform.

Between discussions and meeting old friends I've wandered over the poster sessions and joined some of the interesting discussion round a presentation on a simulation system for kids, it's hosted on Squeak eToys and I was having so much fun that I missed the Squeak Module discussion.

mm the high tech toy for some of the folks was the roomba http://www.irobot.com, maybe we are getting older, but I was told it really works, and it's a real AI application by some retired folks from MIT.

Tuesday Night Squeak BOF

Doug Way ran the meeting. I must say it was most interesting because none of the SqC group was in command and we had a full evening of various folks, some of which I've not heard of, give demonstrations of products I've not heard of, or seen before. So Squeak is growing in surprising ways and becoming quite self sufficient.

Martin McClure talk
A Squeak application for the Flying Karamazov Brothers.
Now I've seen this demo before so I'll redirect you to Camp Smalltalk CS4 Colorado trip reports via
http://www.smalltalkconsulting.com

Some additional information I'm not sure I heard in Colorado.
A blue screen is displayed on the projector and read by the camera and the read light levels are normalized. This reduces edge to edge intensity issues. There was confusion about the sun, so now the sun looks like a sun, along with better use of some of the Open/GL since Martin has a better understanding of it.

SqueakMap
Göran Hultgren

Problem today
SharedStreams, or Spaghetti tracers? What are they, and what is the release?
In how many ways can you install a Squeak package.
Image bloat, Celeste, Scamper, IRC, yadda yadda.
Shrinking an image: "Abra cadabdra..."
The image is not modularized.
Lacking Namespaces.
Lacking Team development.

What is SqueakMap?
A catalog of code packages for Squeak.
Inspired by Debian, GNOME software map etc.
There is a master catalog running on the Internet, that location might move.
Clients maintain a local mirror using an incremental update process.
A Web UI is available on the master,
map2.squeakfoundation.org/sm

Two morphic UIs are available:
SqueakMap Browser, SM Package Loader.

An example of the SM package Loader was given. Shows current packages, with clues to version and if you can load them or upgrade them. Other context menus are available to do filtering and incremental updates, and refreshes.

Each package has a category list, the list has 29 entries and is very static to control explosion of that feature. This lead to some discussion about which categories a package would be asked to choose by default.
In the bottom panel we had information such as Name, summary, author, maintainer, version info, comments, homepage, description etc etc.

The SqueakMap browser, kinda like the envy browser. Some discussion about the tree browser, but note the package can appear at a leaf in various places in the 8 rooted tree. More discussion about the visualization of the data and what the different panes are.

What is it not?
[Oops your scribe miss that]

How does it work?
The server has a domain model with a transaction counter and each change is logged in a change log.
It has a web UI written using Comanche + httpvew).
Add/update package registration.
Add/update repository registration (will be dropped).
Change the category tree (admin).
It can serve updates to clients based on their last known transactions numbers, gzipped.
The client is running the exact same code for the model.
Working on a mirroring scheme to mirror databases, should allow private information only to one server.

What problems does it solve?
Finding packages and the latest release.
Installing packages -single click installation:
.st, .st.gz, .cs , .cs.gz
DVS .st, st.gz
.sar (something new)
.r
Breaking out applications from the image can be done TODAY!
We can start building images instead of shrinking them.
(but we need more to do this efficiently, right now we start with a 6MB image that has all the tools).

What problems doesn't it solve?

Modularization of the image.
Namespaces. Apart from the package namespace in SM.
Shrinking. We still need to produce a Kernel image.
Storing packages centerally. But we can add that.
Team development.

The next step?

Adding versions of registration cards/release.
Adding dependences between packages.
Added 'feedback streams" and "update streams".
Adding annotations.
Tons of other small and little things.
But squeakMap will always be
A catalog only!
Be open for all package formats! Ginzu?
Make sure to not force anybody.

WebPage
http://minnow.cc.gatech.edu/squeak/2726
to load squeakmap on your machine with 31 odd packages to add to your image.

Questions?
SqueakMap in 3.3a?
Well yes but when we thought about this we realized we should really do the bootstrap step versus loading it all in an update stream.

Suggestion:
Do this in Squeak 3.4
Yes

Hey great tool! & Thank you for talking!

Ned Konz
Squeak Archive Format.
Several formats, that is a problem. Now I had a package to install, icons, changesets etc. But what to use to do that. Well ok now a zip file. That got complex. Ok after discussing things, how about a new file format. So a very informal format which allows you to perform a install -preinstall, install-postscript, and install step. SqueakMap to load the .sar. then you can build .sar files or convert DVD to .sar.

No questions.

NetMorph (http://swikis.ddo.jp/NetMorph)
An intuitive mobile object system and it's applications
Masashi Umezawa, Kazuhiro Abe, Satoshi Nishihara, Tetsuya Kurihara

"We are doing the NetMorph development as an IPA Explaratory Software Project FY2002. Our project manager is Dr. Alan Kay." NetMorph is a very simple enhancement, yet powerful. People should be able to interactively build these scripts. Age is not barrier.

Normal Squeak EToys;
MyCar forward by 5
MyCar warp

Ah this is new: "warp" makes the MyCar network enabled.
So we switched the projector between machines (this takes time) and we got the car to move in a circle between two computers. left side of circle path on computer 1, right side of circle path on computer 2.

So lets look at warping

new etoy button, warpedIn & warpedOut [your scribe admits he didn't catch the fine detail here]

So how to identify remote client? This is done by a WorldMap that identifies other clients.

More examples of moving painting items between computers, then setting up a tennis game and attempting to
play with the two paddles with a 5 second projector resysc blackout. This was hard to do, but still it had very fluid graphical movement between the two machines.

MyCar forward by Joystick upDown
MyCar turn by Joystick leftRight
MyCar warp.

This allows you to put the car on the other machine, but the control relies your joystick.

Dog move toward Ball
Dog warp

So Dog moves towards the Ball.
Now put the Ball on the remote desktop, and go, then switch.
Dog moves onto the remote computer. Yea.

Ok that's all. Software will soon be in beta. Hope to release a robust version later.

Questions?
Communications protocol

STP (squeak transport protocol) a low level socket connection.

Question are you instantiating a full object, or a proxy?
[There was an answer I didn't understand it, you'll need to get the source.]

Seaside
For doing applications on the web. Not for doing high volume websites.

So model is once a session starts a piece of code runs from start to finish, even with a back button action.
These urls aren't bookmarkable. But it provides a nice model to build applications with.

So a browser, with a counter, and an +/- set of clickable buttons to increment counter up or down.
So the page has a state the counter variable. In seaside we've an instance var with a counter of 3,
back to the browser, decrement. The instance variable is affected. No surprises.
Also we can change the logic in the SeaSide image to increment by 2.

Ok now an example of the smalltalk browser in IE.

count = 0 ifTrue: [(self confirm: "Go negative?") iftrue: [self inform: "Ok we'll go negative". count _ -100]]

Note how the code is all in one method, but the confirm: and inform: work as expected, and we can use the back button to take a different path. Now the neat thing is state is rollback on the back button. So there this a copy on write tree kept on state. Lots more complex information was given here.

Question
what are you apply this to, and what for. What are the applications you are building.

Box office agents sales for ticket sales for a theatre was first usage. Now a booking agent for a hotel.
where to go next? I want a large component library for this.

No more questions.

Tim Rowledge, an application built with seaside.

So this application is my first serious web application, the HTML part was harder, the seaside part was easy and the product support was great. Now the problem domain was an accounting 101 textbook. Needed a website to serve up questions and grade answers and do scoring etc to assist students and schools with testing the students understanding of the text book. Sounds simple, this then grew and grew and grew.

So some demonstration of the application to show it's behavior. The screens presented depend on context, if the session is tied to the teacher, or the student. Screen is multiple frames, dynamic. etc etc. Oh and a time counter because it's a timed test. Ok, finish. now we get the feedback. Some of the questions have random initial values, and choices can be randomized with eye towards "none of the above" to reduce ability to cheat by have the answers by letter, or number values on a cheat sheet.

Questions
Do the teachers enter smalltalk?
Well yes/no. It's uses smalltalk arithmetic precidence, but you could write a parser, but it's easier to explain the rules. Most people can't do math anways.

Mmm the input form that collections information about building the questions does have some smalltalk looking syntax.

Display an input screen that the administrator uses to build a question screen.
At the bottom is a preview of the page, and a preview of the review page so you can see how the page will be built.

Onwards to a review of how to build the formulas in the questions.

Ooops managed to invoke a walkback in the image by using a bad method selector.
Fix that.

The Interesting smalltalk was doing the parsing of the textual items to insert the values from the seaside instances of the business model.

Also lots of issues for the application because we need to met rules around handycap access. Colors/highlighting, tags, non-visual users are to be catered too. A huge test suite is used to test for compliance to this government specification, it's a major piece of the work.

Stephen Pair
The "Chango" VM
Squeak is only designed to support one type of persistence an all or nothing snapshot.

The issues are that it only allows as many objects as will fit in main memory.
All objects must be in main memory (consuming much more storage than might otherwise be necessary to support a given application.
Add-on persistence solutions exists but they all have limitations of one form or another and impose themselves on applications code to some degree.

Tried everything from nothing, to addons, to a LOOM like VM, lots of work so:
The Persistence VM is designed to address these issues.

What do we need?
Need fast become operation.
Trap when an object in memory is mutated.
Trap when an object in memory is accessed.
Some indication how recently an object was used.
Ability to set the identity hash of an object.
Ability to map multiple states to a single OOP.

Some details of how this was all done at the technical VM level. Actually I got to sit Stephen in a pub late Monday night and gets some preview of this information and hear some of the discussion about what was right and what was wrong about the solutions with Eliot. Things like
"On context activation, we load either the persistent bytecode set based on the header information, or the regular bytecode stream, so we run at regular speed for normal objects and only slowdown for persistent objects."

Back to the demo.
Now lets create a new Berkley database so we can store objects.

Question performance?
This VM is 50% of normal VM. This can be improved upon, mostly because I've not optimized anything yet, the new object model is very conservative/safe and unoptimized.

Ok, now we commit a change in one image, that change then gets reflected in the other image.

Question
How easy is it to use this.
(oops didn't hear the answer)

Question
Eliot How about guard bit in the class field, then in method cache failure you can fixup the right bytecodes for free.

Craig
My squeak machine is a pocketpc, 64mb of memory, and 2gb ram card, and huge battery that gives 24 hours of life. Alas squeak, linux, overhead is 64mb of memory when doing a snapshot which causes great performance issues. This weeks generation of machines are more in the 512MB range, but this equipment is < 600 versus > $1000

An example of Squeak at 1024x768 on the screen using sub-pixel rendering was given, not bad. Then we zoom in/out span etc. BitBlt handles this very well.

Working on
Squeak aware control from the hardware buttons.
continues updating of the display map to the screen.

[Your author notes we migrated from 9 inch mac screens to 24 inch flat panel displays, why go back to postage stamp size displays? Then again it's all very portable].

----
Connectors Framework by Ned Konz (http://minnow.cc.gatech.edu/squeak/1773)
A very visual example, hard to capture in text.

Can connect between morphs, even live ones on the screen, such as the blob morphic.
General purpose drawing tool to do connector diagrams.

---------------
Traits by ?

TEColoredCircle but it's composed of TECircle, TEColor, TEDrawing, TESerializing.
Browser uses color to show which methods comes from which trait (IE TEColor).

TECircle is TEMagnitude & Geometry

TEMagnitude is TEEquality

You first create Traits, then classes that use Traits.

This really reduces duplication and complexity. So we've done most of the Collections classes and remove much of the code. So for exampe TCollSequenceImmutable has 30 different traits.

Code is forthcoming.

Mmm I'll point out that during these talks Ian was busy working on some Obj-c issues with his unix based os-x . This was a bit distracting but very interesting.

Wednesday