<?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>Beats, Apps, &#38; Gfx</title>
	<atom:link href="http://blog.leefernandes.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.leefernandes.com</link>
	<description>A savory blend of app development, ui design, &#38; music production.</description>
	<lastBuildDate>Tue, 07 Sep 2010 03:19:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>AS3 Lightweight TouchList</title>
		<link>http://blog.leefernandes.com/as3/as3-lightweight-touchlist/</link>
		<comments>http://blog.leefernandes.com/as3/as3-lightweight-touchlist/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 21:22:05 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript 3 touch-list]]></category>
		<category><![CDATA[AS3 TouchList]]></category>
		<category><![CDATA[flash list]]></category>
		<category><![CDATA[flash scrolling list]]></category>
		<category><![CDATA[flash touchlist]]></category>
		<category><![CDATA[Flash twitter client]]></category>
		<category><![CDATA[infinite scroll list]]></category>
		<category><![CDATA[touch scroll list]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=1104</guid>
		<description><![CDATA[You're free to define your list-items with the only restriction that they subclass DisplayObject.  Large lists only ever instantiate enough list-items to fill the visible scroll-area, and recycle pooled objects.]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE</strong>: Using .scrollRect to scroll, and using Twitter search results for data source in demo.</p>
<p><strong>UPDATE</strong>:  Added inertia to scroll &#038; snapPixels.  Thanks <a href="http://twitter.com/danro" target="_blank">@danro</a>!</p>
<p><strong>UPDATE</strong>:  Added snapping to topmost list item using <a href="http://code.google.com/p/tweenman/" target="_blank">TweenMan</a>, and scrollY threshold.</p>
<p>I&#8217;m developing a lightweight touchlist component with current minimal specs:</p>
<p>	- the list is the scrollbar, for touch-based scrolling<br />
	- addItem method accepts any subclass of DisplayObject<br />
	- exposed &#8216;buildRequest&#8217; <a href="http://wiki.github.com/robertpenner/as3-signals/features" target="_blank">Signal</a> for DisplayObject factory<br />
	- pool children outside of defined scroll-area for reuse<br />
	- infinite scroll loop</p>
<p>A usage benefit is that you&#8217;re free to define your list-items, and they can vary in height, with the only restriction that they subclass DisplayObject.  A performance benefit is that large lists only ever instantiate enough list-items to fill the visible scroll-area, and can recycle pooled objects.  I&#8217;ll be continuing development on this component, adding further enhancements, and API methods such as physics &#038; list-edit methods.  Please message me if you&#8217;re interested in being involved and contributing.  I hope to open-source the TouchList &#038; host it on github, any assistance is appreciated &#038; would quicken the process.</p>
<div id="touchList">
</div>
<p>In the FLA library I create a Sprite and design the look of my TouchList.  In the linkage panel I set the class to TouchList.  You could also handle the instantiation of a TouchList in AS and/or subclass it. I define the number of DisplayObject items available to the TouchList in an init method.<br />
<img src="/resources/images/libraryLinkage.png" /></p>
<p>myList	= getChildByName( &#8216;myTouchList&#8217; ) as TouchList;<br />
myList.buildRequest.add( buildItemAt );<br />
myList.init( xml.length() );</p>
<p>On the buildRequest handler I instantiate a DisplayObject or reuse a pooled DisplayObject if one is supplied in the buildRequest event.  I use event-parameter &#8220;index&#8221; to target the XML child data for our DisplayObject.  In the FLA library, I have a Sprite that contains a TextField exported as MyItem.<br />
<img src="/resources/images/linkageMyItem.png" /></p>
<pre>
function buildRequestHandler( e:TouchListEvent ) : void
{
	var listItem:MyItem = e.item ? e.item as MyItem : new MyItem();
	listItem.text = xml.children()[ e.index ];
	_touchList.addItem( listItem, e );
}
</pre>
<p><script type="text/javascript">
addTouchListDemo( '_TouchListDemo_v.2.5.swf' );
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/as3/as3-lightweight-touchlist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fragmentation ruins the HTML5 audio element</title>
		<link>http://blog.leefernandes.com/flash/html5-audio-player/</link>
		<comments>http://blog.leefernandes.com/flash/html5-audio-player/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 15:52:56 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[fragmented audio element]]></category>
		<category><![CDATA[html audio player]]></category>
		<category><![CDATA[html5 audio player]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=950</guid>
		<description><![CDATA[We do a lot of work with audio-players, usually in <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash</a>, so naturally I wanted to explore HTML5's new audio element.]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" src="/resources/js/jquery.iwebplayer.js"></script></p>
<link rel="stylesheet" href="/resources/css/iwebplayer.side.css" type="text/css">
<table>
<tr>
<td>
<img style="vertical-align:top;" src='/resources/images/html icon.png' width='40' height='40' /></td>
<td>
<div id="iwebplayer1" class="iwebplayer">
<div class="container">
<ul>
<li class="controls">
<div class="controlContainer">
<p class="timeField">
<p>                    	<img class="toggle" src="/resources/images/play.png" /></p>
<p class="durationField">
</p></div>
</li>
<li class="scrubberBackground">
<div class="scrubber"></div>
</li>
</ul>
<p>            <audio class="audioElement"><br />
                        <source src="/audio/Muck Up.mp3" /><br />
                        <source src="/audio/Muck Up.ogg" /><br />
                Your browser does not support the HTML5 <code>audio</code> element. Use <a href="http://google.com/chrome" target="_blank">Chrome</a><br />
            </audio>
        </div>
</p></div>
</td>
</tr>
</table>
<table>
<tr>
<td>
<img style="vertical-align:top;" src='/resources/images/flash icon.png' width='40' height='40' /></td>
<td>
<div id="playerDiv">
<p style="color:#FFF; font-family:Arial, Helvetica, sans-serif;">Requires <a href="http://get.adobe.com/flashplayer" target="_blank">Flash Player.</a> <br /> Available here: <a href=" http://get.adobe.com/flashplayer" target="_blank">http://get.adobe.com/flashplayer</a></p>
</div>
</td>
</tr>
</table>
<p style="font-size:10px; margin-left:48px;">The audio are beats I&#8217;ve produced.</p>
<p>We do a lot of work with audio-players, usually in <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash</a>, so naturally I wanted to explore HTML5&#8242;s new audio element.  The top player above is an all HTML5/CSS/JS player, and the one beneath it is Flash.</p>
<p>Unfortunately HTML is yet again tainted by cross-browser fragmentation.  <a href="https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements" target="_blank">Firefox won&#8217;t support the MP3 audio-format</a>, and the others won&#8217;t support the OGG audio format.  It&#8217;s nonsense to expect music libraries support multiple file-formats in 2010, especially when they can easily weigh terabytes, and virtually everyone maintains an mp3 library.  Firefox users will notice that the player doesn&#8217;t look quite as slick as it does in <a href="http://www.google.com/chrome" target="_blank">Chrome</a>, or Safari, because CSS is still fragmented.  And I just don&#8217;t have the time/patience to mess around with cross-browser inconsistencies when Flash can easily publish to all browsers that I care about ( <a href="http://blog.leefernandes.com/flash/steve-jobs-is-full-of-it/" target="_blank">sorry iOS</a> ) without the added hassle.  Flash also offers better performance, more capabilities ( HTML might offer in 2020 ), and if you leverage frameworks, like <a href="http://osmf.org/" target="_blank">OSMF</a>, it&#8217;s cake.  We&#8217;re still waiting on <a href="http://ie.microsoft.com/testdrive/" target="_blank">IE9</a>, which should support <a href="http://dev.w3.org/html5/spec/Overview.html#audio" target="_blank">HTML5&#8242;s audio element</a>, so don&#8217;t expect this to load in IE8.  Another drawback I experienced, is that when loading audio from a <a href="http://blog.leefernandes.com/as3/osmf-php-gateway/" target="_blank">PHP Gateway</a>, Safari was able to seek to variable time-positions, whereas Chrome could only play &#038; pause, and was unable to seek.</p>
<p>In final judgement, you could spend the time to make the HTML5 audio player more cross-browser friendly, and look slicker, but Flash development is cleaner, better for the environment <span style="font-size:9px;">( less time spent at workstation handling browser fragmentation = less power consumed  ; p )</span>, has an advanced API, and is cross-browser w/out the hassle. Ultimately there are too many fail-points with HTML5 audio to be considered for active projects at this time, and although beat by web-plugin capabilities, it&#8217;s nice to see HTML5&#8242;s audio element coming along.<br />
<script type="text/javascript" src="/resources/js/flashAudio.js"></script><br />
<script type="text/javascript">
<!--
addFlashAudio();
//--></script>Using the Flash-built audio-player on your own site is as easy as <a href="http://blog.leefernandes.com/share/swfAudioPlayer_v1.swf" target="_blank">downloading the SWF</a>, and embedding with <a href="http://code.google.com/p/swfobject/" target="_blank">swfobject</a>.</p>
<pre>&lt;script type="text/javascript" /&gt;
	var flashvars = {};
		flashvars.src	= 'pathToMy.mp3';
		flashvars.album	= 'myAlbumTitle';
	swfobject.embedSWF("swfAudioPlayer_v1.swf",
	"swfAudioPlayerDiv", "440", "95", "10", "expressInstall.swf",
	flashvars);
&lt;/script&gt;
<div id="swfAudioPlayerDiv">
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/flash/html5-audio-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSMF + PHP Gateway</title>
		<link>http://blog.leefernandes.com/as3/osmf-php-gateway/</link>
		<comments>http://blog.leefernandes.com/as3/osmf-php-gateway/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 01:24:16 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[AudioElement]]></category>
		<category><![CDATA[osmf]]></category>
		<category><![CDATA[PHP Gateway]]></category>
		<category><![CDATA[SoundLoader]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=920</guid>
		<description><![CDATA[If you're wondering why OSMF isn't loading audio from your PHP gateway, here's why.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re wondering why OSMF isn&#8217;t loading audio from your PHP gateway, here&#8217;s why.  OSMF Loader&#8217;s, such as SoundLoader, use the URLResource to check whether they&#8217;re able to load the element&#8217;s resource.  If you don&#8217;t explicitly set the URLResource.mediaType, or mimeType, it searches URLResource.url for compatible extensions <code>url.path.search(/\.mp3$/i) != -1)</code>  So set the mediaType &#038; mimeType of the URLResource before passing it to the AudioElement, that&#8217;s it!<br />
<code><br />
var resource:URLResource	= new URLResource( "gateway.php" );<br />
resource.mediaType		= MediaType.AUDIO;<br />
resource.mimeType		= 'audio/mpeg';<br />
</code></p>
<p>Optionally another great idea put forth by Andrian is using mod_rewrite to replace your .php gateway extension with .mp3.<br />
<code><br />
Options +FollowSymlinks<br />
RewriteEngine on<br />
RewriteRule ^(Gateway)\.mp3$ $1.php [nc]<br />
</code></p>
<p>Lastly you could hack up org.osmf.elements.SoundLoader.as and on line 120 add an OR condition for <code>"url.path.search(/\.yourextension$/i) != -1);"</code></p>
<p><i>Thanks to Andrian Cucu for pointing out the mediaType &#038; mimeType properties of URLResource!</i></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/as3/osmf-php-gateway/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5 Canvas drawImage()</title>
		<link>http://blog.leefernandes.com/for-fun/html5-canvas-drawimage/</link>
		<comments>http://blog.leefernandes.com/for-fun/html5-canvas-drawimage/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 02:11:17 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[For Fun]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[canvas.drawImage()]]></category>
		<category><![CDATA[drawImage]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 canvas]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=809</guid>
		<description><![CDATA[If you've used AS3's Graphics, or BitmapData classes then you'll find the canvas element to be familiar.  Here's one way you might write the next snow effect using HTML &#038; JS.]]></description>
			<content:encoded><![CDATA[<div id="canvasContainer" style="margin-left:-20px; margin-top:-50px; margin-bottom:-470px;"><canvas id="canvas" width="640" height="500"></canvas></div>
<p>If you&#8217;ve used AS3&#8242;s Graphics, or BitmapData classes then you&#8217;ll find the canvas element to be familiar.  Mozilla has a tutorial on <a href="https://developer.mozilla.org/en/canvas_tutorial" target="_blank">using the canvas element.</a>  I still prefer Flash&#8217;s authoring tools &amp; Actionscript 3 for programmatic animation.  But here&#8217;s one way you might write the next <a href="http://webroo.org/media/snowfall/canvassnowfall.html" target="_blank">snow effect</a> using the canvas element.</p>
<p style="font-size: 9px;">*Notice: As fervently noted by <a href="http://twitter.com/killerspaz" target="_blank">@killerspaz</a> this isn&#8217;t accomplishing an animation feat that dhtml, or web-plugins haven&#8217;t had finessed for centuries. Head over to <a href="http://chromeexperiments.com/" target="_blank">chromeexperiments.com</a>, or <a href="http://html5demos.com" target="_blank">html5demos.com</a>, or apple&#8217;s <a href="http://www.apple.com/html5" target="_blank">html5 demos</a> for more HTML5 examples.</p>
<pre>
var pooledImg		= [ 'airplaneBlue.png', 'balloonRed.png' ];
var animatingImg	= [];
var context;

var $j = jQuery.noConflict();
$j(document).ready( initDemo );

function initDemo()
{
	var canvas	= document.getElementById( 'canvas' );
	canvas.clear	= true;
	canvas.fillColor= "#FFFFFF";
	context		= canvas.getContext( '2d' );
	animateImg();
	$j(document).everyTime( 50, drawToCanvas );
	$j(document).everyTime( 4000 + ( Math.random() * 4500 ), animateImg );
};

function animateImg()
{
	if( pooledImg.length )
	{
		var src			= randomImage();
		var imgObj		= new Object();
		var img			= new Image();
		img.onload		= function()
		{
			imgObj.x	= canvas.width;
			imgObj.offsetY	= ( Math.random() -.5 ) * .5;
			imgObj.speed	= Math.random() + 1;
			imgObj.y	= Math.round( Math.random() * canvas.height )
			context.drawImage( img, imgObj.x, imgObj.y );
		}
		img.src			= '/resources/images/canvasDemo/'+src;
		imgObj.img		= img;
		animatingImg[ src ] = imgObj;
	}
};

function drawOnCanvas()
{
	context.clearRect( 0, 0, canvas.width, canvas.height );
	context.fillStyle = '#FFFFFF';
	context.fillRect( 0, 0, 0, canvas.width, canvas.height );
	var imgObj;
	for ( var name in animatingImg )
	{
		imgObj = animatingImg[ name ];
		if( imgObj.x < 0-imgObj.img.width || imgObj.y < 0-imgObj.img.height )
		{
			pooledImg.push( name );
			delete( animatingImg[ name ] );
		} else
		{
			imgObj.x -= imgObj.speed;
			imgObj.y += imgObj.offsetY;
			context.drawImage( imgObj.img, imgObj.x, imgObj.y );
		}
	}
};

function randomImage()
{
	var index	= Math.floor( Math.random() * pooledImg.length-1 );
	return pooledImg.splice( index, 1 );
};
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/for-fun/html5-canvas-drawimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter crossdomain.xml</title>
		<link>http://blog.leefernandes.com/php/twitter-crossdomain-xml/</link>
		<comments>http://blog.leefernandes.com/php/twitter-crossdomain-xml/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 21:19:39 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[crossdomain.xml]]></category>
		<category><![CDATA[flash twitter api]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[twitter crossdomain]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=799</guid>
		<description><![CDATA[I recently needed to retrieve XML from a public user's tweets without oauth, and discovered Twitter no longer allows external domains to access the twitter api in their crossdomain.xml file.]]></description>
			<content:encoded><![CDATA[<p>I recently needed to retrieve XML from a public user&#8217;s tweets without oauth, and discovered Twitter no longer allows external domains to access the twitter api in their crossdomain.xml file.  Using URLLoader would generate a &#8220;Security sandbox violation&#8221; error.  To get around this host a PHP script that echo&#8217;s file_get_contents( &#8220;http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=$_GET['screen_name']&#8221; ) and pass the script&#8217;s URL to URLRequest.  Problem solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/php/twitter-crossdomain-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MultiKeyMaster &#8211; Simultaneous AS3 Keyboard Events</title>
		<link>http://blog.leefernandes.com/as3/multikeymaster-simultaneous-as3-keyboardevents/</link>
		<comments>http://blog.leefernandes.com/as3/multikeymaster-simultaneous-as3-keyboardevents/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 22:19:49 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript events]]></category>
		<category><![CDATA[actionscript keyboard combination]]></category>
		<category><![CDATA[as3 key combination library]]></category>
		<category><![CDATA[as3 keyboard event library]]></category>
		<category><![CDATA[as3 multi key]]></category>
		<category><![CDATA[as3 multiple key library]]></category>
		<category><![CDATA[as3 multiple key press]]></category>
		<category><![CDATA[AS3 multiple keyboard events]]></category>
		<category><![CDATA[keyboard events]]></category>
		<category><![CDATA[simultaneous keys]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=735</guid>
		<description><![CDATA[A lightweight class for simultaneous key events, such as pressing "shift +", or "command s".]]></description>
			<content:encoded><![CDATA[<p>A lightweight class for simultaneous key events, such as pressing &#8220;shift +&#8221;, or &#8220;command s&#8221;.  There are a few great solutions created by others in the community, but they are typically intended for games, and implement extra features which aren&#8217;t needed in a typical UI.  So here is a lightweight package, approx less than 100 lines.  It uses Rob Penner&#8217;s <a href="http://github.com/robertpenner/as3-signals" target="_blank">&#8220;Signals&#8221;</a> package for event handling, which is awesome btw.</p>
<p>You can listen for strict combinations ( only the specified keys ) or ignore if the user entered an extra key or two.</p>
<p>Example AS3:</p>
<pre style="color:#9F1F51;">
var ryu:MultiKey = new MultiKey( [82, 89, 85] );
    ryu.entered.add( ryuCharacter.jumpKick );	

var listener:MultiKeyMaster = new MultiKeyMaster( stage )
    listener.addMultiKeys( ryu );
</pre>
<p></p>
<p><strong>UPDATE:</strong> You can listen for Javascript key events, in order to bypass the need for users to click your SWF before receiving key events.  To use Javascript key events add the javascript includes to your HTML, set multikeymaster.id to your SWF id, and do not pass a target to the MultiKeyMaster constructor.</p>
<p>Example Javascript:</p>
<pre style="color:#9F1F51;">
&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.hotkeys.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.hotkeys.multikeymaster.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
	var swfid = 'SWF';
	multikeymaster.id = swfid;
	swfobject.embedSWF("MultiKeyMaster.swf", swfid);
&lt;/script&gt;
</strong>
</pre>
<p></p>
<p>Checkout the interactive <a href="http://blog.leefernandes.com/share/MultiKeyMaster" target="_blank">MultiKeyMaster DEMO</a> featuring Ryu!</p>
<p><a href="http://blog.leefernandes.com/share/MultiKeyMaster" target="_blank"><img src="/resources/images/ryu.jpg" width="400" height="315"></a></p>
<p>Or download the <a href="/share/MultiKeyMaster/MultiKeyMaster.zip" target="_blank">SWC, source &#038; demo files.</a></p>
<p><strong>NOTE</strong> There&#8217;s a bug with Flash Player and the command-key on a Mac.  KEY_UP events do not dispatch for keys released while the command-key is down.  The best workaround I&#8217;ve found &#038; implemented is removing all KEY_DOWN references when the command-key is released, otherwise you end up with false positives.  In my experience it is most confusing &#038; problematic when you press the + key, and suddenly an event fires intended for a &#8220;command +&#8221; key combination.  Hopefully Adobe will fix this.  Please vote for it in the <a href="https://bugs.adobe.com/jira/browse/FP-5089" target="_blank">Flash Player Bug Reporting System</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/as3/multikeymaster-simultaneous-as3-keyboardevents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emergent Collective One</title>
		<link>http://blog.leefernandes.com/music-production/emergent-collective-one/</link>
		<comments>http://blog.leefernandes.com/music-production/emergent-collective-one/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 15:38:40 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[Music Production]]></category>
		<category><![CDATA[developer music]]></category>
		<category><![CDATA[emergent]]></category>
		<category><![CDATA[emergent collective]]></category>
		<category><![CDATA[emergent collective one]]></category>
		<category><![CDATA[free mp3s]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=723</guid>
		<description><![CDATA[Developers do more than program your software.  Just kidding.  But a nascent trend to become more human has inspired a few of us to program your music as well.]]></description>
			<content:encoded><![CDATA[<p>Developers do more than program your software.  Just kidding.  But a nascent trend to become more human has inspired a few of us to program your music as well.  <a href="http://fracturedvisionmedia.com/FVM005/" target="_blank">Emergent Collective One</a> is such a developer produced compilation, with a variety of stylistic signatures, including my own banger, &#8220;PHP&#8221;.</p>
<p>Listen &#038; download mp3&#8242;s <a href="http://fracturedvisionmedia.com/FVM005/" target="_blank">here.</a><br />
<a href="http://fracturedvisionmedia.com/FVM005/" target="_blank"><img src="/resources/images/emergent.jpg" width="515" height="518" /></a></p>
<p>There are eleven tracks including an introduction.  Featured artists include James Allen, Partition 36, My Brother And I, myself, Jazpicious, The Compilers, Sea of Arrows, Sean McCracken, An Early Morning Letter Displaced, Bugbear, and Sleepwalker.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/music-production/emergent-collective-one/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fun with Arduino</title>
		<link>http://blog.leefernandes.com/gadgets/fun-with-arduino/</link>
		<comments>http://blog.leefernandes.com/gadgets/fun-with-arduino/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 19:04:05 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[adafruit]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[arduino resources]]></category>
		<category><![CDATA[parallax]]></category>
		<category><![CDATA[relay]]></category>
		<category><![CDATA[RF link]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=711</guid>
		<description><![CDATA[Getting started with Arduino is a lot of fun.  Here are some resources I've found for parts, as well as some great video's to help you sort things out &#038; find motivation.]]></description>
			<content:encoded><![CDATA[<p>Getting started with Arduino is a lot of fun.  Here are some resources I&#8217;ve found for parts, as well as some great video&#8217;s to help you sort things out &#038; find motivation.</p>
<p><strong>Supplies</strong><br />
<a href="http://www.arduino.cc/" target="_blank">Arduino</a><br />
<a href="http://www.sparkfun.com/commerce/categories.php" target="_blank">SparkFun</a><br />
<a href="https://www.parallax.com/" target="_blank">Parallax</a><br />
<a href="http://www.liquidware.com/" target="_blank">LiquidWare</a><br />
<a href="http://www.adafruit.com/" target="_blank">AdaFruit</a><br />
<a href="http://www.digikey.com/" target="_blank">DigiKey</a></p>
<p><strong>Videos</strong><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Qc6DKDFwg9c&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Qc6DKDFwg9c&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/q_Q5s9AhCR0&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/q_Q5s9AhCR0&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/VPVoY1QROMg&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VPVoY1QROMg&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/-td7YT-Pums&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-td7YT-Pums&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/1hPh-PO2U24&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1hPh-PO2U24&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/E_GcoicsNJs&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/E_GcoicsNJs&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/FKj9jJgj8Pc&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FKj9jJgj8Pc&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Te5YYVZiOKs&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Te5YYVZiOKs&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/TMebT1OKp_Y&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TMebT1OKp_Y&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/CWdm5Oi24WU&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CWdm5Oi24WU&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/gadgets/fun-with-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Export iTunes Playlists to Android</title>
		<link>http://blog.leefernandes.com/gadgets/syncing-itunes-playlists-on-android/</link>
		<comments>http://blog.leefernandes.com/gadgets/syncing-itunes-playlists-on-android/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 07:32:42 +0000</pubDate>
		<dc:creator>leefernandes</dc:creator>
				<category><![CDATA[Gadgets]]></category>

		<guid isPermaLink="false">http://blog.leefernandes.com/?p=694</guid>
		<description><![CDATA[Google showed off a slick OTA ( over-the-air ) sync in Android 2.3 code-named "Gingerbread".  You can see it <a href="http://www.youtube.com/watch?v=dttyQo3BPrk" target="_blank">here.</a>  But loading music playlists on Android isn't a user-friendly experience yet.  Here's how to use iTunes to manage playlists, and manually export to Android.]]></description>
			<content:encoded><![CDATA[<p>Google showed off a slick OTA ( over-the-air ) sync in Android 2.3 code-named &#8220;Gingerbread&#8221;.  You can see it <a href="http://www.youtube.com/watch?v=dttyQo3BPrk" target="_blank">here.</a>  But right now managing music playlists on Android isn&#8217;t a user-friendly experience.  It&#8217;s easy to browse your music by album, or artist, and it&#8217;s sweet being able to create &#038; edit playlists on the device, as well as email mp3&#8242;s on the road, but migrating large playlists could use some of that tender Google UX attention.  There are a few 3rd party apps ( free ) worth mentioning that are promising.  They easily import your iTunes playlists, and sync effortlessly.  <a href="http://www.instinctiv.com" target="_blank">Instinctiv</a>, and <a href="http://www.doubletwist.com" target="_blank">Doubletwist</a> are the most noteable.  But I keep my music library on a networked drive, shared by several workstations, and where this sorta works alright with iTunes, it&#8217;s consistent fail-whale with Instinctiv, and Doubletwist.  The experience is buggy enough that I&#8217;ve given up on both apps.  In their defense, they&#8217;re both in beta stages, and probably work better with a local music library.</p>
<p>So here&#8217;s how to use iTunes to manage playlists, and manually export to Android.</p>
<p>Tell iTunes to keep the iTunes Media folder organized, and Copy files to iTunes media folder when adding to library. I&#8217;ve specified a folder titled &#8220;Music&#8221; on my Shared Volume.  This is done in iTunes > Preferences > Advanced Tab<br />
<img src="/resources/images/sync1.jpg" /></p>
<p>Mount your device, and create a folder titled &#8220;Music&#8221; on the device&#8217;s root directory, if it doesn&#8217;t already exist.  This &#8220;Music&#8221; folder will mirror the iTunes Music folder.  Next create a folder titled &#8220;Playlist&#8221; in the Music folder.<br />
<img src="/resources/images/sync2.jpg" /></p>
<p>In iTunes right-click your playlist and export a .m3u file to the &#8220;Playlist&#8221; folder you created on the mounted device.<br />
<img src="/resources/images/sync3.jpg" /></p>
<p>Drag &#038; Drop <strong>the contents</strong> of the iTunes Music folder to your Android device&#8217;s Music folder, or selectively drop whatever you&#8217;ve recently updated.  If you use the default local iTunes location it is, Macintosh HD/Users/YourUsername/Music/iTunes/iTunes Media/<strong>Music</strong><br />
<img src="/resources/images/sync4.jpg" /></p>
<p>Unmount  your device.  Go do your thing.<br />
<img src="/resources/images/dj.jpg" /></p>
<p>It&#8217;s not as elegant as iTunes, but until an Android music manager bulletproof&#8217;s sync it&#8217;s better than dealing with buggy sync-ware, in my opinion.  Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leefernandes.com/gadgets/syncing-itunes-playlists-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
