<?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>Lab49 Blog &#187; Flex</title>
	<atom:link href="http://blog.lab49.com/archives/category/flex/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.lab49.com</link>
	<description>Technology and industry insights from Lab49.</description>
	<lastBuildDate>Sat, 31 Jul 2010 18:43:21 +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>Behavior driven development with FlexUnit and mockito</title>
		<link>http://blog.lab49.com/archives/4503</link>
		<comments>http://blog.lab49.com/archives/4503#comments</comments>
		<pubDate>Tue, 25 May 2010 16:47:15 +0000</pubDate>
		<dc:creator>Thorsten Lorenz</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/?p=4503</guid>
		<description><![CDATA[Coming from a .Net background with strong emphasis  on best practices, one of my first missions when learning Flex, was to figure out how I could implement Behavior Driven Development  in this environment.

I tried a lot of different approaches ...]]></description>
			<content:encoded><![CDATA[<p>Coming from a .Net background with strong emphasis on best practices, one of my first missions when learning Flex, was to figure out how I could implement Behavior Driven Development  in this environment.</p>
<p>I tried a lot of different approaches and will show three of them.</p>
<p>I also discuss how to use mockito to supply us with mocks in a way that doesn&#8217;t interfere with the BDD approach.</p>
<p><a href="http://thorstenlorenz.wordpress.com/2010/05/23/bdd-with-flexunit-and-mockito-introduction/">You can read it here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/4503/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlexUnit4 &amp; Parsley</title>
		<link>http://blog.lab49.com/archives/4450</link>
		<comments>http://blog.lab49.com/archives/4450#comments</comments>
		<pubDate>Mon, 10 May 2010 22:01:47 +0000</pubDate>
		<dc:creator>Anthony McCormick</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[FlashBuilder]]></category>
		<category><![CDATA[FlexUnit4]]></category>
		<category><![CDATA[Inversion Of Control]]></category>
		<category><![CDATA[IOC]]></category>
		<category><![CDATA[Parsley]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/?p=4450</guid>
		<description><![CDATA[For the last six months I have been working on a rather large enterprise application that uses parsley as it&#8217;s main Dependency Injection Framework. This has led to many complex class&#8217; that contain multiple injected models, VO and other elements. Recreating these items inside test harness can become very cumbersome if you have to create [...]]]></description>
			<content:encoded><![CDATA[<p>For the last six months I have been working on a rather large enterprise application that uses parsley as it&#8217;s main Dependency Injection Framework. This has led to many complex class&#8217; that contain multiple injected models, VO and other elements. Recreating these items inside test harness can become very cumbersome if you have to create a large injection heirarchy. Consider the following example.</p>
<p><a title="FlexUnit4 &amp; Parsley" href="http://www.betadesigns.co.uk/Blog/2010/04/29/flexunit4-parsley/" target="_blank">More</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/4450/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom FlashBuilder Component Views</title>
		<link>http://blog.lab49.com/archives/4449</link>
		<comments>http://blog.lab49.com/archives/4449#comments</comments>
		<pubDate>Mon, 10 May 2010 21:51:50 +0000</pubDate>
		<dc:creator>Anthony McCormick</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Advanced Component Development]]></category>
		<category><![CDATA[Custom components]]></category>
		<category><![CDATA[design.xml]]></category>
		<category><![CDATA[FlashBuilder]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[manifest.xml]]></category>
		<category><![CDATA[swc]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/?p=4449</guid>
		<description><![CDATA[I recently discovered that you can create custom components that can appear under your own company/personal folder inside Flash/Flexbuilder design view. Normally any custom component you create will appear under the Custom folder in the Components View and well thats not very good for branding now is it. In addition you also get an actual [...]]]></description>
			<content:encoded><![CDATA[<p>I recently discovered that you can create custom components that can appear under your own company/personal folder inside Flash/Flexbuilder design view. Normally any custom component you create will appear under the Custom folder in the Components View and well thats not very good for branding now is it. In addition you also get an actual size representation of your component in Design view rather than just an empty box outline. For example the first image is the default and the second the custom.</p>
<p><a title="Custom FlashBuilder Component Views" href="http://www.betadesigns.co.uk/Blog/2010/05/06/custom-flashbuilder-component-views/" target="_blank">more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/4449/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saffron is still alive!</title>
		<link>http://www.michelboudreau.com/2010/04/30/saffron-is-still-alive/</link>
		<comments>http://www.michelboudreau.com/2010/04/30/saffron-is-still-alive/#comments</comments>
		<pubDate>Mon, 03 May 2010 14:28:30 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">tag:www.michelboudreau.com://3979e571cc1b8bfab9972fb8a3aa1a68</guid>
		<description><![CDATA[
Every year, I try to attend FITC Toronto to learn, play, network and recharge my creative battery.  There&#8217;s a lot of things that you can learn about the industry and the technology at this amazing conference.
Now, let&#8217;s do a small recap; in 2007, not long after the introduction of AIR, an ambitious project surfaced called [...]]]></description>
			<content:encoded><![CDATA[<p>Every year, I try to attend FITC Toronto to learn, play, network and recharge my creative battery.  There&#8217;s a lot of things that you can learn about the industry and the technology at this amazing conference.<br />
Now, let&#8217;s do a small recap; in 2007, not long after the introduction of AIR, an ambitious project surfaced called [...]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2010/04/30/saffron-is-still-alive/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Builder &amp; Flex 4 Review</title>
		<link>http://www.michelboudreau.com/2010/05/01/flash-builder-flex-4-review/</link>
		<comments>http://www.michelboudreau.com/2010/05/01/flash-builder-flex-4-review/#comments</comments>
		<pubDate>Mon, 03 May 2010 14:28:29 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">tag:www.michelboudreau.com://4ec650058e35d8239541852a703b5e33</guid>
		<description><![CDATA[When Flex 4 beta was released, I glanced over it quickly and sighed at several facts about it.  I didn&#8217;t use it in my work since using beta software in enterprise applications would essentially signing my death warrant.  I noticed a lot of other blogs mention the pros and cons about it. My [...]]]></description>
			<content:encoded><![CDATA[<p>When Flex 4 beta was released, I glanced over it quickly and sighed at several facts about it.  I didn&#8217;t use it in my work since using beta software in enterprise applications would essentially signing my death warrant.  I noticed a lot of other blogs mention the pros and cons about it. My [...]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2010/05/01/flash-builder-flex-4-review/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RichTextArea Component</title>
		<link>http://www.michelboudreau.com/2010/03/18/richtextarea-component/</link>
		<comments>http://www.michelboudreau.com/2010/03/18/richtextarea-component/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 15:35:40 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">tag:www.michelboudreau.com://c9669daa9855e61ec131a37d236b1b71</guid>
		<description><![CDATA[A few months ago, I was working on a project that needed a CMS backend to create content that will be displayed in Flex.  We used a RichTextEditor component to create appropriate HTML so that it would display like we wanted to on the frontend.
The problem with this approach is that we needed our [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I was working on a project that needed a CMS backend to create content that will be displayed in Flex.  We used a RichTextEditor component to create appropriate HTML so that it would display like we wanted to on the frontend.<br />
The problem with this approach is that we needed our [...]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2010/03/18/richtextarea-component/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PureMVC to Parsley</title>
		<link>http://www.sammur.com/?p=3</link>
		<comments>http://www.sammur.com/?p=3#comments</comments>
		<pubDate>Mon, 25 Jan 2010 13:53:13 +0000</pubDate>
		<dc:creator>Farid Sammur</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/?p=4011</guid>
		<description><![CDATA[An overview of the transition from PureMVC to Parsley.]]></description>
			<content:encoded><![CDATA[<p>An overview of the transition from PureMVC to Parsley.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sammur.com/?p=3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Silverlight overtaking both Flex and AIR?</title>
		<link>http://feedproxy.google.com/~r/MarcusWhitworth/~3/VQiKxGrDvQw/</link>
		<comments>http://feedproxy.google.com/~r/MarcusWhitworth/~3/VQiKxGrDvQw/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 19:53:05 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcuswhitworth.com/?p=101</guid>
		<description><![CDATA[Reading the feature list of the upcoming Silverlight 4 release (now in beta), I am more than a bit impressed.  Up to now, there has been a few glaring features by which Silverlight was trailing behind Flex - camera/mic input; printing; clipboard access; and right-to-left text being ones that spring to mind.  Admittedly, all of [...]]]></description>
			<content:encoded><![CDATA[<p>Reading <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx" >the feature list</a> of the upcoming Silverlight 4 release (now in beta), I am more than a bit impressed.  Up to now, there has been a few glaring features by which Silverlight was trailing behind Flex &#8211; camera/mic input; printing; clipboard access; and right-to-left text being ones that spring to mind.  Admittedly, all of these are fairly niche features which most applications wouldn&#8217;t require.</p>
<p>Silverlight 4 not only brings in all these features, but also a pile of others.  Interestingly, they seem to be making a direct pitch against Adobe AIR with many of the features.  The new Elevated Trust Applications feature (for out-of-browser apps), enables a host of features typically reserved for desktop applications: <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#localfiles" >Local file access</a>; <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#toast" >Notifications API</a>; <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#fullscreen" >Full-screen full-keyboard access</a>; <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#xdomain" >Cross-domain policy-free networking</a>; and <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#droptarget" >Drop targets</a>.  Of course, features aside, the huge advantage of the Silverlight desktop approach over AIR is that there is only one runtime plugin required.</p>
<p>At the speed Microsoft is moving forward with Silverlight, Adobe is going to have to start seriously upping their commitment to the Flash platform if they want to stay at the top of the game.  Up to now, they could always give the argument of Flex being more feature-rich, and the ease of adaptation to the desktop with AIR &#8211; with both of these arguments now void, and Microsoft firmly remaining miles ahead in the developer tooling scene, Adobe&#8217;s work is cut out.  They still have greater marketplace penetration with Flash player, but that lead is only going to narrow also.</p>
<p>You&#8217;ve got to love competition!</p>
<p>
		<a href="http://www.dotnetkicks.com/kick/?title=Is%20Silverlight%20overtaking%20both%20Flex%20and%20AIR?&#038;url=http%3A%2F%2Fwww.marcuswhitworth.com%2F2009%2F11%2Fis-silverlight-overtaking-both-flex-and-air%2F"><br />
		<img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3A%2F%2Fwww.marcuswhitworth.com%2F2009%2F11%2Fis-silverlight-overtaking-both-flex-and-air%2F" border="0" alt="Kick It on DotNetKicks.com" /> </a></p>
<p align="left"><a  class="tt" href="http://twitter.com/home/?status=Is+Silverlight+overtaking+both+Flex+and+AIR%3F+www.bit.ly/1LS0o7" title="Post to Twitter"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://buzz.yahoo.com/submit?submitUrl=http://www.marcuswhitworth.com/2009/11/is-silverlight-overtaking-both-flex-and-air/&amp;submitHeadline=Is+Silverlight+overtaking+both+Flex+and+AIR%3F" title="Post to Yahoo Buzz"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-buzz-micro3.png" alt="Post to Yahoo Buzz" /></a> <a  class="tt" href="http://delicious.com/post?url=http://www.marcuswhitworth.com/2009/11/is-silverlight-overtaking-both-flex-and-air/&amp;title=Is+Silverlight+overtaking+both+Flex+and+AIR%3F" title="Post to Delicious"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a  class="tt" href="http://digg.com/submit?url=http://www.marcuswhitworth.com/2009/11/is-silverlight-overtaking-both-flex-and-air/&amp;title=Is+Silverlight+overtaking+both+Flex+and+AIR%3F" title="Post to Digg"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a  class="tt" href="http://reddit.com/submit?url=http://www.marcuswhitworth.com/2009/11/is-silverlight-overtaking-both-flex-and-air/&amp;title=Is+Silverlight+overtaking+both+Flex+and+AIR%3F" title="Post to Reddit"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a> <a  class="tt" href="http://stumbleupon.com/submit?url=http://www.marcuswhitworth.com/2009/11/is-silverlight-overtaking-both-flex-and-air/&amp;title=Is+Silverlight+overtaking+both+Flex+and+AIR%3F" title="Post to StumbleUpon"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MarcusWhitworth?a=VQiKxGrDvQw:AM38r91CRwc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MarcusWhitworth?i=VQiKxGrDvQw:AM38r91CRwc:D7DqB2pKExk" border="0"></img></a>
</div>
<p><img src="http://feeds.feedburner.com/~r/MarcusWhitworth/~4/VQiKxGrDvQw" height="1" width="1"/></p>
]]></content:encoded>
			<wfw:commentRss>http://feedproxy.google.com/~r/MarcusWhitworth/~3/VQiKxGrDvQw/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Morgan Stanley’s Matrix webcast recording</title>
		<link>http://feedproxy.google.com/~r/dhruba/lab49/~3/2UKiBE1jWls/</link>
		<comments>http://feedproxy.google.com/~r/dhruba/lab49/~3/2UKiBE1jWls/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 22:35:36 +0000</pubDate>
		<dc:creator>Dhruba Bandopadhyay</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lab49]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://dhruba.name/?p=1209</guid>
		<description><![CDATA[
A month back a live webcast took place titled &#8216;Transcending the client experience&#8217; that focused primarily on the use of RIA in financial services and particularly within Morgan Stanley&#8217;s Matrix.  A recording of the webcast is now available.  I offer a small summary of some of the highlights here.
RIA offers a zero footprint [...]]]></description>
			<content:encoded><![CDATA[</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="227" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6245546&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="227" src="http://vimeo.com/moogaloop.swf?clip_id=6245546&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>A month <a href="http://mdavey.wordpress.com/2009/07/21/ria-matrix-webcast/">back</a> a live webcast took place titled &#8216;Transcending the client experience&#8217; that focused primarily on the use of RIA in financial services and particularly within Morgan Stanley&#8217;s Matrix.  A recording of the webcast is now available.  I offer a small summary of some of the highlights here.</p>
<p>RIA offers a zero footprint in terms of installation effort and supports real time data presentation through simple yet rich user interfaces.  It is bringing the business closer to its clients and is more than just technology in that it is solving real world business problems.</p>
<p>The progressive trends are as follows.  There is a front-end shift in that applications are now more driven by user experience and design than previously, can represent large amounts of varied and real time data more coherently and concisely and are increasingly beginning to approximate thick clients in that they are stateful and taking on more of the responsibilities of the server side.</p>
<p>Going forward opportunity is seen in adding threading support and mobile device support to Flex and also in migrating the vast amount of legacy applications currently existing to RIA technology.  Morgan Stanley&#8217;s Matrix received special recognition throughout being one of the largest production Flex applications in the world, if not the largest, at more than six hundred thousand lines of code developed in the timeframe of a year.</p>
<p>[ Recording of the "Transcending the Client Experience webcast", organised by Adobe and Finextra. Participants in this hour and a quarter long session discuss how developers at financial firms use rich Internet application technologies to integrate real-time data, with the delivery of audio, video, reports and rich interactive charts to trading applications.]</p>
<p>[Panel participants: Hishaam Mufti-Bey (Matrix founder and global director at Morgan Stanley), Stephane Malrait (Global Head of eCommerce at Societe Generale), Mark Greenaway (Adobe), Trevor LaFleche (Senior Analyst at Financial Insights).  Moderator: Vivake Gupta, Managing Director, Lab49.]</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdhruba.name%2F2009%2F08%2F25%2Fmorgan-stanleys-matrix-webcast-recording%2F&amp;linkname=Morgan%20Stanley%26%238217%3Bs%20Matrix%20webcast%20recording"><img src="http://dhruba.name/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a></p>
<p><img src="http://feeds.feedburner.com/~r/dhruba/lab49/~4/2UKiBE1jWls" height="1" width="1"/></p>
]]></content:encoded>
			<wfw:commentRss>http://feedproxy.google.com/~r/dhruba/lab49/~3/2UKiBE1jWls/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where to begin?</title>
		<link>http://feedproxy.google.com/~r/MarcusWhitworth/~3/2eHClHmyTb4/</link>
		<comments>http://feedproxy.google.com/~r/MarcusWhitworth/~3/2eHClHmyTb4/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 09:14:40 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcuswhitworth.com/?p=4</guid>
		<description><![CDATA[So I've been thinking about what I could kick start this blog with - stuff in which I've developed a bit of a niche and have something to share with a wider audience.  My background has been primarily in web-based application development, with the tools focused largely within the .NET and the RIA spaces.
I recently [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been thinking about what I could kick start this blog with &#8211; stuff in which I&#8217;ve developed a bit of a niche and have something to share with a wider audience.  My background has been primarily in web-based application development, with the tools focused largely within the .NET and the RIA spaces.</p>
<p>I recently helped <a href="http://codertron.blogspot.com/" >a colleague</a> out with an article on <a href="http://codertron.blogspot.com/2009/05/flex-3-versus-silverlight-3-in.html" >Flex vs. Silverlight in the Enterprise</a>.  Both of us have a strong .NET background, and have more recently been heavily involved on a massive enterprise-scale Flex application.  Although  I still stand by the original article, I realise it&#8217;s impossible to accurately and fairly detail each platforms&#8217; strengths and weaknesses in one post.</p>
<p>So, I plan to start a bit of a series &#8211; comparing different user experiences as created with Silverlight and Flex, and hopefully reaching a conclusion on the benefits of each platform, based upon developer experience/efficiency, and of course how the end result meets the original client requirements.</p>
<p>Each post will focus on a technical area that you may find within any enterprise RIA.  Example areas could be video streaming, datagrid customisation, push messaging, theming/skinning, just to name a few.</p>
<p>It&#8217;s as much for my own benefit as anyone else&#8217;s &#8211; in order to deliver the best client experience, you HAVE to know what the best tools or platform are for any given situation!</p>
<p>
		<a href="http://www.dotnetkicks.com/kick/?title=Where%20to%20begin?&#038;url=http%3A%2F%2Fwww.marcuswhitworth.com%2F2009%2F08%2Fwhere-to-begin%2F"><br />
		<img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3A%2F%2Fwww.marcuswhitworth.com%2F2009%2F08%2Fwhere-to-begin%2F" border="0" alt="Kick It on DotNetKicks.com" /> </a></p>
<p align="left"><a  class="tt" href="http://twitter.com/home/?status=Where+to+begin%3F+www.bit.ly/5zDqVP" title="Post to Twitter"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://buzz.yahoo.com/submit?submitUrl=http://www.marcuswhitworth.com/2009/08/where-to-begin/&amp;submitHeadline=Where+to+begin%3F" title="Post to Yahoo Buzz"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-buzz-micro3.png" alt="Post to Yahoo Buzz" /></a> <a  class="tt" href="http://delicious.com/post?url=http://www.marcuswhitworth.com/2009/08/where-to-begin/&amp;title=Where+to+begin%3F" title="Post to Delicious"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a  class="tt" href="http://digg.com/submit?url=http://www.marcuswhitworth.com/2009/08/where-to-begin/&amp;title=Where+to+begin%3F" title="Post to Digg"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-digg-micro3.png" alt="Post to Digg" /></a> <a  class="tt" href="http://reddit.com/submit?url=http://www.marcuswhitworth.com/2009/08/where-to-begin/&amp;title=Where+to+begin%3F" title="Post to Reddit"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-reddit-micro3.png" alt="Post to Reddit" /></a> <a  class="tt" href="http://stumbleupon.com/submit?url=http://www.marcuswhitworth.com/2009/08/where-to-begin/&amp;title=Where+to+begin%3F" title="Post to StumbleUpon"><img class="nothumb" src="http://www.marcuswhitworth.com/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MarcusWhitworth?a=2eHClHmyTb4:NqpQHl-S9Gg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MarcusWhitworth?i=2eHClHmyTb4:NqpQHl-S9Gg:D7DqB2pKExk" border="0"></img></a>
</div>
<p><img src="http://feeds.feedburner.com/~r/MarcusWhitworth/~4/2eHClHmyTb4" height="1" width="1"/></p>
]]></content:encoded>
			<wfw:commentRss>http://feedproxy.google.com/~r/MarcusWhitworth/~3/2eHClHmyTb4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex in finance</title>
		<link>http://blog.lab49.com/archives/2940</link>
		<comments>http://blog.lab49.com/archives/2940#comments</comments>
		<pubDate>Thu, 26 Mar 2009 10:00:12 +0000</pubDate>
		<dc:creator>Alex Vandenberg</dc:creator>
				<category><![CDATA[Finance]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/archives/2940</guid>
		<description><![CDATA[Recently I&#8217;ve been taking a break from the joys of C# and Winforms and have been having a look at Actionscript and Flex. Looking through Flex livedocs I noticed this paragraph on their description of the Flex &#8220;Number&#8221; data type.
“Although this range of numbers is enormous, the cost of this range is precision. The Number [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: 14.25pt;"><span style="font-size: 10pt; color: black; font-family: &quot;Lucida Sans Unicode&quot;,&quot;sans-serif&quot;;">Recently I&#8217;ve been taking a break from the joys of C# and Winforms and have been having a look at Actionscript and Flex. Looking through Flex livedocs I noticed this paragraph on their description of the Flex &#8220;Number&#8221; data type.</span></p>
<p style="line-height: 14.25pt;"><span style="font-size: 10pt; color: black; font-family: &quot;Lucida Sans Unicode&quot;,&quot;sans-serif&quot;;">“Although this range of numbers is enormous, the cost of this range is precision. The Number data type uses 52 bits to store the significand, with the result that numbers that require more than 52 bits to represent precisely, such as the fraction 1/3, are only approximations. If your application requires absolute precision with decimal numbers, you need to use software that implements decimal floating-point arithmetic as opposed to binary floating-point arithmetic.”</span></p>
<p style="line-height: 14.25pt;"><span style="font-size: 10pt; color: black; font-family: &quot;Lucida Sans Unicode&quot;,&quot;sans-serif&quot;;">Seems to me they’re basically saying that if you have an app where number precision is important, then don’t use Flex. While Flex can create some great looking applications, my impressions are that for financial and LOB applications – Silverlight with the pedigree of C# and the wide range of 3rd party controls and tools should be the first choice.</span></p>
<p style="line-height: 14.25pt;"><span style="font-size: 10pt; color: black; font-family: &quot;Lucida Sans Unicode&quot;,&quot;sans-serif&quot;;">Update: I’ve just found a 3<sup>rd</sup> party library with a simplified implementation of the decimal data type. <a href="http://www.fxcomps.com/components.html"><span style="color: #800080;">http://www.fxcomps.com/components.html</span></a> Naturally Flex is extensible, so it’s possible to solve most problems one way or another.<span style="mso-spacerun: yes;">  </span>However it’s nicer to have an out of the box solution where things like this are present without you having to even think about it.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/2940/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find security vulnerabilities in Flex applications</title>
		<link>http://www.borrewessel.com/?p=45</link>
		<comments>http://www.borrewessel.com/?p=45#comments</comments>
		<pubDate>Mon, 23 Mar 2009 19:02:46 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=45</guid>
		<description><![CDATA[HP has launched a new tool to find security vulnerabilities in Flash/Flex applications, SWFScan. Looks quite promising, this is how it does it:

Decompiles and analyzes the application to identify security issues.
Identifies insecure code, and deployment setup.
No need for access to the code
And it is Free

Definitely worth trying, finally someone creates a tool to address Flash [...]]]></description>
			<content:encoded><![CDATA[<p>HP has launched a new tool to find security vulnerabilities in Flash/Flex applications, <a href="http://www.hp.com/go/swfscan">SWFScan</a>. Looks quite promising, this is how it does it:</p>
<ul>
<li>Decompiles and analyzes the application to identify security issues.</li>
<li>Identifies insecure code, and deployment setup.</li>
<li>No need for access to the code</li>
<li>And it is Free</li>
</ul>
<p>Definitely worth trying, finally someone creates a tool to address Flash security. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=45/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stubbing Flex HTTPServices</title>
		<link>http://www.borrewessel.com/?p=24</link>
		<comments>http://www.borrewessel.com/?p=24#comments</comments>
		<pubDate>Tue, 24 Feb 2009 22:46:27 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=24</guid>
		<description><![CDATA[On a few projects I have worked on there has been necessary to stub the Flex HttpServices. A couple of reasons has been, server side code is not ready yet or services are too unstable to support a continuous UI development.
I have seen examples where there has been spent a lot of time developing code [...]]]></description>
			<content:encoded><![CDATA[<p>On a few projects I have worked on there has been necessary to stub the Flex HttpServices. A couple of reasons has been, server side code is not ready yet or services are too unstable to support a continuous UI development.</p>
<p>I have seen examples where there has been spent a lot of time developing code to accommodate for this, with the only result that code base has a lot of non production code which can cause bugs and add an overhead to maintenance of the system. In my eyes that would be wrong, test/mock coding is money wasted on valuable time that should be spent on developing features.</p>
<p>So why not use something which already (almost) exist. When you use HTTPServices, you can point to nearly anything that gives you some kind of XML result. Pointing to a static XML file on the server should give you almost the same as pointing to a service which would serve you dynamic XML.</p>
<pre>

package com.lab49.spike
{
	import mx.core.Application;

	import mx.rpc.AsyncToken;
	import mx.rpc.http.mxml.HTTPService;

	public class StubHttpService extends HTTPService
	{
		public var stubUrl : String = &quot;&quot;;

		private function get stub() : Boolean
		{
			var stubParam : String = String( Application.application.parameters[ &quot;stub&quot; ] );

			return stubParam == &quot;true&quot;;
		}

		public override function send( param : Object  = null ) : AsyncToken
		{
			if( stub )
			{
				url = stubUrl
			}

			return super.send( param );
		}
	}
}
</pre>
<p>And when you use it, insert &#8220;stub=true&#8221; in your url, and add this to your StubHTTPService:</p>
<pre>

&lt;spike:StubHttpService
	url=&quot;http://localhost:8080/spike/myService&quot;
	stubUrl=&quot;xml/stub.xml&quot;
	...
/&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=24/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mission critical Flex application</title>
		<link>http://www.borrewessel.com/?p=13</link>
		<comments>http://www.borrewessel.com/?p=13#comments</comments>
		<pubDate>Mon, 09 Feb 2009 23:20:56 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=13</guid>
		<description><![CDATA[One of my previous projects were showcased on Adobe Max 2008 in San Francisco, a mission planning system for NATO AWACS, E-3A Component, presented by Peter Martin and Mansour Raad.
The application was built based on Flex, LiveCycle DataServices and Oracle, one of the main components used within Flex was the ESRI mapping api.
The presentation is [...]]]></description>
			<content:encoded><![CDATA[<p>One of my previous projects were showcased on Adobe Max 2008 in San Francisco, a mission planning system for NATO AWACS, E-3A Component, presented by <a title="Peter Martin" href="http://weblogs.macromedia.com/pmartin">Peter Martin</a> and <a title="Mansour Raad" href="http://thunderheadxpler.blogspot.com/">Mansour Raad</a>.<br />
The application was built based on Flex, LiveCycle DataServices and Oracle, one of the main components used within Flex was the ESRI mapping api.</p>
<p>The presentation is available on <a title="AdobeTV" href="http://tv.adobe.com/#vi+f15384v1096">AdobeTV</a>.</p>
<p>Who said Adobe Flex couldn&#8217;t be used for critical systems? <img src='http://www.borrewessel.com/wp-includes/images/smilies/icon_smile.gif' alt=')' class='wp-smiley' /> If Adobe wants Flex to be seen as a serious framework in the enterprise, this is the kind of projects they need to show more of.</p>
<p>Over a series of posts I will cover some of the experiences gathered from this and other projects I have taken part in. There is usually more to a project then just choosing a framework like Cairngorm, PureMVC or one of the many IoC containers which are popping up everywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=13/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PureMVC</title>
		<link>http://blog.lab49.com/archives/2489</link>
		<comments>http://blog.lab49.com/archives/2489#comments</comments>
		<pubDate>Wed, 13 Aug 2008 22:59:38 +0000</pubDate>
		<dc:creator>Daniel Chait</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/?p=2489</guid>
		<description><![CDATA[Cross-language implementation of the MVC meta-pattern &#8211; PureMVC.  Supported languages:

ActionScript 2
ActionScript 3
C#
ColdFusion
haXe
Java
Perl
PHP
Python
Ruby

]]></description>
			<content:encoded><![CDATA[<p>Cross-language implementation of the MVC meta-pattern &#8211; <a href="http://puremvc.org/">PureMVC</a>.  Supported languages:</p>
<ul>
<li>ActionScript 2</li>
<li>ActionScript 3</li>
<li>C#</li>
<li>ColdFusion</li>
<li>haXe</li>
<li>Java</li>
<li>Perl</li>
<li>PHP</li>
<li>Python</li>
<li>Ruby</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/2489/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scotch on the Rocks, day 3</title>
		<link>http://www.borrewessel.com/?p=10</link>
		<comments>http://www.borrewessel.com/?p=10#comments</comments>
		<pubDate>Mon, 09 Jun 2008 08:42:39 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=10</guid>
		<description><![CDATA[My second presentation at Scotch On the Rocks was Flex Client Architecture &#38; Best Practices. The one topic in the presentation which gained most attention was probably PresentationModels. I would say there is not really any magic to how to use PresentationModels, but it is more down to what kind of logic you put there [...]]]></description>
			<content:encoded><![CDATA[<p>My second presentation at Scotch On the Rocks was <a href="https://share.acrobat.com/adc/document.do?docid=c8ae0f12-5678-4110-84a9-84cb22f75ebf">Flex Client Architecture &amp; Best Practices</a>. The one topic in the presentation which gained most attention was probably PresentationModels. I would say there is not really any magic to how to use PresentationModels, but it is more down to what kind of logic you put there and how it relates to your services. The PresentationModel pattern is also independent of any framework you would put on top of Flex.</p>
<p>If you have an interest in presentation patterns, I would recommend to look at <a href="http://weblogs.macromedia.com/paulw/">Paul Williams</a> great presentation pattern blog series. He also has a series covering how to unit test the different patterns, which most developers should find interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scotch on the Rocks, day 2</title>
		<link>http://www.borrewessel.com/?p=9</link>
		<comments>http://www.borrewessel.com/?p=9#comments</comments>
		<pubDate>Thu, 05 Jun 2008 13:03:21 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=9</guid>
		<description><![CDATA[Today I had the first of two presentations I will have at Scotch on the Rocks 2008, todays topic was Modularizing Flex applications - Cairngorm &#38; Modules. It was good to see so many Coldfusion ( and Flex ) developers being interested in how to use Flex modules and Cairngorm.
Tomorrow I will present &#8220;Flex Client [...]]]></description>
			<content:encoded><![CDATA[<p>Today I had the first of two presentations I will have at Scotch on the Rocks 2008, todays topic was <a href="https://share.acrobat.com/adc/document.do?docid=8460658d-9900-4379-8855-09621d32222d">Modularizing Flex applications &#8211; Cairngorm &amp; Modules</a>. It was good to see so many Coldfusion ( and Flex ) developers being interested in how to use Flex modules and Cairngorm.</p>
<p>Tomorrow I will present &#8220;Flex Client Architecture &amp; Best Practices&#8221;, where topics like PresentationModel and unit testing will be covered.</p>
<p>As I also announced on 360|Flex Europe in Milan, Adobe Consulting will over the next few months share some of our best practices in a series of articles. A topic could be for example &#8220;Cairngorm and Modules&#8221;. Steven Webster has posted a <a href="http://weblogs.macromedia.com/swebster/archives/2008/05/cairngorm_tech.html">call for topics</a> blog post</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cairngorm Deepdive</title>
		<link>http://www.borrewessel.com/?p=8</link>
		<comments>http://www.borrewessel.com/?p=8#comments</comments>
		<pubDate>Fri, 11 Apr 2008 15:18:16 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=8</guid>
		<description><![CDATA[On Wednesday I had the pleasure of presenting &#8220;Cairngorm Deepdive&#8221; at 360&#124;Flex Europe. Thanks to
Tom and John for organizing the first 360&#124;Flex in Europe
Presentation Cairngorm Deepdive
]]></description>
			<content:encoded><![CDATA[<p>On Wednesday I had the pleasure of presenting &#8220;Cairngorm Deepdive&#8221; at 360|Flex Europe. Thanks to<br />
<a href="http://lordbron.wordpress.com/">Tom</a> and <a href="http://johnwilker.com/">John</a> for organizing the first 360|Flex in Europe</p>
<p>Presentation <a href="https://share.acrobat.com/adc/document.do?docid=a0d01f34-42a2-42e2-b712-2d733e8f0044">Cairngorm Deepdive</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>360&#124;Flex Europe &#8211; Cairngorm deepdive</title>
		<link>http://www.borrewessel.com/?p=7</link>
		<comments>http://www.borrewessel.com/?p=7#comments</comments>
		<pubDate>Thu, 27 Mar 2008 00:29:20 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=7</guid>
		<description><![CDATA[It is now less than 2 weeks left till 360&#124;Flex Europe kicks off in Milan, Italy. And looking at the list of topics being presented, it&#8217;s going to be a great conference!
In my presentation - Cairngorm deepdive, I&#8217;ll be covering some of the history behind the Cairngorm Microarhitecture, how to use it on large scale [...]]]></description>
			<content:encoded><![CDATA[<p>It is now less than 2 weeks left till <a href="http://www.360flex.com/360flex_Europe/">360|Flex Europe</a> kicks off in Milan, Italy. And looking at the list of topics being presented, it&#8217;s going to be a great conference!</p>
<p>In my presentation &#8211; <a href="http://www.360flex.com/360Flex_Europe/2008/03/360flex-gets-deep-with-cairngorm.html">Cairngorm deepdive</a>, I&#8217;ll be covering some of the history behind the Cairngorm Microarhitecture, how to use it on large scale projects, how to handle security, and also shed some light on the future of the framework.</p>
<p>There is also a second presentation covering Cairngorm, Neil Webb will present <a href="http://nwebb.co.uk/blog/?p=154">Cairngorm for beginners</a>.</p>
<p>If you haven&#8217;t already signed up for the conference, you can do so <a href="http://360flexeurope.eventbrite.com/">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Chaining in Flex</title>
		<link>http://blog.lab49.com/archives/1760</link>
		<comments>http://blog.lab49.com/archives/1760#comments</comments>
		<pubDate>Thu, 21 Feb 2008 00:28:10 +0000</pubDate>
		<dc:creator>Jason Dolinger</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.lab49.com/archives/1760</guid>
		<description><![CDATA[For my latest project I've been working on a set of related portals with the UI written in Adobe Flex, communicating with a set of REST services.  A common requirement that I've seen amongst these are to call a set of services at startup to load various initialization and configuration data, use that data to initialize a set of controls, and then allow the user to begin interacting with the app.  

Given the asynchronous nature of making service calls in Flex (or Ajax apps or any other RIA technology) you can run into race conditions if you simply fire off all of the service calls at once, especially if the result handler of one service has a dependency on a piece of data that was loaded from a different service.  Additionally, you need to be notified of when all the initialization services have finished so you can perform any rendering actions to make the app available for business.]]></description>
			<content:encoded><![CDATA[<p>For my latest project I&#8217;ve been working on a set of related portals with the UI written in Adobe Flex, communicating with a set of REST services.  A common requirement that I&#8217;ve seen amongst these are to call a set of services at startup to load various initialization and configuration data, use that data to initialize a set of controls, and then allow the user to begin interacting with the app.  </p>
<p>Given the asynchronous nature of making service calls in Flex (or Ajax apps or any other RIA technology) you can run into race conditions if you simply fire off all of the service calls at once, especially if the result handler of one service has a dependency on a piece of data that was loaded from a different service.  Additionally, you need to be notified of when all the initialization services have finished so you can perform any rendering actions to make the app available for business.<br />
(A concrete example of this would be an app that needs to load a list of position dates from a service, and will then pick the latest position date as a parameter into a number of other service calls that populate DataGrids on the screen.  You must defer the calls to load each grid until the positionDates service has returned).</p>
<p>The first approach that my team had to implementing this would be to fire off the first service in the creationComplete handler of the application, then at the end of that service&#8217;s result handler fire off the second service, and so on.  Given an application with two HTTPServices (svc1 and svc2) declared and a creationComplete event handler to kick the processing off, a contrived example of this would look like this:</p>
<pre>
private function onCreateComplete(event:Event):void
{

    // wire service result handlers
    svc1.addEventListener(ResultEvent.RESULT, result1);
    svc2.addEventListener(ResultEvent.RESULT, result2);

    // invoke first service
    svc1.send();

}

private function result1(event:ResultEvent):void
{
    // do something with the result of svc1, then invoke
    // svc2
    svc2.send();
}

private function result2(event:ResultEvent):void
{
    // do something with the results of service 2, then
    // perform actions to make app available
}
</pre>
<p>This type of design quickly grew brittle and unmanageable.  Readability is forfeited as you need to navigate around all of your event handling methods to discern the ordering of events.  Adding new service calls or changing the order becomes an exercise in figuring out where to insert the next call and how to hook it up into the flow.  If you have certain subclasses of your application class that needed additional service calls (as my project does), it is difficult to insert a new service into the flow.  </p>
<p>As a piece of refactoring, I created a neat little class to give us an easy way to put the ordering of the services in one central location, decoupling the service flow from the result handlers. It maintains an internal list of services to call, in the order that they are added to the chain.  When you add an HTTPService (and it&#8217;s corresponding event handler) to the chain, a generic event handler is added to listen for the result event.  When this handler is invoked, it&#8217;ll call the actual event handler that you provided for that service, and will then pop the next service off the chain and call it.  You can also specify a final handler method to be called once all the services in the chain are finished:</p>
<pre>
public class ServiceChain
{
    private var _chain:Array = new Array();
    private var _curEntry:Object;
    private var _chainFinishedHandler:Function;
    public function ServiceChain()
    {
        super();
    }

    /**
     * @param f
     * Setter for the chainFinishedHandler, a method that will be
     * invoked when the final service has returned.
     */
    public function set chainFinishedHandler(f:Function):void {
	_chainFinishedHandler = f;
    }

    /**
     * @param svc
     * @param resultHandler
     *
     * Adds a chain entry for the HTTPService and resultHandler pair
     * (added as an anonymous object with svcclass and handler
     * properties).  An event listener is added to the svc class to
     * invoke the genericOnServiceResult when the service returns.
     */
    public function add(svc:HTTPService, resultHandler:Function):void
    {
        // redirect the results of all service calls to the generic handler
        svc.addEventListener(ResultEvent.RESULT, genericOnServiceResult);
        _chain.push({svcclass: svc, handler: resultHandler});
    }

    /**
     * Pick the next service off the chain and invoke it's send method.
     * If there is no service on the queue, we are finished.  Invoke the
     * chainFinishedHandler if present.
     */
    public function run():void
    {
        _curEntry = _chain.shift();
        if (_curEntry == null) {
            if (_chainFinishedHandler != null)
                _chainFinishedHandler();
            return;
        }
        _curEntry.svcclass.send();
    }

    /**
     * @param event
     *
     * The service has returned, so invoke the actual event handler for the
     * service, then call run() to pick the next service from the chain.
     */
    private function genericOnServiceResult(event:ResultEvent):void
    {
        _curEntry.handler(event);
        run();
    }
}
</pre>
<p>Then the application code simplifies to:</p>
<pre>
private function onCreateComplete(event:Event):void
{
	var chain:ServiceChain = new ServiceChain();
	chain.add(svc1, result1);
	chain.add(svc2, result2);
	chain.chainFinishedHandler = chainFinished;
	chain.run();
}

private function result1(event:ResultEvent):void
{
	// ... do something with the result of svc1
}

private function result2(event:ResultEvent):void
{
	// ... do something with the result of service 2
}

private function chainFinished():void
{
	// make app available
}
</pre>
<p>We&#8217;ve now decoupled the ordering of service calls from the handling of each service result, have a way for subclasses to insert their own calls to the chain (making the chain a protected member), and have an easy way to execute logic when service calls have finished.   This pattern I suppose is something akin to a Chain of Responsibility with a different flavor to handle the asynchronicity of each operation.  I&#8217;d imagine this type of thing could be useful in Flex, Silverlight, or any other rich client app which must initialize itself from remote services called asynchronously.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lab49.com/archives/1760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Life With ActionScript and AIR: The Command Pattern Is Your Best Friend</title>
		<link>http://decav.com/blogs/andre/archive/2007/11/16/life-with-actionscript-and-air-the-command-pattern-is-your-best-friend.aspx</link>
		<comments>http://decav.com/blogs/andre/archive/2007/11/16/life-with-actionscript-and-air-the-command-pattern-is-your-best-friend.aspx#comments</comments>
		<pubDate>Tue, 30 Nov 1999 00:00:00 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#39;ve recently started a project (top secret!) using the new Adobe Integrated Runtime (AIR), Flex and ActionScript 3.0. Coming from a .NET and WPF world. this has been a step in a very different direction. There are a lot of things I don&#39;t really love about ActionScript, however it does do its job, and the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve recently started a project (top secret!) using the new Adobe Integrated Runtime (AIR), Flex and ActionScript 3.0. Coming from a .NET and WPF world. this has been a step in a very different direction. There are a lot of things I don&#39;t really love about ActionScript, however it does do its job, and the Adobe AIR deployment strategy (along with its SQLLite database) is pretty damn good. One of the first things any developer will realize when trying to build a real Rich Internet Application (RIA) in ActionScript is the lack of threading. This makes doing background tasks very difficult. ActionScript, and its class library, works largely with callback methods (either from calling setInterval, using a Timer class, calling a SQLConnection or using the HTTPService or other class to make a data call). From what I can tell, this works much like the Windows message loop, inurrupting synchronous code on your UI thread to process the callback. While this is great for simple actions (say, a UI that calls a web service or REST service ), building a background process (such as a SQL Server synchronization engine) can get complicated. Due to the number of callbacks you&#39;ll receive each time you make a request (to SQLConnection or HTTPService ), there is a great amount of complexity in writing simple procedual background processes (that don&#39;t freeze up the UI). To better handle this situation, and ensure that your discrete functions run in the proper order (for example, Authenticate -&gt; Get Data), a command pattern in ActionScript will become your best friend. You can string together multiple callbacks, and ensure that the code for these operations stay in one logical class. Furthermore, by using a queue, you can order your commands such that they run synchronously. This provides much more flexibility than the traditional scripting approach in ActionScript. Unfortunately, I cannot currently provide code samples, as I do not want to compromise the intellectual property of my project, however, I hope that this will help you get an idea of how to best manage your code and synchronous operations in .NET. Side Note: If you&#39;re using WCF I suggest you use the Basic HTTP Binding with Flex, as FlexBuilder gets confused with .NET Web Services</p>
]]></content:encoded>
			<wfw:commentRss>http://decav.com/blogs/andre/archive/2007/11/16/life-with-actionscript-and-air-the-command-pattern-is-your-best-friend.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Using Adobe Flex with Rails” tutorial at RailsConf Europe</title>
		<link>http://www.borrewessel.com/?p=6</link>
		<comments>http://www.borrewessel.com/?p=6#comments</comments>
		<pubDate>Mon, 17 Sep 2007 22:30:12 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=6</guid>
		<description><![CDATA[Today I&#8217;m presenting at RailsConf Europe in Berlin together with Aslak Hellesøy from Bekk Consulting. Todays tutorial is &#8220;Using Adobe Flex with Rails&#8221;, the tutorial is all about how to combine two great tools to quickly develop nice looking and compelling applications. It is really interesting to see what the Rails community is doing with [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m presenting at RailsConf Europe in Berlin together with <a href="http://blog.aslakhellesoy.com/">Aslak Hellesøy</a> from <a href="http://www.bekk.no/">Bekk Consulting</a>. Todays tutorial is &#8220;Using Adobe Flex with Rails&#8221;, the tutorial is all about how to combine two great tools to quickly develop nice looking and compelling applications. It is really interesting to see what the Rails community is doing with BDD (Behavior-Driven Development), Aslaks second tutorial of the day, and rapid prototyping.</p>
<p>Both Rails and Flex are considered &#8220;best in class&#8221; when it comes to rapid development, and during todays 3.5 hour session we will show how Flex can integrate with Rails using a REST based back-end.</p>
<p>The presentation can be found <a href="https://share.acrobat.com/adc/document.do?docid=1455f64a-3e78-45fe-8112-ceeb87eeac88">here</a>, and the code is on <a href="http://code.google.com/p/attender/">google code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presenting “Eliminate Waste in Java Development with Adobe Flex” at JavaZone</title>
		<link>http://www.borrewessel.com/?p=5</link>
		<comments>http://www.borrewessel.com/?p=5#comments</comments>
		<pubDate>Thu, 13 Sep 2007 22:05:54 +0000</pubDate>
		<dc:creator>Borre Wessel</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.borrewessel.com/?p=5</guid>
		<description><![CDATA[JavaZone in Oslo, Norway, is the starting point of my little conference &#8220;tour&#8221;.
Today I presented Eliminate Waste in Java Development with Adobe Flex together with Espen Dalløkken from Ezmo at JavaZone in Oslo, Norway. A short outline of the presentation on how to eliminate waste in Rich Internet Applications:

Remove your Java MVC; Spring MCV, WebFlow, [...]]]></description>
			<content:encoded><![CDATA[<p>JavaZone in Oslo, Norway, is the starting point of my little conference &#8220;tour&#8221;.</p>
<p>Today I presented <a href="https://share.acrobat.com/adc/document.do?docid=d74524d0-b1cb-4228-9f2d-8ba7bedb75fb">Eliminate Waste in Java Development with Adobe Flex</a> together with Espen Dalløkken from <a href="http://www.ezmo.com/">Ezmo</a> at JavaZone in Oslo, Norway. A short outline of the presentation on how to eliminate waste in Rich Internet Applications:</p>
<ul>
<li>Remove your Java MVC; Spring MCV, WebFlow, Struts 2&#8230;</li>
<li>No MVC, less configuration and no flow configuration on server, your application is data driven, why should the server care about the flow on the client!</li>
<li>LCDS, LiveCycle Data Services on top of your existing application, Integrating with Spring, Hibernate, EJB, using one of the LCDS adapters, or using a custom adapter.</li>
<li>Streamline handover between design and development teams using Flex/Flash Component kit.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.borrewessel.com/?p=5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
