Saturday, November 15, 2008

Smalltalks 2008, Friday notes

Here are the notes for Friday at the conference. The day began with Hernán Wilkinson's Key Design Decisions presentation, in which he provocatively addressed a number of issues we are all very familiar with. He made the case for immutability of domain objects, full initialization of objects before they can be used (so e.g.: by the instance creation method as opposed to by the users of the class), and a number of others. This made such an impact that the presentation was heavily discussed over lunch.

Then we saw Claudio Acciaresi and Nicolás Butarelli's work on a thorough refactoring of the Collection hierarchy using Traits. It is interesting that while they saw several advantages to this (such as the elimination of code duplication and the possibility to create more diverse collection classes easily), in the end they commented it was not a slam dunk as Traits do come with their own complexity.

After the break Carlos Ferro showed how ExpertCare (as initially described by Dan Rozenfarb on Thursday) manages to make good question suggestions for telephone operators receiving health related phone calls. For example, it would be good if the system helped determine when to send an ambulance because of an emergency in as few questions as possible. It is not obvious how to do this because, as soon as one examines symptoms, the body systems they affect, and the syndroms they may imply, choices are not clear cut much less evident. Nevertheless, the strategies shown by Carlos allowed ExpertCare to detect an emergency in a median number of 1 question, with a maximum of slightly over 2 questions on average.

Then came Guillermo Amaral's talk on percolation. He did not just implement a few algorithms. Rather, he built a tool to model solids as a lattice of points, connected by arbitrary edge patterns, and then used several algorithms and procedures to determine the probability with which the material thus defined would allow liquids to pass through. Most impressive. To begin with the tool was graphical and included visual representations of the lattices, the connecting edges, the probability graphs (including choosing the color of the curves and graph combination)... a lot of serious work which led to the verification of possibly original conjectures in certain scenarios.

After lunch we had a persistency block. We started with Esteban Lorenzano, Mariano M. Peck and Germán Palacios' talk on SqueakDBX, an interface to the open source database library OpenDBX. The idea of OpenDBX is to allow access to a multitude of relational databases via a common interface. SqueakDBX is the Squeak interface to OpenDBX, and as such Squeak can now talk to Oracle, My Sql, Postgresql, etc etc etc. This works so well that e.g.: SqueakDBX is faster than Squeak's own native driver for Postgresql.

Something that will be added to SqueakDBX is support for Glorp, which was quite nice because the presentation naturally blended with Alan Knight's talk on Glorp. We saw many of the features that make Glorp nice. For example, the mapping model allows to map objects to rows, or to inline objects in the row of another object (e.g.: for speed), or to save an object across many tables. Glorp can query this by examining blocks such as [:person | person name = 'Alan']. Much more complicated block expressions are possible. On top of that, Alan described Hyperactive Records, which are used in Cincom's WebVelocity product.

After that, I ran the Coding Contest's final round. It went very well because this time, unlike last year's, I didn't have trouble with having multiple active HTTP servers in the same image. Maybe it's because the lesson I learned in 2007 made me put in a number of automatic measures to prevent that from happening...

  • Image packaging stops any existing HTTP server forcefully. If after a GC there are still instances of them, image building fails.
  • The packaged image startup sequence kills any existing HTTP server forcefully again.
Also, I was quite happy that the participants did not find any bug in the contest. This makes the finals stressful for the organizer as well: basically the finals are a software release, and the thing has to work. If that means you get to fix the bug right then and there, too bad. Fortunately it went smoothly.

And the participants? Their reactions to the changes in the finals were varied and interesting. Some were getting positive scores within 15 minutes. One finally got a positive score in the last minute. One cursed in frustration :). The results are as follows.
  1. Guillermo Amaral and Guido Chari, with over 26 million points.
  2. Hernán Wilkinson, with over 2 million points.
  3. Diego Geffner, with no certificate.
Congratulations to all of them!... although note that Hernán Wilkinson cannot get a prize due to being in the Organization Committee :). Therefore, the 2nd prize will be awarded to Diego Geffner.

See you in a bit for the last day of the conference!

No comments: