Archive for May, 2006

Kiwi on Adobe Labs (Cairngorm Inside)

So NoteTag is the first part of the Kiwi project that just graduated to Adobe Labs, from one of our teams who are currently exploring how Flex and the wider Adobe Engagement Plaform can be leveraged in the world of the Read/Write Web.

I had a walkthrough of NoteTag – a Flex 2 application – some time back by the team themselves, and it’s an interesting concept in its own right – this particular application (which is one of many the team are working on as part of the Kiwi initiative) is an application that allows you to take notes during meetings, and assign tasks from these meetings to other individuals.

NoteTag exemplifies some of the ideas that Kiwi team are exploring, and making available through some Kiwi Project libraries. Notes themselves are stored as blog entries, tasks are formatted using a microformat, and tags are used to connect tasks to individuals. The source code – which you can download – includes a library for the AtomProtocol, a TagServerProtocol, an enhanced library for RSS that supports setting data in an RSS feed and a connections library for managing connections to Web Services.

One of the ways I became aware of the NoteTag project, was because the development team chose to build their Flex 2 application upon the latest build of Cairngorm. It’s great to see some of our own internal projects that are built upon Cairngorm are making it out into Labs – we really are “eating our own dog food”.

For those of you that want to take a look at how to build applications upon Cairngorm, why not download the source for NoteTag, and see how the Kiwi team interpreted the microarchitecture, and used it as the foundation for their project ?

The Kiwi team have their own blog going on, and there’s a screencast of NoteTag in action if you’re interested.

Want to work for the Apollo Team ?

Here’s my first post in my new “Apollo” category on my blog…there’s a new job opening for an API Testing Engineer in one of our teams in San Jose, that some of you might be interested in:

“You will join a small, highly motivated team developing a new cross-platform, cross-device application deployment and runtime environment. This new application platform will allow desktop and mobile applications to be built and deployed via familiar web technologies including Flash, HTML, and PDF. As a member of this high profile team, you will be responsible for ensuring the quality of the platform, with a primary focus on the design and implementation of automated testing frameworks and automated tests.”

If you’re interested in applying, visit the Adobe Corporate Jobs page and search for keyword ER010605.

RIA 2.0 anyone ?

Cairngorm 2 (for Beta 3) now has Stateless Commands

We just realised that the build of Cairngorm 2 that we just put out, actually sneaks the “stateless commands” that we’ve been using ourselves for quite some time now. This is going to require the tiniest amount of change to your Cairngorm applications in a single place – your concrete front controller – and you should understand what benefits we felt motivated this change.

Typically, in your own Front Controller in Cairngorm applications, you would have a bunch of lines of code such as:

addCommand( MyController.EVENT_LOGIN,  new LoginCommand() );
addCommand( MyController.EVENT_LOGOUT, new LogoutCommand() );

We’re now going to ask you to change those lines of code to:

addCommand( MyController.EVENT_LOGIN,  LoginCommand );
addCommand( MyController.EVENT_LOGOUT, LogoutCommand );

Since the change is so subtle, let me emphasise – the addCommand() method is now accepting a String with the *name* of the command, rather than a new instance of the command – new LoginCommand() – in its argument list.

What this means, is that each time a command has its execute() method invoked by the controller, this execute() occurs on a new instance of the Command class every time. The handlers (results and faults) are still of course invoked on the instance of the Command that was “executed”.

Until now, Cairngorm has always executed on the same instance of the command – something that we wished had never made it into our first release, but once it was out there, we were wary of making the changes.

You should be aware that if your application is relying upon a side-effect between invocations of the Command, then this side-effect will no longer exist between command invocations. So – no state is held in a command between invocations, and if you need to retain state, your strategy should be to explicitly capture that state and hold it in the ModelLocator.

This is still a beta release of Cairngorm, so we’re open to suggestions from the community as to this change. However, it’s a practice we’ve been employing for several projects now, and one we’d certainly advocate to our own clients.

Let us know how you get on with this – it’s certainly a relief for us that this is finally part of the public build of Cairngorm.

Cairngorm 2 for Flex 2 Beta 3

Hot on the back of the public release of Flex 2 Beta 3, here’s an updated patch of Cairngorm 2 for you, that will allow you to migrate your Cairngorm 2 applications to the new Beta 3 platform.

There is very little change here from the previous version of Cairngorm; certainly the APIs and classes are stable with the last version, and this should be a drop-in replacement for you.

The ZIP file is ready to drop into Flex Builder 2 as a library project – Peter Martin is going to blog separately about how you can import Cairngorm as a library project into Flex Builder 2, alternatively however you can just drop the SWC into your projects, or include the Cairngorm classes directly.

Between now and the launch of Flex 2, we’ll have some new bits to deliver you in Cairngorm that will reflect the innovations Adobe Consulting in EMEA have been making on the Cairngorm codebase in a large number of past and present solution deliveries. I’ll blog more details of those in the near future.

Coming soon … an updated version of Cairngorm Store for Beta 3 as well….

Tell us your Cairngorm Stories…

Robin Hilliard of Rocketboots posted today about an application that he has developed with Flex and Cairngorm, that has over 1700 classes, and around 500 MXML files. The application has been built by a project team, and for a client, who have attributed the successful delivery of the project to Cairngorm (and I’m sure to the development skills and hard-work of the team as well !).

This is very much a recurring theme; to hear about development teams who have embraced large mission-critical applications and with hindsight, have said that they’d have no idea how they’d have achieved what they’ve achieved, had they not embraced Cairngorm.

Even more gratifying, is to see a number of job-postings appear, with organisations such as Yahoo!, who not only ask for experience of Flex, but experience of Flex with Cairngorm.

Now that I have a blog that does an admirable job against comment spam, I’d like to open up this blog-entry to ask if people would like to share their experiences of commercial or large-scale applications that they are developing with Cairngorm. If you can share names and URLs all the better, but even just sharing your experiences would be great feedback for us !