<?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; Open Source</title>
	<atom:link href="http://www.jamesward.com/category/open-source/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>RIA Weeky #41: Portals and RIAs &#8211; Flex and Open Source</title>
		<link>http://www.jamesward.com/2009/02/03/ria-weeky-41-portals-and-rias-flex-and-open-source/</link>
		<comments>http://www.jamesward.com/2009/02/03/ria-weeky-41-portals-and-rias-flex-and-open-source/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 19:30:50 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/blog/?p=692</guid>
		<description><![CDATA[Last week I was able to be a guest speaker on the RIA Weekly podcast.  In the episode Coté and I talked about RIAs in Portals, Flex and Open Source, and other various topics.  Give it a listen and let us know what you think.
]]></description>
			<content:encoded><![CDATA[<p>Last week I was able to be a guest speaker on the <a href="http://www.riaweekly.com">RIA Weekly</a> podcast.  In <a href="http://www.riaweekly.com/2009/01/30/riaweekly041">the episode</a> <a href="http://www.redmonk.com/cote/">Coté</a> and I talked about RIAs in Portals, Flex and Open Source, and other various topics.  Give it a listen and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2009/02/03/ria-weeky-41-portals-and-rias-flex-and-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upcoming Conference Presentations: GeoWeb, OSCON, and LinuxWorld</title>
		<link>http://www.jamesward.com/2008/07/21/upcoming-conference-presentations-geoweb-oscon-and-linuxworld/</link>
		<comments>http://www.jamesward.com/2008/07/21/upcoming-conference-presentations-geoweb-oscon-and-linuxworld/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 21:17:44 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.com/wordpress/?p=299</guid>
		<description><![CDATA[Over the next few weeks I&#8217;ll be presenting at a few conferences:
GeoWeb &#8211; Map Based RIA Development Using Adobe Flex and AIR with Duane Nickull
OSCON &#8211; Flex: the Open Source SDK for RIAs also with Duane
LinuxWorld &#8211; Building Rich Internet Applications with an Open Source Stack
I hope to see some of you at those conferences.
]]></description>
			<content:encoded><![CDATA[<p>Over the next few weeks I&#8217;ll be presenting at a few conferences:</p>
<p><a href="http://geowebconference.org/program/workshops/workshops-tuesday">GeoWeb &#8211; Map Based RIA Development Using Adobe Flex and AIR</a> with <a href="http://technoracle.blogspot.com/">Duane Nickull</a></p>
<p><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2218">OSCON &#8211; Flex: the Open Source SDK for RIAs</a> also with Duane</p>
<p><a href="http://www.linuxworldexpo.com/live/12/conference//tracks/tracksessions//QMONYB00BILW">LinuxWorld &#8211; Building Rich Internet Applications with an Open Source Stack</a></p>
<p>I hope to see some of you at those conferences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2008/07/21/upcoming-conference-presentations-geoweb-oscon-and-linuxworld/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe Open Source Presentation in New York Tomorrow</title>
		<link>http://www.jamesward.com/2008/05/14/adobe-open-source-presentation-in-new-york-tomorrow/</link>
		<comments>http://www.jamesward.com/2008/05/14/adobe-open-source-presentation-in-new-york-tomorrow/#comments</comments>
		<pubDate>Wed, 14 May 2008 22:53:36 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tamarin]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/?p=277</guid>
		<description><![CDATA[Tomorrow night I&#8217;ll be presenting at the New York GNU/Linux Meetup Group about Adobe Open Source &#8211; including the Adobe Flex SDK, Mozilla Tamarin, Adobe AIR (pieces like SQLite and WebKit), and BlazeDS.  More details here.  Hope to see you there!
]]></description>
			<content:encoded><![CDATA[<p>Tomorrow night I&#8217;ll be presenting at the New York GNU/Linux Meetup Group about Adobe Open Source &#8211; including the Adobe Flex SDK, Mozilla Tamarin, Adobe AIR (pieces like SQLite and WebKit), and BlazeDS.  More details <a href="http://linux.meetup.com/392/calendar/7593094/">here</a>.  Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2008/05/14/adobe-open-source-presentation-in-new-york-tomorrow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tamarin-Tracing: Mozilla&#8217;s New VM for ECMAScript 4</title>
		<link>http://www.jamesward.com/2007/12/18/qvm-mozillas-new-mobile-vm-for-ecmascript-4/</link>
		<comments>http://www.jamesward.com/2007/12/18/qvm-mozillas-new-mobile-vm-for-ecmascript-4/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 01:03:25 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/12/18/qvm-mozillas-new-mobile-vm-for-ecmascript-4/</guid>
		<description><![CDATA[[Update: QVM was an internal Adobe codename.  The new VM's name seems to be "Tamarin-Tracing".  For more info on this new VM read the announcement  by Edwin Smith.  Edwin doesn't explicitly state that the VM is for mobile devices but it is hinted at.  However the research paper that Edwin [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">[Update: QVM was an internal Adobe codename.  The new VM's name seems to be "Tamarin-Tracing".  For more info on this new VM read the <a href="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/e10d25db3dcb28cf#841d6253dcf2de12">announcement  by Edwin Smith</a>.  Edwin doesn't explicitly state that the VM is for mobile devices but it is hinted at.  However the research paper that Edwin references does state that this tracing type of VM is good for mobile devices.]</font></p>
<p>The mobile space has been heating up lately with Apple&#8217;s iPhone, Google&#8217;s Android, and Sun&#8217;s JavaFX Mobile.  But what about all of us developing with JavaScript 2.0 / ActionScript 3.0 / ES4?  While we have been able to build for Flash Lite with Flash CS3, those of us developing with Flex haven&#8217;t had an easy way to use our existing programming knowledge to build mobile applications.  Part of the reason for this is that the core language of Flex (AS3 / ES4) isn&#8217;t yet supported on mobile devices.  The good news is that Adobe has just contributed a new VM targeted at mobile devices, to the Mozilla Tamarin project.  Tamarin is the open source core of Flash Player 9 and will at some point be the VM in Firefox that executes JavaScript 2.0.  More specifically AVM2 is the VM piece of Tamarin which executes ActionScript Byte Code (ABC).  ABC can be created using the soon to be open source Flex SDK&#8217;s ASC compiler which turns AS3 (or ES4) into ABC.  Unfortunately AVM2 wasn&#8217;t written to work well on mobile devices.  So Adobe built Tamarin-Tracing &#8211; a new VM in Tamarin which is much better suited for non-pc devices.  This is very exciting stuff!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/12/18/qvm-mozillas-new-mobile-vm-for-ecmascript-4/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Exchange MAPI Connector for Evolution</title>
		<link>http://www.jamesward.com/2007/10/29/exchange-mapi-connector-for-evolution/</link>
		<comments>http://www.jamesward.com/2007/10/29/exchange-mapi-connector-for-evolution/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 17:31:49 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/10/29/exchange-mapi-connector-for-evolution/</guid>
		<description><![CDATA[Just a quick note to say how excited I am that Evolution will be getting a MAPI Connector!  I&#8217;ve been using Evolution with Exchange since 2003.  Thankfully it works &#8211; but for me it crashes quite often.  So I&#8217;m really excited about the prospect of a better Exchange connector.  Screen scraping [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note to say how excited I am that <a href="http://www.nabble.com/Exchange-MAPI-Connector-t4675512.html">Evolution will be getting a MAPI Connector</a>!  I&#8217;ve been using Evolution with Exchange since 2003.  Thankfully it works &#8211; but for me it crashes quite often.  So I&#8217;m really excited about the prospect of a better Exchange connector.  Screen scraping is just too brittle and too slow.  This should also improve offline support.  Currently before I get on a plane I sync Outlook in VMWare.  That works but I don&#8217;t care much for Outlook and VMWare is a killer on my battery life.  With this improvement to Evolution and the improvements that are happening with the video drivers on Linux, things are shaping up for Linux on the Desktop.  Could 2008 really be the year of Linux on the Desktop?  Just kidding.  I&#8217;ve been happily using Linux as my primary Desktop since like 1996.  It isn&#8217;t without some annoyances and required maintenance.  But neither is any other OS.  And at least with Linux it&#8217;s easier to fix stuff myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/10/29/exchange-mapi-connector-for-evolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax and Flex Data Loading Benchmarks</title>
		<link>http://www.jamesward.com/2007/04/30/ajax-and-flex-data-loading-benchmarks/</link>
		<comments>http://www.jamesward.com/2007/04/30/ajax-and-flex-data-loading-benchmarks/#comments</comments>
		<pubDate>Mon, 30 Apr 2007 16:42:30 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/04/30/ajax-and-flex-data-loading-benchmarks/</guid>
		<description><![CDATA[For close to a year I&#8217;ve been working (in my infrequent spare time) on an application that shows differences in data loading for RIAs (Rich Internet Applications), comparing Ajax methods, Ajax frameworks, and various Flex methods.  The results are pretty surprising.  The screenshot below is from a test run I did with the [...]]]></description>
			<content:encoded><![CDATA[<p>For close to a year I&#8217;ve been working (in my infrequent spare time) on an application that shows differences in data loading for RIAs (Rich Internet Applications), comparing Ajax methods, Ajax frameworks, and various Flex methods.  The results are pretty surprising.  The screenshot below is from a test run I did with the server running locally.  (Note for the screenshot below: All tests except Dojo were 5000 rows, while the Dojo test was 500 rows.)<br />
<a href='http://www.jamesward.org/census/'><img src='http://www.jamesward.org/wordpress/wp-content/uploads/2007/04/census.png' width='800'/></a></p>
<p>To run the benchmarks yourself, go to:<br />
<a href="http://www.jamesward.org/census/">http://www.jamesward.org/census/</a></p>
<p>I have tried to be as fair as possible with these tests.  Still, I encourage you to use these results only as an initial guide.  You should always do your own benchmarks that more closely resemble your actual use case.  </p>
<p>You can find more details explaining the tests and the results inside the &#8220;Guide Me&#8221; mode of the application, so I won&#8217;t go into depth here.  Also, <a href="http://sf.net/projects/flexapps">the code</a> is Open Source (GPL) on SourceForge.  If you feel that a test should be done differently or you find other things that you think should be changed, get the code, fix it, and send me a patch file.  Please don&#8217;t just tell me I did something wrong.  In the spirit of Open Source, help me fix it.  I want this application to be as fair and accurate as possible.</p>
<p>While these results may be eye-opening to some, once you understand some fundamental differences between Flex and Ajax, they end up making a lot of sense.  Flex applications run within the Mozilla Tamarin VM inside Flash 9.  Tamarin does JIT compilation which makes code execution 10 to 1000 times faster than interpreted JavaScript in the browser.  Also Tamarin can be very efficient when dealing with typed objects.  </p>
<p>In addition, Flex supports a compact binary object serialization protocol, called AMF3, which is extremely fast.  There are numerous Open Source implementations using various backend technologies for AMF3, as well as a commercial / supported Adobe product, called Flex Data Services.  If you control both sides of the wire in your application, then there is rarely a good reason to serialize and deserialize text.  Objects are blazing fast as you can tell by this benchmark.  AMF3 is also typically much more efficient across the wire (even without compression) and consumes much less client side memory.  JIT compilation and binary object serialization are the primary reasons why Flex AMF3 is so fast, even in the test with the full 20,000 rows.  And, it’s not just faster for loading &#8211; it also speeds client side sorting and filtering.  (Try client-side sorting in the Dojo benchmark and the Flex AMF benchmark.)</p>
<p>A quick note on compression:  I did not include compression support in this version because its value really depends on many application-specific factors.  For instance, if most of your users have slow connections then compression can help speed things up, but if most have fast connections the added latency can actually make things slower.  However, I do want to add a Gzip option to this benchmark for the next release.</p>
<p>This is really a version 0.1 release.  There are many improvements I have on the to-do list.  And I&#8217;d love the community&#8217;s help.  Here are some things I want to do for the 0.2 release:<br />
 &#8211; Add Gzip option on tests<br />
 &#8211; Add a Laszlo test<br />
 &#8211; Implement more Ajax frameworks that have DataGrids and that support paging and sorting<br />
 &#8211; Add a server side sorting option<br />
 &#8211; Add Ajax client side memory usage metrics (don&#8217;t know if this is possible)<br />
 &#8211; Improve the UI for use on projectors (I use this demo in every presentation I give)<br />
 &#8211; Integrate feedback I get from the initial version<br />
 &#8211; Maybe add a WPF/E test (which I won&#8217;t be able to do because I run Linux)</p>
<p>I sincerely hope that you find this demo useful.  I built it as a tool to help people learn more about the various methods of data loading in RIAs.  I did not in any way build this to attack Ajax, Dojo, and SOAP.  Please help me improve this application so that we all continue to learn more about the technologies available to us.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/04/30/ajax-and-flex-data-loading-benchmarks/feed/</wfw:commentRss>
		<slash:comments>66</slash:comments>
		</item>
		<item>
		<title>Open Source Flex: Top 10 Reasons To Rejoice</title>
		<link>http://www.jamesward.com/2007/04/25/open-source-flex-top-10-reasons-to-rejoice/</link>
		<comments>http://www.jamesward.com/2007/04/25/open-source-flex-top-10-reasons-to-rejoice/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 04:09:20 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/04/25/open-source-flex-top-10-reasons-to-rejoice/</guid>
		<description><![CDATA[Flex is going Open Source!  This is really, really exciting news!  I&#8217;ve been looking forward to this moment since before I worked at Macromedia.  This will certainly change RIA programming in a major way.  But what does this mean for you:
1) There will be a formal process for contributing to Flex.
2) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200704/042607Flex.html">Flex is going Open Source!</a>  This is really, really exciting news!  I&#8217;ve been looking forward to this moment since before I worked at Macromedia.  This will certainly change RIA programming in a major way.  But what does this mean for you:<br />
1) There will be a formal process for contributing to Flex.<br />
2) Your voice is important.  Join the <a href="http://groups.google.com/group/flex-open-source">Open Source Flex Google Group</a>.<br />
3) You aren&#8217;t locked into a single vendor&#8217;s monetization strategy.  So is Flex now part of the &#8220;Open Web&#8221;?  I think so.<br />
4) More rapid innovation.  Adobe has some really smart people.  Combine those with a ton of other really smart people and we get better products, faster.<br />
5) Adobe continues down the Open Source road.  Tamarin was a huge step.  Now Adobe takes another.<br />
6) OEMs can more easily adopt Flex.<br />
7) Open Source Flex can be redistributed.<br />
&#56;) Open Source Flex will further stimulate the already booming Flex ecosystem.<br />
9) Flex is bigger than Adobe.  Watch as many big organizations further invest in Flex.<br />
10) Flex is going Open Source!  &#8216;nuf said.</p>
<p>More information is available in <a href="http://www.adobe.com/go/opensourceflex">the FAQ</a>.  Come join us!  Together we will revolutionize the now-more-sexy &#8220;Open Web&#8221;!  :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/04/25/open-source-flex-top-10-reasons-to-rejoice/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Eckel Flex eSeminar; Buni Joins java.net; Twitter Addiction</title>
		<link>http://www.jamesward.com/2007/02/28/eckel-flex-eseminar-buni-joins-javanet-twitter-addiction/</link>
		<comments>http://www.jamesward.com/2007/02/28/eckel-flex-eseminar-buni-joins-javanet-twitter-addiction/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 18:45:50 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/02/28/eckel-flex-eseminar-buni-joins-javanet-twitter-addiction/</guid>
		<description><![CDATA[Yesterday was an exciting day!  Bruce Eckel and I hosted an eSeminar about Flex &#038; Java.  We had a few technical difficulties, but overall it was very good.  You can watch the recording here:
https://admin.adobe.acrobat.com/_a227210/p16565134/
Bruce and I have a few more eSeminars coming up, find out more info here:
http://www.adobe.com/cfusion/event/index.cfm?event=detail&#038;id=462539&#038;loc=en_us
Also yesterday the Open Source [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday was an exciting day!  Bruce Eckel and I hosted an eSeminar about Flex &#038; Java.  We had a few technical difficulties, but overall it was very good.  You can watch the recording here:<br />
<a href="https://admin.adobe.acrobat.com/_a227210/p16565134/">https://admin.adobe.acrobat.com/_a227210/p16565134/</a></p>
<p>Bruce and I have a few more eSeminars coming up, find out more info here:<br />
<a href="http://www.adobe.com/cfusion/event/index.cfm?event=detail&#038;id=462539&#038;loc=en_us">http://www.adobe.com/cfusion/event/index.cfm?event=detail&#038;id=462539&#038;loc=en_us</a></p>
<p>Also yesterday the Open Source <a href="http://www.buni.org/mediawiki/index.php/Meldware_Communications_Suite">Buni Meldware Communication Suite</a> joined the <a href="https://meldware.dev.java.net/">Java.net</a> community.  This is a great step forward for the project, which uses Flex for it&#8217;s Webmail client.  More info from Andy Oliver:<br />
<a href="http://blog.buni.org/blog/acoliver/meldware/2007/02/28/Meldware-joins-Java-net">http://blog.buni.org/blog/acoliver/meldware/2007/02/28/Meldware-joins-Java-net</a></p>
<p>And lastly, while at the Adobe Engage conference, I gained a Twitter addiction.  Please help me indulge my addiction and add me as a friend:<br />
<a href="http://twitter.com/jlward4th">http://twitter.com/jlward4th</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/02/28/eckel-flex-eseminar-buni-joins-javanet-twitter-addiction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I Overcame My Fear of Flash</title>
		<link>http://www.jamesward.com/2007/02/21/how-i-overcame-my-fear-of-flash/</link>
		<comments>http://www.jamesward.com/2007/02/21/how-i-overcame-my-fear-of-flash/#comments</comments>
		<pubDate>Wed, 21 Feb 2007 16:12:01 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2007/02/21/how-i-overcame-my-fear-of-flash/</guid>
		<description><![CDATA[Long ago I remember the first Flash site I ever saw&#8211;spinning gears replaced typically boring site navigation and sound illuminated a previously silent web.  My jaw dropped and I said to myself, &#8220;I want to build these kinds of websites!&#8221;  After playing with Flash Professional for days, I realized that my mathematically inclined [...]]]></description>
			<content:encoded><![CDATA[<p>Long ago I remember the first Flash site I ever saw&#8211;spinning gears replaced typically boring site navigation and sound illuminated a previously silent web.  My jaw dropped and I said to myself, &#8220;I want to build these kinds of websites!&#8221;  After playing with Flash Professional for days, I realized that my mathematically inclined brain just could not output the kind of beauty that I began to see all over the Flash powered web.  I gave up and resorted to building very ugly HTML interfaces.  Not because I didn&#8217;t want them to look better but rather, it was just too much work and I lacked the skill.</p>
<p><span id="more-99"></span></p>
<p>As time passed my attitude changed from Flash is very cool, to all these &#8217;skip into&#8217; sites have gotten very annoying.  I also gave up hope of learning to create Flash sites myself, due to my ever-growing ideology of Freedom, prompting me to switch to Linux on the desktop.  And this meant running Flash Professional was no longer an option.  Over the next few years hanging out on Slashdot led me to believe that since Flash was so abused, it really lacked value.  When I first saw a simple web form built with Flash I laughed and said, &#8220;Why would anyone use Flash for these types of applications?&#8221;</p>
<p>Fast forward to 2005, my boss was a very creative person who wanted our corporate marketing website to be more like the Hidalgo movie site, than a static printed brochure.  It was a fantastic vision that the executives liked, so we began researching technologies.  I was against using Flash Professional for a number of reasons.  I still was (and still am) using Linux on my desktop and I didn&#8217;t think Flash was the right tool for web applications.  I am a programmer who likes to write code, not play with movie clips on timelines, and the site we were building also had to function as a customer service website with complex backend interaction, data editing and data visualization. </p>
<p>My boss came into work one morning after having been to a Flex briefing, jazzed that she had found the answer, &#8220;Let’s build it with Flex!&#8221;  I responded by asking what was this Flex thing.  I began looking around and I first saw the component explorer.  Initially I thought everything looked great, but I was still unaware of how to build that kind of stuff and talk to the backend.  I downloaded the trial, and dug in. </p>
<p>Within an hour I was pulling data from my backend and displaying it in a data grid that would have taken me weeks to build with HTML and a few days later I had built a POC for the portal we began building.  I was extremely impressed with how quickly I learned Flex and built beautiful, functional stuff.  I was pretty hooked, but still had all those lingering fears about using Flash.  My main concerns were that Flash was proprietary, only used for annoyances, was not indexable by search engines, Macromedia had not been super Linux friendly, and Flash is a browser plug-in.</p>
<p>So how did I overcome my fears and jump head first into the Flash/Flex world, eventually becoming an evangelist for Flex?  Before I begin, the following is not meant to be a point-by-point argument for why to use Flash and Flex.  I save those for when I am confronted with specific use cases.  The following is more about my specific use case, which may or may not apply to your use case.  If you want to talk specifically about your use case please ping me.  I&#8217;d love to hear what you are building and honestly talk about whether Flash and Flex is the best fit.</p>
<p><u>Fear #1: It&#8217;s proprietary</u></p>
<p>Being a Linux geek who compiles almost everything on my system from source, this was probably my biggest issue with using Flash as a platform.  In my mind it comes down to three things: can I deconstruct Flash content without Macromedia (now Adobe) software?  Can I construct Flash content without Adobe software?  And, how tightly controlled is the innovation and direction of the Flash platform? </p>
<p>There are plenty of more religious reasons to fear Flash, but for my personal beliefs, those were the main three.  As far as deconstructing Flash content, I was happy to learn that the SWF (Flash byte code) file spec is published and there are at least three open source Flash browser plug-ins.  To construct SWF content numerous open source projects exist, including a Flex-like framework called Laszlo.  And as far as community participation goes, I was pleased to learn that Flash and many other Macromedia/Adobe products are driven by Customer Advisory Boards and feedback received by the general public.</p>
<p>These facts were enough to satisfy Fear #1.  I&#8217;m sure there are those out there like RMS, for whom these reasons are not enough.  And let me make it clear that I firmly believe in the ideals that RMS believes.  But in my mind there are people who are meant to fight for an ideal, bringing balance to the world and people who are meant to live in contradiction.  Simply put, there are areas where I will sacrifice my ideals and there are areas I won&#8217;t.  Flash is one of those areas where I have no problem living in a contradictory reality.  Most of us live in such a reality.  Is your Operating System Open Source?   How about your video driver, your MP3 Player or the software behind the websites you use?  I&#8217;m fine with Flash not being Open Source because ultimately I trust Adobe to continue doing the right thing and eventually make Flash more open.  And I believe this for a few reasons.  One, the PDF specification recently became an Open Standard with ISO.  Two, Adobe recently open sourced the source behind the core of Flash Player, its virtual machine, with Mozilla.  And three, I&#8217;ve never felt that Flash Player didn&#8217;t put my interests as a consumer ahead of Adobe&#8217;s corporate interests.  For Flash Player to be successful, they must serve the consumers of the technology.</p>
<p><u>Fear #2: It&#8217;s only used for annoyances</u></p>
<p>Indisputably, the power of Flash has been abused.  Pop-ups, pop-overs, skip intros and annoying ads run rampant across our screens.  I&#8217;ve heard it said that one should never judge a religion by its abuse. The same adage applies to technology.  Flash shouldn&#8217;t be avoided just because people use it for annoying things.  After all, e-mail isn&#8217;t avoided just because spammers happen to abuse it.</p>
<p>We need to find creative ways to deal with the abuse.  I personally would like to see a community-driven black list of Flash and DHTML abuses, similar to email RBLs.  The more useful a technology is the more abused it will be.  But that doesn&#8217;t mean we should stop using useful technologies.</p>
<p><u>Fear #3: It&#8217;s not indexable (or what I call &#8220;Integration with Web 1.0&#8243;)</u></p>
<p>When the web consisted primarily of documents, indexing worked really well.  Spiders could easily crawl through URLs to obtain all documents in existence.  As the web has become more of an application platform this method has begun to break down.  Whether it&#8217;s Ajax, Flash or XUL, when an application moves state and code execution to the client, it becomes harder and harder for the search engines to index.  </p>
<p>For the site that I built with Flex this was a critical issue, but it was resolved by creating a boring Lynx compatible version of our site.  Since a content management system contained all of the content for the site it was a simple task and our problem was solved.  However, I think there is still more work to be done.  Search engines need to innovate in this area, perhaps by creating a web services interface to allow for application indexing.  Since modern search engines rely on the interconnectedness of pages, creating a different, indexable version of your site will reduce your search engine ranking.  However, by looking at sites like Digg and Delicious it would be easy to conceive some way to rate and moderate the usefulness and integrity of the new &#8220;application index&#8221;.</p>
<p>What about back button support?  In Flex, back button support is built in and easily customizable so this was never an issue.  Flex also provides an easy way to do hashmark urls (or named anchors) so the url changes as application state changes.  Another Web 1.0 integration problem solved.</p>
<p><u>Fear #4: Macromedia has not been super Linux friendly</u></p>
<p>Flash Player for Linux releases have historically lagged behind the Windows releases, and  there have been very few ways to build SWFs on Linux systems.  For some the lack of a native 64bit Linux Flash Player has also been a big problem.  These factors have long contributed to many Linux users feeling that they are second-class citizens in the Flash world, myself included.  </p>
<p>Before I joined Macromedia, plans were in the works for Flash Player 9.  I had a heart-to-heart with <a href="http://weblogs.macromedia.com/emmy">Emmy Huang</a> about Macromedia&#8217;s Linux support and she assured me that Flash Player 9 on Linux was of the utmost priority.  She also said one main hold-up was filling the open positions for a few great Linux programmers to port/build Flash Player 9 on Linux.  Finally <a href="http://blogs.adobe.com/penguin.swf/">Mike Melanson</a> found the job posting and relocated to SF to join the Flash Player team.  He and many others fiendishly worked on Flash Player 9 for Linux and did a fantastic job!  Public betas for Flash Player 9 on Linux began a few months after the Windows and Mac releases, and Flash Player 9 for Linux was officially released on January 17, 2007.  And for those on 64bit Linux, using the nspluginwrapper, you can run the 32bit Flash plug-in.  </p>
<p>Adobe now has numerous full time engineers building and testing Flash Player 9 on Linux.  Also, it&#8217;s important to consider how committed Adobe has been to Adobe Reader working on Linux.  In my opinion Reader support on Linux is fantastic.  Adobe is extremely committed to making sure that platform technologies not only work on Linux, but also work the same way on Linux as they do on Windows and Mac.</p>
<p>Adobe is also committed to making sure that Linux users can not only view Flash content, but also create it.  With tools like the free Flex 2 SDK, which I use daily on Linux, I am able to build Flash-based applications that take advantage of all the innovative features of Flash and run the same way on Linux, Mac and Windows.  The free Flex 2 SDK provides a set of reusable components, a compiler and debugger that allows me to build web applications that are faster, more usable, and more aesthetically appealing than anything I could build with HTML and JavaScript.</p>
<p><u>Fear #5: It&#8217;s a browser plug-in</u></p>
<p>This was only a short-lived issue for me, so I&#8217;ll save the verbosity for a future blog.  I believe that the concept of Browser Plug-ins was added to allow innovation outside of a snail’s pace seen in the browsers themselves.  This gives web users the ability to go beyond the realm of HTML and experience amazing things within the context of a page accessed via HTTP.  Flash provided just this, a consistent, innovative experience inside the browser, yet outside the limitations of HTML.  Now 98 percent of the world&#8217;s PC users have Flash 6 or greater installed. </p>
<p>So why is there such an aversion to relying on a browser plug-in?  Last time I checked more users have Flash enabled than JavaScript.  Should we never rely on JavaScript either?  And what about browser compatibility?  Plug-ins, like Flash, do a great job of shielding web developers from the pains of cross-browser and cross-OS incompatibilities.  From a web developer perspective I&#8217;m much happier when I can write once, debug once and run anywhere, than having to test on three different OS&#8217;s and over 20 different browser permutations.  Many say that frameworks shield us from these cross-X issues.  I don’t think they do, because almost every piece of software I write ends up being about 80 percent framework and 20 percent hand coded.  People always end up having to deal with a slice of the application that falls outside what the frameworks does.</p>
<p>Also, a side note on Flex.  The Flex programming model was conceived as a component framework where components are extensible and include properties, methods, styles and events.  In my experiences by encapsulating these elements into a framework I rarely have to go outside the bounds of the Flex framework.  With HTML and Ajax frameworks I frequently have to drop down to lower level code, outside the framework.  Usually at first the framework gives me everything I need.  Then the designers hand me something that looks nothing like what the framework provides out-of-the-box and I have to start hacking around the framework or even modifying the framework itself.  This is not a maintainable way to code!  With Flex I simply tell designers to use a designer friendly tool to create the design elements.  Then I import those elements into my Flex application as skins.</rabbit trail></p>
<p>Obviously there are things that Flash can do very well that the browser can&#8217;t do, or can&#8217;t do well.  People are working to change this.  But how long will it be before new standards are created, how long before browsers implement those standards and a majority of users upgrade to those browsers?  I’d prefer not to hold my breath, because by the time that is all done the web will be nothing like it is today.  Plug-ins are a harbor for innovation, stability and consistency.  So why do we treat them as if they aren&#8217;t just as important as the browser?  And with free products like the Flex Ajax Bridge it&#8217;s easy to communicate between Flash and the browser, as illustrated by Google Finance.</p>
<p><u>Fears Relieved</u></p>
<p>Here&#8217;s the point, Flash Player IS a ubiquitous, cross-browser, cross-OS virtual machine enabling next generation web experiences.  Flex is a simple tool for developers to build applications that execute in the Flash virtual machine.  In most use cases Flex applications take less time to build and result in better user experiences.  Flex isn&#8217;t for everyone, or for every use case, but I hope my experiences have shed light on the whether or not Flex and Flash are a good fit for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2007/02/21/how-i-overcame-my-fear-of-flash/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>HowTo: Reduce the size of your Flex app</title>
		<link>http://www.jamesward.com/2006/11/27/howto-reduce-the-size-of-your-flex-app/</link>
		<comments>http://www.jamesward.com/2006/11/27/howto-reduce-the-size-of-your-flex-app/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 20:26:50 +0000</pubDate>
		<dc:creator>James Ward</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.jamesward.org/wordpress/2006/11/27/howto-reduce-the-size-of-your-flex-app/</guid>
		<description><![CDATA[Flex 2 added a neat little feature which allows you to load Runtime Shared Libraries, from other domains.  And since the browser caches these libraries in theory we could all point to a central set of Flex 2 Framework RSLs and users of your application would only have to download the RSLs the first [...]]]></description>
			<content:encoded><![CDATA[<p>Flex 2 added a neat little feature which allows you to load Runtime Shared Libraries, from other domains.  And since the browser caches these libraries in theory we could all point to a central set of Flex 2 Framework RSLs and users of your application would only have to download the RSLs the first time they went to an application which used them.  Before I show you how to make this work, lets talk about the caveats&#8230;  First and most important, THIS IS UNSUPPORTED BY ADOBE.  While the Flex team is working on a better, more permanent solution to this problem, this is really a hack and despite the fact that I am using this in my applications, neither I or Adobe warranty or support the use of this in any way.  Second, since there is no failover mechanism, until we find a better home for the RSLs, if you choose to point to my hosted RSLs, your application will be at the mercy of my web server.  Third, if someone hacks my web server and uploads new cracked malware RSLs, or uses a man-in-the-middle attack to replace the RSLs in flight, then you (and I) have been <a href="http://www.urbandictionary.com/define.php?term=p0wned">p0wned</a>.  Fourth, I, James Ward, may have included modified Flex framework files which do bad things, like track user behavior/input and report them back to my server.  While I promise I have not done this, if you choose to use these RSLs, you are putting your trust in my promise.</p>
<p>So despite the caveats, I still think this hack is sufficient enough for many applications.  Flex engineering is really working hard to make this work for everyone.  In the mean time what is outlined here may likely help you to dramatically reduce SWF size.  Read on to find out how.<br />
<span id="more-74"></span></p>
<p><strong>Quick Start</strong></p>
<p>I&#8217;ve created 3 RSLs, a small one, with just the dependencies of mx.core.Application and a medium one with what I guessed were the 20 or so most commonly used components, and then a large one with over 30 other components.  Each RSL does not include the contents of the smaller RSLs.  So if you want to take advantage of this technique using the medium RSL, then you will need to use the medium AND the small RSL.  Here is table with the information about the RSLs:</p>
<table border="1">
<tr>
<th>RSL</th>
<th>Size</th>
<th>SWC</th>
<th>Linker Source</th>
<th>SWC Catalog</th>
</tr>
<tr>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-small.swf">small<a/></td>
<td>106K</td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-small.swc">Download SWC</a></td>
<td><a href="http://flexapps.cvs.sourceforge.net/flexapps/hosted_rsls/src/smallLinker.as?view=log">smallLinker.as</a></td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-small.xml">Catalog XML</a></td>
</tr>
<tr>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-medium.swf">medium<a/></td>
<td>160K</td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-medium.swc">Download SWC</a></td>
<td><a href="http://flexapps.cvs.sourceforge.net/flexapps/hosted_rsls/src/mediumLinker.as?view=log">mediumLinker.as</a></td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-medium.xml">Catalog XML</a></td>
</tr>
<tr>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-large.swf">large<a/></td>
<td>141K</td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-large.swc">Download SWC</a></td>
<td><a href="http://flexapps.cvs.sourceforge.net/flexapps/hosted_rsls/src/largeLinker.as?view=log">largeLinker.as</a></td>
<td><a href="http://ws.jamesward.org/framework-2_0_1_b-large.xml">Catalog XML</a></td>
</tr>
</table>
<p>Once you have decided which RSL to use, follow these instructions:<br />
1) Download the SWC for the RSL(s) you want to use from <a href="http://ws.jamesward.org">ws.jamesward.org</a><br />
2) Fix your build path<br />
2.1) If you are compiling via Ant or the command line, then specify your external-library-path and runtime-shared-libraries like:</p>
<div width="100%" style="background: #cccccc; overflow : auto; padding: 6px;">
<code>flex2-sdk/bin/mxmlc \<br />
  -external-library-path+=build/framework-2_0_1_b-small.swc,build/framework-2_0_1_b-medium.swc  \<br />
  -runtime-shared-libraries=http://ws.jamesward.org/framework-2_0_1_b-small.swf,http://ws.jamesward.org/framework-2_0_1_b-medium.swf\<br />
  -o=build/testHostedFlexLibs-medium.swf \<br />
  -file-specs=test/testHostedFlexLibs.mxml<br />
</code>
</div>
<p>2.2) If you are using Flex Builder then go to Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [Enter or browse to the first SWC] -> Add all the SWCs you will be using.  Then select a SWC&#8217;s RSL URL and select the Edit button.  Change the Link Type to &#8220;Runtime shard library (RSL)&#8221;, set the RSL URL to the correct swf url on ws.jamesward.org, deselect the &#8220;Auto extract checkbox&#8221;, and then select the OK button.  Repeat this for each SWC.  When done, select the OK button to exit the Project Properties.  Here is what my Build Path looks like:<br />
<img src="http://www.jamesward.org/wordpress/wp-content/uploads/2006/11/buildpath.png" alt="Build Path" /></p>
<p>2.3) If you are using FDS, then just add the SWC(s) to your flex/user_classes dir and update the runtime-shared-libraries accordingly in the flex-config.xml file.</p>
<p>3) Recompile your Flex app (if Flex Builder didn&#8217;t do this for you automatically) and the file size should be significantly lower!</p>
<p>4) One more caveat&#8230;  You have to actually load your application from a web server for it to work.  This is due to the Flash local OR network sandbox.  Maybe someone can suggest a better workaround.</p>
<p><strong>How It Works</strong></p>
<p>This all starts with the Preloader.  The out of the box preloader doesn&#8217;t support cross domain loaded RSLs.  If you use my hosted RSL(s) then you don&#8217;t need to worry about this since it includes the patched Preloader.  However, if you are interested in really knowing how this all works, or if you want to download the source code and play with it, then here is what you need to do.  In order for your application to be able to use the classes in the crossdomain loaded RSL, the Preloader needs to specify the securityDomain for the loaderContext of the RSLs.  So in the loadRSL function of my patched mx/preloaders/Preloader.as file I have:</p>
<div width="100%" style="background: #cccccc; overflow : auto; padding: 6px;">
<code>loaderContext.securityDomain = SecurityDomain.currentDomain;<br />
loaderContext.applicationDomain = ApplicationDomain.currentDomain;<br />
</code>
</div>
<p>The source code I use to build the RSLs is available on <a href="http://sourceforge.net/projects/flexapps">Source Forge</a>.  If you want to play with the code, then you will need to copy the Preloader.as from the Flex SDK&#8217;s source code, update the RSL loaderContext as noted above, and add the import for the flash.system.SecurityDomain class.</p>
<p>You can also see that I have a <a href="http://ws.jamesward.org/crossdomain.xml">wildcard crossdomain.xml</a> policy file on ws.jamesward.org which allows Flash player to load the RSLs no matter what domain the requesting application is hosted on.  One quick note on crossdomain policy files, since I don&#8217;t think it is said clearly enough, and often enough&#8230;<br />
DO NOT EVER PUT A WILDCARD CROSSDOMAIN POLICY FILE ON A DOMAIN IF EITHER OF THE FOLLOWING APPLY:<br />
 &#8211; THE DOMAIN IS USED FOR COOKIE BASED OR BASIC AUTHENTICATION<br />
 &#8211; THE DOMAIN IS ON AN INTERNAL NETWORK</p>
<p>Now about the small, medium, and large RSLs&#8230;  For now I opted to use just three RSLs to keep it simple.  I am using just simple linker classes and compc to create the SWCs, then expanding the SWCs to get the SWF, which is the RSL.  You can see all this in the source code, specifically, the <a href="http://flexapps.cvs.sourceforge.net/flexapps/hosted_rsls/build.sh?view=log">build.sh</a> file.  I have also guessed at the best way to organize the RSLs (as far as what classes go where), but definitely want to hear what others think.</p>
<p>Now the fun part&#8230;  To prove this all works, first go to the <a href="http://www.jamesward.org/testHostedFlexLibs-large-1.swf">test app</a> on www.jamesward.org and watch as the RSLs are loaded from ws.jamesward.org.  You should now have all 3 RSLs in your browser cache and if you now go to another <a href="http://www.thebetterside.com/testHostedFlexLibs-large-1.swf">test app</a> on a different domain the application should load much faster since it only needs to load 72K instead of what would have been over 400K (my test app doesn&#8217;t use all the classes in the three RSLs).</p>
<p><strong>The Future?</strong></p>
<p>I&#8217;d really like to hear feedback if this is a viable hack for those looking to reduce Flex app size.  Let me know if you plan to use this technique, or if you don&#8217;t, why?  What should be different?  Also, I think someone could further hack the preloader to support failover and md5 checksums.  Any takers?</p>
<p>Thanks in advance for your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamesward.com/2006/11/27/howto-reduce-the-size-of-your-flex-app/feed/</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
	</channel>
</rss>
