The projector not talking sensibly to my computers - plural, neither of them was able to work sensibly with the projector, even though one of them had 3 months ago. Eventually I managed to get one to do something reasonable enough to do something.
Definitely embarrassing. Still I managed to talk a bit about metaobject
protocols (MOPs) and how the Groovy MOP not only uses metaclasses, but also
looks for the method
invokeMethod in the object itself as part of method
look-up, and how this allows Builders to be constructed almost trivially.
As a mentioned in the entry for the last session I did, sessions such as these are not really the place for heavyweight presentations, so although the idea was to ensure everyone understood how Builders work in Groovy, it was a fairly light talk and the slides I used have next to nothing on them. However, it seems reasonable to make them available, so you can get a PDF of them here.
Groovy has a good selection of Builders: SAXBuilder, StreamingSAXBuilder, DOMBuilder, StreamingDOMBuilder, SwingBuilder, AntBuilder, to name just a few of the obviously most useful. Since I avoid XML as much as possible, SwingBuilder and AntBuilder are the ones I have most familiarity with. SwingBuilder makes creating Swing user interfaces so much easier than writing Java code, and AntBuilder has a plethora of uses, some of them even associated with managing builds. Of course, I only use Gant now for managing builds using Ant tasks - it saves having to work with XML!
I am scheduled to give a talk on Gant at Grails eXchange, so if you want to hear more about how to manage Ant-based builds without using XML, come along. In case you weren't aware, Gant is used within Grails for managing all the activities.