<?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>CuriousFind &#187; Uncategorized</title>
	<atom:link href="http://www.curiousfind.com/blog/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://www.curiousfind.com/blog</link>
	<description>Web development by Jamie McDaniel</description>
	<lastBuildDate>Sun, 14 Feb 2010 05:46:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>This is the Kind of Thing I Would Have Done in Flash</title>
		<link>http://www.curiousfind.com/blog/204</link>
		<comments>http://www.curiousfind.com/blog/204#comments</comments>
		<pubDate>Sun, 14 Feb 2010 05:32:27 +0000</pubDate>
		<dc:creator>Jamie McDaniel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.curiousfind.com/blog/?p=204</guid>
		<description><![CDATA[Flash owns rich internet applications, and the Flex framework is where I spend a lot of my time now.  But I still do projects for clients in Flash like banner ads (using Greensock&#8217;s Tweening Platform), online presentations, and interactive widgets.
Since I am good at Flash, I tend to favor it over JavaScript for cranking [...]]]></description>
			<content:encoded><![CDATA[<p>Flash owns rich internet applications, and the Flex framework is where I spend a lot of my time now.  But I still do projects for clients in Flash like banner ads (using Greensock&#8217;s Tweening Platform), online presentations, and interactive widgets.</p>
<p>Since I am good at Flash, I tend to favor it over JavaScript for cranking out those rotating banners and such.  However, it is neat to see what things are now being done via JavaScript where there used to be a SWF.  And it is good for those skilled with Flash to ask the question of whether a SWF is still the best choice for these things.</p>
<p>Apple&#8217;s <a href="http://www.apple.com/itunes/10-billion-song-countdown/">iTunes countdown</a> is the example that prompted this post.  When I saw it I was curious about how it worked.  Here&#8217;s the <a href="http://images.apple.com/itunes/10-billion-song-countdown/images/counter_filmstrip20100211.png">53&#215;6180 png file</a>.</p>
<p>Sure enough, the banner works on the iPhone.  Although the animation is considerably less smooth on my iPhone 3GS than it is on my 3-year-old MacBook Pro (with a hard reset of the iPhone just to be sure.)</p>
<p>When Flash Player 10.1 is out on other mobile devices it will be interesting to see how it performs with animation like this.</p>
<p><a href="http://www.curiousfind.com/blog/wp-content/uploads/photo.jpg"><img src="http://www.curiousfind.com/blog/wp-content/uploads/photo.jpg" alt="iTunes counter on iPhone" title="photo" width="480" height="320" class="aligncenter size-full wp-image-205" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.curiousfind.com/blog/204/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ultimate Reset of a Loaded AS3 MovieClip</title>
		<link>http://www.curiousfind.com/blog/174</link>
		<comments>http://www.curiousfind.com/blog/174#comments</comments>
		<pubDate>Wed, 27 Jan 2010 05:16:07 +0000</pubDate>
		<dc:creator>Jamie McDaniel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.curiousfind.com/blog/?p=174</guid>
		<description><![CDATA[I had a project that loaded individual SWF files for playing in sequence.  There were the typical play, pause, previous, next buttons.  The SWFs were loaded via Loader. An MP3 file was associated with each SWF.
If the loaded SWF had no nested movieclips, everything went smoothly with movieClip.stop(), movieClip.play(), etc.  However on [...]]]></description>
			<content:encoded><![CDATA[<p>I had a project that loaded individual SWF files for playing in sequence.  There were the typical play, pause, previous, next buttons.  The SWFs were loaded via <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html">Loader</a>. An MP3 file was associated with each SWF.</p>
<p>If the loaded SWF had no nested movieclips, everything went smoothly with movieClip.stop(), movieClip.play(), etc.  However on this project, there were nested movieClips in the SWF, so these all needed to be stopped when the user pressed pause, and restarted when the user pressed play.</p>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">private</span> <span class="kw2">function</span> stopMovieClipAndChildren<span class="br0">&#40;</span>content:DisplayObjectContainer<span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content is <span class="kw3">MovieClip</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>content as <span class="kw3">MovieClip</span><span class="br0">&#41;</span>.<span class="kw3">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content.<span class="me1">numChildren</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> child:DisplayObjectContainer;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> n:<span class="kw3">int</span> = content.<span class="me1">numChildren</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i:<span class="kw3">int</span> = <span class="nu0">0</span>; i <span class="sy0">&lt;</span> n; i++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span> is DisplayObjectContainer<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; child = content.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span> as DisplayObjectContainer;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>child.<span class="me1">numChildren</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stopMovieClipAndChildren<span class="br0">&#40;</span>child<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>child is <span class="kw3">MovieClip</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>child as <span class="kw3">MovieClip</span><span class="br0">&#41;</span>.<span class="kw3">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">private</span> <span class="kw2">function</span> playMovieClipAndChildren<span class="br0">&#40;</span>content:DisplayObjectContainer<span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content is <span class="kw3">MovieClip</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">movieClip</span>:<span class="kw3">MovieClip</span> = content as <span class="kw3">MovieClip</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">movieClip</span>.<span class="me1">currentFrame</span> <span class="sy0">&lt;</span> <span class="kw3">movieClip</span>.<span class="me1">totalFrames</span><span class="br0">&#41;</span> <span class="co1">// if the main timeline has reached the end, don&#39;t play it</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">movieClip</span>.<span class="kw3">play</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content.<span class="me1">numChildren</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> child:DisplayObjectContainer;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> n:<span class="kw3">int</span> = content.<span class="me1">numChildren</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i:<span class="kw3">int</span> = <span class="nu0">0</span>; i <span class="sy0">&lt;</span> n; i++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>content.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span> is DisplayObjectContainer<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; child = content.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span> as DisplayObjectContainer;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>child.<span class="me1">numChildren</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; playMovieClipAndChildren<span class="br0">&#40;</span>child<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>child is <span class="kw3">MovieClip</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> childMovieClip:<span class="kw3">MovieClip</span> = child as <span class="kw3">MovieClip</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>childMovieClip.<span class="me1">currentFrame</span> <span class="sy0">&lt;</span> childMovieClip.<span class="me1">totalFrames</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; childMovieClip.<span class="kw3">play</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>(my google search landed me <a href="http://www.unfocus.com/2009/12/07/stop-all-child-movieclips-in-flash-with-actionscript-3-0/">here</a> before writing my own)</p>
<p>Clicking the previous button presented a problem however.  Calling movieClip.gotoAndStop(1) on the movieClip (and even all its children) was not putting it back to its &#8220;new out of the box&#8221; state.  I needed a way to do an ultimate reset of the movieClip but since it was a loaded SWF, I didn&#8217;t have the class to do:</p>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">movieClip</span>:<span class="kw3">MovieClip</span> = <span class="kw2">new</span> SomeLoadedMovieClip<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>However, after reading <a href="http://www.dannyburbol.com/2009/01/movieclip-clone-flash-as3/">this blog</a> I found out how.</p>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">private</span> <span class="kw2">function</span> resetMovieClip<span class="br0">&#40;</span><span class="kw3">movieClip</span>:<span class="kw3">MovieClip</span><span class="br0">&#41;</span>:<span class="kw3">MovieClip</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> sourceClass:<span class="kw2">Class</span> = <span class="kw3">movieClip</span>.<span class="kw3">constructor</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> resetMovieClip:<span class="kw3">MovieClip</span> = <span class="kw2">new</span> sourceClass<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> resetMovieClip;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Use it like this:</p>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">stopMovieClipAndChildren<span class="br0">&#40;</span><span class="kw3">movieClip</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// remember to remove all event listeners from movieClip and anything that references it</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// remove movieClip from the display list</span></div>
</li>
<li class="li1">
<div class="de1">removeChild<span class="br0">&#40;</span><span class="kw3">movieClip</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// reset the loaded movieClip by creating a new instance of it</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">movieClip</span> = resetMovieClip<span class="br0">&#40;</span><span class="kw3">movieClip</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">addChild<span class="br0">&#40;</span><span class="kw3">movieClip</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.curiousfind.com/blog/174/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learned Something About Events in ActionScript 3</title>
		<link>http://www.curiousfind.com/blog/164</link>
		<comments>http://www.curiousfind.com/blog/164#comments</comments>
		<pubDate>Sun, 12 Jul 2009 01:27:39 +0000</pubDate>
		<dc:creator>Jamie McDaniel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.curiousfind.com/blog/?p=164</guid>
		<description><![CDATA[I was recently presented with a multiple choice question that went something like this:
Events in ActionScript 3 represent what type of code?

Synchronous Execution
Asynchronous Execution
Object Oriented Programming
Procedural Programming


Thinking how events allow for loosely-coupled components, I clicked answer #3 and moved on.  Like every Flex developer, I use custom events that extend the Event class and [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently presented with a multiple choice question that went something like this:</p>
<blockquote><p>Events in ActionScript 3 represent what type of code?</p>
<ol>
<li>Synchronous Execution</li>
<li>Asynchronous Execution</li>
<li>Object Oriented Programming</li>
<li>Procedural Programming</li>
</ol>
</blockquote>
<p>Thinking how events allow for loosely-coupled components, I clicked answer #3 and moved on.  Like every Flex developer, I use custom events that extend the Event class and deliver a payload to the event handler function.  However, here recently, I&#8217;ve been working on a project for a client where they used no custom events whatsoever.  It is a large project and, architecturally-wise, it is really a mess.  Every object has a reference to every other object and they all call methods on each other, or worse, on each other&#8217;s children.</p>
<p>Anyway, as I thought back to the question it got me wondering if, despite my constant use of events, I had a good understanding of how Flash&#8217;s eventDispatcher class (whose code, unlike the open-source Flex framework, is part of playerglobal.swc and cannot be viewed) works.</p>
<p>I did a quick test in the Flash IDE</p>
<div class="actionscript geshi no actionscript" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">addEventListener<span class="br0">&#40;</span><span class="st0">&quot;myEvent&quot;</span>, myEventHandler<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">dispatchEvent<span class="br0">&#40;</span><span class="kw2">new</span> Event<span class="br0">&#40;</span><span class="st0">&quot;myEvent&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> myEventHandler<span class="br0">&#40;</span>event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">&quot;hello from myEventHandler&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Which produced the result:</p>
<blockquote><p>hello from myEventHandler<br />
hello
</p></blockquote>
<p>So the correct answer to the question above is 1. Synchronous Execution. <span style="color:#FF0000">(Added: or not&#8230; see discussion in the comments)</span>.</p>
<p>Calling the dispatchEvent method on EventDispatcher (or any class that extends it) causes EventDispatcher to immediately look up the functions that were registered as event handlers and call them in the order they were registered (or in the order of the priority argument passed in when registering the handler via addEventListener).</p>
<p>I don&#8217;t know why I didn&#8217;t realize this before.  I guess I just hadn&#8217;t walked it through in my mind or thought events got queued up or something with handlers called when that queue was processed, perhaps on the next frame.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.curiousfind.com/blog/164/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Adventures in Freelancing: Death of the MacBook Pro</title>
		<link>http://www.curiousfind.com/blog/151</link>
		<comments>http://www.curiousfind.com/blog/151#comments</comments>
		<pubDate>Fri, 20 Mar 2009 23:41:30 +0000</pubDate>
		<dc:creator>Jamie McDaniel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.curiousfind.com/blog/?p=151</guid>
		<description><![CDATA[On Sunday, I went into the home office to work on my third gig since moving to full-time freelancing.  My out-of-warranty-but-still-very-new-to-me MacBook Pro with its 4GB of memory, 1920 x 1200 screen, and nearly $3,000 price tag in 2007 was dead &#8212; a victim of the infamous NVidia 8600 failure. I remember when such hardware [...]]]></description>
			<content:encoded><![CDATA[<p>On Sunday, I went into the home office to work on my third gig since moving to full-time freelancing.  My out-of-warranty-but-still-very-new-to-me MacBook Pro with its 4GB of memory, 1920 x 1200 screen, and nearly $3,000 price tag in 2007 was dead &#8212; a victim of the <a href="http://support.apple.com/kb/TS2377">infamous NVidia 8600 failure</a>. I remember when such hardware failures meant going into my personal inventory of spare parts such as <a href="http://en.wikipedia.org/wiki/3dfx_Interactive">3dfx Voodoo cards</a>, ATX 350W power supplies, network cards, overclocked <a href="http://en.wikipedia.org/wiki/Duron">AMD Duron</a> chips, and the like.  A desktop computer could be back up in no time.</p>
<p>Apple had the repair box to me on Tuesday and the computer arrived at their repair center on Wednesday.  It was back on my desk on Friday, all fixed.  Apple mistakenly charged me for the repair, but after a thirty minute call they credited me back the amount.</p>
<p>I like my MacBook Pro very much &#8212; better than any computer I&#8217;ve owned (all previous Windows machines).  It is not without its quirks, however. And now hardware failures.  Those entertaining &#8220;I&#8217;m a problem-prone PC, I&#8217;m an eager and trouble-free Mac&#8221; advertisements are products of Apple&#8217;s marketing department, not user surveys, and must be viewed with the proper dose of <a href="http://www.youtube.com/watch?v=bm7JH1FT_yM">skepticism</a>.</p>
<p>I am a little concerned that the replacement board with the same NVidia chip will just fail again after a certain number of heating/cooling cycles and that this MacBook Pro&#8217;s dependability, and indeed life expectancy, is in question.  I did have a week of downtime due to not having a backup computer.  That&#8217;s a reason not to sell your old laptop for $400 on eBay when upgrading!  That said, if I were suddenly back on my Dell Inspiron running CS2 on Windows, I might remember why I switched to Apple and OS X.</p>
<p>One thing I did learn about through this experience is Apple&#8217;s Target Disk mode.  If you hold down the T key while booting your Mac, it will function as an external firewire drive.  With both the monitor and external display not working due to the graphics card failure, I was still able to access the drive and pull my files off using Chris&#8217; Windows PC and a program called <a href="http://www.mediafour.com/products/macdrive/">MacDrive</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.curiousfind.com/blog/151/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Friends Competing in The Amazing Race</title>
		<link>http://www.curiousfind.com/blog/141</link>
		<comments>http://www.curiousfind.com/blog/141#comments</comments>
		<pubDate>Sun, 15 Feb 2009 19:47:28 +0000</pubDate>
		<dc:creator>Jamie McDaniel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.curiousfind.com/blog/?p=141</guid>
		<description><![CDATA[Tonight, my friend Mel White and his son will compete in the 14th season of CBS&#8217;s reality show, The Amazing Race.  I&#8217;ve known Mel for eight years.  He is an author and gay rights activist.  His son is a movie writer whose credits include School of Rock and Nacho Libre.
From the teaser videos that CBS [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-142" title="amazing_race_small" src="http://www.curiousfind.com/blog/wp-content/uploads/amazing_race_small.jpg" alt="amazing_race_small" width="191" height="228" />Tonight, my friend Mel White and his son will compete in the 14th season of CBS&#8217;s reality show, <em>The Amazing Race</em>.  I&#8217;ve known Mel for eight years.  He is an author and gay rights activist.  His son is a movie writer whose credits include <em>School of Rock</em> and <em>Nacho Libre</em>.</p>
<p>From the teaser videos that CBS has released, there is a challenge where teams jump from the second highest bungee jump in the world. I thought it was Hoover Dam on first look.  I&#8217;m thinking I would not have done that even if they had guaranteed me the million dollars.  Life is too fragile and my spidey sense of danger is all-the-time tingling. And if they somehow convinced me to (only for a guaranteed million mind you), I&#8217;m confident the first officer in my brain would shout to my legs, &#8220;Ensign, belay that order!&#8221; all Star Trek style.</p>
<p>Anyways, Mel contracted me to overhaul his <a href="http://www.melwhite.org">personal website</a>. I designed the new layout, switched his website to my <a href="http://www.curiousfind.com/hosting">Backlit Content Management System</a>, and integrated a Wordpress blog.  Backlit makes it easy for clients to edit webpages and upload photos.  I then recommend <a href="http://illuminex.com/ecto/">Ecto</a> (or <a href="http://download.live.com/writer">Live Writer</a> if they&#8217;re on Windows) to manage their blog entries.  (However, in Mel and Mike&#8217;s case, teams cannot blog about anything related to the race while the show is ongoing due to their contract with CBS.)</p>
<p>Go team Mel &amp; Mike!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.curiousfind.com/blog/141/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
