<?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"
	>

<channel>
	<title>Pathfinder Development &#187; TechDev</title>
	<atom:link href="http://www.pathf.com/blogs/category/techdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pathf.com/blogs</link>
	<description>Running commentary about agile development, user experience design and Ajax.</description>
	<pubDate>Wed, 19 Nov 2008 15:24:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Testing various roles in ruby on rails</title>
		<link>http://www.pathf.com/blogs/2008/11/testing-various-roles-in-ruby-on-rails/</link>
		<comments>http://www.pathf.com/blogs/2008/11/testing-various-roles-in-ruby-on-rails/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 17:12:54 +0000</pubDate>
		<dc:creator>Jason Sendelbach</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[Ruby on Rails testing role]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1250</guid>
		<description><![CDATA[On pretty much every project I've ever been on, there have always been various roles in the system that experience different behavior.  Admins can generally do everything, end users get the least functionality, and there are always a few in between that vary based on requirements.  Unfortunately, all too often all possible scenarios [...]]]></description>
			<content:encoded><![CDATA[<p>On pretty much every project I've ever been on, there have always been various roles in the system that experience different behavior.  Admins can generally do everything, end users get the least functionality, and there are always a few in between that vary based on requirements.  Unfortunately, all too often all possible scenarios aren't tested, or they test only positive cases for each role.</p>
<p>In my current Ruby on Rails project, I am checking all roles and ensuring those who should be able to do certain things are able to, and those that shouldn't are unable to.  What I have found, is that usually, the Admin and one other role can usually do a set of things, and every other role can't.  So, I find that I set up my tests the following manner:</p>
<pre class="ruby"><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'root'</span>,<span style="color:#996600;">'hr'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |role_name|
    context <span style="color:#996600;">&quot;logged in as #{role_name}&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      setup <span style="color:#9966CC; font-weight:bold;">do</span>
        login_as_user<span style="color:#006600; font-weight:bold;">&#40;</span>role_name<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
      should <span style="color:#996600;">'index'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
         get <span style="color:#ff3333; font-weight:bold;">:index</span>
         assert_response <span style="color:#ff3333; font-weight:bold;">:success</span>
         <span style="color:#008000; font-style:italic;"># other assertions</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p><span id="more-1250"></span><br />
This is for the roles who cannot do the actions:</p>
<pre class="ruby"><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'user'</span>,<span style="color:#996600;">'manager'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |role_name|
    context <span style="color:#996600;">&quot;logged in as #{role_name}&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      setup <span style="color:#9966CC; font-weight:bold;">do</span>
        login_as_user<span style="color:#006600; font-weight:bold;">&#40;</span>role_name<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
      should <span style="color:#996600;">'index'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
         get <span style="color:#ff3333; font-weight:bold;">:index</span>
         assert_redirected_to root_url
         <span style="color:#008000; font-style:italic;"># or logged out - or whatever you do with a violation of this type</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre>
<p>You can now see that we have automated tests that assert the expected functionality for all roles in the system.  As a developer who deploys and supports applications in production, it is very reassuring to me that our code has this level of tests.  I know that when I deploy, there won't be that many bugs, and I don't have to fear production deployments; just schedule them and perform them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/11/testing-various-roles-in-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Skinning Flex with Illustrator CS3</title>
		<link>http://www.pathf.com/blogs/2008/11/skinning-flex-with-illustrator-cs3/</link>
		<comments>http://www.pathf.com/blogs/2008/11/skinning-flex-with-illustrator-cs3/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 15:46:06 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[flex css]]></category>

		<category><![CDATA[flex skins]]></category>

		<category><![CDATA[illustrator cs3]]></category>

		<category><![CDATA[importing graphics to flex]]></category>

		<category><![CDATA[skins]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1249</guid>
		<description><![CDATA[There is many ways to skin Flex applications. To name some that I've used: Flex CSS, Programmatic AS3, Flash, Degrafa, Photoshop (JPG's, GIF's and PNG's) and Illustrator.
What usually needs to happen on a project is a combination of some or all of the above. Not having a single point of reference for skinning creates quite [...]]]></description>
			<content:encoded><![CDATA[<p>There is many ways to skin Flex applications. To name some that I've used: Flex CSS, Programmatic AS3, Flash, Degrafa, Photoshop (JPG's, GIF's and PNG's) and Illustrator.</p>
<p>What usually needs to happen on a project is a combination of some or all of the above. Not having a single point of reference for skinning creates quite a bottleneck.</p>
<p>From different approaches, two surfaced as having the best pipeline: Illustrator CS3 and Degrafa. If we are talking speed and ease of graphic design, I would now default to Illustrator CS3. For advanced skinning and interactions Degrafa holds first place.</p>
<p><span id="more-1249"></span></p>
<p>Speed, of course, is a major factor. A lot of projects do not need advanced skinning, but just a step forward from useful but many times seen default Flex skins. By that I mean applying the brand guidelines of the company or product/service.</p>
<p>After a long time I gave Illustrator another chance and the CS3 version proved remarkably useful. Illustrator with Flex CSS that is.</p>
<p>My goal was to create the fore mentioned single point of reference for skins and I did it in Flex CSS. Good people of Adobe even made a script for Illustrator to speed things up which I gladly use. Process works fine without the script too (maybe even faster, but you have more skins to track yourself), and you can find a tutorial for that version <a href="http://www.adobe.com/devnet/flex/articles/flex_skins_07.html" target="_blank">here</a>.</p>
<p>For the streamlined version you can find Illustrator scripts <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">here</a> (together with scripts for other apps) and you need to have a free Adobe account to download.</p>
<p><b>STEPS:</b></p>
<p><b>1.</b> Download the Illustrator scripts from <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">here</a>. You can find the installation instructions in the downloaded archive.<a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank"><br />
</a></p>
<p><b>2.</b> Create your skins for various states of the component in Illustrator as you would do usually using all the wonderful features of Illustrator.</p>
<p><b>3.</b> Convert your skins to Symbols.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>a.</b> Open the Symbols panel in Illustrator (Window -&gt; Symbols).</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>b.</b> Select a particular skin graphic that you have made.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>c.</b> Click the "New Symbol" icon in the bottom right corner of the Symbol panel.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>d.</b> Naming the symbol is important. For example, if you want to automate creating an "up" state skin for a button, you would name it myButton_upSkin. For "down" state you would select an appropriate graphic to create a symbol from and name it myButton_downSkin. So for every state you want, you would add an underscore and state name after the symbol name that needs to be camelCase.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>e.</b> I would highly recommend setting the "Flash Registration" point to upper left corner to be in sync with standard flex registration point.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>f.</b> If you want to have the symbol to scale using 9-slice approach, check the box labeled "Enable guides for 9-slice scaling". You can later go back to your symbol and adjust the slices position.</p>
<p><b>4.</b> Now that you have made the symbol (and adjusted slicing if need be), you can export it by choosing:</p>
<p>File -&gt; Scripts -&gt; Flex Skin -&gt; Export Flex Skin.</p>
<p>A SWF file will be created by name of your choice.</p>
<p><b>5.</b> Go to Flex Builder and choose:</p>
<p>File -&gt; Import -&gt; Skin Artwork</p>
<p><b>6.</b> Set up parameters in the dialog box like this:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>a.</b> Select "SWC of SWF file" and point to the file you've just created in Illustrator.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>b.</b> Select the folder you want to import it in.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>c.</b> Click "Next".</p>
<p><b>7.</b> At this window you will be prompted to select the skins that you want to import. No reason not to "Check All" here. For the selected skins you will now see the states of the particular skin in the "Skin Part" Column.</p>
<p><b>8.</b> Click "Finish" and a Flex CSS file will be made with all the skins appropriately declared.</p>
<p><b>9.</b> All you have to do now is to apply the name of a particular skin to your components Style name.</p>
<p>This skining approach has proven very fast and error free for me.</p>
<p>I'm enjoying the 9-slice scaling, vector graphic crisp scaling and mouse interaction only with visible pixels.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/11/skinning-flex-with-illustrator-cs3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails, AMF and Flex</title>
		<link>http://www.pathf.com/blogs/2008/11/rubyamf-and-flex/</link>
		<comments>http://www.pathf.com/blogs/2008/11/rubyamf-and-flex/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 23:17:20 +0000</pubDate>
		<dc:creator>Justin Ficke</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[amf]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rubyamf]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1235</guid>
		<description><![CDATA[I've just completed a project where I was the Rails developer for a site that was integrating a Flex application that needed to pull from a database. A primary consideration is how to transport the data.  Rails supports xml and json natively, and is very easy to set up by adding a single line to [...]]]></description>
			<content:encoded><![CDATA[<p>I've just completed a project where I was the Rails developer for a site that was integrating a Flex application that needed to pull from a database. A primary consideration is how to transport the data.  Rails supports xml and json natively, and is very easy to set up by adding a single line to a controller's respond_to method. Sasha, the Flex developer on the project, suggested that we go with AMF if possible as it's native to Flex and is deserialized straight into custom typed objects.</p>
<p>After reading a bit about some <a href="http://www.insideria.com/2008/09/amf-vs-json-vs-xml.html" target="_blank">performance </a>considerations it looks like AMF and JSON are going to get roughly similar performance in most cases, so it becomes a matter of ease of development and taste.  Sasha definitely preferred working with AMF, so i started checking out Rails implementations.</p>
<p><span id="more-1235"></span></p>
<p>The two main choices available are RubyAMF and WebORB for Rails. I had been working through Peter Armstrong's excellent book, <a href="http://www.flexiblerails.com" target="_blank">Flexible Rails</a>, in which he has a chapter about Rails and AMF support.  Based on his recommendation, and the current activity level of the two implementations, I chose to go with RubyAMF.  Peter makes it plain that his opinion is skewed as he is a active contributor to the RubyAMF code base, but argues that the reason he is a contributor is because it's the better implementation.   Good enough for me to give it the first shot.</p>
<p>It turns out that it was a excellent choice. I was able to plug in and configure RubyAMF, and build a basic Flex app to test it in a couple of hours. After installing the RubyAMF plugin,  the main points of interest in the ruby code.</p>
<blockquote><p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/classmapping1.gif"><img class="alignnone size-full wp-image-1237" src="http://www.pathf.com/blogs/wp-content/uploads/2008/11/classmapping1.gif" alt="class mapping in rubyamf_config.rb" width="513" height="131" /></a><br />
class mapping in rubyamf_config.rb</p></blockquote>
<blockquote><p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/respond_to1.gif"><img class="alignnone size-full wp-image-1240" src="http://www.pathf.com/blogs/wp-content/uploads/2008/11/respond_to1.gif" alt="" width="500" height="85" /></a><br />
index method of beers controller</p></blockquote>
<blockquote><p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/respond_to_show.png"><img class="alignnone size-full wp-image-1245" src="http://www.pathf.com/blogs/wp-content/uploads/2008/11/respond_to_show.png" alt="" width="502" height="76" /></a><br />
show method of beers controller</p></blockquote>
<p>The thing I appreciated most about the setup was the ability to map seperate attribute lists.   The Flex app does an inital call to the index method of the Beers controller, but with a subset of attributes.  All of the fields pulled when the app loaded where numeric or short strings.  The Beer model contains two large text fields, but we made the decision to retrieve those when they were needed in a seperate call. The :show class_mapping_scope was used in the show method of the controller.  The end result was that we could keep the size of the record set down when we where asking for hundreds of objects, and just get the larger text fields when we were asking for one record, avoiding any scenerio where we would have to transmit large text fields for a large number of records.</p>
<p>That is really about all that's needed on the rails side.  On the flex side things are just as simple.</p>
<p>First setup a <a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/services_config.gif" target="_blank">services-config.xml</a>.</p>
<p>Next, set up the remote object ...</p>
<blockquote><p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/flash_remote_object.gif"><img class="alignnone size-full wp-image-1244" src="http://www.pathf.com/blogs/wp-content/uploads/2008/11/flash_remote_object.gif" alt="" width="500" height="177" /></a></p></blockquote>
<p>and the custom type object in Flex.</p>
<blockquote><p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/11/class_beer.gif"><img class="alignnone size-medium wp-image-1243" src="http://www.pathf.com/blogs/wp-content/uploads/2008/11/class_beer.gif" alt="" width="550" height="434" /></a></p></blockquote>
<p>The call to the index method would look like</p>
<blockquote><p>BeerService.index.send();</p></blockquote>
<p>And the code from the event handler when the call returns..</p>
<blockquote><p>var temp:Array = new Array;<br />
temp = e.result as Array;</p></blockquote>
<p>The cool part about this is that the objects in the array will be of custom type Beer with no client side manipulation needed.</p>
<p>If you're looking for a server side technology to communicate with a Flex application, the speed at which a Rails app can be developed and the ease of AMF integration makes a strong case to be the technology of choice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/11/rubyamf-and-flex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Java Programmer&#8217;s transition to Ruby on Rails</title>
		<link>http://www.pathf.com/blogs/2008/10/a-java-programmers-transition-to-ruby-on-rails/</link>
		<comments>http://www.pathf.com/blogs/2008/10/a-java-programmers-transition-to-ruby-on-rails/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:34:50 +0000</pubDate>
		<dc:creator>Jason Sendelbach</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1220</guid>
		<description><![CDATA[There is much out there on the topic of migrating to Ruby on Rails for an experienced Java programmer.  I figured I'd add my two cents, as I have finally drunk the Kool-Aid.  I switched to Ruby on Rails late last year, and developed a subscription and content management system in Ruby on [...]]]></description>
			<content:encoded><![CDATA[<p>There is much out there on the topic of migrating to Ruby on Rails for an experienced Java programmer.  I figured I'd add my two cents, as I have finally drunk the Kool-Aid.  I switched to Ruby on Rails late last year, and developed a subscription and content management system in Ruby on Rails, went back to a Java project, and then back to Ruby on Rails.  The switch back to Java gave me an interesting insight into the things I love and hate about both development platforms.</p>
<p><span id="more-1220"></span></p>
<p><strong>Ruby vs Rails</strong><br />
At first it was hard to distinguish what Ruby was bringing to the table, and what Rails was.  Over time I have learned to love <strong>Ruby</strong>, as:</p>
<ul>
<li> the code I write is more concise</li>
<li>code reads like a sentence</li>
<li>code chaining isn't necessarily a bad thing</li>
<li>less "useless code" (getters/setters)</li>
</ul>
<p>For <strong>Rails</strong>, it was:</p>
<ul>
<li>convention over configuration</li>
<li>quickness I could have a web application running</li>
<li>generation scripts to facilitate coding</li>
<li>testing is easy and part of the framework</li>
<li>MVC layout</li>
<li>routes rock</li>
</ul>
<p>At first, I had no idea where to start.  I read a Ruby programming book, a Ruby on Rails programming book for Java developers, and a Rails book.  By "read," I mean I read most of the Ruby book (skipped the API type stuff) .  The two rails books both had layouts where the first half built an application, and the second half went through Rails.  I skipped building the application, but skimmed through the steps.  The switch from Java wasn't super easy, as I was coming up to speed on both Ruby and Rails at the same time.  It was hard for me to write my tests first, because I was struggling with the Ruby syntax.  This was exacerbated by the fact that I was writing in a Java style, which doesn't really work in a Ruby world.</p>
<p><strong>IDE</strong></p>
<p>The first thing I did was try to figure out what IDE to use.  As a mac user TextMate was apparently the "industry standard," so I gave it a shot.  It may have some awesome functionality, but it pissed me off more than it was helping, so I actually used Eclipse (that's what I used for Java) for a while.  It actually was OK for Ruby code.  I tried NetBeans (the one that supports Java &amp; Ruby) but that  just didn't seem to work.  I eventually switched to NetBeans for Ruby.  After configuring the keyboard shortcuts to use Eclipse commands, I was coding quickly and also was able to run the tests in my IDE.  I see many developers who run the server within their IDE (to facilitate debugging), but I generally tend to run it in a terminal window, so I can keep it completely separate from my IDE.  I can leave my servers running in the terminal windows and go check out the logs very quickly.</p>
<p><strong>Application Port</strong></p>
<p>I had recently used GWT on a Java project to build an application to manage sports data.  I decided to port the application to Ruby on Rails.  I tried to keep the existing database schema, but I found that as a newcomer, it was beyond my abilities to get this application up and running quickly enough.  I changed the database schema to match rails conventions (and was able to easily change my Hibernate mapping file in my Java app to point to the same database).</p>
<p>As a newbie, I essentially wrote all of my logic in the controller, and had no tests.  It was pretty awful, but was a great learning experience.  After I produced the application, I had enough Rails knowledge to hop on a project with a more experienced Ruby programmer.  We paired on the content management system display logic, and after that I was really up to speed.</p>
<p><strong>Recommendations</strong></p>
<p>If you are an experienced Java programmer, I highly recommend trying Ruby on Rails.  It may be better to focus on getting up to speed with Ruby.  Create a few applications (not Web apps) that you may see in a code test for an interview.  Write your ruby code and tests and get acclimated to Ruby syntax.  Once you're there, switch over to Rails.  Create a rails project and try something you've done before, or a simple content management system.  If you make a CMS, keep it simple:  a list of articles, and standard CRUD operations.  Create a simple display site, and just demonstrate that you can get some basic functionality out there.  Along the way, you'll figure out how to test your code.  Now, I write my tests before the code (well - at least on paper), but this was really hard at the beginning, as I was having a hard enough time as it was to get the code working, let alone a series of tests in the same language that was providing said frustration.</p>
<p>I recently created an internal application that helped us facilitate staffing meetings.  We had tried a number of methods, but a nifty custom application was really needed.  We had a spreadsheet that had some functionality, but really needed to be taken to the next step.  I was able to create the basic functionality of the application in about 8 hours, with full test coverage.  It has grown since then and we have a huge wish list for it.  Looking back, if I had done the initial application in Java, it probably would have taken at least 30-40 hours of just coding (and writing XML).  Ruby on Rails isn't the perfect solution for everything, and Java isn't going anywhere, but for many of today's web applications, it's sweet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/a-java-programmers-transition-to-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Defining RIA Interaction Patterns on time in Flex Agile Development</title>
		<link>http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/</link>
		<comments>http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 07:19:09 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[interaction patterns design]]></category>

		<category><![CDATA[Patterns]]></category>

		<category><![CDATA[project management]]></category>

		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1203</guid>
		<description><![CDATA[Putting more attention to User Interaction Design is naturally becoming a standard practice with RIA.
With RIA technologies, classic Interaction Patterns are only building blocks, not solutions. With raised possibilities, Patterns have become more complex.

So what are UI Interaction Patterns?
Wiki notes: “In interaction design/HCI, an interaction design (ID) pattern is a general repeatable solution to a [...]]]></description>
			<content:encoded><![CDATA[<p>Putting more attention to User Interaction Design is naturally becoming a standard practice with RIA.</p>
<p>With RIA technologies, classic Interaction Patterns are only building blocks, not solutions. With raised possibilities, Patterns have become more complex.</p>
<p><span id="more-1203"></span><br />
<strong>So what are UI Interaction Patterns?</strong></p>
<p>Wiki notes: “In interaction design/HCI, an interaction design (ID) pattern is a general repeatable solution to a commonly-occurring usability or accessibility problem in interface design or interaction design.”</p>
<p>In other words, it’s a high level abstraction of Interaction that can be applied throughout the Project as it grows and changes.</p>
<p>For example, Interaction Pattern would be definitions of handling screen transitions, button interactions, error messages, focus switching, refreshing data, status messages and in RIA case navigating maps, data mining, 3D space navigation, graph filtering and many other creative approaches to interacting with data.<br />
<strong><br />
Timing makes for good results</strong></p>
<p>How does one approach this challenge in Project Management makes a lot of difference to outcome and quality of a project. Recently, while working on a project with an excellent Project Manager and colleague Alice Toth, we came up with a place for Interaction Design in project planing that makes a lot of sense to me as a RIA Developer.</p>
<p>While analyzing the project we were working on I noticed that I didn’t abstract the Patterns enough at the time we were adding small features at the end of the project.</p>
<p>I was giving too much focus to individual components of the interface and that was not facilitating incoming features from extending the application because they were all "unique".</p>
<p>Every time a new feature was introduced which is a given in Agile software development, I would have to spend time thinking about the Interface Interaction Design and how to incorporate it with the rest of the app seamlessly.</p>
<p>That felt like a waste of time. RIA interfaces, creative and unique as they are still have some patterns. Even when an Interface Component is a brand new idea, it still follows some brand new patterns.</p>
<p>While going over Alice’s good Project Management practices, we found a good spot to incorporate the UI Interaction Patterns Design.</p>
<p>Right after Application Features and User Roles and Scenarios are defined and at the same time as designing the Data Model and back-end Architecture. It would seem premature, but it has some great advantages.</p>
<p>Data Model and Interaction Design are far more correlated than it meets the eye. Some of work on the back end can be cut if the Interactions are defined. You get a better sense of which methods and requests do you really need and what will be up for extending in the future. You might catch something on the back-end  that needs to be done that would otherwise be unnoticed until front end development.</p>
<p>The biggest value of designing Interactions at an early stage is that you can have a more objective picture of priorities and still have a very abstract perspective which you can use to design broader solutions and in that way save time. If you gauge which Patterns can cover the most cases, imminent and potential, you can have more time to develop them to a greater quality.</p>
<p>This in turn makes for a good Flex Project class architecture that reduces the number of hacks and exceptions that solve small problems at a big cost of time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery goodness with ASP .NET</title>
		<link>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/</link>
		<comments>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 17:29:28 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1197</guid>
		<description><![CDATA[http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/
This piece of news has brought about great cheer in the Web Developers community. jQuery has been fast gaining reputation in the world of web-development as a light-weight, flexible and easy-to-use Javascript library. Integration of jQuery with Microsoft's development platform should provide web developers with new capabilities and opportunities.
This is very smart move by Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/">http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/</a></p>
<p>This piece of news has brought about great cheer in the Web Developers community. jQuery has been fast gaining reputation in the world of web-development as a light-weight, flexible and easy-to-use Javascript library. Integration of jQuery with Microsoft's development platform should provide web developers with new capabilities and opportunities.</p>
<p>This is very smart move by Microsoft given the fact they have always hesitated to incorporate open-source technologies into their products. It is planning to ship jQuery with the ASP .NET MVC very soon. Integration with Visual Studio is something that is going to happen later. There are plans to enable intellisense support for jQuery in Visual Studio which would be really cool I think.</p>
<p>Some of the high-points of jQuery integration with ASP .NET could be :</p>
<ul>
<li>JQuery provides an attractive alternative to conventional Javascript making client-side DOM and HTML manipulation much easier and quicker.</li>
<li>It could complement ASP .NET Ajax and play with it really well</li>
<li>The original jQuery libraries are going to be ported into ASP .NET without any change which would enable developers to leverage jQuery's true potential</li>
</ul>
<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/10/jquery-aspnet.png"><img class="alignnone size-medium wp-image-1198" src="http://www.pathf.com/blogs/wp-content/uploads/2008/10/jquery-aspnet.png" alt="" width="407" height="166" /></a> </p>
<p> image-source : <a href="http://www.webmonkey.com">www.webmonkey.com</a></p>
<p>I have posted a few links below that discuss more about what the MS-jQuery marriage means for the web development community and how it can make life easier for developers out there.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx">http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx</a></p>
<p><a href="http://weblogs.asp.net/bleroy/archive/2008/09/28/jquery-now-officially-part-of-the-net-developer-s-toolbox.aspx">http://weblogs.asp.net/bleroy/archive/2008/09/28/jquery-now-officially-part-of-the-net-developer-s-toolbox.aspx</a></p>
<p><a href="http://jquery.com/blog/2008/09/28/jquery-microsoft-nokia/">http://jquery.com/blog/2008/09/28/jquery-microsoft-nokia/</a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash Player on iPhone gossip</title>
		<link>http://www.pathf.com/blogs/2008/10/flash-player-on-iphone-gossip/</link>
		<comments>http://www.pathf.com/blogs/2008/10/flash-player-on-iphone-gossip/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 12:59:56 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[flash player]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1181</guid>
		<description><![CDATA[
First thing that came to my mind when I initially heard about the iPhone was the multi-touch possibilities that would start changing the way we create Flash/Flex interfaces (hopefully through SDK extension supporting multi-touch on Adobe's side triggered by iPhone release).
It looked very promising and natural to me in the beginning that this will be [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/10/iphone-flash.jpg"><img class="alignnone size-full wp-image-1182" src="http://www.pathf.com/blogs/wp-content/uploads/2008/10/iphone-flash.jpg" alt="" width="300" height="200" /></a></p>
<p>First thing that came to my mind when I initially heard about the iPhone was the multi-touch possibilities that would start changing the way we create Flash/Flex interfaces (hopefully through SDK extension supporting multi-touch on Adobe's side triggered by iPhone release).</p>
<p>It looked very promising and natural to me in the beginning that this will be the route. Flash is a great part of the Internet experience and iPhone is a great mobile device for, among other things, Internet access.</p>
<p><span id="more-1181"></span></p>
<p>Long time passed, and still all I can find on this topic is gossip.</p>
<p>Ranging from initial optimism:</p>
<p><a href="http://gizmodo.com/gadgets/iphone/iphone-adobe-flash-support-coming-275317.php" target="_blank">iPhone Adobe Flash Support Coming</a><br />
<a href="http://gizmodo.com/gadgets/iphone/iphone-adobe-flash-support-coming-275317.php" target="_blank"></a><a href="http://www.appleinsider.com/articles/07/07/05/mossberg_apple_working_on_adobe_flash_support_for_iphone.html" target="_blank">Mossberg: Apple working on Adobe Flash support for iPhone</a><br />
<a href="http://www.gearlive.com/news/article/q108-flash-on-iphone-is-just-around-the-corner/" target="_blank">Flash on iPhone is just around the corner</a><br />
<a href="http://www.engadget.com/2008/03/19/adobe-says-flash-is-coming-to-the-iphone/" target="_blank"><span>Adobe says Flash is coming to the iPhone</span></a></p>
<p>...to some doubts about the timeline:<br />
<a href="http://www.alleyinsider.com/2008/6/adobe_flash_apple_iphone_maybe_someday" target="_blank">Adobe Flash Coming To Apple's iPhone -- Maybe, Someday</a><br />
<a href="http://www.eribium.org/blog/?p=139" target="_blank">Flash iPhone project stumbles: SDK insufficient</a></p>
<p>...to some doubts about the outcome:<br />
<a href="http://news.cnet.com/8301-10787_3-9886265-60.html" target="_blank">Adobe bites its tongue after iPhone Flash jab</a><br />
<a href="http://www.alleyinsider.com/2008/3/steve_jobs_flash_not_good_enough_for_iphone_is_microsofts_silverlight" target="_blank">Steve Jobs: Flash Not Good Enough For iPhone. Is Microsoft's Silverlight?</a></p>
<p>...to advanced angles on the topic:<br />
<a href="http://daringfireball.net/2008/02/flash_iphone_calculus" target="_blank">Flash on iPhone Political Calculus</a></p>
<p>After all this (and much more) gossip, I came up with the following conclusion: It has never been a better time to learn <span><a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html" target="_blank">Objective-C</a>. </span></p>
<p>If the Flash support ever pans out, I will be waiting and ready. In the meantime, it seams like a waiste not to apply all the interface development techniques learned through Flash/Flex development on iPhone and learn something new.</p>
<p>I dare to say that Flash/Flex developers should have an edge on at least the interface logic, and learning a new language should be on everybody's agenda from time to time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/flash-player-on-iphone-gossip/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Symphony of Ruby on Rails and Flex through RubyAMF</title>
		<link>http://www.pathf.com/blogs/2008/09/simphony-of-ruby-on-rails-and-flex-through-rubyamf/</link>
		<comments>http://www.pathf.com/blogs/2008/09/simphony-of-ruby-on-rails-and-flex-through-rubyamf/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 17:27:30 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[amf]]></category>

		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[rubyamf]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1163</guid>
		<description><![CDATA[
In a project that I am currently a part of, we inherited Ruby on Rails from our client's system and project front-end was designated to be developed in Flex. RubyAMF came naturally.
I have been working with two other AMF frameworks prior to this: AMFPHP and WebOrb. My experience with both was that they are fairly [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1164" src="http://www.pathf.com/blogs/wp-content/uploads/2008/09/ror-ramf-fx.jpg" alt="" width="288" height="200" /></p>
<p>In a project that I am currently a part of, we inherited Ruby on Rails from our client's system and project front-end was designated to be developed in Flex. <a href="http://code.google.com/p/rubyamf/" target="_blank">RubyAMF</a> came naturally.</p>
<p>I have been working with two other AMF frameworks prior to this: <a href="http://www.amfphp.org/" target="_blank">AMFPHP</a> and <a href="http://www.themidnightcoders.com/weborb/" target="_blank">WebOrb</a>. My experience with both was that they are fairly hard to set up and once you go through that minefield, everything works excellent. No need to say that I am a great advocate of AMF in general. <a href="http://code.google.com/p/rubyamf/" target="_blank">RubyAMF</a> brings the same good old AMF but with a stunning ease and speed of development!</p>
<p>My colleague working on the Ruby side, Justin Ficke, introduced me to code and architecture of Ruby on Rails  and I was impressed to see with what ease, precision and speed can one develop it.</p>
<p>Justin and I put a little test together of this architecture and here is a screen cast of it.</p>
<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/09/ror-ramf-fx-test.mov" target="_blank"><img class="alignnone size-full wp-image-1166" src="http://www.pathf.com/blogs/wp-content/uploads/2008/09/test.jpg" alt="" width="500" height="226" /></a></p>
<p>All the lovely custom typed objects and speed of data transfer are there. Beauty of it, appart from obvious benefits from AMF, is that the development process couldn't have been better and faster.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/09/simphony-of-ruby-on-rails-and-flex-through-rubyamf/feed/</wfw:commentRss>
<enclosure url="http://www.pathf.com/blogs/wp-content/uploads/2008/09/ror-ramf-fx-test.mov" length="2885960" type="video/quicktime" />
		</item>
		<item>
		<title>&#8220;Build half a product, not a half-assed product&#8221; - tips on clarity and focus from Jason Fried of 37Signals</title>
		<link>http://www.pathf.com/blogs/2008/09/build-half-a-product-not-a-half-assed-product-tips-on-clarity-and-focus-from-jason-fried-of-37signals/</link>
		<comments>http://www.pathf.com/blogs/2008/09/build-half-a-product-not-a-half-assed-product-tips-on-clarity-and-focus-from-jason-fried-of-37signals/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 20:31:04 +0000</pubDate>
		<dc:creator>John McCaffrey</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[Disruption]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[37signals]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1160</guid>
		<description><![CDATA[
Jason Fried from 37Signals spoke yesterday at the ITA "Speaking of Success" event, about the history of 37Signals, their philosophy and culture, and the critical business decisions they've made to get them where they are today.
The software biz is fundamentally broken. Too many products fail because of the obsession of adding more and more, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/09/hammer.jpg"><img src="http://www.pathf.com/blogs/wp-content/uploads/2008/09/hammer.jpg" alt="" class="right" height="214" width="284" /></a></p>
<p><strong>Jason Fried</strong> from <a href="http://www.37signals.com" target="_blank">37Signals</a> spoke yesterday at the ITA "<a title="Speaking of Success" href="https://www.illinoistech.org/calendar.aspx/1024" target="_blank">Speaking of Success</a>" event, about the history of 37Signals, their philosophy and culture, and the critical business decisions they've made to get them where they are today.</p>
<blockquote><p>The software biz is fundamentally broken. Too many products fail because of the obsession of adding more and more, and trying to do too much.</p></blockquote>
<p>Jason went on to say that the approach of adding more and more only works for companies that have lots of money and lots of time, but that for the average company the main goal should be to build something that is "good enough," get it out to the users, and improve the design based on their feedback. The challenge of which features to include, and which to say "No" to, is covered well in the "<a href="http://books.google.com/books?id=SIexi_qgq2gC&amp;dq=innovator%27s+dilemma&amp;pg=PP1&amp;ots=AhtNdGH8Kl&amp;sig=nfxVSDAyu_zmT8W7tHbmgbJoU5c&amp;hl=en&amp;sa=X&amp;oi=book_result&amp;resnum=1&amp;ct=result" target="_blank">The Innovator's Dilemma</a>," which he said "everyone in this room should have read." The book resonates the core philosophy of 37Signals, which is evident from their <a href="http://www.37signals.com/svn/" target="_blank">blogs</a>, their book "Getting Real," and the design of the Rails framework. As an example of the "Good Enough" philosophy, Jason used his laptop and its basic webcam to stream the Q&amp;A session out over <a href="http://www.justin.tv/search?sort-by=newest&amp;q=37signals&amp;section=all" target="_blank">justin.tv</a> and send out a text to the 37signals Twitter group. "The quality probably isn't that great, but its good enough," and with that quick setup he had now broadened the audience by 1,000 users or so. (I searched for the video archive at justin.tv, but didn't find it yet.)</p>
<p><span id="more-1160"></span></p>
<blockquote><p>"Our products do less than the competition"</p></blockquote>
<p>While this quote isn't new, I still find that its worth digesting, particularly as it relates to product planning and product design. I'm a big fan of Agile and iterative development, and the idea that we don't have to have the full product requirements solidified before we can get started. I like to take a product vision to market quickly, improve on the design, and add features as their necessity becomes more clear.</p>
<p> I found that the things that Jason mentioned that resonated with me the most were closely in line with what I liked about <a href="http://www.pathf.com/blogs/2008/09/tips-tricks-from-windy-city-rails/" target="_blank">DHH's Q&amp;A session</a> at last week's <a href="http://www.windycityrails.org" target="_blank">WindyCityRails</a> conference in Chicago. I think a big part of 37Signals success is due to the fact that its two primary partners are totally on the same page.</p>
<p>Working at a consulting company like Pathfinder presents two major challenges in this area. First, the customer most likely doesn't know anything about Agile, nor do they really care about it. They want to see results and the details of how those results come about may not be something they care to explore. Secondly, our customer cares deeply about the design of the product, and the features that absolutely HAVE to be in for the release. The idea of going to market with "less" is a difficult concept to swallow. I've found that the more the design process explicitly involves the actual end user, the easier it is to investigate the importance of a given feature, ask them about it, prototype it, and figure out if its going to make things better for them. Conversely, if the end-user isn't closely involved in the design process, feature priority is more of a guess, and out of fear and lack of certainty features are included because "yeah, we might need that too". So when the question is raised, "Which is a higher priority, feature A, or feature B?", the answer is often an unequivocal "BOTH!"</p>
<p>On this point Jason had two elegant explanations that I hope to draw from. First, doing "less" really means covering the "essentials" of what is needed, and doing those "fewer" things better. He mentioned their products as being like a tool, with a specific, focused purpose.</p>
<blockquote><p>"A hammer is a tool, its very focused, and has a clean, simple interface."</p></blockquote>
<p>It strikes me as a perfect example of clarity and focus, because no one is screaming for a hammer that measures distance, cuts wood, or tightens nuts &amp; bolts. Its intended use is clear, it doesn't need to do more than that.</p>
<p>"We like to think of ourselves as curator's of the product. A curator at a museum chooses which pieces of Art should be included in the collection. They say "No" to many things. A building full of lots of Art that isn't carefully selected isn't a museum, its a warehouse"</p>
<p>I've certainly seen applications that were a "warehouse" of features in need of greater focus and "tasteful selection" for what should be included. My mission now is to find a better way to deliver the message that "less is more," and that in most cases, its better to get the application out to the users quickly, and leave room to iterate and improve on the design, than it is to try to build and release the perfect product all in one shot.</p>
<p>How do you deal with this issue in your day to day work? What effective techniques have you found for bringing clarity to the design of a product?</p>
<p><strong>Photo Credit</strong>:<br /><a href="http://www.flickr.com/photos/ppdigital/2054989998/">Darren Hester</a><br />under a Creative Commons Attribution License</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/09/build-half-a-product-not-a-half-assed-product-tips-on-clarity-and-focus-from-jason-fried-of-37signals/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mouse wheel (scroll) Event in Flash Player running on a Mac</title>
		<link>http://www.pathf.com/blogs/2008/09/mouse-wheel-scroll-event-in-flash-player-running-on-a-mac/</link>
		<comments>http://www.pathf.com/blogs/2008/09/mouse-wheel-scroll-event-in-flash-player-running-on-a-mac/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 18:04:45 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[externalinterface]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[mouse scroll]]></category>

		<category><![CDATA[mouse wheel]]></category>

		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1147</guid>
		<description><![CDATA[One of the great advantages of Flash technology is cross-browser and cross-platform compatibility. That is almost entirely true but a few things did slip Adobe.
A big issue that was overlooked is support for mouse wheel event on Mac OSX. A pretty basic functionality you would think. If your interface is heavily relying on mouse scrolling, [...]]]></description>
			<content:encoded><![CDATA[<p>One of the great advantages of Flash technology is cross-browser and cross-platform compatibility. That is almost entirely true but a few things did slip Adobe.</p>
<p>A big issue that was overlooked is support for mouse wheel event on Mac OSX. A pretty basic functionality you would think. If your interface is heavily relying on mouse scrolling, your audience on Mac's will probably have a "so how does this work" blank stare.</p>
<p><span id="more-1147"></span></p>
<p>Google didn't overlook this in their implementation of Maps, but most apps I've seen online did.</p>
<p>There is a very nice and simple solution to this issue coming from <a href="http://hasseg.org" target="_blank">hasseg.org</a> and I find it very important to put this little effort in to maintain same look and feel of application interface across platforms.</p>
<p>Solution is executed with help from JavaScript. Mouse wheel events get passed to Flash player and parsed to simulate regular functionality.</p>
<p>A lot of praise to <a href="http://hasseg.org" target="_blank">hasseg.org</a> for coming up with and publishing <a href="http://hasseg.org/stuff/FlexOSXMouseWheel/OSXMouseWheelSupportForFlex2.zip">working source code</a> of this solution.</p>
<p>You can find the full explenation on this <a href="http://hasseg.org/blog/?p=3" target="_blank">blog post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/09/mouse-wheel-scroll-event-in-flash-player-running-on-a-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash/Flex physics engines and examples</title>
		<link>http://www.pathf.com/blogs/2008/09/flash-flex-physics-engines-and-examples/</link>
		<comments>http://www.pathf.com/blogs/2008/09/flash-flex-physics-engines-and-examples/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 15:25:48 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[2d physics]]></category>

		<category><![CDATA[3D physics]]></category>

		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[physics]]></category>

		<category><![CDATA[physics engines]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1129</guid>
		<description><![CDATA[Flash technology has gone a long way from simple vector animations. Today it has support for video and audio, 3d rendering and interaction, all kinds of advanced data visualization libraries, great components of all shapes, sizes and purposes.

What caught my eye lately is that there is a lot of 2D and 3D Physics engines being added to the list.]]></description>
			<content:encoded><![CDATA[<p><a href="http://files.slembcke.net/chipmunk/movies/smash.mov" target="_blank"><img class="alignleft size-medium wp-image-1133" src="http://www.pathf.com/blogs/wp-content/uploads/2008/09/physicspiramide1.jpg" alt="physics pyramid" width="300" height="221" /></a></p>
<p>Flash technology has gone a long way from simple vector animations. Today it has support for video and audio, 3d rendering and interaction, all kinds of advanced data visualization libraries, great components of all shapes, sizes and purposes.</p>
<p>What caught my eye lately is that there is a lot of 2D and 3D Physics engines being added to the list.<br />
<span id="more-1129"></span>Physics beyond the obvious add a whole new level to user experience, in which I'm particularly interested.<br />
Physics allow developers to create interfaces that are replicating laws of nature that a user can easily understand and has experience with.</p>
<p>Of course, from step one there is a danger of these tools being misused and thrown on top of interfaces for some make-up effects. That is not what I'm talking about. I'm talking about using physics to help the user understand the software interface and it's process by guiding him/her using these principles.</p>
<p>There are some basic and insightful guidelines and examples in an excellent article by Rob Adams called "<a href="http://www.adobe.com/devnet/flex/articles/fig_pt6.html"><strong>Guiding with motion</strong></a>".</p>
<p>Here are some engines and examples that deal with 2D/3D physics in Flex/Flash:</p>
<p><a href="http://temp.roxik.com/datas/perform/index.html" target="_blank"><strong>ROXIK</strong></a><strong> </strong>-<br />
<a href="http://temp.roxik.com/datas/bone/index.html" target="_blank">Bone example</a><br />
<a href="http://temp.roxik.com/datas/physics/index.html" target="_blank">Gravity boot</a><br />
<a href="http://temp.roxik.com/datas/cloth/index.html" target="_blank">Interactive cloth</a></p>
<p><strong><a href="http://box2dflash.sourceforge.net/" target="_blank">Box2DFlashAS3</a> </strong><strong><a href="http://box2dflash.sourceforge.net/" target="_blank"><br />
</a></strong></p>
<p><strong><a href="http://code.google.com/p/glaze/" target="_blank">Glaze</a></strong><br />
<a href="http://home.planet.nl/~borst595/glaze.html" target="_blank">Example</a></p>
<p><strong><a href="http://wiki.slembcke.net/main/published/Chipmunk" target="_blank">Chipmunk</a></strong><br />
<a href="http://files.slembcke.net/chipmunk/movies/smash.mov">Domino smash </a><br />
<a href="http://files.slembcke.net/chipmunk/movies/sketches.mov">Sketches</a><br />
<a href="http://files.slembcke.net/chipmunk/movies/machine.mov">The Machine</a><br />
<a href="http://files.slembcke.net/chipmunk/movies/pyramid.mov">Domino pyramid</a></p>
<p><a href="http://files.slembcke.net/chipmunk/movies"> </a></p>
<p><strong><a href="http://blog.generalrelativity.org/?p=17" target="_blank">Foam</a></strong><br />
<a href="http://lab.generalrelativity.org/foam/demos/perpetualFall/" target="_blank">Example 1</a><br />
<a href="http://lab.generalrelativity.org/foam/demos/zeroGToyChest/" target="_blank">Example 2</a></p>
<p><strong><a href="http://www.cove.org/ape/index.htm" target="_blank">Ape</a></strong><br />
<a href="http://www.cove.org/ape/demo1.htm" target="_blank">Example 1</a><br />
<a href="http://www.cove.org/ape/demo2.htm" target="_blank">Example 2</a></p>
<p><strong><a href="http://lab.polygonal.de/motor_physics/" target="_blank">Motor2</a></strong></p>
<p><strong><a href="http://seraf.mediabox.fr/wow-engine/as3-3d-physics-engine-wow-engine/" target="_blank">Wow</a></strong><br />
<a href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-picture/">3D picture</a><br />
<a href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-demo-rope-and-box/">rope, box</a><br />
<a href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-cloth-demo-01/">cloth 01</a><br />
<a href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-cloth-demo-02/">cloth 02</a><br />
<a href="http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-cloth-demo-03/">cloth 03</a></p>
<p><strong><a href="http://mark-shepherd.com/blog/springgraph-flex-component/" target="_blank">SpringGraph</a></strong><a href="http://mark-shepherd.com/blog/springgraph-flex-component/" target="_blank"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/09/flash-flex-physics-engines-and-examples/feed/</wfw:commentRss>
<enclosure url="http://files.slembcke.net/chipmunk/movies/smash.mov" length="1630448" type="video/quicktime" />
<enclosure url="http://files.slembcke.net/chipmunk/movies/sketches.mov" length="3934204" type="video/quicktime" />
<enclosure url="http://files.slembcke.net/chipmunk/movies/machine.mov" length="2984918" type="video/quicktime" />
<enclosure url="http://files.slembcke.net/chipmunk/movies/pyramid.mov" length="1613774" type="video/quicktime" />
		</item>
		<item>
		<title>Data visualization and the art of conveying information</title>
		<link>http://www.pathf.com/blogs/2008/09/data-visualization-and-the-art-of-conveying-information/</link>
		<comments>http://www.pathf.com/blogs/2008/09/data-visualization-and-the-art-of-conveying-information/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 06:42:43 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[code art]]></category>

		<category><![CDATA[data visualization]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1124</guid>
		<description><![CDATA[

As a coder, I go over tremendous amount of information on daily basis. My case is no different than anybody's else living in the world today. Regardless of where we live and how we spend our time we are saturated with all kinds of information, a lot of it that we don't care about and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flare.prefuse.org/launch/apps/dependency_graph" target="_blank"><img class="size-medium wp-image-1127 alignright" src="http://www.pathf.com/blogs/wp-content/uploads/2008/09/flaremap.png" alt="" width="295" height="300" /></a></p>
<p><a href="http://flare.prefuse.org/launch/apps/dependency_graph"></a></p>
<p>As a coder, I go over tremendous amount of information on daily basis. My case is no different than anybody's else living in the world today. Regardless of where we live and how we spend our time we are saturated with all kinds of information, a lot of it that we don't care about and a lot of it that we wish we had fast access to, if at all.</p>
<p>Ironically,  computer technology adds to the problem more often than not. All that computational power is often just creating more data that we will never experience because there's just too much of it everywhere and all the time. Traditional techniques of consuming information are becoming too slow and narrow to handle this kind of pace.</p>
<p>We have all heard that a "picture speaks a thousand words". Doesn't that sound like an efficient way to consume information? Now, there are pictures and there are pictures.</p>
<p>There are pictures that strike a cord with you and there are pictures that leave you bland. Which one are you more likely to remember and allot the time of your mind?</p>
<p>Here are some libraries for data visualization in Flex/Flash as well as some artful experiments that I found to be good tools/examples of data visualization.<br />
<span id="more-1124"></span><br />
<a href="http://flare.prefuse.org" target="_blank">Flare</a><br />
Flare is a very comprehensive library ranging from graph and charts to timelines and treemaps and then some.<br />
<a href="http://flare.prefuse.org/launch/apps/dependency_graph" target="_blank">Example 1</a><br />
<a href="http://flare.prefuse.org/demo" target="_blank">Example 2</a>:</p>
<p><a href="http://www.yworks.com/en/index.html" target="_blank">yFiles</a><br />
yWorks offers the same graphing solution for Flex, Ajax, .NET<br />
Solutions include DOM Tree, Graph Canvas, Drag and Drop, Collapsible Tree, GraphWikiand they are all very well documented.<br />
<a href="http://www.yworks.com/en/products_yfilesflex_about.html" target="_blank">Flex Examples</a></p>
<p><a href="http://www.ilog.com/products/ilogelixir/" target="_blank">ILOG Elixir</a><br />
ILOG Elixir offers 3D Charts, Gauges and Dials, Map Displays, Gantt Charts, Organization Charts, Treemap Charts and Radar Charts.<br />
All demos can be found <a href="http://www.ilog.com/products/ilogelixir/demos/" target="_blank">here</a>.</p>
<p><a href="http://mark-shepherd.com/blog/springgraph-flex-component/" target="_blank">SpringGraph</a><br />
SpringGraph is a lovely Flex component that deals as its name says - a Spring Graph, which is a self arranging graph.<br />
Example 1: <a href="http://mark-shepherd.com/SpringGraph/RoamerDemo/bin/RoamerDemo.html" target="_blank">Roamer Demo</a><br />
Example 2: <a href="http://mark-shepherd.com/SpringGraph/MoleculeViewer/bin/MoleculeViewer.html" target="_blank">Molecule Viewer</a></p>
<p><a href="http://www.levitated.net" target="_blank">Levitated.net</a><br />
<a href="http://www.levitated.net" target="_blank"></a>Levitated.net  shows beautiful visual experiments with algorithms. Their business application is yet to be discovered.<br />
<a href="http://www.levitated.net/gravityIndex.html" target="_blank">Examples</a></p>
<p><a href="http://blog.zupko.info/" target="_blank">Andy Zupkos blog</a><br />
Andy is blowing the lid of Papervision3D, a 3D engine written in AS2 and AS3.<br />
You can see his masterful explorations <a href="http://blog.zupko.info/" target="_blank">here</a>.</p>
<p><a href="http://lab.mathieu-badimon.com/" target="_blank">Mathieu Badimon Lab</a><br />
Mathieu has published a few eye catching experiments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/09/data-visualization-and-the-art-of-conveying-information/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Custom Flex 3 Lightweight Preloader with source code</title>
		<link>http://www.pathf.com/blogs/2008/08/custom-flex-3-lightweight-preloader-with-source-code/</link>
		<comments>http://www.pathf.com/blogs/2008/08/custom-flex-3-lightweight-preloader-with-source-code/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 19:25:49 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[lightweight]]></category>

		<category><![CDATA[preloader]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1101</guid>
		<description><![CDATA[Here we will have a demonstration to an age old problem in Flash (and inherited in Flex), the preloader. I think that the Flex community has long ago grown bored with the default preloader, which I am very thankful to Adobe engineers for providing it in the first place. It's just that we keep seeing it over and over and over...]]></description>
			<content:encoded><![CDATA[<p style="center;"><a href="http://www.pathf.com/sites/pfd/flash/blog/08142008/PreloaderComponent.html"><img class="alignnone size-medium wp-image-1102 aligncenter" src="http://www.pathf.com/blogs/wp-content/uploads/2008/08/preloader.png" alt="Preloader" width="300" height="144" /></a></p>
<p>Here we have a demonstration to an age old problem in Flash (inherited in Flex) - the Preloader. I think that the Flex community has long ago grown bored with the default preloader, which I am very thankful to Adobe engineers for providing us in the first place. It's just that we keep seeing it over and over and over...</p>
<p><span id="more-1101"></span></p>
<p>Another important thing that the default preloader naturally doesn't provide is some branding while the user is waiting for the loading to complete.</p>
<p>There are some great examples out there like <a href="http://www.onflex.org/ted/2006/07/flex-2-preloaders-swf-png-gif-examples.php" target="_blank">Ted's</a> and the one that I'm using as a base for this demonstration from <a href="https://defiantmouse.com/yetanotherforum.net/Default.aspx?g=posts&amp;t=82" target="_blank">Andrew</a>.</p>
<p>Andrew's example allows us to have a lightweight preloader base that we can extend and <strong>solve the following problems</strong> that I think every preloader should:</p>
<p>- What is the status of loading - both numerically and graphically</p>
<p>- Some branding to show what are we waiting for that would involve some imagery, like a logo</p>
<p>- Possibility of actually making the preloader entertaining enough to keep the users attention</p>
<p>Problem in Flex more so than in Flash is keeping the preloader lightweight. So we have to achieve the visual appeal, animation, some basic text rendering without all the convenient native Flex components that would make the delay before seeing the preloader too long. So we have to keep it simple. Kudos to Andrew for publishing a great way to do this.</p>
<p><strong>I would like to point out a couple things:</strong></p>
<p><strong>1.</strong> So we want to show the percentage loaded, right? Well, the Label component just won't work out. Label comes with following inheritance:</p>
<p>Label -&gt; UIComponent -&gt; FlexSprite -&gt; Sprite -&gt; DisplayObjectContainer -&gt; InteractiveObject  DisplayObject -&gt; EventDispatcher -&gt; Object</p>
<p>That is a good part of the Flex framework that we want to avoid for the preloader. Instead, because we just want to render the text, we can use the TextField object which comes with following inheritance:</p>
<p>TextField -&gt; InteractiveObject -&gt; DisplayObject -&gt; EventDispatcher -&gt; Object</p>
<p>And another thing is that we want to avoid any custom fonts in the preloader because that will surely blow it up.</p>
<p><strong>2.</strong> Any imagery that we want to show up should naturally be in the single digit kilobytes to begin with. Photoshop offers a lot of ways to optimize the size of the image.</p>
<p>Than again, we don't want to use the convenient Image component because it comes with the following inheritance:</p>
<p>Image -&gt; SWFLoader -&gt; UIComponent -&gt; FlexSprite -&gt; Sprite -&gt; DisplayObjectContainer -&gt; InteractiveObject -&gt; DisplayObject -&gt; EventDispatcher -&gt; Object</p>
<p>Instead, we can fill up a DisplayObject that comes with following inheritance:</p>
<p>DisplayObject -&gt; EventDispatcher -&gt; Object</p>
<p>To do this you:</p>
<p>- embed your small image in the preloder like so:</p>
<pre>[Embed("Assets/Pathfinder_Logo_Blue.png") ]
[Bindable] public var Logo:Class;</pre>
<p>- pass the Logo class to DisplayObject and add it to stage, like so:</p>
<pre>var b:DisplayObject=new Logo();
addChild(b);</pre>
<p>and then set it's size and position parameters.</p>
<p>We only want to show the image pixel, so this will do. We can still make our logo DisplayObject available throughout the whole preloader class so we can play with it a little, like making it follow the progress bar by changing it's X parameter.</p>
<p>The rest you can pick up from the<strong> source code</strong>, available <a href="http://www.pathf.com/sites/pfd/flash/blog/08142008/srcview" target="_blank">here</a>.</p>
<p>You can see the <strong>example</strong> <a href="http://www.pathf.com/sites/pfd/flash/blog/08142008/PreloaderComponent.html" target="_blank">here</a>.</p>
<p>Again, thanks to Andrew, Ted and Adobe Flex Team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/08/custom-flex-3-lightweight-preloader-with-source-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby on Rails with Windows - How I made it work</title>
		<link>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/</link>
		<comments>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 18:09:51 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[MySql]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1087</guid>
		<description><![CDATA[I have been developing with Ruby on Rails over the last few weeks. Coming from the ASP .NET/C#/VB world, I am a total stranger to a programming language like Ruby. Any new programming language is fun to learn! Ruby was even more exciting cause it was a new kinda language to me. Though I think [...]]]></description>
			<content:encoded><![CDATA[<p>I have been developing with Ruby on Rails over the last few weeks. Coming from the ASP .NET/C#/VB world, I am a total stranger to a programming language like Ruby. Any new programming language is fun to learn! Ruby was even more exciting cause it was a new kinda language to me. Though I think Ruby is not as user-friendly as C# or Java, it is as powerful and flexible if not better. Combined with Rails, Ruby becomes a platform that facilitates quick and efficient development of database-driven web applications.</p>
<p><span id="more-1087"></span></p>
<p>Ruby has been known work to well with Mac OS, Linux and Cygwin traditionally. I came to understand that it doesnt work very well with Windows. There are a number of pitfalls that are associated with Ruby or Rails running on Windows. Here, I going to talk about a couple that I hit when I was trying to get RoR to work on Windows :</p>
<ul>
<li>Most of the unit tests in my RoR project were failing throwing some weird database errors. I had done everything right from installing Ruby to installing the various gems needed for the project. After a quite a bit of googling, we learnt we could resolved these issues by making a simple change to the MySQL settings. The "Enable Strict mode" option had to be disabled using the MySQL interface config wizard. I ran the tests after this was done and voila!</li>
</ul>
<p> </p>
<ul>
<li>This problem was even more perplexing than the above one. A bunch of unit tests were still failing with a dreadful "Segmentation fault" error (I m sure "ROR on Windows" folks might have seen this before). Some research on this error led to the finding that MySQL versions greater than 5.0.18 might cause this problem. So I downgraded my version of MySQL to 5.0.18 to see if that fixed my problem. No luck as yet! This was followed by trying out a number of other potential fixes like using different versions of libmysql.dll (the MySQL library used in Ruby), making changes to database configuration in the project etc. None of these helped me. After a few days of frustration, I uninstalled the MySQL gem and reinstalled it upon the advice of my colleague. That finally did the trick!</li>
</ul>
<p>I m still puzzled how these fixes worked but glad they did :).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Papervision3D 2.0 (Great White) in Flex 3 (Part II &#38; III combined) with source code</title>
		<link>http://www.pathf.com/blogs/2008/08/papervision3d-20-great-white-in-flex-3-part-ii-iii-combined-with-source-code/</link>
		<comments>http://www.pathf.com/blogs/2008/08/papervision3d-20-great-white-in-flex-3-part-ii-iii-combined-with-source-code/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 22:47:36 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[3D GPS]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[BitmapData.draw]]></category>

		<category><![CDATA[Custom Flex Component]]></category>

		<category><![CDATA[Degrafa]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Gauge Component]]></category>

		<category><![CDATA[papervision3d]]></category>

		<category><![CDATA[PV3D]]></category>

		<category><![CDATA[Tilt Component]]></category>

		<category><![CDATA[Yahoo Map AS3 API]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1088</guid>
		<description><![CDATA[The purpose of this demonstration is to use Yahoo Map and Papervision3D as a base for creating/importing 3D Objects with reference to actual locations on planet Earth using the Adobe Flex framework.
Demonstration is packed in an air application for which you can also see and download fully functioning source code. ]]></description>
			<content:encoded><![CDATA[<p style="center;"><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/08/yahoo-map-in-pv3d.png"><img class="alignnone size-medium wp-image-1089 aligncenter" src="http://www.pathf.com/blogs/wp-content/uploads/2008/08/yahoo-map-in-pv3d-thumb.jpg" alt="YahooMap in PV3D" width="500" height="291" /></a></p>
<p>The purpose of this demonstration is to use Yahoo Map and Papervision3D as a base for creating/importing 3D Objects with reference to actual locations on planet Earth using the Adobe Flex framework.</p>
<p>In this post I will be covering how to integrate Yahoo Maps AS3 API as an Interactive Material in PV3D 2.0 and solutions to the following problems:</p>
<p>- Security sandbox violation when using Yahoo Map as MovieMaterial (i.e. BitmapData.draw problem)<br />
- Mapping Longitude and Latitude values to X and Y coordinates of a PV3D material<br />
- Dragging Yahoo Map in PV3D (avoiding the map panning collision with PV3D)<br />
- Simple gauge component from the ground up using basic trigonometry<br />
- Simple tilt component again using basic trigonometry<br />
- Making a visual component using Degrafa</p>
<p>Demonstrations of  these solutions are packed in <a href="http://www.pathf.com/sites/pfd/flash/blog/08072008/srcview/source/YahooMapInPV3D.air" target="_blank">this air application</a> for which you can also see and download <a href="http://www.pathf.com/sites/pfd/flash/blog/08072008/srcview/" target="_blank">fully functioning source code</a>.</p>
<p><span id="more-1088"></span></p>
<p>The application was built in Flex 3 using following API's:</p>
<p><strong>Yahoo Maps AS3</strong><br />
You can download it <a href="http://developer.yahoo.com/flash/maps/" target="_blank">here</a>.<br />
Also don't forget to acquire a free API key to run your app online. It is not necessary for local testing in debugger through Flex.</p>
<p><strong>Papervision3D 2.0 (Great White)</strong><br />
You can find excellent tutorials <a href="http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src" target="_blank">here</a>.<br />
Source is available as a SVN repository <a href="http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/src" target="_blank">here</a>.</p>
<p><strong>Degrafa</strong><br />
Official site: <a href="http://degrafa.com/" target="_blank">http://degrafa.com/</a><br />
SWC is available <a href="http://code.google.com/p/degrafa/" target="_blank">here</a>.</p>
<p><strong>Security sandbox violation when using Yahoo Map as MovieMaterial i.e. BitmapData.draw() problem</strong></p>
<p>When processing a MovieMaterial, PV3D uses the infamous BitmapData.draw method in MovieMaterial/bitmapDraw. This is a problem because the method will not yield a result if the origin of BitmapData is not in the same domain.<br />
In case you have access to the server that you are loading the image data from, you can solve this problem by adding an appropriate crossdomain.xml file to that server.</p>
<p><a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html" target="_blank">This article from Adobe’s Deneb Meketa</a> covers security updates in Flash Player 9 including very important changes to the crossdomain.xml structure. Whenever you have a Flash security based headache, this is a good starting point.</p>
<p>In case you can’t put crossdomain.xml on the image origin server, as is the case with Yahoo severs, you are supposed to use the checkPolicyFile property of the LoaderContext class, but that works only if we are directly loading the image data ourselves.</p>
<p>In our case image (map tiles) loading is being handled by YahooMap.swc and we don't have access to the aforementioned process. We could do an override, if we knew where the darn thing was, which I don't.</p>
<p>Sadly, the only solution for this problem that I could implement was by using Air, which is why I'm sharing this as an Air app rather than via a browser version - Air is much easier to deal with when it comes to security. As far as I'm concerned, problem solved for now.</p>
<p>I did hear some gossip that this will be sorted out in Flash Player 10, but who's going to wait for that?</p>
<p>I still haven't quite given up on this issue, as it is highly annoying roadblock to some cool browser based projects.</p>
<p><strong>Mapping Longitude and Latitude values to X and Y coordinates of a PV3D material</strong></p>
<p>This is done very straightforwardly by capturing the YahooMapEvent. It goes something like this:</p>
<pre>private function getAllCoordinates(e:YahooMapEvent):void
{
clickedLong=Number(e.data.latlon.lon);
clickedLat=Number(e.data.latlon.lat);

clickedX=Number(e.data.point.x);
clickedY=Number(e.data.point.y);
}</pre>
<p>You add a listener with this line:</p>
<pre>yahooMap.addEventListener(YahooMapEvent.MAP_MOUSE_CLICK, handleMapClick);</pre>
<p>Although this is a very simple thing, it allows you to convert Latitude and Longitude to the X and Y coordinates of the referring Material and you can play with it from then on. For instance, I used it to map flight trajectories based on GPS data (including GPS altitude) in 3D space. Fun stuff!<br />
<strong>Dragging Yahoo Map in PV3D (avoiding the map panning collision with PV3D)</strong></p>
<p>Dragging a YahooMap is super simple using the Yahoo Map API. It’s a convenient single line:</p>
<p>yahooMap.addPanControl();</p>
<p>When the map is processed by PV3D and you try to drag it, it starts jumping all over the screen, probably because of some event collision with PV3D. Luckily, we can get around this one by making our own custom dragging method as follows (note that this only describes the concept, the working version is in <a href="http://www.pathf.com/sites/pfd/flash/blog/08072008/srcview/" target="_blank">source</a>):</p>
<pre>private function mMove( e:InteractiveScene3DEvent ):void
{
// This code is run when the mouse is moved on the plane.
movieParent.x = mouseX -e.x;
movieParent.y = mouseY -e.y;

if(Application.application.stopMovingMap==false)
{
Application.application.yahooMap.panControl.panEnabled=false;
f=true;
}
else if(Application.application.stopMovingMap==true &amp;&amp; Application.application.isAnythingBeingDragged==false)
{
if(f)
{
oldX = e.x;
oldY = e.y;
f=false;
}
Application.application.yahooMap.panControl.panEnabled=true;

newX=e.x
newY=e.y

xDiff= newX-oldX;
yDiff= newY-oldY;

Application.application.yahooMap.setCenterByPixels(new Point(xDiff,yDiff));

flightsContainer.x = flightsContainer.x-xDiff;
flightsContainer.y = flightsContainer.y-yDiff;

oldX=newX;
oldY=newY;
}
}</pre>
<p>You can look at the missing variables and event listeners in the <a href="http://www.pathf.com/sites/pfd/flash/blog/08072008/srcview/" target="_blank">source</a>.</p>
<p><strong>Simple gauge component from ground up using basic trigonometry</strong></p>
<p>What I wanted to achieve was to rotate the 3D cube on which the map rests around the Z axis. Simple, right? So I used a VSlider component and gave it a range from 0 to 360 to capture the angle of rotation. And that’s where problems started. When the 3D map is under VSlider, both start acting up and jumping across the screen. All the issues in this app smell of the same thing - something to do with Mouse Down and Mouse Move events in PV3D. I’m still looking.</p>
<p>Being annoyed by the problem I started thinking about other approaches and a gauge component came to mind as the best visual representation of the functionality I was trying to achieve.</p>
<p>I naturally tried using some of the ready made gauge components available online, but with all of them I had some kind of issue. Either it was the inability to skin them properly, or to set the scope to full 360 degrees.</p>
<p>In the end I decided to refresh my trigonometry knowledge and made the component myself.</p>
<p>At the same time, this solved the VSlider going crazy issue. Why? I’ll post it when I find out.<br />
<strong></strong></p>
<p><strong>Simple tilt component again using basic trigonometry</strong></p>
<p>When in Rome... I used the same principle as in simple gauge component to add to user experience and visually show the angle that the 3D map is tilted by.</p>
<p><strong>Making a visual component using Degrafa</strong></p>
<p>Degrafa is such a priceless framework. Just in case you don’t know, it’s used for manipulating SVG’s (vector based graphics) in Flex 3, giving you a lot of power in customizing your visual components. It is the best solution for mapping in Flex that I have ever seen!</p>
<p>In this particular app it wasn’t absolutely necessary but it’s there to visually enhance the arrow button. I really wanted the arrow to look like it does in the example. Look at the <a href="http://www.pathf.com/sites/pfd/flash/blog/08072008/srcview/" target="_blank">source</a> to see the details. Actual SVG data was created in Illustrator.</p>
<p>All in all, combining API’s is certainly going to get you into trouble. But combining ideas can amount to a <a href="http://en.wikipedia.org/wiki/Synergy" target="_blank">sum greater than it’s parts</a>. I love it.</p>
<p>If anything is not clear to you, look at the code to see all the in’s and out’s. If it’s still not clear, shoot me a message.<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/08/papervision3d-20-great-white-in-flex-3-part-ii-iii-combined-with-source-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>LINQ to My Domain</title>
		<link>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/</link>
		<comments>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 02:04:08 +0000</pubDate>
		<dc:creator>Jason Pearl</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[LINQ]]></category>

		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1073</guid>
		<description><![CDATA[I've begun my foray into the world of LINQ, and in my investigation I've seen a lot of work based on the LINQ to SQL "design surface" available in Visual Studio 2008.  It's a neat tool.  I point it to my database, drag some tables over, and it infers my domain structure and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/07/linq_designer2.jpg"><img class="alignright size-thumbnail wp-image-1076" src="http://www.pathf.com/blogs/wp-content/uploads/2008/07/linq_designer2.jpg" alt="Design Surface" width="150" height="125" style="float:right; padding: 10px" /></a>I've begun my foray into the world of LINQ, and in my investigation I've seen a lot of work based on the LINQ to SQL "design surface" available in Visual Studio 2008.  It's a neat tool.  I point it to my database, drag some tables over, and it infers my domain structure and relationships from the databases fields and keys.  That's all well and good for a simple domain model that is <strong>directly</strong> related to the database schema.  I could see using this for a quick prototype, or a really small application.  I see three files created by the designer:</p>
<p><strong>MyClasses.dbml</strong> - This looks like any ORM frameworks mapping file.  It associates classes with tables, maps fields to object properties, and defines relationships.</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Table</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;dbo.Balloons&quot;</span> <span style="color: #000066;">Member</span>=<span style="color: #ff0000;">&quot;Balloons&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Type</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Balloon&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Column</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;BalloonId&quot;</span> <span style="color: #000066;">Type</span>=<span style="color: #ff0000;">&quot;System.Int32&quot;</span> <span style="color: #000066;">DbType</span>=<span style="color: #ff0000;">&quot;Int NOT NULL IDENTITY&quot;</span> <span style="color: #000066;">IsPrimaryKey</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">IsDbGenerated</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">CanBeNull</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Column</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Color&quot;</span> <span style="color: #000066;">Type</span>=<span style="color: #ff0000;">&quot;System.String&quot;</span> <span style="color: #000066;">DbType</span>=<span style="color: #ff0000;">&quot;NChar(20)&quot;</span> <span style="color: #000066;">CanBeNull</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Association</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Balloon_Kid&quot;</span> <span style="color: #000066;">Member</span>=<span style="color: #ff0000;">&quot;Kid&quot;</span> <span style="color: #000066;">OtherKey</span>=<span style="color: #ff0000;">&quot;KidId&quot;</span> <span style="color: #000066;">Type</span>=<span style="color: #ff0000;">&quot;Kid&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Type<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Table<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p><strong> MyClasses.dbml.layout</strong> - This looks to be specific to the layout of the design surface and appears to serve no purpose outside of this design.</p>
<p><strong> MyClasses.designer.cs</strong> - This is the beast that I'm looking to replace.  It contains the class definitions and attribute based mappings to bring my database schema into my application, and ready it for use by LINQ.</p>
<p>So this leaves me with a couple questions.  One,  why are attributes used to specify mappings?  Can this be done strictly via XML?  More importantly two, can I use my own domain model, and if so how do I map it to the database?</p>
<p>My goal would be to design a layered system, separating the underlying data store from the repositories required to push and pull my domain objects from these data stores.  This would allow in memory implementations of the data store, and would make unit testing (and developing) a whole lot easier.  I will be digging into this in the coming days and will report back soon.  Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ADO.NET Entity Framework</title>
		<link>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/</link>
		<comments>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 15:10:20 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[ADO.NET Entity Framework]]></category>

		<category><![CDATA[Logical Model and Conceptual Model]]></category>

		<category><![CDATA[Object Relation Mapping (ORM)]]></category>

		<category><![CDATA[Object-Oriented]]></category>

		<category><![CDATA[References]]></category>

		<category><![CDATA[XML Metadata]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1060</guid>
		<description><![CDATA[ADO.NET Entity Framework is an object relationship mapping (ORM) tool. It was designed to provide a layer of abstraction between the logical schema and concept schema of an application, and to decrease the amount code need for a data centric application.
Some benefits of the Entity framework:

Data storage engine and schema independence: Due to the layer [...]]]></description>
			<content:encoded><![CDATA[<p>ADO.NET Entity Framework is an object relationship mapping (ORM) tool. It was designed to provide a layer of abstraction between the logical schema and concept schema of an application, and to decrease the amount code need for a data centric application.</p>
<p>Some benefits of the Entity framework:</p>
<ul>
<li><strong>Data storage engine and schema independence: </strong>Due to the layer of abstraction between the logical and conceptual schema of your application, you no-longer need to know and hard cord the application to a specific data storage engine or schema.</li>
<li><strong>More expressive conceptual model: </strong>Entity types can inherit from other entity types and allows the creation of more complex types  in addition  to the standard scalar types support by  the database.</li>
<li><strong>Access to multiple database system: </strong>Because the application is free from hard code data storage dependencies, the developer has the ability to access data from multiple storages using a consistent application object model</li>
<li><strong>LINQ: </strong>Language Integrated query support that offers compile time syntax checking for queries against the conceptual model.</li>
</ul>
<p>The Entity Framework works by allow the developers to hand code or use code generation tools to create the XML metadata for the conceptual entity data model, a storage entity model, and a mapping specification between the two. The XML file created for the conceptual entity data model is then stored in the <a href="http://msdn.microsoft.com/en-us/library/bb399292.aspx">conceptual schema definition file (.csdl)</a>, the storage entity model is stored in the <a href="http://msdn.microsoft.com/en-us/library/bb399559.aspx">storage schema definition file (.ssdl)</a>, and mapping between the two in the <a href="http://msdn.microsoft.com/en-us/library/bb399202.aspx">mapping specification language file (.msl)</a>. These XML file are then loaded into the metadata workspace of the entity framework, and a set of classes are generated to allow the developer to work directly with the conceptual model and indirectly with the logical model.</p>
<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/07/articleimage.gif"><img class="alignnone size-medium wp-image-1061" src="http://www.pathf.com/blogs/wp-content/uploads/2008/07/articleimage.gif" alt="ADO.NET Entity Framework Architecture" width="696" height="580" /></a><br />
<a href="http://www.code-magazine.com/Article.aspx?quickid=0712042"><strong>Figure: ADO.NET Entity Framework Architecture</strong></a></p>
<p>So with these benefits design and built directly into the the framework and the logical approach used by framework to interact with various data providers, some experts in entity-based applications and software architectures on the .NET  platform still feel that the framework has some pretty large deficiencies.</p>
<p>They are concerned that the framework is...</p>
<ul>
<li>Inordinate focus on the data aspect of entities leads to degraded entity  architectures</li>
<li>Excess code needed to deal with lack of lazy loading</li>
<li>Share, canonical model contradicts software best practices</li>
<li>Lack of persistence ignorance causes business logic to be harder to read,  write, and modify, causing development and maintenance costs to increase at an  exaggerated rate.</li>
<li>Excessive merge conflicts with source control in team environments.</li>
</ul>
<p>Are these claim valid concerns to consider?</p>
<p>Sure, only if the framework is mature with several versions under its belt and its prohibits the productivity, maintainability and scalability of the application.</p>
<p>Isn't the right approach to software development to deliver a subset of the full feature set right the first time than try to deliver everything at once with massive issues that prevent the usability of the tool?</p>
<p>You decide...</p>
<p>Below are some useful references to get you going with Entity Framework.</p>
<p><a href="http://msdn.microsoft.com/en-us/magazine/cc700331.aspx">Achieve Flexible Data Modeling With the Entity Framework</a><br />
<a href="http://msdn.microsoft.com/en-us/library/bb399572.aspx">ADO.NET Entity Framework Pre-release documents</a><br />
<a href="http://www.codeplex.com/adonetsamples/Wiki/View.aspx?title=RunningEFBeta3Samples&amp;referringTitle=Home">Microsoft ADO.NET Entity Framework Overview</a><br />
<a href="http://www.infoq.com/news/2008/06/entity-framework-heat">ADO.NET Entity Framework Taking Some Heat</a><br />
<a href="http://www.code-magazine.com/Article.aspx?quickid=0712042">Programming Against the ADO.NET Entity Framework</a><br />
<a href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/">ADO .NET Entity Framework Vote of No Confidence</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Multiple Column Sorting with Drag and Drop using Scriptaculous</title>
		<link>http://www.pathf.com/blogs/2008/07/multiple-column-drag-and-drop-with-scriptaculous/</link>
		<comments>http://www.pathf.com/blogs/2008/07/multiple-column-drag-and-drop-with-scriptaculous/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 21:14:39 +0000</pubDate>
		<dc:creator>Anthony Caliendo</dc:creator>
		
		<category><![CDATA[Agile Ajax]]></category>

		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[Scriptaculous]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1051</guid>
		<description><![CDATA[

The other day I wanted to do drag and drop between multiple columns using scriptaculous.  Allowing this behavior is extremely simple, but out of the box the interaction feels clunky.  Here, we'll be going through an example of how to do multi-column drag and drop with scriptaculous.
Enabling multi-column drag and drop just involves [...]]]></description>
			<content:encoded><![CDATA[<p class="right"><a href='http://www.pathf.com/blogs/wp-content/uploads/2008/07/scriptaculous_logo.jpg'><img src="http://www.pathf.com/blogs/wp-content/uploads/2008/07/scriptaculous_logo.jpg" alt="" width="91" height="75"></a>
</p>
<p>The other day I wanted to do drag and drop between multiple columns using scriptaculous.  Allowing this behavior is extremely simple, but out of the box the interaction feels clunky.  Here, we'll be going through an example of how to do multi-column drag and drop with scriptaculous.</p>
<p>Enabling multi-column drag and drop just involves setting a single option, but without setting a few other options the dragging will feel jittery and won't allow us to drop on empty areas.  Also, interaction with the server will require a small bit of consideration to support persistence of any changes.</p>
<p><span id="more-1051"></span></p>
<p>For this example, we'll be using divs for the items and areas but the javascript will be the same if we used lists or any other HTML element to define your items and targets (we'll, of course, need to make sure that the correct <code>tag</code> option is specified in <code><a href="http://github.com/madrobby/scriptaculous/wikis/sortable-create">Sortable.create</a></code>).</p>
<p>On the page, we'll have three areas styled to float next to each other (extra details left out for clarity). </p>
<pre>
    &lt;div class="drop_target"&gt;
      &lt;div&gt;item one&lt;/div&gt;
      &lt;div&gt;item two&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="drop_target"&gt;
      &lt;div&gt;item three&lt;/div&gt;
      &lt;div&gt;item four&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="drop_target"&gt;
      &lt;div&gt;item five&lt;/div&gt;
      &lt;div&gt;item six&lt;/div&gt;
    &lt;/div&gt;
</pre>
<p>Please note that in order for Sortable to work correctly the drop targets will need an ID, and each item element will also need a properly formatted ID for <code><a href="http://github.com/madrobby/scriptaculous/wikis/sortable-serialize">Sortable.serialize</a></code> to work correctly.  If we so desired, we could put in a few extra lines of code in the following javascript examples which will automatically add a unique ID to each drop target and item which doesn't already have one.</p>
<p>Now, to enable the basic drag and drop between the columns we just need to create a <code>Sortable</code> for each drop target. This is all we need for dragging to work between columns, but it won't be as slick as we want.</p>
<pre>
document.observe('dom:loaded', function() {
  targets = $$('.drop_target');
  targets.each(function(target) {
    Sortable.create(target.id, {tag:'div', containment: targets});
  });
});
</pre>
<p>The magic option here is <code>containment</code>.  This specifies which elements on the page are valid drop targets when dragging an item.  Since this requires that all the elements are already available when creating the Sortable, we used an event listener that fires when the DOM is finished loading in the browser.  We're also using CSS selectors to grab the drop targets to make it easier to add/remove drop targets later down the line.</p>
<p>There are just two more options to specify.  The <code>constraint</code> option removes a horizontal/vertical dragging constraint which makes drag and drop not smooth when using different drop targets, and <code>dropOnEmpty</code> will enable dropping items onto an empty drop target.</p>
<pre>
Sortable.create(target.id, {
  tag: 'div',
  containment: targets,
  constraint: false,
  dropOnEmpty: true
});
</pre>
<p>We can now drag and drop freely between the different drop targets, and lay them out any way we want.  When we drag from one container to another, <code>onUpdate</code> will be called for <strong>both</strong> drop targets (since they both changed).</p>
<p>Since we are hitting a server to update order, we'll need to do one of two things. <code>Sortable.serialize</code> will include the HTML ID of the drop target in the parameters passed to the server as the key for the key-value pair.  We could then use this on the server to determine which drop target is being updated (and update it appropriately).  However, I don't like this because it isn't explicit and you end up parsing the request parameters looking for a certain pattern (plus, the coupling feels wrong).<br />
Instead, we'll pass a known id for the drop target being updated as an explicit parameter.  In straight javascript, it would look something like this (assume that <code>known_drop_target_id</code> is set to the appropriate value somewhere) :</p>
<pre>
Sortable.create(target.id, {
  tag: 'div',
  containment: targets,
  constraint: false,
  dropOnEmpty: true,
  onUpdate: function() {
    new Ajax.Request('http://foo.bar/baz', {
      parameters: Sortable.serialize(target.id) + '&amp;drop_target=' + known_drop_target_id
    })
  }
});
</pre>
<p>In rails, you can use/generate a known value which your controller will look for (details left out for clarity):</p>
<pre>
&lt;%= sortable_element_js(drop_target.id, :url =&gt; order_path(:id =&gt; drop_target) %&gt;
</pre>
<p>And then in the controller (again, simplified for clarity):</p>
<pre>
@drop_target = DropTarget.find params[:id]
params[dom_id(@drop_target)].each_with_index do |item, index|
  // make sure the item is "in" the drop target in the correct order
end
</pre>
<p>In the end, drag and drop between multiple columns is only trivially more complex than a single column but provides a very cool and intuitive (in certain circumstances) interaction.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/multiple-column-drag-and-drop-with-scriptaculous/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash 10 - FileReference Runtime Access</title>
		<link>http://www.pathf.com/blogs/2008/07/flash-10-filereference-runtime-access/</link>
		<comments>http://www.pathf.com/blogs/2008/07/flash-10-filereference-runtime-access/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 16:06:31 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[FileReference]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[flash player 10]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1044</guid>
		<description><![CDATA[This is what I was waiting for! To quote the original blog post:

"This greatly lowers the bar to using Flash as a photo editor, document manager, customized application experiences, marking up content and saving locally, all without the need for server side script."

And then: "It is only beta (Flash 10) but there are great market opportunities to prepare for when this launches."]]></description>
			<content:encoded><![CDATA[<p>This is what I was waiting for - FileReference Runtime Access! To quote the <a href="http://drawlogic.com/2008/05/17/amazing-new-feature-for-flash-10/">original blog post</a>:</p>
<p>"This greatly lowers the bar to using Flash as a photo editor, document manager, customized application experiences, marking up content and saving locally, all without the need for server side script."</p>
<p>And then: "It is only beta (Flash 10) but there are great market opportunities to prepare for when this launches."</p>
<p>Flash is just getting better.</p>
<p>Also, do check out the other great posts from <a href="http://drawlogic.com">http://drawlogic.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/flash-10-filereference-runtime-access/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Papervision3d 2.0 (Great White) in Flex 3 (Part I)</title>
		<link>http://www.pathf.com/blogs/2008/07/papervision3d-20-great-white-in-flex-3-part-i/</link>
		<comments>http://www.pathf.com/blogs/2008/07/papervision3d-20-great-white-in-flex-3-part-i/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 00:22:02 +0000</pubDate>
		<dc:creator>Sasha Dzeletovic</dc:creator>
		
		<category><![CDATA[TechDev]]></category>

		<category><![CDATA[3d]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[papervision3d]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1043</guid>
		<description><![CDATA[I'm developing a prototype that loads GPS coordinates/time of flights from an external file into Flash player in a browser and renders them at runtime using PV3D over an interactive Yahoo Maps API.

This prototype is in part being used to test performance of Flash Player running the excellent PV3D. So far it holds pretty good. ]]></description>
			<content:encoded><![CDATA[<p>I'm developing a prototype that loads GPS coordinates/time of flights from an external file into Flash player in a browser and renders them at runtime using <a href="http://blog.papervision3d.org/">PV3D</a> over an interactive <a href="http://developer.yahoo.com/flash/maps/">Yahoo Maps API</a>.</p>
<p style="center;"><a href="http://www.pathf.com/sites/pfd/flash/blog/07172008/pv3d.png"><img src="http://www.pathf.com/sites/pfd/flash/blog/07172008/pv3d-thumb.png" alt="papervision3d 2.0 flight data prototype screenshot" width="400" height="210" /></a></p>
<p>This prototype is in part being used to test performance of Flash Player running the excellent PV3D. So far it holds pretty good.</p>
<p><span id="more-1043"></span></p>
<p>PV3D has amazing capabilities. That said, it's also a work in progress so the API is not super clear, but it's well worth the hassle. It's open source so you can always look at the source code to figure out something troublesome. It doesn't take long to get started either because of the well documented common steps.</p>
<p>Of particular help was <a href="http://papervision2.com/">http://papervision2.com/</a> where you can find all the necessary first steps to take like:</p>
<p>- <a href="http://papervision2.com/2-getting-the-source/">Getting the PV3D 2.0 source</a></p>
<p>- Extremely helpful <a href="http://papervision2.com/3-creating-a-papervision-base-template/">base template</a> that sets up all the basic elements that you can easily build on</p>
<p>- And the priceless tutorial that sets you off on <a href="http://papervision2.com/advanced-interactivity-2/">3d interaction</a> path (i.e. the fun part).</p>
<p>On this prototype I was primarily working with LineMaterial and MovieMaterial (for interaction), then Line3D / Lines3D which proved very easy to build but not so easy to manipulate.</p>
<p>For such purpose it is a good idea to get to see DisplayObject3D class and understand how containers work in PV3D. More about that in Part II.</p>
<p>Performance can be fine tuned but it's necessary to keep in mind at every line of code that there is a ton of processing going on all the time and you want to build and manipulate your objects sparingly because otherwise you will see your browser locking in a millisecond.</p>
<p>Part III will cover collisions between Yahoo Maps AS3 API and PV3D. In one sentence, there is nothing you can not solve through a well arranged series of Events and this is applicable to any AS3 situation.</p>
<p>Part II next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/papervision3d-20-great-white-in-flex-3-part-i/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
