<?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/"
	>

<channel>
	<title>overhrd</title>
	<atom:link href="http://overhrd.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://overhrd.com</link>
	<description>Michael Mayo - mike@overhrd.com</description>
	<pubDate>Fri, 28 May 2010 20:59:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPhone OS on Apple TV</title>
		<link>http://overhrd.com/?p=204</link>
		<comments>http://overhrd.com/?p=204#comments</comments>
		<pubDate>Fri, 28 May 2010 20:59:43 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=204</guid>
		<description><![CDATA[Today TechCrunch posted an article speculating about an iPhone OS powered Apple TV, and said it could be a problem for developers because they would have to deal with another (even variable!) screen resolution.  
I&#8217;m an iPhone/iPad developer, and I have to admit that before the iPad I would use hard-coded pixel values when [...]]]></description>
			<content:encoded><![CDATA[<p>Today TechCrunch posted an <a href="http://techcrunch.com/2010/05/28/new-apple-tv/">article speculating about an iPhone OS powered Apple TV</a>, and said it could be a problem for developers because they would have to deal with another (even variable!) screen resolution.  </p>
<p>I&#8217;m an iPhone/iPad developer, and I have to admit that before the iPad I would use hard-coded pixel values when building apps.  I knew it was a bad idea, but there was only 320&#215;480, and I was in a hurry to publish.  With the iPad, I don&#8217;t think that way anymore.</p>
<p>The bigger challenge for an iPhone OS Apple TV, in my opinion, is that iPhone OS is designed for multitouch interfaces, and the current Apple TV is designed to be used with a (very) basic remote control.</p>
<p>If I were Apple, I would build a new Apple TV that has no remote control.  Instead, it would be controlled by an iPhone, iPod Touch, or iPad.  Touch the screen on your mobile device and then show a pointer on the TV, sort of like a Wii.  This could make for some amazing user interfaces and take Apple one step further to living room / home domination.</p>
<p>Anyway, that&#8217;s my $0.02.  Back to coding (I released an <a href="http://github.com/greenisus/cocoa-rss">RSS parser for Cocoa</a> today).</p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=204</wfw:commentRss>
		</item>
		<item>
		<title>Best Day Of My Life</title>
		<link>http://overhrd.com/?p=200</link>
		<comments>http://overhrd.com/?p=200#comments</comments>
		<pubDate>Mon, 03 May 2010 07:39:57 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=200</guid>
		<description><![CDATA[I drove a Maserati:

and I&#8217;m about to go on a BBQ journey:

]]></description>
			<content:encoded><![CDATA[<p>I drove a Maserati:</p>
<p><img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/wup-94.jpg" alt="Mike Mayo in a Maserati" /></p>
<p>and I&#8217;m about to go on a BBQ journey:</p>
<p><img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/serious-73.png" alt="Memphis in May BBQ Fest" /></p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=200</wfw:commentRss>
		</item>
		<item>
		<title>Awesome Kentucky Derby Party Hat</title>
		<link>http://overhrd.com/?p=198</link>
		<comments>http://overhrd.com/?p=198#comments</comments>
		<pubDate>Wed, 28 Apr 2010 21:34:46 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=198</guid>
		<description><![CDATA[At the party, I&#8217;ll be drinking my regular libation, which is the official bourbon of the Kentucky Derby: Woodford Reserve.  I got the hat at Goorin Brothers in the Upper Haight in San Francisco.

]]></description>
			<content:encoded><![CDATA[<p>At the party, I&#8217;ll be drinking my regular libation, which is the official bourbon of the Kentucky Derby: <a href = "http://woodfordreserve.com">Woodford Reserve</a>.  I got the hat at <a href = "http://www.goorin.com/">Goorin Brothers</a> in the Upper Haight in San Francisco.</p>
<p><img src = "http://c0222312.cdn.cloudfiles.rackspacecloud.com/mikehat-15.jpg" alt="Mike's Kentucky Derby Hat" /></p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=198</wfw:commentRss>
		</item>
		<item>
		<title>Control Z Order of Views in Android&#8217;s LinearLayout</title>
		<link>http://overhrd.com/?p=192</link>
		<comments>http://overhrd.com/?p=192#comments</comments>
		<pubDate>Tue, 27 Apr 2010 20:02:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=192</guid>
		<description><![CDATA[Unfortunately, LinearLayout in Android does not provide easy access to a z-index property for views.
So, if you want to control the z order, you need to order your views properly.  The z-index of views goes up as views are added.

&#60;ImageView
    android:id="@+id/view_server_os_logo"
    android:layout_width="700dip"
    android:layout_height="700dip"
   [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately, LinearLayout in Android does not provide easy access to a z-index property for views.</p>
<p>So, if you want to control the z order, you need to order your views properly.  The z-index of views goes up as views are added.</p>
<p><code><br />
&lt;ImageView<br />
    android:id="@+id/view_server_os_logo"<br />
    android:layout_width="700dip"<br />
    android:layout_height="700dip"<br />
    android:adjustViewBounds="true"<br />
    android:layout_gravity="left"<br />
    android:src="@drawable/ubuntu_large"<br />
    /><br />
&lt;TextView<br />
    android:layout_width="fill_parent"<br />
    android:layout_height="wrap_content"<br />
    android:layout_marginLeft="22dip"<br />
    android:layout_marginTop="-700dip"<br />
    android:text="Server Name"<br />
    /><br />
</code></p>
<p>In this case, I move the TextView up 700 pixels and it will sit on top of the ImageView because it comes after the ImageView in the layout XML.</p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=192</wfw:commentRss>
		</item>
		<item>
		<title>Remove Expect header in Android&#8217;s org.apache.http</title>
		<link>http://overhrd.com/?p=189</link>
		<comments>http://overhrd.com/?p=189#comments</comments>
		<pubDate>Tue, 27 Apr 2010 03:11:35 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=189</guid>
		<description><![CDATA[The removeHeader() call won&#8217;t work for you.  You have to remove a request interceptor.

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.removeRequestInterceptorByClass(
        org.apache.http.protocol.RequestExpectContinue.class);

This took me a while to track down, unfortunately, so I&#8217;m blogging it here so others can hopefully save some time.
]]></description>
			<content:encoded><![CDATA[<p>The removeHeader() call won&#8217;t work for you.  You have to remove a request interceptor.</p>
<p><code><br />
DefaultHttpClient httpclient = new DefaultHttpClient();<br />
httpclient.removeRequestInterceptorByClass(<br />
        org.apache.http.protocol.RequestExpectContinue.class);<br />
</code></p>
<p>This took me a while to track down, unfortunately, so I&#8217;m blogging it here so others can hopefully save some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=189</wfw:commentRss>
		</item>
		<item>
		<title>Rackspace Cloud Pro 1.1</title>
		<link>http://overhrd.com/?p=186</link>
		<comments>http://overhrd.com/?p=186#comments</comments>
		<pubDate>Fri, 23 Apr 2010 17:37:50 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Rackspace]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=186</guid>
		<description><![CDATA[Today I&#8217;m submitting the first update to the Rackspace Cloud iPad app.
New features include:

longer timeouts
password lock
multiple user accounts
minor bug fixes
email cloud files as attachments
email links to cdn-enabled cloud files
ping IP address uses web view in the app





]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m submitting the first update to the Rackspace Cloud iPad app.</p>
<p>New features include:</p>
<ul>
<li>longer timeouts</li>
<li>password lock</li>
<li>multiple user accounts</li>
<li>minor bug fixes</li>
<li>email cloud files as attachments</li>
<li>email links to cdn-enabled cloud files</li>
<li>ping IP address uses web view in the app</li>
</ul>
<p><img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/rackcloudpro-switchuser-55.png" alt="Multiple User Accounts" /><br />
<img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/rackcloudpro-settings-61.png" alt="Settings Screen" /><br />
<img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/rackcloudpro-email-46.png" alt="Email Files as Attachments" /><br />
<img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/rackcloudpro-pingip-92.png" alt="Ping IP Addresses" /></p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=186</wfw:commentRss>
		</item>
		<item>
		<title>Curly, the HTTP Client for iPad</title>
		<link>http://overhrd.com/?p=183</link>
		<comments>http://overhrd.com/?p=183#comments</comments>
		<pubDate>Tue, 13 Apr 2010 05:59:57 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Rackspace]]></category>

		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=183</guid>
		<description><![CDATA[I built Rackspace Cloud Pro without an iPad.  I used quite a few tools to put it together, but one of the most useful was HTTP Client.  It let me easily inspect and debug HTTP requests to the Rackspace Cloud API.
So, on April 3 when I got my iPad, the first thing I [...]]]></description>
			<content:encoded><![CDATA[<p>I built <a href = "http://www.rackspacecloud.com/blog/2010/04/06/rackspace-cloud-pro-now-on-the-ipad/">Rackspace Cloud Pro</a> without an iPad.  I used quite a few tools to put it together, but one of the most useful was <a href = "http://ditchnet.org/httpclient/">HTTP Client</a>.  It let me easily inspect and debug HTTP requests to the Rackspace Cloud API.</p>
<p>So, on April 3 when I got my iPad, the first thing I did was run the Rackspace Cloud app, and since I had developed it, I nearly immediately wanted to look at the XML of one of the API responses.  I searched the App Store, and there was nothing.  So I built something!</p>
<p>Tonight I submitted Curly.  It&#8217;s a simple HTTP client for the iPad that does pretty much everything my Mac tool would do.  Here&#8217;s a screen shot:</p>
<p><img src = "http://c0222312.cdn.cloudfiles.rackspacecloud.com/IMG_0011-26.PNG" alt = "Curly Screen Shot" /></p>
<p>I&#8217;m selling it for $4.99 to help cover the costs of being in the Apple Developer Program, and I would greatly appreciate your support.  If $4.99 is too much for you and you still want it, I&#8217;ll be happy to give coupon codes for it or something like that once it&#8217;s in the App Store.</p>
<p>The excellent graphic design was done by <a href = "http://huddbyard.com">Hudd Byard</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=183</wfw:commentRss>
		</item>
		<item>
		<title>Rackspace Cloud Pro for iPad is now open source software</title>
		<link>http://overhrd.com/?p=181</link>
		<comments>http://overhrd.com/?p=181#comments</comments>
		<pubDate>Fri, 09 Apr 2010 20:32:06 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Rackspace]]></category>

		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=181</guid>
		<description><![CDATA[I just opened sourced the Rackspace Cloud Pro iPad app, so feel free to poke around and even fork and contribute if you&#8217;d like to help the project.  Even if you don&#8217;t contribute or read the code, you can download it and build it with XCode if you&#8217;d like to run the app in [...]]]></description>
			<content:encoded><![CDATA[<p>I just opened sourced the Rackspace Cloud Pro iPad app, so feel free to poke around and even fork and contribute if you&#8217;d like to help the project.  Even if you don&#8217;t contribute or read the code, you can download it and build it with XCode if you&#8217;d like to run the app in the iPad simulator on your Mac.</p>
<p>It&#8217;s on github:</p>
<p><a href="http://github.com/rackspace/ipad-rackspacecloud">http://github.com/rackspace/ipad-rackspacecloud</a></p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=181</wfw:commentRss>
		</item>
		<item>
		<title>Keeping it DRY with Objective-C Categories</title>
		<link>http://overhrd.com/?p=169</link>
		<comments>http://overhrd.com/?p=169#comments</comments>
		<pubDate>Thu, 11 Feb 2010 22:27:31 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=169</guid>
		<description><![CDATA[The iPad app I&#8217;m working on has several screens where I need to make asynchronous HTTP requests.  For a nice user experience, I need to show some sort of &#8220;please wait&#8221; message so the user knows something is going on.
To do this, I built a simple UIViewController with a xib that has a transparent [...]]]></description>
			<content:encoded><![CDATA[<p>The iPad app I&#8217;m working on has several screens where I need to make asynchronous HTTP requests.  For a nice user experience, I need to show some sort of &#8220;please wait&#8221; message so the user knows something is going on.</p>
<p>To do this, I built a simple UIViewController with a xib that has a transparent black background, rounded corners, a UIActivityIndicatorView, and a UILabel for the message.</p>
<p>Since I have several screens where I&#8217;ll need to use this, I created a simple <strong>Objective-C Category</strong> to mix in my new view to any UIViewController.</p>
<p>Header:</p>
<hr />
<code><br />
#import &lt;Foundation/Foundation.h&gt;</p>
<p>@class SpinnerViewController;</p>
<p>@interface UIViewController (SpinnerView)</p>
<p>-(void) showSpinnerView:(NSString *)text;<br />
-(void) showSpinnerView;<br />
-(void) hideSpinnerView;</p>
<p>@end<br />
</code></p>
<p>Implementation:</p>
<hr />
<code><br />
#import "UIViewController+SpinnerView.h"<br />
#import "SpinnerViewController.h"</p>
<p>@implementation UIViewController (SpinnerView)</p>
<p>-(void) showSpinnerView:(NSString *)text {<br />
	SpinnerViewController *vc = [[SpinnerViewController alloc] initWithNibName:@&#8221;SpinnerViewController&#8221; bundle:nil];<br />
	vc.view.center = self.view.center;<br />
	vc.label.text = text;<br />
	[self.view addSubview:vc.view];<br />
	[vc release];<br />
}</p>
<p>-(void) showSpinnerView {<br />
	[self showSpinnerView:@"Saving..."];<br />
}</p>
<p>-(void) hideSpinnerView {<br />
	NSArray *subviews = self.view.subviews;<br />
	[[subviews lastObject] removeFromSuperview];<br />
}</p>
<p>@end<br />
</code></p>
<p>Then, in any view controller, adding spinners is as easy as this:<br />
<code><br />
#import "UIViewController+SpinnerView.h"</p>
<p>...</p>
<p>[self showSpinnerView];<br />
[self hideSpinnerView];<br />
</code></p>
<p><img src="http://c0222312.cdn.cloudfiles.rackspacecloud.com/rebooting-57.png" alt="SpinnerView Category" /></p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=169</wfw:commentRss>
		</item>
		<item>
		<title>Ruby on Rails Validations in Objective-C</title>
		<link>http://overhrd.com/?p=155</link>
		<comments>http://overhrd.com/?p=155#comments</comments>
		<pubDate>Wed, 16 Dec 2009 23:51:00 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://overhrd.com/?p=155</guid>
		<description><![CDATA[I&#8217;ve uploaded my MMValidation project to Github.  It&#8217;s an easy way to get Rails-style validations on any subclass of NSObject.
You declare validations like this:

+(void)initialize {
&#160;&#160;&#160;&#160;[Person validatesPresenceOf:@"firstName"];
&#160;&#160;&#160;&#160;[Person validatesPresenceOf:@"lastName"];
}

And check them like this:

if ([myObject valid]) {
&#160;&#160;&#160;&#160;// yay!  proceed as planned
} else {
&#160;&#160;&#160;&#160;// handle the validation errors
}

Click here to get it.  Hope you enjoy!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve uploaded my <a href="http://github.com/greenisus/MMValidation">MMValidation</a> project to Github.  It&#8217;s an easy way to get Rails-style validations on any subclass of NSObject.</p>
<p>You declare validations like this:<br />
<code><br />
+(void)initialize {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[Person validatesPresenceOf:@"firstName"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;[Person validatesPresenceOf:@"lastName"];<br />
}<br />
</code></p>
<p>And check them like this:<br />
<code><br />
if ([myObject valid]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// yay!  proceed as planned<br />
} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// handle the validation errors<br />
}<br />
</code></p>
<p><a href="http://github.com/greenisus/MMValidation">Click here to get it.</a>  Hope you enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://overhrd.com/?feed=rss2&amp;p=155</wfw:commentRss>
		</item>
	</channel>
</rss>
