Monthly Archives: January 2007

Microsoft uses Flash Player for Vista Launch

Microsoft launched several Flash applications over the past week in preparation for the launch of Windows Vista. There is some serious irony here folks. Vista provides a “New and Exciting” rich user experience, yet nearly all of the GUI features can be delivered today using Flash Player with Flex or Flash, cross-platform, cross-browser independent of the operating system today to 97% of computers.

Windows Vista

See Windows Vista

Microsoft is again proving that Flash Player is the defacto-standard for delivering great experiences today because it is widely deployable to 97% of computers. Flash provides rich experiences with reach. It will be a very very very long time before Blend/WPF/E has that type of reach and compatibility. I am sure they will get to 50% quickly using Windows Auto-Update but the last 47% is going to be very difficult, if not impossible.

The funny part will be watching Microsoft undo their own Flash sites after Blend ships, if they can do it at all. I think they will have a very difficult time justifying a switch when WPF/E features are not even at the Flash 5 level and deployment compatibility starts at 0% for a version 1.0 MS product. (Personally I think it will be DOA.)

Also if you like the Vista UI, you should check out the skins posted by Juan Sanchez over at for Flex 2. These skins are great as you can make any Flex 2 app look like iTunes, OSX, Windows XP, or Vista.

Vista Skin for Flex 2.0

Skin Swapper with Flex – iTunes, Vista, Obsidian (at runtime)

The fact is that with Flash, “The Wow” started in 1996 some 10 years earlier. It is great that Microsoft is spending Billion to showcase Flash like this and suddenly championing that user experience matters.

ps: MS PR department please comment away! No novels in the comments this time Scott and Co.


Acquisition within Flex

Before Flash/Flex, I wrote software in Python. There are several concepts in Zope/Plone/Python that are very relevant to Flex and ActionScript 3. Many people know about Inheritance and Composition but very few know about Acquisition. I am going to introduce the concept of Acquisition and show some examples of it within Flex. Looking back, understanding Acquisition has been a key factor in my personal success with Flash and Flex.

First things first, a warning. We are OOP off-roading here. If you bring your OOP preconceptions along they might get a little shaken up. Acquisition is a bit different but it fits seamlessly with Inheritance and Composition. You have been warned!

So lets start with a definition of Acquisition (Wikipedia doesn’t have a good definition, I told ya we are offroading here!):

Acquisition – The ability of any object to acquire data and behavior from surrounding objects.

What the hell does that mean?

In its simplest form, Acquisition allows you to build objects/components that change their behavior depending on where they are located at runtime. These objects “acquire” data and behavior from surrounding objects based on composition. Acquisition takes composition to its logical next step by allowing objects to be created that react to what they are within, next to, or what objects they contain.

Confused? No getting stuck in the mud, keep the peddle down. Here are some concrete examples of Acquisition behavior within Flex:

“Child” Acquisition

TabNavigator – This container defines navigation based on its children. TabNavigator changes behavior purely based on the objects (containers in this case) that are put within it and the order they are put in. TabNavigator reads the ‘label’ property from its children to define tabs. The Tabs in TabNavigator are obviously part of the TabNavigator component but their data is derived directly from the children within. If you remove a child, the tab is removed, if you add a child, a new tab is created, if you change the ‘label’ property of a child, the tab label changes.

I like to think of this as “Child” Acquisition as the TabNavigator looks to its children to define its own data and behavior.

“Parent” Acquisition
Take a Button and change its label based on the parent container of the button. Put this Button in a Panel, it looks one way, put it in an Accordion, it looks different.

I like to think of this as “Parent” Acquisition as the component looks to its container/parent to define its data and behavior.

“Sibling” Acquisition
Take a series of buttons all with percentage height and add them into a base Application container set to vertical layout. Depending on the percentage size of each children, it affects the size of other children during measurement and layout. In this case, if the size of one child changes, so do all siblings within a container.

I like to think of this as “Sibling” Acquisition as a component depends on its siblings to define its data and behavior.

I believe that there are many details within Acquisition that can be applied to Flex directly given that both MXML and ActionScript 3 lend themselves to heavy use of Composition. From DOM Events to Constraint-based Layout to States, many Flex concepts depend on the runtime state of components and containers. What is fascinating to me is that we can go deeper and design systems of components that work within Acquisition to make Flex application development simpler, easier, and more reusable. Not that support for Acquisition is pre-defined in Flex per say, but I think there is a foundation in Flash Player 9 and Flex to build upon.

Here is where the rubber meets the road again and we go back to coding. Acquisition is a way to think about programming behavior into the components and objects we create. As objects can inspect parent, children, and siblings, it makes sense to program behavior that reacts to other components.

In classic Zope/Python, Acquisition is a pattern that defines a lookup tree based on composition. If you need a variable, you can lookup the tree of composition to find a definition if one is not defined within the current object. Instead of walking the inheritance chain, you walk up the composition chain of parents to the root. This way objects within another object don’t have to define all of their behavior and that behavior can change depending on how the object is composed.

Here is the summary from the Plone Manual:

Acquisition allows behavior to be distributed throughout the system. When you add a new object to Zope, you don’t need to specify all its behavior, only the part of its behavior that is unique to it. For the rest of its behavior it relies on other objects. This means that you can change an object’s behavior by changing where it is located in the object hierarchy. This is a very powerful function which gives your Zope applications flexibility.

Acquisition is useful for providing objects with behavior that doesn’t need to be specified by their own methods or methods found in their inheritance hierarchies. Acquisition is particularly useful for sharing information (such as headers and footers) between objects in different folders as well.

Here are some other resources on Acquisition:

Nature vs Nurture – John Udell

A new inheritance-like abstraction mechanism – Joseph Gil and David H. Lorenz
The class of an object is not necessarily the only determiner of its runtime behaviour. Often it is necessary to have an object behave differently depending upon the other objects to which it is connected. However, as it currently stands, object-oriented programming provides no support for this concept, and little recognition of its role in common, practical programming situations.

To give credit where credit is due, Jim Fulton of Zope deserves much credit for Acquisition, Jim wrote the initial Acquisition logic into Zope. I learned about Acquisition in working with early builds of Zope before working deeply with Flash Player. It helped me think about composition within Flash Player at runtime, defining dynamic behavior into Flash applications, and has been a key factor in my success with Flex. Call it a pattern, a tenet of OOP, environmental hoo-haa, whatever, to me Acquisition just helps me think about creating components that react to how they are organized at runtime.

In many ways Acquisition brings in the element of environment into software development and these patterns are grounded into our everyday life. My car works differently depending on the road it is on and I act differently depending on who I am around, so too with components and software. Shoot, maybe this post will be different because I wrote it on a Sunday in the comfort of my own home.🙂



FlexComponents hits 1000 Developers!!!

I am pleased to announce that FlexComponents Discussion List has cross over 1000 developers subscribed. It has been slow building but the last few months we have been adding 100-200 developers a month. The growth in Nov06, Dec06, and Jan07 really highlight the growth in Flex and the interest in extending Flex.

Ely has a great post today on the extensibility of Flex as a framework vs HTML. It is a great read and he posts a custom SuperImage component that supports caching and simplifies loading images within ItemRenderers.

Join FlexComponents!

Speaking Lists…The other day I got ADOBE GO URLS made for a few lists:

FlexComponents –>
FlexCoders –>
FlexJobs –>

Anyone interested in another Flex Component Developer Summit? I think we should have another one in 2007.

More to come!


Flex 3 in 2007 plus some clarity…

I wanted to clear up some misconceptions about Flex 3. The release is not right around the corner but will arrive in late 2007. The Flex 3 release cycle will be very different, actually it is wildly different than what Adobe has done before. We are working to get the development community involved in the release to assist in shaping features and raising the release quality.

As you will see, we are changing how we make software and how we interact with the development community. To make Flex 3 great, we need your help, it is as simple as that.

More to come,


Meet the Flex Team – Thursday, Jan 25 at Adobe San Francisco

We are all set for a great “Meet the Flex Team” event in San Francisco. We have Free Pizza, Beer, Nintendo Wii (on a 25ft big screen), ready to go. If you want to meet the team that wrote Flex, register for “Meet the Flex Team” today. Also be ready to write down “Talk to me about?” for your badge. Here is mine:

Talk to me about: Scuba Diving &

I will be doing a demo of Virtual Ubiquity’s “Buzzword” document editor which is the first time this app has been demoed publicly. Simply put, it is the best Flex app I have ever seen and makes all other Web 2.0 document editors look like a joke. Basically it is a MS Word quality document editor running in a browser, cross-platform and cross-browser. It is an impressive example of what happens when great engineers get busy with Flex! We will also have a Flex Team Q&A session where you can get your questions answered from the source.

See you at Meet the Flex Team!

Nintendo Wii Tennis on a 25ft screen, priceless!


Flex 3 – The most important feature!

The Flex team is in full development of the next full release of Flex, Flex 3. The release is looking amazing but I wanted to reveal the most important feature today. Flex 3.0 targets the release version of Flash Player 9 and will be widely deployable to over 90% of computers, well over 1 Billion computers, the day it ships.

The day you download Flex 3.0, you will be able to deploy 100% of the new features to the entire Flash Player 9 installed user base. Given release timing, Flash Player 9 should be installed on well over 90% of computers. This is the first time Adobe or Macromedia has released a development toolset targeting a widely deployed Flash Player and I believe it will have a dramatic effect on the Flex marketplace as a whole. I am seeing a huge surge in Flex development today and the delivery of Flex 3.0 will only accelerate this growth.

Companies moving to Flex for cross-platform web and desktop application development can rest easy investing in Flex today and tomorrow. In choosing Flash Player 9 for the deployment target of Flex 3.0, Adobe is making a larger commitment to supporting a longer application life-cycle. Companies developing Flex applications will be able to utilize more advanced development tools while deploying compatibly to Flash Player 9. As future players arrive, deployed applications will work seamlessly given our fine grained support for SWF backward compatibility.

In many ways, I believe this is the right choice for Flex long term. As our market is by majority business applications, we need to focus on wide deployment and compatibility first and on new player dependent runtime features second. Flex should always deploy into the fat of the Flash Player adoption curve and it is my opinion that we should always target the player that is 90% deployed. If that means that Flex 3,4,5 ship targeting Flash Player 9 all the better for developers and companies. Honestly there are a ton of features that need to be added into Flex independent of the runtime and above the compiler. When Flash Player 10 hits 90%, Flex should target Flash Player 10 in all future releases. The market that Flex is targeting requires us to provide better development tools for productive software development always delivering to widely compatible runtimes.

So what is being added for Flex 3.0?
I will be demoing some Flex 3.0 features at the 360Flex keynote. Hold onto your hat, you ain’t seen nothing yet!

Go Flex!


p.s. Dear loyal readers, please pardon the comments from my new MSFT fan club. Since they are trying to catch up to Adobe, I better get used to their comments and spam on my blog.

FlexJobs – Yahoo, Adobe, eBay hiring managers are posting…

I spoke with hiring managers from Yahoo, Adobe, and eBay about the new FlexJobs list today. All three companies are hiring Flex developers and they will be posting jobs to the FlexJobs list directly. Yes both Yahoo and eBay are both using Flex and within both companies there is a wildfire of development underway.

On Wednesday, I will be teaching an all day class to 30 developers at Yahoo headquarters. The class is part of my 2007 plan to arm great development teams with deep Flex product knowledge directly. I have been slowly building a core curriculum for teaching Flex to developers and having taught 7 Flex classes thus far. Based on the feedback thus far, I am getting into a groove.

At the upcoming 360Flex conference, I will be teaching the first daily session of the Flex101 track. The entire Flex101 track will be repeated each day of 360Flex. My 90 minute session covers the mission critical building blocks of Flex and provides the basic product foundation one needs to be successful with Flex. It has taken some time to put this session material together and each time I give the session I tweak and refine it a bit.

I have to admit I love teaching Flex and ActionScript 3. The language and classes are such an elegant way to write cross-platform software.