CSS2008 - In Summary
My schedule for the week:
Links to blogs & presentations from CSS 2008 (these are the ones that I've found, there may be more out there....):
My schedule for the week:
Links to blogs & presentations from CSS 2008 (these are the ones that I've found, there may be more out there....):
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.
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.
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 script.aculo.us. 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: http://www.jamesward.com/census/, 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.
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.
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:
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 G.ho.st 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.
Although the day at CSS is usually long enough (from 8.30 until 7), Hans and I stayed a little later this evening to attend a BOF (Birds of a Feather session) on the topic of web UI development.
The main focus of the discussion was Flex vs. Javascript, and the general feeling I had was that most people were leaning towards Flex.
The main reasons mentioned for choosing Flex were:
Looking down the speaker list for this year, there are a number of contributors from LinkedIn. The first presentation I attended, "Building LinkedIn's Next Generation Architecture with OSGI" given by Yan Pujante gave an overview of the reasons that the LinkedIn architects chose to use OSGi, and the hurdles they encountered along the way. I had hoped that OSGi would feature more heavily in the conference, but this was the only presentation on the topic.
The final presentation of the day, was given by another LinkedIn employee, Matt Raible on the topic of Spring 3.0. The presentation itself was interesting, though a little hampered by the lack of availability of a Spring 3.0 release (the first RC was expected in September but is not yet available). Matt gave an overview of the improvements that were already included in Spring 2.5, as well as what is expected in Spring 3.0, including support for Java 5+ and a new Spring Expression Language.
Development for the iPhone is a topic which is featuring quite heavily at this year's conference. Despite not owning an iPhone, I attended the introductory session today to see what it was all about. It turns out there are quite a few constraints - 1. you have to have a Mac (no problem there, at least), 2. programs have to be developed in Objective C (some learning curve then), and 3. Apple put a lot of restrictions on the delivery of the software you create, and require developers to be screened before their contributions can be considered (this can apparently be a lengthy process). On the plus side, for anyone used to developing Mac applications, the same development environment applies so you're already well on your way. Well, who knows, maybe some day I'll give it a go, but I don't think I will be rushing to try it.
The fourth presentation I attended was on the OpenWeb operating system, given by Anton Bar, the chief "Gheek" at G.ho.st. G.ho.st is a company based in Israel and Palestine, a fact which Anton gave a little time to at the beginning of the presentation. One particular issue they encounter is that Israeli citizens are not permitted to enter Palestine. Although the two offices are geographically close, organizing meetings between team members is a challenge.
The product G.ho.st is a web operating system, giving users access to their online data from various sources (e.g. GoogleDocuments, Flikr, Hotmail, etc). The G.ho.st user interface is built using OpenLaszlo compiled to Flash (I'm attending a presentation on OpenLaszlo later in the week, so more on that then). The reasons given for choosing OpenLaszlo was that the performance of Flash is better than Javascript, without the browser inconsistencies, but unlike Flex, is not proprietary. I haven't had to time to play wit G.ho.st itself, but I do plan to.
All in all, an interesting first day. After attending the first few presentations, I've changed my schedule a couple times, and looking forward to the rest of the week.
After a year's break, it's again my turn to visit the Colorado Software Summit in Keystone, Colorado.
I arrived on Saturday to fantastic weather and took the opportunity to do some hiking and geocaching (GC82F4, GCPPTV, GCWYDB) before the conference started.
When my colleague Hans arrived on Sunday (after a number of flight delays) we took a drive over to Aspen to sort out the car rental. It turned out to be a 6 hour round trip, but certainly worth the drive to see the scenery, and cross the Continental Divide at 12095 ft).
Back in the world of the mainstream airlines, I discovered one (and possibly only one) benefit of flying with United - "channel 9".
On my flight from Chicago to Vancouver I was able to plug my earphones into channel 9 and follow all the communications between the cockpit and air traffic control. Listening to the communications on the ground at Chicago was certainly an eye-opener - whilst the airport didn't look so busy, there was never a break in the communications are all the aircraft were shuffled from the terminals to the runways. Once we were cruising, the communications were of course rather thin, but on final approach things livened up again. Something I particularly noticed was that every turn or deceleration of the aircraft was in response to instructions from the tower - a fact that I had never really thought about before.
Labels: travel
For all my plans to publish a triumphant blog entry on September 1st, announcing possession of my very own house, it's taken over a month to find the time, and internet connection, necessary to do so.
There's a loaf of bread, fresh out of the bread machine. The dishwasher (how I love the dishwasher) is gurgling away in the corner. The room is bathed with low-level lighting (the only sort I have at the moment, not helped by the fact that every IKEA lamp purchase involves me buying the wrong sort of light bulb).
Whilst the house is still looking a little minimalist, I have now taken possession of a few key domestic items - washing machine, dryer and vacuum cleaner, all of which I have been testing out today. Some of the more basic items - sofa, bed, etc are still near the bottom of the shopping list :-)
Mum and Dad visited two weeks ago, and gave a hand with clearing the garden, some DIY and various painting jobs. In return, I cooked for them and served them food on paper plates. Possibly not a fair exchange.
Photos will follow eventually, but not until I manage to bring together the correct combination of computer, memory card and camera. A bit of challenge when most of your possessions are in boxes still.
Labels: house