Archive for the 'Flash 9' Category

The GAE SWF Project

The GAE SWF Project: Knowledge and tools to help you build Flash and Flex apps on Google App Engine

Today I'm releasing The GAE SWF Project, a resource of Flash and Flex-related knowledge specifically aimed at getting you up and running quickly with Google App Engine. If you want to skip all the details and start playing with it, skip to the Getting Started section.

Everyone else, read on!

When Google announced Google App Engine last week, I couldn't believe what I was hearing. It was as if someone had said, "Hey, Aral, tell us what your perfect development environment is and we'll build it for you."

In recent weeks, I had started playing with Python and Django and experimenting to see whether I could use it to build the web application for the Singularity web conference that I'm organizing at the end of October. Turns out that I could not have picked a better time to invest in learning Django and brushing up my Python as Google App Engine is heavily influenced by (and supports) Django and is written in Python.

A framework for the Singularity Conference

Singularity is shaping up to be a really great conference. I'm honored to have a constantly-expanding stellar line-up of speakers and yet the sessions are just one very important aspect of the conference. I find that you get as much out of your social interactions with speakers and other attendees at conferences as you do from the sessions. And Singularity is no exception.

The Singularity conference application is not something you will login to on October 24th and never visit again beyond October 26th. On the contrary, I plan to launching the application as early as possible and add features as we go so that we can start building the community around the conference. This is essential for the organization of the local conference hubs, for building friendships months in advance of the conference, and so that you can influence what the conference ultimately becomes (you do not have to attend the conference to join the online community.)

When I initially announced the Singularity conference two months ago, I stated in the About page that Singularity would have a "focus on open source, the community, and on giving back."

Today, I'm taking the first step towards delivering on that promise by releasing the initial underpinnings of a framework that will eventually power the Singularity conference web application. I present to you The GAE SWF Project.

The GAE SWF Project

The GAE SWF Project (hey, Google chose the name, I only provide the juvenile attempts at humor) is a resource of Flash and Flex-related knowledge specifically aimed at getting you up and running quickly with Google App Engine. The initial release contains a proof-of-concept Flash 9 client showcasing a pre-alpha version of The GAE SWF Framework. The framework is a very light-weight combination of Python and ActionScript 3 that uses some of the best open source components available today on the Flash Platform and Python ecosystem. It is inspired at its core by best practices and a pragmatic approach to application development.

The proof of concept (and, indeed, the whole project) specifically targets Google App Engine. This is by design. The framework is not a generic one (although, by all means, feel free to get inspired and port it if you wish). The dedicated focus is part of the appeal. It means that we can make things simpler.

There will be no abstraction for the sake of abstraction and no premature abstraction; the framework will evolve by encountering real-world problems and solving them.

Finally, keep in mind that you are viewing the fruits of three days of work at the moment (this, in itself, should be testament enough to how easy -- and fun -- Google App Engine makes development). It is early days but I feel that we've made a good start. I hope to hear your thoughts and feedback in the comments.

The Proof of Concept

The proof of concept is built on Google App Engine using Google's webapp framework.

It showcases several fundamental architectural considerations, the most important of which I've outlined for you below.

HTML and Flash in a tree...

You use handlers in app.yaml to host a mix of Flash and HTML content, including the Flash Remoting gateway, in a single Google App Engine app.

Embed Flash content using SWFObject

SWFObject is the way to embed Flash and Flex applications in your HTML. Use it. 'Nuff said.

Deep links

You implement deep linking using a combination of server-side Python and SWFAddress so that both SWFAddress-style and regular URLs are supported. Regular URLs are translated to SWFAddress-style hash/anchor URLs on the server.

Thus, both of the following URLs are valid ways to reach your profile page on the proof of concept Flash 9 client:

Regular URL:

http://gaeswf.appspot.com/examples/initial/profile

SWFAddress-style URL:

http://gaeswf.appspot.com/examples/initial/#/profile

Flash content that obeys browser text-size changes

Users with poor eyesight or in environments with reduced-visibility (such as bright sunshine outdoors) may want to increase the size of the text displayed in the browser. By default, Flash and Flex content does not react to these text-size changes. However, it is possible to make Flash content obey browser text-size changes and the proof of concept implements one such method that does not involve any alterations to the Flash app.

(You can read more about similar issues -- and see some juicy Flash myths debunked -- in my review of the talk I gave at Highland Fling this month titled Bare-naked Flash: Dispelling myths and building bridges.)

PyAMF

PyAMF is a Flash Remoting implementation for Python. It has a dedicated and responsive group of passionate developers working on it, led by Thijs Triemstra, Nick Joyce, and Arnar Birgisson. On Tuesday, the team released PyAMF 0.3 with support for Google App Engine.

The GAE SWF Framework uses PyAMF as a core component to communicate with the server and the various Google App Engine APIs. It is currently running PyAMF 0.3.

The PyAMF gateway is setup as a regular mapping, and mapped to /gateway in app.yaml.

Users API

You use the Google App Engine Users API to login and out of the Flash application. The current Flash 9 proof of concept implements one of three possible ways of handling logins (see the note in my earlier blog post about the other two ways.)

Intelligent forwarding after login

When you hit a deep link in the application without logging in, you are automatically forwarded to the link after you login. This is a behavior that you are accustomed to seeing (and expect) in HTML-based applications but I have rarely seen it implemented in Flash and Flex applications.

DataStore API

The Google App Engine DataStore is a massively scalable database based on Google's Bigtable (the same distributed database that powers their search and services like Google Earth).

The proof of concept has a profile section where you can fill in your name and a URL (the Users API currently does not provide your GAE app with the user's name, just their email address). This data is saved via PyAMF and the DataStore API.

(All server-side services are in the /services package.)

Client-side and server-side validation

The Profile Screen shows you how to implement two different types of validation: simple client-side validation and server-side validation.

The Name field performs simple client-side validation that stops the user from submitting the form without entering a name.

The URL field, on the other hand, actually hits the server and asks the DataStore to verify that the URL is valid. When you think about it, it makes sense to use server-side validation code to validate more complex data types using the exact same code that the DataStore API uses.

The user experience is managed via visual cues that are carefully scripted using the excellent KitchenSync AS3 sequencing library by Mims Wright. (Mims just added me as a project member so I can contribute a small update I blogged about earlier.)

(I'm still working on tweaking the timing of the type wait duration for firing the server-side validation code to make it as seamless as possible.)

As the framework develops, I know that the KitchenSync library is going to be an essential, core element, and I look forward to contributing back as much as I can to the project.

Mail API

The proof of concept also makes use of the Google App Engine Mail API to send email confirmations to your Google Accounts email address after you update your profile.

When initially working with this, I was searching for a simple way to monitor the mail that was being sent from the app. Although the Development Web Server allows you to specify an SMTP server when you start it, I couldn't get it to work with either GMail or my web host's mail server. And setting up sendmail or postfix was a pile of worms I didn't want to sample.

Instead, I found a simple, open source SMTP server written in Python that's perfect when developing locally with the Development Web Server. It's in The GAE SWF Project app that you can download. To start it, simply change to your The GAE SWF Project folder and type:

./monitor_mail

You will see all email sent from your application in the Terminal window. (Note: I run on a Mac and all the commands in this article are meant to be run in Terminal on OS X. You may need to tweak them slightly for your operating system of choice.)

CSS, etc.

I may introduce myself as a Flash Developer but that doesn't mean that I don't care about the rest of the web. With good friends like Andy Budd, Richard Rutter, Paul Annette, and Jeremy Keith living almost a baseball-bat-wave away from me, I'd be scared silly implementing a new site with anything less than pristine markup. So that's what I've strived for here and I hope I've at least come close. (I did use one <br/> tag, for which I feel very dirty indeed!)

Nearly all of the credit for the CSS goes to the excellent YUI Grids CSS library that Rob Knight clued me into via Twitter last week when I was battling with altering the K2 theme on Singularity to make it into a cross-browser three-column fluid layout.

(The scale9-esque fluid download cell is courtesy of the even more rounded corners with CSS technique.)

The HTML content is structured using several Django templates, which are supported by Google's webapp framework.

Finally, the Flash client uses the TabBar component from the open source Yahoo Astra Flash components and Uza's AS3 Global Object to implement several global convenience properties (like the current SWF's URL).

Getting Started

Getting started with The GAE SWF Project couldn't be easier.

1. Download and unzip

First off, download the Google App Engine SDK (includes the local Development Web Server and webapp framework.)

Next, download the latest release of the The GAE SWF Project and unzip it.

(Or, you can check out the unstable, bleeding-edge version from The GAE SWF Project Subversion repository's trunk on OSFlash.)

2. Start the server

Open up Terminal and navigate to the folder you unzipped The GAE SWF Project to. To start the Development Web Server type:

./start

This is a convenience script that I made that starts the Development Web Server and sets the mail server as localhost:5000. You can change these in the script of just use dev_appserver.py . to start it up without mail support.

If you want to monitor the email that gets sent, open up a separate Terminal window and, in The GAE SWF Project folder, type:

./monitor_mail

3. View the app and start hacking!

Now that the app is running, view it in the browser by hitting http://localhost:8080.

You can now open up the source folder and start exploring!

Trace you, trace me, trace it for always...

Wow, did I just paraphrase Lionel Richie?

Anyway, I find it useful to tail the Flash trace log (especially to see trace results in the browser and online). Here's how you do it:

Before you start, you need to enable logging by creating a file called mm.cfg in /Library/Application Support/Macromedia.

In it, enter:

ErrorReportingEnable=1
TraceOutputFileEnable=1

You only need to do this once. After that, whenever you want to tail the log, open up a new Terminal window and type the following, replacing USER with your home folder:

tail -f /Users/USER/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt

Play, enjoy, share, have fun!

As I state on The GAE SWF Project site, I hope that this open source effort will help you to get started quickly with building Flash and Flex application on Google App Engine. In the past few days, I have had more fun developing this than I can remember in a long while. I love Python, I love Django, I love Google App Engine, and I love Flash and Flex. To have them all together... well, that's a dream toolset, right there!

And, there's something to be said about writing your app and then letting Google handle the rest. Personally, I can live with that.

(Oh yes, and I do desperately need to talk to someone at Google about hosting the Singularity conference web application on Google App Engine with regards to the quotas -- if you know whom I should contact, please either let me know directly at aral {at} aralbalkan(.)com or leave a comment below -- thanks!)

The GAE SWF Project is currently a proof-of-concept; it's a three-day old baby that I hope will blossom into a useful resource.

I hope you you enjoy it and I hope that it makes your life a little easier or at least gives you food for thought.

Play with it and let me know what you think in the comments.

SWX PHP AVM2/Flash 9: Status update

I know a lot of your are anxiously awaiting the AVM2/Flash 9 version of SWX PHP so you can start using SWX RPC in your ActionScript 3 and Flex 2/3 projects. I want to update you on where we are on that front.

I'm excited to announce that we have three excellent developers who are currently involved in writing the Flash 9 assembler for SWX and I'd like to introduce you to them.

Richard Lord is an ActionScript, PHP, and all-things-binary guru who by day creates cool Flash games with his company Big Room in London. I met Richard at Flash on the Beach this year and he graciously agreed to help out with the project. Richard's just completed some of the key methods on the SWX 9 assembler and his code is going to make it _much_ easier for us to move on with the rest of it.

Also on the project are two of our newest members, Chris Sperry and Tom Kennett from FlexibleFactory here in Brighton. This uber-geek duo are known as the Flash A-Team here -- because if you have a Flash problem that no one else can solve... well, you get the idea. In their spare time they do things like port Sinclair Spectrum emulators to Flash. And now, they're on board with the Flash 9 version of SWX. Yay!

So things have kicked off and we're working on it. I'll update you guys again when we have more to share.

FlashForward KeyNote at MacWorld

I took notes during the FlashForward keynote at MacWorld today but couldn't post them since I didn't have WiFi in the room. It was a nice keynote and we got some cool sneak peeks at Flash CS3 and Apollo and a fun presentation on Flash on the Wii by Justin. Here are my notes:

I'm sitting in at the FlashForward keynote at MacWorld. Lynda just gave the opening speech and introduced Mike Downey.

Mike: We will be shipping the full production studio for the Mac, including Premiere, Encore and Sound Booth. (This was announced last week.) On Friday, we announced that we have finished and shipped Flex Builder for the Mac. About a month ago we released Photoshop CS3 in beta on Adobe Labs.

Flash Player Adoption update. Flash Player 9 is projected to reach over 70% penetration in its first six months. In comparison, Flash Player 8 took 9 months to reach over 80% and Flash Player 7 took twelve months to break 70% penetration. Basically, the adoption rate of the Flash Player is accelerating with each player release and continues to do so with Flash Player 9.

What's new in the Flash Player 9? Mike focusses on the new virtual machine with ActionScript 3 support and its performance improvements. AS3 is an ECMAScript implementation that uses the W3C DOM Level 3 event model, E4X (ECMAScript for XML), Regular Expressions and runtime error checking.

Mike is showing some example sites that showcase Flash Player 9. He starts with Kuler, Adobe's own online color utility.

In Flash Player 9.1, Adobe added a fullscreen feature. Mike shows the full screen demos linked to from the Labs Wiki. He demos the full-screen panorama made with Papervision 3D, which of course, you can find on OSFlash.

Flash Video has an unbelievable momentum which has mostly picked up following the release of Flash Player 8. Taking Flash Player 7 as the starting point, use of Flash video has grown 800x in the past three years, with the steepest rise taking place in 2006.

Mobile is another area that Flash has a presence in, especially in Japan. In September 2006, FlashLite was deployed on over 150 million handsets. In the US, in partnership with Qualcomm and Verizon, Adobe can distribute the FlashLite player to handsets over the air.

Flash can Wii

Now Justin Everett-Church takes the stage and he's going to talk about the Nintendo Wii. He is showing the Opera browser for the Wii, which, of course, comes with Flash Player 7. He is showing a mashup he did with Yahoo maps. He mentions the resolution of the browser (800x500) can make it difficult to read things and that he is actually doubling the size of his UI to make it more legible on the screen. Good tip.

Now he's showing YouTube and playing back some YouTube video.

Next, he is showing a 3D pool game from TeaGames to show the performance of the player. Looks good.

Now he's showing a game he created a while back called Insane in the Membrance. He loaded a SWF directly. It's not an 800x500 SWF but since it is vector, it scales. The game runs really well. This mirrors my own experience with the Flash Player on the Wii, which is that the player performance is very good.

Mike's returned to the stage now. He's mentioning that the Flash Player is also available on other game consoles. Mike Chambers is now taking the stage to show Flex and Apollo. To recap, Apollo is a cross-operating system runtime that allows developers to leverage their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop RIAs.

He's demoing Ascension, an Apollo-based MP3 player that integrates with the desktop. For example, he's importing the iTunes Music Library from his Mac and using that as a data source for Ascension. He hasn't showed it yet but the coolest thing with Apollo is how easy it is to make cross-platform applications. For example, using Flex Builder, it is as simple as choosing your platforms and compiling. That's it. There is no platform-specific code whatsoever (those of you who have used Zinc, for example, will understand how much easier this will make their lives.)

Ascension also displays HTML pages to show the lyrics for songs. Apollo can do this. In fact, you can create Apollo applications using HTML as a top-level element. Basically, as has been mentioned to death elsewhere, Apollo allows you to use HTML, Flash and PDF in a transparently cross-platform development workflow. Flash and include HTML and Flash, HTML can include Flash and PDF. In short, it's mucho cool!

Now he's showing Flex Builder 2.0.1 on the Mac. The version he's showing has built-in support for Apollo which is not available in the released version. A version with Apollo support will apparently be released in a couple of months.

He shows how easy it is to compile a Flex application into an Apollo application. His sample application has an HTML control that is fully interactive and yet you can apply any Flash-based transformation, effects, etc. to the HTML control.

Now he is showing a mapping application called Maptacular that uses Google Maps, built by Christian Cantrell. It has an HTML control that loads in google maps. He overlays Flex on top the HTML control -- a tree control that is populated by the VCards on his system. He then drags a VCard to the map and it displays its location. Apollo is going to make a whole new type of mashup possible. A dashup, if you will, that combines data from your desktop with web services and the sorts of rich interfaces and interactions made possible with Flash.

Finally, he is showing a tool that is being built by eBay that makes it very easy to create eBay listings. For example, it uses your webcam to create images for your listing, etc.

You can find more information about Apollo at www.adobe.com/go/apollo.

Adobe plans to have a public beta available on Labs in a couple of months so it's getting close. They plan to have a 1.0 release mid to second-half of this year.

Flash CS3 Sneak Peek

Mike Downey is back on stage. OH NO IT'S THE UGLY NEW ICON! (His slide has the new icon for the next release of Flash.)

New UI

He is showing the new UI for Flash CS3. It's beautiful (apart from the icon and the splash screen.) And consistent. The toolbar icons match Photoshop and Illustrator, for example. He relates how they went out to talk to Adobe customers about how to integrate Flash with the existing Adobe tools. One thing many people have not liked about Flash was the Pen Tool. "Drawing with Flash's pen tool is like drawing with your feet" -- a customer quote! So they changed it. Flash CS3 has the same Pen Tool as Illustrator.

Now he is talking about the unique way that Flash treats shapes. This hasn't changed (since it's actually great for animators.) However, they have introduced primitive support to Flash CS3. There are now new tools such as the Rectangle and Oval primitives. (So you can, for example, add rounded corners to a rectangle very easily.)

About the workspace: They've focussed on making the content be the focus of the UI. For example, it's very easy to collapse the timeline and the PI. The toolbar is now a single column (and that saves some screen real-estate itself). You can expand and collapse the Palettes (when collapsed, it comes a single column toolbar where clicking on the buttons displays the Palette for that panel.)

There is also a new workspace drop-down that gives you quick access to your various panel layouts.

Automatic animation to code conversion

Now he is showing the new automatic animation to code feature developed by Robert Penner. Basically, this feature allows you to create a timeline-based animation (with guide layers, etc.), right-click the timline and select Copy Motion as ActionScript 3 and have Flash convert it to time-based ActionScript code that plays back exactly the same way as your timeline animation. The actual animation is written out as XML (using the native E4X support in Flash Player 9). So you can easily modify the settings of an animation without touching the animation engine itself. The only thing it doesn't work with is shape tweens. If nothing else, this feature alone will make it worth the upgrade.

New Photoshop (and Illustrator) importers

Finally, he is showing the new Photoshop importer (they also have the same feature for Illustrator). The new importer tool gives you access to all of the layers in the Photoshop document, including layer folders and layer comps. It recognizes layers with blend modes, text layers, etc. and allows you do to different things depending on the type of the layer. You also have options to Convert layers to Flash Layers, you can selectively choose which layers (or folders) you want to import and you can choose what type of content you want to convert a layer into.

For example, with a Bitmap layer in Photoshop, you can either import it as a flattened bitmap or as a bitmap image with editable layer styles. You can give it an instance name and set its registration point and set compression settings. You can also choose to set the stage size in Flash to match the canvas size in Photoshop and have the importer place the imported layers at their original coordinates.

The compression engine in Flash is now the same quality as the one in Photoshop.

Grant Skinner on the new V3 components in Flash CS3

He mentions that Flash finally understands how to maximize itself correctly.

V3 Components are built for Flash. They are 25%-40% smaller. 10kb smaller base than the Version 2 components (~15kb). Performance: Lower CPU, higher capacity. Customizability: Skinning (visual and programmatic) is made easier, extending the components is much simpler.

He is now doing a simple performance demo with a List component on stage. He is populating it with a million records. He just selected 200,000 records without delay and is scrolling through without any lag. They've also solved the problem that the earlier components had where external content (eg. images) would flicker when scrolled. Now they don't.

Now he's talking about how it is much easier in the Version 3 components to customize the components using skinning. I'm so happy that we finally have a Flash component set that gets skinning right. To skin a component, you just double click the component and you get a skinning dialog box. Select a skin and you can edit it on stage. The skins use Scale-9 so that corners are maintained and skins scale intelligently.

The style manager now also has massively improved performance and you can do runtime style changes on any number of components without lag. You can also use instances in styles so you can use external media, for example, as icons, etc.

He is now showing how they used skinning to create the color sliders in Kuler.

You also get the performance improvements in ActionScript 3. AS3 gives you development productivity using E4X, RegEx, display list, event model, debugging. He is showing a demonstration of E4X with an example of the Yahoo Maps code where a method with over 20 lines of code in ActionScript 2 is reduced to one line of code with E4X. Performance in AS3 is 10x-100x faster. As a demonstration of the performance, Grant is showing a demo by John Grden, with AS2 and AS3 versions. In AS2, it lags with a single model of a ship. In AS3, there are 10 ships flying by. Finally, there are API additions in AS3 such as BinarySocket, ByteArray, computeSpectrum, etc. He is now showing a computeSpectrum demo with some music and a flaming Blaze demo.

Lynda is now taking the stage again and ending off the keynote.

FlashForward Austin Days 1 & 2

I arrived in Austin on Sunday for FlashForward and had a great time presenting my Head Start Flex 2 workshop yesterday.

Right now I'm sitting in on Kevin Lynch's keynote and they're showing a couple of firsts. Big Spaceship just demoed their latest site for Nike using the Flash 9 Player on Linux. The site contains heavy alpha channel video and animation and the player ran it without a glitch. I can't wait to get my hands on that baby. It's going to be great to be able to create Flex applications on Linux and run them in Flash Player 9 on Linux.

Mark Anders has taken the stage and he's currently creating a small Flickr-based application on Flex Builder 2 on OS X. Once this baby and CS3 are released, I don't think I'll have much to do in Windows under Parallels anymore and, as good as Parallels is, I did switch to a Mac to get away from Windows!

Now Mark's talking about Apollo. How it will support HTML, Flash and PDF and integrate them. You can build a Flash based application using Flash Professional or Flex and it gives you access to ActionScript and all of the capabilities of the Flash player. Beyond that you can integrate HTML and PDF into Flash. You can render HTML inside Flash. Or, you can approach it from an HTML perspective. You can build an HTML application that uses SWF and PDF. You have access to operating system APIs, cross-platform (Mac, Windows, Linux.)

Now he's showing, for the first time ever, how to build an application in Apollo on OS X. It's a very early build and it doesn't have all the integration with Flex Builder in the version that he's showing us.

He selects the Apollo Debug Launcher from the Web Browsers preference in Flex Builder 2. He is also changing the tag to (he is changing the same Flickr application that he built a few moments ago.) Apollo gives you complete control over the chrome. You have System Chrome, Window Chrome and Transparent Chrome. He's giving it an icon too. He did all this with a tiny XML configuration file. And now he's running the application as an OS X application. It's cool but the Window control buttons are on the right (they should be on the left.)

They want to have a developer release this year with version 1.0 in 2007.

Kevin's returned to the stage and now he's inviting Justin Everett-Church and Mike Downey to the stage to talk about the Flash Authoring Tool. Justin is demoing the Flash 9 Public Alpha. He mentions the performance difference between AS2 and AS3 applications using a particle demo.

Now Mike's going to show us what they're working on next. A sneak preview of the next version of Flash (this is the first public presentation of the tool, codename Blaze.)

One of the new features is importing Photoshop PSD files. Import -> Import to stage. There is precise control over every layer. He chooses a PSD file and you can see all the layers, layer groups, layer comps and you can make choices about each layer separately. The options include "Make text editable" (so that text imported from PSD files is editable in Flash). He selects a Folder. And asks everything in that folder to be made into a MovieClip and he gives it an instance name and sets is registration point (the crowd loves it - claps!) They're also supporting layer modes -- drop shadows, blurs, etc. -- and covert them to the Flash format.

Also, Photoshop JPEG format looks better so they swapped out the compression engine in Flash to use the one in the next version of Photoshop.

You can convert layers to keyframes. You can set the Flash stage to the same size as your photoshop document window. (This is all still in the Photoshop import wizard.)

Looks like this is the first step towards much tighter integration with Photoshop.

He's going to show one other thing. An innovative feature. In a lot of Flash teams, there is a workflow where a designer will prototype the site on the timeline and then the developer would rip it all apart and then recreate the animations, etc., in ActionScript, optimize, etc. There is an inherent loss of fidelity as you go through the process. Breeding discontent between "designers" and "developers". Code-based animation. So they hired Robert Penner (who now works on the Flash team and he's working on the feature Mike's showing now.)

There is a traditional timeline animation of a bug moving around the stage, following a motion path, changing size, alpha, etc. So it's a complex timeline animation. Select any span of animation, right-click, Copy Motion as ActionScript 3. So the feature walks the timeline and converts the timeline-based animation into an XML structure using E4X and then copies it to the clipboard.

He creates a copy of the first movie clip and then adds the code. The timeline-based animation and the coded animation are identical.

You can also that this animation code into Flex Builder and it will work in Flex.

This is quite an amazing feature and they're still refining it and working on the interface.

The last thing he's going to mention is components. People want smaller components. And components that are very easy to skin. So they decided to build that and base it on the same architecture as Flex but very lightweight. Instead of Adobe building them, they hired Flash developers to build them. So they hired Metallic and Beau Amber and Grant Skinner. (Beau's going to give a sneak peek of the components.)






Bad Behavior has blocked 0 access attempts in the last 7 days.