|
|
|
April 23rd, 2002.
|
Smalltalk Solutions 2002.
|
For other Trip Reports see our Trip Report page
This is here for historial reasons, the story and any changes have been moved to a Wiki
Has it been a year already? Lots of changes in the world, but let's sit back and watch Smalltalk Solutions 2002, unwrap.
Most of the folks at early checkin were from Europe they had been in the city since Saturday or Friday based on flights from Europe as low at $300 or so. It was interesting to get their perspectives on the IT industry in Europe, some slow down but still a very strong need for senior IT people. It maybe true that there are lots of computer science students coming into the workforce but they lack the knowledge and experience of senior people, this lack usually leads to project failure or poor choices in information theory.
A bit of discussion of how Smalltalk was doing, with the comment that large Java projects were being scaled down for economic reasons, and Smalltalk work continuing on existing systems that should have been replaced by those Java systems years ago. We of course realized this years ago but economic reasons now have force management's hand to reconsider directions and why those Smalltalk systems are still running their businesses and perhaps changes could be made to support our business as those Java folks attempt to met their newly rolled back deadlines.
A rumor was floating that Heeg's Smalltalk Wiki had been up a year or more, well perhaps with one change done in real time. This was a source of amazement to people attempting to work with other WebServer technology where downtime for maintenance, failures, and issues is a day to day expectation. Somehow the ability to affect changes in real time without outages escapes most people.
Later in the evening a small group of us departed for great seafood and discussion of where Smalltalk was going what each of us was up to and why canadians get great pricing on internet access.
Monday
It's early! I'm sure you've heard this before. That is the problem with conferences on the east coast. At 7.00 or (4am for me) the lobby of the Hyatt is full of Smalltalkers looking for breakfast, meeting old friends, and discussing what lectures & workshops they were going to attend. The problem with your scribe having to talk later in the week makes it hard to concentrate on note taking, so you'll need to excuse my inability today to capture lots of information. Also having six tracks makes it hard to scope out everything that is going on!
So let's roll.
David of Totally Objects was mentioning how XP & SUnits had over the years enabled them to write vertical systems that required little maintenance, a boon to the bottom line. David as you know provides a news feed for comp.lang.smalltalk Hint if you want to read and post then his service offering to the community might be better than your existing solution. Although this is a news feed I should point out other mailing lists do exist for
Visualworks, Squeak, Smallscript, Dolphin and others, so the newsgroup only touches a minority of the real day today discussion about Smalltalk. Also IRC feed and the like exist, just hunt via Google.
From: "David Pennington" <david@totallyobjects.com>
"If you are on the internet to get your e-mail, you can post directly to CLS using news.totallyobjects.com."
After breakfast at about 8.00 a we started off with music and dancing of all things, a tribute to American.
Tom Nies CEO etc, of Cincom
A look to the present and the future. Our focus.
{I'm going to skip most of the commentary because it's very generic, an overview of the impact of the internet on manufacturing, and the high cost of ignoring IT information. Basically Cincom's offering for actualization of information to improve the knowledge base of their organization.}
After this talk the keynote speech was given by
Marco Marcen?
Marco Polo Explorers
"Think Naked"
(yes there is a book I'm sure)
I'll cover a bit of this, just because I was there and I was typing, however skip way down for the first Smalltalk news.
Marco
"That is when we were three years old we thought unencumbered, without intent."
Yes a PowerPoint slide with music. Could it be unencumbered mp3?
Thinking about the problem. The client wanted:
"Toughest lantern on the planet"
Looking about, Oh caterpillar equipment.
The Energizer Hard Case lantern. Kinda modeled on CAT equipment look/feel
Yes you can really drop it.
More slides pointing out his achievements.
Hey when we were young we were all genius. We learned to walk and talk, and have accents. Hey this is really great. But then we create this set of marbles, then we lose our marbles.
Why:
Fear -> first fear of fire, but then fear of NO!
Hardwiring
Accumulate and Regurgitate, -> we become non-thinkers.
Life makes you numb
All this makes it hard to be a thinker, so how do you get that four year old feeling back.
So
Wear your cape
Think of Super Heros.
Become a Blockbuster, no not the video guys. Hey kids build blocks of towers, then they knock them down.
Cheat, yes kids look at the neighbors papers.
Show & Tell, yes they want to!
So wear your cape!
Fear again, you get "The Look"
It's not what you think, it's not judgement, they're perplexed. They are trying to understand what you are doing.
So lets toss out a few hundred foam rubble balls that you can use to pummel those that give you the look.
Getting the look is good.
Small teams always outperform large teams {yes us Smalltalkers already know this}
If it Ain't Broke, Break it!
Mess with the Sacred.
People will fight you, suspect all belief. Mmm don't source from mars, but break things.
Inappropriate Use of simulas. Kids eat the dog's food. Well we don't do that anymore.
Wow it's a Cow!
Diversity of people in a group is good.
A word chain game.
Shoe and word transforms to cows.
Mmm also stupid chicken. So how did we mange to move an idea from shoe to worms. {Sodium Ryothobate? Ground up worms in hot dogs}
His dad invented diapers as we know them today.
Diapers, from rectangles of cloth to today, lots of detail and brain chaining, not a defending of the idea.
Mountain Dew wild cherry, or should it be named "Code Red" which appeals to 16 year olds.
Need to invent ideas that appeal to your target group.
Also need to stack the deck and have the all the people present you need to come up with the idea.
{Ack, batteries, batteries
zzzzz, no handy wall plug}
So let's skip a bit here and get into some Smalltalk.
Yes the talk was good and thought provoking, but somewhat more centered towards manufacturing.
Hey ensure you out loud voice, versus secret voice.
{Disconnect and jump to Michael Rueger talk about:}
-------------------------------------------------------
Michael Rueger
Squeak on the web.
The original challenge:
Squeak at Disney OnLine.
Issue with all these diverse web server technology.
However:
a) A real website is millions of people hitting it everyday.
b) Testing is a formal process.
So note that the Squeak mailing list is
Dynamic, frothy. Not workable as a real website.
So there was lots of learning to do to understand what a real web site was.
c) Security!
Hey this is a real issue, need to protect the user (ie kids) from others.
Need to deal with firewalls, at Disney and at clients (ie schools).
So we offered Squeak as a plugin application.
Size matters
Who -> the typical AOL customer, back then machines had low bandwidth, memory etc.
AOL "optimizing" download time
28.8 via AOL, browsers from 2.0 onwards, maybe even 1.0.
AOL was smart about downloading, and caching, and messing with data.
The good news:
Embedding is straight forward.
Your scribe here will note the slides were done in Squeak, Squeak as a plugin in the browser in fact. A good example showing that it actually works.
Running Squeak as a plugin uses the "Standard" Netscape plugin API. So for example we want to click on a hot link in Squeak to invoke mailto: to get a mail message also uses Get/Post/Request logic.
Platforms issues
Same API, but platforms each had issues.
{Your scribe will note he worked on the macintosh plugin for SqC, it was really painful to resolve the browser incompatibilities, especially in the full screen logic}
When the standard is NOT the standard.
Microsoft pulled the netscape api standard from IE on windows.
Running Squeaklets
A submarine game was built, hundreds of users 7 days a week at Epcot. From a stability viewpoint this was great.
An example of loading the project was given, the embed tag allows you to pass additional tags, so you can for example auto-load a squeak project when the plugin starts.
So for example, a small snippet of code to launch a browser on Integer.
More examples of how to fetch parameters from the embed tag when running Squeak.
Running "complete" applications
Squeak is 30MB, it has everything.
But we need to have stripped down image, 1.2MB for Disney Online.
Squeakland.org is 5ish MB, since it has tools etc in it.
Given we have a small amount of code, we then have a loader class CodeLoader which allows you to download source files, file them in, then execute. So for example downloading the PuzzleMorph.st file, then getting some Flash files. Disney has some neat artistic Flash files. Then build the PuzzleMorph, using the code and the flash files.
7 lines of code, but blew the minds of the Disney online people because of how morphic and flash work together.
Keeping out the bad guys
SandBox
Run arbitrary code but can't get outside the sandbox. Mmm allow any code to run.
So in non-safe mode we have full access to everything.
Code signing
As projects are saved, they get signed. On loading the signature is checked.
If code is signed with a foreign signer, then turn sandbox on.
Issue in a classroom is that signer is by image, that presents problems.
This is still be working on.
Firewalls
Squeak sockets could have problems with firewalls, proxies etc.
P2P
Can't do that with a deny access firewall, need a third party,
but it's not really a Squeak issue. Look at new internet config class in 3.x
Good talk, too bad the technology wasn't rolled out at Disney Online.
-----------------------------------------------------------------
Star Browser
Roel Wuyts
University of Bern, Switzerland
No this isn't StarSqueak, it's the Star Browser: Classifications in Action
Roel:
"Not a real research project it was done in my free time. Wanted to make my work environment better. Whiskers browser is neat, but what about VisualWorks."
Started out as the lightweight classification browser, but now it's called the StarBrowser.
Basic Usage;
Operations on classifications
Extending
Hey no point to reinvent the wheel, ie. Refactory Browser. I want new functionality. Want plugability so I can plugin the editor of choice. So on the left a tree of code classification, on the right the Refactory Browser as a plugin. {Actually a subcanvas for you VW folks). Then a toolbar to expose functionality.
An empty classification tree. (Root)
So clicking root brings up the classification, then I pick the classes I want in this tree. Now add a subclassification, and some classes. Another option {which your scribe missed} to add a smalltalk block that shows expectations of a calculation.
Feedback, a window that shows what classes/methods you have visited and how often.
Also the ability to add objects, so for example building a Singleton. This helps consolidate the information for a project.
Some examples of how you can change editors for an item. So for example switching from the Refactory Browser, to a UML editor.
More functionality to union or add parts from/between Trees. Note that if you have two Browsers up on the same project then they will remain visually in sync.
The Browser also deals with issues of looking for sends of say add: within the tree, versus within the entire image. This enables you to keep context, versus losing it in the image clutter.
The Browser api is very simple, based on the Visitor pattern, at which point we progressed into a discussion about how to register an editor with the browser, then onto showing how to add an itemLabel. We added a new class to build item labels, which just returned a string constant. So as you see it makes it easy to modify all the details of the browser to suite you as a client. Some more examples, oops we managed to make a typo and broke the browser. Array does not understand error. {Hint fiddling with your browser environment on the fly can lead to unexpected issues and confused images}
I would think it would be easy then to do themes. Roel mentioned he was working on the ability to export/import a project.
Your scribe asked about export/import of a configuration, not there, but information is in dictionary and classes, so it's quite feasible.
Andreas is considering porting to Squeak.
--------------------------------------------------------------
Slavik Zorin.
Web enabling a large scale Smalltalk client/server application.
Synchrony systems inc.
An experience report, not the same details as Ed's talk.
Smart Thin Client
Our experience was VisualWorks was fast, efficient, and stable. There was some GC work
Rich response user interface
Comprehensive, easy to use development
Straightforward initial installation
Streamlined application upgrades
Bandwidth efficiency.
Facilitate evolution.
Making application that can evolve.
Mm think of a graphical dumb terminal.
Additional Requirements
Multiple platforms, screen size varies (PC, PDA, phones)
Client-side state during and over sessions offline support
Integrated security
Real-time event streaming
Desktop integration.
Ok what are the industry solutions.
Browser based DHTML
XSLT/XML
Java client
.NET
?
So how do these solutions address the key requirements listed above.
Ok, I'm rushing I actually want to give a demo of this stuff and our solution.
HTML widgets aren't functional enough
Javascript business logic is ugly.
No UI framework
Client-side state is difficult to maintain - need to reload an entire page to refresh the data.
Style sheet programs are ugly.
XSLT/XML has clean separation, but not functional enough, lots of Javascript, no ui framework, client-server state is difficult to maintain.
XSLT stylesheets are difficult to develop and ebug
Works only with recent version of IE! Browsers issues!
Java client
Requires Java expertise and lots of work.
Competing widgets
NOT thin.
Deployment and browser compatibility issues.
Locks into using client-side Java
Mmm I should point out that Smalltalk does have a nice plugin story.
Microsoft .NET
ASP.NET makes it easy to develop HTML interfaces
ASP.NET components still require whole page to be regenerated.
Locks? You into a Microsoft environment. Do you want that?
Other emerging technologies, ---
So our solution is
Architected to make UI development easy
There is a gap in the industry here.
Even in Smalltalk, lots of expressing interest in.
So please could we make all that managing way simpler.
Layout of UI should be separate from behavior. This allows you to
Change the layout without impacting the behavior. Layout translation can
Be transparent.
Sizzle - UI container support multiple client execution environments
Architected to facilitate evolution
Open and based on standard technologies.
Alternate Client runtimes
Client side Java runtime
Smalltalk runtime
Browser based runtime with Java/DHTML or Smalltalk plugin
Browser based zero deployment runtime (DHTML/JavaScript)
Ok lets look at some code snippets. Stop by our booth for more information.
A typical client screen, for a movie rental store.
Ok, first we do need to name each field.
There is code then to declare the page and add the items to the page.
Then binding information for say Title -> item title. I'll note the binding information was either object message sends, or embedded Smalltalk blocks.
Note that implicitly we really indicate the dependencies and when we parse the information we can figure out the proper order of execution. Think of how spread sheets work.
This works really well and is quite feasible. You'll note this is implicit not of
This tedious work to indicate all the interested parties when an item get changed.
The interesting thing here is that all this inter-relationships is parsed out, versus explicit declarations. Think of toplink, all this mapping to get that data from relational tables to the object model. We want to do the same thing object model to the UI interface.
Note we found that complex calculations for validation are on the form, versus field level, so we just pass the data up and let the server deal with it, then feedback to the client for the logic there to indicate the issue.
Again note we never talk to the ui layer, just to the adapting layer. Hey why do all this laborious coding to manage the UI layer, let alone reuse code for constency on behavior across forms.
Ralph gave me a quick overview of his presentation:
Of anyone can teach Smalltalk the extreme way.
Since I and Bill Rodgers had arrived in the second half, and found he had completed the presentation.
Ralph many many years ago learned Smalltalk from worked from a Smalltalk book.
Not the way to do it.
Now lots of students, even some remote, in a class room setting, still with a book.
But a better way of course is to do pair programming
This really was amazing. We did a by the book XP experience.
We used Squeak. Interestingly enough only one participate knew Smalltalk.
This was a surprise. So for the first week we did one on one to learn Smalltalk.
At bit of back tracking to talk about XP for Bill R.
Ralph explained what XP was, usually pair programming is peer with peer
Rodger was a new Smalltalker, he felt Smalltalk was the greatest thing the world, and since the conference was here and he was here he was attending his first Smalltalk Conference (I great thing).
Now in this situation, this is student and teacher. So the teacher should keep his hand off the keyboard (absolutely) The student must do all the keyboard mouse stuff so he can really learn it. The teacher needs to watch and figure out what the student is doing and thinking and give direction about what to do next.
Have a series of practical problems, little written material. Student paired with Expert, rotate Experts each day. Commercial applications are bad for learning. Too big, bad code etc etc.
Perhaps an approach of building a command class, then show that it already exists to show the power of code reuse.
Anyway spend a week working on toy application, then a month on working on an application, then a month later or so that person should be able to become a regular productive Smalltalk programmer.
On the CD is 3 examples, Yahtzee ( a complete example), Dollar works, military rank , and two more to be published later Money , Payroll, (and all these together)
Yahtzee, simple, small.
This is a real holdable application, they get positive feedback.
Link st-www.cs.uiuc.edu/users/johnson/LearningSmalltalk.html
A few folks in the presentation said they would try this on some friends and Ralph give feedback.
Ralph went on to talk about interesting places that Smalltalk is where technology choice isn't bias, like Key Technology and how French fries are cut and how Smalltalk makes all of that process.
For a 100 person project, the problem is management and project coordination. The language choice won't really make a huge difference. So Smalltalk in small projects in small companies is a very doable thing.
After this dinner was called and I talked to an old acquaintance Randy Y. about what was happening at this company and their use of Smalltalk in a process control environment. For them after many years, it was still Smalltalk.
Then off to catch the last part of James of Cincom fame talking about their internet story. This meeting had about 150 people in attendance and later broke up into a dinner back at that seafood restaurant again which had about 40 Smalltalkers underfoot. Great conversation, if you didn't come to Smalltalk Solutions then you'll never know what all the code names created for VisualWorks/ObjectWorks over the years are, and what they mean. Just corner a Cincom person before the show ends and ask them what the code name for 7.1 is, and what is engineerings cult movie? Do you know?
Oh and Eliot explained some of the new GC features/fixes in 7.0, which later sent me scurrying off to correct a slide or two in my upcoming talk for Wed.
Day 2 See the wiki link at the top |