Cairngorm Updates

Over the past weeks we’ve migrated our SVN code repository to SourceForge, released new versions of our libraries (maven repository) but most importantly added two additional non-Adobe members to our team!

Welcome Pascal Romanens from Kalyss and Brian Lay from HP!

Brian will probably focus mostly on the navigation library and Pascal already added features and bugfixes to the Persistence library.

If you’re interested in contributing to Cairngorm, please contact Francois Le Droff (ledroff att adobe dott com)

Cairngorm 3 – Revised Guidelines and Core Principles

We’ve revised the guidelines section. In my opinion, one very significant new area are the Core Principles. These are principles that we feel are crucial to adhere to when developing enterprise RIAs. They are also easier to agree upon between teams even if some areas (such as an IoC framework choice) might be more difficult to agree upon. Looking for commonality between teams can help bring more consistency eventually.

Additionally, don’t forget the MAX presentations of Francois Le Droff and Yaniv De Ridder; who will touch on build automation and the impact of multi-screen on client side architecture. Afterwards, I hope we can add some outputs of it to Cairngorm.

Cairngorm 3 – Migration to Open@Adobe, Library Updates and MAX Presentations

Over the past months Cairngorm 3 has moved to a new location, the new Open@Adobe space at SourceForge. Last week we’ve released new versions from our navigation, module, integration, observer and popup libraries. The how-to documents linked through the libraries page show what’s changed and add further documentation.

If you’re at MAX, make sure you checkout the session from Francois Le Droff and Yaniv De Ridder, who will present technical insights from a large-scale RIA project built inside Adobe, which uses Cairngorm 3 guidelines, tools and libraries.

Additionally, Xavier Agnetti and Xavi Beumala will discuss FlexPMD, which is a crucial tool we use in our projects. More tools we’ve found important are linked through our tools section.

Cairngorm 3 Released

I’m excited to announce that Cairngorm 3 is released! Cairngorm communicates best practices for enterprise Flex and AIR application development, contributed by Adobe Technical Services and partners. Cairngorm is our opinion on applying modularity, IoC, agile testing, build automation and everything else we find crucial to build enterprise Flex and AIR applications. It is one set of guidelines, tools and libraries you can hand-off to enterprise development teams. Based on our own experience of many large-scale projects, Cairngorm attempts to share this opinion; early and often in order to get your feedback quicker and to advance the Flash platform in the enterprise.
Since going into public Beta in October last year, I think we’ve made a significant step towards making the guidelines coherent, many libraries robust and the tools section a best-of-breed filter for the tools we’ve been using successfully in practice. This is a living project! Expect changes as we’ll receive feedback and our own thinking evolves; Cairngorm will evolve. Cairngorm is a success for us, if it portrays what works for us and can work for our partners and the external community leveraging the Flash Platform.
Cairngorm starts here.

Cairngorm 3 Beta is Out!

I’m excited to announce that we’ve redefined Cairngorm to increase its scope. Tom Sugden announced our intentions here last month. We’ve now published the first content on opensource.adobe.com.
Instead of only providing a specific implementation of an MVC architecture, our team within the Adobe Technical Services organization took a step back and collected some of the most important knowledge that helped us deliver enterprise Flex applications over the last few years of consulting projects. This includes modular application development, layered architecture, domain-driven design, loose coupling, quality guidelines, build automation strategies, agile testing, code coverage best practices, and more. We present Cairngorm in three parts:

Continue reading…

Adobe TV: Agile Testing of Enterprise RIAs with Flex and LiveCycle ES

Adobe TV now hosts the full MAX 2008 session about Agile Testing of Enterprise RIAs with Flex and LiveCycle ES from Herve Dupriez and me. Herve talks about the LCES part and I about Flex.
This presentation focuses on how your architectural design could look like to make agile testing feasible and efficient. It’s explaining principles we’ve been following at projects that can make Test Driven Development of RIAs a reality.
It also touches upon code coverage tooling available for Flex and its recommended usage. Checkout Flexcover, the open source code coverage tool. Flexcover was created by Joe Berkovitz and some months ago I joined his efforts after I developed an internal tool that followed another approach using only Flash Player APIs. Joe’s approach is actually customizing the open source Flex compiler and can therefore achieve object code branch coverage. Join the Flexcover project to keep it going!
During the presentation I’ve mentioned further information about IoC frameworks that my collegue Ed Eustace already put online. Also, Michael Labriola’s presentation at MAX 08 “Testing Flex Applications” spend more time comparing different testing tools. This is not online at Adobe TV yet, but upcoming.
Also check out the presentations from my other colleagues at Adobe Professional Services:

Download Flight Effect

Imagine an airplane that takes off the ground, flies across a distance and lands at an arbitrary destination. This post will explain how to do the same in Flex, using the Flight effect, which you can download here.
Before I explain any further, take a look at a running example. I’ve taken the Cairngormstore and added the Flight effect to the point when the user wants to add a product to his shopping cart. Simply click on the “Add to Cart” button to see the effect playing.
store_with_flighteffect.JPG
The key here is that the product doesn’t immediately appear in the shopping cart DataGrid control as the user presses the “Add to Cart” button. Instead, the Flight effect animates the product into the shopping cart control. Download it here.

Continue reading…

Lighted Distortion Effects and Tour de Flex

There’s a slightly updated version of the distortion effects shipping with the amazing Tour de Flex AIR application (flex.org/tour). This update adds another feature that our User Experience team found “adding to reality”. Lighting!
Lighting works on all effects supplied. Here’s how it looks like on CubeRotate:
lightingcube1.gif
But see all the effects in action from this example. Download it here directly.
And if you’re interested in the source code of the cube example, download it here.

Continue reading…

Distortion Effects – Updated

Here’s a new version of the distortion effects.
Thanks for all your tremendous feedback on the previously released distortion effects. Some of that feedback is now included in this updated version. This version adds various features and updates. Here’s an excerpt:
Exceed Bounds
Much of the feedback I’ve received was about making the flip effect more realistic. The hint was to let its bounds overlap while the flip effect is coming towards the user. (flipping in). The new exceedBounds property on the Flip effect does exactly that and is now turned on by default!
exceedBounds.gif
Pop mode UP
The Pop effect now has an additional mode. The default mode is DOWN, which pops a display object off a stack/pile, away from the user. The new UP mode pops it towards the user.
popDown.gif

Continue reading…

Creating a Popup in a Cairngorm Architecture

Often I see this question coming up:

“How should I best create a popup in my Cairngorm application?”

I think of creating a popup control as something only views should be concerned about. It’s like creating other view components, managing states of view components or effects. Therefore this question isn’t just about creating popups, instead it’s about how to invoke methods that belong to the view. (BTW: I often hear from our User Experience team that they try to prevent popups where possible)

Continue reading…