<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>I ticked the wrong box</title>
	
	<link>http://hamishrickerby.com</link>
	<description>Computer says...</description>
	<lastBuildDate>Fri, 23 Jul 2010 07:46:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ITickedTheWrongBox" /><feedburner:info uri="itickedthewrongbox" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>iPhone &amp; iPad (iOS) Localizations and Regions</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/ra9aJDEamwg/</link>
		<comments>http://hamishrickerby.com/2010/07/23/iphone-ipad-localizations-regions/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:45:12 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=454</guid>
		<description><![CDATA[Recently I have been doing some localizations of an iOS app from English (US) to English (UK). The iPhone development guides from Apple describe how to support multiple languages (such as English, German, Japanese), but fail to describe how to support multiple variants of a single language. By this I mean support support for US [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been doing some localizations of an iOS app from English (US) to English (UK). The iPhone development guides from Apple describe how to support multiple languages (such as English, German, Japanese), but fail to describe how to support multiple variants of a single language. By this I mean support support for US English, English, NZ English, AU English. The word I needed to regionalize was Behavior (or Behaviour, depending where you come from). </p>
<p>In the Apple Developer Library, it explicitly states that for MacOS applications take both the Language and Regional preferences of the user into account, but only look at the preferred <em>language</em> on iOS &#8211; <a href="http://developer.apple.com/iphone/library/documentation/MacOSX/Conceptual/BPInternational/Articles/InternatSupport.html">Support for Internationalization</a>.  This means that a single variant <em>per language</em> is supported. </p>
<p>However, these is a way around this. I&#8217;m not sure if this is a <em>good</em> thing to do, but it works for me and I haven&#8217;t noticed any ill side effects yet.</p>
<p>To support both US English and British English in your iOS application, create 2x Localization.strings files just as you would for multiple language. Put the US English translation file Localization.strings in a directory in your iPhone app called English.lproj (Apple defaults) and the British English translation in a directory named en_GB.lproj (just in case they decide to support regions in the future).</p>
<p>Then, you&#8217;ll need to create some code to manually set the preferred localization.  In your main.m file (yup, main.m is being edited) alter it so it performs some logic similar to below.</p>
<pre class="brush: objc;">
int main(int argc, char *argv[]) {
	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
	NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
	NSString *locale = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
	if ([language isEqualToString:@&quot;en&quot;] &amp;&amp; [locale isEqualToString:@&quot;GB&quot;]) {
		[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@&quot;en_GB&quot;, @&quot;en&quot;, nil] forKey:@&quot;AppleLanguages&quot;];
	}
	int retVal = UIApplicationMain(argc, argv, nil, nil);
	[pool release];
	return retVal;
}
</pre>
<p>When the line </p>
<pre class="brush: objc;">
int retVal = UIApplicationMain(argc, argv, nil, nil);
</pre>
<p>gets executed, it seems to set up all the Localization bundles before calling the application:didFinishLaunchingWithOptions method on your app delegate, so putting Localization code in the app delegate is too late. So, what the code above does is retrieve the users current language and region, and compares those against pre-determined values &#8211; en for the language and gb for the region. If these match, then I force a new setting in the NSUserDefaults to overwrite the users preferred language. Then, when the UIApplicationManager function gets called, it appears to retrieve the users preferred language setting, and look up the Localization for that &#8211; which in my case I&#8217;ve forced to be en_GB.</p>
<p>One thing you need to be careful about is persistence of this NSUserDefault setting.  It is saved once it&#8217;s set, and persists through multiple application executions. To get around this (lets say the user changes their region back to US), you need to remove the setting after the bundle initialization has taken place.  In you app delegates application:didFinishLaunchingWithOptions method, just execute the following code.</p>
<pre class="brush: objc;">
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@&quot;AppleLanguages&quot;];
</pre>
<p>This wipes out the NSUserDefault setting that the app made in the main.m file.</p>
<p>If anyone knows of issues with this approach (apart from being a dirty hack), or faults with my code please let me know in the comments below. I wish Apple supported different regions per language natively in iOS but they don&#8217;t. This is the only way I&#8217;ve found to do this, and continue to use localization functions such as NSLocalizedString.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2696058307997556";
/* 468x60, created 29/07/09 */
google_ad_slot = "3174546356";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=ra9aJDEamwg:E46H1YAkvAQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=ra9aJDEamwg:E46H1YAkvAQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=ra9aJDEamwg:E46H1YAkvAQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=ra9aJDEamwg:E46H1YAkvAQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=ra9aJDEamwg:E46H1YAkvAQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=ra9aJDEamwg:E46H1YAkvAQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/ra9aJDEamwg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2010/07/23/iphone-ipad-localizations-regions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2010/07/23/iphone-ipad-localizations-regions/</feedburner:origLink></item>
		<item>
		<title>Moving Van</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/XTeTC9ryTJw/</link>
		<comments>http://hamishrickerby.com/2010/03/04/moving-van/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 07:35:59 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=445</guid>
		<description><![CDATA[Yesterday when I came home Moving Van&#8217;s sales were up. I was a bit surprised as I hadn&#8217;t done any specific marketing for the app, and what was really odd is that they were only up for the UK. A little investigation and I discover that Moving Van has been featured as &#8220;New and Noteworthy&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday when I came home <a href="http://is.gd/93SaG">Moving Van&#8217;s</a> sales were up. I was a bit surprised as I hadn&#8217;t done any specific marketing for the app, and what was really odd is that they were only up for the UK.  A little investigation and I discover that <a href="http://is.gd/93SaG">Moving Van</a> has been featured as &#8220;New and Noteworthy&#8221; in the iTunes Store UK.</p>
<p><a href="http://hamishrickerby.com/wp-content/uploads/2010/03/Screen-shot-2010-03-03-at-17.52.49.png" rel="lightbox[445]"><img src="http://hamishrickerby.com/wp-content/uploads/2010/03/Screen-shot-2010-03-03-at-17.52.49-300x142.png" alt="Moving Van in the iTunes Store" title="Moving Van as New and Noteworthy" width="300" height="142" class="aligncenter size-medium wp-image-444" /></a></p>
<p>How frickin&#8217; exciting!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=XTeTC9ryTJw:bQa6pozNH94:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=XTeTC9ryTJw:bQa6pozNH94:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=XTeTC9ryTJw:bQa6pozNH94:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=XTeTC9ryTJw:bQa6pozNH94:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=XTeTC9ryTJw:bQa6pozNH94:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=XTeTC9ryTJw:bQa6pozNH94:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/XTeTC9ryTJw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2010/03/04/moving-van/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2010/03/04/moving-van/</feedburner:origLink></item>
		<item>
		<title>Ad from Digg</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/edUCfRyMrkA/</link>
		<comments>http://hamishrickerby.com/2010/02/08/ad-from-digg/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 12:19:39 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/2010/02/08/ad-from-digg/</guid>
		<description><![CDATA[Seriously, WTF? I assume it&#8217;s some sort of movie tie-in&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://hamishrickerby.com/wp-content/uploads/2010/02/Screen-shot-2010-02-08-at-12.17.12.png" rel="lightbox[441]"><img src="http://hamishrickerby.com/wp-content/uploads/2010/02/Screen-shot-2010-02-08-at-12.17.12.png" alt="" title="NEW LIVER?" width="638" height="134" class="aligncenter size-full wp-image-440" /></a></p>
<p>Seriously, WTF?  I assume it&#8217;s some sort of movie tie-in&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=edUCfRyMrkA:DncxHw0tq_Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=edUCfRyMrkA:DncxHw0tq_Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=edUCfRyMrkA:DncxHw0tq_Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=edUCfRyMrkA:DncxHw0tq_Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=edUCfRyMrkA:DncxHw0tq_Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=edUCfRyMrkA:DncxHw0tq_Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/edUCfRyMrkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2010/02/08/ad-from-digg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2010/02/08/ad-from-digg/</feedburner:origLink></item>
		<item>
		<title>Calculate age in objective-c</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/jRnEqVTpmoI/</link>
		<comments>http://hamishrickerby.com/2010/01/07/calculate-age-in-objective-c/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 19:30:13 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=432</guid>
		<description><![CDATA[For an iPhone application I&#8217;m developing for a client I need to capture the birthdate of a user, and then show their age on a profile screen. I went looking for a function to help with this simple and tedious task, but couldn&#8217;t find any example code that could be lifted to help me, so [...]]]></description>
			<content:encoded><![CDATA[<p>For an iPhone application I&#8217;m developing for a client I need to capture the birthdate of a user, and then show their age on a profile screen. I went looking for a function to help with this simple and tedious task, but couldn&#8217;t find any example code that could be lifted to help me, so I rolled my own.  Here is what I made, steal as you see fit.</p>
<pre class="brush: objc;">
- (NSInteger)age:(NSDate *)dateOfBirth {
  NSCalendar *calendar = [NSCalendar currentCalendar];
  unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
  NSDateComponents *dateComponentsNow = [calendar components:unitFlags fromDate:[NSDate date]];
  NSDateComponents *dateComponentsBirth = [calendar components:unitFlags fromDate:dateOfBirth];

  if (([dateComponentsNow month] &lt; [dateComponentsBirth month]) ||
      (([dateComponentsNow month] == [dateComponentsBirth month]) &amp;&amp; ([dateComponentsNow day] &lt; [dateComponentsBirth day]))) {
    return [dateComponentsNow year] - [dateComponentsBirth year] - 1;
  } else {
    return [dateComponentsNow year] - [dateComponentsBirth year];
  }
}
</pre>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2696058307997556";
/* 468x60, created 29/07/09 */
google_ad_slot = "3174546356";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=jRnEqVTpmoI:aEo6WMj6tb0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=jRnEqVTpmoI:aEo6WMj6tb0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=jRnEqVTpmoI:aEo6WMj6tb0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=jRnEqVTpmoI:aEo6WMj6tb0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=jRnEqVTpmoI:aEo6WMj6tb0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=jRnEqVTpmoI:aEo6WMj6tb0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/jRnEqVTpmoI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2010/01/07/calculate-age-in-objective-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2010/01/07/calculate-age-in-objective-c/</feedburner:origLink></item>
		<item>
		<title>iPhone Camera Overlays + iphonearkit</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/tTJqq4BMU4k/</link>
		<comments>http://hamishrickerby.com/2009/09/20/iphone-camera-overlays-iphonearkit/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:58:33 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile development]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=424</guid>
		<description><![CDATA[Today I have been hacking away on the iphonearkit source available at github and have incorporated the ARGeoViewController as an overlay over a ImagePickerController with the camera as the source (which was introduced with iPhone OS 3.1).  Results below. I want to tidy up some of the code before I check it back into my [...]]]></description>
			<content:encoded><![CDATA[<p>Today I have been hacking away on the <a href="http://github.com/zac/iphonearkit" target="_self">iphonearkit source</a> available at github and have incorporated the ARGeoViewController as an overlay over a ImagePickerController with the camera as the source (which was introduced with iPhone OS 3.1).  Results below.</p>
<div id="attachment_425" class="wp-caption aligncenter" style="width: 310px"><a href="http://hamishrickerby.com/wp-content/uploads/2009/09/IMG_0337.PNG" rel="lightbox[424]"><img class="size-medium wp-image-425" title="ARGeoViewController overlay" src="http://hamishrickerby.com/wp-content/uploads/2009/09/IMG_0337-300x200.PNG" alt="ARGeoViewController as the overlay on a ImagePickerController on iPhone" width="300" height="200" /></a><p class="wp-caption-text">ARGeoViewController as the overlay on a ImagePickerController on iPhone</p></div>
<p>I want to tidy up some of the code before I check it back into <a href="http://github.com/rickerbh/iphonearkit" target="_blank">my clone of the source</a>, but this is a really good basis for some smart location and direction aware augmented reality apps on iPhone.  Wonder what the iphonearkit license is &#8211; it&#8217;s unclear&#8230;</p>
<p>&#8212; EDIT &#8212;</p>
<p>Bugger.  It appears that <a href="http://github.com/zac/" target="_blank">zac</a> has implemented similar functionality to me already <img src='http://hamishrickerby.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />   Bloody github and it&#8217;s slow (never!) updates to fork queues and network graphs.  Oh well, maybe I won&#8217;t bother tidying my code.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=tTJqq4BMU4k:tq2wbDMjlV0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=tTJqq4BMU4k:tq2wbDMjlV0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=tTJqq4BMU4k:tq2wbDMjlV0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=tTJqq4BMU4k:tq2wbDMjlV0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=tTJqq4BMU4k:tq2wbDMjlV0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=tTJqq4BMU4k:tq2wbDMjlV0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/tTJqq4BMU4k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/09/20/iphone-camera-overlays-iphonearkit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/09/20/iphone-camera-overlays-iphonearkit/</feedburner:origLink></item>
		<item>
		<title>Augmented Reality – Hello World</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/gXeg6hnhuIE/</link>
		<comments>http://hamishrickerby.com/2009/09/20/augmented-reality-hello-world/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:07:09 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[augmented reality]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=417</guid>
		<description><![CDATA[I&#8217;ve recently discovered augmented reality. After I saw my first &#8220;virtual business card&#8221; application I was hooked.  I&#8217;ve been doing a lot of reading and experimenting with software over the past 2 days, and have got ARToolkit working here.  Here are some shots of the obligitory &#8220;cube over marker&#8221; demo.  I would post a video, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently discovered augmented reality. After I saw my first &#8220;virtual business card&#8221; application I was hooked.  I&#8217;ve been doing a lot of reading and experimenting with software over the past 2 days, and have got <a href="http://www.hitl.washington.edu/artoolkit/" target="_blank">ARToolkit</a> working here.  Here are some shots of the obligitory &#8220;cube over marker&#8221; demo.  I would post a video, but my screen capture software and AR software = a really poor frame rate and substandard video <img src='http://hamishrickerby.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<div id="attachment_418" class="wp-caption aligncenter" style="width: 310px"><a href="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-16.57.47.png" rel="lightbox[417]"><img class="size-medium wp-image-418" title="AR Marker" src="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-16.57.47-300x239.png" alt="Marker with no overlaid image" width="300" height="239" /></a><p class="wp-caption-text">Marker with no overlaid image</p></div>
<div id="attachment_419" class="wp-caption aligncenter" style="width: 310px"><a href="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-16.58.01.png" rel="lightbox[417]"><img class="size-medium wp-image-419" title="Cube over marker" src="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-16.58.01-300x242.png" alt="Blue cube over the Hiro marker" width="300" height="242" /></a><p class="wp-caption-text">Blue cube over the Hiro marker</p></div>
<p>Next up, something more substantial.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=gXeg6hnhuIE:N0U0tLkRqTY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=gXeg6hnhuIE:N0U0tLkRqTY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=gXeg6hnhuIE:N0U0tLkRqTY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=gXeg6hnhuIE:N0U0tLkRqTY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=gXeg6hnhuIE:N0U0tLkRqTY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=gXeg6hnhuIE:N0U0tLkRqTY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/gXeg6hnhuIE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/09/20/augmented-reality-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/09/20/augmented-reality-hello-world/</feedburner:origLink></item>
		<item>
		<title>No, I don’t agree</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/uEchOEgNZhY/</link>
		<comments>http://hamishrickerby.com/2009/09/17/no-i-dont-agree/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 17:17:02 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=414</guid>
		<description><![CDATA[Tough luck &#8211; the box is un-uncheckable.I guess it&#8217;s one way to make sure that people accept your terms &#38; conditions &#8211; force them to.  One less click.]]></description>
			<content:encoded><![CDATA[<p>Tough luck &#8211; the box is un-uncheckable.<a href="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-17-at-18.13.53.png" rel="lightbox[414]"><img class="aligncenter size-full wp-image-413" title="Screen shot 2009-09-17 at 18.13.53" src="http://hamishrickerby.com/wp-content/uploads/2009/09/Screen-shot-2009-09-17-at-18.13.53.png" alt="Screen shot 2009-09-17 at 18.13.53" width="234" height="37" /></a>I guess it&#8217;s one way to make sure that people accept your terms &amp; conditions &#8211; force them to.  One less click.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=uEchOEgNZhY:9GBrcufWDLg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=uEchOEgNZhY:9GBrcufWDLg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=uEchOEgNZhY:9GBrcufWDLg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=uEchOEgNZhY:9GBrcufWDLg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=uEchOEgNZhY:9GBrcufWDLg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=uEchOEgNZhY:9GBrcufWDLg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/uEchOEgNZhY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/09/17/no-i-dont-agree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/09/17/no-i-dont-agree/</feedburner:origLink></item>
		<item>
		<title>Kit Quiz: UK</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/O_caNg6rAyU/</link>
		<comments>http://hamishrickerby.com/2009/09/11/kit-quiz-uk/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 08:00:50 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile development]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=402</guid>
		<description><![CDATA[&#60;shameless self promotion&#62; My 4th iPhone application was approved yesterday by Apple, and it launches in the iTunes store today. It&#8217;s called Kit Quiz: UK and is a UK team based football (soccer) shirt quiz game. It features over 130 shirts from UK football teams, and will have more added shortly.  There are 3 modes [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;shameless self promotion&gt;</p>
<p>My 4th iPhone application was approved yesterday by Apple, and it launches in the <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329199029" target="_blank">iTunes store</a> today.  It&#8217;s called <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329199029" target="_blank">Kit Quiz: UK</a> and is a UK team based football (soccer) shirt quiz game.  It features over 130 shirts from UK football teams, and will have more added shortly.  There are 3 modes of gameplay, from the practise model &#8220;Friendly&#8221; to a time challenge &#8220;Blitz&#8221;.</p>
<p>It&#8217;s integrated with Twitter and Facebook so you can check out your friends scores and find out once and for all who can recognise the most football shirts.</p>
<p>Couple of screenshots below for anyone interested.  <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329199029" target="_blank">Download it now!</a></p>
<div id="attachment_404" class="wp-caption aligncenter" style="width: 310px"><a href="http://hamishrickerby.com/wp-content/uploads/2009/09/kit-quiz-start.png" rel="lightbox[402]"><img class="size-medium wp-image-404" title="Kit Quiz: UK Menu" src="http://hamishrickerby.com/wp-content/uploads/2009/09/kit-quiz-start-300x200.png" alt="Kit Quiz: UK menu screen" width="300" height="200" /></a><p class="wp-caption-text">Kit Quiz: UK menu screen</p></div>
<div id="attachment_403" class="wp-caption aligncenter" style="width: 310px"><a href="http://hamishrickerby.com/wp-content/uploads/2009/09/kit-quiz-game.png" rel="lightbox[402]"><img class="size-medium wp-image-403" title="Kit Quiz: UK - Blitz" src="http://hamishrickerby.com/wp-content/uploads/2009/09/kit-quiz-game-300x200.png" alt="Kit Quiz: UK - Blitz screen" width="300" height="200" /></a><p class="wp-caption-text">Kit Quiz: UK - Blitz screen</p></div>
<p>&lt;/shameless self promotion&gt;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=O_caNg6rAyU:hIWGwIwse1s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=O_caNg6rAyU:hIWGwIwse1s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=O_caNg6rAyU:hIWGwIwse1s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=O_caNg6rAyU:hIWGwIwse1s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=O_caNg6rAyU:hIWGwIwse1s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=O_caNg6rAyU:hIWGwIwse1s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/O_caNg6rAyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/09/11/kit-quiz-uk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/09/11/kit-quiz-uk/</feedburner:origLink></item>
		<item>
		<title>Passenger (Ruby on Rails) + PHP on OSX</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/mq2NJp7yk4s/</link>
		<comments>http://hamishrickerby.com/2009/08/15/passenger-ruby-on-rails-php-on-osx/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 10:06:53 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=391</guid>
		<description><![CDATA[I&#8217;ve spent the last hour or so trying various things out to get passenger and PHP to play nicely together on my mac under OS X (Leopard) and apache2. The situation I was finding was that PHP apps would run, but only if you explicitly call the script (ie index.php) rather than just the directory. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the last hour or so trying various things out to get passenger and PHP to play nicely together on my mac under OS X (Leopard) and apache2.</p>
<p>The situation I was finding was that PHP apps would run, but only if you explicitly call the script (ie <tt>index.php</tt>) rather than just the directory.  If you called the directory, passenger would take over and give me a rails routing error.</p>
<p>The issue was to do with the passenger vhosts configuration.  On my machine I have an number of ruby on rails apps configured with the passenger preferences pane (creating vhost entries within <tt>/private/etc/apache2/passenger_pane_vhosts/</tt>.  I have enabled user_dirs, so that the users of my machine&#8217;s pages (and other apps) are served from their <tt>~username/Sites</tt> directory.</p>
<p>My users configuration info for apache is installed in <tt>/private/etc/apache2/users/</tt>, and the instructions to load the configuration from that directory is stored within <tt>/private/etc/apache2/extra/httpd-userdir.conf</tt> (content below).</p>
<pre class="brush: bash;">
# Settings for user home directories
#
# Required module: mod_userdir
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.  Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf
</pre>
<p>To get everything working together nicely, I merely wrapped this inside a vhosts configuration directive, and gave it a ServerName of localhost &#8211; so that this vhost would be the one that responds to requests for localhost, rather than some random passenger vhost assuming it was the boss of everything.  New <tt>/private/etc/apache2/extra/httpd-userdir.conf</tt> below.</p>
<pre class="brush: bash;">
&lt;VirtualHost *:80&gt;
  ServerName localhost
  UserDir Sites
  Include /private/etc/apache2/users/*.conf
&lt;/VirtualHost&gt;
</pre>
<p>Thanks to this, all of my rails apps are served under passenger, and I can have static HTML, PHP and camping apps (previously configured &#8211; nothing to do with the above) all served from within my <tt>~username/Sites</tt> directory.</p>
<p>Hope this helps someone.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2696058307997556";
/* 468x60, created 29/07/09 */
google_ad_slot = "3174546356";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=mq2NJp7yk4s:65-PffKiD8s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=mq2NJp7yk4s:65-PffKiD8s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=mq2NJp7yk4s:65-PffKiD8s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=mq2NJp7yk4s:65-PffKiD8s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=mq2NJp7yk4s:65-PffKiD8s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=mq2NJp7yk4s:65-PffKiD8s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/mq2NJp7yk4s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/08/15/passenger-ruby-on-rails-php-on-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/08/15/passenger-ruby-on-rails-php-on-osx/</feedburner:origLink></item>
		<item>
		<title>123456789</title>
		<link>http://feedproxy.google.com/~r/ITickedTheWrongBox/~3/CJyf2Pm3pT0/</link>
		<comments>http://hamishrickerby.com/2009/08/07/123456789/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 11:40:26 +0000</pubDate>
		<dc:creator>Hamish Rickerby</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hamishrickerby.com/?p=384</guid>
		<description><![CDATA[Today in the UK the time hit 12:34:56 7/8/9. Not exciting for everyone I guess, but it won&#8217;t happen again for another 100 years.]]></description>
			<content:encoded><![CDATA[<p>Today in the UK the time hit 12:34:56 7/8/9.  Not exciting for everyone I guess, but it won&#8217;t happen again for another 100 years.</p>
<p><a href="http://hamishrickerby.com/wp-content/uploads/2009/08/123456789.PNG" rel="lightbox[384]"><img src="http://hamishrickerby.com/wp-content/uploads/2009/08/123456789-300x252.PNG" alt="123456789" title="123456789" width="300" height="252" class="aligncenter size-medium wp-image-385" /></a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2696058307997556";
/* 468x60, created 29/07/09 */
google_ad_slot = "3174546356";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=CJyf2Pm3pT0:MBEoU-hx6_A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=CJyf2Pm3pT0:MBEoU-hx6_A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=CJyf2Pm3pT0:MBEoU-hx6_A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=CJyf2Pm3pT0:MBEoU-hx6_A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?i=CJyf2Pm3pT0:MBEoU-hx6_A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?a=CJyf2Pm3pT0:MBEoU-hx6_A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ITickedTheWrongBox?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ITickedTheWrongBox/~4/CJyf2Pm3pT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://hamishrickerby.com/2009/08/07/123456789/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://hamishrickerby.com/2009/08/07/123456789/</feedburner:origLink></item>
	</channel>
</rss>
