ria: Category

Category: ria

You can stop waiting, its been released.

Posted At: April 9, 2008 9:04 PM | Posted By: Jeff Tapper
Related Categories: actionscript3, adobe, as3, books, flex, flex3, ria

I’m a bit late in releasing this news, but our “Flex 3 Training from the source book” was released last week, and is now available from our publisher, as well as the major online bookstores such as Amazon, and Barnes and Noble. Speaking of Amazon, we are currently the #843 best selling of all their books, #15 in the Computers and Internet / Software category, and #8 in Computers and Internet / Programming. Thanks to all of you who have bought our book, and pushed the sales ranks so high. Anyhow, I know folks have been asking me for months when this book would finally be released, and the answer is, last week. Enjoy.

Comments (5)

Hey, what am I doing on blogs.digitalprimates.net?

Posted At: December 6, 2007 10:12 AM | Posted By: Jeff Tapper
Related Categories: actionscript3, as3, books, enterprise, flashplayer, flex, flex2, flex3, FMS, ria

I've been a bit slow in getting this announcement out, as I see several other bloggers have already posted on this, but the rumors are true.  Tapper, Nimer and Associates. Inc. has teamed up with Digital Primates Inc.    Some of you may recall, it was just over a year ago that I teamed up with Mike Nimer to form Tapper, Nimer and Associates.  It's quite an odd experience for me to go from a solo propietorship to a team of 15 or so developers in about 16 months.   With all the great minds from both our companies working together, we will be able to help more customer on bigger and better projects.  

Many of you probably know Mike Labriola for his work on custom Flex Components, he has extended the Flex framework in ways that the developers at Adobe never even imagined.  He is also frequently speaking at conferences and User groups.  Both Nimer and I ran across him at dozens of speaking events across the country, and as we talked, we found there were far more similarities between us then differences. 

One of our first meetings at a conference ended up with him as a co-author on the Flex 2 book.  A year and a half of meeting at conferences later, and we were helping each other out on projects so frequently that it made sense to explore further integrating our companies.  When the opportunity for Nimer and I to join forces with him and his company, it was much too enticing to pass up.

We are looking forward to doing great work together, continuing to build cutting-edge applications for our clients, continuing to teach the world to build better RIAs, and continuing to serve the community. 

Comments (0)

FlexManiacs 2007 – Getting Started with Apollo

Posted At: June 27, 2007 12:06 PM | Posted By: Jeff Tapper
Related Categories: actionscript3, adobe, apollo, as3, flash9, flashplayer, flex2, flex3, fp9, ria

As promised, here are the starting files from my "FlexManiacs 2007 – Getting Started with Apollo" session.  Thanks for attending my session, I hope you enjoyed it and the FlexManiacs Conference.

Overall, i thought this conference was a great success.  Many attendees of all levels.  Great networking, Great debates, and an all around good time.

Comments (8)

Parsing ITunes Library.xml with ActionScript 3.0

Posted At: June 27, 2007 12:06 PM | Posted By: Jeff Tapper
Related Categories: actionscript3, apollo, as3, flash9, flex2, flex3, fp9, itunes, libraryxml, ria

I recently built a hands-on presentation for the FlexManiacs conference, and thought it would be fun to have the class build a little apollo based mp3 player, which reads in the mp3 files from an iTunes libary.xml file, which they can then play, pause or stop.  Well, we did just that, but oddly enough, the hardest part in building that application turned out to be parsing the xml.  In the time I've been working with AS3 and Flex2, I've always found that working with well formed XML is incredibly easy.  Therein lies the problem, the xml that apple uses in this file is hideous, and seems to have been designed by someone without the least bit of understanding of structuring xml.

Here, you can see a sample library.xml file from itunes.  The first odd thing you might notice is that there are a total of only 5 different node names used throughout the file:  plist (the root node), key, string, integer and date.  Rather than using intelligently named nodes (ie. PlayList, Song, etc), a dict node is used to indicate any arbitrary grouping of other nodes.  Within a dict, you will find other dict nodes, or key nodes followed by either a node describing a datatype (string, integer or date).

The real challange in parsing this, is that there is no grouping of keynames to their values, except for the order in which they appear.  For example, for a song named "Every Worthy Cause" performed by Ben Wakeman, rather than an xml structure like this:

<song name="Every Worthy Cause" artist="Ben Wakeman" />  


<song><name>Every Worthy Cause</name><artist>Ben Wakeman</artist></song>

ITunes has it structured like this:

<dict><key>Name</key><string>Every Worthy Cause</string><key>Artist</key><string>Ben Wakeman</string></dict>

 This poses a number of challenges, primarily, because the only thing which associates the Name node with the value Every worthy cause is the order the nodes appear.  This makes the use of E4X for parsing the nodes nearly impossible.   Here, you can see the solution I came up with for parsing this xml.

package parsers{
 import mx.collections.ArrayCollection;
 import valueObjects.PlayListEntry;
 import flash.utils.Dictionary;
 import utils.TimeFormatter;
 public class LibraryParser{
  private static var lib:XML;
  public static function parseLibrary(xml:XML):ArrayCollection{
   var ac:ArrayCollection = new ArrayCollection();
   lib = xml;
   for each(var d:XML in xml.dict.dict.dict){
   return ac;
  private static function parseSong(song:XML):PlayListEntry{
   var ple:PlayListEntry = new PlayListEntry();
   var tune:Dictionary= new Dictionary();
   var key:String;
   for each (var tuneProperty:XML in song.children()){
       if (tuneProperty.name() == "key"){
           key = tuneProperty.text();
       } else {
           tune[key] = String(tuneProperty.text());
   ple.album = tune.Album;
   ple.artist = tune.Artist;
   ple.bitRate = tune["Bit Rate"];
   ple.name = tune.Name;
   ple.sampleRate = tune["Sample Rate"];
   ple.songLength = tune["Total Time"];
   ple.lengthString = TimeFormatter.formatTime(ple.songLength);
   return ple;

What this does, is to find each dict node which indicates a song, and then loop over each of its children in order.  If it finds a node called Key, it creates a new entry in a Dictionary object (like a HashMap).  Once the dictionary is fully assembled, the elements from the dictionary are parsed into a strongly typed class called PlayListEntry, which simply specify all the attributes of a song.  The PlayListEntry class looks like this:

package valueObjects{
 public class PlayListEntry {
  public var name:String;
  public var artist:String;
  public var album:String;
  public var genre:String;
  public var songLength:int;
  public var year:int;
  public var location:String;
  public var bitRate:int;
  public var sampleRate:int;
  public var lengthString:String;

A version of these files for use with Apollo (in which you pass in a FileStream object, rather than xml), can be found here.

If anyone has a more elegant solution to parsing this library.xml file into something usable in AS3, I'd love to hear it.

Comments (6)

Java Swing (re-)enters RIA space

Posted At: May 8, 2007 4:05 PM | Posted By: Jeff Tapper
Related Categories: adobe, desktop, flash, flex, flex2, javafx, mobile, ria, silverlight

It seems Sun is interested in re-gaining some of the market share it one had in the Rich Application space.  The annual JavaOne conference is underway, and there seems to be quite a bit of buzz surrounding the upcoming annoucement of the JavaFX project.  It seems that JavaFX is looking to compete directly with Microsoft's Silverlight and Adobe's Flex/Apollo initiatives, as developers will be able to target Desktop, Web and Mobile applications from this single platform.  Ultimately, it seems that this is largely going to be done by vastly simplifying Swing development, with the use of JavaFX as a declaritive programming model, on top of the existing Swing framework.

Ultimately, its good for everyone, developers and consumers alike to have more competition in the Rich Applicaiton space.  This will surely lead to greater innovations for applications, and more choices for developers.

You can find more on this at infoworld and infoq.

Comments (0)

CFUnited Scheduler released

Posted At: May 4, 2007 4:05 PM | Posted By: Jeff Tapper
Related Categories: adobe, ajax, cfmx7, cfunited, ColdFusion, flex2, ria, scorpio

While the blog was down last week, the CFUnited Scheduler was launched.  This is a cool little AJAX app, which lets you figure out which sessions you want to attend.  You can browse the sessions by time, by presenter, or by track.  If you are going to CFUnited this year ( a must for all ColdFusion Developers ), this is an invaluable tool! 

By the way, I'll be presenting my topic "Flex 2 for ColdFusion Developers" Thursday and Saturday, both days at 8:30 am.

 See you there. 


Comments (0)

Open Source Flex 3 SDK

Posted At: May 2, 2007 4:05 PM | Posted By: Jeff Tapper
Related Categories: actionscript3, adobe, apollo, as3, fes, flex, flex2, flex3, free, ria, silverlight

At midnight, Thursday April 26th at Midnight, Adobe officially announced that the Flex 3 SDK, will be released as an open source project under the Mozilla Public License.  The actual timeline for the release looks like this:

Summer 2007 – Daily builds of the Flex 3 SDK will be provided.  Online access to the bug base will be publicly available.

Fall 2007 – Flex 3 launches.

December 2007 – After the release of Flex 3,  adobe will be posting all software assets into a public Subversion repository for public access. 

More information on this can be found in the FAQ, the press release, and the discussion group

Many have asked the questions: "Why would Adobe do this?" and "how is Adobe is going to keep making money from Flex?"  While I dont have any inside information about either of these, i do have come conclusions I've drawn on these two…

Why would Adobe do this

The easy, marketing friendly answer to this question is "to grow the platform."  Of course, Adobe wants more and more people using the Flex Platform, as it enables them to sell more copies of Flex Builder, Flex Charting, Flex Data Services, etc.  Of course, I suspect this may be a bit of a defensive move as well, as it comes on the heels of Microsoft annoucing SilverLight.    As Ted Patric notes, Adobe is taking the gloves off in its battle against SilverLight.  I think its safe to assume that by open sourcing flex, more developers will adopt it, and it will set a much higher bar for MS.

How is Adobe is going to keep making money from an Open Source Flex 3?

The reality as far as product sales goes, is this is no different than flex 2.  In flex 2, there was already a free SDK, which included everything a developer would need  to build flex  apps.  This open source project will provide the same free SDK, just under a different license.  As I mentioned before, if Open Sourcing the project attracts new developers, then, additional sales of the commercial flex products (Builder, Charting , Data Services, etc) will likely follow.



Comments (1)

Free Flex 2.0 !?!

Posted At: February 1, 2006 3:02 PM | Posted By: Jeff Tapper
Related Categories: flex, flex2, free, ria

According to several sources, including News.com and Christian Cantrell’s (Product Manager for Developer Relations at Macromedia/Adobe) blog, as well as the FAQ on Adobe Labs when Flex 2.0 is released, there will also be a free version of the SDK available.  Is seems the key difference with the Free vs the full version is the inclusion of the Flex Builder IDE. 

It seems as if anyone comfortable working with command line compilers can use an IDE of their choice, and compile their Flex apps for free with this SDK.

Very cool and exciting news!

Comments (0)