<?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>James Ward - RIA Cowboy &#187; Flash Player</title>
	<atom:link href="http://www.jamesward.com/category/flash-platform/flash_player/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jamesward.com</link>
	<description>Rich Internet Applications &#124; Flex &#124; Adobe AIR &#124; Java &#124; Open Source &#124; Linux &#124; Enterprise Software &#124; Cloud</description>
	<lastBuildDate>Mon, 08 Mar 2010 21:16:19 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flex Performance on Mobile Devices</title>
		<link>http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/</link>
		<comments>http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:46:24 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1574</guid>
		<description><![CDATA[This past weekend I spent an hour optimizing the Flex 4 scrolling demo that I posted last week.  The original demo was intended to show how to hook up touch events to the Flex 4 List / DataGroup controls.  This new version adds some optimizations for the touch event handling and adds the [...]]]></description>
			<content:encoded><![CDATA[<p>This past weekend I spent an hour optimizing the <a href="http://www.jamesward.com/2010/02/19/flex-4-list-scrolling-on-android-with-flash-player-10-1/">Flex 4 scrolling demo</a> that I posted last week.  The original demo was intended to show how to hook up touch events to the Flex 4 List / DataGroup controls.  This new version adds some optimizations for the touch event handling and adds the kinetic flick behavior.  Check it out and let me know what you think:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/2ko7NAtF1r0&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2ko7NAtF1r0&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>I&#8217;ve posted <a href="http://www.jamesward.com/demos/MobileListSwipe2/srcview/">the code</a> for this second version of the <a href="http://www.jamesward.com/demos/MobileListSwipe2/MobileListSwipe2.html">touch scrolling demo</a>.  It was pretty trivial to optimize it this far.  With a little more work it&#8217;ll be as smooth as silk and as fast as Apolo Ohno.  :)</p>
<p>Over the past few days I&#8217;ve received some questions about the performance of Flex apps on mobile devices.  My <a href="http://www.jamesward.com/census">Census RIA Benchmark</a> has been a great way to compare the performance of various data loading techniques and technologies.  Now that I have my Android based Nexus One mobile device with an early build of Flash Player 10.1 I wanted to see how fast I could load and render large amounts of data in a Flex application.  I&#8217;m really impressed with the results!  20,000 rows of data loaded from the server and rendered on my phone in about 2 seconds!  Those 20,000 rows can then be sorted on the device instantaneously.  Pretty amazing performance for such a little device!  Check out the video:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/KQkSsmA_lFo&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/KQkSsmA_lFo&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>You can run the mobile version of the <a href="http://www.jamesward.com/demos/MobileCensus/MobileCensus.html">Flex AMF Census Test</a> and check out the <a href="http://www.jamesward.com/demos/MobileCensus/srcview/index.html">source code</a>.  Let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Flex 4 List Scrolling on Android with Flash Player 10.1</title>
		<link>http://www.jamesward.com/2010/02/19/flex-4-list-scrolling-on-android-with-flash-player-10-1/</link>
		<comments>http://www.jamesward.com/2010/02/19/flex-4-list-scrolling-on-android-with-flash-player-10-1/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 21:53:56 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1563</guid>
		<description><![CDATA[UPDATE 1: The first version of this demo was intended to show how to hook up touch events to the Flex 4 List / DataGroup controls. I&#8217;ve posted a new version that adds some optimizations for the touch event handling and adds the kinetic flick behavior.
One of the challenges of running existing web content on [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">UPDATE 1: The first version of this demo was intended to show how to hook up touch events to the Flex 4 List / DataGroup controls. I&#8217;ve posted <a href="http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/">a new version</a> that adds some optimizations for the touch event handling and adds the kinetic flick behavior.</font></p>
<p>One of the challenges of running existing web content on mobile devices is that user interactions differ between mediums.  For instance, on a normal computer with a mouse, scrolling though lists is often done by clicking on scroll bars or mouse wheels.  On mobile devices that lack a pointing device this is not the best interaction paradigm.  On devices with touch screens the paradigm for scrolling is usually a swipe gesture.</p>
<p>In Flash Player 10.1 there are APIs for gestures and multitouch events.  I thought it would be fun to hook up the list scrolling on a Flex 4 List to the <a href="http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/events/TouchEvent.html#TOUCH_MOVE">TouchEvent</a> on my Nexus One.  Check out the video:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/QOJz1BnHCW0&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QOJz1BnHCW0&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>If you want to see how I created this <a href="http://www.jamesward.com/demos/MobileListSwipe/MobileListSwipe.html">simple demo</a>, check out the <a href="http://www.jamesward.com/demos/MobileListSwipe/srcview/">source code</a>.  Let me know if you have any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/02/19/flex-4-list-scrolling-on-android-with-flash-player-10-1/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Flex Apps on Mobile Devices</title>
		<link>http://www.jamesward.com/2010/02/17/flex-apps-on-mobile-devices/</link>
		<comments>http://www.jamesward.com/2010/02/17/flex-apps-on-mobile-devices/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 20:57:19 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1556</guid>
		<description><![CDATA[This week at Mobile World Congress Adobe has been showing off Flash Player 10.1 on a variety of mobile devices.  Last week I received Google&#8217;s Nexus One device with an early version of Flash Player 10.1 on it.  Here is a video I shot today showing how Flex applications can run on mobile [...]]]></description>
			<content:encoded><![CDATA[<p>This week at Mobile World Congress Adobe has been <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/201002/021510FlashPlayerMWC.html">showing off Flash Player 10.1</a> on a variety of mobile devices.  Last week I received Google&#8217;s Nexus One device with an early version of Flash Player 10.1 on it.  Here is a video I shot today showing how Flex applications can run on mobile devices with Flash Player 10.1 and how existing applications can be tweaked for the size constraints of these devices.  Let me know what you think.<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="402" id="viddler_d7688586"><param name="movie" value="http://www.viddler.com/player/d7688586/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/d7688586/" width="640" height="402" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_d7688586"></embed></object></p>
<p>BTW: The app I created for the demo is available at <a href="http://bit.ly/tdfmdb">bit.ly/tdfmdb</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/02/17/flex-apps-on-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex and The Cloud</title>
		<link>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/</link>
		<comments>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 22:49:53 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/?p=1490</guid>
		<description><![CDATA[The combination of Flex and The Cloud is quickly becoming an IT and paradigm changing combination.  Here are a number of recently published resources for learning more about this :

An article I wrote has been published on the online Flash &#38; Flex Developer&#8217;s Magazine: Flex and The Cloud: Is this really just Client/Server 2.0?
I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>The combination of Flex and The Cloud is quickly becoming an IT and paradigm changing combination.  Here are a number of recently published resources for learning more about this :</p>
<ul>
<li>An article I wrote has been published on the online Flash &amp; Flex Developer&#8217;s Magazine: <a href="http://ffdmag.com/download-1-2010">Flex and The Cloud: Is this really just Client/Server 2.0?</a></li>
<li>I&#8217;ll be speaking on <a href="http://ria5280.org/calendar/event/2010/2/18/163821">Thursday, February 18 2010 at the Denver Flex User Group</a> about Flex and The Cloud</li>
<li>The <a href="http://www.adobe.com/cfusion/event/index.cfm?event=list&#038;loc=en_us&#038;type=ondemand_seminar&#038;product=&#038;interest=int_rich_internet_applications&#038;audience=&#038;sdid=EGMQU">recording of a webinar</a> I co-hosted on the new Salesforce.com Cloud platform for developers has been posted</li>
<li>Jeff Douglas has posted <a href="http://blog.jeffdouglas.com/2010/01/11/developing-apps-with-the-stratus-framework/">a video walk through</a> showing how to use the new Salesforce.com Flash Builder 4 extension for Flex + Cloud apps</li>
</ul>
<p>Exciting stuff!  Let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2010/01/19/flex-and-the-cloud-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Exciting Flash Platform Advancements</title>
		<link>http://www.jamesward.com/2009/12/16/exciting-flash-platform-advancements/</link>
		<comments>http://www.jamesward.com/2009/12/16/exciting-flash-platform-advancements/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 20:56:44 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash Player]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1375</guid>
		<description><![CDATA[Recently there has been a number of exciting advancements with the Flash Platform (Flex, Flash Player, and Adobe AIR).  Here is a quick round-up:
Adobe released security updates for the Flash runtimes: Flash Player 10.0.42.34 and Adobe AIR 1.5.3.  The Flash Player update fixes an issue with mouse scroll wheels not working in Flash [...]]]></description>
			<content:encoded><![CDATA[<p>Recently there has been a number of exciting advancements with the Flash Platform (Flex, Flash Player, and Adobe AIR).  Here is a quick round-up:</p>
<p>Adobe released security updates for the Flash runtimes: <a href="http://www.adobe.com/go/gntray_dl_getflashplayer">Flash Player 10.0.42.34</a> and <a href="http://www.adobe.com/go/gntray_dl_getair">Adobe AIR 1.5.3</a>.  The Flash Player update fixes an issue with <a href="http://bugs.adobe.com/jira/browse/FP-503">mouse scroll wheels not working in Flash when using Safari</a>.</p>
<p>Recently, Adobe also released public betas for <a href="http://labs.adobe.com/technologies/air2/">Adobe AIR 2</a> and <a href="http://labs.adobe.com/downloads/flashplayer10.html">Flash Player 10.1</a>.  This Flash Player release fixes the &#8220;<a href="http://bugs.adobe.com/jira/browse/FP-40">Incorrect unicode input in Linux</a>&#8221; bug.  Both AIR 2 and Flash Player 10.1 have a new API for Global Exception Handling (which was <a href="http://bugs.adobe.com/jira/browse/FP-444">one of the highest rated feature requests</a> on <a href="http://bugs.adobe.com">bugs.adobe.com</a>).  Check out <a href="http://flex.org/tour">Tour de Flex</a> for some new samples on how to use this new and other new APIs.</p>
<p>For those looking to build Flex applications in the enterprise, Adobe has posted two great resources.  First is a <a href="http://www.adobe.com/products/player_census/flashplayer/enterprise_penetration.html">third-party study</a> that says <b>enterprise penetration of Flash Player 9 (or better) is at 97.6%!</b>  Second is a fantastic white paper about <a href="http://www.flashforbiz.com/Index.asp">The Business Benefits of Rich Internet Applications</a> &#8211; a must read for anyone in the enterprise who is evaluating Flex.</p>
<p>Last is a short video of me at Adobe MAX 2009 where I talk about the progress that Adobe is making in getting the Flash Platform onto the many screens in our lives and why that is exciting for developers.  Let me know what you think!<br />
<object width="425" height="256"><param name="movie" value="http://images.tv.adobe.com//swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=4141&#038;context=76&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com//swf/player.swf" flashvars="fileID=4141&#038;context=76&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/12/16/exciting-flash-platform-advancements/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How Bad Crossdomain Policies Expose Protected Data to Malicious Applications</title>
		<link>http://www.jamesward.com/2009/11/08/how-bad-crossdomain-policies-expose-protected-data-to-malicious-applications/</link>
		<comments>http://www.jamesward.com/2009/11/08/how-bad-crossdomain-policies-expose-protected-data-to-malicious-applications/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 10:15:22 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1323</guid>
		<description><![CDATA[The web&#8217;s success has been partially due to the sandbox it provides users.  Users do not generally have to entirely trust every website they visit because malicious web sites should be sandboxed from doing the user harm.  One way that web sites are sandboxed is through a same-origin policy.  By default any [...]]]></description>
			<content:encoded><![CDATA[<p>The web&#8217;s success has been partially due to the sandbox it provides users.  Users do not generally have to entirely trust every website they visit because malicious web sites should be sandboxed from doing the user harm.  One way that web sites are sandboxed is through a same-origin policy.  By default any code that runs inside a web browser can only access data from the domain in which the code originated from.  So if code (JavaScript, Flash, etc) loads from the foo.com domain then it can&#8217;t access data on the bar.com domain.  The code may be able to make requests to bar.com but the code from foo.com shouldn&#8217;t be able to read or access the results of those requests.</p>
<p>Since Rich Internet Applications built with Flex, Silverlight, etc usually try to do more on the client side, for example mash-up data from multiple sites, the same-origin policy presents a problem.</p>
<p>In most cases Flash Player sticks with the typical browser sandbox concepts.  But there are a few places where it goes outside this boundary such as with microphone and webcam access.  Another area is by allowing opt-in to cross-domain communication bypassing the browser&#8217;s regular same-origin policy.  Other plugins such as Silverlight and JavaFX also do this.  This cross-domain capability is powerful but also <a href="http://tech.slashdot.org/story/09/11/05/1552204/Facebook-and-MySpace-Backdoors-Found-Fixed">very dangerous</a>.  The primary reason it&#8217;s dangerous is that a malicious application can potentially make requests on behalf of the user and access data from domains that the application didn&#8217;t originate from.  To protect against these types of attacks Flash Player and other plugins have implemented a cross-domain policy system.  This policy system is one of the most misunderstood aspects of web security.</p>
<p>To illustrate the problem I&#8217;ve create a few demos.  Let&#8217;s say that I&#8217;m building an application for www.jamesward.com that will fetch <a href="http://www.firststepsinflex.com/data.php">some data</a> from the www.firststepsinflex.com site.</p>
<p><a href="http://www.jamesward.com/demos/crossdomainDashboard/crossdomainDashboard.html" target="_blank">Here&#8217;s that application</a> on www.jamesward.com &#8211; open it in a new window.</p>
<p>The application correctly pulled the data from the <a href="http://www.firststepsinflex.com">www.firststepsinflex.com</a> site but in order to allow the request I blindly put a <a href="http://www.firststepsinflex.com/crossdomain.xml">crossdomain.xml policy file</a> on www.firststepsinflex.com that looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #00bbdd;">&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cross-domain-policy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;site-control</span> <span style="color: #000066;">permitted-cross-domain-policies</span>=<span style="color: #ff0000;">&quot;master-only&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;allow-access-from</span> <span style="color: #000066;">domain</span>=<span style="color: #ff0000;">&quot;*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cross-domain-policy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>What this policy file does is instruct Flash Player to allow requests from any website to get around the same-origin policy and make requests to www.firststepsinflex.com &#8211; on behalf of the user.  Sounds harmless, right?  At this point it is, as long as all of the data on www.firststepsinflex.com is publicly available data.  But let&#8217;s suppose that not all of the data should be publicly available.  Perhaps I&#8217;m protecting access to some data though cookie authentication or HTTP basic authentication.  In this case I am (for the purpose of the demo).</p>
<p>See the protected data by opening up <a href="http://www.firststepsinflex.com/private/bankaccounts.html">http://www.firststepsinflex.com/private/bankaccounts.html</a> using &#8220;username&#8221; and &#8220;password&#8221; (without quotes) for the user name and password.</p>
<p>Now imagine that someone starts posting Twitter links (obfuscated through a URL shortener) phishing for people to open a <a href="http://www.drunkonsoftware.com/crossdomainHacker/crossdomainHacker.html" target="_new">malicious application</a> (open it in a new window &#8211; I promise it doesn&#8217;t do anything bad).</p>
<p>So let&#8217;s recap&#8230;  There is a <a href="http://www.firststepsinflex.com/private/bankaccounts.html">protected resource</a> that only you should be able to see in your browser.  Other applications should NOT be able to see that data.  But a <a href="http://www.drunkonsoftware.com/crossdomainHacker/crossdomainHacker.html" target="_new">malicious application</a> was able to load that same data and do whatever it wants with it.  Scary.</p>
<p>Here&#8217;s how it works&#8230;  The malicious application requests the <a href="http://www.firststepsinflex.com/private/bankaccounts.html">protected page</a>.  It was able to make the request because you were authenticated already.  And the malicious application can now read the data contained in the page and do whatever it wants with it (probably send it back to a server somewhere).</p>
<p>OK.  Now do you understand why crossdomain.xml policy files are dangerous?  Imagine if Facebook, MySpace, or YouTube had a misconfigured policy file on their servers!  Well they have &#8211; but they&#8217;ve since been fixed.  Imagine if your bank or a corporate intranet had a misconfigured policy file.  There are some very serious ramifications to these types of attacks.</p>
<p>There are also some great uses of crossdomain policy files.  For instance, api.flickr.com has an <a href="http://api.flickr.com/crossdomain.xml">open crossdomain.xml policy file</a>.  This allows applications loaded from anywhere to access Flickr data and it&#8217;s safe because api.flickr.com doesn&#8217;t use cookies or basic auth &#8211; they use web service tokens, which are not automatically transmitted by the browser and are only known to the application that performed the authentication.</p>
<p>I often hear from Flex / Flash developers that when they run into security sandbox issues the first thing they try is to open things up with a global (i.e. &#8220;*&#8221;) policy file.  I hope this article discourages that practice.  Developers should understand why the security error is happening and consider alternatives before blindly opening up their website to the possible attacks.  One alternative is to leverage a server proxy.  A server proxy can be configured so that an application doesn&#8217;t violate the same-origin policy.  For instance, if an application on foo.com needs data from bar.com then a proxy can be configured such that requests to foo.com/bar are forwarded on the server to the bar.com site.  This helps avoid attacks because users&#8217; cookies (or basic auth tokens) will not be sent to bar.com since all requests are actually being made to the foo.com site.  But be careful not to expose intranet servers through proxies.  Here is a sample Apache config for setting up a forward proxy:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">  ProxyRemote  /bar/*  http://bar.com/
  ProxyPass /bar http://bar.com
  ProxyPassReverse /bar http://bar.com</pre></div></div>

<p><a href="http://opensource.adobe.com/blazeds">BlazeDS</a> also includes a proxy service.</p>
<p>If you really need to use a crossdomain policy file then be very careful!  NEVER put a crossdomain policy file on a site that uses cookie or basic auth and NEVER put a crossdomain policy file on an intranet site &#8211; unless you really know what you are doing.  To learn how to safely use crossdomain policy files here are some great resources:</p>
<ul>
<li><a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html">Policy file changes in Flash Player 9 and Flash Player 10</a></li>
<li><a href="http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html">Cross-domain policy file specification</a></li>
</ul>
<p>I hope this helps create better understanding of web security.  Please let me know if you have any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/11/08/how-bad-crossdomain-policies-expose-protected-data-to-malicious-applications/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>RIAs on the Web, on the Desktop, and in a PDF</title>
		<link>http://www.jamesward.com/2009/09/13/rias-on-the-web-on-the-desktop-and-in-a-pdf/</link>
		<comments>http://www.jamesward.com/2009/09/13/rias-on-the-web-on-the-desktop-and-in-a-pdf/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 21:30:51 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1200</guid>
		<description><![CDATA[Some believe that the &#8220;Internet&#8221; in &#8220;rich Internet application&#8221; (RIA) means that RIAs must only run in the browser.  However my definition of RIA is not constrained to only web-based applications.  RIAs can run anywhere: web, desktop, mobile devices, TVs, or even inside PDFs.  Ideally we should have some level of code [...]]]></description>
			<content:encoded><![CDATA[<p>Some believe that the &#8220;Internet&#8221; in &#8220;rich Internet application&#8221; (RIA) means that RIAs must only run in the browser.  However my <a href="http://www.jamesward.com/blog/2007/10/17/what-is-a-rich-internet-application/">definition of RIA</a> is not constrained to only web-based applications.  RIAs can run anywhere: web, desktop, mobile devices, TVs, or even <a href="http://www.jamesward.com/blog/2008/11/05/portable-rias-flex-apps-in-pdfs/">inside PDFs</a>.  Ideally we should have some level of code and library reusability between these environments.  However to think that we can reuse the entire application is a pipe dream.  Client capabilities and end user needs vary too greatly between these mediums.</p>
<p>I wanted to build an application in Flex that shows how applications can have a high degree of reuse between the web, the desktop, and in a PDF.  I decided to build a Mortgage Calculator to illustrate this.  Here is the web widget:<br />
<iframe src="/mortgageCalc/mortgageCalcWeb.html" width="100%" height="540"></iframe></p>
<p>From within the web widget you can install the desktop widget or email yourself a PDF containing the widget.  Since this application is a small, self contained application (i.e. a widget) the functionality between the different mediums is very similar.  In this case I was able to reuse about 99% of the code between the different versions.  However, sometimes achieving that level of reuse is not possible due to the differences in client capabilities and the end user needs.  This is the case with the Flex and Adobe AIR based <a href="http://www.oracle.com/applications/crm/siebel/crm-gadgets.html">Oracle CRM Gadgets</a>, which are for different use cases than the primary Siebel UI.</p>
<p>There are beginning to be more instances where RIA widgets are being reused across different mediums.  But this is only one piece of software development.  In other instances the capabilities and functionality of web, desktop, and mobile applications vary so greatly that there is little reuse.  Either way it&#8217;s important to architect our back ends such that they are agnostic to the front end.  This is one of the ways RIA and mobile app development have changed the way we build software.  It&#8217;s a good thing and we should embrace it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/09/13/rias-on-the-web-on-the-desktop-and-in-a-pdf/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Fonts in Flex 4 / Flash Player 10 / AIR 1.5 Make Me Happy</title>
		<link>http://www.jamesward.com/2009/08/11/fonts-in-flex-4-flash-player-10-air-1-5-make-me-happy/</link>
		<comments>http://www.jamesward.com/2009/08/11/fonts-in-flex-4-flash-player-10-air-1-5-make-me-happy/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 22:05:52 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=1106</guid>
		<description><![CDATA[Device font rendering in Flash content has always had some limitations, including the inability for text to be correctly scaled, rotated, and faded.  Due to these limitations many developers using Flex resort to embedding fonts.  But this can really bloat the size of applications &#8211; especially when working with non-English languages.  Luckily [...]]]></description>
			<content:encoded><![CDATA[<p>Device font rendering in Flash content has always had some limitations, including the inability for text to be correctly scaled, rotated, and faded.  Due to these limitations many developers using Flex resort to embedding fonts.  But this can really bloat the size of applications &#8211; especially when working with non-English languages.  Luckily Flash Player 10 / AIR 1.5 added a new font engine!  To make using the new engine easy Adobe also created an open source library called the <a href="http://opensource.adobe.com/wiki/display/tlf/Text+Layout+Framework">Text Layout Framework</a>, which wraps Flash Player&#8217;s low level text APIs.  Flex 4 Spark components use the Text Layout Framework for all text rendering.  The end result is much better device font support in Flex applications.  Here&#8217;s a quick example (<a href="http://www.jamesward.com/demos/fontTest/srcview/index.html">view source</a>):<br />
<iframe src="/demos/fontTest/fontTest.html" frameborder="0" height="410" width="500"></iframe><br />
Drag the slider to change the scaleX and scaleY on the Panels.  Notice how the Flex 3 / Flash Player 9 text jumps around and flickers.  And then notice how the Flex 4 / Flash Player 10 text looks wonderful as it scales up and down!  That makes me happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/08/11/fonts-in-flex-4-flash-player-10-air-1-5-make-me-happy/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Flash Platform Partner Resources</title>
		<link>http://www.jamesward.com/2009/01/08/flash-platform-partner-resources/</link>
		<comments>http://www.jamesward.com/2009/01/08/flash-platform-partner-resources/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 17:58:15 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=620</guid>
		<description><![CDATA[The Flash Platform (Adobe AIR, Flash Player, Flex, etc.) has become a mainstream software development platform.  This is very exciting but also leads to me getting a boat-load of email.  That is great!  I love hearing from the community and answering questions.  I do respond to every email I get &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>The Flash Platform (Adobe AIR, Flash Player, Flex, etc.) has become a mainstream software development platform.  This is very exciting but also leads to me getting a boat-load of email.  That is great!  I love hearing from the community and answering questions.  I do respond to every email I get &#8211; even if it takes a year!  I am frequently asked about partnerships.  It seems that everyone who is building products or services related to the Flash Platform wants to know how they can help Adobe and how Adobe can help them.  I love getting these emails because as the ecosystem around the Flash Platform grows, the Platform itself grows.  But due to my often high latency in responding to email I figured it would be good to document many of the Flash Platform Partner resources that are already out there.  Here they are&#8230;</p>
<p><strong>How to promote your offerings to the community</strong></p>
<p><a href="http://www.adobe.com/go/csp">Customer Success Program</a><br />
The Adobe Customer Success Program (CSP) works with innovators and business<br />
leaders to highlight how organizations use and benefit from Adobe solutions.</p>
<p><a href="http://www.adobe.com/go/showcase">Adobe Site of the Day</a><br />
Developers can submit applications to be included in the Adobe Site of the Day. This<br />
submission allows us to use it in other marketing areas, like the Edge newsletter.</p>
<p><a href="http://flex.org/post_items">Flex.org</a><br />
Flex.org aggregates Flex news from a number of sources, and allows community<br />
members to contribute their own content as well.</p>
<p><a href="http://www.adobe.com/go/gntray_comm_partners">The Solution Partner Program</a><br />
The Adobe Partner Program is designed for companies that provide solution-based<br />
sales, system integration, services, or extended products based on Adobe technology.</p>
<p><a href="http://www.adobe.com/go/marketplace">Adobe AIR Marketplace</a><br />
Adobe AIR Marketplace is a place where developers can publish their AIR applications for<br />
users to download. <a href="http://www.adobe.com/devnet/air/articles/air_marketplace_faq.html">Learn more</a>.</p>
<p><a href="http://feeds.adobe.com">Community blogs</a><br />
Add your feed to the Adobe blog aggregator to make sure the community at-large is<br />
receiving the latest news on your offerings. Additionally find active community members<br />
including Adobe evangelists who may be interested in learning more. <a href="http://feeds.adobe.com/FAQ.cfm">Learn more</a>.</p>
<p><strong>How to access software for evaluation and testing</strong></p>
<p><a href="http://labs.adobe.com/">Adobe Labs</a><br />
Labs provides developers with the opportunity to experience and evaluate new and<br />
emerging innovations, technologies, and products from Adobe. <a href="http://labs.adobe.com/about/">Learn more</a>.</p>
<p><a href="https://prerelease.adobe.com/signup/">Adobe Prerelease Program</a><br />
The goal of a Prerelease Program at Adobe is to solicit early feedback on new features<br />
and bugs in order to produce a unique and bug-free product that can deliver maximum<br />
results.</p>
<p><a href="http://www.adobe.com/go/gntray_comm_partners">The Solution Partner Program</a></p>
<p><strong>How to get support and training</strong></p>
<p><a href="http://www.adobe.com/go/join_adc">The Adobe Developer Connection</a><br />
The ADC serves as the central resource for information on Adobe developer<br />
technologies, providing tutorials, samples, and documentation to guide and instruct<br />
developers. <a href="https://www.adobe.com/devnet/">Learn more</a>.</p>
<p><a href="http://www.adobe.com/support/programs/">Adobe Support Programs</a><br />
Flex, Flash, and AIR support programs for developers and enterprises include technical<br />
help and information on planning, workflow, and deployment. <a href="http://www.adobe.com/support/programs/connect_preso/">Learn more</a>.</p>
<p><a href="http://www.adobe.com/support/forums/">Adobe Forums</a><br />
Adobe Online Forums are for the Adobe community&#8217;s peer-to-peer discussions of both<br />
Adobe and formerly Macromedia products.</p>
<p><a href="http://www.adobe.com/training/">Adobe Training and Certification</a><br />
Whether you want to improve your skills, projects, or resume, Adobe training and<br />
certification programs and resources can help you achieve your goals.</p>
<p><a href="http://groups.adobe.com">Adobe User Groups</a><br />
Adobe Developer User Groups provide a forum of support and technology to web<br />
professionals at all levels. Whether you&#8217;re a designer, a seasoned developer, or a beginner just<br />
starting out, Adobe User Groups strengthen community, increase networking, unveil the<br />
latest technology innovations, and reveal the techniques that turn novices into experts<br />
and experts into gurus.</p>
<p><a href="http://www.adobe.com/go/gntray_comm_partners">Solution Partner Program</a></p>
<p><a href="http://feeds.adobe.com">Community Blogs</a></p>
<p>I hope that helps some of you.  These programs will continue to grow and evolve.  So please give us your feedback on how they are working for you.  Also, don&#8217;t hesitate to email me if you have questions &#8211; I&#8217;ll respond as soon as possible!  :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/01/08/flash-platform-partner-resources/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Take the Tour de Flex</title>
		<link>http://www.jamesward.com/2008/11/17/take-the-tour-de-flex/</link>
		<comments>http://www.jamesward.com/2008/11/17/take-the-tour-de-flex/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 17:28:15 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/wordpress/?p=556</guid>
		<description><![CDATA[Over the past few months Greg Wilson, Christophe Coenraets, and myself have been hard at work on a secret project.  So today we are proud to announce the new Tour de Flex has just gone live!  Tour de Flex showcases the capabilities of Flex, BlazeDS, LCDS, Adobe AIR, and Flash Player (now collectively [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months <a href="http://gregsramblings.com/">Greg Wilson</a>, <a href="http://coenraets.org/">Christophe Coenraets</a>, and myself have been hard at work on a secret project.  So today we are proud to announce the new <a href="http://flex.org/tour">Tour de Flex</a> has just gone live!  Tour de Flex showcases the capabilities of Flex, BlazeDS, LCDS, Adobe AIR, and Flash Player (now collectively called the Adobe Flash Platform).</p>
<p><a href="http://flex.org/tour"><img src="http://flex.org/files/Screenshot_0.png"/></a></p>
<p>Like the old <a href="http://examples.adobe.com/flex3/componentexplorer/explorer.html">Flex Component Explorer</a>, Tour de Flex can be used to find components.  But it goes way beyond just out-of-the-box Flex components.  This first release contains 217 components and samples including popular Cloud APIs like <a href="http://developer.salesforce.com">Salesforce.com</a> and <a href="http://developer.intuit.com">Intuit</a>, numerous community components from people like <a href="http://dougmccune.com/blog/">Doug McCune</a> and <a href="http://tink.ws/blog/">Tink</a>, commercial components from companies like <a href="http://www.ilog.com/products/elixir/">ILog</a>, and numerous other goodies.  If you find something missing you can <a href="http://flex.org/2008/10/31/submit-component-tour-de-flex">submit it</a>!</p>
<p>Also in this release is an Eclipse / Flex Builder plugin which allows you to find components from inside Flex Builder!</p>
<p>We hope the Tour de Flex will provide an easy way for you to find components and see what is great about the Adobe Flash Platform.  Give it a try and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2008/11/17/take-the-tour-de-flex/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
