<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:thr="http://purl.org/syndication/thread/1.0">
  <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html" />
  <link rel="self" type="application/atom+xml" href="http://www.insideria.com/atom.xml" />
  <id>tag:www.insideria.com,2009://34/tag:www.insideria.com,2008://34.23443-</id>
  <updated>2009-11-16T15:45:30Z</updated>
  <title>Comments for Flex RIA Performance Considerations Part 2: Application Startup (http://www.insideria.com/2008/04/flex-ria-performance-considera.html)</title>
  <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.21-en</generator>
  <entry>
    <id>tag:www.insideria.com,2008://34.23443</id>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.oreilly.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=34/entry_id=23443" title="Flex RIA Performance Considerations Part 2: Application Startup" />
    <published>2008-04-29T14:00:00Z</published>
    <updated>2008-06-13T17:53:32Z</updated>
    <title>Flex RIA Performance Considerations Part 2: Application Startup</title>
    <summary><![CDATA[ Overview &nbsp; As Flex developers we strive to create user experiences that are engaging and efficient.&nbsp; The mandate of this mantra requires us to take startup times into account.&nbsp; When we build our applications, the last thing that we...]]></summary>
    <author>
      <name>Jun Heider</name>
      <uri>http://www.iheartair.com</uri>
    </author>
    
    <category term="Blogs" />
    
    <content type="html" xml:lang="en" xml:base="http://www.insideria.com/">
      <![CDATA[<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">Overview<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">As Flex developers we strive to create user experiences that are engaging and efficient.<span style="">&nbsp; </span>The mandate of this mantra requires us to take startup times into account.<span style="">&nbsp; </span>When we build our applications, the last thing that we need is for our users to get bored and frustrated before they even start using our applications.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p><o:p></o:p></p>
<p>
</p><span class="mt-enclosure mt-enclosure-image"><a onclick="window.open('http://www.insideria.com/part2_preloader1.html','popup','width=194,height=75,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.insideria.com/part2_preloader1.html"><img dragover="true" class="mt-image-left" style="margin: 0px 20px 20px 0px; float: left;" alt="part2_preloader.png" src="http://www.insideria.com/part2_preloader-thumb-194x75.png" width="194" height="75" /></a></span>
<span class="mt-enclosure mt-enclosure-image">&nbsp;</span>
<p dragover="true" class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font dragover="true" face="Times New Roman">We&#8217;re all familiar with the DownloadProgressBar that shows up during preload.<span style="">&nbsp; </span>Let&#8217;s talk about how to make it go away faster and get users working with our applications in the shortest amount of time possible.<span dragover="true" style="">&nbsp; </span></font></font></font></p>
<p dragover="true" class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">When thinking about application startup optimization, there are a couple things to strive for:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"></font>&nbsp;</p>
<ol>
<li>
<div class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Minimizing download time</font></div></li>
<li>
<div class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Deferring instantiation</font></div></li></ol>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">That being said, let&#8217;s take a look at the techniques and things to watch out for.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">Minimizing Download Time<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">Download file sizes and Internet connection speeds can really affect the time it takes for a Flex application to start up.<span style="">&nbsp; </span>Unfortunately, those are two factors that we have hardly any control over.<span style="">&nbsp; </span>The good news is we have a couple of things that kind of help us in this realm, although they have some drawbacks.<span style="">&nbsp; </span></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">First, there&#8217;s caching mechanisms in the modern web browser.<span style="">&nbsp; </span>In an ideal end user situation, their browser cache is turned on, so your files can be cached locally on their machine which saves time up front.<span style="">&nbsp; </span>The bad news is you really cannot rely on the fact that an end user&#8217;s browser will be pulling your files from the cache most of the time.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Second, the Flash Player was built to stream frames.<span style="">&nbsp; </span>In other words, the Flash Player can start your Flex application while it&#8217;s still downloading the application SWF.<span style="">&nbsp; </span>The bad news, is until enough of your application has loaded to show frame two, the only thing the end user will see is the Preloader screen.<span style="">&nbsp; </span>The reason being, in a standard Flex application there is only two frames.<span style="">&nbsp; </span>Frame one is where the SystemManager and the preload process lives, it is the frame that is running when you see the &#8220;Loading&#8221; display.<span style="">&nbsp; </span>The second frame is where your application lives.<span style="">&nbsp; </span>This is why minimizing what needs to occur before the preload process completes is crucial.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">So what is a developer to do to move on to frame two?</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><font size="3"><font color="#000000"><font face="Times New Roman">Beware the Embed<o:p></o:p></font></font></font></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">The Flex framework makes available to you a way to compile assets such as images, mp3 files and fonts directly into your application SWF.<span style="">&nbsp; </span>Although this comes in handy with making sure that the end user will have a copy of your assets this is a very good way of causing your application to remain in &#8220;Loading&#8221;.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">For example, take this application that contains an embedded mp3 file that&#8217;s just over 9MB.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_EmbeddedMp3/InsideRIA_EmbeddedMp3.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_EmbeddedMp3/InsideRIA_EmbeddedMp3.html</a></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">If you notice, the application remains in the &#8220;Loading&#8221; state for a very long time.<span style="">&nbsp; </span>This is due to the fact that the application cannot move on to frame two until the 9MB or so of extra SWF has been downloaded.<span style="">&nbsp; </span>In the above case, keeping the file externalized and loading it in at runtime would have been a better option to decrease startup time.<span style="">&nbsp; </span></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Although it may be highly unlikely that you&#8217;ll want to embed a 9MB file into your Flex app, imagine an app that has several embedded SVG images, or smaller mp3 files used as sound effects.<span style="">&nbsp; </span>Here&#8217;s another example, embedded fonts, which is very common.<span style="">&nbsp; </span>Let&#8217;s talk about fonts.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><font size="3"><font color="#000000"><font face="Times New Roman">Use Less Character<o:p></o:p></font></font></font></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">When you embed a font in Flex, you are given the whole range of characters supported by that font.<span style="">&nbsp; </span>Although that might be what you&#8217;re trying to accomplish with your application, are you sure you need all the characters?<span style="">&nbsp; </span>For instance, in an English-only applications are you sure you really need to spend time loading data for Chinese characters?</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here&#8217;s an example of an app that embeds two different font files with no character restrictions:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FontEmbed_NOT_Limited/InsideRIA_FontEmbed_NOT_Limited.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FontEmbed_NOT_Limited/InsideRIA_FontEmbed_NOT_Limited.html</a></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Now, here&#8217;s an example of the same application with a limited character set.<span style="">&nbsp; </span>In this case, the font is only being used in some labels that just display numerals, so the character set was limited to use just numbers and the period: </font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FontEmbed_Limited/InsideRIA_FontEmbed_Limited.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FontEmbed_Limited/InsideRIA_FontEmbed_Limited.html</a>&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"></font></o:p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">The thing to note here is if your browser cache is turned on, the difference between the two is negligible, however, if you delete the cached content between requests, you&#8217;ll see some serious startup time differences since the SWFs differ about 200KB in size.<span style="">&nbsp; </span>In my tests I was averaging about 500ms of savings by using the above technique.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Now that we know to limit the sizes of the files we&#8217;re serving up, how can we further decrease download requirements?</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><font size="3"><font color="#000000"><font face="Times New Roman">Caching the Framework <o:p></o:p></font></font></font></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">As of Flex 3 you can now cache Adobe signed framework RSLs into a Flash Player cache.<span style="">&nbsp; </span>The beauty of this is twofold.<span style="">&nbsp; </span>First, signed framework RSLs cached in the Flash Player cache are shared among all Flex applications that are configured to use them.<span style="">&nbsp; </span>In other words, if someone else&#8217;s app had already pulled down the 500KB or so of signed framework RSL, and the RSL is still in the Flash Player cache, your application can use that cached RSL.<span style="">&nbsp; </span>Second, if someone clears their browser cache, it does not affect the Flash Player cache.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">There are some caveats to Flash Player framework caching:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style=""><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></span></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">The Flash Player must be version 9.0.115 or higher.</font></li></ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Framework caching depends on a signed RSL.<span style="">&nbsp; </span>In general RSLs increase application startup time since the whole library in an RSL is loaded no matter what.<span style="">&nbsp; </span>In other words, even if you&#8217;re not using DataGrid and Tree, those classes are getting loaded.</font></li></ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">If you are comfortable with relying on browser caching, then that&#8217;s usually going to be a faster startup time due to the nature of how RSL libraries are loaded as noted above.</font></li></ul>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">So, here&#8217;s an application that uses no Framework caching:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_NOT_FrameworkCaching/InsideRIA_NOT_FrameworkCaching.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_NOT_FrameworkCaching/InsideRIA_NOT_FrameworkCaching.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here&#8217;s the same application using Framework caching:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FrameworkCaching/InsideRIA_FrameworkCaching.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_FrameworkCaching/InsideRIA_FrameworkCaching.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Overall, you benefit from Framework caching if the end user has browser caching turned off and/or their Internet connection speeds are slow.<span style="">&nbsp; </span>For instance, I had caching in the browser turned off and after the initial download of the signed Framework RSL I was consistently saving a good 400ms or so.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><font size="3"><font color="#000000"><font face="Times New Roman">Use Modules<o:p></o:p></font></font></font></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Another way to minimize that up front load time is to break your Flex application into Modules.<span style="">&nbsp; </span>A benefit to using Modules is that you have control over when a Module is loaded into your application and also unloaded.<span style="">&nbsp; </span>In addition, you can optimize a module to work with your application, further decreasing the amount of data that needs to be downloaded by decreasing the size of the actual Modules SWF files.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here&#8217;s the same application from before, but now we&#8217;re using Modules and no Framework Caching:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_Modules_NON_OPTIMIZED/InsideRIA_Modules_NON_OPTIMIZED.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_Modules_NON_OPTIMIZED/InsideRIA_Modules_NON_OPTIMIZED.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Now here&#8217;s that same application using Modules, but in this case the Modules have been optimized for this specific application:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_Modules_OPTIMIZED/InsideRIA_Modules_OPTIMIZED.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_Modules_OPTIMIZED/InsideRIA_Modules_OPTIMIZED.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">If we keep caching turned off, the startup time gain I was getting by using Modules was about 500ms.<span style="">&nbsp; </span>Also, even though the optimized Step1.swf module is about 125KB smaller than the non-optimized one, there really didn&#8217;t seem to be any difference between the two when testing with my high-speed Internet connection.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Last point to make about Modules is the reason they were faster was because I could load them in just in time.<span style="">&nbsp; </span>In other words, the only Module loaded at startup was the Step1.swf Module.<span style="">&nbsp; </span>So in this case of Modules, the end-user saved on startup time, but will end up paying for it when they move from one Module to the next since each new Module will need to be loaded in a JIT manner.<span style="">&nbsp; </span>In the case of my app, this penalty is when the user moves through each of the steps 1-5 for the first time.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">So now that we&#8217;ve talked about how to improve our application startup time by decreasing the download requirements, let&#8217;s move on to how to improve startup time via our application logic.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">Deferring Instantiation<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">The number one thing you can do to help minimize the amount of time from when data is downloaded to when the user can actually use the application is by deferring instantiation.<span style="">&nbsp; </span>The concept behind this technique is not creating objects in memory until they&#8217;re actually needed by the application.<span style="">&nbsp; </span></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Although deferred instantiation techniques will cause little - and oftentimes unnoticeable - delays throughout the use of the application, this is often considered more acceptable behavior than having a long application startup delay.<span style="">&nbsp; </span>The other benefit to deferred instantiation is optimized memory utilization.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">When thinking about deferred instantiation, the number one thing to keep in mind is navigator containers such as ViewStack and TabNavigator.<span style="">&nbsp; </span>Sometimes developers are tempted to set their creationPolicy attribute to &#8220;all&#8221; so that they can access children without having a bunch of runtime exceptions caused by null values due to non-existent child components.<span style="">&nbsp; </span>The problem with this practice - other than increased memory utilization - is all the child components of the child containers in the navigator are created upfront, before the Preloader display is removed and before the application moves to frame two.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style=""><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here is an example of the app with creationPolicy=&#8221;all&#8221;:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_ALL/InsideRIA_CreationPolicy_ALL.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_ALL/InsideRIA_CreationPolicy_ALL.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">The good news is that the creationPolicy in your navigation containers is not set to &#8220;all&#8221; by default.<span style="">&nbsp; </span>However, one thing you&#8217;ll notice, especially if the navigator children have many children or much associated data is that now when you go from one of the&nbsp;navigator child views&nbsp;to another, is that&nbsp;on first viewing you may see a slight delay as the children of that&nbsp;view&nbsp;are instantiated.<span style="">&nbsp; </span></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here is an example of the app we&#8217;ve been working with creationPolicy=&#8221;auto&#8221;, the default:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_DEFERRED/InsideRIA_CreationPolicy_DEFERRED.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_DEFERRED/InsideRIA_CreationPolicy_DEFERRED.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">That being said, there&#8217;s a way to have your cake and eat it too: ordered creation.<span style="">&nbsp; </span>Basically, ordered creation in a navigation container is a two pass beast and tricks the application into turning off the Preloader and moving on to frame two.<span style="">&nbsp; </span>During the first pass, the navigator&#8217;s immediate child views are created. It is at this point that the application thinks it can display and ends up moving to frame two.<span style="">&nbsp; </span>Then on the second pass the navigator&#8217;s child view&#8217;s children are created.<span style="">&nbsp; </span></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">In this scenario, if we were to use bullet time, you&#8217;d see the application initially with&nbsp;instantiated but&nbsp;empty containers, and then you&#8217;d see their children pop into view as the Flash Player works its way through the instantiation queue.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here is an example of the app we&#8217;ve been working with creationPolicy=&#8221;queued&#8221;:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_ORDERER/InsideRIA_CreationPolicy_ORDERER.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_CreationPolicy_ORDERER/InsideRIA_CreationPolicy_ORDERER.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">All in all, ordered creation is perceived as the fastest option of the three navigator children instantiation choices.<span style="">&nbsp; </span>Surprisingly, it&#8217;s even slightly faster than deferred creation which I guess makes sense since the first navigator child view&#8217;s children need to be created with deferred instantiation before moving to frame&nbsp;two whereas in ordered creation that is not the case.<span style="">&nbsp; </span></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"><span style=""></span></font>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"><span style=""></span>In my tests, with the browser&#8217;s cache turned off, startup time in non-deferred creation was taking around 1100ms, deferred creation around 500ms, and ordered creation around 270ms.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">One last note on deferred instantiation in navigation containers: if you&#8217;re concerned with memory consumption, deferred instantiation A.K.A creationPolicy=&#8221;auto&#8221; - the default setting - is still the way to go in your navigation containers.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">EXPERIMENTAL: Take Advantage of the Stream<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Recently I discovered a blog post by a gentleman named Dirk Eismann that created a cool little Flex Builder plugin that I use every day.<span style="">&nbsp; </span>Flex Builder TODO/FIXME plugin. (</font><a href="http://www.richinternet.de/blog/index.cfm?entry=911D4B57-0F0D-5A73-AF6F4D4D04099757"><font color="#800080" size="3" face="Times New Roman">http://www.richinternet.de/blog/index.cfm?entry=911D4B57-0F0D-5A73-AF6F4D4D04099757</font></a><font color="#000000" size="3" face="Times New Roman">)<span style="">&nbsp; </span></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"><span style=""></span></font>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"><span style=""></span>Anyway, his post mentioned taking advantage of the streaming nature of the Flash Player to minimize startup time in your Flex applications without having to use Modules or framework caching. (</font><a href="http://www.richinternet.de/blog/index.cfm?entry=FF295F89-DAD8-CCDC-960413842BC0D478"><font color="#800080" size="3" face="Times New Roman">http://www.richinternet.de/blog/index.cfm?entry=FF295F89-DAD8-CCDC-960413842BC0D478</font></a><font color="#000000" size="3" face="Times New Roman">)</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">The key thing to note about this technique is that it deviates from the standard two frame Flex application movie.<span style="">&nbsp; </span>Although I can&#8217;t take credit for his technique, I decided to&nbsp;expand his code snippets and details into a&nbsp;working example for this blog post which I got "mostly" done.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Here is the application I&#8217;ve been working with in a seven frame Flex application!</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman"><a href="http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_MoreThanTwoFrames/InsideRIA_MoreThanTwoFrames.html">http://labs.realeyes.com/labs/examples/InsideRIA/Part2/InsideRIA_MoreThanTwoFrames/InsideRIA_MoreThanTwoFrames.html</a></font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman"><span style="font-size: 12pt; font-family: 'Times New Roman','serif';">The main thing to notice when you run the application is that you can interact with the first form that&#8217;s in frame three while all the other forms in the subsequent frames are loading in.<span style="">&nbsp; </span>I slowed frames four through seven down by embedding an mp3 into frame four so that you can see this.</span></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">Like I said before, I didn&#8217;t get time to finish it and completely debug the code, and I&#8217;m not sure I will since to me it&#8217;s non-standard and just a POC, but here&#8217;s a couple of thoughts for those of you that want to take Dirk and my work further, which of course I hope you do. </font><span style="font-family: Wingdings;"><span style="">J</span></span></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">I noticed some issues with linking in the code on the alternate frames.<span style="">&nbsp; </span>For instance &lt;mx:ComboBox/&gt; was initially throwing an error when you expanded it about IPopUpManager until I created a dummy ComboBox variable in the main app file (to get the classes compiled in)<span style="">&nbsp; </span>The alternate way I figured out to handle this ComboBox issues was to uses the signed Framework RSL.</font></li></ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">I had an issue with the data bindings on Step2.mxml.<span style="">&nbsp; </span>The problem is an error being thrown on a [mixin] class that was created during the mxmlc compiler's&nbsp;conversion of the MXML&nbsp;files to&nbsp;AS.<span style="">&nbsp; </span>I played around with it for a little while and ran out of time before figuring it out. Maybe manual bindings set up in ActionScript would work on these components in frames three and above?</font></li></ul>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">When I had the default Flex Builder compiler setting for locale &#8220;-locale en_US&#8221; the application was throwing an exception when it tried to load in the controls resource bundle.<span style="">&nbsp; </span>I worked around it by setting the compiler argument to &#8220;-locale&#8221;.<span style="">&nbsp; </span>I&#8217;m sure this could be fixed&#133;but once again I ran out of time.</font></li></ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font size="3"><font color="#000000"><font face="Times New Roman">Based on the above, the multi-frame Flex application, although perceived fast at startup, doesn&#8217;t really seem viable for&nbsp;robust&nbsp;Flex coding, at least without a lot of work.<span style="">&nbsp; </span>I do, however, see some potential on using this technique to embed resources such as fonts, sound effects, and images that may not be needed right at application startup.<span style="">&nbsp; </span>Either way, no matter the fact of its half-implemented state, it&#8217;s pretty cool to see a seven frame Flex application. </font><span style="font-family: Wingdings;"><span style="">J</span></span></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">In Closing<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">That being said, it&#8217;s time to wrap this up.<span style="">&nbsp; </span>Above you were given a rundown on some of the most prevalent ways to decrease your startup times.<span style="">&nbsp; </span>The methods I see as most viable is using discretion with embedded data, and using deferred instantiation in your navigators.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Below you will find some additional reference links, some notes on the test apps at the links above, and also a taste of what&#8217;s coming up next month.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><font size="3"><font color="#000000"><font face="Times New Roman">Additional Reference Links<o:p></o:p></font></font></font></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Embedding Fonts (Runtime resources): </font><a href="http://david.realeyes.com/?p=21"><font color="#800080" size="3" face="Times New Roman">http://david.realeyes.com/?p=21</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Embedding Fonts (Character Ranges): </font><a href="http://livedocs.adobe.com/flex/3/html/fonts_07.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/fonts_07.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Framework RSLs: </font><a href="http://livedocs.adobe.com/flex/3/html/rsl_09.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/rsl_09.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Modules: </font><a href="http://livedocs.adobe.com/flex/3/html/modular_2.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/modular_2.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Testing: configuring the client-side environment: </font><a href="http://livedocs.adobe.com/flex/3/html/performance_05.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/performance_05.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Testing: applications for performance:* </font><a href="http://livedocs.adobe.com/flex/3/html/performance_04.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/performance_04.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Startup and Deferred/Ordered Instantiation: </font><a href="http://livedocs.adobe.com/flex/3/html/layoutperformance_01.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/layoutperformance_01.html</font></a></li>
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Good diagram on startup order and the various events that are dispatched: </font><a href="http://livedocs.adobe.com/flex/3/html/layoutperformance_03.html"><font color="#800080" size="3" face="Times New Roman">http://livedocs.adobe.com/flex/3/html/layoutperformance_03.html</font></a></li></ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">* I have a Livedoc comment regarding this one.<span style="">&nbsp; </span>Basically, from looking at the Framework source I think applicationComplete is a better place to assess startup times than creationComplete=&#8221;callLater(_someMethod)&#8221;.<span style="">&nbsp; </span>The comment was approved by Adobe, I just don&#8217;t see it live yet.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">About the Test Apps<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">The Flex apps that are linked via this post are view source enabled.<span style="">&nbsp; </span>In addition, there are two ways to run these tests on your own:</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ol style="margin-top: 0in;" type="1">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">By default, these apps are enabled to work with the REDbug Console.<span style="">&nbsp; </span>They do not require the Debug Player for this.<span style="">&nbsp; </span>To use them with REDbug, download and install the REDbug, and have it open while the apps are running.<span style="">&nbsp; </span>Here is a link to REDbug: </font><a href="http://www.redbugtool.com/"><font size="3" face="Times New Roman">http://www.redbugtool.com</font></a></li></ol>
<p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<ol style="margin-top: 0in;" start="2" type="1">
<li class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">If you don&#8217;t want to use REDbug, you can right-click to view source, download the source zip and import into Flex Builder.<span style="">&nbsp; </span>From there you can run in debug mode using the provided trace() statements or roll your own output method.</font></li></ol>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Something to keep in mind during testing is that much of the results can vary depending on network speeds and caching.<span style="">&nbsp; </span>Although you can run the tests locally in Flex Builder and see very slight differences, the true test would be to upload it to a web server, preferably not on your local network and test it that way.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">In addition, it would be best to turn off caching in your web browsers to get a really good feel for average startup times.<span style="">&nbsp; </span>I suggest turning off your browser cache and running each test at least three times and averaging the results.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">Last but not least, the example applications mentioned in this post should not be construed as a full example of best practices.<span style="">&nbsp; </span>They are sparsely commented examples slapped together to test some concepts.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<div style="border-style: none none double; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 2.25pt; padding: 0in 0in 1pt;">
<p class="MsoNormal" style="border: medium none ; margin: 0in 0in 0pt; padding: 0in;"><b style=""><span style="font-family: 'Trebuchet MS','sans-serif';"><font size="3"><font color="#000000">Where We Go from Here<o:p></o:p></font></font></span></b></p></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><font color="#000000" size="3" face="Times New Roman">In the next installment of this series, we're going to talk about writing efficient code.<span style="">&nbsp; </span>During the installment we'll drill down into ActionScript code and discuss some of the things to keep in mind while you&#8217;re building your Flex applications.</font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><o:p><font color="#000000" size="3" face="Times New Roman">&nbsp;</font></o:p></p><span style="font-size: 12pt; font-family: 'Times New Roman','serif';"><font color="#000000">In the meantime, if you have any ideas on what you'd like to see in this series, feel free to post a comment, I'm always open to feedback and ideas.</font></span>]]>
      
    </content>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016844</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016844" />
    <title>Comment from Chris Brind on 2008-04-29</title>
    <author>
        <name>Chris Brind</name>
        <uri>http://techy.brindy.org.uk</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://techy.brindy.org.uk">
        <![CDATA[<p>Very useful article, thanks.</p>

<p>Here at Arum Systems we've taken the use of Flex modules to another level by developing a platform that reaps the benefit of OSGi (for the server) and Flex (for the client).  It is called Solstice and you develop your applications as bundles that contain Java and/or Flex code (unoptimized mx:Modules).  As a result you get loosely coupled, highly cohesive and extremely reusable modular applications based on Flex.</p>

<p>It's completely free and totally open source.  Feel free to have a look at our alpha release here:<br />
<a href="http://www.arum.co.uk/solstice.php">http://www.arum.co.uk/solstice.php</a></p>

<p>Regards,<br />
Chris<br />
</p>]]>
    </content>
    <published>2008-04-29T15:02:02Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016845</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016845" />
    <title>Comment from Roman on 2008-04-29</title>
    <author>
        <name>Roman</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Cool article. But how about having a "print" feature on the site. I could not find any...</p>]]>
    </content>
    <published>2008-04-29T15:03:34Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016848</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016848" />
    <title>Comment from Jun Heider on 2008-04-29</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>@Chris - Thanks for the kind words and very useful tip on your module platform, definitely worth checking out.</p>

<p>@Roman - Thanks!  I'll let the powers that be know that a "print" feature would be useful.</p>]]>
    </content>
    <published>2008-04-29T16:07:01Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016862</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016862" />
    <title>Comment from Anonymous on 2008-04-29</title>
    <author>
        <name>Anonymous</name>
        <uri>http://www.developersummit.com/awards.html#vote</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.developersummit.com/awards.html#vote">
        <![CDATA[<p>Great Indian Developer Awards 2008</p>

<p>Vote for your favorite trailblazing individuals & products in the IT Developer ecosystem and win exciting prizes!</p>

<p>Prizes include: Apple Mac Air Book, 26" PLASMA TV, NOKIA95 8 GB, APPLE iPOD 80Gb, ZEST HOLIDAYS, GIDS GOODIES.</p>

<p>The Great Indian Developer Awards is a first-of-its-kind initiative that honors individual & organisational excellence in the IT Developer ecosystem. Just click and cast your vote. With over 15 categories & a distinguished independent jury, who knows... it could be your colleague, company or product that will emerge triumphant. And you get to go home with cool goodies as well! Hurry!</p>

<p>Click here to vote for the Great Indian Developer Awards: <a href="http://www.developersummit.com/awards.html#vote">http://www.developersummit.com/awards.html#vote</a></p>]]>
    </content>
    <published>2008-04-30T04:31:45Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016864</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016864" />
    <title>Comment from marc on 2008-04-30</title>
    <author>
        <name>marc</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>great article. My vote for a "print" feature also!</p>]]>
    </content>
    <published>2008-04-30T07:10:16Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016865</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016865" />
    <title>Comment from isa on 2008-04-30</title>
    <author>
        <name>isa</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Helpful Article!<br />
Yes, a print-feature woud be very nice!  </p>]]>
    </content>
    <published>2008-04-30T09:31:13Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016869</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016869" />
    <title>Comment from Chris Brind on 2008-04-30</title>
    <author>
        <name>Chris Brind</name>
        <uri>http://techy.brindy.org.uk</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://techy.brindy.org.uk">
        <![CDATA[<p>Hi again,</p>

<p>wrt, streaming technique...</p>

<p>When I closed the tab in FireFox that I was running your application in and got an error message similar to "Loading never completed", but of course I am using the debug version of the Flash Player so normally you wouldn't see this. =)</p>

<p>Cheers,<br />
Chris</p>]]>
    </content>
    <published>2008-04-30T14:31:19Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2016874</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2016874" />
    <title>Comment from Jun Heider on 2008-04-30</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>@Marc @Isa - thanks for the kind words.  also regarding the print feature I spoke with the editor and he has passed the feature request on to the webmaster, we'll see. :)</p>

<p>@Chris - interesting, that is definitely good to know and keep in mind for anyone that wants to evolve the technique.  thanks for checking out the app and for the the feedback!</p>]]>
    </content>
    <published>2008-04-30T17:46:17Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2017816</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2017816" />
    <title>Comment from Stoyan on 2008-06-13</title>
    <author>
        <name>Stoyan</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>The urls are not opening. :( Can you repost them somewhere else?</p>]]>
    </content>
    <published>2008-06-13T12:51:37Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2017822</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2017822" />
    <title>Comment from Jun Heider on 2008-06-13</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>Hello Stoyan,</p>

<p>My company had undergone a hosting provider migration and as a result all the labs.realeyes.com url needed to be changed.</p>

<p>I made the url changes to this blog entry and the links should all be working now.</p>]]>
    </content>
    <published>2008-06-13T17:58:59Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2018935</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2018935" />
    <title>Comment from Jun Heider on 2008-07-16</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>李哲,</p>

<p>You're welcome!</p>]]>
    </content>
    <published>2008-07-17T06:18:30Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2021002</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2021002" />
    <title>Comment from Jimmy on 2008-08-24</title>
    <author>
        <name>Jimmy</name>
        <uri>http://www.find47.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.find47.com">
        <![CDATA[<p>Great Article, Some really informative points discussed about flex Framework and concept of downloading and minimizing the downloading speed , this is what we read in <a href="http://www.a1certifications.com/VCP-310.html">VCP-310</a> virtual exam to get the things done in time.</p>]]>
    </content>
    <published>2008-08-24T13:27:39Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2050262</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2050262" />
    <title>Comment from Ilan Avigdor on 2009-01-05</title>
    <author>
        <name>Ilan Avigdor</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Your description of what happens in Flex's two frames implies that the user will see the loading progress bar only at the first frame.<br />
As far as I know, the SystemManager (which lives in both frames, not only in the first) advances to frame 2 upon completion of download,<br />
,creates and initialize the application.<br />
INIT_COMPLETE is dispatched when the application has completed initialization. Only then will the progress bar disappear.<br />
Therefore, our goal is not "move on to frame two", but minimize download and application initialization time.<br />
Other than that, Great post !<br />
</p>]]>
    </content>
    <published>2009-01-05T22:35:19Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2050286</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2050286" />
    <title>Comment from Jun Heider on 2009-01-06</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>IIan,</p>

<p>You're right about the SystemManager.  Also, regarding "Therefore, our goal is not "move on to frame two", but minimize download and application initialization time."  Great point.</p>

<p>Thanks for the read!</p>]]>
    </content>
    <published>2009-01-06T09:56:22Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2054172</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2054172" />
    <title>Comment from B.Rotrou on 2009-02-26</title>
    <author>
        <name>B.Rotrou</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>hi<br />
starting, sorry for my bad english.. ;-)</p>

<p>thank for the quality ou your article.</p>

<p>i would like to knows how you reduce the size of your embed font file, it is possible with true type ?</p>

<p>witch way for use only  Character we use for on language .</p>

<p>I dont want take you too much time but maybe can you tell me a place where i can find informations on this subject.</p>

<p>thank a lot </p>

<p><br />
</p>]]>
    </content>
    <published>2009-02-27T05:19:57Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2054211</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2054211" />
    <title>Comment from Jun Heider on 2009-02-27</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>@B.Rotrou</p>

<p>You can take a look at the following LiveDoc to figure out how to limit the character ranges in your embedded fonts:<br />
<a href="http://livedocs.adobe.com/flex/3/html/fonts_07.html#131075">http://livedocs.adobe.com/flex/3/html/fonts_07.html#131075</a></p>

<p>Hope that helps!</p>]]>
    </content>
    <published>2009-02-27T17:13:29Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2054243</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2054243" />
    <title>Comment from B.Rotrou on 2009-02-27</title>
    <author>
        <name>B.Rotrou</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>thank , for your help , i had not  seen this part of doc .<br />
thank </p>]]>
    </content>
    <published>2009-02-28T05:04:25Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2054244</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2054244" />
    <title>Comment from Jun Heider on 2009-02-27</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>@B.Rotrou</p>

<p>You're very welcome.</p>]]>
    </content>
    <published>2009-02-28T05:27:08Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2069225</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2069225" />
    <title>Comment from jessica on 2009-07-27</title>
    <author>
        <name>jessica</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Now that you've had a chance to get your feet wet with Adam and Scott's outstanding InsideRIA series on Learning Flex From Scratch (LFFS) it's time to start really thinking about optimizing your apps <a href="http://www.real-exams.com/000-076.htm">000-076 exam</a>. Many new developer are just happy to build an application that works without thinking of the consequences of poor architecture, inefficient code, and over-zealous eye candy. Although you may be fine for a while, eventually a lack of concern for performance is going to stop you in your tracks. Thanks to Murphy's law, this inevitability will occur most often on very large or important projects, and oftentimes after they're two days away from launch.</p>

<p>ﾠ That being said, the idea behind this series is to arm you with the information you'll need to change the course of your development future and prevent any future crises moments from happening <a href="http://www.real-exams.com/JN0-521.htm">JN0-521 exam</a>.</p>

<p>ﾠ The other idea behind this series is to post-process the resources that are out there, if necessary, revamp them to be current to today's Flex 3 platform, re-affirm them with additional examples and insights, or extend them in an OOP-like fashion to derive some more comprehensive materials.</p>]]>
    </content>
    <published>2009-07-27T18:47:58Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2070186</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2070186" />
    <title>Comment from muffin9129 on 2009-08-11</title>
    <author>
        <name>muffin9129</name>
        <uri>http://productreviewsby.me/</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://productreviewsby.me/">
        <![CDATA[<p>Yeah you cannot copy and paste it either because you lose so much of the formatting, great articles, but need to print it.</p>]]>
    </content>
    <published>2009-08-11T20:29:34Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2070630</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2070630" />
    <title>Comment from Pat.R on 2009-08-18</title>
    <author>
        <name>Pat.R</name>
        <uri>http://www.24-7bookie.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.24-7bookie.com">
        <![CDATA[<p>This is way over my head.  Is there anything a little more basic I could check out?</p>]]>
    </content>
    <published>2009-08-18T23:34:30Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2143412</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2143412" />
    <title>Comment from Jay Paroline on 2009-10-16</title>
    <author>
        <name>Jay Paroline</name>
        <uri>http://wanderr.com/jay</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://wanderr.com/jay">
        <![CDATA[<p>I am finding the articles on this site useful and informative, however every example app that you are linking to gives a 404. Are these available anywhere?</p>]]>
    </content>
    <published>2009-10-17T03:42:04Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.23443-comment:2146559</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.23443" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/04/flex-ria-performance-considera.html#comment-2146559" />
    <title>Comment from Jun Heider on 2009-10-19</title>
    <author>
        <name>Jun Heider</name>
        <uri>http://www.iheartair.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.iheartair.com">
        <![CDATA[<p>@muffin9129</p>

<p>Printing the articles in a pretty format is a good suggestion, thanks!</p>

<p>@Pat</p>

<p>You might want to take a look at the Flex documentation.  It usually presents the material in a way that someone getting started would catch on easily.</p>

<p>@jay</p>

<p>Thanks for pointing this out.  Apparently, something happened at the hosting provider.  I'll take a look into it.</p>]]>
    </content>
    <published>2009-10-19T15:51:30Z</published>
  </entry>

</feed
