Voyage en Antarctique

Part of the French course I’m following at work involves giving a presentation to the rest of the class (in French, of course!). Today was my turn, so I was to be found before work this morning, frantically putting together the finishing touches on the slides, and preparing my transcript.

Over the last couple years at work, I’ve given quite a few presentations, and I must confess that I still suffer from nerves every time. Giving a presentation in French however, causes stress of a new level of magnitude. Normally, I concentrate my preparation on the slides, and I don’t put together an exact text which I plan to present. Since my French isn’t fluent enough to allow me to speak off the cuff, I prepared a transcript for this presentation, which had the advantage of making sure I knew what to say, but the disadvantage of breaking up the flow of speech, and causing a higher level of stuttering than normal!

The presentation was titled “Voyage en Antarctique”, and gave some general information related to the Antarctic and some more specific information relating to the trip I will take at the end of the year.

CSS 2008 – Thursday – Comet and Bayeux

After my gui packed day yesterday, I have moved onto the communication end of things today, starting with two presentations by Filip Hanik on Comet and Bayeux.

The Comet framework is a part of the Tomcat servlet engine. The aim of Comet is to provide the possibility of asynchronous communication between the client and server over an HTTP connection. The presentation began with a summary of HTTP fundamentals, and the standard short poll and long poll paradigms which are usually used to implement async client-server communications. Filip then described the streaming approach which Comet uses, taking advantage of the HTTP protocol to provide an event-driven mechanism by which the server can push data to the client.

It is worth noting, however, that this cannot be used by JavaScript clients, due to limitations in the connections from the browser. The example he gave used a Java applet, implemented using the Sockets API directly.

Whilst this all looks pretty funky (and, yes, I do want to try it out myself), there are some disadvantages. The programming model is not simple, and it is hard to avoid multi-threading issues. Comet does not use a standard API, and is limited to the Tomcat engine, although Jetty and GlassFish also have provide similar mechanism (GlassFish is apparently more advanced). Some of the functionality of Comet is intended to be included in the Servlet 3.0 specification, however, and although this will not be as complete as the Comet implementation, it will at least provide a standard API across different server platforms.

After lunch, I attended Filip’s second presentation about Bayeux. Bayeux is a framework introduced by the Dojo foundation which provides a more advanced framework built on top of Comet. The advantage of using the Bayeux servlet is that it is far simpler than using Comet directly. Unlike Comet which does not specify a data protocol to be used by client and server, Bayeux is based on JSON, and therefore links very naturally to the Bayeux client developed by the Dojo foundation.

When discussing the future of the Bayeux framework, Filip’s concern is that the Dojo foundation do not appear to have a large developer community involved. It appears that other groups are also looking at solutions and that more initiative needs to be taken if Bayeux is to survive.

CSS 2008 – A little light relief

Hans and I can be found behind our computers in the mornings and evenings, catching up with email, blogging, and planning our schedules for the next day.

It’s not (quite) all about sitting behind computers. We went out before the start this morning, and again at lunchtime to take advantage of the good weather.

CSS 2008 – Wednesday – RIAs

Following on nicely from last night’s BOF, my main focus today was frameworks for building RIAs .

I attended presentations on JavaScript (“Becoming a JavaScript wizard”, by Bryan Basham), Flex & OpenLaszlo (“Applying Flash to Java”, by Dustin Marx), and Appcelerator (“Building RIAs with Appcelerator”, by Matt Raible).

Matt has already posted his presentation on the web, and I am impressed to see that some of the Appcelerator developers have already commented on his blog entry. I won’t therefore spend any more time on it, as you can read his views direct from the source. If you’re interested in what’s been going on at CSS, it’s well worth visiting his blog as he’s also posted on other presentations he’s attended. You can find his Spring 3.0 presentation there too.

Bryan Basham’s presentation on JavaScript was very rich, so he had to take it at a very fast pace. He began with a language overview, pointing out some of the features and idiosyncrasies of JavaScript. An interesting point for me is that while you can mimic some object oriented behaviour with JavaScript, the language is not class-based, but prototype-based. This is a feature which brings in a number of complexities for design and memory management. JavaScript is a very flexible language, giving the opportunity for a number of different syntaxes for the same idioms (e.g. defining functions), and also providing some nice features like closures. It is also a dynamically typed language. While there are benefits to this flexibility, I do feel, however, that the price is reduced readability and maintainability, especially across a large group of developers.

After summarizing the language features, the presentation moved deeper into AJAX, DOM handling and the benefits of using JavaScript frameworks, focusing on Prototype and There are any number of frameworks out there, and another one which Bryan mentioned that seems to be gaining in popularity is ExtJS. This was also backed up by a comment of Matt Raible’s at the end of his presentation “if you want to use REST, choose either Flex or ExtJS”.

Matt Raible has saved me a great deal of work, and also posted a great summary of Dustin Marx’s presentation on Flex and OpenLaszlo which goes into far more detail than I could go into here. Key points for me are that Flex is split into MXML, for building the presentation, and ActionScript for business logic. Additionally ActionScript is an object-oriented language with static typing. (By the way, both JavaScript and ActionScript are compatible with ECMAScript). His experience of starting programming with Flex was that it was remarkably easy to get started, and that the resulting code was very readable.

OpenLaszlo is a language which can be compiled to either Flash or DHTML. Unlike Flex is it available for Flash versions prior to v9, although this is not generally a blocking point as most people seem to have Flash 9 installed. As it less performant than Flex, it is probably not a preferred option, unless targeting multiple platforms, or sticking with 100% open source, is a particular concern.

One thing he mentioned, which i would like to play around with, is the use of swf objects to communicate between two different flash instances in the same webpage. This is partly related to another concern I have with developing an RIA in either Flex or JavaScript, namely how easy is it to modularize the system.

A very nice link is:, which gives benchmarks for data loading & presentation for RIA using a number of frameworks. A point which Anton Bar had touched upon in his presentation on Open Web was that Flex is more performant than JavaScript.

Attending these presentations strengthened my gut feeling (and I should stress that I don’t have real world experience with either language) that for RIA development, Flex is the way to go. One main consideration which I think is often overlooked are the issues of readability and maintainability. Whilst the use of JavaScript frameworks can ease this issue, I still have the feeling that Flex is better structured.

One thing that no-one was presenting on was JavaFX. Generally the feeling seems to be that no-one quite sees yet where JavaFX will fit it. I see that the JFall conference in November is featuring a number of presentations on JavaFX… it will be interesting to see if this provides a deeper view into JavaFX.

CSS 2008 – Wednesday – the rest

Although the main focus of my day was RIAs, I actually started out the day with an interesting presentation on Groovy by Eric Schreiner. One great advantage of having a wireless connection in the conference centre is that I was able to download and install the Groovy Eclipse plugin as the presentation started, and then follow along with the more basic examples on my own computer.

As well as explaining the most basic feature of Groovy, and how to integrate scripting within Java, Eric also described how to use the MetaData features of Groovy to alter the behaviour of existing code.

The last presentation I attended today was Dustin Marx‘s second presentation, “Java Management Extensions (JMX) Circa 2008”. After a short history of the JMX spec, Dustin gave a demo showing the improvements made to the JConsole tool in Java 6 – the most interesting features being the automatic detection of JMX managed applications and custom plug-in support.

Moving on to the MBeans themselves, he explained the differences between the various types of MBeans, and the advantages of defining MBeans using Spring.

CSS 2008 – Tuesday – Update

Something I forgot to mention from Jason van Zyl’s presentation was Nexus, the Maven repository manager. For a quick summary, see Matt Raible’s post, but in brief, Nexus provides:

  • a single entry point to a number of repositories
  • fine grained security
  • indexing capabilities

If you try the m2Eclipse plugin, you can see the Nexus repository action as it is used to provide the index of archetypes when creating a new Maven project.

My opinion – looks like something worth investigating further.

CSS 2008 – Tuesday

One of the main themes for me today was Maven. I attended two presentations by Jason van Zyl, one of the founders of the Maven project. The presentations focused on the main reasons for choosing Maven and the m2Eclipse plugin. Having previously seen a much older version of the eclipse plugin, I was impressed by the functionality of the newest version, and how much more quickly you can get up and running. One aspect I was particularly interested in, but there wasn’t enough time to cover, was the possibility for “project materialization”, a mechanism for quickly getting new developers ready to work, with automated project check-out, customized Eclipse cheat sheets etc. Another point of attention, which deserves further thought is the handling of multi-module projects. Also of interest to me is that the CI server of choice on the Maven project is Hudson, which they are using both for CI and release builds. He did, however, point out some issues with the handling of dependencies in the multi-module builds, and recommended instead using the free style project type. I hope these issues will be fixed in the near future, as I see a multi-module project as a very useful concept.

Matthew Wakeling
gave an interesting presentation on performance engineering. He billed his presentation as “everything you ought to have been taught in your computer science course, but may have forgotten”. Since my own CS course was pretty lacking in this area, and I usually take advantage of what is provided out of the box in Java (for example, sorting algorithms), I found it a useful discussion.

Anton Bar’s follow up presentation “Open Web File System” continued the discussion on the platform, focusing on OpenID (for authorization across multiple sites) and OAuth (for authorization). Both seem like promising APIs, though currently not widely adopted. The file system itself is based on WebDAV, and Anton gave a number of examples of working with WebDAV on different platforms.

My final presentation for today was given by Chris Richardson and was titled “Improving Tests with Object Mothers and Internal DSLs (EE)”. The presentation gave some patterns for reducing redundancy in unit tests, including the use of “object mothers” – basically classes with static getXXX methods for generating re-usable test data. The second half of the presentation focused on the use of Selenium for testing web applications, and the use of Chris’ project Umangite, designed to take away some of the effort in setting up Selenium tests.