<?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>Pathfinder Software &#187; Flex</title> <atom:link href="http://pathfindersoftware.com/category/flex/feed/" rel="self" type="application/rss+xml" /><link>http://pathfindersoftware.com</link> <description>The Fastest Way to Launch Successful Software</description> <lastBuildDate>Thu, 19 Jan 2012 16:31:04 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>A Simple, Table Driven Approach to Multi-Choice Questionnaires &#8211; Part 1</title><link>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/</link> <comments>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/#comments</comments> <pubDate>Thu, 26 Aug 2010 16:50:47 +0000</pubDate> <dc:creator>Justin Ficke</dc:creator> <category><![CDATA[Adobe AIR]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[dynamic]]></category> <category><![CDATA[multi choice]]></category> <category><![CDATA[programming]]></category> <category><![CDATA[questions]]></category> <category><![CDATA[table driven]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5666</guid> <description><![CDATA[photo credit: jasoneppink I&#8217;ve been working on a project recently that involves a desktop AIR application running (mostly) offline with a local SQLite database. Occasionally the app will synch collected data remotely with a central server that will have an administrative and reporting web front end. Various parts of the AIR application involve filling out ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style="float: right"><a title="Do You Need Pants? questionnaire" href="http://www.flickr.com/photos/38102495@N00/3190318778/" target="_blank"><img style="border: 0px initial initial" src="http://pathfindersoftware.com/wp-content/uploads/3190318778_cc2d30861b.jpg" border="0" alt="Do You Need Pants? questionnaire" width="216" height="280" /></a><br /> <a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc69.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="jasoneppink" href="http://www.flickr.com/photos/38102495@N00/3190318778/" target="_blank">jasoneppink</a></div><p>I&#8217;ve been working on a project recently that involves a desktop AIR application running (mostly) offline with a local SQLite database. Occasionally the app will synch collected data remotely with a central server that will have an administrative and reporting web front end. Various parts of the AIR application involve filling out a series of multi-choice questions. Considering that the data will be used by two different systems, and anticipating that questions and answers may want to be updated from the admin portal, it seems a good choice to make things as dynamic as possible based on data from the db. It&#8217;s not a difficult problem to solve, and I&#8217;ve done it a time or two before, but since it&#8217;s fresh in my head and the code is in front of me, I&#8217;m going to use a couple blog posts to document the strategy.  The SQL presented is pseudo code and will not actually execute.</p><p>Part 1 is getting the database structure in place.</p><p><span id="more-5666"></span></p><p>The first two tables are lookup tables used to catorgorize our questions and answers.</p><p><span style="padding-left: 15px">questionTypes (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px"> name text</span><br /> <span style="padding-left: 15px">)</span></p><p><span style="padding-left: 15px">answerTypes (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px"> name text</span><br /> <span style="padding-left: 15px">)</span></p><p>QuestionTypes may hold names of groups of questions,  like &#8216;Screen1&#8242;, &#8216;Screen2&#8242;.<br /> AnswerTypes will hold names of groups of answers. Some entries in my tables are &#8216;Difficulty&#8217;,  &#8217;Frequency, &#8216;Yes/No&#8217;.</p><p>Now we can define our main Questions and Answers tables.<br /> <span style="padding-left: 15px">questions (</span><br /> <span style="padding-left: 30px">pid integer <span>pk</span>,</span><br /> <span style="padding-left: 30px">questionTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">answerTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">sequence <span>int</span>,</span><br /> <span style="padding-left: 30px">text text,</span><br /> <span style="padding-left: 30px">active <span>int</span></span><br /> <span style="padding-left: 15px">)</span></p><p><span style="padding-left: 15px">answers (</span><br /> <span style="padding-left: 30px">pid integer <span>pk</span>,</span><br /> <span style="padding-left: 30px">answerTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">sequence <span>int</span>,</span><br /> <span style="padding-left: 30px">text text,</span><br /> <span style="padding-left: 30px">active <span>int</span></span><br /> <span style="padding-left: 15px">)</span></p><p>Records in the multiChoiceQuestions table hold a relation to a questionType and a answerType. Every question presented together should get the same questionType and the answerType will indicate which groups of answers should be associated with this question. Text is the question text itself and sequence is the order.</p><p>Records in the multiChoiceAnswers table hold a reference to answerType. So for the  answerType &#8216;Difficulty&#8217;, text for records in this table may be &#8216;Easy&#8217;, &#8216;Sorta Easy&#8217;, &#8216;Sorta Hard&#8217;, &#8216;Hard&#8217;, &#8216;Impossible&#8217;.</p><p>At this point we have an easy way to do CRUD on questions, answers, question grouping and answer grouping by just making db updates.</p><p>The active flag becomes important when we start to look at the response tables.</p><p><span style="padding-left: 15px">responses (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px">sessionId int fk,</span><br /> <span style="padding-left: 30px">questionId int fk,<br /> <span style="padding-left: 15px">)</span></span></p><p><span style="padding-left: 15px">responseAnswers (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px">responseId int fk,</span><br /> <span style="padding-left: 30px">answerId int fk<br /> <span style="padding-left: 15px">)</span></span></p><p>We have our main response table which holds a reference to a questionId and sessionId. SessionId  would have references to the user / time/ whatever, and we also  have a join table between responses and answers. This facilitates having more than one answer for a question.</p><p>We can now associate an answer or set of answers with a specific question for a single user at a particular point in time. Our main goal is accomplished from a schema standpoint.</p><p>Back to the active flag for a moment. If a question or answer gets updated or removed, we don&#8217;t want to directly update the current row or else previous responses will hold a reference to a question or answer that was different in the past when the user actually answered it. A new record will be created with a new id, and the old question/answer will be set to inactive. This insures that when reporting on results, we will see what the user actually saw at the time they answered.</p><p>The next part will show code examples of how i keep this data structured in memory, Flex components used to dynamically display the question and events to keep everything in synch.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;title=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" id="wpa2a_2">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Multi-Version Flex Applications</title><link>http://pathfindersoftware.com/2010/08/multi-version-flex-applications/</link> <comments>http://pathfindersoftware.com/2010/08/multi-version-flex-applications/#comments</comments> <pubDate>Wed, 18 Aug 2010 20:17:40 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Enterprise Development]]></category> <category><![CDATA[Multi-Version Applications]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5593</guid> <description><![CDATA[You have a great application on your hands but you can&#8217;t load it up as a part of your brand-spanking-new application because they are not the same version. Do you rewrite the old stuff? Or you downgrade the version of the app you are currently building? Both are very painful, and all you need to ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>You have a great application on your hands but you can&#8217;t load it up as a part of your brand-spanking-new application because they are not the same version.</p><p>Do you rewrite the old stuff? Or you downgrade the version of the app you are currently building? Both are very painful, and all you need to do to avoid the pain is to make the apps talk and coexist. This is a standard problem of any enterprise system, especially the ones with a long lifespan.</p><p>Flex framework addresses this problem with the <a href="http://opensource.adobe.com/wiki/display/flexsdk/Marshall+Plan" target="_blank">Marshall Plan</a> or at least it&#8217;s supposed to. Here at Pathfinder, when we were tasked with a complex multi-versioned  enterprise system that had just such a problem. We gave Marshall Plan a try and in our experience we never got it to work entirely as intended. But we came up with a solution.</p><p><span id="more-5593"></span></p><h3><strong>Background</strong></h3><p>To clue you in on the details, here we are, developing a <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4" target="_blank">Flex 4.1 SDK</a> application so happy to use the new architecture that Adobe engineers came up with when we heard from our client that one (of many) of the modules needs to stay in version<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3" target="_blank"> 3.5</a> because the framework it is using hasn&#8217;t been updated to Flex 4. ¡Ay, caramba!</p><h3>Going from Modules to Sub Applications</h3><p>We know that we can&#8217;t have <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=modular_1.html" target="_blank">Modules</a> in a different version so we switched our logic to use Sub Applications instead. It is convinient to rely on <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/modules/ModuleManager.html?allClasses=1" target="_blank">ModuleManager</a> to handle multiple instances of multiple Modules. We already had an <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=04_OO_Programming_10.html" target="_blank">Interface</a> implemented for communication with Modules and the same one would be used for Sub Applications. These Modules also had a purpose of existing as independent apps so we scratched their wrappers, made them into apps and problem solved. We understood that sub apps are loaded into a different sandbox and that it will have consequences but we felt comfortable that we can work that out &#8211; priority was for the apps to &#8220;talk&#8221;.</p><h3><strong>Loading Sub Applications</strong></h3><p>We made sure that we went through document about <a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=3&amp;ved=0CBsQFjAC&amp;url=http%3A%2F%2Flivedocs.adobe.com%2Fflex%2F3%2Floading_applications.pdf&amp;ei=QwdsTKubJsGC8gae55XDDA&amp;usg=AFQjCNFNNEV18ZCR00JYcbTC9Y5fKdTCVA&amp;sig2=_6X2HIg2-_N3Ay4c8Y2Ciw" target="_blank">loading sub applications</a> before we began. This is a document that you <span style="text-decoration: underline;">can not do without</span> when attempting to go multi-version.</p><p>First problem we encountered is that <a href="http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf619ab-7fe2.html" target="_blank">we were directed</a> to do the following:</p><p>When compiling each of these types of applications, you should include the MarshallingSupport class into the main application and sub-applications. You do this with the <samp style="line-height: 18px; font-family: 'Courier New', Courier, monospace; font-size: 9pt;">includes </samp>compiler argument, as the following example shows:</p><pre>-includes=mx.managers.systemClasses.MarshallingSupport</pre><p>We discovered that inserting this compiler argument in an app prior to version 4 reliably returns the following error:</p><div id="_mcePaste" style="position: absolute; left: -10000px; top: 282px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Description<span style="white-space: pre;"> </span>Resource<span style="white-space: pre;"> </span>Path<span style="white-space: pre;"> </span>Location<span style="white-space: pre;"> </span>Type</div><div id="_mcePaste" style="position: absolute; left: -10000px; top: 282px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Unable to resolve a class for include: mx.managers.systemClasses:MarshallingSupport.<span style="white-space: pre;"> </span>ChildApplication<span style="white-space: pre;"> </span>Unknown<span style="white-space: pre;"> </span>Flex Problem</div><p><em>Unable to resolve a class for include: mx.managers.systemClasses:MarshallingSupport</em></p><p>That puts our sub application out of the game. We said, well let&#8217;s go ahead anyway, maybe they meant just the main app and not the sub too and we proceeded. Reason for such a bold decision is that we didn&#8217;t have any other option.</p><p>Even with that snag, loading a different version sub application turned out easy as pie thanks to <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/SWFLoader.html?allClasses=1" target="_blank">SWFLoader</a> in Flex 4 and its &#8220;loadForCompatibility&#8221; property. It worked on the first try.</p><p>Here is an example in AS3 (Flex 4.1 app):</p><pre>private function loadSubApp():void
{
    //swfLoader is declared outside
    swfLoader = new SWFLoader();
    swfLoader.name = "mySubApp";
    //subAppContainer is a Canvas declared in MXML
    subAppContainer.addChildAt(swfLoader,0);
    swfLoader.trustContent = true;
    swfLoader.loadForCompatibility = true;
    //setting source triggers loading
    swfLoader.source = "subApplication.swf";
    swfLoader.addEventListener(Event.INIT, swfLoaded);
}</pre><h3>Problem of accessing Sub Application</h3><p>This is where all the trouble resides. We loaded the sub app into the main app and now we wanted to make a call to our interface method. We looked at the example from  <a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=3&amp;ved=0CBsQFjAC&amp;url=http%3A%2F%2Flivedocs.adobe.com%2Fflex%2F3%2Floading_applications.pdf&amp;ei=QwdsTKubJsGC8gae55XDDA&amp;usg=AFQjCNFNNEV18ZCR00JYcbTC9Y5fKdTCVA&amp;sig2=_6X2HIg2-_N3Ay4c8Y2Ciw" target="_blank">loading sub applications</a> document on page 24 and found it misleading. Who the heck is &#8220;SubApp2&#8243; and how will my main app know of that class or any dynamically loaded app anyway?</p><p>We also kept seeing this line of code around the net and in the examples:</p><pre>(contentLoader.content as SystemManager).application</pre><p>That&#8217;s how we&#8217;re supposed to access the sub app once it is CREATION_COMPLETED. We tried this with various combination of versions that gave different errors and we tried to cast it to SystemManager in various ways. We always got two possible results: null and an error of type &#8220;SystemManager can&#8217;t convert to SystemManager&#8221;. We understood that there might be a thousand reasons for this happening, starting with our MarshallingSupport <em>include</em> issue but we also understood that the darn thing loaded &#8211; we could see it in the display.</p><p>In the end we concluded that we are not Adobe engineers and we shouldn&#8217;t give that problem any more time. If it doesn&#8217;t work like it&#8217;s documented, we should not spend clients money figuring it out.</p><h3><strong>Access solution</strong></h3><p>We came up with our home brewed solution that is working very well. Solution is based on the fact that the sub application does load and exists in memory &#8211; therefore it must be accessible.</p><p>We decided to try out the good old vanilla approach which involves accessing properties of an typed object as if it was a plain Object. This is generally a bad practice and defeats the purpose of Object Oriented Programing but can sometimes come in quite handy. This is one of such rare instances.</p><p>To continue from the code example above, we listened to the Event.INIT just so we could add FlexEvent.APPLICATION_COMPLETE listener once the SWF is loaded:</p><pre>private function swfLoaded(e:Event):void
{
    swfLoader.removeEventListener(Event.INIT, swfLoaded);
    swfLoader.content.addEventListener(FlexEvent.APPLICATION_COMPLETE, subAppCreationCompleteHandler );
}</pre><p>Once that happens we can acces our sub applications method using vanilla approach:</p><pre>private function subAppCreationCompleteHandler(e:Event):void
{
    swfLoader.content.removeEventListener(FlexEvent.APPLICATION_COMPLETE, subAppCreationCompleteHandler );
    //subApplication is declared outside
    subApplication = e.currentTarget as Object;
    //Flex apps have an "application" object that represent the application instance
    if( subApplication.hasOwnProperty("application") )
    {
        if (subApplication.application.hasOwnProperty("methodWeWantToCall") )
        {
            var f:Function = subApplication.application.methodWeWantToCall;
            //Yes, we have to know upfront what are the parameters of the function
            //but that is why we have the interface for
            f( true );
        }
        else
        {
            Alert.show("Sub App doesn't have 'methodWeWantToCall'");
        }
    }
    else
    {
        Alert.show("Loaded Sub App is not a Flex App");
    }
}</pre><h3>Method Parameter Gotcha</h3><p>We have typed parameters that we were passing to the interface method  into a custom value object back when we were working with Modules and packaged it in a SWC that everybody involved in the system was using.</p><p>After trying to pass the same custom VO to the sub app we started getting errors of the kind: &#8220;MyValueObject can&#8217;t convert to MyValueObject&#8230;&#8221;. We remembered that we read somewhere that we can only pass primitive objects to sub apps and we converted our VO to an XML that luckily is a primitive object in AS3. We also put the XML schema in the comments of our SWC to make sure there is little ambiguity. To add to that, you can find in documentation that any event dispatched by sub application can&#8217;t be casted but has to be retyped as well. Optionally you can access its parameters vanilla style too.</p><h3>Home Brewed Cheat Sheet (main app: 4.1, sub app: 3.2+)</h3><p>- You don&#8217;t need <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">-includes=mx.managers.systemClasses.MarshallingSupport</span> anywhere.<br /> - Use <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">loadForCompatibility</span> and <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">trustContent</span> properties of <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/SWFLoader.html?allClasses=1" target="_blank">SWFLoader</a>.<br /> - Make sure to listen to FlexEvent.CREATION_COMPLETE event on the sub app that you can only attach <em>once</em> the SWF has finished loading.<br /> - Using <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">hasOwnProperty </span>method, check if <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">application</span> is available on your sub app and then check is your method available in the <span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; ">application.</span><br /> - Create a new Function and pass it the reference to the sub apps method.<br /> - Fire at will.</p><p><span style="font-family: monospace; line-height: 18px; font-size: 12px; color: #333333; "> </span></p><h3>Conclusion</h3><p>Creating a multi-versioned application was an exhausting experience. We were also very mad at Adobe at times for advertising multi-versioned apps while having a disarray in documentation. Body of knowledge for this topic is huge and variability of results is aggravating.</p><p>In the end the system works and we are satisfied with it&#8217;s stability. We are not crazy about vanilla access of objects or passing of primitives but we feel our assumptions are stable and we have enough error checks. Having said that and with bad feelings behind us, we are grateful to Adobe and <a href="http://blogs.adobe.com/aharui/" target="_blank">Alex Harui</a> for making multi-versioning even remotely possible. I can only imagine the multitude of <a href="http://opensource.adobe.com/wiki/display/flexsdk/Marshall+Plan" target="_blank">considerations</a> they had to make to make this an option. The philosophy behind their solution is a good study of the problem of managing evolving systems.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;linkname=Multi-Version%20Flex%20Applications" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fmulti-version-flex-applications%2F&amp;title=Multi-Version%20Flex%20Applications" id="wpa2a_4">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/08/multi-version-flex-applications/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>HTML5 vs Flex &#8211; Drawing Curves</title><link>http://pathfindersoftware.com/2010/07/html5-flex-drawing-curves/</link> <comments>http://pathfindersoftware.com/2010/07/html5-flex-drawing-curves/#comments</comments> <pubDate>Tue, 06 Jul 2010 17:30:09 +0000</pubDate> <dc:creator>Dietrich Kappe</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Benchmark]]></category> <category><![CDATA[Canvas]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[HTML5]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5243</guid> <description><![CDATA[photo credit: Amateugrapher We recently finished a first release of a data visualization application. The application was written in Flex and needed to draw curves with up to 250,000 points total between them. To do this in less than a half a second took quite a bit of optimization, to the point where we could ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style="float:right;padding:10px"><a title="Interesting curves" href="http://www.flickr.com/photos/33647360@N02/4745174764/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/4745174764_eb0957296f_m.jpg" border="0" alt="Interesting curves" /></a><br /> <small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc60.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Amateugrapher" href="http://www.flickr.com/photos/33647360@N02/4745174764/" target="_blank">Amateugrapher</a></small></div><p>We recently finished a first release of a data visualization application. The application was written in Flex and needed to draw curves with up to 250,000 points total between them. To do this in less than a half a second took quite a bit of optimization, to the point where we could have written a 3D real-time video game with our rendering code.</p><p>I was curious to see what the performance would be on other browsers with HTML5 Canvas. I put together a simple GWT program to run each browser through it&#8217;s paces. The target on the Macbook Pro I was using: 400 milliseconds, which is what the Flex app could do for 250,000 points. The results?</p><ul><li>Opera 10.53 &#8211; 160 milliseconds.</li><li>Safari 5.0 &#8211; 180 milliseconds.</li><li>Firefox 3.6.4 &#8211; 180 milliseconds.</li><li>Chrome 5.0 &#8211; 200 milliseconds.</li><li>iPad &#8211; 2500 milliseconds.</li><li>IE ? &#8211; Blech. Don&#8217;t ask. Minutes. It likely has something to do with the GWT implementation.</li></ul><p>For a long time if you suggested using web technologies for complex graphical operations, you would have been laughed out of the room. When the tools and libraries catch up to Flex/Flash, however, these days nobody will be chuckling at HTML5.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;linkname=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F07%2Fhtml5-flex-drawing-curves%2F&amp;title=HTML5%20vs%20Flex%20%26%238211%3B%20Drawing%20Curves" id="wpa2a_6">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/07/html5-flex-drawing-curves/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What does Google Chrome do for Mac based Flex Developers?</title><link>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/</link> <comments>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/#comments</comments> <pubDate>Mon, 28 Dec 2009 17:30:13 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4532</guid> <description><![CDATA[Do you know every detail in the Flex framework by heart? Do you also know all the other libraries that you use by heart? Well I don&#8217;t and I often have to reference some online resource while developing. For instance, I always have Action Script Language Reference, Wikipedia, some library API site(s), Gmail and a dozen other ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>Do you know every detail in the Flex framework by heart? Do you also know all the other libraries that you use by heart? Well I don&#8217;t and I often have to reference some online resource <em>while </em>developing.</p><p>For instance, I always have Action Script Language Reference, Wikipedia, some library API site(s), Gmail and a dozen other ones open + the debug version of the app at hand.</p><p>So what used to happen when you but a breakpoint in Flex Builder with all these tabs? They would be unavailable and any process happening inside of them could not be relied on. Since not all code runs well on first attempt, if the app crashed while testing ( think 3D, data intensive apps, etc.) the browser and all the tabs went down with it.</p><p>My solution so far was to use Firefox as a development browser and Safari ( since I&#8217;m Mac based ) as a browser for references and everything else. For crashing resolution, Firefox has a nice &#8220;Restore&#8221; option but it&#8217;s not fun waiting for 15 tabs to reload.</p><p>So Google Chrome recently came out for Mac. It didn&#8217;t impress me on Vista so I didn&#8217;t care much. I guess I was in between of curious and bored so I decided to give it a spin.</p><p>What a pleasant surprise to see every tab running in a different process. My workflow feels so much better now that I&#8217;m not afraid that a bad line of code is going to take down my whole browser.</p><p>I&#8217;ve heard that IE8 also runs tabs as different processes but I&#8217;m not crazy about returning to development on Windows. I did try out Chrome on Windows 7 as a result of the Mac test and all the issues I&#8217;ve seen the first time around have been addressed. Kudos to Chrome development team.</p><p>Let&#8217;s not forget to mention all the features that are missing on Google Chrome for Mac, primarily the lack of Bookmark Management, but Google Bookmarks or any online bookmarking service will do for now.</p><p>I can not wait to see more development being done on Google Chrome for Mac and it getting out of beta. I will not uninstall Firefox anytime soon but as a Flex developer I give Google Chrome for Mac high scores for beta.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;title=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" id="wpa2a_8">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Flex Widget for Graphing Elections and Debt</title><link>http://pathfindersoftware.com/2009/10/flex-widget-graphing-elections-debt/</link> <comments>http://pathfindersoftware.com/2009/10/flex-widget-graphing-elections-debt/#comments</comments> <pubDate>Tue, 06 Oct 2009 21:49:35 +0000</pubDate> <dc:creator>Bernhard Kappe</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Pathfinder News]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[blog widgets]]></category> <category><![CDATA[data visualization]]></category> <category><![CDATA[elections]]></category> <category><![CDATA[flex widgets]]></category> <category><![CDATA[graphing]]></category> <category><![CDATA[mapping]]></category> <category><![CDATA[Widgets]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4203</guid> <description><![CDATA[[SWF]http://www.pathf.com/sites/pfd/flash/zeitlupe/Zeitlupe.swf, 500, 475, dataLocation=http://www.pathf.com/sites/pfd/flash/zeitlupe/[/SWF] We&#8217;ve been building a lot of mapping/GIS data visualization applications over the last few months, mostly using flex with various back end services (ArcGIS, google and yahoo maps, open source mapping frameworks.) One of the more fun little projects was putting together this flex widget for displaying maps and graphical data ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>[SWF]http://www.pathf.com/sites/pfd/flash/zeitlupe/Zeitlupe.swf, 500, 475, dataLocation=http://www.pathf.com/sites/pfd/flash/zeitlupe/[/SWF]<br /></p><p>We&#8217;ve been building a lot of <a href="http://www.pathf.com/blogs/tag/mapping/">mapping/GIS</a> data visualization applications over the last few months, mostly using flex with various back end services (ArcGIS, google and yahoo maps, open source mapping frameworks.)  One of the more fun little projects was putting together this flex widget for displaying maps and graphical data together on a timeline.  It&#8217;s meant to be distributable so that anyone with a blog can display it.  We put it together using presidential election data and national debt, not because we thought the correlation was particularly significant, but because the data was available going back a long time.   The widget is pretty flexible; it can go against a local data source or a web service, and we can easily modify it to show different kinds of data.  We&#8217;ll be coming out with a few more of these over the next few months, hopefully with some more <a href="http://www.pathf.com/blogs/tag/papervision3d/">3D maps</a>, drill down on geographic level, as well as more charting and other visualizations. If you&#8217;d like to use this one, or have ideas for other data sets and visualizations you&#8217;d like to see, let us know.</p><p><p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;linkname=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F10%2Fflex-widget-graphing-elections-debt%2F&amp;title=Flex%20Widget%20for%20Graphing%20Elections%20and%20Debt" id="wpa2a_10">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/10/flex-widget-graphing-elections-debt/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Accessing the Icon for a Button Programmatically in Flex 3</title><link>http://pathfindersoftware.com/2009/09/accessing_the_icon_for_a_button_programmatically_in_flex_3/</link> <comments>http://pathfindersoftware.com/2009/09/accessing_the_icon_for_a_button_programmatically_in_flex_3/#comments</comments> <pubDate>Wed, 16 Sep 2009 17:01:12 +0000</pubDate> <dc:creator>Anthony Caliendo</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[flex 3]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4024</guid> <description><![CDATA[The other day, I was trying to get the icon for a button in flex programmatically for a FlexUnit test. The code I was testing set the icon of a button using setStyle('icon', ICON). I attempted the obvious button.getStyle('icon') in the test, but was surprised that this always returned null. A little bit of digging ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div class="right"> <img src="http://pathfindersoftware.com/wp-content/uploads/flex_logo1.png" alt="flex_logo" title="flex_logo" width="128" height="121" class="alignnone size-full wp-image-4026" /></div><p>The other day, I was trying to get the icon for a button in flex programmatically for a FlexUnit test.   The code I was testing set the icon of a button using <code>setStyle('icon', ICON)</code>.  I attempted the obvious <code>button.getStyle('icon')</code> in the test, but was surprised that this always returned <code>null</code>.</p><p>A little bit of digging revealed that the I needed to go through the style declaration for the button.  When changing my test to assert on <strong><code>button.styleDeclaration.getStyle('icon')</code></strong>, I was able to successfully access the icon.</p><p>I found this a bit non-intuitive, but fortunately it only involved some investigation and minimal code changes.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;linkname=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F09%2Faccessing_the_icon_for_a_button_programmatically_in_flex_3%2F&amp;title=Accessing%20the%20Icon%20for%20a%20Button%20Programmatically%20in%20Flex%203" id="wpa2a_12">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/09/accessing_the_icon_for_a_button_programmatically_in_flex_3/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Hedge Fund Analytics in Flex</title><link>http://pathfindersoftware.com/2009/06/hedge-fund-analytics-in-flex/</link> <comments>http://pathfindersoftware.com/2009/06/hedge-fund-analytics-in-flex/#comments</comments> <pubDate>Mon, 01 Jun 2009 15:37:17 +0000</pubDate> <dc:creator>Bernhard Kappe</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[data visualization]]></category> <category><![CDATA[ria]]></category> <category><![CDATA[rich internet applications]]></category> <category><![CDATA[visual analytics]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=2562</guid> <description><![CDATA[Please install Flash to see this video player! We just published a case study on a Hedge Fund Analytics application developed in Flex. It&#8217;s an extensible Flex based platform for real time analysis of hedge fund performance data, with dynamically updating charts, graphs and sophisticated filters for cumulative performance, return distribution, alpha, beta and correlations, ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p><script type="text/javascript" src="/sites/pfd/js/swfobject.js"></script></p><div id="player">Please install Flash to see this video player!</div><p><script type="text/javascript">/*<![CDATA[*/var so=new SWFObject('/sites/pfd/flash/player.swf','mpl','470','320','9');so.addParam('allowscriptaccess','always');so.addParam('allowfullscreen','true');so.addParam('flashvars','&#038;file=http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov&#038;image=http://www.pathf.com/sites/pfd/img/cases/hedgefundvideo.png');so.write('player');so.write('player');/*]]>*/</script></p><p>We just published a case study on a Hedge Fund Analytics application developed in Flex.   It&#8217;s an extensible Flex based platform for real time analysis of hedge fund performance data, with dynamically updating charts, graphs and sophisticated filters for cumulative performance, return distribution, alpha, beta and correlations, commissions and fees, credit and sector exposure.</p><p>The system is designed as a modular platform which can consume data services from multiple sources, and can integrate multiple custom components. Custom components were designed to conform to a standard API. Components expose standard flex component properties and events so that properties and method references could be passed. This allowed individual dashboard applications to be built, fed data and customized at run time. Take a look at a <a href="http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov">video demo</a> or read the longer <a href="http://www.pathf.com/showcase/success-stories/hedge-fund-analytics/">case study</a> on the <a href="http://www.pathf.com/">Pathfinder site</a>.</p><p><a href="http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov">Hedge Fund Analytics</a><p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;linkname=Hedge%20Fund%20Analytics%20in%20Flex" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F06%2Fhedge-fund-analytics-in-flex%2F&amp;title=Hedge%20Fund%20Analytics%20in%20Flex" id="wpa2a_14">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/06/hedge-fund-analytics-in-flex/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <enclosure url="http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov" length="40258403" type="video/quicktime" /> <enclosure url="http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov" length="40258403" type="video/quicktime" /> <enclosure url="http://media1.www.pathfinder-development.com/assets/Spectrum/Spectrum.mov" length="40258403" type="video/quicktime" /> </item> <item><title>Flare vs. Axiis</title><link>http://pathfindersoftware.com/2009/05/flare-vs-axiis/</link> <comments>http://pathfindersoftware.com/2009/05/flare-vs-axiis/#comments</comments> <pubDate>Thu, 28 May 2009 16:37:53 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[axiis]]></category> <category><![CDATA[data visualization]]></category> <category><![CDATA[Flare]]></category> <category><![CDATA[Flex, Flash and Air]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=2524</guid> <description><![CDATA[After a long time of searching for the right data visualization framework for Flash Platform, some time ago I&#8217;ve put my money on Flare which is based on a Java framework called Prefuse. I have been very happy with it and haven&#8217;t looked back until a new framework of same purpose crossed my way &#8211; ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p><img class="alignleft size-full wp-image-2525" title="flare-vs-axiss" src="http://pathfindersoftware.com/wp-content/uploads/flare-vs-axiss1.png" alt="flare-vs-axiss" width="100%" />After a long time of searching for the right data visualization framework for Flash Platform, some time ago I&#8217;ve put my money on <a href="http://flare.prefuse.org/" target="_blank">Flare</a> which is based on a Java framework called <a href="http://www.prefuse.org/" target="_blank">Prefuse</a>. I have been very happy with it and haven&#8217;t looked back until a new framework of same purpose crossed my way &#8211; <a href="http://www.axiis.org/" target="_blank">Axiis</a>.</p><p>Before anything else said, Axiis is a brand new framework so I have to give it some credit if all the bells and whistles are not there. What intrigued me about it in the first place is that Axiis is heavily relying on <a href="http://www.degrafa.org/" target="_blank">Degrafa</a>, a well proven declarative graphics framework that I have a lot of good experience with.</p><p>After looking at Axiis examples, here are my first impressions of how it stands against Flare.</p><p><span id="more-2524"></span></p><p>Firstly, they are both open source. Needless to say, this goes a long way.</p><p>Axiis, unlike Flare, is solely Flex based because of its reliance on Degrafa. Not that I&#8217;m crazy about doing data visualization projects in Flash, but it is a good feeling to have options.</p><p>Axiis code looks better structured and organized &#8211; at a first glance. While it is a little bit tricky to organize Flare code, I have made it a standard to use it in conjuction with <a href="http://puremvc.org/" target="_blank">PureMVC</a>, (my favorite MVC framework) and that setup makes it much easier to deal with Flare code. Code in Flare examples looked scary at best when I saw it the first time. Axiis code in the examples they provided is mostly neat MXML, but there is only so much of MXML per component that I&#8217;m willing to look at. My guess is that combining it with an MVC framework and AS3 would be a nice thing for me to try and see how that workflow looks like.</p><p>Flare was not quick to jump into in my experience, but well worth the trouble. Jumping into Axiis with previous knowledge of Degrafa took a really short time. Although there is example code for Flare, I didn&#8217;t learn a lot from it because of the very different coding style from what I generally do. I learned most about it from forums, fidgeting with classes and somewhat reading through the source code. Axiis example code is clear as day and a ready source for your first Axiis project.</p><p>What rocked my world about Flare to begin with were the layout transitions and how well they performed with larger data sets. I haven&#8217;t seen that in Axiis examples. I&#8217;m not sure if I should care about transitions that much but I think that it is not to ignore when it comes to interactive data visualizations. Performance testing is the first thing I&#8217;m going to pay attention to when it comes to Axiis.</p><p>So at the end I will do a prototype in Axiis to see how is it to work with and how well it performs. It definitely seems very promising but I&#8217;m not going to drop Flare anytime soon.</p><p>What will be hard to top about Flare is that I keep finding new ways to do things with it and new wonderful expressions made possible with its endless flexibility.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;linkname=Flare%20vs.%20Axiis" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fflare-vs-axiis%2F&amp;title=Flare%20vs.%20Axiis" id="wpa2a_16">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/05/flare-vs-axiis/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Summer Software Development Internship</title><link>http://pathfindersoftware.com/2009/05/summer-software-development/</link> <comments>http://pathfindersoftware.com/2009/05/summer-software-development/#comments</comments> <pubDate>Tue, 12 May 2009 18:36:07 +0000</pubDate> <dc:creator>Dietrich Kappe</dc:creator> <category><![CDATA[.NET]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Pathfinder News]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Ruby on Rails]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[Internship]]></category> <category><![CDATA[Pathfinder Development]]></category> <category><![CDATA[Software Development Best Practices]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=2409</guid> <description><![CDATA[photo credit: Paul L. Nettles We&#8217;re starting a software development summer internship in our Chicago office this year. If you&#8217;re a college junior, senior or recent graduate who want to learn the agile/OO development ropes while developing really cool products and services and earning $20/hr per hour (you should pay for the privilege, right?), give ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style="float:right;padding:10px"><a title="747" href="http://www.flickr.com/photos/28451803@N00/3270262773/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/3270262773_f3f3f96052_m.jpg" border="0" alt="747" /></a><br /> <small><a title="Attribution-NoDerivs License" href="http://creativecommons.org/licenses/by-nd/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc9.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Paul L. Nettles" href="http://www.flickr.com/photos/28451803@N00/3270262773/" target="_blank">Paul L. Nettles</a></small></div><p>We&#8217;re starting a software development summer internship in our Chicago office this year. If you&#8217;re a college junior, senior or recent graduate who want to learn the agile/OO development ropes while developing really cool products and services and earning $20/hr per hour (you should pay for the privilege, right?), give the internship posting a look <a href="http://careers.pathf.com/index.php?m=careers&amp;p=showJob&amp;ID=39">here</a>.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;linkname=Summer%20Software%20Development%20Internship" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fsummer-software-development%2F&amp;title=Summer%20Software%20Development%20Internship" id="wpa2a_18">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/05/summer-software-development/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pathfinder Launches Beer Hunter,  A New Flex + Ruby RIA</title><link>http://pathfindersoftware.com/2009/05/pathfinder-launches-beer-hunter-a-new-flex-ruby-ria/</link> <comments>http://pathfindersoftware.com/2009/05/pathfinder-launches-beer-hunter-a-new-flex-ruby-ria/#comments</comments> <pubDate>Mon, 04 May 2009 12:51:23 +0000</pubDate> <dc:creator>Bernhard Kappe</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Pathfinder News]]></category> <category><![CDATA[Rich Internet Apps]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[beer]]></category> <category><![CDATA[mapping]]></category> <category><![CDATA[rich internet applicaiton]]></category> <category><![CDATA[Ruby on Rails]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=1224</guid> <description><![CDATA[We just launched a new rich internet application for Destinationbeer.com, called Beer Hunter.  It was written in Flex and Ruby on Rails and features mapping and 150 beers from around the world.  We think it&#8217;s pretty cool, so check it out, and let us know what you think.  One of the things I really like ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p><a href="http://pathfindersoftware.com/wp-content/uploads/casestudiesbeerhunterimage1.jpg"><img class="alignnone size-thumbnail wp-image-1225" style="float:right;padding:10px" title="Beer Hunter Case Study" src="http://pathfindersoftware.com/wp-content/uploads/casestudiesbeerhunterimage1.jpg" alt="Beer Hunter Flex RIA" width="148" height="150" /></a>We just launched a new rich internet application for <a title="Destinationbeer.com" href="http://www.destinationbeer.com" target="_blank">Destinationbeer.com</a>, called <a title="Beer Hunter" href="http://destinationbeer.com/beer_hunter/" target="_blank">Beer Hunter</a>.  It was written in Flex and Ruby on Rails and features mapping and 150 beers from around the world.  We think it&#8217;s pretty cool, so check it out, and let us know what you think.  One of the things I really like about it is that the design pattern can be applied anywhere you&#8217;re filtering products geographically and on attributes.  Coffee? Wine? Jewelry? Chocolate? Travel Books? I particularly like the way the beer list visually sorts when you change a filter and the zoom interactions on the map.</p><p>There&#8217;s more information in the <a title="case study" href="http://www.pathf.com/showcase/success-stories/beer-hunter-flex-ruby/" target="_self">case study</a> on the Pathfinder web site, <a title="Sasha" href="http://www.pathf.com/blogs/author/sasha-dzeletovic/" target="_self">Sasha</a> has written a related post on <a title="RubyAMF and Flex" href="http://www.pathf.com/blogs/2008/09/simphony-of-ruby-on-rails-and-flex-through-rubyamf/" target="_self">RubyAMF and Flex</a> from the Flex perspective , and <a title="Justin" href="http://www.pathf.com/blogs/author/jficke/" target="_self">Justin</a> has written one on <a title="Rails, AMF and Flex" href="http://www.pathf.com/blogs/2008/11/rails-amf-and-flex/" target="_self">Rails, AMF and Flex</a> from the Rails perspective.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;linkname=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F05%2Fpathfinder-launches-beer-hunter-a-new-flex-ruby-ria%2F&amp;title=Pathfinder%20Launches%20Beer%20Hunter%2C%20%20A%20New%20Flex%20%2B%20Ruby%20RIA" id="wpa2a_20">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/05/pathfinder-launches-beer-hunter-a-new-flex-ruby-ria/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using memcached

Served from: pathfindersoftware.com @ 2012-02-09 03:13:20 -->
