onrails.org home

360Flex - Day one.

08:00am sitting at the Denny’s down of the Ebay conference center where the 360Flex Conference is starting. There seems to be a already a large coverage in the blog community of the 360flex conference…so I’ll be rather brief and just provide what strikes me at each of the presentation I will attend. I will update this blog entry as the conference moves on.

I am currently making up my mind as to which talk to attend here after is a first pass at my list.

08:10 All right I am at the conference. Pretty well organized the facilities and the conference room is pretty impressive…and they have Starbucks coffee. The room is mostly already full.

Day 1

08:30am Keynote: The Magic of Flex by Mark Anders
1st Flex specific conference. Mark asks how many are Flash developers in the audience. It’s the minority, about 30 hands raised. Flex is the way to create Flash stuff in a developer friendly way. MXML Mark shows some SVG components and demonstrates how MXML ties in with Actionscript classes. Databinding He demonstrates databinding to change the gradients of an svg components without coding using. His Microsoft ghost is chasing him…his Mac froze and is now rebooting. He blames it on Powerpoint that runs Rosetta. Composition New controls can be build by composing other controls. Mark show several components that different people created such as the fisheye component and an cool RSSReader that smokes. States allowing to build liquid interface declaratively. He demonstrate in FlexBuilder how to create a little Flickr Browser that has two states, the search state that just shows the search box and the result state that also displays the results. It’s Flash! Flex is powerful thanks to the underlying Flash engine. He demonstrates some Flex application that use the full power of Flash: Picnik and Buzzword from Virtual Ubiquity. ActionScript 3 He now starts the new version of the Flash IDE and show a “Ring of Fire” rendering application and compares the AS3 and AS3 application…the crowd claps as it shows off fast AS3 is. An Exciting Future He invites Mike Downey on stage to show Apollo. Mike will show the new things you can do with Flex using Apollo to build cross-operating system applications that can do things like accessing the local files, run online/offlie, full drag-and-drop between the Desktop and the application, clipboard access and more…Mike shows Buzzword as an Apollo application. He shows gTimer, an Apollo time tracking application written by Grant Skinner. He goes on to show Maptacular which overlays a Flex app with Google Maps. The last app shown is Scout, written by Christian Cantrell that is an Html inspector ala Firebug. Flex 3 Mark is now back on stage and is talking about what they are working on with Flex 3. Designer/developer workflow. Make it easier to integrate Flex with existing services and enabling richer data display and manipulation (live data). Building Apollo applications from FlexBuilder and embed Html (real browser) in a Flex application. Increase developer productivity. Timeline: First half 2007 will see the release of public labs release of Apollo and Flex 3 (“Moxie”). In the second half the first version of Apollo and Flex 3 will be release. That’s it!

08:55am Apollo APIs by Christian Cantrell He writes Apollo application as Apollo is being developed. Everything he talks about is subject to change. He is writing real-world usage, cool Apollo applications to provide feed back to the Apollo development team. Apollo is based on the Flash Player, and provides Flash, Flex, Javascript and Apollo APIs. NativeWindow allows to use native OS windows with Flash, Flesh or HTML content, supporting full transparency. He is doing all his work from FlexBuilder and will not show some demo applications. HTMLEditor, allows to edit html that shows a system chrome. Lookup application that demonstrate an Apollo window which is a Apollo look and feel chrome that provides it’s own close, maximize buttons and window scrollbars. PixelPerfect that is a pure Actionscript based application that demonstrates a custom chrome which is a transparent ruler application that allows to pixel measure your Desktop. ScreenPlay an application that has no chrome and allows to draw on the desktop and highlight anything on the Desktop. File System APIs File extends FileReference. File objects are pointers to files and directories. File APIs can be Synchronous and Asynchronous. Threading is not accessible to the developers. URL Schemes file:, app-resource, app-storage:. Two more demos. FileBrowser, that supports full drag and drop file operations. FileComponentTest that allows to view folders in Tree, List or Grid view and is written in 47 lines of MXML code. HTMLControl is a display object than can display HTML, it’s an embedded browser (without chrome) build using Khtml (WebKit). Has loadString function to load content, adds to the URLRequest class. Script Bridging allows scripting between Actionscript and Javascript. References to object can be passed between the two environments. I.e. an Actionscript event can be attached to a Dom object. The Flex HTML Components Allows to add an HTMControl to a Flex container. Some more demos. Scout, the html inspector. He now use the dom tree to select an item on the google home page, then edit it and the changes are directly rendered. Assassin, an application to watch items on Amazon. He want’s to know when Halo 3 is available or when the rating changes. Shell provides access to shell or runtime facilities. I.e. when all the windows applications close then developers can decide if the application closes. Or find out which window has the focus, or close the application. Network Detection Event.NETWORK_CHANGE event to listen if the application goes online/offline. He mentions an application for Doctors that need to be offline when they do house calls but still need to have access to the application. Apollo will provide a framework around this. The important fact is not wether the application is online or not, but wether the application can access the external services is need. He now shows the OCD application that uses the ServiceDetector class to listens to the ServiceEvent.SERVICE_AVAILABLE and ServiceEvent.SERVICE_UNAVAILABLE events. InvokeEvent tell every time the application is invoked. Provides control to the application what to do when the run is clicked again, some application just will do nothing or bring the application in front, another may open a new tab, another may create a new window. He demos now InvokeTest and PixelPerfect to demonstrate this. A question from the audience was if you can grab pixels from the desktop. Christian mentions that they are no APIs for that and he wasn’t sure why, maybe a security constraint. Application Update API to make updating your applications easier. The runtime allows to update the application and restart it from within the application. There is still some code left to be provided (when to update, data migrations). They currently provide a bar minimum framework for this and may build some higher level framework on top of it. Managing Multiple Displays currently doesn’t work in the latest build. Screen class. Screen.screens returns an array of Screen objects. Screen.mainScreen returns the primary screen. Screen.visibleBounds allows to properly align the screens. URLRequest changes support for arbitrary methods: GET, POST, HEAD, PUT, etc. Allows more HTTP header flexibility. Security A question from the audience is what about security. The answer is yes, but Christian is not providing details on the model, he just mentions that they are looking into. But he mentions that Apollo allows to write “bad” apps like in other frameworks. They will be more information on that closer to the launch of Apollo.
Icons Apollo handle platform independent icon conversion. The minimum is 128×128. Installation You need to install the Apollo runtime to deploy an application. So an application cannot be deployed without the run time. Future Apollo APIs Menus, Drag&Drop, File extension registration, System notifications. That’s it!. Q&A Q:When will it be available? A: Pretty soon. (Someone in the room mentions before the 16th).

02:05pm Flex loves Flash? Embed and Beyond by Grant Skinner He will show us know where we are and let us make the call if Flex loves Flash. The workflow is not well integrated at the tool level for now. Embed metatag [Embed(source=…)], compiler directive “@Embed”, style directive upSkin:Embed(source=…). The Flex compiler doesn’t do a great job bringing in SVG it also drops annimations and as sizing issues. From a workflow point of view the issue is than when importing images into Flex the images cannot be resized and transformed if needed without going back to the original editing tool and re-exporting it. Grant now goes into the details of embed fonts. Flash bitmaps font cannot be embedded. Raw binary data can also be embedded by using mimeType=‘application/octect-stream’. Grant now goes on prepping why using Flash with Flex is a good thing by exploring 6 challenges. Challenge 1 – Prepping and managing assets isn’t fun in Flex. Embed(source=“mySWF.swf”, symbol=“SymbolName”) to access Flash symbol that are in an Flash library. This allow to centralize all your assets into one Flash file. He now shows an Flash command that allows to generate a Flex class (SimpleAssetLibrary) to provide access to Flex for all the embedded Flash assets. Challenge 2 Flex doesn’t have a lot of love for designers or their tools. But…Flash 9 has really good support to import Photoshop images. And preserves layers, folder names, vector assets, text and allows to map these assets in different ways. So Flash is a really good intermediary between Flex and Photoshop. Challenge 3 Flex ain’t so good with fonts. Flash can help out by embedding all the fonts into Flash then using them from Flex. This does allow to use Flash bitmap fonts. It’s not quite straight forward yet as the Flash Font symbol needs to be referred to by using the system generated class name (i.e. Arial_12pt_st). To find out this font names you can iterate over the embedded font returned by Font.enumeratedFonts(false). Challenge 4 Flex hates Flash ActionScript. It can be done…but I may not quote Grant correctly here. But a swf file can be embedded as an octet-stream, the loaded using a loader and access to the class can then be done using the ApplicationDomain. If we go beyond embed we can get better results by exporting your FlashCS3 application into a .swc file. And Flex can then import and use that .swc file. Challenge 5 Flex is stuck up. Flex doesn’t love the Flash display symbols. Make it a child of UIComponent or wrap it in a class that extends IUIComponent. He wrote a DisplayObjectWrapper that is a generic solution for this issue. A better approach would we that Flash components developers support the IUIComponent or extend something that does (FlashSymbol, name still to be determined). Challenge 6 Run-time loading of Flash content. Load Swf into Loader. ApplicationDomain.getReference to get access to the symbol, then wrap into a DisplayObject. It’s tricky to work with Icons and other aspects as an AssetClass needs to be extended. Flash v3 components will work in Flex. See his blog and talk page for more info.

03:30pm Introduction to Apollo by Mike Chambers. After a brief introduction of what Apollo is, Mike shows some demo applications. Ascension – a sound visualizer that can load your iTunes library and visualize the playing music, load the album art from Amazon and images from Flickr regarding the album and artist. The Apollo run-time target size is between 5 and 10 Mb. Mike provides an overview of the APIs. He demonstrates now using FlexBuilder how to get started with an Apollo application. All applications start with two files, the main.mxml file that is a Flex application with the mx:ApolloApplication as root component file and an .xml application descriptor file providing additional information on how to build the Apollo application such a system icons to use, the main contain (main.mxml).

04:00pm Flex Apps Faster with WebORB – Well it seems that I had some issues with MarsEdit the soft I use writing these entries I lost all the coverage of the WebORB presentation and the last bit of the Apollo presentation. Mark presented the benefits of WebORB over traditional approaches using HttpServices or WebServices by demonstrating some applications which take around 6 seconds to perform 50 remote calls and the sames calls using WebORB take less than 1 seconds. Mark goes on showing the benefits of using WebORB Data Management services that allow to generate much of the plumbing required to interact between Flex and .Net, PHP, and later on Rub y On Rails.

Fork me on GitHub