Wednesday, March 21, 2007

Last QCon post

Since I only set up this blog to report on the QCon for my company and colleagues, this will be the last post at this time.

Part of why I do not blog, is that I think my writing stinks. If you feel otherwise or just want to send an encouraging message, leave me a comment.

Signing off for QCon 2007, yours truly: Samuel Ranzato from Sogeti

Dojo (speaker Eugene Lazutkin)

OMG .. do you know how Russians talk in the movies? Remember Drago in Rocky (“I must break you”) .. if so, than you know what kind of a dialect we had to listen to for an hour long.

First the “bad” …

It seems to me like Dojo is years back in time since all of the API look really procedural to me. Didn’t we quit that scene like … years ago?

Second, the “good” …

Akin to Bruce Johnson with his GWT toolkit, I really got the feeling that Eugene loves what he is doing and what Dojo has to offer. To me, that goes a long way since I would rather do something medioce but with passion than being on the cutting edge and hating everything I do. Sounds strange? Well, I know people who develop really complex and challenging software but under such pressure and so little appreciation, losing a lot of personal time doing work in the late, late hours. I would rather have a life, nice colleagues and a company that knows how to combinate fun with productivity than doing rocket science with a whip going over my back. Makes me think back to the articles about the Electronic Arts “widows”, women that we married or somehow lived with programmers that were worked like donkeys to produce software within a high pressure environment without getting compensation be it money, vacation days or what have you.

I love blogging as a therapeutic exercise, don’t you?

Eugene enumerated three types of applications you can write with Dojo: Web 1.0 enhancers (think updatepanels for all you .Net geeks out there), Web 2.0, and the holy-grail-app to some … the one page application.

Dojo comes with a lot – and I mean a lot lot – of Helpers for OO, functional programming, events, AOP, etc. There also is a normalized DOM to hide browser idiosyncrasies. Dojo calls custom events: Topics.

Sorry, I don’t have more to write but my head hurt from trying to understand what the heck he was saying. Tip for next year: one of those translation services like they have at the UN building.

Rich Internet Applications for the Enterprise (speaker Christophe Coenraets)

All in all, this also felt like a product plug like the GWT but with the difference that this product (Flex) is not open source and will generate money for Adobe, for whom Christophe works.

RIA are, according to the speaker, applications that can be characterized by the following aspects: expressiveness, performance, realtime, rich media, and desktop/offline use.

The latter is a bit difficult for normal Ajax applications but with Flex you can use the Flash runtime to run your Flex application offline.

Christophe mentioned the trend we see in applications as they went from developer centric to data centric and now, with RIA, to user centric. To me, that sounds strange as the data of a company will probably be longer around than the average employee.

He continued by showing some really cool UI demos, no denying that, and told the audience that Flex can also target a locally available JVM.

Since Flex uses Flash, it is worth noting that Flash 9 is largely rewritten to support (better) JIT compiling and binary sockets, all of which is available to application written in Flex.

Sockets is typically one of those things that are virtually impossible to do in “ordinary” Ajax.

To sum this entry up, one nice data-management-thingy is, that with Flex you can configure when changes are persisted: realtime, leaving the field or per form.

My take on this session: really groovy looking demos by a guy who has been around long enough developing software to get some credit but at the end of the day, the feeling I got was that someone was pushing their product on me. Too bad that a friend of mine wasn’t here as he is very interested in buying / working with Flex.

Google Web Toolkit or GWT (speaker Bruce Johnson)

Bruce works for Google on the GWT but a little research has shown that he previously worked on the AppForge MobileStudio project which I used a long, long time ago.

But that is besides the point, back to business.

He started off by reiterating some of the risks that go with a Ajax toolkit project such as usability, portability, speed, tool support, and quality.

The GWT is only available to Java as it cross-compiles Java to the Ajax platform (JavaScript) but will enable you to use a lot of the standard Java libraries, in fact all that are not virtually impossible from JavaScript.

Programming in Java enables you to use all the debugging and rich IDE (Eclipse, Sun Studio and others) to develop and GTW provides a GWT Host Browser to run / test your applications. The host will go to great lengths to ensure that it resembles the real thing as it eventually will run in the user’s browser.

In the usability department, something that I consider very important if you are doing Ajax, was the fact that GWT has very good font and color-scheme support built in. A lot of functionally inhabited people use these to get a more satisfying experience using their computer but a lot of software or webpages out there simply ignores them and has these hard-coded which to me says something about how their programmers think about their users (personal ranting finished).

The GWT also has the Back button problem and Browser History problem with Ajax applications covered but from a programmer’s perspective. No way near as elegant as what Erik Meijer suggested in his keynote yesterday but I won’t go into that.

In fact, one thing that distinguished the GWT from other Ajax toolkits is, that it will support Back / History even when you leave your application and later return to it. That is a good thing to test any Ajax toolkit on how well they support these browser functions.

You can indicate whether you want to generate obfuscated JavaScript (used when you only develop in GWT/Java) up to very verbose JavaScript that can be further enhanced by other developers.

I have to be honest here, it felt a bit too much like a product plug from which of course Google won’t get any money as GWT is open source but more in name-fame and thought-leadership. Fortunately this was offset by Bruce who was a very enthusiastic speaker and really wants to make the best toolkit ever. This left me with the feeling that it was one of those commercials that don’t annoy but nevertheless are meant to get you to choose “their product” if you know what I mean.

Ajax - Do we need a Client Tier (Dave Crane)

Dave started by admitting that he chose the title to provoke a response or trigger interest from the attending people. The answer to his question was Yes by the way.

What he did talk about was the size and importance of the client tier and his conclusion was very straight forward : it depends on how the level of Ajax used. Level seems a strange word to use here but let me put it in perspective. If you use only the UpdatePanels from Ajax for .Net than you are at a very low level but if you are going where no man has gone with Javascript, asynchrosity, and sending or receiving complex structure through XHR (XmlHttpRequest) than you are at a high level.

Dave also mentioned that it is a good idea to set the level at which Ajax is to be used in your design documents or at least bring it up as a design question.

Next on, he explained Java Literals, Closures, and more JavaScript specific stuff in a way that a relatively JavaScript noob like me could understand. I liked the fact that Dave calls Closures akin to inside-out objects. One thing that I really don’t like, but that is coming from a more structured, procedural mindset, is the fact that if you pass local variables to a callback within a Closure, those variables will be essentially global – and taking up memory – where the visibility is restricted to the callback only. In closure – pun intended – this is how Dave summarized the difference between objects and closures:

Objects: Data encapsulating behavior
Closures: Behavior encapsulating data

Dave wrote a book on Ajax Design Patterns and he told the crowd that he advises to not use Java-esque ways to program the GoF patterns but to use a more JavaScript approach. This will prove to have you writing less code and use some of the typical JavaScript constructs to their full potential.

He ended the session by demonstrating the implementation of the MVC and Strategy Patterns in an easy to understand manner.

Even though this turned out to be a more code-centered session, I liked it.

Ajax and browser-based applications (speaker Scott DeLap)

Scott gave a short introduction but I thought it good to iterate two things he mentioned:

Ajax as a name or abbreviation (AJAX or really AJaX) is about 2 years old whereas the technology is much older. This reminds me that I was doing Ajax even back in the days when there was only Classic ASP, come to think of it.

Ajax is almost synonymous with eye-candy and snappy user interfaces but there is also the set of improvements performance-wise since doing more stuff on the client will relieve the servers, network and other components in the communication chain. Kind of makes me think of Windows Vista about which most people only see the visual improvements but not what goes on under the hood.

Friday, March 16, 2007

Agile architecture, fragile architecture? (speakers James Coplien and Kevlin Henney)

Man, are those two the new Laurel and Hardy or something? Because it was a to and fro of quick comments and jokes. Very effective in keeping everyone awake during the last session of the day. Since it was more of a variety show than a presentation, I did not write down as much as I should because they did tell a lot. I just cannot reproduce it here.

One thing that I wrote down was this. Architects like to design their architecture using some modeling piece of software, but to some drawing out that design becomes more important than the purpose for which the exercise was meant. James called that : using the rules of drawing instead of using the rules of construction to design an architecture.

Next Kevlin made the nice point that if we want developers to write good code, management sends them off to some language course like Java or C#. But even though we ask developers to write documentation, no manager sends his developers to a course like Comprehensive Writing or Writing 101. That is strange because the developer does gets harped on that the documentation is to technical, elaborate or condensed, etc, etc.

Last, they looked up Agile in the dictionary to show that designing an architecture does have a place in an Agile world. Agile in latin could mean : to be ready. How can you be ready as you decide (hard) things as you encounter them or how to be ready to handle a familiar problem in a consistent way if not with architecture.

Unfortunately, the session was really talking about software architecture and not enterprise architecture or information architecture and so on.

And so ends another illuminating day.