<?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>Rune&#039;s Blog</title>
	<atom:link href="http://runmad.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://runmad.com/blog</link>
	<description>A blog about code, graphics, UI, marketing and whatever else interests me. Follow me on Twitter: @runmad</description>
	<lastBuildDate>Tue, 02 Oct 2012 12:22:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>App Store screenshots and the status bar</title>
		<link>http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/</link>
		<comments>http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 14:22:16 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[itunes connect]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[status bar]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=519</guid>
		<description><![CDATA[Two developers I follow on Twitter have asked pretty much the same question in recent memory: &#8220;Should I leave the status bar in iOS App Store screenshots or crop them out?&#8221; (link, link). Crop out the status bar. I replied &#8230; <a href="http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Two developers I follow on Twitter have asked pretty much the same question in recent memory: &#8220;Should I leave the status bar in iOS App Store screenshots or crop them out?&#8221; (<a href="https://twitter.com/lessthanuthink/statuses/227147838981799937">link</a>, <a href="https://twitter.com/tewha/statuses/251459715744280576">link</a>).</p>
<p><strong>Crop out the status bar</strong>.</p>
<p>I replied to both on Twitter, but thought I&#8217;d write up a short post on it. A few people replied to the above tweets saying you should leave the status bar in the screenshots but take out the carrier. Someone even said they&#8217;d want to know what colour the status bar is for an app. Not sure customers would decide to buy an app based on the colour the the status bar to be honest.</p>
<p>Here&#8217;s what Apple says in the <a href="https://developer.apple.com/library/ios/#documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide">iTunes Connect Developer Guide</a>, taken from the section <a href="https://developer.apple.com/library/ios/#documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/2_BeforeYouBegin/BeforeYouBegin.html#//apple_ref/doc/uid/TP40011225-CH11-SW6">Before you begin: Creating Assets with the Correct Specifications</a></p>
<blockquote><p>The first screenshot you upload in iTunes Connect is used as the main screenshot. It is visible on your app product page on both the desktop App Store and the device App Store. For best results, <strong>do not include the iPhone or iPad status bar in your screenshots</strong>, and follow the requirements given below. Those dimensions allow you to remove the iOS status bar from screenshots so that you can <strong>showcase only the active app area, without distractions</strong>.</p></blockquote>
<p>You can refer to <a href="https://developer.apple.com/library/ios/#documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/8_AddingNewApps/AddingNewApps.html#//apple_ref/doc/uid/TP40011225-CH13-SW21">Table 7-3</a> for screenshot dimensions for the various devices, both with and without the status bar.</p>
<p>But again: <strong>Crop out the status bar</strong>.</p>
<h1>Use of status bar styles</h1>
<p>On a related note, I strongly suggest going with a black status bar unless a status bar matching the colour of your navigation bar <em>really</em> enhances the UI.</p>
<p>The Keypad view in the Phone app shows a nice use of the default status bar where the top view seamlessly blends into the status bar. I also find that the status bar looks best when matched with the default navigation bar (blue). Other colours often don&#8217;t look right.</p>
<p style="text-align: center;"><a href="http://runmad.com/blog/wp-content/uploads/2012/09/phone-app-screenshot.png"><img class="aligncenter size-full wp-image-525" title="phone-app-screenshot" src="http://runmad.com/blog/wp-content/uploads/2012/09/phone-app-screenshot.png" alt="" width="256" height="384" /></a></p>
<p>You can also mix and match throughout your app. The built in Clock app is a great example of this. The status bar compliments the navigation bar and background on the first two tabs, but the last two views are mainly black, so the status bar is black for these two tabs as well.</p>
<p><a href="http://runmad.com/blog/wp-content/uploads/2012/09/clock-app-screenshot.png"><img class="aligncenter size-full wp-image-524" title="clock-app-screenshot" src="http://runmad.com/blog/wp-content/uploads/2012/09/clock-app-screenshot.png" alt="" width="460" height="340" /></a></p>
<p style="text-align: center;">
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/" data-text="App Store screenshots and the status bar"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fapp-store-screenshots-and-the-status-bar%2F&amp;linkname=App%20Store%20screenshots%20and%20the%20status%20bar" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fapp-store-screenshots-and-the-status-bar%2F&amp;linkname=App%20Store%20screenshots%20and%20the%20status%20bar" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fapp-store-screenshots-and-the-status-bar%2F&amp;title=App%20Store%20screenshots%20and%20the%20status%20bar" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2012/09/app-store-screenshots-and-the-status-bar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcode code snippets and syncing</title>
		<link>http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/</link>
		<comments>http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/#comments</comments>
		<pubDate>Fri, 21 Sep 2012 18:30:17 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[code-snippet]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[pro-tip]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=494</guid>
		<description><![CDATA[Earlier today I took some time to create a few more code snippets in Xcode for code I&#8217;ve been writing a lot of lately. I&#8217;ve never really seen or discussed these much with other developers, so I was wondering whether &#8230; <a href="http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Earlier today I took some time to create a few more code snippets in Xcode for code I&#8217;ve been writing a lot of lately. I&#8217;ve never really seen or discussed these much with other developers, so I was wondering whether people actually use them &#8211; and to what extent? I know from my own experience that I don&#8217;t use them nearly enough, so I thought I&#8217;d write up a quick post on Xcode&#8217;s awesome Code Snippet Library.</p>
<p>The Code Snippet Library in Xcode is a great feature and a huge time saver &#8211; you&#8217;ll be doing yourself a favour by using it if you haven&#8217;t already! Ever noticed how when you start typing &#8220;init&#8221; Xcode will autosuggest the Objective-C init method? It does this because it&#8217;s a code snippet with a completion shortcut &#8220;init&#8221;. Same with &#8220;forin&#8221;, &#8220;dealloc&#8221; and many more built-in code snippets. Check each snippet&#8217;s completion shortcut in their edit mode.</p>
<p><a href="http://runmad.com/blog/wp-content/uploads/2012/09/codesnippetexample.png"><img class="aligncenter size-full wp-image-495" title="Objective-C init method code snippet" src="http://runmad.com/blog/wp-content/uploads/2012/09/codesnippetexample.png" alt="Objective-C init method code snippet" width="705" height="341" /></a></p>
<p>Here&#8217;s a basic example of a &#8220;user&#8221; code snippet I have in my library:</p>
<p><a href="http://runmad.com/blog/wp-content/uploads/2012/09/alertviewcodesnippet.png"><img class="aligncenter size-full wp-image-497" title="UIAlertView boilerplate code snippet" src="http://runmad.com/blog/wp-content/uploads/2012/09/alertviewcodesnippet.png" alt="UIAlertView boilerplate code snippet" width="426" height="296" /></a></p>
<p>I wrote up the code for a UIAlertView, highlighted the code and dragged it into the Code Snippet Library. The code snippet retains the parameter placeholders as well as your indentation (don&#8217;t worry about the indentation in the preview box such as in the example above, as long as it&#8217;s correct when used in your code). Now for the awesome part: Notice how I set the Completion Shortcut to &#8220;alertview&#8221; and the Completion Scope to &#8220;Code Expression&#8221;? Now, if I type <em>alertview</em> inside a method Xcode will auto-suggest this entire code snippet and I simple hit enter to use it and tab through the parameters to quickly setup a UIAlertView. Thanks Xcode &lt;3</p>
<p>The Completion Scope is fairly important as it allows you to set the scope for when Xcode should auto-suggest your code snippet. If a code snippet is a method, set the scope as such and Xcode won&#8217;t auto-suggest that snippet if you&#8217;re inside a method. If you&#8217;re writing code for both OS X and iOS you can also set a specific platform for the code snippet so you&#8217;re not having your UIKit-specific code snippets suggested when you&#8217;re writing code for a Mac app.</p>
<h1>Keeping your Code Snippet Library in sync</h1>
<p>An hour ago, <a href="https://twitter.com/runmad/statuses/249211520519651328">I tweeted</a> about syncing Xcode Code Snippet Library with Xcode, which basically led me to writing up this blog post.</p>
<p>I&#8217;ve got my Macbook Pro at work and Mac Pro at home and often switch between the two. Unfortunately Xcode doesn&#8217;t have iCloud syncing &#8211; though what a nice feature this would be &#8211; so keeping your Code Snippet Library in sync could be a small pain. Enter symlinks.</p>
<p>Custom code snippets can be found in</p>
<div class="codesnip-container" >~/Library/Developer/Xcode/UserData/CodeSnippets/</div>
<p>Each code snippet is a plist file, which means adding or deleting code snippets on any machines won&#8217;t give you any issues (I believe it would in Xcode 3 because all snippets were saved into one file, which may have created some conflicts depending on the method used to sync).</p>
<p>Assuming you&#8217;re a Dropbox user*, you can use it to sync user Code Snippets between two or more machines. In the following example, I&#8217;ve setup a folder in Dropbox for Xcode. I&#8217;ll move my /CodeSnippet folder to the Xcode folder in Dropbox and setup a symlink in the original path that points to the CodeSnippet folder in my Dropbox:</p>
<div class="codesnip-container" >$ cd ~/Library/Developer/Xcode/UserData<br />
$ mv CodeSnippets /Dropbox/Xcode/<br />
$ ln -s ~/Dropbox/Xcode/CodeSnippets/ CodeSnippets</div>
<p>You may have to sudo the last line, but now you should be all set. Do the same thing on your other machine(s) and start creating lots of useful snippets to use on any machine you&#8217;re working on! Don&#8217;t forget Completion Shortcuts to make your life much easier.</p>
<p>Hope you found this post useful. If you have similar tips, feel free to share in the comments. <a href="http://www.twitter.com/tewha">@tewha</a> <a href="https://twitter.com/tewha/statuses/249211781220806656">replied to my tweet</a> saying that he uses symlinks to sync Archived builds and other Xcode User Data across several machines.</p>
<p>*If you&#8217;re not a Dropbox user, feel free to use my <a title="Dropbox" href="http://db.tt/HWJW0PV6">referral link</a> :)</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/" data-text="Xcode code snippets and syncing"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fxcode-code-snippets-and-syncing%2F&amp;linkname=Xcode%20code%20snippets%20and%20syncing" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fxcode-code-snippets-and-syncing%2F&amp;linkname=Xcode%20code%20snippets%20and%20syncing" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F09%2Fxcode-code-snippets-and-syncing%2F&amp;title=Xcode%20code%20snippets%20and%20syncing" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Music from WWDC 2012</title>
		<link>http://runmad.com/blog/2012/06/music-from-wwdc-2012/</link>
		<comments>http://runmad.com/blog/2012/06/music-from-wwdc-2012/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 14:38:03 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[WWDC]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=484</guid>
		<description><![CDATA[Apple is known for its love of music and each year WWDC is filled with a great selection of music played before and after the Keynote, between sessions and during the Beer Bash. It&#8217;s a combination of old classics and &#8230; <a href="http://runmad.com/blog/2012/06/music-from-wwdc-2012/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Apple is known for its love of music and each year WWDC is filled with a great selection of music played before and after the Keynote, between sessions and during the Beer Bash. It&#8217;s a combination of old classics and new tunes, though I find that it&#8217;s not exactly Top 20 radio hits (which is a good thing!).</p>
<p>Each year I attend, I collect songs I hear using Shazam or SoundHound. Using SubEthaEdit I share a document and ask that other attendees help fill the playlist. In my experience, there seem to be a playlist of about 50 songs each year that are played throughout the week, some more than others. Since it&#8217;s impossible to be in every room, some songs may be missing from the playlist, but hopefully through collaboration, most are there. Feel free to let me know in a comment and I&#8217;ll add it to the playlist!</p>
<p>In previous years the band that plays at the Beer Bash gets a number of plays throughout the week, but this year I didn&#8217;t hear a single song from Neon Trees. Apple did announce the band early in the week and gave everyone a code to redeem two of the band&#8217;s hits through iTunes. While most people didn&#8217;t seem to have a clue who they were, I think a lot of people knew them from those two hits. I have included &#8216;Animal&#8217; and &#8216;Everybody Talks&#8217; in the playlist below (and on rdio).</p>
<p>Here&#8217;s the rdio playlist: <a href="http://www.rdio.com/people/runmad/playlists/942543/Music_from_WWDC_2012/">http://www.rdio.com/people/runmad/playlists/942543/Music_from_WWDC_2012/</a></p>
<p>And a .txt version of the SubEthaEdit file: <a href="https://dl.dropbox.com/u/5445727/Music%20from%20WWDC%202012.txt">https://dl.dropbox.com/u/5445727/Music from WWDC 2012.txt</a></p>
<p>Thank you to the following contributors (Name, Twitter, Email):</p>
<ul>
<li>Rune Madsen @runmad rune@theappboutique.com</li>
<li>Ola Rönnerup @fnolis ola@ronnerup.se</li>
<li>David Wolf @davidwolf david.wolf@gmail.com</li>
<li>Grant Burry @grantburry grant@burry.me</li>
<li>Scott Andrus @scottandrus scott.andrus@vanderbilt.edu</li>
<li>Charles Ying @charlietuna charlesying@gmail.com</li>
<li>Mike Park @mikevpark</li>
</ul>
<p>These were individuals who added their names to the SubEthaEdit document.</p>
<p>I went to one session where they played a track from <a href="http://www.bootiemashup.com/bestofbootie2011/">Best of Bootie 2011</a> (listed as Titus Jones below). Since it&#8217;s a mashup, they may have played more than that one song. It&#8217;s a great CD regardless &#8211; and free &#8211; so worth downloading.</p>
<p>Here&#8217;s the playlist, sorted alphabetically (artist &#8211; song):</p>
<ul>
<li>Beirut &#8211; Santa Fé</li>
<li>Beck &#8211; Gamma Ray</li>
<li>Bob Marley and The Wailers &#8211; Exodus</li>
<li>Brandon Flowers &#8211; Crossfire</li>
<li>Cake &#8211; Short Skirt/Long Jacket</li>
<li>Coldplay &#8211; Paradise</li>
<li>Coldplay &#8211; Talk</li>
<li>Edward Sharpe &amp; The Magnetic Zeros &#8211; Man On Fire</li>
<li>Ellie Goulding &#8211; Lights</li>
<li>Fatboy Slim &#8211; The Rockafeller Skank (Mulder&#8217;s Urban Takeover Mix) / 2 PAC + Dr. Dre</li>
<li>Florence + The Machine &#8211; Shake It Out</li>
<li>Foster The People &#8211; Helena Beat</li>
<li>Foster The People &#8211; Houdini</li>
<li>Franz Ferdinand &#8211; No You Girls</li>
<li>Fun. (feat. Janelle Monae) &#8211; We Are Young</li>
<li>Gorillaz &#8211; Dirty Harry</li>
<li>Gotye (feat. Kimbra) &#8211; Somebody That I Used To Know</li>
<li>Here &#8211; Man on Fire</li>
<li>Imagine Dragons &#8211; It&#8217;s Time</li>
<li>Ini Kamoze &#8211; Here Comes the Hotstepper</li>
<li>Jack Johnson &#8211; From The Clouds</li>
<li>Jennifer Lopez feat. Pitbull &#8211; On The Floor</li>
<li>Julian Casablanca &#8211; 11th Dimension</li>
<li>K&#8217;naan &#8211; Wavin&#8217; Flag</li>
<li>Kasabian &#8211; Fire</li>
<li>LCD Soundsystem &#8211; Someone Great</li>
<li>We Own The Sky &#8211; M83</li>
<li>Mat Kearney &#8211; Ships in the Night</li>
<li>Martin Solveig &amp; Dragonette &#8211; Hello</li>
<li>Michael Franti &amp; Spearhead &#8211; Hey Hey Hey</li>
<li>Neon Trees &#8211; Animal</li>
<li>Neon Trees &#8211; Everybody Talks</li>
<li>No Doubt &#8211; Underneath It All</li>
<li>OK GO &#8211; This Too Shall Pass</li>
<li>Owl City &#8211; Dreams Don&#8217;t Turn to Dust</li>
<li>Phoenix &#8211; Long Distance Call</li>
<li>Ra Ra Riot &#8211; Can You Tell</li>
<li>Regina Spektor &#8211; Don&#8217;t Leave Me (Ne Me Quitte Pas)</li>
<li>Rooney &#8211; When Did Your Heart Go Missing</li>
<li>Sara Bareilles &#8211; Uncharted</li>
<li>Snow Patrol &#8211; Take Back the City</li>
<li>The Black Keys &#8211; Gold On The Ceiling</li>
<li>The Black Keys &#8211; I Got Mine</li>
<li>The Flaming Lips &#8211; Yoshimi Battles the Pink Robots Part 1 [Japanese Version]</li>
<li>The Hit Crew &#8211; I Can See Clearly Now</li>
<li>The Killers &#8211; Read My Mind</li>
<li>The Police &#8211; Walking on the Moon</li>
<li>The Shins &#8211; Simple Song</li>
<li>The White Stripes &#8211; My Doorbell</li>
<li>Train &#8211; Drive By</li>
<li>Titus Jones &#8211; Hello Girl, Let&#8217;s Party Til The End (not on rdio, download link above)</li>
<li>TV on the Radio &#8211; You</li>
<li>Two Door Cinema Club &#8211; What You Know</li>
<li>Tycho &#8211; Hours</li>
<li>Vampire Weekend &#8211; Mansard Roof</li>
<li>Vampire Weekend &#8211; White Sky</li>
<li>Under the Influence of Giants &#8211; Mama&#8217;s Room</li>
</ul>
<p>If you&#8217;re interested in last year&#8217;s playlist, you can find it <a href="https://dl.dropbox.com/u/5445727/Music%20at%20WWDC%202011.txt">here</a>.</p>
<p>Enjoy!</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2012/06/music-from-wwdc-2012/" data-text="Music from WWDC 2012"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2012/06/music-from-wwdc-2012/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F06%2Fmusic-from-wwdc-2012%2F&amp;linkname=Music%20from%20WWDC%202012" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F06%2Fmusic-from-wwdc-2012%2F&amp;linkname=Music%20from%20WWDC%202012" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F06%2Fmusic-from-wwdc-2012%2F&amp;title=Music%20from%20WWDC%202012" id="wpa2a_12">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2012/06/music-from-wwdc-2012/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Making Rounded Rectangles Look Great (with CSS)</title>
		<link>http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/</link>
		<comments>http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 02:19:10 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sample code]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=455</guid>
		<description><![CDATA[Go directly to the project demo page. Mike Rundle of flyosity.com recently posted an article, Making Rounded Rectangles Look Great, on designing rounded rectangles, some design techniques, etc. I recommend you to check out the post and download the PSDs for great &#8230; <a href="http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a title="View project demo" href="http://runmad.com/sandbox/rectangles/" target="_blank"><img class="aligncenter size-full wp-image-472" title="RuneIcons" src="http://runmad.com/blog/wp-content/uploads/2012/01/RuneIcons.png" alt="" width="537" height="269" /></a></p>
<p><a title="Rectangles" href="http://runmad.com/sandbox/rectangles/" target="_blank">Go directly to the project demo page</a>.</p>
<p>Mike Rundle of <a title="Flyosity.com" href="http://www.flyosity.com" target="_blank">flyosity.com</a> recently posted an article, <a title="Making Rounded Rectangles Look Great" href="http://flyosity.com/design/making-rounded-rectangles-look-great.php" target="_blank">Making Rounded Rectangles Look Great</a>, on designing rounded rectangles, some design techniques, etc. I recommend you to check out the post and download the PSDs for great inspiration!</p>
<p>I&#8217;ve recently worked extensively with re-engineering and re-designing the UX and UI for an online retailer, which involved a lot of paper, Photoshop and CSS (or Sass).</p>
<p>I thought it would be cool to create the buttons from Mike Rundle&#8217;s article in pure CSS, so I went ahead and did it. Before checking out the CSS buttons, be sure to check out Mike Rundle&#8217;s examples and PSDs for a comparison.</p>
<p>I tried as much as possible to stick with the same colours and transparencies as Mike Rundle&#8217;s examples, although there may be slight differences, depending your display and browser.</p>
<p>I&#8217;ve also added :hover and :active states to all the buttons, so they&#8217;re a bit more exciting. Unfortunately CSS doesn&#8217;t provide a simple way to create a masked gradient at an angle, so the Convex example is probably the least similar one. But it still looks great and I wanted to stick with all CSS &#8211; could have been achieved with an image mask or simple overlay.</p>
<p>You can check out the result on a <a title="Rectangles" href="http://runmad.com/sandbox/rectangles/">separate page</a>. Feel free to grab this .zip containing all the project files: <a href="http://www.runmad.com/sandbox/rectangles/Rectangles.zip">Rectangles.zip</a>.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/" data-text="Making Rounded Rectangles Look Great (with CSS)"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F01%2Fmaking-rounded-rectangles-look-great-with-css%2F&amp;linkname=Making%20Rounded%20Rectangles%20Look%20Great%20%28with%20CSS%29" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F01%2Fmaking-rounded-rectangles-look-great-with-css%2F&amp;linkname=Making%20Rounded%20Rectangles%20Look%20Great%20%28with%20CSS%29" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2012%2F01%2Fmaking-rounded-rectangles-look-great-with-css%2F&amp;title=Making%20Rounded%20Rectangles%20Look%20Great%20%28with%20CSS%29" id="wpa2a_16">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2012/01/making-rounded-rectangles-look-great-with-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Final #idevblogaday post for this round</title>
		<link>http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/</link>
		<comments>http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 21:32:48 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[#idevblogaday]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/</guid>
		<description><![CDATA[This is my last #idevblogaday post for now, and unfortunately I&#8217;ve completely run out of time for this week&#8217;s post and I can honestly say I don&#8217;t have any ideas for it either. How about that!? Despite it now being &#8230; <a href="http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is my last #idevblogaday post for now, and unfortunately I&#8217;ve completely run out of time for this week&#8217;s post and I can honestly say I don&#8217;t have any ideas for it either. How about that!?</p>
<p>Despite it now being a bi-weekly submission, it&#8217;s still hard to keep going with new ideas every two weeks :)</p>
<p>But I&#8217;d like to thank everyone who&#8217;s been reading my previous blog posts and please do check back again in the future. I&#8217;ll probably enlist myself in the queue again and try to write some blog posts in the meantime if I come up with some ideas :)</p>
<p>Thanks and sorry for the lack of actual content!</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/" data-text="Final #idevblogaday post for this round"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F08%2Ffinal-idevblogaday-post-for-this-round%2F&amp;linkname=Final%20%23idevblogaday%20post%20for%20this%20round" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F08%2Ffinal-idevblogaday-post-for-this-round%2F&amp;linkname=Final%20%23idevblogaday%20post%20for%20this%20round" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F08%2Ffinal-idevblogaday-post-for-this-round%2F&amp;title=Final%20%23idevblogaday%20post%20for%20this%20round" id="wpa2a_20">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/08/final-idevblogaday-post-for-this-round/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessibility on iOS: Working with VoiceOver support</title>
		<link>http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/</link>
		<comments>http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 21:44:13 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[#idevblogaday]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[next ttc]]></category>
		<category><![CDATA[VoiceOver]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=428</guid>
		<description><![CDATA[Accessibility on iOS provides visually impaired iOS users the ability to use an awesome touch screen platform to its full extent. It&#8217;s your job as an iOS developer to ensure your app works wonderfully with Accessibility on iOS. When considering &#8230; <a href="http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="size-full wp-image-431 alignright" title="accessibility_icon" src="http://runmad.com/blog/wp-content/uploads/2011/07/accessibility_icon.png" alt="" width="128" height="128" /></p>
<p>Accessibility on iOS provides visually impaired iOS users the ability to use an awesome touch screen platform to its full extent. It&#8217;s your job as an iOS developer to ensure your app works wonderfully with Accessibility on iOS.</p>
<p>When considering adding features or optimizing your app for Accessibility, don&#8217;t assume we&#8217;re just talking users who are completely blind. And despite being all iOS being full touch screen devices, there are lots of visually impaired users outthere, ranging from users who are blind, hard at seeing or colour blind, for example.</p>
<p>Apps, such as Mail, numerous Twitter clients and more include the possibility of changing text on the screen to a larger font size. <a href="http://www.twitter.com/MattRix">Matt Rix</a>&#8216; <a href="http://trainyard.ca/">Trainyard</a> includes an option for players who are colour blind. These are just a few examples of improving apps for Accessibility.</p>
<p>Also consider interaction. While a scroll requires just a flick with one finger for regular use, having VoiceOver enabled scrolling is done with a three finger swipe, and moves the UIScrollView (and any NSObjects that inherit from UIScrollView) a page at a time. So while a pull-to-refresh is awesome, for user with VoiceOver enabled, it might not be as apparent or ease to use.</p>
<p>In this post, I will focus a bit on optimizing your app for VoiceOver. Before continuing with this post, check the video below where a blind user shows off VoiceOver and demonstrates how to use it.</p>
<p><iframe src="http://www.youtube.com/embed/QEDzitE2w_0" frameborder="0" align="center" width="425" height="349"></iframe></p>
<p>I also recommend enabling VoiceOver on your own device and playing around with it for a while, just to get familiar with it. One thing is to know about it and use it with the Accessibility debugger turned on in Simulator, another thing is to experience it for yourself!</p>
<p>While most of UIKit works fairly well out of the box with VoiceOver, there are plenty of things you can do to improve how your app works with VoiceOver. If you&#8217;re doing any custom UI (especially drawing) VoiceOver will most likely not work, or it may speak out the names of the object. So if you call a custom UIButton &#8220;createNewTaskButton,&#8221; that&#8217;s what it will say. Instead, it should probably say &#8220;Create New Task&#8221;.</p>
<p><img class="align right size-full wp-image-433 alignright" title="Accessibility_iOS_simulator" src="http://runmad.com/blog/wp-content/uploads/2011/07/Accessibility_iOS_simulator.png" alt="" width="317" height="595" /></p>
<p>Consider your own app(s) and what use visually impaired users may have of it. I made a transit app, so it was only natural to optimize it for visually impaired users and add custom and improved VoiceOver support. With VoiceOver enabled, users can tap the time until the next transit vehicle arrives and the device speaks out in plain English &#8220;Next TTC vehicles arrives in 5 minutes and 32 seconds. Tap again to hear updated time.&#8221; If I had not customized it, it would have just said &#8220;5:32.&#8221;</p>
<p>Underneath are subsequent vehicle arrival times. As you can see from the Simulator screenshot, without VoiceOver optimization, the device would just say &#8220;20 min bullet 25 min bullet 26 min.&#8221; With Voice Over optimization, it says &#8220;Subsequent TTC vehicles arrive in 15 minutes (pause) 20 minutes (pause) and 25 minutes. Tap again to hear updated times&#8221; Notice the (pause) and look at the screenshot. VoiceOver speaks pretty fast, so if you would like a bit of a pause, just insert a period, and it will pause a bit between the words. This is a great way to split up important information.</p>
<p>Also notice how it will say &#8220;and&#8221; for the last arrival time. If there are more or less times, it would only say it for the last item. Remember attention to detail in these cases. If someone was to tell you the information for what you touched on the screen, how would you best understand it? There&#8217;s a huge different between spoken language and UI. Keep this in mind!</p>
<p>For the buttons with which users can change a route, the label would look like this &#8220;506 • Carlton.&#8221; In this case, the literal VoiceOver sentence would be &#8220;506 bullet Carlton.&#8221; So I went ahead and customized this to &#8220;506 Carlton,&#8221; so it wouldn&#8217;t speak the &#8220;bullet&#8221; part of it. For the custom UIButton where the user can add or delete a route/stop selection to their Favourites, I added &#8220;This is a favourite. Double tap to remove from your favourites&#8221; and if the selection is not a favourite it would say &#8220;Not a favourite. Double tap to add to your favourites.&#8221;</p>
<p><a href="http://runmad.com/blog/wp-content/uploads/2011/07/Accessibility_iOS_simulator2.png"><img class="size-full wp-image-438 alignleft" title="Accessibility_iOS_simulator2" src="http://runmad.com/blog/wp-content/uploads/2011/07/Accessibility_iOS_simulator2.png" alt="" width="317" height="595" /></a></p>
<p>If you&#8217;re doing any custom drawing, for example as I have done in the example on the right, you will need to pay extra attention to VoiceOver optimizations.</p>
<p>For flat, drawn views, VoiceOver cannot access any of the text or other information on screen. In this example, I draw each cell, so there are no UILabels or UIImageViews for VoiceOver to recognize and speak.</p>
<p>I therefore set the <em>accessibilityLabel</em> property on each cell which then provides VoiceOver with information about what to say. As you can see from the example, according to Accessibility Inspector, VoiceOver will say the route number and name, and because the item is a current selection, I also made sure VoiceOver lets the user know about this by saying &#8220;Current selection&#8221; after the route number and name.</p>
<p>For non-VoiceOver users, the checkmark is a great visual marker for the item being a current selection. But for VoiceOver users, this would have not been the case. Especially since it&#8217;s a custom drawn view, VoiceOver has no clue about the checkmark. In your Accessibility optimization, not only consider what VoiceOver would say, but also consider the UI and what VoiceOver can see, or should see that is related to the item the user it touching.The user may not know about a certain UI object or visual marker without VoiceOver telling them.</p>
<p>Accessibility Inspector in iOS Simulator is a great tool to help optimize your app for full VoiceOver support. Tapping the X button disables the Inspector and hides most of its UI. This enables you to see the app without VoiceOver enabled to quickly get to the content you&#8217;re currently debugging for VoiceOver, or since VoiceOver scrolling requires three fingers, it will allow you to scroll when you disable it temporarily.</p>
<p>While Accessibility Inspector shows what VoiceOver will say, you should again test on an actual device with VoiceOver enabled. As mentioned, one thing is how something looks and &#8220;sounds&#8221; when it&#8217;s written, another is how it sounds when VoiceOver speaks it.</p>
<p>So these were a few of the consideration I made for one of my apps in optimizing it for full VoiceOver support. For more on the subject, I urge you to read Apple&#8217;s <a href="http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008785-CH1-SW1">Accessibility Programming Guide for iOS</a>, which gives a more detailed overview of the possibilities as well as more in depth examples and usage guides.</p>
<p>Furthermore, <a href="http://twitter.com/#!/mattgemmell">Matt Gemmell</a> has written a great <a href="http://mattgemmell.com/2010/12/19/accessibility-for-iphone-and-ipad-apps">post</a> on it as well with more details on Accessibility properties, among other things, and it&#8217;s totally worth checking out.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/" data-text="Accessibility on iOS: Working with VoiceOver support"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Faccessibility-on-ios-working-with-voiceover-support%2F&amp;linkname=Accessibility%20on%20iOS%3A%20Working%20with%20VoiceOver%20support" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Faccessibility-on-ios-working-with-voiceover-support%2F&amp;linkname=Accessibility%20on%20iOS%3A%20Working%20with%20VoiceOver%20support" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Faccessibility-on-ios-working-with-voiceover-support%2F&amp;title=Accessibility%20on%20iOS%3A%20Working%20with%20VoiceOver%20support" id="wpa2a_24">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/07/accessibility-on-ios-working-with-voiceover-support/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Core Location presentation at TACOW</title>
		<link>http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/</link>
		<comments>http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 16:09:03 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone 4]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[cllocation]]></category>
		<category><![CDATA[cllocationmanager]]></category>
		<category><![CDATA[core location]]></category>
		<category><![CDATA[tacow]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=424</guid>
		<description><![CDATA[Last night, I did a presentation on Core Location for TACOW&#8217;s (Toronto Area Cocoa and WebObjects developers group) quarterly meet-up. I volunteered during a lunch with the group&#8217;s co-founders David (@rebeld) and Karl (@kolpanic) on the last day of WWDC. &#8230; <a href="http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://runmad.com/blog/wp-content/uploads/2011/07/corelocation_presentation_screenshot.png"><img class="aligncenter size-full wp-image-425" title="corelocation_presentation_screenshot" src="http://runmad.com/blog/wp-content/uploads/2011/07/corelocation_presentation_screenshot.png" alt="" width="648" height="405" /></a></p>
<p>Last night, I did a presentation on Core Location for TACOW&#8217;s (<a href="http://tacow.org/">Toronto Area Cocoa and WebObjects developers group</a>) quarterly meet-up. I volunteered during a lunch with the group&#8217;s co-founders David (@<a href="http://www.twitter.com/rebeld">rebeld</a>) and Karl (@<a href="http://www.twitter.com/kolpanic">kolpanic</a>) on the last day of WWDC.</p>
<p>I picked Core Location since I had learned some good insight at WWDC and also worked with the framework thoroughly through building my app <a href="http://www.theappboutique.com/NextTTC/">Next TTC</a>.</p>
<p>The presentation went well and was well-received, and I am now posting it here for everyone else to enjoy. I have left my notes in the presentation, but I am not sure how much help that will be. I suggest you view the presentation in Play mode, just so the animations help understand the content a bit better.</p>
<p>Download: <a href="http://www.runmad.com/Core Location.zip">Core Location Keynote presentation</a></p>
<p>Enjoy!</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/" data-text="Core Location presentation at TACOW"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fcore-location-presentation-at-tacow%2F&amp;linkname=Core%20Location%20presentation%20at%20TACOW" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fcore-location-presentation-at-tacow%2F&amp;linkname=Core%20Location%20presentation%20at%20TACOW" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fcore-location-presentation-at-tacow%2F&amp;title=Core%20Location%20presentation%20at%20TACOW" id="wpa2a_28">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/07/core-location-presentation-at-tacow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Next TTC follow-up + TACOW Meet-up tomorrow</title>
		<link>http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/</link>
		<comments>http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 03:39:39 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[#idevblogaday]]></category>
		<category><![CDATA[next ttc]]></category>
		<category><![CDATA[tacow]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=420</guid>
		<description><![CDATA[It&#8217;s been a long day and I think I&#8217;ll *just* make the deadline for my #idevblogaday post. This morning, Toronto Transit Commission (TTC) released the much anticipated bus data for their Next Vehicle Arrival Service (NVAS), which previously only included &#8230; <a href="http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a long day and I think I&#8217;ll *just* make the deadline for my #idevblogaday post. This morning, Toronto Transit Commission (TTC) released the much anticipated bus data for their Next Vehicle Arrival Service (NVAS), which previously only included streetcar arrival time predictions. Read more about the app my previous <a title="Next TTC: Behind the scenes" href="http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/">Next TTC: Behind the Scenes</a>.</p>
<p>In anticipation of the release of the bus data, I had done some updates for my app, including hosting some of the data on my own server for speedier transfer, etc. However, with a jump from 300KB to nearly 4MB of data for the initial config XML file, I have some work ahead of me to improve the app and it&#8217;s handling of the data. Furthermore, some of the bus routes also have a bit of different configurations, in terms of their route format (some routes have a/b/c/etc. directions/destination for the same route), so I have to change the parsing up a bit to properly display this to users on those routes. I also have to change the way I store data and access it on the fly, so lots of work ahead of me this week! I need more time in the day!</p>
<p>But, apart from the slowness of the app (until I finish the update), it&#8217;s been pretty good today. I was able to update to include the new data this morning, which meant I got some good press today.</p>
<p>I was mentioned in <a href="http://news.nationalpost.com/2011/07/11/nextbus-lets-ttc-riders-track-buses-by-gps/">National Post</a>, <a href="http://www.cp24.com/servlet/an/local/CTVNews/20110711/110711_arrival_times/20110711/?hub=CP24Home">CP24</a>, <a href="http://www.citytv.com/toronto/citynews/news/local/article/142320--ttc-launches-nextbus-service-for-bus-riders">CityTV</a>, and finally interviewed for a great article in <a href="http://www.theglobeandmail.com/news/national/toronto/expanding-system-used-on-streetcars-ttc-to-let-riders-know-when-next-bus-is-due/article2093353/">Globe and Mail</a> which was posted tonight (hopefully making it to press for tomorrow&#8217;s paper!). I&#8217;m really happy about these mentioned. As far as I could see from my app&#8217;s ranking (went from ~#30 in Navigation to #2 in that category, and made it into Top 100 overall &#8211; both for the Canadian App Store of course, which is quite different from the US Store, in downloads) sales have been pretty good today, but most exciting is all the awesome feedback I have been getting from users who are ecstatic about finally being able to use the app for their bus commute (and night buses and streetcar, not previously included).</p>
<p>All in all, today&#8217;s made me pretty excited about my app again. You always end up getting a bit tired with a project after staring at the code for a long time, or literally using every aspect of your app possible, or painstakingly tweaking every little pixel of the UI if you&#8217;re me. I have a bunch of ideas on the table that I want to do after fixing what needs to be fixed. And I can honestly say, it&#8217;s made it a bit more interesting now there&#8217;s finally a larger user-base to cater to &#8211; and more copies to be sold.</p>
<p>Finally, if you&#8217;re in Toronto and free tomorrow night, I am presenting at tomorrow&#8217;s <a href="http://tacow.org/">TACOW</a> (Toronto Area Cocoa and WebObjects developers group) meet-up. I&#8217;m doing a presentation on Core Location, how-to-use-it-basics plus some insight/tips and experiences from myself using it. Should be fun! The details for the meet-up is on the website, and we&#8217;ll be heading out to a pub afterwards for some drinks.</p>
<p>&nbsp;</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/" data-text="Next TTC follow-up + TACOW Meet-up tomorrow"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fnext-ttc-follow-up-tacow-meet-up-tomorrow%2F&amp;linkname=Next%20TTC%20follow-up%20%2B%20TACOW%20Meet-up%20tomorrow" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fnext-ttc-follow-up-tacow-meet-up-tomorrow%2F&amp;linkname=Next%20TTC%20follow-up%20%2B%20TACOW%20Meet-up%20tomorrow" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F07%2Fnext-ttc-follow-up-tacow-meet-up-tomorrow%2F&amp;title=Next%20TTC%20follow-up%20%2B%20TACOW%20Meet-up%20tomorrow" id="wpa2a_32">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/07/next-ttc-follow-up-tacow-meet-up-tomorrow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next TTC: Behind the scenes</title>
		<link>http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/</link>
		<comments>http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 20:15:18 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[#idevblogaday]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[next ttc]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=395</guid>
		<description><![CDATA[Last week, I released Next TTC 2.0, a major update to my real-time arrival predictions utility app for Toronto&#8217;s streetcars (buses to be added by Toronto Transit Commission (TTC) soon). Today, I&#8217;d like to discuss how I went about dealing &#8230; <a href="http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_promo_blog_post.png"><img class="size-full wp-image-403 alignright" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_promo_blog_post.png" alt="" width="250" height="367" /></a></p>
<p>Last week, I released <a href="http://itunes.apple.com/app/next-ttc/id416325094?mt=8">Next TTC 2.0</a>, a major update to my real-time arrival predictions utility app for Toronto&#8217;s streetcars (buses to be added by Toronto Transit Commission (TTC) soon).</p>
<p>Today, I&#8217;d like to discuss how I went about dealing with the data that is provided through the API and which UI/UX choices I made based on the data and how it would be used.</p>
<h2>Bit of background</h2>
<p>Data is provided for Toronto&#8217;s public streetcar transportation system through the nextbus.com API. Basically vehicles are outfitted with a GPS. Based on their location and proximity to a certain stop, the API provides arrival time predictions. So for example, if a streetcar is 1.2 km away from a XYZ stop, based on the average speed and time it takes from the streetcar to arrive at XYZ it will tell you that the streetcar is arriving in 4 minutes and 43 seconds. This can however change if the streetcar is backed up in traffic or suddenly able to travel at faster speeds, or make less stops en route to stop XYZ.</p>
<h2>The data</h2>
<p>TTC provides up to 5 arrival time predictions for the requested stop and/or route.</p>
<p>By requesting data for a stop only, you&#8217;re provided with all routes and their arrival times for that particular stop. Depending on the stop, this may be one or several routes at once. You&#8217;re also able to request stop and a specific route, which means the API just returns arrival time predictions for that route.</p>
<p>Furthermore, for TTC, some streetcars make short-turns. For example, route 501 westbound has two end destinations. The streetcars are on the same track for most of the way, but every few streetcars will stop at an earlier station. This means the API also returns predictions for each route-short-turn.</p>
<p>The data may appear as such:</p>
<ul>
<li>Route 0
<ul>
<li>Destination 0
<ul>
<li>Prediction 0</li>
<li>Prediction 1</li>
<li>Prediction 2</li>
<li>Prediction 3</li>
<li>Prediction 4</li>
</ul>
</li>
</ul>
</li>
<li>Route 1
<ul>
<li>Destination 0
<ul>
<li>Prediction 0</li>
<li>Prediction 1</li>
<li>Prediction 2</li>
<li>Prediction 3</li>
</ul>
</li>
<li>Destination 1
<ul>
<li>Prediction 0</li>
<li>Prediction 1</li>
</ul>
</li>
</ul>
</li>
<li>Route 2
<ul>
<li>Destination 0</li>
</ul>
</li>
</ul>
<p>In the above example we have requested data for a stop. This stop is serviced by 3 streetcar routes. Route 0 is currently in service and we are returned 5 arrival time predictions. Route 1 is also in service and has two destinations (or short-turns) for which we are returned results for both. Route 2 is currently not in service (some streetcar routes only run during rush hour) and we are not returned any arrival time predictions.</p>
<p>So as you can see, we are potentially dealing with a great deal of data.</p>
<h2>Scope</h2>
<p>Version 1 of the API provided less amount of data and details, so in Next TTC 2.0 I wanted to upgrade as well, while still retaining the basic user experience of the app.</p>
<p>The basic scope of the app is to launch the app and instantly get arrival time predictions for the stop nearest your current location. In essence this is pretty easy with Core Location. Once you have a user&#8217;s location, loop through all stops to find the nearest stop and request the data for that stop.</p>
<p>But how do you retain a simple user experience as required by the scope when you&#8217;re dealing with potentially lots of varied data?</p>
<h2>UI/UX decisions</h2>
<p>In Next TTC 1.x, if a stop had more than one route, I prompted the user to select the desired route &#8211; or telling them Route X and Route Y service this stop but only Route Y is currently running. While it was the only app allowing the user to view other routes at the same stop it was intrusive and quite annoying.</p>
<div id="attachment_398" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_1.x_prompt.jpg"><img class="size-full wp-image-398" title="Next_TTC_1.x_prompt" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_1.x_prompt.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Alert prompt in Next TTC 1.x to select route for stop at user&#39;s current location</p></div>
<p>With version 2 of the API returning multiple destinations (short-turns) for one route there was more data to present.</p>
<p>My goal was to present all the data possible without any interruptions, while also making it extremely easy and quick to change between the desired data. So in 2.x I added the trust navigation bar (I also went from not having the status bar visible, to making it visible, so the user could see the current time), which allowed me to added a UISegmentedControl to quickly switch between routes for the stop at the user&#8217;s current location.</p>
<div id="attachment_400" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_NavigationBar.jpg"><img class="size-full wp-image-400" title="Next_TTC_2.0_NavigationBar" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_NavigationBar.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Next TTC 2.0 provides as easy way to switch between routes servicing the same stop in the navigation bar as well as switching between a route&#39;s short-turns</p></div>
<p>With a checkmark, I also visualize whether a route is running. While the returned data is a bit scrambled, I chose to sort the segments in an ascending order. Furthermore, the selection defaults to the first route in the segmented control that is in service, so the user isn&#8217;t initially presented with an empty result for a route they most likely wouldn&#8217;t care about, since they want to know when the next vehicle is arriving at their current location.</p>
<p>In the screenshot, you can also see another row of segments: All, Long Brand and Humber. These are the short-turns. As we saw earlier, the API would have returned two destination. I then present these two selections above the route button along with a combined set of predictions for both the short-turns sorted in an ascending order. In this case, 501 Queen is a long route, going from east of Toronto to west of Toronto. Both destination short-turns are quite far out of downtown, so if you&#8217;re going to a stop way before that, you wouldn&#8217;t care which one of the upcoming streetcars you can take, because you know you&#8217;re getting off before that. At the same time, if you&#8217;re going to Long Branch station, selecting Long Branch will provide you with upcoming arrival time predictions for that location, which could save you lots of time waiting or getting on the wrong streetcar (Long Branch is further than Humber. Unfortunately the API doesn&#8217;t sort the destination short-turns in order of proximity, so it&#8217;s not possible to present them in a sorted order at this time).</p>
<div id="attachment_405" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_Lotsofroutes.jpg"><img class="size-full wp-image-405" title="Next_TTC_2.0_Lotsofroutes" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_Lotsofroutes.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Example of a stop serviced by up to 5 different streetcar routes</p></div>
<p>While it&#8217;s recommended in the API documentation not to show seconds, I felt it was appropriate to show it because &#8220;1 minute&#8221; may be 1 minute and 20 seconds or less than a minute. If you&#8217;re running to catch a streetcar, 30 seconds precision matters a lot. Luckily, lots of users love this feature over other apps that provide the same basic use-case. I only show it for the upcoming streetcar, while the subsequent cars are displayed in minutes. The app auto-updates the predictions based on calculations for the count down time, so the user is always shown the most accurate prediction at any given time. It feels kind of awesome standing at a stop looking up from your iPhone running Next TTC and seeing the streetcar arrive exactly as predicted in the app :)</p>
<h2>Core Location</h2>
<p>Anyone who&#8217;s ever had to work with Core Location probably agrees with me when I say it&#8217;s a bitch. While the API is great, it was a challenge to find a balance between very accurate location results and also being able to locate the user when location accuracy is very low (no GPS for example). With Next TTC, I wanted to be able to locate the user quite precisely and quite quickly to find the nearest stop, and not find a stop 500 meters away or more.</p>
<p>All devices cache the user&#8217;s location and when initially prompting for a user&#8217;s location that&#8217;s exactly what you get back. It might be an extremely accurate location, but it may also be very old and inaccurate. If you&#8217;ve ever opened the Maps app, and seen the blue dot move over a large area before locating you, or having the circle around it cover a very large area, this is exactly what I am talking about.</p>
<p>So in dealing with this challenge, I initially did a whole bunch of stuff in code to try and figure out whether the location was usable, whether to continue trying to find a new, better location, etc. It turned out quite difficult so in Next TTC 2.0 I went back to the basics, but made it possible for the user to quickly re-locate themselves and request new arrival time predictions for their updated location. In Next TTC 1.x I had a GPS arrow button, but it turns out, even though Apple uses this, most users don&#8217;t understand the icon. Since I had worked so much on getting a good location initially (which sometimes took several seconds; way too long) I didn&#8217;t really make it possible to re-locate oneself, other than picking another stop manually and then hitting the GPS arrow button again. Poor UX, Rune!</p>
<div id="attachment_409" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_1.x_main.jpg"><img class="size-full wp-image-409" title="Next_TTC_1.x_main" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_1.x_main.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Main screen in Next TTC 1.x using user&#39;s current location (GPS arrow)</p></div>
<p>So as dicussed, in Next TTC 2.0 I got rid of lots of code for my Core Location class, and implemented a much easier way to get an updated (and more accurate location if available) if the initial location wasn&#8217;t satisfactory. I implemented the pull-to-refresh paradigm, which works wonderfully for my app.</p>
<div id="attachment_410" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_pull-to-re-locate.jpg"><img class="size-full wp-image-410" title="Next_TTC_2.0_pull-to-re-locate" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_pull-to-re-locate.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Example of my custom &quot;pull-to-re-locate&quot; implementation of Pull-to-refresh seen in lots of apps</p></div>
<h2>Clutter or not?</h2>
<p>When dragging the bottom view down, it reveals a button to add a stop to favourites. When this button is hidden, I added a small light that allows the user to quickly see whether it&#8217;s a favourite (light is on) or not (no light), without having added yet another button that takes up a bunch of screen real estate and doesn&#8217;t get used 90% of the time if that much!</p>
<div id="attachment_411" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_favourite.jpg"><img class="size-full wp-image-411" title="Next_TTC_2.0_favourite" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_favourite.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">Extra hidden menu bar reveals &quot;Add favourite&quot; button</p></div>
<p>The great thing about this extra menu bar is that I can add features/buttons in the future without cluttering up the UI more, leaving the user to focus on the most important thing to them: &#8220;When&#8217;s the next streetcar arriving at this stop?&#8221;</p>
<p>I did add a button in the centre of the toolbar, to open/close the hidden menu. Based on beta tester feedback, it wasn&#8217;t obvious enough that dragging/pulling down on the picker view would reveal the extra menu bar.</p>
<p>Next TTC 2.0 has the same grey noise background as Next TTC 1.x as well as light letters. When I released the app back in February it was winter and the sun wasn&#8217;t shining very much. As the months passed and spring arrived, I started receiving feedback from users that the UI was too dark and very hard to discern in bright sunlight. Sure enough, I tested it and the only thing I saw on my iPhone screen was my own face reflected on the glass screen.</p>
<p>Based on this feedback, I added a &#8220;Dark on Light UI&#8221; setting in the app, which changes the background to a noisy off-white with dark text, making it much easier to read in direct summer sunlight.</p>
<div id="attachment_413" class="wp-caption aligncenter" style="width: 344px"><a href="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_summer_setting.jpg"><img class="size-full wp-image-413" title="Next_TTC_2.0_summer_setting" src="http://runmad.com/blog/wp-content/uploads/2011/06/Next_TTC_2.0_summer_setting.jpg" alt="" width="334" height="480" /></a><p class="wp-caption-text">While not as pretty as the default setting, the &quot;Dark on Light UI&quot; setting makes it possible for Next TTC users to easily read the content on the screen in bright sunlight</p></div>
<h2>Wrapping up</h2>
<p>I hope you&#8217;ve enjoyed a bit of insight into the choices that went into the user experience and design of Next TTC 2.0. Here&#8217;s a few points to wrap up what I think you should take away from it:</p>
<ul>
<li>While you may have a UI in mind early on, UI and UX design is closely related to the data you need to present. While considering your UI, really dig through your data and decide early on what&#8217;s important and what parts of the data you want to present to the user, or what takes precedence.</li>
<li>Create a scope early on. This will help you on your path to completing the app and provide clear guidelines for designing and coding your app, since you&#8217;ll have the data and the user in mind.</li>
<li>Revise, revise, revise. Don&#8217;t settle on a particular design just because it looks great. If it doesn&#8217;t work well in terms of usability or if it doesn&#8217;t allow you to present the data or the user to interact with the data in an appropriate manner, scrap it and figure out a better way of making this possible.</li>
<li>Don&#8217;t be afraid to make big changes. Next TTC 2.0 was a huge update for me. I completely rewrote the core of the app and redesigned 80% of the app. I consider it a brand new app (which also made it painful in deciding it&#8217;s a free update to the thousands of current users who&#8217;d this awesome update for free, only having paid a dollar for the previous version).</li>
<li>Listen to tester and user feedback and make appropriate changes to your app. Something might appear important to you, or easy to use from a UX point of view, but if several users tell you it&#8217;s not, listen to them.</li>
</ul>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/" data-text="Next TTC: Behind the scenes"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fnext-ttc-behind-the-scenes%2F&amp;linkname=Next%20TTC%3A%20Behind%20the%20scenes" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fnext-ttc-behind-the-scenes%2F&amp;linkname=Next%20TTC%3A%20Behind%20the%20scenes" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fnext-ttc-behind-the-scenes%2F&amp;title=Next%20TTC%3A%20Behind%20the%20scenes" id="wpa2a_36">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/06/next-ttc-behind-the-scenes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WWDC in Pictures</title>
		<link>http://runmad.com/blog/2011/06/wwdc-in-pictures/</link>
		<comments>http://runmad.com/blog/2011/06/wwdc-in-pictures/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 00:06:25 +0000</pubDate>
		<dc:creator>Rune Madsen</dc:creator>
				<category><![CDATA[#idevblogaday]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://runmad.com/blog/?p=364</guid>
		<description><![CDATA[What a week. Yesterday I returned from a fantastic week in San Francisco attending WWDC and related parties and events. I met some incredibly talented, incredibly interesting and incredibly fun people throughout the week from all over the world. While &#8230; <a href="http://runmad.com/blog/2011/06/wwdc-in-pictures/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>What a week. Yesterday I returned from a fantastic week in San Francisco attending WWDC and related parties and events. I met some incredibly talented, incredibly interesting and incredibly fun people throughout the week from all over the world. While it&#8217;s stressful and tiring, I wish I had more time to meet even more awesome people. Thanks to everyone who were part of making my second WWDC attendance a blast!</p>
<p>Days have been packed full of amazing and interesting sessions and evenings running to dinner, parties and bar hopping. For this reason, I haven&#8217;t managed to prepare anything great for this week&#8217;s #idevblogaday post. But I took some pictures throughout the WWDC week, so I thought it would be fun to make a small &#8220;WWDC in Pictures&#8221; post. The photos are all taken with my phone, so don&#8217;t expect amazing shots. But I&#8217;ve tried to include various shots of things you don&#8217;t necessarily see in the press for example.</p>
<p>Enjoy.</p>
<p style="text-align: center;">
<div id="attachment_368" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-368 " title="IMG_1677" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_1677.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Sunday registration</p></div>
<div id="attachment_381" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-381 " title="IMG_0026" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0026.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Snack tables were always a big hit. Probably the only thing at WWDC without line-ups, surprisingly!</p></div>
<div id="attachment_384" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-384 " title="IMG_0010" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0010.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Typical line-ups for a session. And I was in the front of the line. In the background is another line-up coming towards us.</p></div>
<div id="attachment_382" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-382 " title="IMG_0022" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0022.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">View going up an escalator of one of the many WWDC banners </p></div>
<div id="attachment_379" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-379 " title="IMG_0042" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0042.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Always busy and buzzing in the lobby of Moscone</p></div>
<div id="attachment_380" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-380 " title="IMG_0034" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0034.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Line-up for one of the more popular sessions in Presidio</p></div>
<div id="attachment_366" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-366 " title="IMG_1683" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_1683.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Waiting for a session to begin</p></div>
<div id="attachment_385" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-385 " title="IMG_0002" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0002.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Drinks at The Chieftain. Loren Brichter is in this shot.</p></div>
<div id="attachment_377" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-377 " title="IMG_0051" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0051.jpg" alt="" width="500" height="669" /><p class="wp-caption-text">T-shirts were a big thing this year. Here&#39;s an awesome one I got from Mike Piontek (@robotspacer)</p></div>
<div id="attachment_367" class="wp-caption aligncenter" style="width: 607px"><img class="size-full wp-image-367 " title="IMG_1679" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_1679.jpg" alt="" width="597" height="800" /><p class="wp-caption-text">TestFlightApp.com&#39;s t-shirt. If you wore one in the Keynote line-up you got free breakfast. Awesome marketing.</p></div>
<div id="attachment_378" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-378 " title="IMG_0050" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0050.jpg" alt="" width="500" height="669" /><p class="wp-caption-text">Great line on the WWDC Bash wristband</p></div>
<div id="attachment_376" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-376 " title="IMG_0057" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0057.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Random WWDC Bash photo. Lots of food and drinks!</p></div>
<div id="attachment_375" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-375 " title="IMG_0063" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0063.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">As Michael Franti &amp; The Spearhead entered the stage everyone was like &quot;Who?&quot;. I personally hadn&#39;t heard of them but enjoyed the music way more than OK GO. Rock just doesn&#39;t do well live if you don&#39;t know the songs.</p></div>
<div id="attachment_374" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-374 " title="IMG_0070" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0070.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">I love this guy. Seriously. He&#39;s my hero.</p></div>
<div id="attachment_373" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-373  " title="IMG_0074" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0074.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Beach balls!!!</p></div>
<div id="attachment_371" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-371 " title="IMG_0080" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0080.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Everybody enjoying the Bash</p></div>
<div id="attachment_372" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-372 " title="IMG_0078" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0078.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Line-up for the men&#39;s wash room. Worse line of the week - I had had four beers at that point. They even started letting guys into the women&#39;s wash room.</p></div>
<div id="attachment_383" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-383 " title="IMG_0020" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0020.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Waiting for Wednesday&#39;s lunch presentation to start.</p></div>
<div id="attachment_370" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-370 " title="IMG_0090" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0090.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Buzz Aldrin&#39;s presentation was followed by a Q&amp;A. Notice the patriotic lighting.</p></div>
<div id="attachment_365" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-365" title="IMG_8002" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_8002.jpg" alt="" width="500" height="373" /><p class="wp-caption-text">Stump the Expert is always a blast.</p></div>
<div id="attachment_369" class="wp-caption aligncenter" style="width: 607px"><img class="size-full wp-image-369" title="IMG_0106" src="http://runmad.com/blog/wp-content/uploads/2011/06/IMG_0106.jpg" alt="" width="597" height="800" /><p class="wp-caption-text">My last WWDC beer Friday evening at Jillian&#39;s watching Canucks beats Bruins with my new German friends from iosphere GmbH. What a week.</p></div>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://runmad.com/blog/2011/06/wwdc-in-pictures/" data-text="WWDC in Pictures"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://runmad.com/blog/2011/06/wwdc-in-pictures/"></a><a class="a2a_button_instapaper" href="http://www.addtoany.com/add_to/instapaper?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fwwdc-in-pictures%2F&amp;linkname=WWDC%20in%20Pictures" title="Instapaper" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/instapaper.png" width="16" height="16" alt="Instapaper"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fwwdc-in-pictures%2F&amp;linkname=WWDC%20in%20Pictures" title="Email" rel="nofollow" target="_blank"><img src="http://runmad.com/blog/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frunmad.com%2Fblog%2F2011%2F06%2Fwwdc-in-pictures%2F&amp;title=WWDC%20in%20Pictures" id="wpa2a_40">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://runmad.com/blog/2011/06/wwdc-in-pictures/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
