<?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>Fusioncube &#187; flex</title>
	<atom:link href="http://www.fusioncube.net/index.php/category/development/flex/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fusioncube.net</link>
	<description>The online journey of a technophile, by Steve Brownlee</description>
	<lastBuildDate>Wed, 01 Feb 2012 04:17:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WPF vs Flex: Which is better?</title>
		<link>http://www.fusioncube.net/index.php/wpf-vs-flex-which-is-better</link>
		<comments>http://www.fusioncube.net/index.php/wpf-vs-flex-which-is-better#comments</comments>
		<pubDate>Thu, 04 Nov 2010 20:25:55 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[wpf]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[star trek]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/index.php/wpf-vs-flex-which-is-better</guid>
		<description><![CDATA[Now that I have some solid WPF coding under my belt, I felt like speaking out a little about how it compares, in my mind, to developing in Flex and Actionscript. First, and foremost, I have to say [BINDABLE] FTW!! That one thing alone sums up the rest of my ramblings below, and you can [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I have some solid WPF coding under my belt, I felt like speaking out a little about how it compares, in my mind, to developing in Flex and Actionscript.</p>
<p>First, and foremost, I have to say [BINDABLE] FTW!! That one thing alone sums up the rest of my ramblings below, and you can probably skip the rest of this article if you wish after you read the next opinion.</p>
<p>The cultures of Adobe and Microsoft are best reflected in how you accomplish any development feat &#8211; Adobe did its best to make sure the &#8220;little stuff&#8221; is handled behind the scenes so that development can be done as quickly as possible, while Microsoft assumes absolutely nothing and requires you to write dozens of lines of code to achieve even the simplest of development goals.</p>
<h3>Microsoft World</h3>
<p>If you want absolute, iron-gripped control over every single feature of your application, and want to hand-craft almost every piece of customization or abstraction that is needed, then the Microsoft stack is definitely for you &#8211; the uber geek, the one who takes tremendous pride in his mastery of every aspect of his application.</p>
<p>Unfortunately, WPF still has a little ways to go to catch up with the power and features of Flex. Of course, WPF is for desktop apps and runs as a native assembly, and doesn&#8217;t need a third party installation that is, admittedly, more bloated and use a bit more memory.</p>
<h3>Adobe World</h3>
<p>If you want to focus on functionality, and get products/updates released as quickly as possible, and could care less what magic goes on when you bind a Collection to a DataGrid, then the Adobe stack is for you &#8211; the quasi geek, the one who needs to do the design, the architecting, the development and the support, and doesn&#8217;t have time to spend hours hand-crafting simple tasks that the software should obviously be doing for you.</p>
<p>However, I think the folks at Adobe heaved a huge sigh of relief when Microsoft announced that Silverlight&#8217;s focus will now be for mobile development only. Given time, Silverlight would have been a superior product to Flex (on Windows).</p>
<h3>My World</h3>
<p>For me, I much prefer the Adobe ideology. Perhaps it&#8217;s the Star Trek geek in me. My philosophy when it comes to development stems from years of watching Star Trek: The Next Generation.&#160; Does that make me an uber geek anyways?&#160; Perhaps.</p>
<p>When critical software and systems needed to be modified on the Enterprise, did you see Jordi sit down at a computer terminal, bring up a development environment and figure out how to expose the correct property change event, make sure it implemented the correct interface, open another file to map the property to the system, and then open another file to make sure it looked right (all in a proprietary language that NO ONE ELSE uses)?</p>
<p>No. By the 25th century, they finally get it. Superior engineers &#8211; whether they work on software, or warp engines &#8211; want the basic tasks done for them if possible.&#160; It saves time, and makes work a lot more fun. If I can add a new column to a dataset and have it displayed in my interface in 1 minute, then I&#8217;m all for it. </p>
<p>Sure, there are still people in the world who would rather take the 30 minutes to do it &#8220;right&#8221; by writing every single line of code needed to perform the task.</p>
<p>Sorry, not me.&#160; I got shit to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/wpf-vs-flex-which-is-better/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Flex runtime-shared-library-path solution</title>
		<link>http://www.fusioncube.net/index.php/flex-runtime-shared-library-path-solution</link>
		<comments>http://www.fusioncube.net/index.php/flex-runtime-shared-library-path-solution#comments</comments>
		<pubDate>Fri, 09 Apr 2010 15:54:42 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[compiler]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[flex adobe runtime-shared-library-path]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/index.php/flex-runtime-shared-library-path-solution</guid>
		<description><![CDATA[In my last post, I expressed frustration with the fact that the MXMLC Ant task choked on the runtime-shared-library-path attributes. Well, I decided to not use the MXMLC task and instead use Ant’s EXEC command to compile the app.&#160; Works like a charm.&#160; Therefore, I can only assume that there’s a bug in the MCMLC [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.fusioncube.net/index.php/come-on-flex-team-youre-killing-me-here" target="_blank">my last post</a>, I expressed frustration with the fact that the MXMLC Ant task choked on the runtime-shared-library-path attributes.</p>
<p>Well, I decided to not use the MXMLC task and instead use Ant’s EXEC command to compile the app.&#160; Works like a charm.&#160; Therefore, I can only assume that there’s a bug in the MCMLC and COMPC tasks provided in the <em>flexTasks.jar</em> file in the Flex 3.5.0 SDK.</p>
<p>Here’s how my compile task looks now.</p>
<pre class="code"><code>&lt;exec dir="." executable="${FLEX_HOME}/bin/mxmlc.exe"&gt;
    &lt;arg value="${src.dir}/${main.application}" /&gt;
    &lt;arg value="-output=${build.dir}/${build.file}" /&gt;
    &lt;arg value="-incremental=false" /&gt;
    &lt;arg value="-locale=${locale}" /&gt;
    &lt;arg value="-library-path=${FLEX_HOME}/frameworks/locale/${locale}/rpc_rb.swc" /&gt;
    &lt;arg value="-library-path+=${FLEX_HOME}/frameworks/locale/${locale}/framework_rb.swc" /&gt;
    &lt;arg value="-library-path+=${FLEX_HOME}/frameworks/locale/${locale}/datavisualization_rb.swc" /&gt;
    &lt;arg value="-library-path+=${main.lib.dir}/applicationAPI.swc" /&gt;
    &lt;arg value="-library-path+=${common.lib.dir}/it_common.swc" /&gt;
    &lt;arg value="-library-path+=${framework.lib.dir}/common_framework.swc" /&gt;
    &lt;arg value="-source-path=${src.dir}" /&gt;
    &lt;arg value="-runtime-shared-library-path=${FLEX_HOME}/frameworks/libs/framework.swc,${web.root.dir}/lib/flex/${flex.build.number}/framework_${flex.build.number}.swz,${web.root.dir}/cross-domain.xml,${web.root.dir}/lib/flex/${flex.build.number}/framework_${flex.build.number}.swf,${web.root.dir}/cross-domain.xml" /&gt;
    &lt;arg value="-runtime-shared-library-path=${FLEX_HOME}/frameworks/libs/rpc.swc,${web.root.dir}/lib/flex/${flex.build.number}/rpc_${flex.build.number}.swz,${web.root.dir}/cross-domain.xml,${web.root.dir}/lib/flex/${flex.build.number}/rpc_${flex.build.number}.swf,${web.root.dir}/cross-domain.xml" /&gt;
    &lt;arg value="-runtime-shared-library-path=${FLEX_HOME}/frameworks/libs/datavisualization.swc,${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swz,${web.root.dir}/cross-domain.xml,${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swf,${web.root.dir}/cross-domain.xml" /&gt;
&lt;/exec&gt;</code></pre>
<p>Very happy that this works, so that we can upgrade the SDK to 3.5.0 and take advantage of the bug fixes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/flex-runtime-shared-library-path-solution/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Come on Flex team. You&#8217;re killing me here.</title>
		<link>http://www.fusioncube.net/index.php/come-on-flex-team-youre-killing-me-here</link>
		<comments>http://www.fusioncube.net/index.php/come-on-flex-team-youre-killing-me-here#comments</comments>
		<pubDate>Thu, 08 Apr 2010 20:06:55 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[flex adobe runtime-shared-library-path]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=838</guid>
		<description><![CDATA[Seriously, folks.&#160; Why do you keep changing the configuration of the runtime-shared-library-path compiler option?? Here’s how you configure a RSL in an ANT build script in Flex 3.3.0.&#160; Don’t even get me started on how it took me to figure that out, because this is completely different from what’s in their documentation!!!!! &#60;runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/datavisualization.swc"&#62; &#60;url [...]]]></description>
			<content:encoded><![CDATA[<p>Seriously, folks.&#160; Why do you keep changing the configuration of the runtime-shared-library-path compiler option??</p>
<p>Here’s how you configure a RSL in an ANT build script in Flex 3.3.0.&#160; Don’t even get me started on how it took me to figure that out, because this is completely different from what’s in their documentation!!!!!</p>
<pre class="code"><code>&lt;runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/datavisualization.swc"&gt;
    &lt;url rsl-url="${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swz" /&gt;
    &lt;url policy-file-url="${web.root.dir}/cross-domain.xml" /&gt;
    &lt;url rsl-url="${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swf" /&gt;
    &lt;url policy-file-url="${web.root.dir}/cross-domain.xml" /&gt;
&lt;/runtime-shared-library-path&gt;</code></pre>
<p>I downloaded Flex 3.5.0 today and ran my build scripts, and what do I get spit back at me?</p>
<blockquote>
<p>[mxmlc] command line: Error: configuration variable &#8216;runtime-shared-library-path&#8217; requires a value for &#8216;rsl-url&#8217;</p>
</blockquote>
<p>So you changed it AGAIN??&#160; Come on!!!</p>
<p>Oh, and where do I find the documentation for how I need to write this configuration in 3.5.0?&#160; Nowhere.&#160; I just spent 2 hours scouring the Adobe site, and Googling to come up empty. Then I try the following configuration which is what&#8217;s in the public, published documentation about RSLs. </p>
<pre class="code"><code>&lt;runtime-shared-library-path&gt;
    &lt;path-element&gt;${FLEX_HOME}/frameworks/libs/datavisualization.swc&lt;/path-element&gt;
    &lt;rsl-url&gt;${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swz&lt;/rsl-url&gt;
    &lt;policy-file-url&gt;${web.root.dir}/cross-domain.xml&lt;/policy-file-url&gt;
    &lt;rsl-url&gt;${web.root.dir}/lib/flex/${flex.build.number}/datavisualization_${flex.build.number}.swf&lt;/rsl-url&gt;
    &lt;policy-file-url&gt;${web.root.dir}/cross-domain.xml&lt;/policy-file-url&gt;
&lt;/runtime-shared-library-path&gt;</code></pre>
<p>Also doesn&#8217;t work.</p>
<p>So now I’m stuck not being able to compile my projects with our build automation tool.&#160; Way to go guys.</p>
<p>I’m really fuming about this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/come-on-flex-team-youre-killing-me-here/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Trying out Silverlight</title>
		<link>http://www.fusioncube.net/index.php/trying-out-silverlight</link>
		<comments>http://www.fusioncube.net/index.php/trying-out-silverlight#comments</comments>
		<pubDate>Mon, 29 Mar 2010 15:50:18 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/index.php/trying-out-silverlight</guid>
		<description><![CDATA[** This post has been removed due to my company&#8217;s Internet policies **]]></description>
			<content:encoded><![CDATA[<p><em>** This post has been removed due to my company&#8217;s Internet policies **</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/trying-out-silverlight/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex: Annoyed with COMPC Ant task</title>
		<link>http://www.fusioncube.net/index.php/flex-annoyed-with-compc-ant-task</link>
		<comments>http://www.fusioncube.net/index.php/flex-annoyed-with-compc-ant-task#comments</comments>
		<pubDate>Fri, 05 Feb 2010 15:17:57 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[ant]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=736</guid>
		<description><![CDATA[In my continuing journey with TeamCity, I&#8217;ve discovered something highly annoying&#8230; not with TeamCity but with Adobe. I&#8217;m trying to build a master configuration with an Ant script that will automatically build several child modules. First thing I realize is that I have to override the path properties of the child Ant script with relatives [...]]]></description>
			<content:encoded><![CDATA[<p>In my continuing journey with TeamCity, I&#8217;ve discovered something highly annoying&#8230; not with TeamCity but with Adobe.</p>
<p>I&#8217;m trying to build a master configuration with an Ant script that will automatically build several child modules.  First thing I realize is that I have to override the path properties of the child Ant script with relatives paths from the parent script.  Ok, that makes sense since it&#8217;s a subtask being called from the scope of the parent, so the paths have to be from that directory.</p>
<p>Then I try to call COMPC in the child Ant script.  It chokes hard with:</p>
<pre class="code"><code>[compc] command line: Error: unable to open 'api/src/Manifest.xml'</code></pre>
<p>&#8220;That&#8217;s odd,&#8221; I think.  I know I&#8217;m passing it the right path (contained in the ${src.dir} property).  However, just to check, let&#8217;s echo out the contents of the path I&#8217;m sending to the child script.</p>
<pre class="code"><code>&lt;fileset id="dir.contents" dir="${src.dir}" includes="*"/&gt;
&lt;property name="file.name" refid="dir.contents"/&gt;
&lt;echo&gt;${file.name}&lt;/echo&gt;</code></pre>
<p>I run the script again, and lo and behold, guess what echoes out?</p>
<pre class="code"><code> [echo] Manifest.xml</code></pre>
<p>wtf?</p>
<p>Ant says that the file exists in the path contained in the ${src.dir} property, but the COMPC task says it doesn&#8217;t exist?</p>
<pre class="code"><code>&lt;compc output="${build.dir}/${build.file}" debug="false"&gt;
	&lt;include-namespaces uri="${namespace}" /&gt;
	&lt;namespace uri="${namespace}" manifest="${src.dir}/${manifest.filename}" /&gt;
   ...</code></pre>
<p>Still haven&#8217;t figured this one out, because I&#8217;m now stuck in the process of throwing darts with a blindfold on, simply <strong>guessing</strong> which directory COMPC <em>thinks</em> it&#8217;s starting from, because, of course, there&#8217;s no way to output anything from inside the COMPC task.</p>
<p>ARGH!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/flex-annoyed-with-compc-ant-task/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Application and Client Specific Messaging in Flex</title>
		<link>http://www.fusioncube.net/index.php/application-and-client-specific-messaging-in-flex</link>
		<comments>http://www.fusioncube.net/index.php/application-and-client-specific-messaging-in-flex#comments</comments>
		<pubDate>Mon, 01 Feb 2010 17:51:08 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[event gateways]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[recommended]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=706</guid>
		<description><![CDATA[I&#8217;ve had a task I assigned to myself open for some time now. I needed to figure out how to implement Flex/ColdFusion messaging for our clients. There were three (3) criteria for success: It needed to integrate seamlessly with our existing Cairngorm Extensions It needed to allow for application level messages It needed to allow [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a task I assigned to myself open for some time now.  I needed to figure out how to implement Flex/ColdFusion messaging for our clients.  There were three (3) criteria for success:</p>
<ol>
<li>It needed to integrate seamlessly with our existing Cairngorm Extensions</li>
<li>It needed to allow for application level messages</li>
<li>It needed to allow for client specific messages</li>
</ol>
<p>The trick was to create an abstract class that multiple departments could use, because internally we use ColdFusion, Java and .NET to produce and consume messages.  In our department, we use ColdFusion, so I had to create a concrete implementation of the abstract class called ColdFusionMessagingDelegate which handles the construction and publication of an AsyncMessage to a ColdFusion Event Gateway.</p>
<p>Other departments&#8217; implementation of this process will be different, so I couldn&#8217;t force an implementation in the abstract class.</p>
<p>Additionally, in the application I was using for testing, I wanted to have two categories of messages:</p>
<ol>
<li>Messages intended to be produced and consumed by individual clients</li>
<li>Messages intended to be consumed by any client</li>
</ol>
<p>To that end, I created another abstract class at the application level that simply passed along specific a Flex Producer and Consumer for each category. I then created two concrete classes.  One specified the Producer and Consumer for the application, and the other specified the Producer and Consumer for that individual client.</p>
<p>Here&#8217;s a diagram showing the architecture.</p>
<div id="attachment_718" class="wp-caption alignnone" style="width: 762px"><a href="http://www.fusioncube.net/wp-content/uploads/2010/02/GenericMessagingArchitecture.png"><img src="http://www.fusioncube.net/wp-content/uploads/2010/02/GenericMessagingArchitecture.png" alt="Generic Messaging Architecture" title="Generic Messaging Architecture" width="564" height="457" class="size-full wp-image-718" /></a><p class="wp-caption-text">Generic Messaging Architecture</p></div>
<p>So far, it&#8217;s working great in the development test lab, but I still need to get with my colleagues for a group code review and hopefully fine tune the code and the architecture a bit more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/application-and-client-specific-messaging-in-flex/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ColdFlash!</title>
		<link>http://www.fusioncube.net/index.php/coldflash</link>
		<comments>http://www.fusioncube.net/index.php/coldflash#comments</comments>
		<pubDate>Wed, 14 Oct 2009 12:29:30 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=670</guid>
		<description><![CDATA[I see a trend happening at Adobe that I believe others may be detecting but no one has come out and said it yet. This trend will have a significant impact on software engineers who are experienced and/or committed to the Adobe stack of technologies &#8211; specifically to ColdFusion developers. I have seen the question, [...]]]></description>
			<content:encoded><![CDATA[<p>I see a trend happening at Adobe that I believe others may be detecting but no one has come out and said it yet. This trend will have a significant impact on software engineers who are experienced and/or committed to the Adobe stack of technologies &#8211; specifically to ColdFusion developers.</p>
<p>I have seen the question, &#8220;Why do I need to learn Flex?&#8221;, floating around for about two years now from many ColdFusion developers.  These dedicated folks have noticed the ongoing trend of companies moving their user interfaces from straight HTML/Javascript to Flex.</p>
<p>Aside from noticing the trend being enough of a motivator to learn Flex (and it should be), the trend at the technology level should be additional motivator.</p>
<h3>Blurring the Lines</h3>
<p>The reason I entitled this article ColdFlash! is that I believe that by the time ColdFusion 11 is released to the public, the lines between ColdFusion and the Flash Platform will be practically eliminated to the point where entire applications can be written in the Actionscript language.  ColdFusion will simply be another package available to Actionscript developers, much the same as data visualization.</p>
<p>Let&#8217;s take a look at some of the things that led me to this conclusion.</p>
<ul>
<li>Back in ColdFusion MX 7, the ability to <a href="http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/js/html/wwhelp.htm?href=00001493.htm">use ColdFusion on server-side Actionscript</a> was introduced.</li>
<li>ColdFusion 8 greatly enhanced the ability to integrate ColdFusion with Actionscript applications with the inclusion of LCDS Lite, or using BlazeDS.</li>
<li>The ability to use ColdFusion functionality from Actionscript is finally marketed with ColdFusion 9, which, to me, indicates that Adobe is going to start expanding on this.</li>
<li>Enhanced Flash Remoting in ColdFusion 9.  BlazeDS installed by default with the ability to upgrade to LiveCycle Data Services 2.6.1</li>
</ul>
<h3>A World of RIA</h3>
<p>The era of static web applications is coming to an end.  Everywhere you look, there are Flex web sites, Flex web applications, Flex business applications, iPhone apps, Android apps, AJAX sites and applications, and even Silverlight (but since this is an Adobe related article, we won&#8217;t focus on &#8220;that&#8221; technology).</p>
<p>Using these technologies allows developers to create interactive, responsive, intelligent, and user-friendly applications that people actually enjoy using &#8211; because in the end that&#8217;s what it&#8217;s all about.  I&#8217;ve seen many apps created that perfectly fulfill the requirements established for it, but are disliked by the users because of the technical restrictions the old world of HTML placed upon it.</p>
<p>Of course, we&#8217;re still living in the world of HTTP, but with Adobe&#8217;s AMF protocol, it&#8217;s not as painful because our payloads have been drastically reduced &#8211; which increases responsiveness even further.</p>
<p>I believe what I&#8217;m trying to get at here is that RIA can no longer be considered a fad, a passing fancy, or a dead-end trend.  Just like technologies such as ASP, ColdFusion and PHP completely transformed the Internets from a vast collection of non-interactive HTML pages into a data-aware, responsive universe, the RIA trend is the child of that revolution. Applications can now not only present data, but present it more quickly, more intelligently and in a more visually engaging way.</p>
<p>If you are ColdFusion developer, and not even considering learning some of the technologies is what is now called the Flash Platform, you are ensuring your continuing progression towards being along the same career path of a COBOL programmer.  Granted, that&#8217;s an extreme example, and may not be accurate, but it conveys what I&#8217;m trying to get across.</p>
<h3>It&#8217;s Still J2EE</h3>
<p>For me, the most powerful feature of working with ColdFlash is that it&#8217;s all built on the Java platform.  You could have Java developers, and ColdFlash developers in the same organization with no loss in productivity or community.  </p>
<p>In fact, one of the things we&#8217;ve been considering in my team is the possibility of coverting some of our heaviest ColdFusion Components into Java code to increase our performance (sidebar: Let&#8217;s go ColdFusion team!  We need even more speed on CFC creation) when sending back large arrays of objects to our Flex clients.</p>
<h3>It&#8217;s Time to Evolve</h3>
<p>In conclusion, I want to say that I don&#8217;t believe ColdFusion as a language is going away, Adobe has proven that it&#8217;s going to be a core component of the Flash Platform, but I do believe it is going to evolve into ColdFlash and that the best career move that ColdFusion developers can make right now is to learn Flash, AIR, and Flex.</p>
<p>In 2-3 years when the Flash Platform becomes more integrated, employers are going to be looking for the whole package, not just a ColdFusion developer, and not just an Actionscript developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/coldflash/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cairngorm 3: The cat is out of the bag</title>
		<link>http://www.fusioncube.net/index.php/cairngorm-3-the-cat-is-out-of-the-bag</link>
		<comments>http://www.fusioncube.net/index.php/cairngorm-3-the-cat-is-out-of-the-bag#comments</comments>
		<pubDate>Wed, 07 Oct 2009 18:53:32 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[cairngorm]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=662</guid>
		<description><![CDATA[Now that I can officially talk about Cairngorm 3, I thought I&#8217;d put some of my thoughts down (more for my future reference, but feel free to follow along). Alex Uhlmann officially announced the release of Cairngorm 3 beta on October 5th, and from my limited access to the documentation and code, I have a [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I can officially talk about Cairngorm 3, I thought I&#8217;d put some of my thoughts down (more for my future reference, but feel free to follow along).</p>
<p>Alex Uhlmann officially <a href="http://blogs.adobe.com/auhlmann/archives/2009/10/cairngorm_3_bet.html">announced the release of Cairngorm 3</a> beta on October 5th, and from my limited access to the documentation and code, I have a few opinions.</p>
<h3>Cairngorm 3 != MVC</h3>
<p>I think that it is a positive thing that Adobe Consulting decided to take their hat out of the ring of application architecture providers.  The next release of Cairngorm is a complete paradigm shift for the project, in that it is &#8211; to simplify it a bit &#8211; a set of best practices and support libraries that developers can use within an application architecture such as Mate, Swiz or Parsley.</p>
<p>After I learned this fact, I was surprised that they kept the same project name, but it is a strong brand which will retain the current developer base and level of interest.</p>
<p>I also think that it lays the groundwork for a more free-market environment for other application architectures available today, or soon to be available.  I know that a large consideration we made at my company was that since Cairngorm was produced by Adobe Consulting, that it would always be a strong contender, and most likely the proverbial 400-pound gorilla.  Now that there is not an &#8220;official&#8221; application architecture supported by Adobe, then the weight of the brand is removed from the decision making. Now becomes about who has the architecture that is best implemented, best documented, easiest to integrate, etc.</p>
<h3>It&#8217;s Smart Business</h3>
<p>Looking at it strictly from a consulting business perspective, this approach to application development support is much more sustainable and has higher revenue-generating potential.  If a shop chose to implement the Cairngorm 2 architecture, they may require assistance initially to get up to speed but eventually they become highly proficient and that well dries up.</p>
<p>In addition, it limits their business to people who implement Cairngorm 2.</p>
<p>Now that Cairngorm 3 can enhance and extend any architecture available &#8211; since it is about applying best practices &#8211; their consulting possibilities are now limitless.  It doesn&#8217;t matter if you choose to use Mate, or PureMVC, because the Cairngorm 3 libraries can enhance them to support enterprise Flex development.</p>
<p>It&#8217;s a win-win situation.  They get more business and more expertise, which in turn generates more ideas for Cairngorm, and makes their package more useful as time goes on.</p>
<h3>Past Imperfect</h3>
<p>However, I now wish I could turn back the clock 1 year and change the decision we made to implement Cairngorm 2 architecture.  After doing internal testing of the major packages available, Cairngorm was not our main choice from a technical perspective, but was the top contender from the business perspective, and so we bit the bullet and adapted.</p>
<p>At the time, Mate was my choice for our application development efforts, and now we may have the discussion again internally about moving over.  I know it won&#8217;t happen, for we&#8217;ve invested far too much time and effort into adopting Cairngorm, but I at least want to have the conversation.</p>
<h3>Exciting Times</h3>
<p>Lastly, I will say I am excited about this new direction that Adobe has taken, and we&#8217;ve already begun to play around with some of the code in-house.  I&#8217;ll post reviews once I&#8217;ve had a chance to digest most of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/cairngorm-3-the-cat-is-out-of-the-bag/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial: Flex and ColdFusion Communication via Event Gateways</title>
		<link>http://www.fusioncube.net/index.php/tutorial-flex-and-coldfusion-communication-via-event-gateways</link>
		<comments>http://www.fusioncube.net/index.php/tutorial-flex-and-coldfusion-communication-via-event-gateways#comments</comments>
		<pubDate>Tue, 09 Jun 2009 17:16:11 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[event gateways]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[recommended]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=606</guid>
		<description><![CDATA[How to set up ColdFusion event gateways for communicating with Flex.]]></description>
			<content:encoded><![CDATA[<h1>1&nbsp;&nbsp;&nbsp;Preface</h1>
<p>At work, we&#8217;re investigating using ColdFusion Event Gateways to handle certain complex types of communication between our Flex user interfaces and ColdFusion, so yesterday I jumped on Google and started researching and ran into some <a href="http://www.fusioncube.net/index.php/coldfusion-event-gateway-for-flex-messaging">roadblocks</a>.  However, after some monkeying around and more poring over of documentation and articles, I finally got a basic example working.</p>
<p>As usual, now that I&#8217;ve discovered how to set up a somewhat advanced feature of a platform, I&#8217;m sharing the knowledge in a comprehensive article.  The documentation available for getting ColdFusion and Flex to communicate via event gateways was scattered, incomplete, or incomprehensible.  In many of the articles, there were a lot of words, but little or no code, which does not help developers at all.  Don&#8217;t tell me how it works, SHOW me how it works.</p>
<h1>2&nbsp;&nbsp;&nbsp;Creating a ColdFusion Listener Component</h1>
<p>The listener component is the ColdFusion code that will receive any message sent from your Flex client via the DataServicesMessaging gateway type in your ColdFusion admin (more on that later).  The basic structure is simple &#8211; just need one method named onIncomingMessage() in your component.</p>
<p>Create a file called InterceptFlex.cfc somewhere in your webroot and put the following code in it.</p>
<h3>InterceptFlex.cfc</h3>
<pre class="code"><code>&lt;cfcomponent output="false"&gt;
   &lt;cffunction name="onIncomingMessage" returntype="any"&gt;
         &lt;cfargument name="event" type="struct" required="true" /&gt;

	&lt;/cffunction&gt;
&lt;/cfcomponent&gt;</code></pre>
<h1>3&nbsp;&nbsp;&nbsp;Setting Up Your Event Gateway</h1>
<p>Now you need to go to your ColdFusion Administrator so that you can create an event gateway that specifies that any message coming in on a certain destination will be sent to the InterceptFlex component.</p>
<h2>3.1&nbsp;&nbsp;&nbsp;Destinations</h2>
<p>There is a destination already set up for you in the \WEB-INF\flex\services-config.xml file (or \WEB-INF\flex\messaging-config.xml file if you are running BlazeDS) called ColdFusionGateway, and we&#8217;re just going to use that for this example.</p>
<p>You just need to make one change for this sample application to work.  Open up the XML file and find the ColdFusionGateway destination.  In the &lt;properties&gt; block add the following server property:</p>
<pre class="code"><code>&lt;properties&gt;
   &lt;server&gt;
      &lt;durable&gt;false&lt;/durable&gt;
      &lt;allow-subtopics&gt;true&lt;/allow-subtopics&gt;
   &lt;/server&gt;

   ...
&lt;/properties&gt;</code></pre>
<h2>3.2&nbsp;&nbsp;&nbsp;Gateway Setup</h2>
<p>Now, go to the Gateway Instances section of your ColdFusion Administrator and start creating a gateway.  </p>
<ol>
<li>The gateway ID can be anything, and you can just call it &#8220;test&#8221; for now.</li>
<li>Select <em>DataServicesMessaging</em> as the type.</li>
<li>The CFC path is the physical path to your InterceptFlex.cfc file you created.</li>
<li>the configuration file is located in the <em>\WEB-INF\cfusion\gateway\config\</em> directory, and you can use the one already set up named <em>flex-messaging-gateway.cfg</em>.  So find that file and enter the path here.</li>
<li>Click the <em>Add Gateway Instance</em> button.</li>
<li>Start the gateway instance you just created.</li>
</ol>
<h1>4&nbsp;&nbsp;&nbsp;Sending Messages From Flex</h1>
<p>This application is a slight modification from the code provided in the Adobe article <a href="http://www.adobe.com/devnet/flex/articles/intro_fms.html">Introduction to the Flex Message Service</a>, which I highly recommend you read if you&#8217;re new to Flex Messaging.</p>
<p>Create a new Flex application called <strong>Chat</strong> and paste this code into the <em>Chat.mxml</em> file. This code will connect to the ColdFusionGateway destination and send the message object to ColdFusion.  ColdFusion, in turn, uses the event gateway instance we set up to send that object to the <em>onIncomingMessage()</em> method of the <em>InterceptFlex.cfc</em> component.</p>
<pre class="code"><code>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
    pageTitle="Simple Flex Chat" creationComplete="createChat()"&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[

        import mx.messaging.Consumer;
        import mx.messaging.Producer;
        import mx.messaging.events.MessageAckEvent;
        import mx.messaging.events.MessageFaultEvent;
        import mx.messaging.events.MessageEvent;
        import mx.messaging.messages.AcknowledgeMessage;
        import mx.messaging.messages.AsyncMessage;
        import mx.utils.ObjectUtil;

        private var chatPublisher:Producer;
        private var chatSubscriber:Consumer;

        private function createChat():void
        {
            chatPublisher = new Producer();
            chatPublisher.addEventListener(MessageFaultEvent.FAULT, onProducerFault);
            chatPublisher.destination = "ColdFusionGateway";

            chatSubscriber = new Consumer();
            chatSubscriber.addEventListener(MessageAckEvent.ACKNOWLEDGE, onConsumerAck);
            chatSubscriber.addEventListener(MessageEvent.MESSAGE, receiveChatMessage);
            chatSubscriber.destination = "ColdFusionGateway";
            chatSubscriber.subtopic = "simpleChat";
            chatSubscriber.subscribe();
        }

        private function onProducerFault(faultEvent:MessageFaultEvent):void
        {
            output.text += "[Error: " + faultEvent.message.toString() + "]\n";
        }

        private function onConsumerAck(ackEvent:MessageAckEvent):void
        {
            output.text += "[Got ack for subscribe or unsubscribe operation]\n";
        }

        // Note: these are the event-handling methods from above, now moved into the separate source file:

        private function sendChatMessage():void
        {
            var msg:AsyncMessage = new AsyncMessage();
            msg.body = input.text;
            msg.headers["username"] = "Me";
            msg.headers["gatewayid"] = "test";
            chatPublisher.subtopic = "simpleChat";
            chatPublisher.send(msg);
            input.text = "";
        }

        private function receiveChatMessage(msgEvent:MessageEvent):void
        {
            var msg:AsyncMessage = AsyncMessage(msgEvent.message);
            output.text += msg.headers["username"] + ": " + msg.body + "\n";
        }
        ]]&gt;
    &lt;/mx:Script&gt;

    <!-- UI Declarations -->
    &lt;mx:Panel title="Simple Flex Chat"&gt;
        &lt;mx:TextArea id="output" width="500" height="220" /&gt;
        &lt;mx:TextInput id="input" width="500" enter="sendChatMessage()" /&gt;
        &lt;mx:ControlBar horizontalAlign="center" width="500"&gt;
            &lt;mx:Button id="clearBtn" label="Clear" click="output.text =''" /&gt;
        &lt;/mx:ControlBar&gt;
    &lt;/mx:Panel&gt;

&lt;/mx:Application&gt;</code></pre>
<h1>5&nbsp;&nbsp;&nbsp;Respond to the Flex Client</h1>
<p>Now that ColdFusion has received the message, we&#8217;re simply going to respond back.  You can enhance this to do anything you wish &#8211; send out emails, update database tables, log messages &#8211; but for now we&#8217;re just going to send a message back that let&#8217;s the Flex client know that the mechanism works.</p>
<pre class="code"><code>&lt;cfcomponent output="false"&gt;
   &lt;cffunction name="onIncomingMessage" returntype="any"&gt;
      &lt;cfargument name="event" type="struct" required="true" /&gt;

      &lt;cfscript&gt;
      x = structNew();
      x.body = "hello right back at ya";
      x.destination = "ColdFusionGateway";
      x.headers = structNew();
      x.headers['username'] = "System";
      x.headers['DSSubtopic'] = "simpleChat";
      x.lowercasekeys = "yes";
      &lt;/cfscript&gt;

      &lt;cfreturn x /&gt;
   &lt;/cffunction&gt;
&lt;/cfcomponent&gt;</code></pre>
<p>One of those esoteric details that took me forever to find out was how to apply a subtopic to a message in ColdFusion.  In Flex, it&#8217;s absurdly simply, you simply say <em>message.subtopic = &#8220;myTopic&#8221;;</em>, but in ColdFusion, you have to set a header key named DSSubtopic with the topic name (see above).</p>
<h1>6&nbsp;&nbsp;&nbsp;Conclusion</h1>
<p>To be safe, restart your ColdFusion instance, then fire up the simple Flex chat app and type in a message.  After a few seconds, you will receive a message from System in the history box.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/tutorial-flex-and-coldfusion-communication-via-event-gateways/feed</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>ColdFusion Event Gateway for Flex Messaging</title>
		<link>http://www.fusioncube.net/index.php/coldfusion-event-gateway-for-flex-messaging</link>
		<comments>http://www.fusioncube.net/index.php/coldfusion-event-gateway-for-flex-messaging#comments</comments>
		<pubDate>Mon, 08 Jun 2009 19:43:55 +0000</pubDate>
		<dc:creator>Steve Brownlee</dc:creator>
				<category><![CDATA[blazeDS]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.fusioncube.net/?p=592</guid>
		<description><![CDATA[Update I&#8217;ve resolved the issue described in this article and wrote a tutorial based on my research: Tutorial: Flex and ColdFusion Communication via Event Gateways Problem I&#8217;ve run into a snag getting ColdFusion to send messages to a destination set up for Flex Messaging. I&#8217;ve gone through all the tutorials and set up an event [...]]]></description>
			<content:encoded><![CDATA[<h1>Update</h1>
<p>I&#8217;ve resolved the issue described in this article and wrote a tutorial based on my research:<br />
<a href="http://www.fusioncube.net/index.php/tutorial-flex-and-coldfusion-communication-via-event-gateways">Tutorial: Flex and ColdFusion Communication via Event Gateways</a></p>
<h1>Problem</h1>
<p>I&#8217;ve run into a snag getting ColdFusion to send messages to a destination set up for Flex Messaging.  I&#8217;ve gone through all the tutorials and set up an event gateway in my local admin using the FlexMessaging type&#8230;<br />
<a href="http://www.fusioncube.net/wp-content/uploads/2009/06/flex_messaging_cf_gateway.png"><img src="http://www.fusioncube.net/wp-content/uploads/2009/06/flex_messaging_cf_gateway-300x156.png" alt="flex_messaging_cf_gateway" title="flex_messaging_cf_gateway" width="300" height="156" class="alignnone size-medium wp-image-593" /></a></p>
<p>but any attempt to send a message to it&#8230;.</p>
<pre class="code"><code>x = structNew();
x.body = "hello world";
x.destination = "ColdFusionGateway";
sendGatewayMessage("test", x);</code></pre>
<p>results in the following message&#8230;</p>
<pre class="code"><code>Unable to find the Flex adapter for destination ColdFusionGateway
 in the RMI registry on localhost:1099.

The Flex adapter may not be running or the destination may be incorrect.

The error occurred in C:\ColdFusion8\servers\cfusion\cfusion-ear\cfusion-war\webapps\test\scribble.cfm: line 24

22 : x.body = "hello world";
23 : x.destination = "ColdFusionGateway";
24 : sendGatewayMessage("test", x);
25 :
26 :&lt;/cfscript&gt;</code></pre>
<p>I have modified my ColdFusion server to run BlazeDS, and I&#8217;m hoping that is not the issue.  I&#8217;ll perform a clean installation and see if it works that way.  The strangest thing about this is that when I send a message from a Flex client to the same destination, it finds the adapter just fine (this is all set up on a ColdFusion application server) so the fact that FMS works, but ColdFusion Event Gateways don&#8217;t is troubling.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fusioncube.net/index.php/coldfusion-event-gateway-for-flex-messaging/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

