<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vivisecting Media &#187; Flash Player</title>
	<atom:link href="http://blog.vivisectingmedia.com/category/ria/flash-player/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.vivisectingmedia.com</link>
	<description>Looking at the world of media: from music to RIA.</description>
	<lastBuildDate>Fri, 09 Oct 2009 15:29:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Announcing DevelopmentArcâ„¢ Core Release Version 0.5</title>
		<link>http://blog.vivisectingmedia.com/2009/02/announcing-developmentarc%e2%84%a2-core-release-version-05/</link>
		<comments>http://blog.vivisectingmedia.com/2009/02/announcing-developmentarc%e2%84%a2-core-release-version-05/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 18:37:47 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[web integration]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/?p=169</guid>
		<description><![CDATA[The newest release of DevelopmentArc Core is now available on the Google Code Repository.  This release is the first release of the library under the new Core moniker.  Previously the library was released under the Vivisecting Media Code Library, which has been now been deprecated since Core is publicly available.  All updates [...]]]></description>
			<content:encoded><![CDATA[<p>The newest release of <a title="Read more about DevelopmentArc Core" href="http://www.developmentarc.com/site/software/" target="_self">DevelopmentArc Core</a> is now available on the <a title="Read the Wiki and download the library" href="http://code.google.com/p/developmentarc-core/" target="_blank">Google Code Repository</a>.  This release is the first release of the library under the new Core moniker.  Previously the library was released under the Vivisecting Media Code Library, which has been now been deprecated since Core is publicly available.  All updates and new features will be added to the Core system moving forward.</p>

<p>From the code depot you can download a compiled SWC or a ZIP file that contains all the source and ASDoc generated files.  We have posted the <a title="DevelopmentArc Core ASDoc Files" href="http://www.developmentarc.com/core_asdoc/" target="_blank">ADoc files on-line</a> so that you can easily access them if you do not download them.  Currently, we have 219 unit tests running and passing for the library, which are all available from the source tree if you wish to access them.</p>

<p>The current release of Core contains the following functionality.  We have marked new and updated features that have been changed from the Vivisecting Media Library to the new Core Library:
<ul>
    <li><strong>Task Management System</strong> <span style="color: #ff6600;">new!</span> &#8211; The Task system is a priority queuing system that enables an application to execute specific bundles of business and/or server logic in a specific order leveraging priority and the ability to override previously queued bundles. These bundles are encapsulated inside of Task objects, which can be then bundled Task Group objects. Tasks and task groups have the ability to take priority over other Tasks or Task Groups inside of the queue, as well as replace existing tasks in the queue based on a set of overrides an individual task can define.</li>
    <li><strong>Command Action Delegation System (CAD)</strong> <span style="color: #ff6600;">new!</span> &#8211; Provides a pre-built solution for implementing the Command Pattern within ActionScript/Flex/AIR applications. The command / action system allows for commands to be dispatched to the ActionDelegate which then executes any assigned functionality via an Action.</li>
    <li><strong>Selection Management System</strong><span style="color: #008000;"> updated!</span> &#8211; The Selection Management system enables any kind of object to become selectable and treated as part of a Selection group. In most cases this would be a UI Component that should behave similarly to a radio button group, where only one item can be selected at one time. This system also allows for multi-select and deselection of items that are members of a selection group.</li>
    <li><strong>Local Connection Management</strong> <span style="color: #008000;">updated!</span> &#8211; The Local Connection manager is a helper class to quickly establish and manage local connection instances within an application. The Local Connection manager also supports the ability to maintain strong class types when the data object is passed over the local connection instance.</li>
    <li><strong>Event Broker Utility</strong> &#8211; The Event Broker is a utility class that acts as a router for specified events. The Event Broker is a single point of contact that any object can broadcast to or subscribe to. This functionality is intended to be the focal point for implementing the mediator pattern within the application.</li>
    <li><strong>Instance Factory Utility</strong> <span style="color: #ff6600;">new!</span> &#8211; The Instance Factory allows for the ability to make sure there is only one instance of a specified class within the instance of the factory. This is useful for using in Locators that handle generating a new instance on the first request but then making sure the original instance of the requested item is returned on subsequent requests.</li>
    <li><strong>Singleton Factory Utility</strong> <span style="color: #ff6600;">new!</span> &#8211; Similar to the Instance Factory, the Singleton Factory verifies that there is only one instance of a requested item, but instead of being limited to the instance of the factory, the Singleton Factory verifies there is only one instance of the requested item in the entire application.</li>
    <li><strong>Adjustable Date Utility</strong> <span style="color: #ff6600;">new!</span> &#8211; The adjustable date wraps a Flash Date object and provides a series of helper methods to adjust time and dates quickly and easily. Example uses included the ability to adjust a date by a specific number of days forward or backwards, making sure that the number of days in the month and Leap Years are respected during the adjustment.</li>
    <li><strong>Queue Data Structures </strong><span style="color: #008000;">updated!</span> &#8211; The Queue system allows for items to be stored in either a LIFO or FIFO based queue order or in a priority queue order and then retrieved from the data structure depending on how the items are ordered.</li>
    <li><strong>Hash Table Data Structure</strong> &#8211; The Hash Table is key/value that allows any value or object to be used as a reference key to another value or object item. The Hash Table is similar to Flex&#8217;s ArrayCollection in how items can be referenced but unlike the collection, this is ActionScript independent, is not intended for data pagination and is focused on performance for larger data sets.</li>
    <li><strong>Browser Location Utility</strong> <span style="color: #ff6600;">new!</span> &#8211; Utility class used to query the current url in the application. The class provides static properties for each piece of the application url.</li>
</ul>
I am really proud of all the work DevelopmentArc has put into Core so far.  We are currently working on the version 0.9 release roadmap which includes multiple new systems, helpers and utilities.  <em>FYI</em> &#8211; the 0.5 release number is used to announce the step from the 0.4 release of Vivisecting Medias to the Core name.  The 0.9 release will contain all of the target features for the 1.0 release of Core.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2009/02/announcing-developmentarc%e2%84%a2-core-release-version-05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turkey Day Travels</title>
		<link>http://blog.vivisectingmedia.com/2008/11/turkey-day-travels/</link>
		<comments>http://blog.vivisectingmedia.com/2008/11/turkey-day-travels/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 15:49:52 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[General Media / Stuff]]></category>
		<category><![CDATA[MAX 2008]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[degrafa]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[milan]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/11/turkey-day-travels/</guid>
		<description><![CDATA[Its the day before Thanksgiving, Turkey&#8217;s eve I guess, the most glorious of American gluttony-days, uh I mean holidays. A wonderful day full of family, football and of course food. Oh the food!  I am only being semi-facetious, I really do love the three F&#8217;s of the holiday.  This year, the travel is [...]]]></description>
			<content:encoded><![CDATA[<p>Its the day before Thanksgiving, Turkey&#8217;s eve I guess, the most glorious of American gluttony-days, uh I mean holidays. A wonderful day full of family, football and of course food. Oh the food!  I am only being semi-facetious, I really do love the three F&#8217;s of the holiday.  This year, the travel is crazy.  I am flying down to Southern California to spend the holiday with my fiancÃ©e&#8217;s family and then I fly back home Friday night to pack and then Aaron and I head out to Milan for the Adobe MAX EU the next evening.</p>

<p>Aaron and I have a TON of notes and thoughts that are being worked on, all thanks to MAX North America.  I am sure we will have even more coming from MAX EU. We will both be working on a ton of new posts over the coming few weeks and at the same time we are in the process of getting our <a href="http://www.developmentarc.com/">DevelopmentArc site</a> proper (don&#8217;t forget client work and other assorted projects we are working on too!).  More to come on that later.  So, for those of you in/from the States that celebrate T-day, enjoy!  For those of you that don&#8217;t, no worries, you can laugh at us as we Americans stumble around in a triptiphane induced food coma.</p>

<p>Oh, and for those of you that read this blog for Flex/Flash/Technology info, read up on my newest obsession while I am away: <a href="http://www.degrafa.org/" title="Degrafa Framework Website: Download, Docs and Examples">Degrafa</a>. Degrafa is short for &#8220;<strong>De</strong>clarative <strong>Gra</strong>phics <strong>F</strong>r<strong>a</strong>mework&#8221; and it is a set of Classes that enable you to create simple to complex graphical content using MXML instead of having to write a bunch of ActionScript graphics calls.  But that is just the tip of the iceberg, you can actually make <a href="http://www.jamesward.com/wordpress/2008/04/15/flex-3-skin-transitions-with-degrafa-and-animatecolor/" title="James Ward's post on skinning a component, best example using states">component skins (states and all!)</a> using their framework.  Its rare for me to get this excited about a new framework, I am usually super hesitant about jumping in, but after a demo at the MAX Birds of a Feather, and now getting my hands dirty in it, I am super impressed.  Good work guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/11/turkey-day-travels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Binding Source for Flex 4 in Flex Builder 3</title>
		<link>http://blog.vivisectingmedia.com/2008/08/binding-source-for-flex-4-in-flex-builder-3/</link>
		<comments>http://blog.vivisectingmedia.com/2008/08/binding-source-for-flex-4-in-flex-builder-3/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 22:48:50 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[mxml]]></category>
		<category><![CDATA[mxmlstates]]></category>
		<category><![CDATA[specs]]></category>
		<category><![CDATA[states]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/08/binding-source-for-flex-4-in-flex-builder-3/</guid>
		<description><![CDATA[Yesterday, I sat down and started playing around with trying to get the daily build of the Flex 4 SDK inside Flex Builder 3.  After a bit of digging I finally got it all running and compiling as expected.  I started off using Multimediacollege&#8217;s blog post on getting the SDK in place and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-105" style="float: left; margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px;" title="flex_logo" src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/04/flex.png" alt="Flex Logo" width="60" height="60" />Yesterday, I sat down and started playing around with trying to get the daily build of the Flex 4 SDK inside Flex Builder 3.  After a bit of digging I finally got it all running and compiling as expected.  I started off using <a href="http://blog.multimediacollege.be/2008/07/how-to-create-your-first-application-in-flex-4-using-flex-builder-3/" title="How to create your first application in Flex 4 using Flex Builder 3">Multimediacollege&#8217;s blog post on getting the SDK in place</a> and I also used <a href="http://sherifabdou.com/2008/07/if-you-are-trying-to-compile-gumbo-flex-4-and-getting-a-verify-error/" title="If you are Trying to Compile Gumbo (Flex 4) and getting a Verify Error">Sherif Abdou&#8217;s post to help troubleshoot a runtime error</a> in the player.</p>

<p>My goal was to take these two posts, summarize them and show how to get the current source and check it in.  Just as I sat down to write this all up, <a href="http://www.mikechambers.com/blog/" title="Mike Chambers">Mike Chambers</a> comes in and scoops me.  Figures.  Anyway, I yelled at Mike via IM for stealing my thoughts and then mentioned that I figured out how to bind the Flex 4 source to the SWC in Flex Builder so that you can F3 / CTRL+Click you way to the code.  So, I am going to post that aspect of the process and refer back to Mike&#8217;s straightforward post on <a href="http://www.mikechambers.com/blog/2008/08/28/getting-started-with-flex-4-fxg-and-flex-builder-3/" title="Getting started with Flex 4 FXG and Flex Builder 3">how to get the SDK compiling and running</a>.</p>

<p><strong>Check Out The Source</strong><br/>
The first step of linking the Flex 4 source to Flex Builder, is to download the code from Adobe&#8217;s Open Source website.  Adobe and the Flex team are using Subversion to manage the code base so you will need to use SVN to checkout the source.  I already had Subversion installed so I was able to jump right in and checkout the code. If you don&#8217;t have Subversion, or want to learn more about how Adobe has the SVN configured, then make sure to read <a href="http://opensource.adobe.com/wiki/display/flexsdk/Get+Source+Code" title="Get source code">how to check out from Adobe&#8217;s code base</a>.  If you have Subversion installed, then here is the short and sweet version.</p>

<p>First, I didn&#8217;t want to download the entire SDK SVN trunk, so I found the direct path the Flex 4 Framework code using their web browser interface:</p>

<p><em>http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/flex4/src/</em></p>

<p>Next, I picked a location to keep the source.  I personally chose to put it inside the flex 4 SDK folder under a new subfolder called <em>src</em>.  You can put this folder anywhere you want, I just chose this location on a whim. To get the source, I opened up my terminal, <em>cd</em>&#8216;d to the new <em>src</em> folder and then ran the following command to download the source:</p>

<p><em>svn checkout http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/flex4/src/ ./</em></p>

<p>You don&#8217;t technically have to <em>cd</em> to the new folder but I hate having to fit it all in one command line.  Whatever, I can do what I want!  Once you run this command, Subversion will download all the ActionScript source for the framework into your new directory.  The last step is to inform Flex Builder that you have source for it.</p>

<p><strong>Get Flex Builder Into The Know</strong><br/>
To do this, right click (CMD+Click) on your project in Flex Builder and choose <em>Properties > Flex Build Path > Library Path</em>.  Expand the Flex 4 SDK tree and then expand Flex4.SWC so that you see the <em>Source Attachment:</em> option.  Double click <em>Source Attachment:</em> and then browse to the folder that holds the source you just downloaded.  Choose Okay, and there you have it, source is now bound to your SDK and you can F3 to your hearts content.</p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/08/setting-sdk-source-for-flex-builder.png" alt="Setting SDK Source For Flex Builder" /></p>

<p>One thing to note, if you only use the default namespace, then hinting will not follow through in FB3.  I recommend binding the gumbo library for this to work:</p>


<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Application</span> </span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;library:adobe/flex/halo&quot;</span> </span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:gumbo</span>=<span style="color: #ff0000;">&quot;library:adobe/flex/gumbo&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">layout</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gumbo:Button</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;hello world&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gumbo:Group<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gumbo:content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gumbo:Ellipse</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;30&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;30&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gumbo:fill<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:SolidColor</span> <span style="color: #000066;">color</span>=<span style="color: #ff0000;">&quot;#FF0000&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gumbo:fill<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gumbo:Ellipse<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gumbo:content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gumbo:Group<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>


<p>This tells FB where to start looking for the source and enables it to open properly.  If you know of a way to bind the namespace to the source, please let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/08/binding-source-for-flex-4-in-flex-builder-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>VivMedia Code Library: Version 0.03 released</title>
		<link>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-library-version-003-released/</link>
		<comments>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-library-version-003-released/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 18:13:25 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Self Reference]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[web integration]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[unittest]]></category>
		<category><![CDATA[vivmedia code depot]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/07/vivmedia-code-library-version-003-released/</guid>
		<description><![CDATA[I pushed a new version of the library yesterday to Google Code.  This is a relatively small release, which was not really my intention for version 0.03.  Originally, I was planning on adding the first of a series of really powerful features but due to unit testing the new Queue (48 new tests), [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2007/10/rune_flash.gif" alt="rune_flash.gif" align="left" border="0" hspace="10" vspace="5" />I pushed a <a href="http://code.google.com/p/vivisectingmedia-as3/downloads/list" title="Vivisecting Media Code Library version 0.03">new version of the library yesterday to Google Code</a>.  This is a relatively small release, which was not really my intention for version 0.03.  Originally, I was planning on adding the first of a series of really powerful features but due to unit testing the new Queue (48 new tests), this kind of slowed down progress.  Oh, that and a TON of client deadlines.  Anyway, there are two updates in this version: The Queue and new source code licensing.</p>

<p>I read a great <a href="http://www.gskinner.com/blog/archives/2008/07/source_code_lic_1.html" title="gSkinner: Source Code Licenses">analysis article by Grant Skinner, talking about the different Open Source licenses</a> and how they can affect you and your client.  I originally licensed the code library under the Mozilla Public License (MPL) due to its popularity, its freedom to allow developers to build on top of the code base for any purpose (free or for charge) and only requires code modification submission if the developer changed the original code in the library.  My goal with VivMedia is to help developers build great applications, and the last thing I wanted to do is limit them, yet I do want to encourage people to submit changes and updates.  That is why I went with MPL at first.</p>

<p>The issue with MPL (as Grant points out) is that when you use MPL code there are certain steps you need to take to release your project.  In most cases this is not a big deal and it very rarely impacts the project but it may cause some developers or their clients a bit of grief.  In all honesty, I just want to create a library that myself and others can use without having to jump through hoops with our clients.  This lead me to change all the code license to MIT, which is very permissive of all forms of development. All you need to do is keep the MIT license headers in the source.  You don&#8217;t have to submit changes (all thought I would be very happy if you did) and you don&#8217;t have to jump through any other legal hoops when deploying. So, if you are using the library already, update to the new version and know that the door is now wide open and you don&#8217;t have to fret about how you or your clients release the work.</p>

<p>The other addition to this version is the new Queue data structure.  The Queue allows you to add and remove items is in a linear fashion.  You can define the Queue as either Last in First Out (LIFO) or First in First Out (FIFO).  What that means is when you add() item A and item B to the Queue and then call next(), the item returned is dependent if the queue is set to LIFO or FIFO.  A LIFO Queue returns item B, since it was the last item added.  A FIFO Queue returns item A since it was the first item added.  As always, a full tutorial will be posted soon on how to use the Queue in your code.</p>

<p>The Queue is a building block for a lot of new functionality that I am starting to plan out.  There will probably be variations of the Queue going forward too.  For example a version that is designed to help solve Asynchronous issues in a Synchronous fashion, without you having to write a lot of logic around the actions.  Right now, its all about what time permits&#8230; and as I said in the last post, vacation is nearly here!  So, update/download the library, check out the ASDocs in the source (I always update them for each release) and let me know what you all think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-library-version-003-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VivMedia Code: Selection Controller</title>
		<link>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-selection-controller/</link>
		<comments>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-selection-controller/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 21:34:02 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[ISelectable]]></category>
		<category><![CDATA[multiselect]]></category>
		<category><![CDATA[SelectionController]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vivisecting media code depot]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/07/vivmedia-code-selection-controller/</guid>
		<description><![CDATA[With the previous release of version 0.02 of the code base I added a new class called the SelectionController that enables you to treat items that implement the ISelectable interface as a selection group.  As promised, this is the tutorial/indepth examples of the SelectionController and how to use it within your applications.



Overview
The SelectionController allows [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2007/10/rune_flash.gif" alt="rune_flash.gif" align="left" border="0" hspace="10" vspace="5" />With the previous <a href="http://blog.vivisectingmedia.com/2008/06/vivmedia-code-library-version-002-released/" title="VivMedia Code update">release of version 0.02 of the code base</a> I added a new class called the SelectionController that enables you to treat items that implement the ISelectable interface as a selection group.  As promised, this is the tutorial/indepth examples of the SelectionController and how to use it within your applications.</p>

<p><span id="more-132"></span></p>

<p><strong>Overview</strong><br/>
The SelectionController allows you to group items similarly to how a radio group works in both HTML and Flex.  The general principle with a radio group is that when one radio button is selected, any of the other radio buttons in the group are then deselected.  This kind of selection occurs in Lists, DataGrids, etc.</p>

<p>The challenge is that in a highly stylized Flash/Flex applications we often need to treat custom components as a group.  One example is my <a href="http://blog.vivisectingmedia.com/2008/03/sxsw-2008-hot-freaks-party-and-dr-dog-photos/" title="PhotoSlider">Wordpress PhotoSlider</a>.  When a user selects a thumbnail, the selected thumbnail is highlighted and the previously highlighted thumbnail is deselected.</p>

<p>A typical solution is to make the parent container smart enough to understand when an item is selected and then let the parent change the highlight state.  This approach can get tricky when you have items that are deeply nested and don&#8217;t share an easily accessible common parent or if you have complex selection/deselection requirements that may span across multiple containers or even have selected children that are currently off the display stack.</p>

<p>To solve the easiest issues to the most complex selection challenges I developed a SelectionController that is a Singleton instance that manages selection of content for you.  Items first need to implement the ISelectable interface and then they can be added to a selection group.  When you want to select or deselect a group you can either pass in the group ID or you can pass in one of the items in the group to handle selection.</p>

<p><strong>Examples</strong><br/>
First, lets look at our item that we want to be selectable and then we will look at how you can select/deselect the item.</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">vivisectingmedia</span>.<span style="color: #006600;">tutorial</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">vivisectingmedia</span>.<span style="color: #006600;">framework</span>.<span style="color: #006600;">controllers</span>.<span style="color: #006600;">SelectionController</span>;
	<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">vivisectingmedia</span>.<span style="color: #006600;">framework</span>.<span style="color: #006600;">controllers</span>.<span style="color: #006600;">interfaces</span>.<span style="color: #006600;">ISelectable</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #0066CC;">Button</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MySelectionButton <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">Button</span> <span style="color: #0066CC;">implements</span> ISelectable
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// constructor</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> MySelectionButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * The default method for when a Button is clicked.
		 * We override this method so that when a user clicks
		 * on this Button we select this item and deselect
		 * all the other Buttons in the group.
		 * 
		 * @param event Click event.
		 * 
		 */</span>
		override protected <span style="color: #000000; font-weight: bold;">function</span> clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">clickHandler</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// this item is now selected</span>
			SelectionController.<span style="color: #006600;">selectItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * This setter is called when the SeletionController
		 * changes the Button's selection state.  Technically,
		 * we do not have to override this method because the Button
		 * Class already supports the selected getter/setter signature
		 * required by the ISelectable interface.
		 *  
		 * @param value True is selected, false is deselected.
		 * 
		 */</span>		
		override <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> selected<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// store the private reference</span>
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">selected</span> = value;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		override <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> selected<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #0066CC;">super</span>.<span style="color: #006600;">selected</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<p>A couple of notes about the above code.  As I mentioned in the comments, we don&#8217;t really need to override the get/set method for selected.  The Button Class already meets the ISelectable interface requirement, but you will still need to extend the Button class to add the ISelectable interface so that it works with the SelectionController.  I overrode the code just to show you how you would need to implement this in a component that does not already support selection states.  What I really want you to focus on is <em>implements ISelectable</em> and the <em>clickHandler()</em> method.</p>

<p>In the clickHandler() call we pass up the super.clickHandler() and then we call the SelectionController.selectItem() passing the component instance reference in as the argument.  What this is telling the SelectionController to do is first, see if the passed item is in a selection group, if so, select the item by setting selected to true, and then set selected value to false on any other item in the selection group.  The SelectionController is friendly enough that if the item passed in is not in a selection group, then the item is still selected and nothing else happens.</p>

<p>So how do you leverage the selection object?  Let&#8217;s look at some examples:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// create some selectable items</span>
<span style="color: #000000; font-weight: bold;">var</span> buttonOne:MySelectionButton = <span style="color: #000000; font-weight: bold;">new</span> MySelectionButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> buttonTwo:MySelectionButton = <span style="color: #000000; font-weight: bold;">new</span> MySelectionButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> buttonThree:MySelectionButton = <span style="color: #000000; font-weight: bold;">new</span> MySelectionButton<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// generate an group id to assign them to</span>
<span style="color: #000000; font-weight: bold;">var</span> groupOne:<span style="color: #0066CC;">int</span> = SelectionController.<span style="color: #006600;">generateNewId</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// assign the items to the group</span>
SelectionController.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>buttonOne, groupOne<span style="color: #66cc66;">&#41;</span>;
SelectionController.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>buttonTwo, groupOne<span style="color: #66cc66;">&#41;</span>;
SelectionController.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>buttonThree, groupOne<span style="color: #66cc66;">&#41;</span>;</pre></div></div>


<p>This is the basic use case for grouping items.  First, we use a helper method to generate a new group ID.  The ID is an int and it must be unique for each group.  The generateNewId() returns the next ID number not in use.  Once you have an ID you can then add items to the SelectionController using the addItem() method.  This stores the reference of the item and pairs it with the group.</p>

<p>Because the MySelectionButton is built with the SelectionController in mind we don&#8217;t have to do anything else if we want these three buttons to behave as a group.  When a user clicks one of the buttons in the group, the clickHandler calls the SelectionController and the SelectionController will then select the clicked button and deselect the rest.</p>

<p>What happens when you want to programatically select one item, or all of the items in the group or deselect all the items in the group? The SelectionController provides methods to handle these tasks:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// select one item</span>
SelectionController.<span style="color: #006600;">selectItem</span><span style="color: #66cc66;">&#40;</span>buttonTwo<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// select all the items, first get the group if</span>
<span style="color: #808080; font-style: italic;">// you don't know it</span>
<span style="color: #000000; font-weight: bold;">var</span> currentGroup:<span style="color: #0066CC;">int</span> = SelectionController.<span style="color: #006600;">getItemGroup</span><span style="color: #66cc66;">&#40;</span>buttonOne<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// now select the group</span>
SelectionController.<span style="color: #006600;">selectAll</span><span style="color: #66cc66;">&#40;</span>currentGroup<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// or you can deselect them all</span>
SelectionController.<span style="color: #006600;">deselectAll</span><span style="color: #66cc66;">&#40;</span>currentGroup<span style="color: #66cc66;">&#41;</span>;</pre></div></div>


<p><strong>Considerations and Gotchas</strong><br/>
As with all my tutorials, lets talk about things you should consider/know about the SelectionController that may cause you some trouble if you attempt to do certain things.</p>

<p><em>One group to an item.</em>  Selectable items can not be members of multiple groups and when a new group is applied the item is removed from the original group. For example:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// create a new group</span>
<span style="color: #000000; font-weight: bold;">var</span> groupTwo:<span style="color: #0066CC;">int</span> = SelectionController.<span style="color: #006600;">generateNewId</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// apply the group to ButtonTwo</span>
SelectionController.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>buttonTwo, groupTwo<span style="color: #66cc66;">&#41;</span>;</pre></div></div>


<p>Doing the above would remove ButtonTwo from groupOne and when you call selectAll() on groupOne only buttonOne and buttonThree would be selected.</p>

<p><em>Items are Strong referenced.</em>  When an item is added to a group it is strong referenced in memory.  This means that if you want to delete the item so that Garbage Collection can be applied you need to remove the item form the SelectionController by calling removeItem().  This removes the item from the SelectionController and Garbage Collection can be applied when the next pass occurs.</p>

<p><em>Multi-Select is supported by not built in by default.</em>  If you want to create a multi-selectable grouping you can use the SelectionController for this kind of functionality, but you will need to add more logic to you selectable items.  For example, we want our MySelectionButton&#8217;s to be multi-selectable when a user has the Control/Command key down.  To do this in our example you would modify the clickHandler() like so:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">override protected <span style="color: #000000; font-weight: bold;">function</span> clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">super</span>.<span style="color: #006600;">clickHandler</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">ctrlKey</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// do not select using the controller</span>
		<span style="color: #0066CC;">this</span>.<span style="color: #006600;">selected</span> = <span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// do select using the controller</span>
		SelectionController.<span style="color: #006600;">selectItem</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<p>The above example determines if the user is multi-selecting by checking the ctrlKey value in the MouseEvent.  The MouseEvent passes true if the key is down and false if the key is up. In the case when the key is down we want the object selected but we don&#8217;t want the Controller to deselect the rest of the items in the group.  Otherwise, we do want the rest of the items to be deselected, so use then use the Controller.</p>

<p>That is the basics of the SelectionController, play around with it and let me know if you need more examples, find any issues or have any questions with the Controller.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/07/vivmedia-code-selection-controller/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Adobe kuler Desktop Sneak Peek</title>
		<link>http://blog.vivisectingmedia.com/2008/07/adobe-kuler-desktop-sneak-peek/</link>
		<comments>http://blog.vivisectingmedia.com/2008/07/adobe-kuler-desktop-sneak-peek/#comments</comments>
		<pubDate>Tue, 30 Nov 1999 07:00:00 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[Adobe APIs]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[kuler]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[web integration]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[air 1.1]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[my projects]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/06/kuler-desktop-21-sneak-peek/</guid>
		<description><![CDATA[A new version of Adobe kuler desktop is now here and ready for you download! Recently, I have been providing Flash and AIR development for the wonderful people in Adobe&#8217;s Emerging Creative Technologies (ECT) team and I wanted to share some of the cool things that have gone into the new kuler release.  In [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-icon.png" alt="Adobe kuler Icon" hspace="10" vspace="5" align="left" />A new version of <a href="http://labs.adobe.com/technologies/kuler/" title="Adobe kuler">Adobe kuler desktop is now here</a> and ready for you download! Recently, I have been providing Flash and AIR development for the wonderful people in Adobe&#8217;s Emerging Creative Technologies (ECT) team and I wanted to share some of the cool things that have gone into the new kuler release.  In case you don&#8217;t know, <a href="http://labs.adobe.com/technologies/kuler/" title="Adobe kuler">Adobe kuler Desktop</a> is an <a href="http://www.adobe.com/products/air/" title="Adobe Integrated Runtime (AIR)">Adobe AIR</a> based application that allows users to access both community and custom created themes from the <a href="http://kuler.adobe.com" title="Adobe kuler web application">Adobe kuler website</a>.  Back in March, I blogged about the latest version of the kuler website and the initial launch of the AIR version.  Pop over here if you want to <a href="http://blog.vivisectingmedia.com/2008/03/adobe-kuler-20-is-live/" title="Adobe kuler launch">read a bit more about kuler</a> or continue on to learn about what&#8217;s new in kuler Desktop&#8230;</p>

<p><span id="more-131"></span></p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-21-desktop-ui.png" border="0" alt="Adobe kuler Desktop UI" hspace="5" vspace="0" align="left" /><strong>New And Improved UI</strong></p>

<p>So, what&#8217;s new?  Well the first thing up is the updated application UI.  The goal for the updated ui was to continue showing off the skin-ability of AIR applications and also help streamline user interactions.  kuler continues to leverage the transparency effects of AIR and now has a beautiful cutout UI that highlights the kuler logo and application buttons.</p>

<p>Some of the other UI additions are unification of the kuler web application loading animation with the loading animation within kuler Desktop and making the Sign In / Active Internet connection light more prominent at the bottom of the tool.</p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-21-desktop-theme-tear-off.png" border="0" alt="Adobe kuler Desktop Theme Tear-off" hspace="5" vspace="0" align="right" />Another important change is the addition of the grip bar and hand icon over the Themes.  One of the coolest features in kuler Desktop is the ability for a user to grab a Theme and tear it off into its own window.  This is one of the &#8220;wow&#8221; features because every time someone sees it for the first time they instantly go &#8220;WOW!&#8221;, me being one of them.  This functionality is actually not a new feature, it was in the original release of kuler Desktop.  Unfortunately it was not as easily discoverable as was hoped and this new UI update is intended to help people discover it quickly.</p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-21-desktop-menu.png" border="0" alt="Adobe kuler Desktop menu" hspace="5" vspace="0" align="left" /><strong>New Menu Access</strong></p>

<p>The drop-down menu now has two new options for users. The first is the About menu.  In the previous release the general about details were located in different locations within the info panel and this information is now consolidated into a single location.  The other new menu option is shown when a user signs into their kuler account using an Adobe ID.  The previous version of kuler Desktop allowed users to view the Themes they created in the kuler web application but they could not view any of the Themes that were marked as favorites.  Now user can view any Themes that they have marked as a favorite on the site once they have signed into My kuler.</p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-21-desktop-paging.png" border="0" alt="Adobe kuler Desktop Paging" hspace="5" vspace="0" align="left" /><strong>Paging and Caching of Themes</strong></p>

<p>With kuler Desktop users can now view all the Themes in all the categories.  One of the limitations of the original release was that they could only see the first 100 Themes in a category.  No longer!  The UI has a new feature that allows users to page through the themes a 100 at a time, or they can jump to the first or last 100 with a press of a button.  kuler now also show users their current position in the Theme category so that they know exactly where they are.</p>

<p>In addition to exposing this feature in the UI kuler now has added the ability to cache Theme pages so that when someone navigate back and forth through Themes they only have to load a new page when they exceeded the current cache limit.  This makes extended browsing much quicker for everyone.</p>

<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/06/adobe-kuler-21-desktop-creative-suite-integration.png" border="0" alt="Adobe kuler Desktop Creative Suite Integration" hspace="5" vspace="0" align="left" /><strong>Creative Suite Integration (CS) via SwitchBoard</strong></p>

<p>The killer feature in this release is the ability for kuler Desktop to export Themes directly into Adobe Photoshop, Adobe Illustrator and Adobe InDesign with a single click.  Not only can kuler Desktop directly import a Theme with a click kuler Desktop can also launch the CS application if it is not already running.</p>

<p>kuler can do this thanks to an awesome new application called SwitchBoard.  <a href="http://labs.adobe.com/wiki/index.php/SwitchBoard" title="Adobe SwitchBoard">SwitchBoard, which is now on Adobe Labs</a>, allows AIR applications to communicate with CS applications via an ActionScript API.  Using the API developers can send ExtendScript commands directly to the CS application of their choice.  Thanks to the power of SwitchBoard users are now able to save the Theme ASE (Adobe Swatch Exchange) file to the appropriate CS folder location, call the CS application, tell the application where the ASE now lives and to have it open the ASE in the Swatch palette.</p>

<p><strong>Auto-updating / General Fixes</strong></p>

<p>On top of all that kuler now has a built in an auto-update utility leveraging AIRs update support that allows kuler to determine you when a new version is available.  Adobe kuler Desktop can now call out and see if a new version is provided and if it is the application will download and auto-install the update for you.  The new version also a lot of fixes for usability issues and bugs that both the QE and the kuler community have found.  Overall, this is a great dot-release and I feel you all are going to love the new features!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/07/adobe-kuler-desktop-sneak-peek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VivMedia Code Library: Version 0.02 Released</title>
		<link>http://blog.vivisectingmedia.com/2008/06/vivmedia-code-library-version-002-released/</link>
		<comments>http://blog.vivisectingmedia.com/2008/06/vivmedia-code-library-version-002-released/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 00:15:56 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[unittest]]></category>
		<category><![CDATA[vivmedia code depot]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/06/vivmedia-code-library-version-002-released/</guid>
		<description><![CDATA[Its been a busy few weeks for me (with work and personal projects) but I am happy to say that version 0.02 of the VivMedia library is now available.  This update includes a fully automated Unit Test suite for all the code except the Local Connection Manager.  Trying to automate the LCM is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2007/10/rune_flash.gif" alt="rune_flash.gif" align="left" border="0" hspace="10" vspace="5" />Its been a busy few weeks for me (with work and personal projects) but I am happy to say that <a href="http://code.google.com/p/vivisectingmedia-as3/downloads/list" title="Vivisecting Media Library version 0.02">version 0.02 of the VivMedia library</a> is now available.  This update includes a fully automated Unit Test suite for all the code except the Local Connection Manager.  Trying to automate the LCM is going to be coding feat in itself, so right now it is being tested the old fashioned way a.k.a. by hand. There are a few minor updates to the existing code such as streamlining how the HashTable clones the internal Array and some other minor updates to support automated testing. As usual the code is fully ASDoced and generated docs are available with the ZIP download.</p>

<p>The big change is this version is the addition of the new SelectionController and ISelectable interface. The SelectionController is a manager that allows you to group any number of items that implement the ISelectable interface and then treat them as a Radio Group or multi-selectable group.  With the controller you assign items to groups and then you can use the controller to select and deselect the items.</p>

<p>A great example of this code is how I handle image highlighting in the <a href="http://blog.vivisectingmedia.com/2008/03/sxsw-2008-hot-freaks-party-and-dr-dog-photos/" title="Photoslider example">Photoslider</a>.  Each of my image thumbnails implement ISelectable and then when a user clicks a thumb it calls the SelectionController.selectItem() and passes itself as an argument.  The SelectionController then sets selected on all the thumbnails in the group, setting true for the passed in item and false for the rest.  I plan on doing a full tutorial in the near future so keep an eye out for it.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/06/vivmedia-code-library-version-002-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VivMedia Code: the HashTable</title>
		<link>http://blog.vivisectingmedia.com/2008/05/vivmedia-code-the-hashtable/</link>
		<comments>http://blog.vivisectingmedia.com/2008/05/vivmedia-code-the-hashtable/#comments</comments>
		<pubDate>Thu, 29 May 2008 19:00:47 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[hashtable]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[vivisecting media code depot]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/05/vivmedia-code-the-hashtable/</guid>
		<description><![CDATA[One of my favorite, and until recently, most used classes in Flex was the ArrayCollection.  The ArrayCollection is a powerful data-structure that acts similarly to an Array but provides an extended API that provide shortcuts to data access. A few of the more used accessors are contains(), which tells you if the item is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.vivisectingmedia.com/wp-content/uploads/2007/10/rune_flash.gif" alt="rune_flash.gif" align="left" border="0" hspace="10" vspace="5" />One of my favorite, and until recently, most used classes in Flex was the ArrayCollection.  The ArrayCollection is a powerful data-structure that acts similarly to an Array but provides an extended API that provide shortcuts to data access. A few of the more used accessors are contains(), which tells you if the item is in the ArrayCollection and getItemIndex() which tells you where the item is in the ArrayCollection.</p>

<p>The ArrayCollection is much more then this too.  It also has the ability to tie directly into FlexData services and then dynamically page the data into the ArrayCollection instance as data is requested.  The ArrayCollection is also the complex data structure that is generated by the HTTPService (when parse to Object is set) if you have more then one child node in an XML structure.  If you haven&#8217;t used it yet, the ArrayCollection is a very powerful data-structure.</p>

<p>Of course, with this robustness comes limitations.  First off, its Flex only.  This means that if you are used to Flex development but find yourself on an AS3 only project, you can&#8217;t use the ArrayCollection.  Another big one is performance.  As you begin filling the ArrayCollection up, queries into the data structure start to slow down, and I mean significantly slow down.  If you have hundreds of objects in the ArrayCollection, the performance for lookup and access are way slower then just looping over an array and finding it the old fashioned way.  A more minor issue is when trying to manipulate data dynamically you start having to write some pretty ugly code such as to prevent null reference errors:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// remove the item if it exists</span>
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>myCollection.<span style="color: #006600;">contains</span><span style="color: #66cc66;">&#40;</span>objectNeeded<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	myCollection.<span style="color: #006600;">removedItemAt</span><span style="color: #66cc66;">&#40;</span>myCollection.<span style="color: #006600;">getItemIndex</span><span style="color: #66cc66;">&#40;</span>objectNeeded<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<p>Its not that bad, but as you get more and more complex accessing structures you start longing for the simplicity of an Array.  This is where the <a href="http://code.google.com/p/vivisectingmedia-as3/" title="Vivisecting Media Code Library depot">HashTable came into the picture</a>.  I wanted something that performs like an Array, yet has the API data accessors that can simplify development. Yet, there was one more thing that I wanted, the ability to map key&#8217;s to values like in an object or Dictionary but still maintain Array like access.</p>

<p>From this need came the HashTable.  In the past I had built multiple solutions similar to the HashTable but they typically where one-offs that lived in the code the functionality was needed. I never got around to formalizing it into a proper data-structure.  I finally got the chance and built it from the ground up for my Photoslider app.  So, let&#8217;s talk about the HashTable&#8230;</p>

<p><span id="more-117"></span></p>

<p><strong>Using The HashTable</strong><br/>
The HashTable is an ActionScript 3.0 data structure that is not dependent on any of the Flex SDK, this means you can use it freely in both Flash and Flex projects.  The HashTable, simply put, is two Arrays which are wrapped in logic to provide a simplified data access API for development.  Its not complex, but it can cut out a ton of code that you would typically write over and over.</p>

<p>The main thing to know about the HashTable is that everything revolves around a key/value pair.  The key can be anything, from a number to a complex object.  When you add an item to the HashTable you define this pairing:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// create a key (person) and item (friends)</span>
<span style="color: #000000; font-weight: bold;">var</span> person:<span style="color: #0066CC;">Object</span> = <span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>: <span style="color: #ff0000;">&quot;James&quot;</span><span style="color: #66cc66;">&#125;</span>;
<span style="color: #000000; font-weight: bold;">var</span> friends:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>: <span style="color: #ff0000;">&quot;Eno&quot;</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>: <span style="color: #ff0000;">&quot;Aaron&quot;</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>: <span style="color: #ff0000;">&quot;Doug&quot;</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>: <span style="color: #ff0000;">&quot;Dave&quot;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// create the table</span>
<span style="color: #000000; font-weight: bold;">var</span> hash:HashTable = <span style="color: #000000; font-weight: bold;">new</span> HashTable<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
hash.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>person, friends<span style="color: #66cc66;">&#41;</span>;
&nbsp;
...
&nbsp;
<span style="color: #808080; font-style: italic;">// get my friends</span>
<span style="color: #000000; font-weight: bold;">var</span> myFriends:<span style="color: #0066CC;">Array</span> = hash.<span style="color: #006600;">getItem</span><span style="color: #66cc66;">&#40;</span>person<span style="color: #66cc66;">&#41;</span> as <span style="color: #0066CC;">Array</span>;</pre></div></div>


<p>As you can see from the example, we can use an Object as a key and then bind another complex object to the key.  Later on we can retrieve the item by simply requesting the item by providing the key.  Not only can we access via the key, but we can also get all the keys and then retrieve their data.  For example, we now have multiple people in our HashTable and we want to get all their friends:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// get all the people and loop on them</span>
<span style="color: #000000; font-weight: bold;">var</span> people:<span style="color: #0066CC;">Array</span> = hash.<span style="color: #006600;">getAllKeys</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> len:<span style="color: #0066CC;">int</span> = people.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:uint = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> len; i++<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> friends:<span style="color: #0066CC;">Array</span> = hash.<span style="color: #006600;">getItem</span><span style="color: #66cc66;">&#40;</span>people<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #0066CC;">Array</span>;
	...
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<p>Not only can you get all the keys but you can also get all the items by using getAllItems().  There are also other accessors that can help you along the way.  Such as:</p>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// how many key/items are in the HashTable</span>
<span style="color: #000000; font-weight: bold;">var</span> numberOfItems:<span style="color: #0066CC;">int</span> = hash.<span style="color: #0066CC;">length</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// do we have any items</span>
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>hash.<span style="color: #006600;">isEmpty</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// do something</span>
	...
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// is the key or the item in the table?</span>
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>hash.<span style="color: #006600;">containsKey</span><span style="color: #66cc66;">&#40;</span>person<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">||</span> hash.<span style="color: #006600;">containsItem</span><span style="color: #66cc66;">&#40;</span>friends<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// do something</span>
	...
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// we can also remove key pairs</span>
hash.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#40;</span>person<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// or clear the entire table</span>
hash.<span style="color: #006600;">removeAll</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>


<p><strong>Things to Consider When Using the HashTable</strong><br/>
If you read my <a href="http://blog.vivisectingmedia.com/2008/05/vivmedia-code-the-eventbroker/" title="Event Broker Tutorial">EventBroker post</a> or my <a href="http://blog.vivisectingmedia.com/2008/04/the-flex-code-behind-pattern/" title="Flex Code Behind Pattern">Code Behind Pattern post</a> then you know I like to point out any possible gotcha&#8217;s when using code.  I feel this is very important because if the issues are raised in the beginning it makes the life of the developer a hell of a lot easier.  Here are a few nuggets to consider when using the HashTable:</p>

<ul>
<li>The HashTable uses an Array under the hood so this means items are strong referenced.  Make sure to remove the items from the HashTable before you decide you no longer need the items in you application and want the Garbage Collection to clean them up.  </li>
<li>When using the getAllKeys() or getAllItems() you are being handed back a clone of the internal Array.  If you want to change the value in the HashTable you will need to overwrite them by updating the HashTable.  <strong>Note</strong>: The current version (0.01) of the Framework has a brute force clone in the HashTable.  I was a little for loop happy and this has been fixed locally and will be available in the SVN soon.  Version 0.02 of the framework will have this fix.  Its nothing to worry about, I just prefer more elegant code and wanted to note this for the few of you that will poor over my code (Aaron, Eno and Dave!)</li>
<li>You can have the same object multiple times in the HashTable if it is an item, but only one instance as a key.  This means that if you have the object &#8220;person&#8221; as the key to item &#8220;friends&#8221;, and then try to addItem(person, friendsTwo) then &#8220;friends&#8221; will be replaced with &#8220;friendsTwo&#8221; within the table.  This is silent and allowed.  Key&#8217;s must be unique otherwise you overwrite.</li>
</ul>

<p>That should be all&#8230; if you find anything, want more examples or event want new features let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/05/vivmedia-code-the-hashtable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 4: New MXML States Specification</title>
		<link>http://blog.vivisectingmedia.com/2008/05/flex-4-new-mxml-states-specification/</link>
		<comments>http://blog.vivisectingmedia.com/2008/05/flex-4-new-mxml-states-specification/#comments</comments>
		<pubDate>Fri, 09 May 2008 20:43:10 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[flex4]]></category>
		<category><![CDATA[mxml]]></category>
		<category><![CDATA[mxmlstates]]></category>
		<category><![CDATA[specs]]></category>
		<category><![CDATA[states]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/05/flex-4-new-mxml-states-specification/</guid>
		<description><![CDATA[Ted over at OnFlex posted a link to the new Flex 4 MXML states spec and I sat down to read it.  After finishing the spec, I thought long and hard about it and finally decided to add my own thoughts about the new spec to their wiki.  It is really awesome that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-105" style="float: left; margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px;" title="flex_logo" src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/04/flex.png" alt="Flex Logo" width="60" height="60" /><a href="http://onflex.org/" title="Ted On Flex...">Ted over at OnFlex</a> posted a link to the <a href="http://opensource.adobe.com/wiki/display/flexsdk/Enhanced+States+Syntax" title="Flex 4 States">new Flex 4 MXML states spec</a> and I sat down to read it.  After finishing the spec, I thought long and hard about it and finally decided to add my own thoughts about the new spec to their wiki.  It is really awesome that Adobe is starting to open up the specs to the public.  It gives developers a chance to see where the technology is going and also allows them to give feedback to the team.  Anyway, I am reposting my comments here so that you all can see what I had to say:</p>

<blockquote>
  <p>After my first in-depth pass of the spec I have some concerns around the developer workflow and the possible complexity of the MXML generated with the new inline states.  I agree that the current Flex state mechanism is hard to read, limited and can be overly complex to follow. Looking at the new proposed methodology I feel the solution has the potential to become just as complex, if not more so, and could make the code harder to follow for developers with larger components. An example of this kind of complex situation would be creating large forms that dynamically change their field structure dependent upon how the user answered previous fields in the form.  On a project I worked on we relied heavily on states to solve this issue because we constantly had to show/hide fields and extend forms based on the user selections.  </p>
  
  <p>My first concern is that by moving into an inline methodology making changes from code view becomes harder to traverse and manage overtime. The new inline syntax requires the developer to look for state properties and tags within the whole of the MXML layout to determine what is being show when and where. One of the benefits of the current syntax is that each state node clearly (more or less) shows what happens when each state is selected. With the new syntax the developer has to comb over all the code and then attempt to find all the references that define state layout.  In many situations this can be overcome by componentizing the code to help alleviate the complexity of the MXML but with large forms this is not necessarily an easy or viable solution.</p>
  
  <p>My second concern is based around state inheritance. I see that I can set includeIn/excludeFrom to multiple states or groups, but this means that I have to track all of the reparenting inline vs. using the classic &#8220;basedOn&#8221; inheritance approach.  A benefit of the inheritance model is that if state A handles a complex reparentaing structure and state B is a simple change to state A, a developer can simply state the changes in state B and then say extend from state A. With the new syntax, a developer has to track all the iterations of A and verify that B is added to all the state A changes and then make sure the B changes are applied.</p>
  
  <p>As you can tell, both of my concerns are focused on codebase management.  With the push of RIA development we are now creating code bases that have to grow, mature and scale over time.  The focus of maintenance and team growth on a project is becoming more important for development teams and as new developers are brought into the code base, readability and ease of maintenance is very important.  If a new developer was assigned to edit a form using the new layout they would have to review all of the MXML layout to determine both how it is structured and how it evolves with state changes.  If this state management is defined outside of the layout then in some ways it is easier to determine what is changing and when. I fully realize that the current states model needs to be redesigned but I feel moving to 100% inline solution is not necessarily the best answer and possibly a hybrid approach could help help manage code readability.</p>
</blockquote>

<p>Part of my passion about states is that I was the QA engineer assigned to the first iteration of states when we were developing them for Flex 2.  States are one of those concepts that are hard to grasp at first but then make a lot of sense and are incredibly useful after you get it.  In fact, we used states all over the place on Scion.com and I think all of the dev team learned to both love and hate them.  Let me know what you think about the proposed changes and if you feel strongly one way or the other I highly recommend commenting directly on the Flex spec!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/05/flex-4-new-mxml-states-specification/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is it Flex?</title>
		<link>http://blog.vivisectingmedia.com/2008/04/is-it-flex/</link>
		<comments>http://blog.vivisectingmedia.com/2008/04/is-it-flex/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 18:25:15 +0000</pubDate>
		<dc:creator>James Polanco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex Development]]></category>

		<guid isPermaLink="false">http://blog.vivisectingmedia.com/2008/04/is-it-flex/</guid>
		<description><![CDATA[Earlier this morning my friend Aaron hit me up with an IM asking if I had seen SearchMe.com.  It is a new visual search engine that is 100% Flash Player based and he was curious if it was Flex.  I had just heard about SearchMe last week from my ex-roommate and design guru, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-105" style="float: left; margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px;" title="flex_logo" src="http://blog.vivisectingmedia.com/wp-content/uploads/2008/04/flex.png" alt="Flex Logo" width="60" height="60" />Earlier this morning my friend Aaron hit me up with an IM asking if I had seen <a href="http://beta.searchme.com/" title="SearchMe.com">SearchMe.com</a>.  It is a new visual search engine that is 100% Flash Player based and he was curious if it was Flex.  I had just heard about SearchMe last week from my ex-roommate and design guru, <a href="http://www.amovertone.com/" title="Carl Nolting Online Portfolio.">Carl Nolting</a>.  Carl&#8217;s ex-co-worker had recently jumped ship to SearchMe and Carl talked about the site and what it was doing.</p>

<p>So how can you tell if a Flash app uses Flex?  If the UI is skinned and the default loader is changed (<a href="http://www.scion.com" title="Scion">like Scion.com</a>) then there is no easy way to determine if a Flash app is Flex.  That is where a <a href="http://www.jamesward.org/is_it_flex/" title="Is it Flex?">really simple tool called &#8220;Is it Flex?&#8221;</a> that was built by <a href="http://www.jamesward.org/" title="James Ward">James Ward</a>.  He built a simple web form that you can pass in a SWF location, the app then processes the SWF and then returns back if it uses Flex or not.  His app probably loads the SWF into a SWF and then pings it for certain Flex specific APIs.</p>

<p>James&#8217; tool has been around for a while and when Aaron asked me if SearchMe was Flex I instantly thought of testing the site using the form.  The only problem was that it took me over 20 minutes to find the fracking thing!  When I put in the words &#8216;is it flex&#8217; (no quotes) it didn&#8217;t come up at all in Google.  I then went to James&#8217; site and nothing there mentioned it.  I searched his blog and only the Flex blog posts came up (which he as 100 of).  I then went back to Google and tried different combinations.  I started to doubt my memory and thought maybe James didn&#8217;t write it.  Maybe it was not called &#8220;Is it Flex&#8221;, maybe it was something else.  I searched for how to determine if a SWF is a Flex application. Finally, I put the &#8220;is it flex&#8221; in quotes and it was the first hit.</p>

<p>Arg&#8230; I am usually pretty good with my searches and I would have tried that on my second try.  But the first time my search results were soooo off that I doubted my memory and immediately tried other keywords.  Its kind of funny that this happened because I had just read a <a href="http://www.popularmechanics.com/blogs/technology_news/4259137.html" title="20 (Rare) Questions for Google Search Guru Udi Manber">great interview with Udi Manber</a>, VP of search quality at Google.  He talks about how frustrating it is when your search fails.  We are so used to first success that when it doesn&#8217;t happen we tend to get frustrated.  Word.</p>

<p>So this is a twofold post. First to point out a great tool that let&#8217;s you peek under the covers to see if its all Flash or does it use the Flex Framework.  Second, to archive this link so that I don&#8217;t forget how to f***ing find it.</p>

<p>&#8211; ps:  I used Textmate to write this post and I forgot to save it the first time when I previewed it in the Textmate preview window.  I was all done and checking my links when I hit the SearchMe link.  I then hit back before it loaded and Flash Player then through a &#8220;load never completed&#8221; exception (yeah debug player), which then hung Flash and crashed Textmate.  I lost my first post and had to write this stupid thing again!  I got spoiled with Wordpress&#8217; auto-save feature&#8230; stupid, stupid, stupid.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vivisectingmedia.com/2008/04/is-it-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
