<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>0x626C6F67</title>
	<atom:link href="http://dmunsie.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dmunsie.wordpress.com</link>
	<description>Blogging for Dummies</description>
	<lastBuildDate>Fri, 27 Jan 2012 14:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dmunsie.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>0x626C6F67</title>
		<link>http://dmunsie.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dmunsie.wordpress.com/osd.xml" title="0x626C6F67" />
	<atom:link rel='hub' href='http://dmunsie.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ballies for the iPhone</title>
		<link>http://dmunsie.wordpress.com/2009/10/30/ballies-for-the-iphone/</link>
		<comments>http://dmunsie.wordpress.com/2009/10/30/ballies-for-the-iphone/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 06:31:36 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=223</guid>
		<description><![CDATA[Today Ballies (and Ballies Lite) for the iPhone was released on the App Store. I started working on Ballies at the start of July and finished it in the first week of October. It was very much a learning experience for me &#8212; this being my first released iPhone application and my first game that&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=223&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dmunsie.files.wordpress.com/2009/10/primary.png"><img src="http://dmunsie.files.wordpress.com/2009/10/primary.png?w=600" alt="Ballies" title="Ballies"   class="alignnone size-full wp-image-222" /></a></p>
<p>Today Ballies (and Ballies Lite) for the iPhone was released on the App Store.  I started working on Ballies at the start of July and finished it in the first week of October.  It was very much a learning experience for me &#8212; this being my first released iPhone application and my first game that&#8217;s actually moved to the published state.  It also happens to be a fun game as well too.  If you are interested, please go check it out on the <a href="http://itunes.com/apps/ballies">App Store</a>.</p>
<p>This was the first time that my uncle, Dave Munsie, and I have worked together on a game.  I have to say it has been a very fun project and that this won&#8217;t be the last one we do together.  I&#8217;m already deep into the next project, one that we hope to have out before Christmas.  Go checkout <a href="http://munsiegames.com/">Munsie Games</a> for some more info.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=223&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2009/10/30/ballies-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/10/primary.png" medium="image">
			<media:title type="html">Ballies</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom Animations Between UIViewControllers</title>
		<link>http://dmunsie.wordpress.com/2009/08/07/custom-animations-between-uiviewcontrollers/</link>
		<comments>http://dmunsie.wordpress.com/2009/08/07/custom-animations-between-uiviewcontrollers/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 14:32:07 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=213</guid>
		<description><![CDATA[Apple has really done a lot to make it easy to use multiple UIViewController objects and to move between them easily with some stock animations. The &#8220;normal&#8221; behaviors for iPhone applications are relatively straightforward to achieve &#8212; some requiring just a line or two of code. But what if you want to do something different? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=213&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Apple has really done a lot to make it easy to use multiple <code>UIViewController</code> objects and to move between them easily with some stock animations.  The &#8220;normal&#8221; behaviors for iPhone applications are relatively straightforward to achieve &#8212; some requiring just a line or two of code.  </p>
<p>But what if you want to do something different?  For example, you are working on a game that has it&#8217;s own navigation hierarchy.  Not only are you not using the normal <code>UINavigationController</code> usage model, but you also want to do something different visually besides sliding in the new view?  Read on for one possible way of handling this.</p>
<p>The method that I am using involves having a custom root view controller object that manages the transitions between the other view controllers.  The way I have it setup is that there is never more than 2 view controllers active at once &#8212; the root controller and whichever controller you are currently using.  I&#8217;ll also point out that for this example, I am not using Interface Builder or XIB files.  Everything is generated using code.  Feel free to experiment on your own if you want to use IB.</p>
<p>To start, you will need to setup your root view controller class.  This is simply a subclass of UIViewController:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;@interface MyRootController : UIViewController {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UIViewController *activeController;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;-(id)initWithController:(UIViewController *)aController;<br />
&nbsp;&nbsp;&nbsp;&nbsp;-(void)loadView;<br />
&nbsp;&nbsp;&nbsp;&nbsp;-(void)dealloc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;-(void)crossfadeTo:(UIViewController *)aController duration:(float)aDuration;<br />
&nbsp;&nbsp;&nbsp;&nbsp;@end</code></p>
<p>We are going to implement a simple crossfade effect in this class &#8212; the <code>crossfadeTo:duration:</code> method will handle properly fading between the two views and properly disposing of the old view controller when done.</p>
<p>Let&#8217;s take a look at the <code>initWithController:</code> method next:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;-(id)initWithController:(UIViewController *)aController {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(self = [super initWithNibName:nil bundle:nil])) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nil;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;activeController = [aController retain];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></p>
<p>As you can see, it is very basic &#8212; all we are doing here is just keeping the initial controller around so that we can use it later.  The real work begins in <code>loadView</code>:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;-(void)loadView {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewWillAppear:NO];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self.view addSubview:activeController.view];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewDidAppear:NO];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></p>
<p>The first thing we do is obtain a new <code>UIView</code> object that covers the screen.  This is the view that will be used as the parent view for the active controller&#8217;s view.  It will also hold the second controller&#8217;s view during an animation.</p>
<p>The next part is to hold up to the contract of <code>UIViewController</code>.  Whenever a view will appear or disappear, there are four methods in <code>UIViewController</code> that need to be called: <code>viewWillAppear:</code>, <code>viewDidAppear:</code>, <code>viewWillDisappear:</code> and <code>viewDidDisappear:</code>.  The parameter for all of these is a <code>BOOL</code> indicating if there is an animation happening.  Since we are not animating the first view onto the screen, we say <code>NO</code>.</p>
<p>The <code>dealloc</code> method is basically the reverse of both the <code>loadView</code> and <code>initWithController</code> methods &#8212; we are just cleaning up all the toys we got out:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;-(void)dealloc {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewWillDisappear:NO];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController.view removeFromSuperview];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewDidDisappear:NO];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController release];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[super dealloc];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></p>
<p>Notice that we are calling <code>viewWillDisappear:</code> and <code>viewDidDisappear:</code> to keep up our end of the contract again.</p>
<p>At this point, we have enough code for our view to show up on the screen and for us to not leak any resources when we are done with the view controller.  But that&#8217;s not why we are here &#8212; we&#8217;re here to do some custom animations between two view controllers.  Let&#8217;s take a look at how to do a crossfade:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;-(void)crossfadeTo:(UIViewController *)aController duration:(float)aDuration {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[aController viewWillAppear:YES];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewWillDisappear:YES];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aController.view.alpha = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self.view addSubview:aController.view];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[aController viewDidAppear:YES];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[UIView beginAnimations:@"crossfade" context:nil];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[UIView setAnimationDuration:aDuration];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aController.view.alpha = 1.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;activeController.view.alpha = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[UIView commitAnimations];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self performSelector:@selector(animationDone:) withObject:aController afterDelay:aDuration];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;-(void)animationDone:(UIViewController *)aNewViewController {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController.view removeFromSuperview];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewDidDisappear:YES];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[activeController release];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;activeController = [aNewViewController retain];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></p>
<p>There are two parts to this code &#8212; first we start the animation in <code>crossfadeTo:duration:</code> and then finish it up in <code>animationDone:</code>.  The intent with <code>animationDone:</code> is that you should be able to reuse this method for whatever animations you feel like implementing.  All of the animation setup is done in <code>crossfadeTo:duration:</code>.  Let&#8217;s take a closer look at that code:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[aController viewWillAppear:YES];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewWillDisappear:YES];</code></p>
<p>The first part is just about keeping the contract again.  In this case, we have both a view that is about to appear and another one that is about to disappear.  Notice that we are passing <code>YES</code> since we are going to be doing an animation this time.</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;aController.view.alpha = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self.view addSubview:aController.view];</code></p>
<p>Next we add our new view to our parent view with the alpha set to zero.  The new view needs to be a part of the view hierarchy for it to eventually get to the screen, and we don&#8217;t want it covering up the current view yet.  </p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[aController viewDidAppear:YES];</code></p>
<p>Since we added our new view, we need to let the view controller that it&#8217;s now visible.  Even though the alpha is set to zero at this point, it&#8217;s part of the view hierarchy and is active.  Therefore, we need to make sure the controller knows.</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[UIView beginAnimations:@"crossfade" context:nil];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[UIView setAnimationDuration:aDuration];<br />
&nbsp;&nbsp;&nbsp;&nbsp;aController.view.alpha = 1.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;activeController.view.alpha = 0.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;[UIView commitAnimations];</code></p>
<p>This part is the animation code.  All we are really doing for the animation is just changing the alpha on our new view from zero to one and the alpha on the old view from one to zero.  We set the duration to the passed in value and then kick off the animation with the <code>commitAnimations</code> call.</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[self performSelector:@selector(animationDone:) withObject:aController afterDelay:aDuration];</code></p>
<p>This last bit of code is to kick off a call to <code>animationDone:</code> when the animation is actually done.  There are methods in <code>UIView</code> to setup a callback method (<code>setAnimationDelegate:</code> and <code> setAnimationWillEndSelector:</code>), but when I attempted to use them with the 2.2 SDK, I ran into issues with the callback being called at the wrong time.  If you are using a newer SDK, you might be able to use these methods, but the <code>performSelector:withObject:afterDelay:</code> method should work just as well for our needs.</p>
<p>The second part of the transition is in <code>animationDone:</code> method.  It has two parts &#8212; the first part is to finish up with our view controller we just transitioned off the screen:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[activeController.view removeFromSuperview];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[activeController viewDidDisappear:YES];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[activeController release];</code></p>
<p>We are simply removing the view, letting the view controller that we did remove it and finally releasing the controller.  </p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;activeController = [aNewViewController retain];</code></p>
<p>On the new controller side, we are now finally going to retain the new object.  We haven&#8217;t had to retain it up until this point because it was always being retained for us &#8212; the <code>performSelector:withObject:afterDelay:</code> method retains the object that you pass to the <code>withObject:</code> parameter.  </p>
<p>And with this, our crossfade animation is complete and we now have a new active view controller.  If you&#8217;ve been playing along at home, you should be able to see this for yourself.  </p>
<p>To use your new view controller, simply do this in your <code>appDidFinishLaunching:</code>:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];<br />
&nbsp;&nbsp;&nbsp;&nbsp;controller = [[MyRootController alloc] initWithController:[[[MyFirstViewController alloc] init] autorelease]];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[window addSubview:controller.view];</code></p>
<p>And when you want to crossfade between two views, do something like this:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[controller crossfadeTo:[[[MySecondViewController alloc] init] autorelease] duration:2.0f];</code></p>
<p>I&#8217;ll leave it as an exercise for the reader as to how to create <code>MyFirstViewController</code> and <code>MySecondViewControler</code>.  These are just subclasses of <code>UIViewController</code>.  </p>
<p>I hope that this gets you started with doing different animations between view controllers than simply the stock animations that Apple provides with the <code>UIViewController</code> class.</p>
<p>For more information regarding the classes that I&#8217;ve used above, please take a look at these links:<br />
<a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html">http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html</a><br />
<a href="http://developer.apple.com/iPhone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html">http://developer.apple.com/iPhone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=213&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2009/08/07/custom-animations-between-uiviewcontrollers/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>NSInvocation Tip</title>
		<link>http://dmunsie.wordpress.com/2009/08/05/nsinvocation-tip/</link>
		<comments>http://dmunsie.wordpress.com/2009/08/05/nsinvocation-tip/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:42:29 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[MacOS X]]></category>
		<category><![CDATA[Objective C]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=207</guid>
		<description><![CDATA[NSInvocation certainly gets a bad rap at times. If you use it naively, you will get some horrible performance with it. Doubly so on the iPhone where there is much less CPU power than on MacOS X. But for some things, it is very useful. For example, say you want to pass a field name [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=207&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><code>NSInvocation</code> certainly gets a bad rap at times.  If you use it naively, you will get some horrible performance with it.  Doubly so on the iPhone where there is much less CPU power than on MacOS X.  But for some things, it is very useful.  For example, say you want to pass a field name to a method and then call the setter and getter for that field on an object.  Using a selector and an <code>NSInvocation</code> object, you can dynamically call them:</p>
<p><code>-(float)invokeGetSelectorForField:(NSString *)fieldName inObject:(id)o {<br />
&nbsp;&nbsp;&nbsp;&nbsp;float value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;SEL fieldGetSelector = NSSelectorFromString(fieldName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;NSInvocation *i = [NSInvocation invocationWithMethodSignature:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[o class]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instanceMethodSignatureForSelector:fieldGetSelector]];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[i setSelector:fieldGetSelector];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[i setTarget:o];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[i invoke];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[i getReturnValue:&amp;value];<br />
&nbsp;&nbsp;&nbsp;&nbsp;return value;<br />
}</code></p>
<p>But what if you need to call this getter multiple times?  Maybe hundreds or thousands of times?  In this case, you can keep your <code>NSInvocation</code> object around and then simply <code>invoke</code> and then call <code>getReturnValue:</code> on it anytime you need to make the call.  You can change the target of the <code>NSInvocation</code> to point to a completely different object.  Or even change the selector.  Pretty much anything you want to change you can. So instead of the above code, do something like this instead:</p>
<p>In your <code>init</code> method:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;SEL fieldGetSelector = NSSelectorFromString(fieldName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;fieldGetInvocation = [[NSInvocation invocationWithMethodSignature:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[o class]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instanceMethodSignatureForSelector:fieldGetSelector]] retain];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[fieldGetInvocation setSelector:fieldGetSelector];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[fieldGetInvocation setTarget:o];</code></p>
<p>In your <code>dealloc</code> method:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;[fieldGetInvocation release];</code></p>
<p>And then when you need to call it:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;float value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;[fieldGetInvocation invoke];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[fieldGetInvocation getReturnValue:&amp;value];</code></p>
<p>Doing this can easily end up saving a lot of CPU usage in your application, depending on how often you are calling the method.  In my current project, I went from 20% usage in calling the setter and getters down to effectively 0% when measured with Instruments.  All of that time was being eaten up in creating and destroying <code>NSInvocation</code> objects.  Certainly not the best usage of the limited resources on the iPhone.</p>
<p>For more information on the <code>NSInvocation</code> class, please take a look at the documentation on Apple&#8217;s site: <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsinvocation_Class/Reference/Reference.html">http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsinvocation_Class/Reference/Reference.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=207&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2009/08/05/nsinvocation-tip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone and Widescreen 2D with OpenGL</title>
		<link>http://dmunsie.wordpress.com/2009/08/04/iphone-and-widescreen-2d-with-opengl/</link>
		<comments>http://dmunsie.wordpress.com/2009/08/04/iphone-and-widescreen-2d-with-opengl/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 15:35:00 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ObjC]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=184</guid>
		<description><![CDATA[For a project that I&#8217;ve been working on, I&#8217;ve been using OpenGL ES on the iPhone to do 2D in widescreen. Since I struggled a bit to get it setup, I&#8217;ll go ahead and share how I got things going. First up, you need a project to work in &#8212; I&#8217;m using the OpenGL ES [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=184&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For a project that I&#8217;ve been working on, I&#8217;ve been using OpenGL ES on the iPhone to do 2D in widescreen.  Since I struggled a bit to get it setup, I&#8217;ll go ahead and share how I got things going.</p>
<p>First up, you need a project to work in &#8212; I&#8217;m using the OpenGL ES Application template in XCode for this.  Also, I&#8217;m using the 3.0 SDK.  This should apply just the same to earlier SDK versions, but there may be minor differences.</p>
<p><img src="http://dmunsie.files.wordpress.com/2009/08/ortho1.png?w=600&#038;h=398" alt="ortho1" title="ortho1" width="600" height="398" class="aligncenter size-full wp-image-185" /></p>
<p>Out of the box, this project will use an orthogonal view.  But it isn&#8217;t in widescreen mode, and the 0,0 is in the center of the screen.  This might be fine for some uses, but if you are porting code that expects 0,0 to be someplace else, this just isn&#8217;t going to work.  For this example, we are going to setup the scene so that 0,0 is the bottom left and 480,320 is the top right.</p>
<p>First off, lets change the method <code>-(id)initWithCoder:(NSCoder*)coder</code>.  Underneath the line:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;animationInterval = 1.0 / 60.0;</code></p>
<p>put in the following code:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;glMatrixMode(GL_PROJECTION);<br />
&nbsp;&nbsp;&nbsp;&nbsp;glLoadIdentity();<br />
&nbsp;&nbsp;&nbsp;&nbsp;glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;glOrthof(-480.0f / 2.0f, 480.0f / 2.0f, -320.0f / 2.0f, 320.0f / 2.0f, -1.0f, 1.0f);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;glMatrixMode(GL_MODELVIEW);<br />
&nbsp;&nbsp;&nbsp;&nbsp;glLoadIdentity();<br />
&nbsp;&nbsp;&nbsp;&nbsp;glTranslatef(-480.0f / 2.0f, -320.0f / 2.0f, 0.0f);</code></p>
<p>What we are doing here is setting up our two matrices &#8212; the projection matrix and the model/view matrix.  We rotate the matrix -90 degrees so that we will be in widescreen mode with the home button on the right.  If you want to flip it the other way, just rotate +90 degrees instead.  Once we&#8217;ve done that, we can setup our orthogonal projection with the bottom left being 0,0 and the top right being 480,320.</p>
<p>For the model/view matrix, all we need to do is just translate the matrix so that the bottom left is 0,0 and the top right is 480,320.  </p>
<p>Down below in the <code>-(void)drawView</code> method, you need to remove this block of code:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;glMatrixMode(GL_PROJECTION);<br />
&nbsp;&nbsp;&nbsp;&nbsp;glLoadIdentity();<br />
&nbsp;&nbsp;&nbsp;&nbsp;glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f);</code></p>
<p>Since we are setting up the projection matrix in our initialization code, we do not need to reset it every time we draw a frame.  Also you will need to replace this block of code:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;const GLfloat squareVertices[] = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-0.5f, -0.5f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.5f, -0.5f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-0.5f, &nbsp;0.5f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.5f, &nbsp;0.5f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;};</code></p>
<p>with this:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;const GLfloat squareVertices[] = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-120.0f, -120.0ff,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120.0f, -120.0ff,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-120.0f, &nbsp;120.0f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120.0f, &nbsp;120.0f,<br />
&nbsp;&nbsp;&nbsp;&nbsp;};</code></p>
<p>The old coordinates were based on 0,0 being in the center of the screen and that the width/height of the screen was 2.0 and 3.0.  We also need to change where it is drawn.  We can do that by adding the following code right before the <code>glMatrixMode(GL_MODELVIEW)</code> call:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;glPushMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;glTranslatef(480.0f / 2.0f, 320.0f / 2.0f, 0.0f);</code></p>
<p>and this after the <code>glDrawArrays()</code> call:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;glPopMatrix();</code></p>
<p>It should look like this now:</p>
<p><img src="http://dmunsie.files.wordpress.com/2009/08/ortho2.png?w=600&#038;h=398" alt="ortho2" title="ortho2" width="600" height="398" class="aligncenter size-full wp-image-185" /></p>
<p>A couple of quick notes &#8212; you probably noticed that the <code>glTranslatef()</code> in <code>drawView</code> cancels out the one in <code>initWithCoder:</code>.  This is really only for demo purposes.  In my projects, I do rotation and translation myself so that I can take advantage of calling <code>glDrawArrays()</code> for a batch of objects instead of sending them to GL one at a time.  But that&#8217;s beyond the scope of this article.  The other thing is that if you run this project right now, you&#8217;ll also notice that it&#8217;s still not in widescreen and it&#8217;s no longer rotating the cube.  The first is really easy to fix.  Open the plist file for your project &#8212; mine is called OrthoGL-Info.plist and it&#8217;s located in Resources.  You need to add the following flag:</p>
<p><img src="http://dmunsie.files.wordpress.com/2009/08/ortho31.png?w=600&#038;h=398" alt="ortho3" title="ortho3" width="600" height="398" class="aligncenter size-full wp-image-201" /></p>
<p>You can add a new entry by clicking on the + button that shows up when you click on any line.  It doesn&#8217;t matter where in the file the flag is &#8212; you can put it anywhere.</p>
<p>That fixes the first problem, but the second problem still remains.  We lost rotation when we added the <code>glPush/PopMatrix()</code> calls.  This one is fairly easy to fix as well.  Simply add a new instance variable to the EAGLView.h file.  Call it <code>rotation</code> with a <code>GLfloat</code> type:</p>
<p><img src="http://dmunsie.files.wordpress.com/2009/08/ortho4.png?w=600&#038;h=398" alt="ortho4" title="ortho4" width="600" height="398" class="aligncenter size-full wp-image-196" /><br />
and then replace the <code>glRotate()</code> in <code>drawView</code> with this:</p>
<p><code>&nbsp;&nbsp;&nbsp;&nbsp;rotation += 3.0f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;glRotatef(rotation, 0.0f, 0.0f, 1.0f);</code></p>
<p>All done!</p>
<p><a href="http://dmunsie.files.wordpress.com/2009/08/ortho5.png"><img src="http://dmunsie.files.wordpress.com/2009/08/ortho5.png?w=600&#038;h=322" alt="ortho5" title="ortho5" width="600" height="322" class="aligncenter size-full wp-image-203" /></a></p>
<p>I hope at this point you have enough to get started with 2D projection in widescreen on the iPhone.  Please let me know in the comments below any questions you may have, and I&#8217;ll try to answer them.  Maybe if there is enough interest, I can do a follow up article as well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=184&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2009/08/04/iphone-and-widescreen-2d-with-opengl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/08/ortho1.png" medium="image">
			<media:title type="html">ortho1</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/08/ortho2.png" medium="image">
			<media:title type="html">ortho2</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/08/ortho31.png" medium="image">
			<media:title type="html">ortho3</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/08/ortho4.png" medium="image">
			<media:title type="html">ortho4</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2009/08/ortho5.png" medium="image">
			<media:title type="html">ortho5</media:title>
		</media:content>
	</item>
		<item>
		<title>Why I Hate C++ &#8211; Reason #47</title>
		<link>http://dmunsie.wordpress.com/2009/08/01/why-i-hate-cplusplus-reason-47/</link>
		<comments>http://dmunsie.wordpress.com/2009/08/01/why-i-hate-cplusplus-reason-47/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 01:53:30 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=175</guid>
		<description><![CDATA[What do you expect this code to do? #include &#60;stdio.h&#62; &#160; class Foo { public: &#160;&#160;&#160;&#160;void doStuff() { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf("hi from Foo!\n"); &#160;&#160;&#160;&#160;} }; &#160; int main(int argc, char *argv[]) { &#160;&#160;&#160;&#160;Foo *f = NULL; &#160; &#160;&#160;&#160;&#160;f-&#62;doStuff(); &#160;&#160;&#160;&#160;return 0; } If you said it would crash because of the NULL pointer, you are wrong. This code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=175&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What do you expect this code to do?</p>
<p><code>#include &lt;stdio.h&gt;<br />
&nbsp;<br />
class Foo {<br />
public:<br />
&nbsp;&nbsp;&nbsp;&nbsp;void doStuff() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("hi from Foo!\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};<br />
&nbsp;<br />
int main(int argc, char *argv[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;Foo *f = NULL;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;f-&gt;doStuff();<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
}</code></p>
<p>If you said it would crash because of the NULL pointer, you are wrong.  This code will actually print &#8220;hi from foo&#8221; to the console.  Why?  Because as long as you are not calling any functions that use instance variables or are virtual, the NULL pointer is never dereferenced.  And if you know how C++ handles member functions, you should know exactly why.</p>
<p>For the record, I ended up spending a few hours at work today tracking down an issue that ended up being caused by a NULL pointer call.  The bug had actually been lurking for a few releases and only when the method being called was modified to use an instance variable did the problem become exposed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=175&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2009/08/01/why-i-hate-cplusplus-reason-47/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>VideoNow Playback Code</title>
		<link>http://dmunsie.wordpress.com/2008/10/20/videonow-playback-code/</link>
		<comments>http://dmunsie.wordpress.com/2008/10/20/videonow-playback-code/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 02:34:01 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[MacOS X]]></category>
		<category><![CDATA[VideoNow]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=163</guid>
		<description><![CDATA[We picked up a VideoNow player over the weekend for a dollar at a yard sale. It immediately was a hit with the kids, but I was curious about the video format. It took me some searching around, but I was able to find enough information to bang out a quick and dirty player for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=163&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dmunsie.files.wordpress.com/2008/10/videonow.png"><img src="http://dmunsie.files.wordpress.com/2008/10/videonow.png?w=600" alt="" title="VideoNow player screenshot"   class="size-full wp-image-162" /></a></p>
<p>We picked up a <a href="http://en.wikipedia.org/wiki/VideoNow">VideoNow</a> player over the weekend for a dollar at a yard sale.  It immediately was a hit with the kids, but I was curious about the video format.  It took me some searching around, but I was able to find enough information to bang out a quick and dirty player for the Mac using OpenGL and CoreAudio.  It doesn&#8217;t have a GUI, but it works pretty well for a few hours of work I think.  If this is something you were looking for, enjoy!</p>
<p><a href="http://munsie.net/code/videonow.cpp">videonow.cpp</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=163&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2008/10/20/videonow-playback-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>

		<media:content url="http://dmunsie.files.wordpress.com/2008/10/videonow.png" medium="image">
			<media:title type="html">VideoNow player screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>UMPC from Dell</title>
		<link>http://dmunsie.wordpress.com/2008/06/12/umpc-from-dell/</link>
		<comments>http://dmunsie.wordpress.com/2008/06/12/umpc-from-dell/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 02:51:12 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Dell]]></category>
		<category><![CDATA[UMPC]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=160</guid>
		<description><![CDATA[Over at Dell&#8217;s blog, they have some pics of a new UMPC that they are apparently working on. Looks pretty good for Dell &#8212; I would love to have something of that size for travel. Though I have to wonder why PC manufacturers still insist on putting a VGA port on laptops when a DVI [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=160&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over at Dell&#8217;s <a href="http://yourblog.direct2dell.com/2008/05/28/something-from-dell-at-d6/">blog</a>, they have some pics of a new UMPC that they are apparently working on.  Looks pretty good for Dell &#8212; I would love to have something of that size for travel.  Though I have to wonder why PC manufacturers still insist on putting a VGA port on laptops when a DVI port with a $2 VGA adapter provides a better digital output without sacrificing compatibility &#8212; are we that tied to legacy ports that we can&#8217;t bear to give them up even when the replacement includes backwards compatibility?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmunsie.wordpress.com/160/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmunsie.wordpress.com/160/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=160&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2008/06/12/umpc-from-dell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>3G iPhone &#8212; finally</title>
		<link>http://dmunsie.wordpress.com/2008/06/10/3g-iphone-finally/</link>
		<comments>http://dmunsie.wordpress.com/2008/06/10/3g-iphone-finally/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 01:26:27 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=159</guid>
		<description><![CDATA[In case you live in a cave or for some odd reason only get your tech news from my blog (hint, there are much, much better sources of news), Apple finally updated the iPhone today with 3G support and a GPS. And they lowered the price as well &#8212; $199 for the 8GB model, $299 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=159&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In case you live in a cave or for some odd reason only get your tech news from my blog (hint, there are much, much better sources of news), Apple finally updated the iPhone today with 3G support and a GPS.  And they lowered the price as well &#8212; $199 for the 8GB model, $299 for the 16GB model.  Apple is going to sell a ton of these this year &#8212; way more than the goal of 10 million.</p>
<p>As for me, I&#8217;ll be waiting a bit longer for the jump to 3G.  I currently have a 8GB iPhone and 16GB iPod touch &#8212; I was really set on replacing both devices with a 32GB iPhone, but it looks like I&#8217;ll have to wait a bit more for that option to show up.  As good of a deal the new iPhone is, I just don&#8217;t think it&#8217;s good enough to warrant an upgrade from a 1st gen iPhone unless you happen to have one of those 4GB models.  3G looks like it will be fantastic, but it comes with an extra $10/month over the existing iPhone data plan.  GPS also will be welcome, but I personally don&#8217;t see it worth the extra cost associated with switching to a 3G iPhone will incur at the moment.</p>
<p>Now as soon as that 32GB model comes out, I&#8217;ll make the jump over to 3G&#8230; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmunsie.wordpress.com/159/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmunsie.wordpress.com/159/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=159&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2008/06/10/3g-iphone-finally/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>New iPhone Competitor *YAWN*</title>
		<link>http://dmunsie.wordpress.com/2008/04/09/new-iphone-competitor-yawn/</link>
		<comments>http://dmunsie.wordpress.com/2008/04/09/new-iphone-competitor-yawn/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 04:11:37 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Nokia Tube]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=157</guid>
		<description><![CDATA[It looks like Nokia is working on a new competitor to the iPhone called the Tube. The article considers it an iPhone killer. But that&#8217;s probably just wishful thinking. What this article seems to miss (along with all of the makers of &#8220;iPhone killers&#8221;) is that it&#8217;s not about putting a shiny touch screen on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=157&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It looks like Nokia is working on a new competitor to the iPhone called the <a href="http://www.fiercewireless.com/story/nokia-previews-iphone-killer-named-tube/2008-04-08?utm_medium=rss&amp;utm_source=rss">Tube</a>.  The article considers it an iPhone killer.  But that&#8217;s probably just wishful thinking.<span id="more-157"></span></p>
<p>What this article seems to miss (along with all of the makers of &#8220;iPhone killers&#8221;) is that it&#8217;s not about putting a shiny touch screen on a phone or putting a fresh paint job on the UI while keeping the behavior the same (hello <a href="http://www.engadget.com/2008/03/28/blackberry-9000-in-the-wild/">Blackberry 9000</a>&#8230;).  What Apple has been consistently doing ever since Steve Jobs came back in the mid 90s is building flashy products that <strong><em>work with people</em></strong> rather than making people work with them.  Most people seem to focus on the flashy side of things &#8212; but it would be much more beneficial to focus on the human interface side.  This is Apple&#8217;s strength.</p>
<p>Lets take the iPod/iTunes juggernaut as an example.  On the surface of things, an MP3 player should be a commodity item at this point.  You can build one out of a handful of off the shelf parts &#8212; hard drive, small embedded processor, some RAM, a display, some buttons for controls.  Bring in an open source OS like Linux, and voila, you have an MP3 player.  You don&#8217;t even have to write much software, since you can easily find tons of open source libraries to use to build your device.</p>
<p>Yet somehow, Apple still has a commanding lead with the iPod and iTunes &#8212; even the demise of DRM hasn&#8217;t seemed to hurt Apple yet.  In fact, the recording industry appears to be actively trying to knock away at the iPod/iTunes duo by licensing their music in DRM free formats to everyone but iTunes.</p>
<p>So what is it about the iPod that keeps people buying iPods over devices that looks similar but cost much less?  It&#8217;s the software of course &#8212; the part of the equation that makes it <strong><em>work</em></strong> just as good as it looks.  What Apple&#8217;s competitors seem to overlook is that having the best hardware in the world is worth nothing when your software isn&#8217;t anywhere near where it needs to be.</p>
<p>Let&#8217;s take loading music onto a device &#8212; with iTunes, if your music collection is small enough to fit on the device, iTunes will automatically load it all in.  If it&#8217;s not, iTunes will offer to pick a subset for you based on how you rated your music (higher rated songs go on the iPod, lower ones don&#8217;t).  If you don&#8217;t like that, you can easily just say no and then you can pick playlists that you want to go on instead.  The loading of the songs takes place over the included iPod USB 2.0 cable via your PC or Mac.</p>
<p>What about on the cheap knockoff iPod-lookalike MP3 player?  Well more than likely, either you will have a memory card that you have to take out of the player and insert into a reader on the PC or you will connect it up via a USB connection.  Once you do this, you will have a new drive show up on your Desktop (Mac) or in My Computer (PC).  From there, you can copy MP3 files to the device.  Where are your MP3 files to begin with?  Oh you don&#8217;t know?  What if you want playlists?  Do you set them up in folders or lump them all together in one folder?  Does the device even play this filetype?</p>
<p>iTunes takes care of all of those details &#8212; and more.  I don&#8217;t care about how the files are organized on the iPod because I don&#8217;t need to know.  If a file won&#8217;t play on the iPod, iTunes will tell me and not bother copying over the file.  And any playlist I make in iTunes will automatically be available on the iPod if I choose to sync it over.</p>
<p>So back to my original topic &#8212; this Nokia iPhone killer.  I&#8217;ve used a few Nokia devices, and from my own experience they don&#8217;t have the works-with-people part of the equation down.  They&#8217;ve managed to make what is, in my opinion, clumsy interfaces that just don&#8217;t work in the same ways that interfaces that Apple makes.  This isn&#8217;t just blind fanboyism at work here &#8212; this is based on my own observations of watching people who know very little to nothing at all about computers actually use things like the iPod and iPhone without assistance.  It&#8217;s based on watching some of these same people, when given other devices, barely make due with them.  Sure, they&#8217;ll eventually figure them out enough to get by with using them &#8212; but they never really feel comfortable with them.</p>
<p>Apple makes products that people are capable of feeling comfortable working with. That&#8217;s why until companies focus on making products that work with people instead of the other way around, there won&#8217;t be a real iPhone killer coming out anytime soon.</p>
<p>EDIT:  After posting this, I realized that I might&#8217;ve not conveyed my thoughts accurately regarding BlackBerry.  I am more disappointed with the BlackBerry 9000 not because it&#8217;s a bad device, but because instead of playing off their strengths, they went for the iPhone shiny look.  Obviously the BlackBerry is a good device &#8212; I&#8217;ve seen a lot of non-technical people carrying them around, getting along with them just fine.  But by trying to ape some of the design elements from the iPhone, I think they are unfairly putting themselves up against the iPhone when they weren&#8217;t really in the same market.  At least not the original iPhone software &#8212; it seems as if Apple has recognized that RIM considers them to be a threat and has really made sure that the 2.0 firmware for the iPhone will address some deficiencies that the iPhone had when compared against the BlackBerry.  But I digress.  IMO, if RIM would&#8217;ve worked on improving the things that got it to where it is in the marketplace today instead of focusing on the trying to out iPhone the iPhone, I think the BlackBerry 9000 would be a very different piece of hardware.  And I think that because of that, it might&#8217;ve had a better chance to survive the upcoming iPhone onslaught with the 2.0 firmware.  It will probably still be a very successful device, but I&#8217;m sure there will be quite a few RIM customers who see the resemblance to an iPhone, find out that it&#8217;s not quite the same, and end up as new Apple customers because of it.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmunsie.wordpress.com/157/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmunsie.wordpress.com/157/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=157&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2008/04/09/new-iphone-competitor-yawn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
		<item>
		<title>Someone really gets it</title>
		<link>http://dmunsie.wordpress.com/2008/02/28/someone-really-gets-it/</link>
		<comments>http://dmunsie.wordpress.com/2008/02/28/someone-really-gets-it/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 22:03:02 +0000</pubDate>
		<dc:creator>dmunsie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>

		<guid isPermaLink="false">http://dmunsie.wordpress.com/?p=156</guid>
		<description><![CDATA[Thanks to Erica over at TUAW, I ran into this new package manager for the iPhone and iPod touch that&#8217;s based on Debian&#8217;s APT. Finally, someone gets that the iPhone can be just as much of a Unix workstation as other devices. Compared to the machines I was using back in 1995, the iPhone is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=156&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to Erica over at <a href="http://www.tuaw.com/2008/02/28/debian-style-installation-arrives-on-iphone/">TUAW</a>, I ran into this <a href="http://www.saurik.com/id/1">new package manager</a> for the iPhone and iPod touch that&#8217;s based on Debian&#8217;s APT.  Finally, someone gets that the iPhone can be just as much of a Unix workstation as other devices.  Compared to the machines I was using back in 1995, the iPhone is actually more powerful than some of them.  So why not have real tools installed on them instead of really buggy fakes?  Here&#8217;s hoping that this new open standard catches on and that Installer.app and especially the BSD subsystem package become relics of the past.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dmunsie.wordpress.com/156/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dmunsie.wordpress.com/156/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dmunsie.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dmunsie.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dmunsie.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dmunsie.wordpress.com&amp;blog=497473&amp;post=156&amp;subd=dmunsie&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dmunsie.wordpress.com/2008/02/28/someone-really-gets-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e50b26e6de5b52432d8870f27c71fc0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">SmileyDude</media:title>
		</media:content>
	</item>
	</channel>
</rss>
