Just got back from Smalltalk Solutions in Toronto. I thought about blogging about some of the sessions, but others are doing a much better job of that – you can see some posts at Planet Smalltalk, particularly at James Robertson’s blog.
My interest in going to Smalltalk Solutions was to learn more about the community, and how people were using Smalltalk these days. Also, to find out how people were using Seaside for Web development. It’s not that I’m not happy with Rails, but for some things, Seaside does work better. The most intriguing thing about Squeak, for me, is that you can have your entire stack in two files, which means you could easily install a local Web server for offline access to a database. If you use something like Magma, you can include the database server in the image. That’s a whole lot easier than installing Ruby, Rake, Rails, Mongrel, and MySQL for something equivalent.
I learned some interesting things at the conference and met some great people. I would have loved to learn more about Magma, and the SQL interface to it that Bryce Kampjes mentioned someone is working on, but there weren’t any sessions on it. Here are some highlights of sessions I did attend:
- Alan Knight presentated GLORP, an ORM that supports several databases, particularly PostgreSQL. Unlike Rails’ ActiveRecord, GLORP was designed to map classes to arbitrary tables. So there’s a lot more flexibility, but it’s also a little harder to setup. I generally prefer AR’s way of doing things – following conventions so that you spend as little effort as necessary doing configuration. However, GLORP isn’t that much harder to use, and for accessing legacy data, I would guess it’s a lot easier, based on my experiences trying to use AR for that. Apparently, the latest version of GLORP is not on the Web page (as of the presentation), but in the Cincom repository. Alan said he’d put a more recent version online soon. The Squeak port is apparently reasonably up to date and is available on SqueakMap.
- Avi Bryant and Andrew Catton’s presentation on Ajax in Seaside didn’t go quite as planned – most of the people who showed up didn’t know anything about Seaside, so we spent the first half of the tutorial session setting up Seaside. The person who was sharing my laptop didn’t even know anything about Smalltalk – she had come to the session wanting to learn about Ajax in general (she wants to use it with PHP). It was interesting to hear Avi’s and Andrew’s thoughts on Ajax – although Ajax is pretty easy to use from Seaside (there’s built-in support for Prototype and script.aculo.us), they use it minimally in Dabble. However, Avi did mention to me that with Ajax there’s less need for the multi-page workflows that Seaside does so well using continuations.
- Avi’s and Andrew’s talk on Dabble was great – it’s very interesting hearing how an innovative startup got started without any external funding. It was nice to hear how they were able to fund their very interesting startup using consulting, which had largely come from a job they had quit (they were so productive with Seaside that the client wanted to retain them as consultants). They’ve done no marketing for Dabble so far, but they have quite a bit of interest – almost all of it from blogs and user group meetings. Right now, they’re running on only one server (but prepared to expand), which means Dabble in practice uses fewer resources than originally estimated. They’re not using a database backend yet – their customers have very little data, and they find that using a Squeak image for each client is working well. It was also interesting to hear that their infrastructure (launching VMs on demand, etc.) was built in Ruby.
- Bryce Kampjes gave a presentation on his Smalltalk to machine code compiler, Exupery. He thinks he can get some Smalltalk code to perform as fast as C. Most processors can handle more than 1 instruction per clock cycle, but typical C programs only send one instruction; those extra slots could be used for the overhead of Smalltalk programs, leaving the execution time nearly the same. It may have disadvantages when it comes to power consumption, but for some server side applications this would be great.
- Karen Hope presented a talk on converting a Smalltalk project in Java. I’m not at all interested in Java, and originally went because she was the only woman presenter in the Smalltalk tracks, and I wanted to support another woman in the field. Turns out it wasn’t quite what I expected – she said from the beginning that one of her themes would be Smalltalk: Good, Java: Bad. And I thought it’d be a guide on how to transition to Java … ;-) She brought up a host of interesting issues when management decides (independent of the technical staff) to transition to another technology. Also, porting from an untyped language like Smalltalk to Java offers a lot of intersting challenges – a lot of Smalltalk’s power cannot be expressed well in Java, so some things just didn’t translate over easily. Karen’s experiences resonated with a lot of people … her session went well over the allotted time, and there was a line of people waiting to talk with her by the time I left.
- Lukas Renggli presented Pier and Magritte. Pier is a content management system and is built on Magritte, which is a “meta-description framework” – basically an object store that allows you to see objects in a variety of ways. I had heard a little of Pier earlier from Brian Rice who’s thinking of using it for the Slate Web site. Brian said it compares favorably to Plone, which I’m familiar with from other projects. I found the talk interesting, and Pier is certainly very flexible. However … it’d need a bit of work before I could use it as a CMS. The main reasons are URLs and scalability. Pier is capable of using nice urls, like http://example.com/this/is/an/url, but appends a long Seaside session string. This probably isn’t the best for Web SEO, and is hard to bookmark. Worse, though, is that Pier, as is, is difficult to scale. Several people suggested putting a cache in front of Pier, but the problem with that is that every time you get a cache miss, that’s possibly another session. If you have a lot of sessions simultaneously, and multiple entry points to your Web site, this could add up. Lukas suggested creating a visitor to create static pages. I think maybe extending Pier so that it saves static pages would be good – most CMS pages are dynamic for editing, but not for viewing, so that would be appropriate. One thing I found a little interesting – Lukas developed Pier without much influence from other CMSes. On the one hand, Pier could be improved a bit from looking at the features that projects like Plone, Joomla, and Drupal offer. On the other, Pier has a bunch of innovative features and is designed to be easily extensible.
I found the conference pretty educational, along the same lines as RubyConf. I probably would have gotten more out of it if I hadn’t been getting over a cold, but I was happy I went.
Some ideas for improvement: It would be great to choose a venue that had wi-fi and power outlets for laptops. The Toronto Metro Convention Centre offers vendors wi-fi for $395, but that’s a bit more expensive than most conference attendees would want to pay! Also, although it was interesting combining Smalltalk Solutions with LinuxWorld and NetworkWorld, I didn’t see much cross over. I did sit next to a LinuxWorld attendee who went to Avi and Andrew’s Ajax w/ Seaside presentation, but she attended that because she thought it was a general Ajax workshop and she wants to use Ajax with PHP. Maybe combining forces with someone like Ruby Central would make more sense, since there’s a bit more overlap of interest – many Rubyists are also Smalltalkers or ex-Smalltalkers, and vice versa.