<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WideAsleep &#183; Blog</title>
	<atom:link href="http://www.wideasleep.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.wideasleep.com/blog</link>
	<description>where ideas leap</description>
	<lastBuildDate>Mon, 22 Feb 2010 19:00:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Fairway Holiday Sale</title>
		<link>http://www.wideasleep.com/blog/?p=233</link>
		<comments>http://www.wideasleep.com/blog/?p=233#comments</comments>
		<pubDate>Mon, 23 Nov 2009 20:49:56 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=233</guid>
		<description><![CDATA[<a href="/products/fairway">Fairway</a> is now on sale in the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a> for the holidays for $0.99 (80% off the normal price). If you've been waiting to check it out nows your chance. Enjoy, and Happy Holidays! ]]></description>
			<content:encoded><![CDATA[<p><a href="/products/fairway">Fairway</a> is now on sale in the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a> for the holidays for $0.99 (80% off the normal price). If you&#8217;ve been waiting to check it out nows your chance. Enjoy, and Happy Holidays! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=233</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fairway 1.2.1</title>
		<link>http://www.wideasleep.com/blog/?p=231</link>
		<comments>http://www.wideasleep.com/blog/?p=231#comments</comments>
		<pubDate>Wed, 15 Jul 2009 15:44:23 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=231</guid>
		<description><![CDATA[We submitted (actually resubmitted) version 1.2.1 of Fairway to the AppStore. We&#8217;re still awaiting approval but hope it&#8217;ll come soon.]]></description>
			<content:encoded><![CDATA[<p>We submitted (actually resubmitted) version 1.2.1 of <a href="/products/fairway">Fairway</a> to the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a>. We&rsquo;re still awaiting approval but hope it&rsquo;ll come soon.</p>
<p>Here are the details of the upgrade:</p>
<p><b>Fixed Bugs</b></p>
<ul>
<li>Changes for iPhone OS 3.0 compatibility and stability (sorry about the crashes).</li>
<li>Fixed some minor display glitches.</li>
</ul>
<p><b>Features Added</b></p>
<ul>
<li>A new icon for flipping back to the front of the application.</li>
</ul>
<p>This release is really only a bug fix release. I intend to add some cool new features in 1.3.0 in the near future. If you have features you&rsquo;d like to see in a future version of the application drop me a <a href="/contact/">comment</a>. </p>
<p>You can find information about other releases on the <a href="/products/fairway/release_notes">Fairway release notes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=231</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fairway 1.2.0</title>
		<link>http://www.wideasleep.com/blog/?p=218</link>
		<comments>http://www.wideasleep.com/blog/?p=218#comments</comments>
		<pubDate>Wed, 18 Mar 2009 03:00:11 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=218</guid>
		<description><![CDATA[We just published version 1.2.0 of Fairway to the AppStore. I think it should see it available in a few days for your device. We&#8217;ll update this post when we know it has been released. Here are the details of the upgrade ...]]></description>
			<content:encoded><![CDATA[<p>We just published version 1.2.0 of <a href="/products/fairway">Fairway</a> to the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a>. I think it should see it available in a few days for your device. We&rsquo;ll update this post when we know it has been released.</p>
<p>Here are the details of the upgrade:</p>
<p><b>Fixed Bugs</b></p>
<ul>
<li>Loading of editors now properly animates keyboards and other controls.</li>
<li>On the main screen the list of clubs now cleanly displays and doesn&rsquo;t jump around when few recommendations are displayed.</li>
<li>Fixed issues that may be encountered in low memory situations on the device.</li>
<li>Occasionally Fairway wasn&rsquo;t recommending the ideal club when small changes were made to the distance slider.</li>
</ul>
<p><b>Features Added</b></p>
<ul>
<li>Management (create, update, delete, and reorder) of custom course locations and easily filter swings on them from the main screen. Touch and swipe within a cool new locations chooser or touch the buttons on the left and right to move through the list of locations. Touch a locations name to filter on that type.</li>
<li>Adjusted font sizes to allow more data to be displayed.</li>
</ul>
<p>I wanted to thank the users whose feedback went into this release. I know it&rsquo;s been a few months since the last release but look for more changes and exciting features to arrive soon. I&rsquo;m constantly trying to make this application the best it can be and welcome new ideas and <a href="/contact/">comments</a>. </p>
<p>You can find information about other releases on the <a href="/products/fairway/release_notes">Fairway release notes</a>.</p>
<p><b>Update:</b> Version 1.2.0 has been approved and should now be available in the AppStore now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=218</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curved Drop Shadows in Core Graphics</title>
		<link>http://www.wideasleep.com/blog/?p=199</link>
		<comments>http://www.wideasleep.com/blog/?p=199#comments</comments>
		<pubDate>Sat, 10 Jan 2009 21:35:52 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=199</guid>
		<description><![CDATA[Earlier this week Sebastiaan de With posted a really nicely done iLife UI Roundup in which he use a cool curved drop shadow on his images. Soon after that Gus Mueller released a nice Acorn Curved Drop Shadow Filter that really worked flawlessly recreating this effect.  Last evening I was working on some new image effects ...]]></description>
			<content:encoded><![CDATA[<p>Earlier this week Sebastiaan de With posted a really nicely done <a href="http://blog.cocoia.com/2009/01/07/iwork-ilife-09-ui-roundup/" rel="external">iLife UI Roundup</a> in which he use a cool curved drop shadow on his images. Soon after that Gus Mueller released a nice <a href="http://www.flyingmeat.com/blog/archives/2009/01/curved_drop_shadows_in_acorn.html" rel="external">Acorn Curved Drop Shadow Filter</a> that really worked flawlessly recreating this effect. </p>
<p>Last evening I was working on some new image effects in my new iPhone application (details coming soon) and decided to try to implement this effect for use on the iPhone using Core Graphics. I used the python code from Gus as a foundation and converted it to a Core Graphics effects class which I&rsquo;m calling WAImageDropShadowEffect. This class can be generically reused on the iPhone to recreate this effect for any image by using this effect class to draw from your UIView.</p>
<p>Below is a picture of the sample application I put together showing off this new effect:</p>
<div class="screenshot">
<a href="/images/screenshots/wadropshadoweffect-screenshot.png" rel="lightbox[dropshadow]"><img src="/images/screenshots/wadropshadoweffect-screenshot-thumb.png"/></a></a>
</div>
<p>I&rsquo;m hoping Gus and Sebastiaan don&rsquo;t mind the reuse, I&rsquo;ve made sure to attribute them in the sample. </p>
<p>The license is pretty much wide open so long as you retain the disclaimer. You can download this code from our <a href="/src/">open source</a> section or via subversion here:</p>
<p><code>svn co http://svn.wideasleep.com/public/trunk/</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=199</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>End of Year Fairway Sale</title>
		<link>http://www.wideasleep.com/blog/?p=196</link>
		<comments>http://www.wideasleep.com/blog/?p=196#comments</comments>
		<pubDate>Sun, 28 Dec 2008 16:52:29 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=196</guid>
		<description><![CDATA[Fairway will be on sale in the AppStore until the end of the year for $1.99. Instead of being $4.99 we&#8217;re cutting the price by 60% to celebrate the holidays. Bring in the new year by resolving to ...

]]></description>
			<content:encoded><![CDATA[<p><a href="/products/fairway/">Fairway</a> will be on sale in the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a> until the end of the year for $1.99. Instead of being $4.99 we&rsquo;re cutting the price by 60% to celebrate the holidays. Bring in the new year by resolving to improve your golf game with <a href="/products/fairway/">Fairway</a>.</p>
<p>After you take it for a swing <a href="/contact/">let us know</a> what you think or <a href="http://groups.google.com/group/fairway-users" rel="external">visit the Fairway community</a>. We&rsquo;re always happy to hear from our users. We&rsquo;re currently working on version 1.1 which will include customizable shot locations, club fade/draw bias, and a number of other user requested features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=196</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fairway Reviewers</title>
		<link>http://www.wideasleep.com/blog/?p=192</link>
		<comments>http://www.wideasleep.com/blog/?p=192#comments</comments>
		<pubDate>Wed, 03 Dec 2008 03:24:18 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=192</guid>
		<description><![CDATA[Apple has just given developers the ability to create promotional codes for their AppStore applications. Up until now it was a painful process to get reviewers for applications involving many manual steps and custom builds.]]></description>
			<content:encoded><![CDATA[<p>Apple has just given developers the ability to create <a href="http://www.tuaw.com/2008/12/02/apple-gives-developers-the-ability-to-use-promo-codes/" rel="external">promotional codes</a> for their AppStore applications. Up until now it was a painful process to get reviewers for applications involving many manual steps and custom builds. If your interested in reviewing <a href="/products/fairway">Fairway</a> for your website, magazine, or other news source just <a href="/contact">contact us</a> and we&rsquo;ll shoot you out a promo code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=192</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Development and Evolution of Fairway</title>
		<link>http://www.wideasleep.com/blog/?p=156</link>
		<comments>http://www.wideasleep.com/blog/?p=156#comments</comments>
		<pubDate>Sun, 09 Nov 2008 02:38:23 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Fairway]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=156</guid>
		<description><![CDATA[In late August I released my first official iPhone application named Fairway. You can read the product page or see it on the AppStore. I&#8217;ve been meaning to put together a posting entailing my journey to 1.0. Needless to say it&#8217;s been 2 months and I&#8217;ve recently released version 1.0.2. Despite ...]]></description>
			<content:encoded><![CDATA[<p>In late August I released my first official iPhone application named Fairway. You can <a href="/products/fairway">read the product page</a> or see it <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289224238" rel="external">on the AppStore</a>.</p>
<p>I&rsquo;ve been meaning to put together a posting entailing my journey to 1.0. Needless to say it&rsquo;s been 2 months and I&rsquo;ve recently released <a href="/blog/?p=120">version 1.0.2</a>. Despite <a href="http://mattgemmell.com/2008/10/29/favorites-ui-design">Matt Gemmell</a> beating me to the punch, and writing an great article, I felt that it was finally time to write-up my experience.</p>
<p><b>Backstory</b></p>
<p>One of the principle drivers for why I write software applications is to solve interesting problems or make my commonly performed activity easier. If I consider myself an average person then I will in turn be solving a problem that others are having as well.</p>
<p>I&rsquo;ve been a golfer for nearly 20 years now. Of that time I was a caddie for about 7 years as well as the recipient of the <a href="http://www.evansscholarsfoundation.com/" rel="external">Evans Scholarship</a>. During my time as a caddie I developed an appreciation for the decision making process involved in club selection. The casual observer (and likely the higher handicap golfer) would see the problem as simply your X yards from the hole which means you use club A. What they aren&rsquo;t likely factoring in is the wind, temperature, location, environment of the ball (grass height, dirt on it, etc), pin position, landing area on the green, line of sight, etc. Any number of factors are involved in selecting the right club to use in making a &ldquo;golf&rdquo; shot which aren&rsquo;t immediately obvious.</p>
<p>Personally I enjoy attacking most things in life analytically, and golf is no exception. I think this analytical approach is was why I&rsquo;ve been drawn to the <a href="http://www.pelzgolf.com/" rel="external">Pelz</a> school of swing thought. In his book, <a href="http://www.amazon.com/exec/obidos/ASIN/0767903447/smw-20" rel="external">Short Game Bible</a>, Pelz provides a detailed analysis of the technique he&rsquo;s evolved over the years to improve shotmaking. He recommends creating a single consistent swing tempo and then dividing that swing into 4 different sub-swings by varying the distance one takes the clubs back and through the ball. Using this technique you can take your short game clubs (<a href="http://www.amazon.com/exec/obidos/ASIN/B001DTC028/smw-20" rel="external">Gap Wedge</a>, <a href="http://www.amazon.com/exec/obidos/ASIN/B001DTDUMC/smw-20" rel="external">Sand Wedge</a>, <a href="http://www.amazon.com/exec/obidos/ASIN/B001DTFKF2/smw-20" rel="external">Lob Wedge</a>, <a href="http://www.amazon.com/exec/obidos/ASIN/B00193WZHS/smw-20" rel="external">X Wedge</a>) and extrapolate 16 (4 x 4) different swings that will go 16 different distances thus giving you the ability to attack the pin from almost anywhere under 100 yards. There are slight variations you can make to this swing to handle other obstacles like sand or deep grass but the foundation of the approach is simple, consistent tempo combined with 4 distinct swing distances. It&rsquo;s this simplicity that makes the Pelz approach interesting.</p>
<p>Now imagine taking this Pelz approach and applying it to your entire swing. Not all clubs need 4 swings but lets say you have 2 per club that aren&rsquo;t short game clubs. That&rsquo;s (14 &#8211; 4 &#8211; 1 (putter)) = 9 x 2 = 18 swings. Doing simple math we now have 18 + 16 = 34 swings for attacking a normal game of golf. Wait, what about those other situations I talked about earier? Hitting into the wind? In the rough vs. the fairway? Sand? Lets suppose that you have 2 more swings for each of those situations &#8230; that&rsquo;s 9 x 3 x 2 = 54 more swings, add that to our current 34 and you have 88 swings. What I hope your quickly seeing is one of the problems that Fairway is attempting to solve. You quickly cringe at the mountain of numbers you need to remember extrapolate this technique to your entire game. Even if you don&rsquo;t agree to applying the Pelz approach to your entire game just about any golfer will admit that there are a huge number of swings involved in playing golf that Fairway can help manage.</p>
<p><b>Paper Fairway</b></p>
<p>My first attempt at solving this problem was low-tech. I did what any card carrying <a href="http://www.43folders.com/" rel="external">43 folders</a> reader would do, I used an index card!!! Actually I used grid index cards on which I created rows for each club and then columns for each swing. This worked well for each of the simple swings but quickly got out of hand if you tried also handling various location based swings. Then there was the wear and tear I hadn&rsquo;t accounted for on the cards from constant holding and putting in my pockets. Each card lasted me 2-3 games of golf and I either lost it or it was beaten to a wrinkled pulp. Losing it was obviously bad as I lost important data about my game.</p>
<div class="screenshot">
<a href="/images/blog/fairway-index-card.jpg" rel="lightbox[indexcard]"><img src="/images/blog/fairway-index-card-thumb.jpg"/></a></a>
</div>
<p><b>Design via Moleskin</b></p>
<p>My second attempt at solving this problem was high-tech. I did what any good <a href="http://developer.apple.com/" rel="external">Apple developer</a> would do, I wrote an iPhone application. Before I get ahead of myself though I did start designing Fairway in low-tech way, sketching in my <a href="http://www.amazon.com/exec/obidos/ASIN/B000A24I74/smw-20" rel="external">Moleskin</a>. Below are some of my initial sketches:</p>
<div class="screenshot">
<a href="/images/blog/moleskin-sketch-01.jpg" rel="lightbox[sketches]"><img src="/images/blog/moleskin-sketch-01-thumb.jpg"/></a><a href="/images/blog/moleskin-sketch-02.jpg" rel="lightbox[sketches]"><img src="/images/blog/moleskin-sketch-02-thumb.jpg"/></a>
</div>
<p>As you can see from the first image I tried directly applying the grid technique to the primary view on the phone. The obvious problems with this are that the iPhone doesn&rsquo;t have the horizontal room to clearly display 4 columns along with club information. Even if icons were used it would have been a very busy view and it was hard to figure out how to handle more than 4 swings per club within this layout. </p>
<p>You can also see in the first image some ideas on swing icons as well as paging controls for bags. I wanted to be able to mange more than one bag of clubs at a time.</p>
<p>In the second image you can see my initial design for the primary views rounded corners along with initial thoughts on a vertical distance scrubber. While it would have been more precise using a vertical scrubber (longer distance to slide) I had issues with cleanly laying out the other controls needed for the current and future versions of the application with this layout.</p>
<p><b>Early Design &amp; Revisions</b></p>
<p>Once I had done some sketches and played around with the beta versions of the iPhone SDK I began coding up some initial screens. At the same time I started coding I began talking with <a href="http://www.fernandolins.com/" rel="external">Fernando Lins</a> about creating graphics and to get feedback from a designer on my UI. Here are a few of our early mockups.</p>
<div class="screenshot">
<a href="/images/blog/fairway_code_mockup_01.png" rel="lightbox[mockups]"><img src="/images/blog/fairway_code_mockup_01-thumb.png"/></a><a href="/images/blog/fairway_code_mockup_03.png" rel="lightbox[mockups]"><img src="/images/blog/fairway_code_mockup_03-thumb.png"/></a><br/><br />
<a href="/images/blog/fairway_graphic_mockup_01.png" rel="lightbox[mockups]"><img src="/images/blog/fairway_graphic_mockup_01-thumb.png"/></a><a href="/images/blog/fairway_graphic_mockup_02.png" rel="lightbox[mockups]"><img src="/images/blog/fairway_graphic_mockup_02-thumb.png"/></a>
</div>
<p>I&rsquo;m willing to bet you can easily identify the ones designed by me and those designed by Fernando. While I&rsquo;m &ldquo;decent&rdquo; at designing and laying out user interfaces I&rsquo;m not a professional designer. It&rsquo;s however important to realize a few things about revising and designing your early user interfaces. </p>
<p>First and foremost your initial designs should try almost everything that comes to mind. Enter your early brainstorming sessions with your mind open to any and all possibilities because you never know what path a design will take you down. As you can see from my early mockups I was still stuck on the grid design. What was highlighted from actually mocking it up was how tight the iPhone 320&#215;480 screen is (funny considering it&rsquo;s the largest screen out there). I really wanted to try implementing it on the device despite the fact that I thought it wouldn&rsquo;t work. It taught me quickly about what I as a golfer wanted and needed to see in this first screen which was detailed club information. Quickly and succinctly seeing the swing, club, and distance information was far more important than seeing everything possible on one screen.</p>
<p>The second thing to realize when designing and revising your user interfaces is how important it is to involve a graphics designer early in your development process. I know other <a href="http://www.taptaptap.com/blog/the-design-session/" rel="external">people</a> have said the same thing but it bears repeating. Not only do they bring color and spacial design experience to the table but they really start visually extracting some of the essence of your application in ways that you likely can&rsquo;t do on your own. For me it was a huge motivation during development to see high quality design mockups of my application. The earlier you engage a designer the earlier you&rsquo;ll being to see the reward.</p>
<p><b>Interaction Design</b></p>
<p>Whenever I&rsquo;m working with someone on a user interface one of the first things I try to do is make them forget about the computer and show or draw the problem for me. I know this sounds simple, but how often have you actually done it? What I usually find is that I can solve the problem in a way that is comfortable and meaningful to the user and not an obvious product of a developers interpretation of the problem.</p>
<p>For Fairway I had to put myself in the shoes of the user being sure to put myself into the environment in which Fairway was to be used, on the golf course. What I wanted first and foremost was to see all of my swing options as quickly as possible. To me this translates into the smallest number of interactions with the richest set of usable data possible. </p>
<p>Interaction with an iPhone or iPod Touch requires pressing the on or home button and then a single slide to unlock the phone which I had to take into account if I wanted my users to use Fairway ~ 50+ shots per round, more like ~70+ if they use it for putting as well. From here I assume Fairway is running so I wanted to allow them to find their club in 1 &#8211; 3 additional clicks depending on details. The primary control for Fairway is the distance slider which is used to dial in the distance from the pin. The secondary control (along the bottom) is a location filter which allows you to quickly reduce your swing options based on preassigned swing locations.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-01-interaction-lower.png"/>
</div>
<p>In the above screenshot you see the primary, secondary, and detail controls highlighted. In it you can clearly see that the controls them selves are larger than they seem. Each and every controls size and position was meticulously selected, tested, and reselected to get what you now see.</p>
<ul>
<li>The distance slider being the primary control is likely the first control the user interacts with is easy to hit and prominent. Also important to note is that a user is likely using their thumb to interact with the distance slider. Given this, their thumb should not hide the distance label which is just above the slider in large easy to read text. In the initial mockups above you can see that their thumb may have covered their distance.</li>
<li>The secondary controls seem like simple text labels at first but are in fact buttons that are larger than their text making them easy targets yet not cluttering the view.</li>
<li>The swing details control, which is much larger than the icon itself, flips up the list (like in Maps) and shows club &amp; swing details when pressed. This also happens when a recommended or other club is touched in the table.</li>
<li>The gear settings control which I use instead of the &ldquo;i&rdquo; icon you see in most applications is the only exception to the rule in terms of size. It&rsquo;s still plenty large to hit when your intending to but I wanted to make sure it wasn&rsquo;t accidently selected during play so it&rsquo;s a bit smaller than the details control button.</li>
</ul>
<p>At the last <a href="/blog/?p=84">C4[2] conference</a> the keynote talk was given by <a href="http://furbo.org/" rel="external">Craig Hockenberry</a>. During the talk he really drove home that this device is not a laptop and that designing software for the iPhone is different than other devices or computers we&rsquo;re familiar with. He also reiterated something I had been trying to do which was design the software by actually using it. I know it sounds simple but so many apps in the AppStore seem like they missed this step.</p>
<p>I do have to admit though that I missed something fairly important in Fairway until I used it one day at the range. It somehow slipped my mind after playing golf for 20 years that we wear a glove on the course (not usually while putting though). Gloves are typically worn on the hand opposite our dominant hand and are used to improve control over the club. Since I&rsquo;m a right handed person I wear my glove on my left hand which is also the hand I primarily use for my iPhone. This poses a problem since you can&rsquo;t use the iPhone wearing a glove. I now had to take into account that my application was going to be used in the hand opposite that which most users were comfortable. To address this potential problem I made the distance and detail controls invertible on the main screen (flipped left to right). </p>
<div class="screenshot">
<img src="/images/blog/screenshot-02-inverstion-lower.png"/>
</div>
<p>It&rsquo;s a small touch but if it makes a small fraction of my users a bit more comfortable with my application I&rsquo;ve done my job. Thanks to Twitteriffic and Craig for the idea of control inversion.</p>
<p><b>GPS Not Included</b></p>
<p>I wanted to take a second to address some initial shock people had using my application at first, there&rsquo;s no GPS. I know it may seem forboden for an iPhone application to not be tricked out with every bell and whistle. My primary concern with writing Fairway was quickly recommending clubs and swings to use. I don&rsquo;t want to detract from the beauty and grandeur of the game by playing with your iPhone waiting for the GPS to attain a lock. It can sometimes take minutes to get an actual lock on your position, minutes you should be spending focusing on your swing. Also don&#8217;t forget that this application is designed for the iPod Touch, iPhone, and iPhone 3g. I&rsquo;d lose 2/3 of that audience if I leveraged GPS to a huge degree.</p>
<p><b>Creating Custom Table Cells</b></p>
<p>After the data entry controls the most important view in the application is the club &amp; swing list. In it the user can see all of the clubs and associated swings that are &ldquo;usable&rdquo; based on their distance and location information. This list needed to be clear in direct sunlight conditions as well as the shade you may encounter on the course.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-03-selected.png"/>
</div>
<p>As you can see I chose a slight white gradient behind the default cells with dark green text for the text. I did this to add some textural perspective and dimension to the interface itself. I think it looks clean and offers subtle hints to touch it. Adding these effects also helps them clearly see the data in both bright and shady situations by adding contrast to the contained text and graphics. The recommended swing (green) and touched swing (blue) are drawn using the <em>CGGradientRef</em> Core Graphics API. Though the original gradients were designed by Fernando I chose to render them using code instead.</p>
<p>Within each row is a swing icon that can have optional text associated with it. It also contains the name, brand, and model of the club associated with that swing. Finally it contains the distance you can hit that particular swing in the selected format for the user (yards, feet, or meters). This is all of the information a golfer needs to identify the swing type (icon &amp; text), club, and expected distance the swing is meant to produce.</p>
<p>I tried to give people a huge selection of icons to use to represent their swing. Because I didn&rsquo;t know what creative ways people might come up with to help them remember their swing I provided 1/4, 1/2, 3/4, and 4/4 (full swing) icons as well as a large set of gem of various colors and shapes.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-05-shapes-swings-small.png"/><img src="/images/blog/screenshot-05-shapes-gems-small.png"/>
</div>
<p>Because of the variety of icons and the fact that I allow text (2-3 characters) to be entered on both dark and light icons I had to figure out where the text was being drawn and then make the text and shadow an appropriate color. This enabled the text to be easily and quickly readable in any situation. It&rsquo; a small detail that can have a dramatic impact in terms of usability.</p>
<p><b>Rounded Tables</b></p>
<p>My goal for the list view was to make it familiar and fun to use. The first app in my mind that was easy and fun to use on iPhone OS 1.0 was the Stocks application. I really enjoyed how you could slide that list up and down and not only would it bounce but it would appear to be etched/sunken into the background because the rounded edges were always visible. I thought for sure that Apple would have this in their SDK and smiled when I saw the <em>UITableViewStyleGrouped</em> style. I was then immediately disappointed when I saw that it didn&rsquo;t have this expected behavior. This left me with no options in the early NDA days to do anything but to roll my own. If you look at my sketches up top you can see I had thoughts of an early version sketched out. Here is how it was finally implemented.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-01-rounded_table-upper.png"/>
</div>
<p>In this image I&rsquo;ve highlighted four small views that are positioned above the UITableView. The background of the view is clear and the arc and the area opposing the table is filled in black. An example of the code needed to draw the upper left arc and to fill it is:</p>
<pre>
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
[self.color set];

CGContextBeginPath(context);

if (WARoundedTopLeftCorner == self.position) {
  CGContextMoveToPoint(context, CGRectGetMaxX(rect)/2,
    CGRectGetMinY(rect));
  CGContextAddLineToPoint(context, CGRectGetMinX(rect),
    CGRectGetMinY(rect));
  CGContextAddLineToPoint(context, CGRectGetMinX(rect),
    CGRectGetMaxY(rect)/2);
  [WIShapeView addArcToPath:rect
                    context:context
                 startAngle:180
                   arcAngle:90];
}

CGContextFillPath(context);
CGContextRestoreGState(context);
</pre>
<p><b>Note</b> &#8211; for the addArcToPath code see <a href="http://developer.apple.com/documentation/Carbon/Conceptual/QuickDrawToQuartz2D/tq_other/chapter_3_section_6.html">the quartz docs</a>.</p>
<p>I chose to use code in drawing these shapes instead of using images because I could and I suck at most graphics tools. In fact wherever I could I chose to render something via code over using images. Obviously there are places I &ldquo;could&rdquo; have written code to render that I didn&rsquo;t. It was more a comfort factor than an exact science. I chose to leverage Fernando on some of the larger problems and not these smaller ones.</p>
<p>Using the implementation of the overlay of the views on top of the table view will only work if the background color of the table view itself is set to black. This requires that you write a custom <em>UITableViewCell</em> to draw it&rsquo;s background and inset it slightly so it looks like the grouped style people are familiar with. This will allow the table to slide under the corner views and give it the effect of being inset into the foreground much like the stock application. The only remaining piece of code to be done is to create 3 categories of table cells. Those cells that are at the top, middle, and bottom of the table. The ones at the top and bottom can reuse the view you created above to draw rounded edges on the top and bottom. This will provide the effect of the table being rounded on all sides. Be careful to put the rounded views at the far corners of the cells. You may need to play with the placement of all of the views to get them exact.</p>
<p><b>Crashing the UITableView</b></p>
<p>When a golfer is on the course they rapidly scrub in their distance from the pin and expect the table to update appropriately. My first implementation accepted real time updates from the slider and on each update added and removed the appropriate cells from the table view using animation. The code was straight forward enough except for one small flaw, it crashed the application after a few seconds of use. I submitted <a href="rdar://problems/6020225" rel="external">radar 6020225</a> detailing the issue with example code but it has yet to be fixed. I tried a number of creative ways to work around this problem but still keep animation and the real-time updating.</p>
<p>So what was I going to do? After meeting with Apple at number of different <a href="/blog/?p=25">WWDC labs</a> I finally got the idea to introduce an artificial delay that while not perceivable to the user would allow me to reload the table without crashing it. The code is rather easy using:</p>
<p><code>performSelector:withObject:afterDelay:</code></p>
<p>I introduced a 0.25 second delay and within the called selector I just setup the underlying data structures of the table and the told the table to reload. The unfortunate impact of this implementation is that it isn&rsquo;t animated. While not ideal it is actually very performant and after using it for a long time I actually prefer it to not animate. The animation felt distracting at times and seemed to prevent the user from quickly getting their recommendation. Another note on this implementation, be sure to not enqueue all of the scrubber changes to the selector, if one is already enqueued then ignore the others.</p>
<p>One final thing I wanted to mention around the animation of the <em>UITableView</em> was performance. While it animated smoothly in the simulator (it still crashed) it was actually slow and dropped frames on the iPhone. Because the table wasn&rsquo;t designed to be updates that quickly and the fact that I was trying to do it with animation in real-time caused it to stuttered and drop frames. I didn&rsquo;t see this side effect though until after I tried running on the device. Don&rsquo;t assume because you tested your application in the simulator that it will run just as well on the device. You will likely have to iterate to attain a solid user experience.</p>
<p><b>Tolerances</b></p>
<p>Something you may have noticed in the list view is that there are often many more swings shown than you might at first think are necessary. If the user selected 182 yards why are there clubs going from 162 &#8211; 202 yards. On the golf course there are other conditions like elevation of the green relative to the golfer, wind direction, etc. that are hard problems to solve in a user interface yet still need to be taken into account. Because of this I allow the user to select a tolerance for the application that is applied to their suggested clubs.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-04-tolerance.png"/>
</div>
<p>This tolerance allows them to see a wider range of clubs that they can mentally decide to ignore or perhaps use. I can&rsquo;t make all of the decisions but I could help narrow down their options.</p>
<p><b>Many-to-many Relationship Editing</b></p>
<p>One of the larger problems I encountered with Fairway was managing the relationships between bags and clubs. Because I knew I wanted to give users complete control of how they grouped their clubs (into bags) I needed to ensure that the user experience was still simple yet powerful. To do this I wanted to allow them to add any arbitrary club to a bag and then when editing a club quickly see and edit which bags it was in. Below you can see an example movie that shows first adding an existing club to a bag and then going to that club and editing the bags that it&rsquo;s in.</p>
<div class="movie">
<embed src="/images/blog/bag-and-club-management.mov" width="320" height="496" autoplay="false" controller="true" loop="false" pluginspage="http://www.apple.com/quicktime/" />
</div>
<p>As you can see for the additive portion of bag and club management I leveraged the modal view functionality on the <em>UIViewController</em>. This encouraged a simple familiar workflow of choosing the item to add and then updating the list based on the selection. Everyone who&rsquo;s used Mail for deleting or moving is familiar with this interaction. The only variability to the workflow was when adding a club to a bag I first had to ask the user if it was a new or existing club and act accordingly.</p>
<p>The other interaction when managing a <a href="http://en.wikipedia.org/wiki/Many-to-many_(data_model)" rel="external">many-to-many</a> relationship is the deleting or removing from the relationships. When I first implemented this I used the built in delete functionality of the <em>UITableView</em> that everyone was familiar with. When you clicked the red minus button on the left it rotated and then presented you with a Delete confirmation button on the right. Simple enough but I was very bothered by something with this action. </p>
<p>The user was not deleting the club or the bag, instead they were &ldquo;removing&rdquo; the club from the bag or vice versa. It&rsquo;s a subtle difference but a few of the people I showed it to thought it was deleting the club and were either confused or concerned about deleting. Unfortunately the current <em>UITableView</em> from Apple doesn&rsquo;t support customizing the delete behavior or widgets. Again I had no other option than to roll my own.</p>
<p>I really liked the behavior of the existing delete interface and didn&rsquo;t see the need to create a new technique and have to train the user how to use it to remove something. Because of this I simply strived to reproduce the existing behavior of the delete within a <em>UITableView</em> to manage my removal of clubs and bags. Sounds simple enough but here are the interactions:</p>
<ul>
<li>Switching into editing mode is the primary driver of showing the remove controls for the table. Mail has a swipe feature as well but for the purposes of this implementation I did not implement that behavior (due to release constraints but I will soon).</li>
<li>Leaving editing mode should hide all editing controls and resets their state.</li>
<li>The default editing state, lets call it the &ldquo;zero&rdquo; state, of the cell presents a circular remove button on the left and then some other content like labels on the right.</li>
<li>Selecting the circular remove button should cause it to rotate 90&deg; and at the same time reveal from the right hand side of the cell a confirmation button. During the animation all of the content on the right needs to also resize to make room for the confirm button. Lets call this the &ldquo;confirm&rdquo; state of the cell.</li>
<li>Selecting a circular remove button in the confirm causes the right hand confirm button to reverse the animation and disappear while at the same time rotating the left hand circular remove button -90&deg;, resizing all of the content to take up the new room, and placing the cell back into the zero state.</li>
<li>Selecting the confirm button from the confirm state causes the row within the cell to be removed and appropriate action on some delegate to be performed.</li>
<li>Selecting a circular remove button on any other cell should cause any cell that is currently in confirm state to animate out and back to zero state. At the same time it should transition that new cell into the confirm state.</li>
<li>Scrolling any table should cause any cell currently in the confirm state to animate back into the zero state.</li>
</ul>
<p>The simple elegant behavior that a user experiences while interacting with these cells is backed by a complex orchestra of interactions within the code. As you can see there were quite a number of behaviors that aren&rsquo;t 100% obvious when you first use a table. Only after playing with them for a while was I able to note their exact behaviors and once I had recorded my observations implementing them was fairly straightforward. Here is a small movie showing the final interactions I described above using Fairways remove cell.</p>
<div class="movie">
<embed src="/images/blog/tableview-remove-cell.mov" width="320" height="496" autoplay="false" />
</div>
<p>I think the hardest part of the implementation for me was getting the confirm button to reveal properly. I toyed with core animation on that buttons layers over and over again and was never able to get it quite right. It doesn&rsquo;t slide in from off screen and it doesn&rsquo;t just fade into being, it fades and reveals concurrently. I don&rsquo;t know if this is considered a hack but I placed a small view where the button would reside, behind any views in the cell but above the z-order of the confirm button and then animated the resize left and right. The image below highlights where the view would have been in green.</p>
<div class="screenshot">
<img src="/images/blog/screenshot-08-reveal-less.png" width="320" height="112"/>
</div>
<p>If there are other more elegant ways of accomplishing this I&rsquo;d love to hear about them.</p>
<p><b>First Launch</b></p>
<p>When the user first opens Fairway I thought it was important that they be able to see it in action in it&rsquo;s full glory. The only real way to do this is to seed the users application with sample data. Because I thought it was so important I shipped the application with an entire sample database containing all of my actual club data. When the user first launches the application they are presented with this question:</p>
<div class="screenshot">
<img src="/images/blog/screenshot-06-first-launch.png" width="320" height="480"/>
</div>
<p>Assuming they answer Yes they will have 17 clubs with 67 swings. Just as easily as they were added the user can goto the settings and remove them at any time. If they happen to choose No they will be presented with the following screen:</p>
<div class="screenshot">
<img src="/images/blog/screenshot-07-no-clubs.png" width="320" height="480"/>
</div>
<p>This is also the dialog they are presented with during normal usage of the application whenever Fairway can&rsquo;t suggest a swing for their distance and filter criteria. It animates in from the top of the screen and centers itself within the list view. When criteria is entered that matches a swing it swoops off the screen out of view. Wherever possible I wanted the user to receive some type of feedback, even when I had nothing to show them. The more they feel at home using my application the happier they are.</p>
<p><b>The Grass is Greener</b></p>
<p>No golf application can be complete without a little flair. Throughout the use of fairway you&rsquo;ll find bits of golf spread throughout. From the golf ball on the distance slider, to the club on the main screen to show / hide swing details, to subtle and not so subtle hints of grass throughout. When I was working on the application I used a number of different background textures for my club management views. From green pinstripes to the default gritty look I tried them all, that was until Fernando gave me something more. I wanted something to pop and yet really pull the user into the application, when confronted with this problem he gave me a nice grass texture to place behind my views.</p>
<p>It&rsquo;s different and distinctive and I think not to distracting. I really love the color ranges of the iPhone and think using the grass texture really lends well to classifying Fairway as a golf application.</p>
<p><b>Wrapping it up &#8230;</b></p>
<p>I&rsquo;ve covered a number of the features within Fairway in this article but I&rsquo;ve mostly stuck to the challenging problems I encountered during it&rsquo;s development. It really takes a lot of put together a complete application with all of it&rsquo;s rough edges filed away. For me it took at least a month longer than I had anticipated. My release guidelines were very simple, don&rsquo;t release with bugs. Not a single known bug or glitch of any kind, zero, nada. If you noticed it then odds are someone else will as well. </p>
<p>I had a bug at the end of my release that only occurred when you added and removed samples from the application more than 2 times. Despite the fact that this was something no one is likely to ever encounter I held the release a few days until I fixed it. Had I released with that bug, odds are that a user would have encountered it and they would have been the first comment on my application in the AppStore.</p>
<p>I appreciate that you&rsquo;ve made it this far in the article. I really do enjoy sharing my ideas and solutions with people and hope you took some tidbits away from this article. If Fairway is an application you think you would like or want to support then you can <a href="/products/fairway">read more</a> about it or check it out <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289224238" rel="external">on the AppStore</a>.</p>
<p>My biggest goal releasing this application wasn&rsquo;t just to release a golf application that I would use. It was to release a golf application I was proud of, one I didn&rsquo;t cut corners on, one that I could recommend to any golfer with an iPhone. Heck even one I could recommend to someone interested in user interface design and interaction. I highly suggest you set similarly high bars for your release. It&rsquo;s not enough to release an average iPhone application, you should instead strive to push the envelope and make your application distinctive and innovative.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=156</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Review and migration to the MacBook Air 2.0</title>
		<link>http://www.wideasleep.com/blog/?p=127</link>
		<comments>http://www.wideasleep.com/blog/?p=127#comments</comments>
		<pubDate>Sun, 02 Nov 2008 05:04:34 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Fairway]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=127</guid>
		<description><![CDATA[The following is my lengthy story and review of the new MacBook Air revision 2. I get a bit long winded at times, but what geek doesn&#8217;t right? right? Like most Apple users &#38; developers I watched the recent announcements of new MacBook ...]]></description>
			<content:encoded><![CDATA[<p>The following is my lengthy story and review of the new MacBook Air 2.0. I get a bit long winded at times, but what geek doesn&rsquo;t right? right?</p>
<p>Like most Apple users &amp; developers I watched the <a href="http://www.apple.com/pr/library/2008/10/14macbook.html">recent announcements</a> of new MacBook (MB), MacBook Pro (MBP), and updated MacBook Air (MBA) laptops with excitement. It has been a long time since Apple had updated the design of the MB and while the MBA V1 was nice but it had a number of <a href="http://blog.wired.com/gadgets/2008/01/macbook-air-rel.html" rel="external">public</a> <a href="http://www.macworld.co.uk/mac/news/index.cfm?newsid=20325" rel="external">pitfalls</a>. Needless to say Apple released some sweet new hardware that really pushed the design envelope and the lust factor of most users &amp; developers. </p>
<p>After being bated with the new laptops I began asking around to see if anyone was interested in purchasing my 1.5 year old 17&rdquo; MBP. Believe it or not I actually found someone quite quickly. They were interested in the 17&rdquo; as a mobile video editing platform. The price was right and the timing was flexible, what more could I ask for?</p>
<p>I then began my usual death spiral of paralysis of analysis (as my friends kindly call it) where I overanalyze the new machines and my usage patterns. I went back and forth between the MBP, MB, and MBA. My primary requirements for a new machine are:</p>
<ol>
<li>It had to be lighter than the 17&rdquo;, commuting daily with that thing was becoming a chore.</li>
<li>My iPhone application development on <a href="http://www.wideasleep.com/products/fairway/">Fairway</a> (<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289224238" rel="external">AppStore</a>) and a yet to be released iPhone application couldn&rsquo;t be negatively affected.</li>
<li>I didn&rsquo;t want the overall quality of my mobile experience to go down. What I mean by this is the quality of the screen and overall hardware.</li>
</ol>
<p>After analyzing the different machines for a week and half I had decided on the MB. It had mobile prowess and still appeared to have the development power and configurability I was looking for out of a laptop. It wasn&rsquo;t until I actually used the machine at the Apple store that I actually decided on the MB. No I didn&rsquo;t purchase it at that point, I had to wait until my buyer was ready for a swap. Needless to say I contacted him and setup a swap date after I decided.</p>
<p>Then a flaw in my decision was found, earlier this week I found <a href="http://forums.macrumors.com/showthread.php?t=587739" rel="external">this thread</a> on MacRumors. The thread brought about a rather lengthy debate with a lot of detail about quality issues people have witnessed in their new MB laptop LCDs. While I was comparing machines at the Apple store my biggest complaint was that I was never able to actually see any of the machines side by side. I always had to walk back and forth which was distracting and really prevented a solid comparison. Anyhow, people were seeing huge differences in the quality of their displays and despite editing of the profiles the displays weren&rsquo;t quite up to snuff with those in the MBA or MBP. One of my requirements of a new laptop was to not degrade my laptop experience and after seeing <a href="http://forums.macrumors.com/showpost.php?p=6512641&#038;postcount=255" rel="external">some</a> <a href="http://forums.macrumors.com/showpost.php?p=6508330&#038;postcount=156" rel="external">of the</a> <a href="http://forums.macrumors.com/showpost.php?p=6510355&#038;postcount=197" rel="external">screenshots</a> I couldn&rsquo;t chance it with the MB.</p>
<p>Fast forward (because this is getting kinda long) to Thursday evening I was awaiting peoples arrival of their new MBA. No one had actually seen one yet let alone actually ran any tests to compare their performance. I know I would have been happy with the new 15&rdquo; MBP but I really wanted something lighter than the 17&rdquo;, it was only 1 pound lighter.</p>
<p>On friday morning a <a href="http://forums.macrumors.com/showthread.php?t=592562" rel="external">MBA V2 early impression thread</a> showed up on MacRumors along with a <a href="http://mar247advice.wordpress.com/2008/10/31/special-edition-tech-talk-macbook-air-20-review/" rel="external">review</a> &#8230; I was hooked. The specs looked awesome and the display was stunning. I began calling around and found that the Schaumburg IL Apple Store actually had the 128GB SSD in stock. I hadn&rsquo;t decided on HD or SSD yet but them having it in stock pretty much decided for me. I had 3 days to buy a new machine and migrate all my crap to it in order to not lose the sale of my 17&rdquo;.</p>
<p>Ok enough with the backstory already right? On to the review data. Remember, I&rsquo;m migrating from:</p>
<dl>
<dt>17&rdquo; MacBook Pro (Mid 2007)</dt>
<dd>2.4 GHz Core 2 Duo, 4MB L2, 4GB RAM, 800 MHz Bus, GeForce 8600M GT w/256 MB VRAM</dd>
</dl>
<p>to the new:</p>
<dl>
<dt>13.3&rdquo; MacBook Air (V2.0 Late 2008)</dt>
<dd>1.86 GHz Core 2 Duo, 6MB L2, 2GB RAM, 1.07 GHz bus, GeForce 9400M Video w/256 MB VRAM</dd>
</dl>
<p>To start I did the usual Xbench comparison. Below are the numbers:</p>
<ul>
<li>MacBook Pro score <a href="http://db.xbench.com/merge.xhtml?doc1=317438" rel="external">101.76</a></li>
<li>MacBook Air score <a href="http://db.xbench.com/merge.xhtml?doc1=317451" rel="external">131.98</a></li>
</ul>
<p>You can also see them in a <a href="http://db.xbench.com/merge.xhtml?doc1=317451&#038;doc2=317438" rel="external">side-by-side</a> comparison. What first struck me was that the MBA scored better than a beefier MBP, even though it was older it was unexpected. What you then notice (I knew this before hand before buying it as well) is that the performance of the MBA&rsquo;s SSD skews the numbers a bit. Still surprising though is that the CPU in the MBA is no slouch beating the MBP in threading, computation, and a number other tests. That combined with a very solid graphics card in the new GeForce 9400M and this machine is &ldquo;on paper&rdquo; a knockout. What about actual usage?</p>
<p>Enter Xcode, my primary mobile computing application. While I use my computer for a number of things I spend most of my productive time writing code in Xcode working on <a href="http://www.wideasleep.com/products/fairway/">Fairway</a> and other applications. To perform this test I figured I would first compare my iPhone application and then a beefier mac application, <a href="http://www.adiumx.com/" rel="external">Adium</a>.</p>
<p>First <a href="http://www.wideasleep.com/products/fairway/">Fairway</a> @ ~28,000 lines of code. I&rsquo;m compiling this iPhone application into Debug mode for the Device (which includes compression and signing):</p>
<dl>
<dt>MacBook Pro</dt>
<dd>19 seconds (fresh Xcode start)</dd>
<dd>13 seconds (clean all and then recompile)</dd>
<dt>MacBook Air</dt>
<dd>15 seconds (fresh Xcode start)</dd>
<dd>15 seconds (clean all and then recompile)</dd>
</dl>
<p>Not too shabby &#8230; the MBA performance is consistent and generally no change when compared to the MBP which is again surprising and perfect for my needs. Now on to Adium &#8230; I did a subversion synch to the latest version on the intertubes:</p>
<p><code>svn co svn://svn.adiumx.com/adium/tags/AdiumX_1.3.2 adium-1.3.2</code></p>
<p>I then compiled using the default settings, changing nothing at all.</p>
<dl>
<dt>MacBook Pro</dt>
<dd>170 seconds (2m 50s, fresh Xcode start)</dd>
<dd>179 seconds (2m 59s, clean all and then recompile)</dd>
<dt>MacBook Air</dt>
<dd>219 seconds (3m 39s, fresh Xcode start)</dd>
<dd>219 seconds (3m 39s, clean all and then recompile)</dd>
</dl>
<p>This test really put the machines to the test causing both of their fans to kick in at about the two minute mark. It also begins to highlight the CPU differences between the MBP (2.4 GHz) and the MBA (1.86 GHz). I was surprised that they were as close as they were to be honest and expected the MBP to handily trounce the MBA by a factor of two. One thing I did notice while running these tests was that the MBA &ldquo;seemed&rdquo; to perform the copy phases of the build faster than MBP, again the SSD comes to the rescue. I think this helped it keep up with the MBP as the Adium project has a lot of resources being copied around to build that awesome chat application.</p>
<p>Now on to a few fun tests. A number of people had seen issues with MBA V1 dropping cores and frames while running many videos and wanted to know how V2 would behave. The common test apparently was to run 3 YouTube videos concurrently and the check out <a href="http://islayer.com/apps/" rel="external">iStat Pro</a> and then watch the cores, temperature, and fans. Here are the results from running this test:</p>
<dl>
<dt>Temperature</dt>
<dd>72-78 degrees</dd>
<dt>Exhaust Fan RPM</dt>
<dd>2945 &#8211; 6040 RPM (beginning to end of 3 videos)</dd>
<dt>CPU</dt>
<dd>User 40, System 11, Nice 0, Idle 49 (during tests)</dd>
</dl>
<p>I ran the test on 3 random videos that were around 2 minutes each. I didn&rsquo;t notice any cores drop out and the only odd behavior was that the fans kicked in after 2 of the videos finished and the final one was still playing. I think it was just timing as the RPMs were slowly climbing on the exhaust fan.</p>
<p>Finally I wanted to see how the MBA would hold up while playing WoW (World of Warcraft). I know, this isn&rsquo;t a gaming machine but that doesn&rsquo;t mean I don&rsquo;t want to play an occasional game. These test were performed in Orgrimmar last night during a lot of Halloween festivities so a lot of effects were being rendered onscreen.</p>
<dl>
<dt>WoW Max Settings 1280&#215;800 (Shadows Off, <a href="/downloads/videos/mba_r2-high-1280x800-orgrimmar.mov" rel="external">video</a>)</dt>
<dd>79 degrees, Fan @ 6200 RPM, Video 17-27 FPS</dd>
<dt>WoW Max Settings 1024&#215;768 (Shadows Off, <a href="/downloads/videos/mba_r2-1024x768-orgrimmar.mov" rel="external">video</a>)</dt>
<dd>78 degrees, Fan @ 6200 RPM, Video 22-29 FPS</dd>
<dt>WoW Medium Settings 1280&#215;800 (Shadows Off, <a href="/downloads/videos/mba_r2-mid-1280x800-orgrimmar.mov" rel="external">video</a>)</dt>
<dd>77 degrees, Fan @ 6200 RPM, Video 18-29 FPS</dd>
</dl>
<p>Again, they were much better than I expected. I could actually easily play WoW with the MBA!! I ran the tests for about 30 minutes tweaking the settings repeatedly. The medium test gave the best overall experience in game. This is especially true when you go to lesser populated areas, the FPS shoots up even more.</p>
<p>Finally some random tidbits of data and commentary:</p>
<ul>
<li>Startup of my MBP takes <b>95 seconds</b> while startup of my MBA w/SSD takes <b>25 seconds</b>.</li>
<li>Shutdown of my MBP takes <b>10 seconds</b> while shutdown of my MBA takes <b>3 seconds</b>.</li>
<li>The MBA drives a 24&rdquo; cinema display quite well. It never froze or crashed (some people reported problems with V1 of the MBA)</li>
<li>I migrated all of my data having the USB ethernet dongle connected to a powered USB hub along with keyboard, mouse, and USB HD all connected to the MBA single USB port. It was smooth and the overall throughput was good. I&rsquo;ll try to do some USB networking tests and report back the results.</li>
<li>The angle of the MBA keyboard is much easier on the wrist than that of the MBP. Makes for writing blog entries and code easier on the body.</li>
<li>Remote disk works great mounting the DVD drive of a new model iMac (my wife&rsquo;s). For reference I have a gigabit network in my home.</li>
<li>The backlighting of the MBA keyboard is far superior to that of the older MBP. It&rsquo;s attractive on the black keys and highly usable.</li>
<li>I ran PiXel Check and I have no dead or stuck pixels, a pristine display.</li>
</ul>
<p>In summary I really enjoy the new MBA and recommend that people really consider it when purchasing their next laptop. Apple seems to have addressed a lot of the issues with the first MBA release. For me it&rsquo;s quite a change from the screen size of the 17&rdquo; MBP but once I was past the initial shock the rest of the experience was flawless. The MBA addresses all of my requirements for a new mobile laptop. I&rsquo;m able to continue development on <a href="http://www.wideasleep.com/products/fairway/">Fairway</a> and other applications, commute with less weight, and the design / hardware is top notch. The screen has amazing color ranges, I can still play games, videos are smooth, and damn it&rsquo;s a nice looking machine. All in all a great machine that I highly recommend.</p>
<p><b>Note</b> &#8211; If there&rsquo;s something you&rsquo;d like me to test just comment below and I&rsquo;ll see what I can do.</p>
<p><b>Update 1</b></p>
<p>Some people asked that I run <a href="http://www.olofsson.info/MSR%20Tools.dmg" rel="external">MSR Tools</a>. It&rsquo;s a tool that lets you see the Actual CPU usage of your cores on the MBA. It really allows you to see some of the <a href="http://forums.macrumors.com/showthread.php?t=459306" rel="external">problems</a> like core drop or CPU throttling that were occurring in V1 of the MBA.</p>
<p>After running it with a the &ldquo;/dev/null&rdquo; test (two Terminal windows running yes > /dev/null) I saw the following:</p>
<dl>
<dt>CPU 1</dt>
<dd>800 MHz &#8211; 1.86 GHz</dd>
<dt>CPU 2</dt>
<dd>800 MHz &#8211; 1.86 GHz</dd>
</dl>
<p>After running the first null test the first CPU pegs to 1.86 GHz. Upon launching the second window the CPU begins to fluctuate between 800 MHz and 1.86 GHz. This confirms what <em>NC Macguy</em> <a href="http://forums.macrumors.com/showthread.php?t=593227&#038;page=2" rel="external">is seeing</a> as well. He also ran <a href="http://forums.macrumors.com/showthread.php?t=593227&#038;page=3" rel="external">another test</a> with 3 videos playing and was able to get the CPU to stay at or near 1.86 GHz. I have to set that test up still but since I&#8217;m working on cycling my battery it may have to wait until later.</p>
<p>I don&rsquo;t think the numbers above are shocking. Yes it&rsquo;s weird that the CPU randomly drops down to 800 Mhz running the null test. The computer is however being presented with conflicting problems &#8230; a long running set of CPU tasks that are raising the temperature and a need to keep the machine running which requires lowering the temperature. Because it can&rsquo;t offload any of the load to the GPU (like in the video test can) it throttles down the CPU and it begins to bounce around to find some equilibrium. The machine never locks up like it seemed to do in MBA V1 so that&rsquo;s a big win. All in all I think the machine handled the test properly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=127</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fairway 1.0.2</title>
		<link>http://www.wideasleep.com/blog/?p=120</link>
		<comments>http://www.wideasleep.com/blog/?p=120#comments</comments>
		<pubDate>Thu, 23 Oct 2008 02:05:21 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=120</guid>
		<description><![CDATA[We just published version 1.0.2 of Fairway to the AppStore. Based on past history you should see it available in approximately one week for your device. We&#8217;ll update this post when we know it has been released. Here are the details of the upgrade ...

]]></description>
			<content:encoded><![CDATA[<p>We just published version 1.0.2 of <a href="/products/fairway">Fairway</a> to the <a href="http://click.linksynergy.com/fs-bin/stat?id=XmQ73pkY/YA&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ffairway-golf%252Fid289224238%253Fmt%253D8%2526uo%253D6%2526partnerId%253D30" rel="external">AppStore</a>. Based on past history you should see it available in approximately one week for your device. We&rsquo;ll update this post when we know it has been released.</p>
<p>Here are the details of the upgrade:</p>
<p><b>Fixed Bugs</b></p>
<ul>
<li>Selecting pickers now properly spin and select the right values.</li>
<li>Clubs names and descriptions are now properly truncated on the main HUD view.</li>
<li>The application icon should now display properly.</li>
</ul>
<p><b>Features Added</b></p>
<ul>
<li>Widened picker sliders so you can easily touch them.</li>
<li>Picker sliders now prominently display currently set values.</li>
<li>Club lengths can now be entered to 2 decimal places.</li>
<li>Added the ability to select previously entered club brands, models, or descriptions as well as select them from a small club database for quick data entry.</li>
</ul>
<p>I wanted to thank all of the users whose feedback went into this release. I&rsquo;m constantly trying to make this application the best it can be and welcome new ideas and <a href="/contact/">comments</a>. </p>
<p>You can find information about other releases on the <a href="/products/fairway/release_notes">Fairway release notes</a>.</p>
<p><b>Update:</b> Version 1.0.2 has been approved for the AppStore so look for an update to show up soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=120</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>End of Season Sale</title>
		<link>http://www.wideasleep.com/blog/?p=111</link>
		<comments>http://www.wideasleep.com/blog/?p=111#comments</comments>
		<pubDate>Mon, 22 Sep 2008 01:06:56 +0000</pubDate>
		<dc:creator>sean</dc:creator>
				<category><![CDATA[Fairway]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wideasleep.com/blog/?p=111</guid>
		<description><![CDATA[We&#8217;re having a sale this weekend on Fairway in the AppStore. Instead of being $9.99 we&#8217;re cutting the price in half to $4.99. Because we&#8217;re all depressed when the end of a golf season nears ...]]></description>
			<content:encoded><![CDATA[<p>We&rsquo;re having a sale on <a href="/products/fairway/">Fairway</a> in the <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289224238" rel="external">AppStore</a>. Instead of being $9.99 we&rsquo;re cutting the price in half to $4.99. Because we&rsquo;re all depressed when the end of a golf season nears we figured we would lower the price in a hopes that you&rsquo;d cheer up a bit  and give it a try. </p>
<p>After you take it for a swing <a href="/contact/">let us know</a> what you think. We&rsquo;re always happy to hear from our users. We&rsquo;re already hard at work on version 1.0.2 after getting some valuable user feedback on 1.0.</p>
<p><b>Update:</b> Thanks to <a href="http://www.tuaw.com/2008/09/19/app-store-deals/" rel="external">TUAW</a> and <a href="http://www.iphonealley.com/news/fairway-on-sale-this-weekend-half-price?" rel="external">iPhone Alley</a> for covering the sale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wideasleep.com/blog/?feed=rss2&amp;p=111</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
