<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chris Teso &#187; Laboratory</title>
	<atom:link href="http://www.christeso.com/blog/index.php/category/lab/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.christeso.com/blog</link>
	<description>Chris Teso is Director of Interactive Media, Flash Designer Developer and Portland Photographer.</description>
	<lastBuildDate>Sun, 06 Jun 2010 04:59:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flickr Uploadr = theGOOD Uploadr</title>
		<link>http://www.christeso.com/blog/index.php/portfolio/flickr-uploadr-thegood-uploadr/</link>
		<comments>http://www.christeso.com/blog/index.php/portfolio/flickr-uploadr-thegood-uploadr/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 05:27:03 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Flickr Api]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[theGOOD]]></category>
		<category><![CDATA[theGOOD Uploadr]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[uploadr]]></category>

		<guid isPermaLink="false">http://www.christeso.com/blog/?p=788</guid>
		<description><![CDATA[I&#8217;ve been busy lately over at theGOOD

What it is
theGOOD Uploadr is a desktop application built on Adobe Air. The application is currently in alpha with a push to release beta around the first of the year 2010.
theGOOD Uploadr aims to improve and augment the Flickr experience by adding many features to the uploading process.
Some Links
theGOOD [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been busy lately over at <a href="http://www.thegood.com">theGOOD</a></p>
<p><a href="http://www.thegooduploadr.com"><img class="alignnone size-large wp-image-65" title="geo tagging" src="http://farm3.static.flickr.com/2722/4302543410_cc6aa58652_o.png" alt="geo tagging" width="100%" /></a></p>
<h3>What it is</h3>
<p>theGOOD Uploadr is a desktop application built on <a href="http://get.adobe.com/air/" target="_blank">Adobe Air</a>. The application is currently in alpha with a push to release beta around the first of the year 2010.</p>
<p>theGOOD Uploadr aims to improve and augment the Flickr experience by adding many <a href="http://www.thegooduploadr.com/category/features/">features</a> to the uploading process.</p>
<h3>Some Links</h3>
<p><a href="http://www.thegooduploadr.com">theGOOD Uploadr</a><br />
<a href="http://twitter.com/theGOODuploadr" target="_blank">follow along</a> for updates.<br />
theGOOD Uploadr in the <a href="http://www.flickr.com/services/apps/72157622811064423/" target="_blank">Flickr App Garden</a>.<br />
theGOOD Uploadr is a product of <a href="http://www.thegood.com" target="_blank">theGOOD</a>. An interactive think tank.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Flickr%20Uploadr%20%3D%20theGOOD%20Uploadr%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F&amp;t=Flickr%20Uploadr%20%3D%20theGOOD%20Uploadr" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F&amp;title=Flickr%20Uploadr%20%3D%20theGOOD%20Uploadr&amp;bodytext=I%27ve%20been%20busy%20lately%20over%20at%20theGOOD%0D%0A%0D%0A%0D%0AWhat%20it%20is%0D%0AtheGOOD%20Uploadr%20is%20a%20desktop%20application%20built%20on%20Adobe%20Air.%20The%20application%20is%20currently%20in%20alpha%20with%20a%20push%20to%20release%20beta%20around%20the%20first%20of%20the%20year%202010.%0D%0A%0D%0AtheGOOD%20Uploadr%20aims%20to%20improv" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F&amp;title=Flickr%20Uploadr%20%3D%20theGOOD%20Uploadr&amp;notes=I%27ve%20been%20busy%20lately%20over%20at%20theGOOD%0D%0A%0D%0A%0D%0AWhat%20it%20is%0D%0AtheGOOD%20Uploadr%20is%20a%20desktop%20application%20built%20on%20Adobe%20Air.%20The%20application%20is%20currently%20in%20alpha%20with%20a%20push%20to%20release%20beta%20around%20the%20first%20of%20the%20year%202010.%0D%0A%0D%0AtheGOOD%20Uploadr%20aims%20to%20improv" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F&amp;title=Flickr%20Uploadr%20%3D%20theGOOD%20Uploadr&amp;annotation=I%27ve%20been%20busy%20lately%20over%20at%20theGOOD%0D%0A%0D%0A%0D%0AWhat%20it%20is%0D%0AtheGOOD%20Uploadr%20is%20a%20desktop%20application%20built%20on%20Adobe%20Air.%20The%20application%20is%20currently%20in%20alpha%20with%20a%20push%20to%20release%20beta%20around%20the%20first%20of%20the%20year%202010.%0D%0A%0D%0AtheGOOD%20Uploadr%20aims%20to%20improv" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fflickr-uploadr-thegood-uploadr%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/portfolio/flickr-uploadr-thegood-uploadr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>theGOOD.com</title>
		<link>http://www.christeso.com/blog/index.php/lab/flash-wordpress-content-management-system/thegood-com/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/flash-wordpress-content-management-system/thegood-com/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 22:02:25 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Strategery & Industry]]></category>
		<category><![CDATA[Wordpress Flash CMS]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=737</guid>
		<description><![CDATA[Originally posted @ http://www.thegood.com/social/index.php/category/blog/industry/thegood-com/
We&#8217;re pretty proud of our new site, so we thought we&#8217;d give some technical deets for all of our geek readers. We do hope the rest of you can appreciate it on a more laymen level.
The site is an aggregation engine that acquires feeds from both Wordpress and Yahoo Pipes. Pipes delivers [...]]]></description>
			<content:encoded><![CDATA[<p>Originally posted @ http://www.thegood.com/social/index.php/category/blog/industry/thegood-com/</p>
<p>We&#8217;re pretty proud of our <a href="http://www.thegood.com/">new site</a>, so we thought we&#8217;d give some technical deets for all of our geek readers. We do hope the rest of you can appreciate it on a more laymen level.</p>
<p>The site is an aggregation engine that acquires feeds from both Wordpress and Yahoo Pipes. Pipes delivers Twitter and other social media feeds in a nice JSON wrapper to Flash. Wordpress data is acquired via XMLRPC. We made some custom modifications to enable it to deliver some specificity, however most of it was right there for the taking. A tip of the cap to Wordpress and its open source goodness.</p>
<p>We&#8217;re able to administer the entire site content using Wordpress as the CMS talking nicely with its Flash front. Given this, the site can function as our portfolio, social aggregate, blog, and company profile all wrapped up in a of sweet.</p>
<p>If you find any bugs or ideas for improvement we&#8217;d love to hear from you. More selfishly, If you&#8217;re a potential client and dig what we&#8217;re layin&#8217; down, don&#8217;t hesitate to drop us a line. We&#8217;d love to get in bed with you.</p>
<p>Thanks, and enjoy &#8211; theGOOD team.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=theGOOD.com%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F&amp;t=theGOOD.com" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F&amp;title=theGOOD.com&amp;bodytext=Originally%20posted%20%40%20http%3A%2F%2Fwww.thegood.com%2Fsocial%2Findex.php%2Fcategory%2Fblog%2Findustry%2Fthegood-com%2F%0D%0A%0D%0AWe%27re%20pretty%20proud%20of%20our%20new%20site%2C%20so%20we%20thought%20we%27d%20give%20some%20technical%20deets%20for%20all%20of%20our%20geek%20readers.%20We%20do%20hope%20the%20rest%20of%20you%20can%20appreciate" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F&amp;title=theGOOD.com&amp;notes=Originally%20posted%20%40%20http%3A%2F%2Fwww.thegood.com%2Fsocial%2Findex.php%2Fcategory%2Fblog%2Findustry%2Fthegood-com%2F%0D%0A%0D%0AWe%27re%20pretty%20proud%20of%20our%20new%20site%2C%20so%20we%20thought%20we%27d%20give%20some%20technical%20deets%20for%20all%20of%20our%20geek%20readers.%20We%20do%20hope%20the%20rest%20of%20you%20can%20appreciate" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F&amp;title=theGOOD.com&amp;annotation=Originally%20posted%20%40%20http%3A%2F%2Fwww.thegood.com%2Fsocial%2Findex.php%2Fcategory%2Fblog%2Findustry%2Fthegood-com%2F%0D%0A%0D%0AWe%27re%20pretty%20proud%20of%20our%20new%20site%2C%20so%20we%20thought%20we%27d%20give%20some%20technical%20deets%20for%20all%20of%20our%20geek%20readers.%20We%20do%20hope%20the%20rest%20of%20you%20can%20appreciate" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fflash-wordpress-content-management-system%2Fthegood-com%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/flash-wordpress-content-management-system/thegood-com/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google Docs + Yahoo Pipes = CMS</title>
		<link>http://www.christeso.com/blog/index.php/lab/google-docs-yahoo-pipes-cms/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/google-docs-yahoo-pipes-cms/#comments</comments>
		<pubDate>Fri, 15 May 2009 17:23:06 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Google Docs + Yahoo Pipes = CMS]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Strategery & Industry]]></category>
		<category><![CDATA[Using Yahoo Pipes to Aggregate Your Life]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[genius]]></category>
		<category><![CDATA[google docs]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[yahoo pipes]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=720</guid>
		<description><![CDATA[So, you&#8217;ve got a client that wants to manage their website content. They want to be able to update every field on their Flash website, er I mean &#8220;experience&#8221;. But there&#8217;s a catch&#8230; they FEAR technology and complex interfaces. They feel that Wordpress is too complex, never mind a proprietary custom build CMS.
What&#8217;s a developer [...]]]></description>
			<content:encoded><![CDATA[<p>So, you&#8217;ve got a client that wants to manage their website content. They want to be able to update every field on their Flash website, er I mean &#8220;experience&#8221;. But there&#8217;s a catch&#8230; they FEAR technology and complex interfaces. They feel that Wordpress is too complex, never mind a proprietary custom build CMS.</p>
<p>What&#8217;s a developer to do?</p>
<p>THIS:</p>
<p>1. Create a Google Docs Spreadsheet &#8211; For this example I&#8217;m using row 1 to hold the field vars.</p>
<p><a href="http://www.christeso.com/blog/wp-content/uploads/2009/05/spread.jpg"><img class="alignnone size-medium wp-image-721" title="Google Docs Spreadsheet" src="http://www.christeso.com/blog/wp-content/uploads/2009/05/spread-300x187.jpg" alt="Google Docs Spreadsheet" width="300" height="187" /></a></p>
<p>2. Set it to publish as a webpage &#8211; Be sure to select CSV format. Be sure to set it to re-publish when any editing occurs.</p>
<p><a href="http://www.christeso.com/blog/wp-content/uploads/2009/05/spread2.jpg"><img class="alignnone size-medium wp-image-722" title="Google Docs Spreadsheet 2" src="http://www.christeso.com/blog/wp-content/uploads/2009/05/spread2-300x187.jpg" alt="Google Docs Spreadsheet 2" width="300" height="187" /></a></p>
<p>3. Set up Yahoo Pipes to fetch the CSV data &#8211; Set appropriate data mapping, renaming and use Regex to ensure data is proper.</p>
<p><a href="http://www.christeso.com/blog/wp-content/uploads/2009/05/pipes.jpg"><img class="alignnone size-medium wp-image-723" title="Yahoo Pipes" src="http://www.christeso.com/blog/wp-content/uploads/2009/05/pipes-300x187.jpg" alt="Yahoo Pipes" width="300" height="187" /></a></p>
<p>4. Publish Pipe as your favorite data feed &#8211; For this example I chose JSON.</p>
<p><a href="http://www.christeso.com/blog/wp-content/uploads/2009/05/json.jpg"><img class="alignnone size-medium wp-image-724" title="json" src="http://www.christeso.com/blog/wp-content/uploads/2009/05/json-300x187.jpg" alt="json" width="300" height="187" /></a></p>
<p>5. Load JSON into your Flash app. BOOM!</p>
<p>Bladow, your client can now go on doing what they&#8217;ve always done &#8212; edit an excel doc ( Google Doc ). They make changes there, it changes on their fancy experiential website.</p>
<p>Genius.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Google%20Docs%20%2B%20Yahoo%20Pipes%20%3D%20CMS%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F&amp;t=Google%20Docs%20%2B%20Yahoo%20Pipes%20%3D%20CMS" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F&amp;title=Google%20Docs%20%2B%20Yahoo%20Pipes%20%3D%20CMS&amp;bodytext=So%2C%20you%27ve%20got%20a%20client%20that%20wants%20to%20manage%20their%20website%20content.%20They%20want%20to%20be%20able%20to%20update%20every%20field%20on%20their%20Flash%20website%2C%20er%20I%20mean%20%22experience%22.%20But%20there%27s%20a%20catch...%20they%20FEAR%20technology%20and%20complex%20interfaces.%20They%20feel%20that%20Wordpres" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F&amp;title=Google%20Docs%20%2B%20Yahoo%20Pipes%20%3D%20CMS&amp;notes=So%2C%20you%27ve%20got%20a%20client%20that%20wants%20to%20manage%20their%20website%20content.%20They%20want%20to%20be%20able%20to%20update%20every%20field%20on%20their%20Flash%20website%2C%20er%20I%20mean%20%22experience%22.%20But%20there%27s%20a%20catch...%20they%20FEAR%20technology%20and%20complex%20interfaces.%20They%20feel%20that%20Wordpres" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F&amp;title=Google%20Docs%20%2B%20Yahoo%20Pipes%20%3D%20CMS&amp;annotation=So%2C%20you%27ve%20got%20a%20client%20that%20wants%20to%20manage%20their%20website%20content.%20They%20want%20to%20be%20able%20to%20update%20every%20field%20on%20their%20Flash%20website%2C%20er%20I%20mean%20%22experience%22.%20But%20there%27s%20a%20catch...%20they%20FEAR%20technology%20and%20complex%20interfaces.%20They%20feel%20that%20Wordpres" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fgoogle-docs-yahoo-pipes-cms%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/google-docs-yahoo-pipes-cms/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Wordpress Flash Navigation</title>
		<link>http://www.christeso.com/blog/index.php/lab/wordpress-as3-flash-navigation/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/wordpress-as3-flash-navigation/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 18:35:52 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Actionscript Classes]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Wordpress AS3 Flash Navigation]]></category>
		<category><![CDATA[Wordpress Flash CMS]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=670</guid>
		<description><![CDATA[lab]]></description>
			<content:encoded><![CDATA[<p>Consider this beta, and not heavily tested. Just wanted to get it out there while I&#8217;m still working on it.</p>
<p>For a recent project a client wanted more control over the display of their <a href="http://wordpress.org/" target="_blank">Wordpress</a> navigation. They wanted to be able to use any font. They also wanted a dynamic fold-able navigation that enables access to all categories without re-loading the page. This was a perfect project for me since I use Wordpress all over the mofo place. For example, you can see the navigation in use over there to the right. Also, as I&#8217;ve stated previously, I’m a big fan of <a href="http://www.christeso.com/index.php/portfolio/istream-a-flickr-vimeo-wordpress-google-controlled-website/" target="_self">leveraging</a> the many publishing outlets I already use. So, I buit the nav in Flash connecting to Wordpress via <a href="http://www.xmlrpc.com/" target="_blank">XMLRPC</a> using some classes from <a href="http://mattism.com/" target="_blank">http://mattism.com/</a>. This essentially allows me to use Wordpress as a content management system for Flash. You could obviously see how this could be applied to <a href="http://www.christeso.com/index.php/portfolio/istream-a-flickr-vimeo-wordpress-google-controlled-website/" target="_self">entire sites</a>, like I have with my <a href="http://www.christeso.com/index.php/portfolio/istream-a-flickr-vimeo-wordpress-google-controlled-website/" target="_self">homepage</a>. I&#8217;ve thought about building this a Wordpress plugin, and maybe down the road I will, but I doubt it as I&#8217;ll probably jump ship and start another project per usual. Besides, everyone knows you can&#8217;t make money writing Wordpress plugins.</p>
<p>How It Works:<br />
Flash calls _rpc.call(&#8221;wp.getCategories&#8221;) to xmlrpc.php which returns an array of categories. I use this array to create a bunch of MovieClip()s. These clips add TextFields as children, are sorted and have events applied to them that enable the interactions. Two fonts reside in the library. One for the top node and one for the child and grandchildren nodes.</p>
<p>Features [the current goods]:</p>
<ul>
<li>Dynamic &#8211; Works dynamically with Wordpress categories. You update your categories in Wordpress, they show properly in Flash</li>
<li>Sorting &#8211; Dynamically sorts top nodes. Controlled by Wordpress plugin <a href="http://geekyweekly.com/mycategoryorder" target="_blank">my category order</a>. For this to work I had to make a small addition to the Wordpress xmlrpc.php, located in your Wordpress root folder, to return the category term order. Added line 2776 &#8211; $struct['order'] = $cat-&gt;term_order;</li>
<li>Page recognition &#8211; Recognizes the page you&#8217;re on and dynamically opens navigation to the parent node of said page onload. I could have used XMLRPC tomake this call, I&#8217;m sure. However, I opted to pass in the page url via Flashvars and run a check to find a match. When a match is found the nav opens to it&#8217;s parent node.</li>
<li>Folding &#8211; Uses Grant Skinner <a href="http://www.gskinner.com/libraries/gtween/" target="_blank">GTween</a> for interactions.</li>
<li>Multiple &#8211; Allows posts to live under multiple category nodes.</li>
</ul>
<p>Wish List [the future goods]:</p>
<ul>
<li>Multiline &#8211; Currently only supports single line category titles, so you&#8217;re limited in char length</li>
<li>Scrolling &#8211; Currently the length of your category list is limited to the length of the swf. I plan to add functions to enable scrolling of the list based on mouseY. This will free up the nav to be as long as you desire.</li>
<li>Post count &#8211; Do people really use this though? Probably not as its annoying.</li>
<li>Levels &#8211; Currently the nav only supports 3 levels. It would be nice to be infinite.</li>
<li>Build in the rest of Wordpress feature support for tag cloud, recent comments etc.</li>
</ul>
<p>Total devel time: 2 days, or about 12 hours.</p>
<p>I&#8217;d love to see where other people take the code and what people build with it.</p>
<p>Source Code:<br />
wpNavMain.as</p>
<pre><code>/**
* wpNavMain by Chris Teso. Mar 19, 2009
* Visit www.christeso.com/blog for documentation, updates and more free code.
*
*
* Copyright (c) 2009 Chris Teso
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
**/
package
{
	import flash.display.*;

	public class wpNavMain extends Sprite
	{

		/*
		========================================================
		| Constructor
		========================================================
		*/

		public function wpNavMain ()
		{
			stage.align = StageAlign.TOP_LEFT;

			// add nav
			var wp:Wp = new Wp()
			addChild( wp )
		}
	}
}</code></pre>
<p>Wp.as</p>
<pre><code>/**
* Wp by Chris Teso. Mar 19, 2009
* Visit www.christeso.com/blog for documentation, updates and more free code.
*
*
* Copyright (c) 2009 Chris Teso
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
**/

package
{
	import com.gskinner.motion.*
	import com.mattism.http.xmlrpc.*;
	import com.mattism.http.xmlrpc.util.*;
	import flash.filters.*;
	import flash.media.*;
	import flash.ui.*;
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.geom.*;
	import flash.text.*;
	import fl.transitions.*;
	import fl.transitions.easing.*;
	import flash.system.SecurityPanel;
	import flash.system.Security;

	public class Wp extends Sprite
	{

		/*
		========================================================
		| Private Variables                         | Data Type
		========================================================
		*/
		private var _navArray:Array = new Array();
		private var _rpc:Connection;
		private var _topFont:Font = new topFont();
		private var _roadSign:Font = new roadSign();
		private var _topFmt:TextFormat = new TextFormat()
		private var _currUrl:String = ""
		private var _hideTimer:Timer

		private var _textYPad:int = 16
		private var _navSpeed:Number = .2
		/*
		========================================================
		| Constructor
		========================================================
		*/

		public function Wp ()
		{
			loadRpc()
		}

		private function checkPage()
		{
			// load in title
			var paramList:Object = this.root.loaderInfo.parameters;

			// set var to hold text
			var _currUrl:String = paramList["url"]

			//_currUrl = "http://www.christeso.com/index.php/category/portfolio/truth/truth-found/"

			// scan through array and open nav to that one
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				//trace( "_currUrl = "+_currUrl+" - "+_navArray[i].link )

				if( _navArray[i].link == _currUrl )
				{
					//trace( "found match!" )

					// open it
					if( _navArray[i].childMc != null )
					{
						showGrandChildren( MovieClip( _navArray[i].childMc ) )
					}
					if( _navArray[i].grandChildMc != null )
					{
						showGrandChildren( MovieClip( _navArray[i].grandChildMc.parent ) )
					}

				}
			}
		}

		private function showGrandChildren( mc:MovieClip )
		{

			//trace( "opening grandchildren" )

			// amount to go down
			var yLeap:Number;

			// total that will be open as long as the node is not already open
			var _totOpen:int = mc.numChildren-1

			//trace( "_totOpen = "+_totOpen )

			// ok we can prob do this in one big loop
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				// push down top nodes as long as they are below the top node you're on
				if( _navArray[i].mc != null )
				{
					if( _navArray[i].mc.origY &gt; MovieClip(mc.parent).origY )
					{
						yLeap = _navArray[i].mc.origY + ( _totOpen*_textYPad )
						new GTween( _navArray[i].mc, _navSpeed, {y:yLeap} )
					}
					else
					{
						yLeap = _navArray[i].mc.origY
						new GTween( _navArray[i].mc, _navSpeed, {y:yLeap} )
					}
				}

				// push down child nodes as long as they are below the node you're on and are a child of the node you're on
				if( _navArray[i].childMc != null )
				{
					if( _navArray[i].childMc.parent == mc.parent )
					{
						if( _navArray[i].childMc.origY &gt; mc.origY )
						{
							yLeap = _navArray[i].childMc.origY + ( _totOpen*_textYPad )
							new GTween( _navArray[i].childMc, _navSpeed, {y:yLeap} )
						}
						else
						{
							yLeap = _navArray[i].childMc.origY
							new GTween( _navArray[i].childMc, _navSpeed, {y:yLeap} )
						}
					}
				}

				// make grandchildren visible
				if( _navArray[i].grandChildMc != null )
				{
					if( _navArray[i].grandChildMc.parent == mc )
					{
						_navArray[i].grandChildMc.visible = true
						new GTween( _navArray[i].grandChildMc, _navSpeed, {alpha:1} )
					}
					else
					{
						new GTween( _navArray[i].grandChildMc, _navSpeed/2, {alpha:0, autoHide:true} )
					}
				}
			}
		}

		private function hideGrandChildren( e:Event )
		{
			// amount to go down
			var yLeap:Number;			

			// ok we can prob do this in one big loop
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				// push up top nodes
				if( _navArray[i].mc != null )
				{
					yLeap = _navArray[i].mc.origY
					new GTween( _navArray[i].mc, _navSpeed, {y:yLeap} )
				}

				// push up child nodes
				if( _navArray[i].childMc != null )
				{
					yLeap = _navArray[i].childMc.origY
					new GTween( _navArray[i].childMc, _navSpeed, {y:yLeap} )
				}

				// make grandchildren visible
				if( _navArray[i].grandChildMc != null )
				{
					new GTween( _navArray[i].grandChildMc, _navSpeed/2, {alpha:0, autoHide:true} )
				}				

			}
		}

		private function childClick( e:Event )
		{
			var i:int = e.currentTarget.indexNum
			var srcRequest:URLRequest = new URLRequest( _navArray[i].link );
			navigateToURL( srcRequest, "" );
		}

		private function childOver( e:Event )
		{
			trace( "mouse over "+MovieClip( e.currentTarget ).name )

			// remove parent events
			MovieClip( e.currentTarget ).parent.removeEventListener( MouseEvent.CLICK, childClick )

			// stop close timer
			_hideTimer.stop()

			// show grandkids
			showGrandChildren( MovieClip( e.currentTarget ) )

		}

		private function childOut( e:Event )
		{
			trace( "mouse out "+MovieClip( e.currentTarget ).name )

			// add parent events
			MovieClip( e.currentTarget ).parent.addEventListener( MouseEvent.CLICK, childClick )

			// start timer for close
			_hideTimer.start();
		}

		private function grandChildOver( e:Event )
		{

			trace( "mouse over "+MovieClip( e.currentTarget ).name )

			// remove parent events
			MovieClip( e.currentTarget ).parent.removeEventListener( MouseEvent.CLICK, childClick )

			// handle its events
			MovieClip( e.currentTarget ).addEventListener( MouseEvent.CLICK, childClick )			

		}

		private function grandChildOut( e:Event )
		{

			trace( "mouse out "+MovieClip( e.currentTarget ).name )

			// remove parent events
			MovieClip( e.currentTarget ).parent.addEventListener( MouseEvent.CLICK, childClick )

			// handle its events
			MovieClip( e.currentTarget ).removeEventListener( MouseEvent.CLICK, childClick )			

		}

		private function orderTop()
		{
			var yPos:int = 0;
			var topCount:int = 0

			// first we need to find all unique parents
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				//
				if( _navArray[i].mc != null )
				{
					// place the top
					_navArray[i].mc.y = yPos
					_navArray[i].mc.origY = yPos
					// calculate the next Y pos
					yPos = _navArray[i].mc.y + ( _navArray[i].mc.numChildren*_textYPad )+_textYPad

				}
			}
		}

		private function makeTopNode( i:int )
		{
			trace( "making top node "+_navArray[i].title+" id = "+_navArray[i].id+" parent id = "+_navArray[i].parentId )

			// create an mc holder
			var mc:MovieClip = new MovieClip()
			mc.name = _navArray[i].title
			// create a text field
			var t:TextField = new TextField()
			t.mouseEnabled = false
			t.name = "text"
			t.autoSize = TextFieldAutoSize.LEFT
			t.selectable = false
			t.embedFonts = true
			t.antiAliasType = flash.text.AntiAliasType.ADVANCED
			t.htmlText = _navArray[i].title.toUpperCase()
			_topFmt.size = 13;
			_topFmt.font = _roadSign.fontName;
			_topFmt.color = 0x666666
			//_topFmt.letterSpacing = .5
			_topFmt.kerning = true;
			t.setTextFormat( _topFmt )

			mc.addChild( t )
			addChild( mc )

			_navArray[i].mc = mc

			// events
			mc.indexNum = i
			mc.origY = mc.y
			mc.buttonMode = true
			mc.addEventListener( MouseEvent.CLICK, childClick )

			// now loop through this level and populate kids
			findChildren( _navArray[i].id, mc )
		}

		private function makeChild( i:int, par:MovieClip )
		{
			trace( "   making child "+_navArray[i].title+" id = "+_navArray[i].id+" parent id = "+_navArray[i].parentId )

			// create an mc holder
			var mc:MovieClip = new MovieClip()
			mc.name = _navArray[i].title
			// create a text field
			var t:TextField = new TextField()
			t.mouseEnabled = false
			t.name = "text"
			t.autoSize = TextFieldAutoSize.LEFT
			t.selectable = false
			t.embedFonts = true
			t.antiAliasType = flash.text.AntiAliasType.ADVANCED
			t.htmlText = _navArray[i].title.toUpperCase()
			_topFmt.size = 10;
			_topFmt.font = _topFont.fontName;
			_topFmt.color = 0xffffff
			_topFmt.letterSpacing = .5
			_topFmt.kerning = true;
			t.setTextFormat( _topFmt )

			_navArray[i].childMc = mc

			mc.y = par.numChildren*_textYPad

			mc.addChild( t )
			par.addChild( mc )

			// now loop through this level and populate kids
			findGrandChildren( _navArray[i].id, mc )

			// events
			mc.indexNum = i
			mc.origY = mc.y
			mc.buttonMode = true
			mc.addEventListener( MouseEvent.CLICK, childClick )
			mc.addEventListener( MouseEvent.MOUSE_OVER, childOver )
			mc.addEventListener( MouseEvent.MOUSE_OUT, childOut )

		}

		private function makeGrandChild( i:int, par:MovieClip )
		{
			trace( "   making grandchild "+_navArray[i].title+" id = "+_navArray[i].id+" parent id = "+_navArray[i].parentId )

			// create an mc holder
			var mc:MovieClip = new MovieClip()
			mc.name = _navArray[i].title
			// create a text field
			var t:TextField = new TextField()
			t.mouseEnabled = false
			t.name = "text"
			t.autoSize = TextFieldAutoSize.LEFT
			t.selectable = false
			t.embedFonts = true
			t.antiAliasType = flash.text.AntiAliasType.ADVANCED
			t.htmlText = _navArray[i].title.toUpperCase()
			_topFmt.size = 10;
			_topFmt.font = _topFont.fontName;
			_topFmt.color = 0x999999
			_topFmt.letterSpacing = 0
			_topFmt.kerning = true;
			t.setTextFormat( _topFmt )

			_navArray[i].grandChildMc = mc

			mc.alpha = 0
			mc.visible = false;

			mc.x = 5
			mc.y = par.numChildren*_textYPad

			mc.addChild( t )
			par.addChild( mc )

			// events
			mc.indexNum = i
			mc.buttonMode = true
			//mc.mouseChildren = false
			//mc.addEventListener( MouseEvent.CLICK, childClick )
			mc.addEventListener( MouseEvent.MOUSE_OVER, grandChildOver )
			mc.addEventListener( MouseEvent.MOUSE_OUT, grandChildOut )

		}

		private function findGrandChildren( id:int, par:MovieClip )
		{
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				// hunt for children of the parent
				if( _navArray[i].parentId == id )
				{
					//trace( "-- found child "+_navArray[i].title+" | id = "+_navArray[i].id+" | parent = "+_navArray[i].parentId )
					// found one, now make a grandchild
					makeGrandChild( i, par )
				}
			}

		}

		private function findChildren( id:int, par:MovieClip )
		{
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				// hunt for children of the parent
				if( _navArray[i].parentId == id )
				{
					//trace( "-- found child "+_navArray[i].title+" | id = "+_navArray[i].id+" | parent = "+_navArray[i].parentId )
					// found one, now make a child
					makeChild( i, par )
				}
			}

		}

		private function findParents()
		{

			// first we need to find all unique parents
			for( var i=0;i&lt;_navArray.length;i++ )
			{
				// analyze the node... is it a top node?
				if( _navArray[i].parentId == 0 &amp;&amp; _navArray[i].title != "Uncategorized" )
				{
					//trace( "-- found parent "+_navArray[i].title )
					// create a top node container
					makeTopNode( i )
				}

			}
		}

		private function loadRpc()
		{
			_rpc = new ConnectionImpl('blogaddress/xmlrpc.php');
			_rpc.addEventListener(Event.COMPLETE, rpcCompleteHandler);
			_rpc.addEventListener(ErrorEvent.ERROR, rpcErrorHandler);
			_rpc.addParam(0, XMLRPCDataTypes.INT);  // Blog Id
			_rpc.addParam("blogusername", XMLRPCDataTypes.STRING); // Username
			_rpc.addParam("blogpassword", XMLRPCDataTypes.STRING); // Password

			getCategories()
		}

		private function getCategories():void
		{
			_rpc.call("wp.getCategories")
		}

		private function rpcCompleteHandler(evt:Event):void
		{
			var response:Object = _rpc.getResponse();
			for(var i:String in response)
			{
				// need to first grab all the top nav categories
				trace( response[i].categoryName )
				trace( response[i].htmlUrl )
				trace( response[i].parentId )
				trace( response[i].categoryId )
				trace( response[i].order )
				trace( "------------------" )
				_navArray.push( { title:response[i].categoryName, link:response[i].htmlUrl, id:response[i].categoryId, parentId:response[i].parentId, order:response[i].order } )
			}

			// Sort the array according to your category order setting in WP
			_navArray.sortOn( "order", Array.NUMERIC )

			// setup close timer
			_hideTimer = new Timer( 500, 1 );
			_hideTimer.addEventListener( TimerEvent.TIMER, hideGrandChildren );

			findParents()
			orderTop()
			checkPage()
		}

		private function rpcErrorHandler(evt:ErrorEvent):void
		{
			var fault:MethodFault = _rpc.getFault();
		}

	}
}</code></pre>
<p>Download CS4 AS3 <a href="http://www.christeso.com/labs/code/wordpressFlashNav.zip">FLA and Classes</a></p>
<p>Enjoy.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Wordpress%20Flash%20Navigation%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F&amp;t=Wordpress%20Flash%20Navigation" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F&amp;title=Wordpress%20Flash%20Navigation&amp;bodytext=lab" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F&amp;title=Wordpress%20Flash%20Navigation&amp;notes=lab" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F&amp;title=Wordpress%20Flash%20Navigation&amp;annotation=lab" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fwordpress-as3-flash-navigation%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/wordpress-as3-flash-navigation/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Portland Photographer &#8211; Chris Teso</title>
		<link>http://www.christeso.com/blog/index.php/portfolio/portland-photographer-chris-teso/</link>
		<comments>http://www.christeso.com/blog/index.php/portfolio/portland-photographer-chris-teso/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 00:14:47 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Flash Flickr CMS]]></category>
		<category><![CDATA[Flickr Api]]></category>
		<category><![CDATA[Flickr Photography Portfolio Website]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[portland photographer]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=634</guid>
		<description><![CDATA[Folio Lab]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.christeso.com/photography" target="_blank"><img title="Portland Photographer" src="http://www.christeso.com/blog/wp-content/uploads/2009/03/tesophoto.jpg" alt="Portland Photographer" width="100%" /></a></p>
<p>Over the last couple of years my addiction to taking pictures every day has grown in intensity. More recently this addiction has heightened my curiosity to a point of seriousity. You do realize that seriousity should have inclusion confirmation from Merriam-Webster. If truthiness can make in, seriousity should. Seriously. Ok, back to the point. I&#8217;m getting more serious about photography. I even purchased a serious <a href="http://www.dpreview.com/reviews/canoneos1dmkii/" target="_blank">camera</a>. Along with this serious camera, and an overabundance of seriousity about it&#8217;s use, I&#8217;ve gone and constructed myself a <a href="http://www.christeso.com/photography">website</a> dedicated to my photography. It is my hope that this will inspire and urge potential clients to contact me about my services.</p>
<p>The concept of the site is to take as much distraction out of the interface as possible to allow all focus on the content, the photography. I decided the entire site could be controlled by a small non intrusive control. I also wanted users to be able to interact with the photography by zoom and panning. Users also have the option to zoom out to see the full photo. Finally, I wanted a super easy way to content manage the site. Since I&#8217;m an avid Flickr user, its API was a natural CMS choice. I merely have to tag my photos in Flickr and they show up categorized on my site. I&#8217;m a big fan of <a href="http://www.christeso.com/index.php/portfolio/istream-a-flickr-vimeo-wordpress-google-controlled-website/">leveraging</a> the many publishing outlets I already use.</p>
<p>If you are a photographer, and are interested in owning a site similar to this one, chirp me.</p>
<p>Chris Teso &#8211; <a href="http://www.christeso.com/photography">Portland Photographer</a></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Portland%20Photographer%20-%20Chris%20Teso%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F&amp;t=Portland%20Photographer%20-%20Chris%20Teso" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F&amp;title=Portland%20Photographer%20-%20Chris%20Teso&amp;bodytext=Folio%20Lab" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F&amp;title=Portland%20Photographer%20-%20Chris%20Teso&amp;notes=Folio%20Lab" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F&amp;title=Portland%20Photographer%20-%20Chris%20Teso&amp;annotation=Folio%20Lab" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fportland-photographer-chris-teso%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/portfolio/portland-photographer-chris-teso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Music Visualization Engine and Generative Drawing</title>
		<link>http://www.christeso.com/blog/index.php/lab/music-visualization-engine-and-generative-drawing/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/music-visualization-engine-and-generative-drawing/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 20:53:45 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Actionscript Sound Visualization]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Music Visualization & Generative Drawing]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bytearray]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[floating-point value]]></category>
		<category><![CDATA[generative drawing]]></category>
		<category><![CDATA[portishead]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[SoundMixer.computeSpectrum]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=608</guid>
		<description><![CDATA[The Neural Orb from chris teso on Vimeo.
130 seconds of a music visualization engine and generative drawing built in AS3 using particles and physics engine.
See it in it&#8217;s 4:02 entirety HERE.
512 particles are released with instructions to randomly disperse throughout the scene. Variants include friction and wander. Particle location is constantly tracked and more particles [...]]]></description>
			<content:encoded><![CDATA[<p><object width="600" height="348"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3191128&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3191128&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="348"></embed></object><br /><a href="http://vimeo.com/3191128">The Neural Orb</a> from <a href="http://vimeo.com/user824020">chris teso</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>130 seconds of a music visualization engine and generative drawing built in AS3 using particles and physics engine.</p>
<p>See it in it&#8217;s 4:02 entirety <a href="http://www.christeso.com/labs/actionscript-3-sound-visualization-generative-drawing.asp">HERE</a>.</p>
<p>512 particles are released with instructions to randomly disperse throughout the scene. Variants include friction and wander. Particle location is constantly tracked and more particles are drawn at that location. These particles are sized and alpha&#8217;d according to stage location creating a &#8220;corridor&#8221;.</p>
<p>Music visualization occurs by looping through SoundMixer.computeSpectrum and creating a ByteArray. Each of the 512 particles are controlled the ByteArray which conveniently contains 512 bytes of data. Each byte contains a floating-point value. This value determines the individual particles scale and glow.</p>
<p>I hope to make this more interesting if/when I get some free time.</p>
<p>Music: All Mine | Portishead </p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Music%20Visualization%20Engine%20and%20Generative%20Drawing%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F&amp;t=Music%20Visualization%20Engine%20and%20Generative%20Drawing" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F&amp;title=Music%20Visualization%20Engine%20and%20Generative%20Drawing&amp;bodytext=The%20Neural%20Orb%20from%20chris%20teso%20on%20Vimeo.%0D%0A%0D%0A130%20seconds%20of%20a%20music%20visualization%20engine%20and%20generative%20drawing%20built%20in%20AS3%20using%20particles%20and%20physics%20engine.%0D%0A%0D%0ASee%20it%20in%20it%27s%204%3A02%20entirety%20HERE.%0D%0A%0D%0A512%20particles%20are%20released%20with%20instructions%20to%20r" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F&amp;title=Music%20Visualization%20Engine%20and%20Generative%20Drawing&amp;notes=The%20Neural%20Orb%20from%20chris%20teso%20on%20Vimeo.%0D%0A%0D%0A130%20seconds%20of%20a%20music%20visualization%20engine%20and%20generative%20drawing%20built%20in%20AS3%20using%20particles%20and%20physics%20engine.%0D%0A%0D%0ASee%20it%20in%20it%27s%204%3A02%20entirety%20HERE.%0D%0A%0D%0A512%20particles%20are%20released%20with%20instructions%20to%20r" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F&amp;title=Music%20Visualization%20Engine%20and%20Generative%20Drawing&amp;annotation=The%20Neural%20Orb%20from%20chris%20teso%20on%20Vimeo.%0D%0A%0D%0A130%20seconds%20of%20a%20music%20visualization%20engine%20and%20generative%20drawing%20built%20in%20AS3%20using%20particles%20and%20physics%20engine.%0D%0A%0D%0ASee%20it%20in%20it%27s%204%3A02%20entirety%20HERE.%0D%0A%0D%0A512%20particles%20are%20released%20with%20instructions%20to%20r" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmusic-visualization-engine-and-generative-drawing%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/music-visualization-engine-and-generative-drawing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Motion Detection and Typography</title>
		<link>http://www.christeso.com/blog/index.php/lab/motion-detection-and-typography/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/motion-detection-and-typography/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 21:11:44 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Motion Detection and Typography]]></category>
		<category><![CDATA[Webcam Motion Detection]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[concept]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[motion detection]]></category>
		<category><![CDATA[reactive]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=598</guid>
		<description><![CDATA[Lab]]></description>
			<content:encoded><![CDATA[<p><object width="600" height="338"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2829875&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2829875&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="338"></embed></object><br /><a href="http://vimeo.com/">Webcam Swarm &#8211; Motion Detection</a> from <a href="http://vimeo.com/user824020">chris teso</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Reactive installation concept idea for future interactive installation using motion detection.</p>
<p>Concept: Using Particles to conform to typography.</p>
<p>Picture this large. Now take that image and double it. That’s how I envision it. Giant.</p>
<p>Try it for yourself : <a href="http://www.christeso.com/labs/actionscript-3-Reactive-Art-Installation.asp" target="_blank">Reactive Motion Detection and Typography</a> [webcam es necessitous]</p>
<p>Permalink: http://www.christeso.com/index.php/lab/motion-detection-and-typography/</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Motion%20Detection%20and%20Typography%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F&amp;t=Motion%20Detection%20and%20Typography" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F&amp;title=Motion%20Detection%20and%20Typography&amp;bodytext=Lab" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F&amp;title=Motion%20Detection%20and%20Typography&amp;notes=Lab" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F&amp;title=Motion%20Detection%20and%20Typography&amp;annotation=Lab" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fmotion-detection-and-typography%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/motion-detection-and-typography/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BIT-101 Particle class in AS3</title>
		<link>http://www.christeso.com/blog/index.php/lab/bit-101-particle-class-in-as3/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/bit-101-particle-class-in-as3/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 23:49:39 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Actionscript Classes]]></category>
		<category><![CDATA[BIT 101 Particle Class]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bit 101]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[particle]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=593</guid>
		<description><![CDATA[lab]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" src="http://www.christeso.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfide0038a50a0b52007e4cfbd3d9f4070b6"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("http://www.christeso.com/flash/particleBIT101.swf","swfide0038a50a0b52007e4cfbd3d9f4070b6","700","370","9.0.0","http://www.christeso.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script></p>
<p>When I lived in AS2land I was extremely fond of <a href="http://www.bit-101.com/Particles/" target="_blank">Keith Peter&#8217;s Particle class</a>. It was so easy to implement and get things moving. It helped me build sweet node movement in <a href="http://208.106.254.58/" target="_blank">Call and Response</a> and mock up various other interfaces requiring physics engines. His class was simple but performed many cool particle animations with minimal effort and thus low cpu intensity. Moving to AS3 I&#8217;ve tried various other particle classes such as <a href="http://flintparticles.org" target="_blank">Flint </a>. I really dig Flint but it&#8217;s a tad bulky for rapid prototyping or those situations where you don&#8217;t need a heavy class. Therefore, I&#8217;ve rewritten Keiths partcle class ported from AS2 to AS3. I saw that Eric had tried to <a href="http://www.ericd.net/2007/11/as3-particle-class-release.html" target="_blank">rewrite it</a> but had some errors. Enjoy, and thanks <a href="http://www.bit-101.com/blog/" target="_blank">Keith</a>.</p>
<p>Source: <a href="http://www.christeso.com/labs/code/AS3Particle.zip">particleBIT101.zip</a></p>
<p><strong>Permalink:</strong> <span id="sample-permalink">http://www.christeso.com/index.php/lab/</span>bit-101-particle-class-in-as3</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=BIT-101%20Particle%20class%20in%20AS3%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F&amp;t=BIT-101%20Particle%20class%20in%20AS3" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F&amp;title=BIT-101%20Particle%20class%20in%20AS3&amp;bodytext=lab" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F&amp;title=BIT-101%20Particle%20class%20in%20AS3&amp;notes=lab" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F&amp;title=BIT-101%20Particle%20class%20in%20AS3&amp;annotation=lab" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fbit-101-particle-class-in-as3%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/bit-101-particle-class-in-as3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AS3 Polar Coordinates and Radians</title>
		<link>http://www.christeso.com/blog/index.php/lab/as3-polar-coordinates-and-radians/</link>
		<comments>http://www.christeso.com/blog/index.php/lab/as3-polar-coordinates-and-radians/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 06:21:44 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[AS3 Polar Coordinates and Radians]]></category>
		<category><![CDATA[Actionscript Classes]]></category>
		<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[polar coordinates]]></category>
		<category><![CDATA[radians]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=577</guid>
		<description><![CDATA[
Many times I&#8217;ve set up interfaces where I need to place different objects equidistant around a central object. The solution to this problem is to first calculate the angle of each object by converting Radians to Degrees. This can be expressed by the following formula



So, you simply need to loop through your collection of objects [...]]]></description>
			<content:encoded><![CDATA[<p><object  width="700" height="700"><param name="movie" value="/flash/radians.swf" /><embed src="/flash/radians.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="700" height="700"></embed></object></p>
<p>Many times I&#8217;ve set up interfaces where I need to place different objects equidistant around a central object. The solution to this problem is to first calculate the angle of each object by converting <a href="http://en.wikipedia.org/wiki/Radian" target="_blank">Radians</a> to Degrees. This can be expressed by the following formula</p>
<dl>
<dd><img class="tex" src="http://upload.wikimedia.org/math/c/5/7/c57a77f5af3b16eae6b37447051d9684.png" alt="1 \mbox{ rad} = 1 \cdot \frac {180^\circ} {\pi} \approx 57.2958^\circ " /></dd>
</dl>
<p>So, you simply need to loop through your collection of objects and assign each a different angle. After that you plug that angle into a new Polar Point.</p>
<pre><code>for(var i=0;i&lt;array.length;i++)
{
	var angle:Number = i*( 180/Math.PI )
	var coord:Point = Point.polar( circumference, angle )
}</code></pre>
<p>Here&#8217;s the complete source: <a href="http://www.christeso.com/labs/code/radians.zip">radians.zip</a></p>
<pre><code>package
{
	import flash.ui.*;
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;

	public class Main extends Sprite
	{

		/*
		========================================================
		| Private Variables                         | Data Type
		========================================================
		*/

		private var array:Array = new Array()
		private var circumference:int;

		/*
		========================================================
		| Constructor
		========================================================
		*/

		public function Main ()
		{
			stage.align = StageAlign.TOP_LEFT;

			// make some balls
			addParticle( 100 )

			menu.txtParticles.text = 'Particles: 100';

			stage.addEventListener( Event.ENTER_FRAME, runParticle )

			menu.slideCircumference.addEventListener( Event.CHANGE, changeCircumference );
			menu.particles.addEventListener( Event.CHANGE, changeParticles );

		}

		private function addParticle( num )
		{
			stage.removeEventListener( Event.ENTER_FRAME, runParticle )

			var tot:Number = array.length

			// kill mc's
			for( var t=0;t&lt;tot;t++ )
			{
				removeChild( array[t].mc );
			}

			// kill array
			for( var r=0;r&lt;tot;r++ )
			{
				array.shift();
			}

			trace( 'removed particles '+array.length )

			for( var d=0;d&lt;num;d++ )
			{
				var c:MovieClip = new MovieClip()
				c.name = "particle"
				c.graphics.beginFill( 0xffffff, 1 )
				c.graphics.drawCircle( 0, 0, 1 )
				c.graphics.endFill()
				addChild( c )

				array.push( { mc:c } )
			}

			trace( 'added particles '+array.length )

			changeCirc( circumference )

			stage.addEventListener( Event.ENTER_FRAME, runParticle )
		}

		private function runParticle( e:Event )
		{
			//trace( 'running' )
			graphics.clear()
			graphics.lineStyle( 1, 0xffffff, .1 )

			for(var i=0;i&lt;array.length;i++)
			{
				graphics.moveTo( stage.stageWidth/2, stage.stageHeight/2 )
				graphics.lineTo( array[i].mc.x, array[i].mc.y )
			}

		}

		private function changeCirc( c:int )
		{
			for(var i=0;i&lt;array.length;i++)
			{
				var angle:Number = i*( 180/Math.PI )
				var coord:Point = Point.polar( c, angle )

				array[i].mc.x = ( stage.stageWidth/2 ) + coord.x
				array[i].mc.y = ( stage.stageHeight/2 ) + coord.y
			}

			circumference = c
		}

		private function changeCircumference( e:Event ):void
		{
			menu.txtCircumference.text = 'Circumference: ' + e.target.value;
			changeCirc( e.target.value )
		}

		private function changeParticles( e:Event ):void
		{
			menu.txtParticles.text = 'Particles: ' + e.target.value;
			addParticle( e.target.value )
		}
	}
}</code></pre>
<p>Permalink: http://www.christeso.com/index.php/lab/as3-polar-coordinates-and-radians</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=AS3%20Polar%20Coordinates%20and%20Radians%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F&amp;t=AS3%20Polar%20Coordinates%20and%20Radians" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F&amp;title=AS3%20Polar%20Coordinates%20and%20Radians&amp;bodytext=%0D%0A%0D%0AMany%20times%20I%27ve%20set%20up%20interfaces%20where%20I%20need%20to%20place%20different%20objects%20equidistant%20around%20a%20central%20object.%20The%20solution%20to%20this%20problem%20is%20to%20first%20calculate%20the%20angle%20of%20each%20object%20by%20converting%20Radians%20to%20Degrees.%20This%20can%20be%20expressed%20by%20" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F&amp;title=AS3%20Polar%20Coordinates%20and%20Radians&amp;notes=%0D%0A%0D%0AMany%20times%20I%27ve%20set%20up%20interfaces%20where%20I%20need%20to%20place%20different%20objects%20equidistant%20around%20a%20central%20object.%20The%20solution%20to%20this%20problem%20is%20to%20first%20calculate%20the%20angle%20of%20each%20object%20by%20converting%20Radians%20to%20Degrees.%20This%20can%20be%20expressed%20by%20" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F&amp;title=AS3%20Polar%20Coordinates%20and%20Radians&amp;annotation=%0D%0A%0D%0AMany%20times%20I%27ve%20set%20up%20interfaces%20where%20I%20need%20to%20place%20different%20objects%20equidistant%20around%20a%20central%20object.%20The%20solution%20to%20this%20problem%20is%20to%20first%20calculate%20the%20angle%20of%20each%20object%20by%20converting%20Radians%20to%20Degrees.%20This%20can%20be%20expressed%20by%20" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Flab%2Fas3-polar-coordinates-and-radians%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/lab/as3-polar-coordinates-and-radians/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Snow &#8211; A Reactive Environment Installation</title>
		<link>http://www.christeso.com/blog/index.php/portfolio/snow-a-reactive-environment-installation/</link>
		<comments>http://www.christeso.com/blog/index.php/portfolio/snow-a-reactive-environment-installation/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 19:50:49 +0000</pubDate>
		<dc:creator>chris teso</dc:creator>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[North]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Reactive Environment Installation]]></category>
		<category><![CDATA[Snow - A Reactive Environment Installation]]></category>
		<category><![CDATA[Webcam Motion Detection]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[dmi]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[motion detection]]></category>
		<category><![CDATA[oregon]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[reactive environment]]></category>

		<guid isPermaLink="false">http://www.christeso.com/?p=547</guid>
		<description><![CDATA[folio]]></description>
			<content:encoded><![CDATA[<p><object width="600" height="405"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2566287&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=1&amp;color=ffffff&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2566287&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=1&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="405"></embed></object><br /><a href="http://vimeo.com/2566287">Snow &#8211; Interactive Installation</a> from <a href="http://vimeo.com/user824020">chris teso</a> on <a href="http://vimeo.com">Vimeo</a>. Commercial produced <a href="http://www.north.com" target="_blank">North</a>.</p>
<h2>Project Client</h2>
<p>City of Portland Downtown Marketing Initiative in conjunction with North.</p>
<h2>Project Goal</h2>
<p>Create an outdoor reactive environment in which passersby could interact,  based on their location and movements, with artists interpretations of snowfall in Portland.</p>
<h2>Project Strategy and Equipment</h2>
<p><strong>Display</strong> &#8211; Custom made acrylic panels lined with photosensitive film built and erected to exact dimensions of installation window<br />
<strong>Projection</strong> &#8211; Rear projection with flipped signal using a 5200 lumen <a href="http://www.projectorcentral.com/Sanyo-PDG-DXT10L.htm" target="_blank">Sanyo PDG-DXT10L Projector</a><br />
<strong>Video Capture</strong> &#8211; <a href="http://www.logitech.com/index.cfm/webcam_communications/webcams/devices/4528&amp;cl=us,en" target="_blank">Logitech QuickCam® Vision Pro</a><br />
<strong>CPU</strong> &#8211; Mac Pro Quad<br />
<strong>Application</strong> &#8211; Flash AS3<br />
<strong>Industrial Design</strong> &#8211; Two large tarps sewn together to create light blocking canopy. Lining to seal off windows and acrylic. A shitload of Velcro.</p>
<h2>Project Synopsis</h2>
<p>As part of a larger campaign to brand Downtown Portland North was charged with creating an outdoor reactive environment in which passersby could interact, based on their location and movements, with artists interpretations of snowfall in Portland. Three traditional artists were commissioned by The Portland Institute for Contemporary Art to create their interpretation of snowfall in downtown Portland. These pieces were then transformed for use with my motion detection and tracking application built entirely in actionscript. The application was built to display 3 different scenes with randomly generated snowfall. The three scenes were set to rotate on a time interval. The application used motion detection to make the falling snowfall react and animate based on the location of an individuals movement. The application also incorporated and automated snapshot function that took a photo every 10 minutes and posted it to a private flickr account. This function was implemented solely for remote monitoring, ensuring the application was up and running. After going to the installation location and taking careful measurement of everything from window frame to projector distance, the installation was built and staged at North. We built a &#8216;to scale&#8217; model of the window in the back of the office. This was necessary for accurate calibration of projector, and optimization of motion detection and tracking code. The staging was an extremely helpful and necessary step in eliminating early stage bugs such as projector calibration and camera positioning. We quickly learned the maximum distance for a USB signal, the proper use of DVI vs. DHMI to projector and the challenges of doing motion detection in every possible light range from complete darkness to bright sunshine. After testing stage was complete we moved the entire rig over to the installation spot located at 6th and Alder in Downtown Portland. We went about setting up a canopy to block out all extraneous light leak. The interior of the installation space was two stories of extremely large windows. The canopy we chose was a homemade compilation of two tarps strung up to the surrounding walls with rope. Since there was very expensive equipment residing under the canopy, the fear lingered of canopy failure collapsing down, resulting in devastating loss. We next set out to install the panels into the window frame. Since they were pre-cut to exact dimensions these flowed right in smoothly with only small light leaks needed to be sealed. We then hooked up the projector, cpu, camera, monitor, and application and set to testing. Testing in a staging environment is one thing. However, most tests are rendered moot when on-site. I quickly learned that reactive environments are just that, entirely dependent on their environment and all the challenges that come along with it. The motion detection is to run 24/7 for six weeks during all weather, lighting situations, and process location accurately with varying levels of distractions. Since the installation is located on an extremely busy downtown street corner, distractions ranged from traffic movement, pedestrians, bikers, storefront lights and weather. For testing purposes I built many functions that allows the system to be calibrated without actually going into the code, but rather using an external UI to update blurring, light detection levels, contrast, and other variables. After several days of calibration, code tweaks and testing the application has been running uninterrupted and has gained quality exposure for Downtown Portland. Many fine citizens of Portland have had a unique interactive experience, and have consequently spread kind words about the project. Furthermore, the project is a successful case study on the implementation of new technology and reactive medium into a larger branding campaign.</p>
<h2>Project Challenges</h2>
<p><strong>Development</strong> &#8211; Create a motion detection application that worked in every possible light and weather condition.<br />
<strong>Design</strong> &#8211; Making traditional raster art work work in a complex location detection application and animation.<br />
<strong>Industrial Design</strong> &#8211; Create an environment that optimized presentation and functionality in varying environmental variables.</p>
<p><a href="http://www.christeso.com/index.php/lab/interactive-installation-testing-tribulations-and-nerdery/">More information on the design and development process</a></p>
<p>Permalink: http://www.christeso.com/index.php/portfolio/snow-a-reactive-environment-installation</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow" id="twitter"  target="_blank" href="http://twitter.com/home?status=Snow%20-%20A%20Reactive%20Environment%20Installation%20-%20http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F" title="Twitter"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="facebook"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F&amp;t=Snow%20-%20A%20Reactive%20Environment%20Installation" title="Facebook"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="digg"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F&amp;title=Snow%20-%20A%20Reactive%20Environment%20Installation&amp;bodytext=folio" title="Digg"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="del.icio.us"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F&amp;title=Snow%20-%20A%20Reactive%20Environment%20Installation&amp;notes=folio" title="del.icio.us"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow" id="google"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F&amp;title=Snow%20-%20A%20Reactive%20Environment%20Installation&amp;annotation=folio" title="Google Bookmarks"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow" id="print"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.christeso.com%2Fblog%2Findex.php%2Fportfolio%2Fsnow-a-reactive-environment-installation%2F&amp;partner=sociable" title="Print"><img src="http://www.christeso.com/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.christeso.com/blog/index.php/portfolio/snow-a-reactive-environment-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
