Archive for April, 2007

Roadmap for SWX 0.3

I'm still in Toronto (I fly back to my beloved Brighton on Wednesday) and working on SWX whenever I get a chance.

Yesterday, I spent some time working on a higher-level SWX library which will make its way into the SWX 0.3 release (yep, we're skipping to a whole new minor version number with the next release). The library/API also makes it easier to build Flash Lite applications with SWX as it provides classes that handle usual Flash Lite gotchas (such as the highly annoying ActionScript stuck error and loadMovie limitations). Of course, you will also still be able to use SWX without the library.

I'm probably going to be jetlagged for a few days when I get back but I do expect to have the 0.3 release out by the end of this week.

In the meanwhile, check out the SWX Alpha 0.2.1 release I made two days ago that brings compression to SWX.

SWX files are now compressed by default. You can set the compression level of the SWX gateway by modifying the compressionLevel setting in the SWX configuration file (php/swx_config.php). Valid values range from 0 (no compression; fastest) to 9 (maximum compression; slowest).

Otherwise, the only other addition to the 0.2.1 release is a very simple Flash Lite 2.1 example. Please note that POST appears to be broken in loadMovie() in Flash Lite 2.1 so make sure you use GET instead. This is not a huge limitation as the amount of data you send from the client to the server in mobile applications is usually quite small and should fit within the limits imposed by GET. However, I have already brought this issue to the attention of several people at Adobe at FITC and I will be working with them to make sure that this gets fixed in future versions of Flash Lite.

Flash Lite and Mobile Development

Notes from Dave Yang and Dongyub Lee's session at FITC.

Dave starts off the session.

MGMaps: Grabs maps from Google maps and uses GPS to locate you on your mobile phone.
Streaming video: He's showing us the Slingbox Mobile Player.

He's showing a QR Code example:

  • Firefox extension: tinyurl.com/36evg6
  • Kaywa Reader: http://reader.kaywa.com
  • Kaywa Generator: http://qrcode.kaywa.com
  • Nokia: 83.145.232.112

RFID (inventory tracking, sales info, security, transportation, games). Requires hardware reader/receiver. More expensive than QR Code.

Dongyub takes the stage.

Flashlite works on a range of embedded devices:

  • MP3 players (e.g., iRiver)
  • PMP (portable multimedia player; PMC; MP4 player)
  • Mobile phones
  • PDA
  • Other: Digital setup box, medical devices

He's going to demonstrate several such devices for us:

  • iRiver Clix1 / U10 (Flashlite 1.1, Flash UI)
  • Lupo Carrot Kids (edutainment device for kids; similar to Nintendo DS) - Setup, Contents pack - looks very cool!
  • Samsung M4500 (comes with Flashlite) - Apocket.com, MyUI (a customizable home automation controller UI)
  • Yukyung Viliv P1 (PMP player) - Flash UI, Flash games

Others:

B20, E10, clix2, etc.

UI Trends/timeline:

  • Text UI: Black and white
  • Bitmap symbols - color
  • Animated icons (flip images)
  • 3D rendered images
  • Flash UI - motion graphics with simple shapes

Dave's back on the mike.

Common mobile OS and platforms:

  • Symbian S40/60/90/UIQ
  • Windows Mobile
  • BREW
  • Palm (new Linux platform announced)
  • OSX (upcoming)
  • J2ME
    Opera/Ajax

Phones, etc., but also gaming consoles (Wii, PS3, PSP), Cameras, GPS, dashboard displays, TVs, Chumby, set-top box, iTV, etc. For more see http://adobe.com/mobile/supported_devices/

Flashlite versions:

  • Flashlite 2.1 MMI - latest version
  • Flashlite 3 is coming
  • Flash Player for PocketPC
  • Neo MTEL GUI engine (90% compatible with Flash 7)
  • Digitalaria Mobile Flash (based on Flash 4 -- been around for 7 years or so ago)

Interfacing with the device:

  • FSCommand2: send commands/query host
  • Functions called in the SWF from the host (callbacks for incoming calls, etc.)
  • Use an external files (loadMovie, loadVariables)
  • Key events

Typical project:

  1. Device manufacturer: firmware programming
  2. Designer: graphic design
  3. Device manufacturer: User interface logic, program logic, application dev.

Flashlite project:

  • Project manager: Interface management
  • Flashlite Dev: Graphic design, user interface logic, application dev
  • Device manufacturer: Firmware programming, program logic

Flashlite projects thus save time as the Flash team can work independently from the device manufacturer.

Dongyub is now showing the iRiver Clix2. Comes with Flash standalone player.

Flashlite 2 supports device video (native video format). Video is played on top of Flash. Minimal interactivity. Flashlite 3 supports streaming from FMS.

Symbian:

SWF2Go: Packages SWF, icon, and other content as a .sis installer. S2G-FITC (10% promo code). http:/www.orison.biz/store

Distribution:

Verizon wireless (BREW/USA only): Over-the-air delivery (auto download of Flashlite player)
Symbian:

Resources:

More to come:

  • FlashCast
  • FlashHome
  • Flash Lite 3

Flash CS3 Components

Notes from Grant's talk on the new Flash CS3 Components at FITC 2007.

Core philosophy: Build a component set targeted at rich experience creators.

Main objectives

  • Size and performance: Reduce file size for downloads and minimuze CPU/memory impact
  • Easy skinning & stlying: Simplify the workflow for customizing the appearance of components
  • Extensibility: Make the architecture more approachable to encourage customization
  • Knowledge portability: Ensure user knowledge can be transferred from the Version 2 components and Flex.

Size and performance

Size:

  • Reduced size vs. v2 by 25-40% (depending on components used)
  • Base size: ~10kb smaller than v2 (27KB vs. 17KB). ~110kb smaller than Flex 2.

Performance

  • Lower CPU, higher capacity.
  • Inherent AS3 performance gains.
  • Also took advantage of new features: event model, strong typing, Dictionary.
  • No more recursive lookups.

He's showing a demo of a List component with 1,000,000 items in the list and it's scrolling smoothly. He selects 100,000 items and it's almost instantaneous.

Skinning and styling: simplicity and power

Visual skinning

Process:

  1. Drop component on stage.
  2. Double-click component.
  3. Edit assets.
  4. Rinse, repeat.

Tip: You can use graphic symbols with Scale-9 for sharing component assets.

Limitation: No author-time preview

Everything is visually editable.

You can also use programmatic skinning if you want to.

Process:

  • Option 1: Bind a class to the skin clip
  • Option 2: Write timeline code on the skin clip

You just need to expose the width and height setters.

Stlying:

Styling lets you apply skins, text formats, and other style settings to instances, all components, or all components of a certain type.

Usage:

import fl.managers.StyleManager;
 
// Change a style on a single instance
myInstance.setStyle("styleName", styleValue);
 
// Change a style for all components
StyleManager.setStyle("styleName", styleValue);
 
// Change a style for instances of a specific component
StyleManager.setComponentStyle(component, "styleName", styleValue);

Styling no longer causes an inefficient recursive look-up system. So you can style at runtime without a performance hit.

Instances as skins:

Advanced feature. You can now use an instance as a component's skin.

Demo: Using a dynamically loaded asset as an icon skin. Grant loads a semi-transparent PNG using a Loader and sets it as the icon for a button.

Demo: Using instance skins to programmatically skin a slide. This rocks: Grant passes a Sprite instance as the track skin for a slider and updates the gradient fill in it at runtime.

Note: Only a single component instance can use an instance as a skin.

Lists: TileList, DataProvider and CellRenderer

TileList: New list type.

DataProviders

No longer obscured as an Array mix-in. Mandatory for use with lists. Sync multiple lists using the same DP.

// data can be an Array, XML, etc.
myList.dataProvider = new DataProvider(data);

Methods: addItem, removeItem, replaceItem, merge, invalidate, sort, toArray, etc.

Events: DataChange and PreDataChange events show the type (add, remove, replace, sort) and the indexes/items affected.

CellRenderer

Extend the CellRenderer class to create your own custom cell renderer.

import fl.controls.listClasses.CellRenderer;
 
public class MyRenderer extends CellRenderer
{
	// ...
}

Or implement ICellRenderer: x, y, data, listData, selected, setSize, setMouseState.

Architecture: behind the scenes

Shallow, linear class hierarchy without mixins and a clear inheritance structure (limited use of composition). Makes use of protected members with few private or namespace-protected members. In short, you can extend pretty much anything. Uses consistent coding standards.

To create your own components, you extend UIComponent and can, if you want to, make use of the InvalidationType, ComponentEvent, StyleManager and FocusManager classes.

To create a custom list called MyList, for example, you would extend the SelectableList class, which extends BaseScrollPane, which extends UIComponent. Although the list classes are probably among the most complicated, the inheritance hierarchy is relatively shallow.

The framework allows for the granular invalidation of specific aspects of a component. e.g., foo.invalidate(InvalidationType.SIZE); All invalidated aspects of a component get redrawn at the next RenderEvent.

There is a registration-based style model where components register for specific styles. Supports style inheritance and pass-through styles.

The components support smooth scrolling (pixel level scrolling on all List-based components, as opposed to cell-level scrolling).

The framework has smart renderer reuse. Renderers are reused intelligently, leading to less flicker than in the Version 2 components.

The Bad

Although the components are a huge step forward when compared to the Version 2 components, Grant wants to point out some of their limitations. These include:

  • No databinding or data components. These features are apparently not commonly used in the the experience market.
  • No CSS (uses a simplified style model instead).
  • No tree or accordion components.
  • API variances (some component interfaces differ from those in Flex 2).

This was a hugely informative session and was very well presented.

Memo to the CEO in Edutech NTE Podcast

Pauline McNamara presents a 13 minute edit of my Memo to the CEO talk from last year's Flash on the Beach conference on the latest episode of the Edutech NTE Podcast. Listen to it here.

FITC 2007 Retrospective

Web conferences are paradoxical in that you usually have the worst Internet access ever at them so I've essentially been offline for the duration of the otherwise excellent FITC conference in Toronto.

FITC for me was three days of being reunited with friends and attending inspiring and informational sessions. There was a really great line-up this year and I actually preferred the new venue at the Hilton hotel. I felt that having the conference rooms closer together made it easier for me to attend more of the talks and the event just felt more focussed, somehow, thanks to the layout of the venue.

I also enjoyed being in downtown Toronto with its myriad of dining options and spectacular city views.

The highlights of the conference for me were the awards ceremony where Papervision3D won Best Experimental and the all important People's Choice award (congratulations to Carlos, Ralph, and John as well as Liber for convincing Carlos to go open source with the project), John Grden's guitar solos and Chris Allen's trombone playing during their Red5 session, John Maeda's talk on simplicity (a theme that I am quite fond of myself), Dave Yang and Dongyub Lee's talk on Flash Lite and Mobile Development, Mario's talk on image analysis and generative art, and Grant's talk on the new AS3 components in Flash CS3 (it's always great to hear about things straight from the horse's mouth -- not that Grant's mouth is anything like that of a horse!)

I took notes feverishly during Grant and Dave's talks and will blog them shortly (once I type out the hand-written bits that I scribbled down when I ran out of juice on my Mac).

I also felt that my own talk on Rediscovering Fun was really well received. It was wonderful to present SWX for the first time at an international conference. Based on conversations I had with some of my friends at FITC, it looks like they are getting excited about SWX.

One point that became increasingly clear in my conversations is that SWX is going to be the way to create data-driven Flash Lite applications.

I quickly hacked together a simple Flash Lite demo to show SWX running on my mobile phone. (One caveat, currently, is that POST doesn't appear to work with LoadMovie on Flash Lite 2.1 so you have to use GET. This should not be a big deal since the data you send from the client to the server in mobile applications is usually minimal in size.) As SWX uses native SWF bytecode for data exchange and has no processing hit for deserializaion, it is a far better solution to parsing XML or using LoadVars on processor-challenged mobile devices. In short, if you are building Flash Lite applications, you should start looking into SWX.

I also had a great conversation with Mike Downey that was filmed and should be released on the web shortly. I'll post a link to it when it becomes available.

In short, FITC was a blast! Thanks go to Shawn, Naomi, and the rest of the organizational committee, as well as the tireless FITC volunteers for staging a wonderful conference.

Here's looking forward to FITC Amsterdam!

Great news: Adobe Open Sources Flex

I had a lovely surprise when woke up a few moments ago and read the OSFlash mailing list this morning: There was an email from Mike Chambers announcing that Adobe intends to release Flex as open source under the MPL license. This follows hot on the heals of Adobe releasing the the ActionScript Virtual Machine to the Mozilla Foundation under the Tamarin project.

What a great move! I love you guys!

This is exactly the right move Adobe needed to make to compete with Microsoft and guarantee the longevity of the platform and a healthy future for Flash/Flex developers. I want to thank Adobe for looking past immediate-term profit and having the foresight to make such an intelligent, long-term decision. It's not always easy when you have shareholders to appease with quarter-on-quarter growth figures.

Adobe has a press release and FAQ regarding the announcement that detail Adobe's intentions, including which parts of Flex will be open sourced. Currently, Adobe will be releasing as open source, "all of the components of the Flex SDK needed to create Flex applications, including the Java source code for the ActionScript and MXML compilers, the ActionScript debugger, and the ActionScript libraries that make up the core Flex framework."

As a potential limitation, the FAQ does state that "due to restrictions on some components that have been licensed from third parties or come from other Adobe products, some portions of the current free Flex 2 SDK may be made available in binary form only."

Flex Builder will not be released as open source. (And that's all right -- it's the SDK and compilers that are important.) According to Matt Chotin from Adobe, the source for Flex Charts will also remain closed (although you do receive the source if you purchase it.)

So when will Flex be open sourced? According to the press release:

Starting this summer with the pre-release versions of the next release of the Flex product line, code named “Moxie,” Adobe will post daily software builds of the Flex SDK on a public download site with a public bug database. The release of open source Flex under the MPL will occur in conjunction with the final release of Moxie, currently scheduled for the second half of 2007.

Matt Chotin also confirmed, in response to a question by Robin Hilliard, that it is their intention to start releasing daily builds from June and that SVN access will probably not be available until December, or "before the release of Flex 3".

If you want to learn more and get involved, take a look at Adobe's Flex Open Source Google Talk group.

Notes from the Adobe keynote at FITC

These are the notes from the Adobe keynote at FITC. The areas in emphasis (like this one) are my thoughts and comments. The highlight of the presentation for me was the new information released on Flex Builder 3 and the latest statistics for Flash Player 9.

Latest statistics for the Flash Player to be officially released this week:

Player 9: Out for nine months. Has now surpassed the 80% mark. 83.4% now.

This is great news and the fastest penetration of any Flash Player version.

Mike shows off Papervision 3D to demonstrate the performance of the new AVM in Flash Player 9 and then demoes full-screen video.

What's next for the Flash Player?

Tamarin (the open source ActionScript Virtual Engine).

This week, you can contribute to what's going on. Tomorrow in Toronto I, you can join the Flash Player team and give them your feedback on the player. Tuesday, there's a session for Flex where you can give feedback to the Flex team.

CS3 is now shipping.

Integrating the workflows between Photoshop and Flash and Flex, Illustrator and Flash and Flex.

Mike's demoing Flash CS3 Professional. Flash, Photoshop and Illustrator now have the same user interface. The first time there's a docked interface on the Mac. This is the first version of Flash that I'd consider *usable* on the Mac -- it rocks!

You can shrink panels into icons to maximize screen real estate. The timeline itself is a full-featured panel so you can drag it out, you can put it on a second monitor, dock it, etc.

Mike's favorite feature in Flash CS3: Ability to import Photoshop files into Flash -- the new Photoshop importer. Flash can preserve Photoshop vector objects on vector layers. You can also translate certain blend modes and keep them editable. You can have text made editable when imported into Flash (won't work for text on a path or any other text feature that is not available in Flash.) Lots of flexibility in how you can import your PSD files.

You can select any layer and make that layer into a MovieClip and set the registration point. You can also put layers into a folder and then make that folder into a MovieClip. You can even nest MovieClips that way. You can also give them an instance name.

Now Flash uses the Photoshop JPEG compression engine. You can set compression per asset in the importer interface.

There's also an Illustrator importer. When you bring Illustrator vectors into Flash, the fidelity of your Bezier curves is preserved much better (even with copy and paste, which was also improved.)

Mike's second favorite feature: Automatic timeline animation to ActionScript animation conversion (Robert Penner created this feature.) He's showing an animation that has an animated blur and follows a motion guide.He selects the tween -> right click -> Copy Motion as ActionScript 3.0 and copies that timeline animation to the clipboard as code. (You can paste this code into Flex too.) The animation is described in XML and uses E4X to parse it and recreate the motion via an animation class that Robert wrote.

Also lots of innovation going on in the Flex community. Mike introduces Ted Patrick to talk about this.

Ted's been doing Flash for ten years. Ted loves the timeline. Flash and Flex have been a little distant -- too distant. What Ted's talking about is going to be released tomorrow morning: Bringing Flash and Flex together. Allow Flash developers to create high-end components for Flex. Anyone doing Flash today can create Flex components.

This is new! Cool!

Use Flash CS3 to create Flex components. The components are SWC files.

  • Convert your existing movie clips into Flex components in a few easy steps.
  • You can use keyframes to denote states and state transitions. You can skin controls these way.
  • Event integration. You can broadcast events from Flash and have Flex listen for those and capture them.
  • CTRL+Enter SWC Export.

He's showing an example:

There's a car movie clip with interactions, etc. Clicks it and chooses to make it into a Flex component. Publishes it. In Flex the adds the SWC to his project's library. Then he adds the car to his Flex application and writes <fl:NameOfComponent /> in Flex to add it to his application.

This is really cool: It's going to make it very easy for Flash developers to make Flex components without any specialized knowledge of the Flex framework.

Kevin Towes, product manager of Flash Media Server, is coming on stage to talk about Flash Video.

OK, he's doing a Flash Media Server infomercial. Boring -- sounds like a sales pitch. Tells me nothing about what I can do with this stuff. There's a new video encoder that's free but is the whole thing free? Will people need to buy Flash Media Server? How is this different from outputting video from the Flash IDE? I don't get it.

Mike's back and is going to talk about Apollo.

Apollo is a cross-operating system runtime (Mac, PC, Linux) that allows web developers to leverage their existing skills to build and deploy RIAs to the desktop. He's showing the ebay Apollo app. The net connection goes down. Why can't tech conferences get the Net connection right? Or hotels, for that matter.

He's showing an example that does work offline: An HTML-based application. Entire application created in HTML and converted to an Apollo application. It caches content locally so that you can use it offline. Mike's offline. The app works. Cool. :)

Later in the year, when they release Apollo 1.0, they'll also be releasing extensions for Dreamweaver and Flash to build Apollo applications. And you can use Flex Builder today to build Apollo applications or the free Apollo and Flex SDKs.

He's showing the first Apollo application that Adobe has built called Adobe Media Player. It's not yet publicly available but he's going to show a sneak peek of it. It's coming out in beta in a few months and will ship alongside Apollo.

It works for viewing FLV files by double-clicking on them. (You can register extensions with Apollo.) It uses RSS feeds of video (including metadata like thumbnails, etc.)

He has shows that he has subscribed to. In the feed there's metadata used to skin the interface. You can also deliver ad banners through the feed.

Are Adobe taking on iTunes?

You'll be able to create a feed and distribute it through the Adobe Media Player.

With Apollo you can build full-featured desktop applications. Some of the top features:

  • Online/offline
  • File IO/local data storage
  • Custom chrome
  • System notifications and alerts
  • Mliti-window support
  • Drag/drop
  • Copy/paste
  • Applications can run in the background
  • Network APIs
  • Application update
  • Content protection
  • And more...

Ted's back, talking about Flex.

The next version of Flex is going to be delivered this calendar year.

He's going to show a preview of Flex Builder 3.

What is Flex? A way to make SWF files. It is for developers. It is for making applications. You can deploy to the web (Flash Player) and to the desktop (Apollo).

Ted's showing picnik -- an online photo application made with Flex 2.

Another Flex 2 app: SlideRocket. I can't find this app online -- I must've gotten the name wrong. Anyone know the actual name? Thanks, Simon! For creating presentations. You create your slides online and then you can download your slides/assets and run them offline through Apollo.

He's now showing Buzzword.

The next Flex, code name "Moxie":

  • Integrate with CS3 suite: Flash, Fireworks, Illustrator and Photoshop.
  • Language intelligence (refactoring support and better code hinting, better search inside code -- all instances of a certain class).
  • Integrated profiler
  • Design view enhancements
  • Data integration/generation (back-end neutral -- will support languages other than Java. e.g., PHP)
  • Enhanced datagrid and lists.

I'm very excited about the back-end neutrality and the additional language intelligence in Flex Builder 3. Refactoring support is going to be a huge productivity booster and the integrated profiler should prove very useful.

That's it! Mike Downey just made some closing comments and the keynote is over.

FITC 2007

I arrived in Canada yesterday afternoon after a bearable eight-hour flight from London and proceeded to sleep for the next seven hours, waking at about 4.30am this morning, Toronto time.

Had a great breakfast at the Hilton (finally, a major hotel that has real freshly-squeezed orange juice) and looked in on the preparations for the conference.

If you want to follow the conference, I'm going to be posting pictures (there are a few there already), twittering and blogging daily updates.

Feels like it's going to be a great conference. For me, it kicks off this afternoon as I step in at the last moment to do a talk at the Minimax pre-conference event.

Twittercode 1080p



Twittercode 1080p, originally uploaded by aralbalkan.

I played a little with the Twittercode idea this afternoon -- it should make a great little installation piece. The cool thing about it is that you can actually take the content with you and interact with it even though you're viewing it on a wall somewhere. If a Twitter update has a URL in it, for example, and you view it with your phone, you have the whole text, including the clickable link, on your phone.

Twittercode

Twittercode. Made with SWX. You can find out more about SWX at swxformat.org. Follow me on Twitter.

Playing with my new Nokia N95, I saw that it comes with a barcode reader. How cool! And Nokia has a site where you can make your own barcodes. Nice! :) Oh, and look, the API they're using is RESTful. And, by the way, did I mention that I love Twitter? :P






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