ESUG Day 2

ESUG is really the place to be. There’s so much to learn about what people do in Smalltalk and it’s good to see the energy being put into Smalltalk by young people. Tuesday started off with Colin Putney’s talk on Monticello 2, from which I was a bit distracted by some production problems back home (greetings from sunny Barcelona, btw!), followed by Thomas Stalzers System Integration talk. Nice to see his Smalltalk-based home automation stuff is taking off. Seems he’s found a niche which is both fun and a place where nobody cares about what technology that stuff is written in, as long as it’s just good.

Another highlight for me was Esteban’s presentation of Reef. To me it seems most adopters of Smalltalk are currently working on the same problems: server side object representation of their widgets. Everybody needs a way to add validation to fields and display error messages as well as conversion logic and such. The next step then is Ajax/Javascript integration, which then brings up the problem that rendering a piece of Javascript code means transporting HTML-IDs back and forth between the server and the browser. So what we all typically do is look for a clever way to produce our widget objects ahead of rendering, and then make them carry their html-ID and make these available fro rendering Ajax callbacks later. Every now and then I thought: well, that’s about the same thing I did in my application, or: I had the very same problem here. And we all have the same problem in our design of this widgetry: we concentrate too much on the form input elements, but for the javascript stuff, everything on a page (and by that I mean every single html node in the DOM tree) we also need a div’s or span’s ID to feed it into the js render machinery. Then there’s the problem of how to render a comonent with its surrounding DIV at “normal” rendering time and just the DIV’s contents when replacing it in an AJAX callback. So there is a pattern here in what I’ve seen in the Seaside related presentations at this year’s ESUG.

The next talk gave us an overview of what Esteban is doing with Reef in their ibizlog application, which was also very interesting.

Eli Green’s talk on platform integration was just plain cool: he’s building a tool in Objective-C that allows for easy integration of a Gemstone server with native Cocoa Aplications on a Mac. He built a little Cocoa Application in the XCode Interface Builder that allowed displaying and managing data of the Seaside Sushi store on a Mac natively. What I mean by that is that he used an Array controller in IB to display the contents of a Smalltalk Collection from Gemstone. There was no ObjC-code to write in order to add new sushis to the inventoryl, just the usual drag&drop and wiring stuff in IB. Just to prove the date was really being stored in the Gem, he instantly refreshed the sushi store in his web browser and the added sushi was there. Very cool stuff, and open source. Not to mention that Eli had a very nice way of presenting. It was fun listening and watching!

The last talk for the day was Veronicy Uquillaz Gomez showing Torch, a tool for visualizing changes in code. The idea behind all that was to make integrating changes committed by several code maintainers easier. She’s come up with a very understandable way of visualizing changes in packages, classes and methods and presents them in a so-called dashboard. After a short introduction of what the several boxes and lines mean, we had a little quiz: what has changed in a body of code, just seeing the dashboard (no code changes). I must admit that the first one or two were really hard for me, but once you get the pattern, you can really see what the changes to a package was about, like: well, this must have been a message rename, because in all methods calling this method, there was a little removal right before an insert. Amazing.

The talk on what we can learn from Ruby was cancelled, unfortunately.

We’ve had a glimpse at a few projects in the “Show us your project” session, and instead of trying to remember specifically interesting things I just say: wow, amazing what people are coming up with or working on!