<?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>Mike Fullerton&#039;s Blog</title>
	<atom:link href="http://blog.mikefullerton.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikefullerton.com</link>
	<description>Mumble. Grumble. Fumble. Stumble.</description>
	<lastBuildDate>Sun, 01 Dec 2013 22:48:28 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.1</generator>
	<item>
		<title>OSX Keyboard Shortcuts</title>
		<link>http://blog.mikefullerton.com/2013/12/01/osx-keyboard-shortcuts/</link>
		<comments>http://blog.mikefullerton.com/2013/12/01/osx-keyboard-shortcuts/#comments</comments>
		<pubDate>Sun, 01 Dec 2013 22:48:28 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/?p=2981</guid>
		<description><![CDATA[Think you know all the OSX keyboard shortcuts? Think again. Bet you didn&#8217;t know that Option-Control-Space bar toggles through all enabled input sources. Whatever those are. Good thing there&#8217;s a keyboard shortcut for this. Because I do this all day long. Everyday. Here&#8217;s the list from Apple.]]></description>
				<content:encoded><![CDATA[<p>Think you know all the OSX keyboard shortcuts? Think again.</p>
<p>Bet you didn&#8217;t know that Option-Control-Space bar toggles through all enabled input sources. Whatever those are. Good thing there&#8217;s a keyboard shortcut for this. Because I do this all day long. Everyday.</p>
<p><a title="OSX Keyboard Shortcuts" href="http://support.apple.com/kb/ht1343">Here&#8217;s the list</a> from Apple.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/12/01/osx-keyboard-shortcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freaking Awesome live Tool show  &#8211; 1996 The Glass House</title>
		<link>http://blog.mikefullerton.com/2013/07/21/freaking-awesome-live-tool-show-1996-the-glass-house/</link>
		<comments>http://blog.mikefullerton.com/2013/07/21/freaking-awesome-live-tool-show-1996-the-glass-house/#comments</comments>
		<pubDate>Sun, 21 Jul 2013 23:11:58 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/?p=2978</guid>
		<description><![CDATA[Wow. If you&#8217;re a Tool fan, you&#8217;ll really enjoy this. It&#8217;s a bootleg, so don&#8217;t expect a BluRay shot by Martin Scorsese.  ]]></description>
				<content:encoded><![CDATA[<p>Wow. If you&#8217;re a Tool fan, you&#8217;ll really enjoy this. It&#8217;s a bootleg, so don&#8217;t expect a BluRay shot by Martin Scorsese.</p>
<p> <br />
<iframe width="420" height="315" src="//www.youtube.com/embed/ri2lVA1k5-Q" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/07/21/freaking-awesome-live-tool-show-1996-the-glass-house/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tool&#8217;s Vicarious</title>
		<link>http://blog.mikefullerton.com/2013/03/30/tools-vicarious/</link>
		<comments>http://blog.mikefullerton.com/2013/03/30/tools-vicarious/#comments</comments>
		<pubDate>Sun, 31 Mar 2013 00:52:04 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/?p=2844</guid>
		<description><![CDATA[Anyone who knows me know that Tool is one of my favorite bands. They&#8217;re not for everyone, that&#8217;s for sure. But if you feel like having your eyes and ears bended &#8211; watch this video. I recommend a good pair headphones.]]></description>
				<content:encoded><![CDATA[<p>Anyone who knows me know that <a href="http://www.toolband.com/">Tool</a> is one of my favorite bands. They&#8217;re not for everyone, that&#8217;s for sure. But if you feel like having your eyes and ears bended &#8211; watch this video. I recommend a good pair headphones.</p>
<p><iframe src="http://www.youtube.com/embed/mq0HpoKXaFk" width="560" height="315" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/03/30/tools-vicarious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emma&#8217;s Imagination cover of Change by the Deftones</title>
		<link>http://blog.mikefullerton.com/2013/03/30/emma-imagination-cover-of-change-by-the-deftones/</link>
		<comments>http://blog.mikefullerton.com/2013/03/30/emma-imagination-cover-of-change-by-the-deftones/#comments</comments>
		<pubDate>Sun, 31 Mar 2013 00:44:10 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/?p=2842</guid>
		<description><![CDATA[Whenever I feel discouraged &#8211; music helps me snap out of the navel gazing. For example, Emma&#8217;s Imagination&#8217;s cover of Change by the Deftones gave me chills.   ]]></description>
				<content:encoded><![CDATA[<p>Whenever I feel discouraged &#8211; music helps me snap out of the navel gazing.</p>
<p>For example, <a href="http://emmasimagination.com/">Emma&#8217;s Imagination&#8217;s</a> cover of <a href="https://www.youtube.com/watch?v=WPpDyIJdasg">Change</a> by the <a href="http://www.deftones.com/">Deftones</a> gave me chills. </p>
<p><iframe src="http://www.youtube.com/embed/eXy7Fq7gLJk" width="560" height="315" frameborder="0"></iframe> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/03/30/emma-imagination-cover-of-change-by-the-deftones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve always strived to be a maker.</title>
		<link>http://blog.mikefullerton.com/2013/02/28/ive-always-strived-to-be-a-maker-insightful-thou/</link>
		<comments>http://blog.mikefullerton.com/2013/02/28/ive-always-strived-to-be-a-maker-insightful-thou/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 17:40:29 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>

		<guid isPermaLink="false">http://twitter-307183507237658624-post</guid>
		<description><![CDATA[Insightful thoughts about developers.]]></description>
				<content:encoded><![CDATA[<p><a href="http://venturebeat.com/2013/02/18/developers-choosing-conscience-over-profit/">Insightful thoughts about developers.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/02/28/ive-always-strived-to-be-a-maker-insightful-thou/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MESHELL &#8220;BOYFRIEND&#8221; Live 95 (Rare) From my VHS.: h&#8230;</title>
		<link>http://blog.mikefullerton.com/2013/01/31/meshell-boyfriend-live-95-rare-from-my-vhs-h/</link>
		<comments>http://blog.mikefullerton.com/2013/01/31/meshell-boyfriend-live-95-rare-from-my-vhs-h/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 19:53:13 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://twitter-297070047166349313-post</guid>
		<description><![CDATA[MESHELL &#8220;BOYFRIEND&#8221; Live 95 (Rare) From my VHS.: youtu.be/7JXxFUjx6Vw via @YouTube]]></description>
				<content:encoded><![CDATA[<p>MESHELL &#8220;BOYFRIEND&#8221; Live 95 (Rare) From my VHS.: <a href="http://youtu.be/7JXxFUjx6Vw">youtu.be/7JXxFUjx6Vw</a> via <a href="http://twitter.com/YouTube">@YouTube</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2013/01/31/meshell-boyfriend-live-95-rare-from-my-vhs-h/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calm the f down Xcode. http://t.co/A1Jmhpev</title>
		<link>http://blog.mikefullerton.com/2012/12/17/calm-the-f-down-xcode-httpt-coa1jmhpev/</link>
		<comments>http://blog.mikefullerton.com/2012/12/17/calm-the-f-down-xcode-httpt-coa1jmhpev/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 01:33:51 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Tweet]]></category>

		<guid isPermaLink="false">http://twitter-280848318899314689-post</guid>
		<description><![CDATA[Calm the f down Xcode. http://t.co/A1Jmhpev]]></description>
				<content:encoded><![CDATA[<p>Calm the f down Xcode. http://t.co/A1Jmhpev</p>
<p><img width="300" height="41" src="http://blog.mikefullerton.com/wp-content/uploads/2012/12/A-XGDtwCYAE-18F1-300x41.png" class="attachment-medium" alt="A-XGDtwCYAE-18F" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2012/12/17/calm-the-f-down-xcode-httpt-coa1jmhpev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a pattern for initializing objective-c objects with blocks</title>
		<link>http://blog.mikefullerton.com/2011/07/27/a-pattern-for-initializing-objective-c-objects-with-blocks/</link>
		<comments>http://blog.mikefullerton.com/2011/07/27/a-pattern-for-initializing-objective-c-objects-with-blocks/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 01:26:06 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/?p=1708</guid>
		<description><![CDATA[First off, this is kind of a warm up post. I&#8217;m struggling with figuring how to post source code into my post without killing chickens and using their blood for magic rituals. I&#8217;ll probably screw it up. It may be also that I need to elaborate on stuff here &#8211; I&#8217;m a bit rusty with [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>First off, this is kind of a warm up post. I&#8217;m struggling with figuring how to post source code into my post without killing chickens and using their blood for magic rituals. I&#8217;ll probably screw it up. It may be also that I need to elaborate on stuff here &#8211; I&#8217;m a bit rusty with the technical writing. So please don&#8217;t hesitate to ask questions or ask for more info. Or if you have a better idea about something I&#8217;m writing about, or I have it wrong, or I have spinach in my teeth, please let me know.</p>
<p>To get the most out of this post you should understand <a href="http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html">objective-c blocks</a>, and <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1">objective-c categories</a>.</p>
<p>Ok, warp factor one. Engage.</p>
<p>This is a useful pattern I&#8217;ve discovered after playing with it in various incarnations since iOS 4 came out. I&#8217;ve landed on a design which is super simple, and really easy to use. The example&#8217;s here are silly and contrived, but the pattern works at scale with large shipping code.</p>
<p>I&#8217;m a big fan of objective-c blocks. I first learned about them when using Javascript closures at Microsoft and they <em>blew</em> my mind back then. Now, not so much with the mind blowing, but they&#8217;re very useful and I was super excited when they came to objective-c. They have their dangers and drawbacks (which I&#8217;ll explore in another post), but for this, they&#8217;re <em>perfect</em> because you can use them inline with your normal code &#8211; you don&#8217;t have to declare extra functions or methods or whatever for fancy or complex initializaton.</p>
<p>Let me explain.</p>
<p>Here&#8217;s the situation. You need to build a list of objects that <em>do</em> something, or <em>represent</em> something. For example, this might be a list of addresses, or a queue of tasks to perform, or whatever. We do this all the time. For this, we need to configure a bunch of ducks. Funky ducks.</p>
<p>Let&#8217;s start with an example.</p>
<p>I need to create 3 GtFunkyDuck objects and add them to a NSMutableArray.</p>
<p>(Note that GtFunkyDuck isn&#8217;t a real object, and the properties and method names will just be silliness to illustrate my point. Also, my company is <a href="http://www.greentongue.com">GreenTongue Software</a>, so all my objects are prefixed with &#8220;Gt&#8221;. You know, it stands for Goober Tooth or Grand Teton or Got Tamatoes&#8230;).</p>
<p>Here&#8217;s the normal way to initialize some ducks. Hmm, did I really just write that?</p>
<p><pre class="brush: objc; title: ; notranslate">
NSMutableArray* myArray = [NSMutableArray array];

GtFunkyDuck* myDuck1 = [[[GtFunkyDuck alloc] init] autorelease];
myDuck1.feetAreWebbed = YES;
myDuck1.billColor = [UIColor redColor];
myDuck1.quackVolume = 6;
[myDuck1 getReadyToSwimInPond:myPond];
[myArray addObject:myDuck1];

GtFunkyDuck* myDuck2 = [[[GtFunkyDuck alloc] init] autorelease];
myDuck2.feetAreWebbed = NO;
myDuck2.billColor = [UIColor greenColor];
myDuck2.quackVolume = 1;
[myDuck1 getReadyToSwimInBathtub:aBathtub];
[myArray addObject:myDuck2];

GtFunkyDuck* myDuck3 = [[[GtFunkyDuck alloc] init] autorelease];
myDuck1.feetAreWebbed = NO;
myDuck3.billColor = [UIColor blueColor];
myDuck3.quackVolume = 2;
[myDuck1 getReadyToChaseAToddler:aToddler];
[myArray addObject:myDuck1];
</pre>
<p><p>This code illustrates what I&#8217;m talking about very well. Look closely. There are a couple of bugs here. Why? Because I&#8217;m lazy and I copied and pasted myDuck1 to reuse the code for myDuck2 and myDuck3. I want this code written, now, I can&#8217;t be bothered retyping GtFunkyDuck seventy-hundred times. So copy-paste here I come, and then I got distracted by twitter and screwed up myDuck3. This could cause weirdass bugs that are hard to track down. myDuck1 was added twice to the array, myDuck3 was never added, and myDuck1 doesn&#8217;t have webbedFeet like it&#8217;s supposed to. Well, you get the idea. It&#8217;s far <em>easier</em> to screw up the code here than to get it right, in my experience. Copy and paste. Deliciously dangerous.</p>
<p>One solution is to add an initWithWebbedFeet method and have a bunch of parameters for building the object. But what if the object has twentysix options? Or complex configuration methods? What if the default initializer puts the object into a state that&#8217;s just fine? If so, there&#8217;s no point in passing in all the parameters, or creating six quadrillion different init methods, and in fact that will make the code very difficult to maintain and debug</p>
<p> </p>
<p>
<pre class="brush: objc; title: ; notranslate">
GtFunkyDuck* myDuck1 = [[[GtFunkyDuck alloc] initWithWebbedFeet:YES
                                                      billColor:[UIColor redColor]
                                                    quackVolume:4
                                                 swimsInCircles:NO
                                               likesBreadCrusts:YES
                                                  hatesChickens:YES
                                            chasesSmallChildren:NO
                                        willBeATastyMealSomeday:YES] autorelease];
</pre>
</p>
<p>This is just damn painful. In my experience, if there are more than two or three parameters, you&#8217;re in for some hurt. Big fat painful hurt, deep in the debugger, complete with dog kicking cursing and heavy drinking. Well, maybe not that bad. And for the record, I never kicked my dog. (Or your dog).</p>
<p>So there are two problems here:</p>
<ol>
<li>We have to create a bunch of local variables to hold temporary references to the objects we&#8217;re creating, e.g. myDuck1, myDuck2, and myDuck3. This gets painful and buggy, after, well, one, because everyone copies and pastes and we forget or miss changing the names in the newly pasted code in our hurry to implement our new duck related feature.</li>
<li>We have complex objects with a bunch of optional parameters. These damn ducks are high maintainence. They have a lot of options.</li>
</ol>
<p>Here&#8217;s my simple solution:</p>
<pre class="brush: objc; title: ; notranslate">typedef void (^GtConfigureObjectBlock)(id object);
@interface NSMutableArray (GtArrayAdditions) 
- (void) addObject:(id) object configureObject:(GtConfigureObjectBlock) block; 
@end 

@implementation NSMutableArray (GtArrayAdditions) 
- (void) addObject:(id) object configureObject:(GtConfigureObjectBlock) block { 
	if(block) { 
		block(object); 
	} 
	[self addObject:object]; 
} 
@end 
</pre>
<p>What we&#8217;re doing here is passing in a object in a default state, and then modifying that default state with your block callback. This elimates all the local variables and nearly all the opportunity for cut and paste errors, which can be traced back to having to reference the objects through their local variables. So our new fancy code for initializing our ducks looks like this now:</p>
<pre class="brush: objc; title: ; notranslate"> 
NSMutableArray* myArray = [NSMutableArray array];
 
[myArray addObject:[[[GtFunkyDuck alloc] init] autorelease] configureObject:^(id duck) { 
	[duck setFeetAreWebbed:YES]; 
	[duck setBillColor:[UIColor redColor]]; 
	[duck setQuackVolume:6]; 
	[duck getReadyToSwimInPond:myPond]; 
}]; 
 
[myArray addObject:[[[GtFunkyDuck alloc] init] autorelease] configureObject:^(id duck) { 
	[duck setFeetAreWebbed:NO]; 
	[duck setBillColor:[UIColor greenColor]]; 
	[duck setQuackVolume:1]; 
	[duck getReadyToSwimInBathtub:aBathtub]; 
}]; 
 
[myArray addObject:[[[GtFunkyDuck alloc] init] autorelease] configureObject:^(id duck) { 
	[duck setFeetAreWebbed:NO]; 
	[duck setBillColor:[UIColor blueColor]]; 
	[duck setQuackVolume:2]; 
	[duck getReadyToChaseAToddler:aToddler]; 
}]; 
 
</pre>
<p>The only draw back is that you loose the ability to use the properties. You can&#8217;t do this:</p>
<pre class="brush: objc; title: ; notranslate"> 
[myArray addObject:[[[GtFunkyDuck alloc] init] autorelease] configureObject:^(id duck) { 
	duck.feetAreWebbed = NO; 
}]; 
</pre>
<p>You also can&#8217;t do this (unfortunately):</p>
<pre class="brush: objc; title: ; notranslate"> 
[myArray addObject:[[[GtFunkyDuck alloc] init] autorelease] configureObject:^(GtFunkyDuck* duck) { 
	duck.feetAreWebbed = NO; 
}]; 
</pre>
<p>However, I view the inability here to use the properties as merely cosmetic. The trade off in better code and less bugs is worth it.</p>
<p>This may look a little weird, but once you wrap your head around it, it become second nature and very powerful.</p>
<p>Let me know what you think, or if you have any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2011/07/27/a-pattern-for-initializing-objective-c-objects-with-blocks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On the opening day of San Fermin (an old poem I wrote)</title>
		<link>http://blog.mikefullerton.com/2010/02/08/on-the-opening-day-of-san-fermin-an-old-poem-i-wrote/</link>
		<comments>http://blog.mikefullerton.com/2010/02/08/on-the-opening-day-of-san-fermin-an-old-poem-i-wrote/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 04:36:46 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Poetry]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/2010/02/08/on-the-opening-day-of-san-fermin-an-old-poem-i-wrote/</guid>
		<description><![CDATA[On the opening day of San Fermin by Mike Fullerton, 1989 I am leaning bent, a heavy wall pushing me upright in a flowing crowd. I drink from a cup as big and white as stacked toilet paper. My eyes fill with wine, lids floating shut. The charred and chipped building holding me sways threatening [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>On the opening day of San Fermin<br />
by Mike Fullerton, 1989</p>
<p>I am leaning bent,<br />
a heavy wall pushing me upright<br />
in a flowing crowd.<br />
I drink from a cup as big and white<br />
as stacked toilet paper.<br />
My eyes fill with wine,<br />
lids floating shut.</p>
<p>The charred and chipped<br />
building holding me<br />
sways<br />
threatening to fall with me into the square.</p>
<p>It is soiled with moist shrapnel<br />
from a dirt bomb,<br />
splotches of brown merging<br />
and dripping down the walls<br />
into the hair of the partygoers.</p>
<p>The crowd flows like a wine river<br />
around a tall fountain<br />
pointed blunt like a beer bottle.<br />
People swirl past me,<br />
laughing like vapor,<br />
all teeth and rapid blur.</p>
<p>Wet from Champagne and urine,<br />
cobblestones float under my feet.<br />
I trap them down,<br />
the wall holding me<br />
and I holding the stones.</p>
<p>Attention<br />
is turned from faces<br />
to the fountain.<br />
The wine river flows faster.<br />
Now back on itself<br />
as if from sudden tide.</p>
<p>A man stands alone,<br />
conqueror of the fountain,<br />
above the crowd.<br />
His arms perpendicular like a cross<br />
he seems to meditate.<br />
Suddenly he is flying.<br />
The river shakes,<br />
boiling with tension.<br />
The man makes no splash;<br />
he is inhaled gracefully.</p>
<p>Crawling unsteady<br />
another climbs<br />
like a spindly insect<br />
to the top.<br />
A momentary victor<br />
waving like a pond weed.<br />
But its as if a firm hand<br />
pushes him,<br />
he topples<br />
wrongly<br />
softly and slow,<br />
grinning<br />
down into cement.</p>
<p>My cobblestones energize<br />
and escape<br />
in a sudden throb;<br />
my wall softens<br />
tilts<br />
releasing me<br />
to hold the soft cobblestones<br />
with my face,<br />
my cup drifting away.</p>
<p>I see the river suddenly dry<br />
into grains of standing people<br />
as white hat men take the dead away.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2010/02/08/on-the-opening-day-of-san-fermin-an-old-poem-i-wrote/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thoughts on District 9</title>
		<link>http://blog.mikefullerton.com/2009/08/30/thoughts-on-district-9/</link>
		<comments>http://blog.mikefullerton.com/2009/08/30/thoughts-on-district-9/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 18:02:00 +0000</pubDate>
		<dc:creator><![CDATA[mike]]></dc:creator>
				<category><![CDATA[Movies]]></category>

		<guid isPermaLink="false">http://blog.mikefullerton.com/2009/08/30/thoughts-on-district-9/</guid>
		<description><![CDATA[First, off no spoilers, I promise. District 9 is a fantastic movie but you might not enjoy it. You should see it anyway. I think this is an important movie. Now, those of you that know me know that I&#8217;m a big science fiction fan. I&#8217;ve read countless books and stories and watched everything. I&#8217;m [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>First, off no spoilers, I promise.</p>
<p><a href="http://www.district9movie.com/">District 9</a> is a fantastic movie but you might not enjoy it. You should see it anyway. I think this is an important movie.</p>
<p>Now, those of you that know me know that I&#8217;m a big science fiction fan. I&#8217;ve read countless books and stories and watched everything. I&#8217;m a hard sell. I think this is one of those movies that truly transcends the genre. The thing about great sci-fi is that it is <i>always</i> about much more than is on the surface, it challenges you, it makes you think. But it&#8217;s not always fun.</p>
<p>District 9 is a hard movie to watch because it really touches on significant and painful social issues. I think it hits a nerve. Or three. I understand why you may not <i>enjoy</i> it, but you can&#8217;t say isn&#8217;t a <i>fantastic</i> movie. Well, you could, but you&#8217;d be wrong. <img src="http://blog.mikefullerton.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </p>
<p>I think that District 9 isn&#8217;t an enjoyable movie in the same way most enjoyable movies are enjoyable. It&#8217;s not really escapist entertainment. District 9 stabs you right in the eye with sharp scissors right out of the gate. The way it&#8217;s shot, with the flat colors, in hand-held documentary style, definitely didn&#8217;t produce a lot of eye candy. In fact, I was a bit off-put by this. At first.</p>
<p>Right away it ripped me out of my comfort zone. It&#8217;s not pretty or glamorous. It&#8217;s not an idealized version of Hollywood reality. It <i>says</i> something about us, our fears, our flaws, our culture. It makes a painful point about who we are.</p>
<p>This could really happen.</p>
<p>That said (the part about it being harder to enjoy than a normal movie I mean) &#8211; I enjoyed the hell out of it. I enjoy a well crafted story. Great dialog. Great plot. I actually was surprised a few times by what happened (which, sadly for me, hardly <i>ever</i> happens). There was a couple of times I wanted to stand up and shout, did you see <i>that?</i> Did you? There&#8217;s actually a character arc in this movie, the main character learns, and changes, and surprises. He transforms. Don&#8217;t see that too often. The character even has a specific moment of epiphany. And I was loving it.</p>
<p>The attention to detail was staggering. I wanted to rewind and watch some parts again. The special effects may be the best I&#8217;ve every seen. I forgot about them and just enjoyed the movie. I forgot that the aliens and spaceship were computer generated. Normally, in other movies where there are virtual characters, I never quite forget they&#8217;re computer generated. I did in this movie. Probably the only other time that&#8217;s happened for me is Gollum in Lord of the Rings.</p>
<p>I&#8217;m still thinking about the movie. That never happens to me. (Nearly) ever.</p>
<p>There&#8217;s my thoughts on it. So there.</p>
<p><img src="http://blog.mikefullerton.com/wp-content/uploads/2009/08/district-9-alien-face-90011.jpg" width="900" height="599" alt="district-9-alien-face-900.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikefullerton.com/2009/08/30/thoughts-on-district-9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.938 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2014-03-13 11:33:42 -->
