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

<channel>
	<title>Aral Balkan &#187; Apple</title>
	<atom:link href="http://aralbalkan.com/category/apple/feed" rel="self" type="application/rss+xml" />
	<link>http://aralbalkan.com</link>
	<description>Passionate geekisms.</description>
	<lastBuildDate>Wed, 01 Feb 2012 18:53:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
		<item>
		<title>Introducing Update 2011: if you&#8217;re into mobile, you should be in Brighton this September</title>
		<link>http://aralbalkan.com/3864</link>
		<comments>http://aralbalkan.com/3864#comments</comments>
		<pubDate>Fri, 24 Jun 2011 12:08:56 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3864</guid>
		<description><![CDATA[Well it took me three years to recover from organizing the world's first fully-virtual web conference, &#60;head&#62; with over 70 amazing speakers, in-world conference hubs in the UK, US, Switzerland, Belgium, and Second Life, and several thousand attendees. And by recover, I mean to forget what a huge undertaking it is to organize a conference. [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><img src="http://updateconf.com/images/update-logo.png" style="float:right; margin-left:1em; margin-bottom:0.5em;" class="transparent">Well it took me three years to recover from organizing <a href="http://headconference.com">the world's first fully-virtual web conference, &lt;head&gt;</a> with over 70 amazing speakers, in-world conference hubs in the UK, US, Switzerland, Belgium, and Second Life,  and several thousand attendees. And by recover, I mean to forget what a huge undertaking it is to organize a conference. </p>
<p>But the time is perfect for a mobile conference in Brighton, and so I give you the <a href="http://updateconf.com">Update conference: the human touch – iOS and beyond</a>.</p>
<p><span id="more-3864"></span></p>
<p>We have a stellar line-up of speakers from the worlds of iOS, web, and user experience gathering in Brighton at the beautiful <a href="http://updateconf.com/venues/dome">Brighton Dome</a> on September 5th, 2011, to present on and debate the hottest topics in mobile today (UX, platforms, and technologies). The talks range from <a href="http://updateconf.com/speakers/sarah">iOS design</a>, <a href="http://updateconf.com/speakers/cennydd">User Experience</a> to <a href="http://updateconf.com/speakers/jeremy">mobile web</a>, <a href="http://updateconf.com/speakers/relly">microcopy for mobile</a>, <a href="http://updateconf.com/speakers/anna">education</a>, and even a hands-on session where you'll be <a href="http://updateconf.com/speakers/seb">playing with physics engines and particles</a>. </p>
<p>Also, following on the success of the <a href="http://geekninjafactory.com/geek-ninja-battle-night-mobile-web-vs-native">Geek Ninja Battle Night</a> earlier this year, we're going to have geek battles where representatives of different platforms (iOS, web, Android, Windows Phone 7, Blackberry, WebOS, etc.) and different development technologies (native, web, and cross-platform non-web solutions like Titanium, Corona, and Mono) have it out in geek battles.</p>
<p>These sessions will be punctuated by brief "tech beats" where the greats of iOS and web – including Jeff LaMarche, Marcus Zarra, Matt Gemmell, and Remy Sharp – will present their top tech tips.</p>
<p>Finally, the conference will end with an inspirational closing keynote from <a href="http://updateconf.com/speakers/brendan">the multi-talented Mr. Brendan Dawes</a> – who will remind us of things we've never seen. I can't wait!</p>
<p>Following the conference, on the 6th and 7th of September, we are holding in-depth, hands-on workshops on topics including <a href="http://updateconf.com/workshops/html5">HTML5 for mobile</a>, <a href="http://updateconf.com/workshops/ios-design">iOS Design</a>, <a href="http://updateconf.com/workshops/core-data">Core Data</a>, <a href="http://updateconf.com/workshops/core-animation">Core Animation</a>, and <a href="http://updateconf.com/workshops/opengl-es">OpenGL ES</a> (with more to be announced soon, including a workshop on Appcelerator Titanium).</p>
<p><a href="http://updateconf.com/special-guest/in-the-beginning">We also have a very special guest: one of the three founders of Apple</a> (yes, there were three) – Ronald Wayne. In fact, we ran a contest last week and 5 lucky winners got free tickets to the conference by guessing our mystery guest. </p>
<p>In case you missed it, don't worry, for <strong>today, Friday, 24th June only</strong>, you can <a href="http://update2011.eventbrite.com/?discount=WINNING">use the code <strong>WINNING</strong> to get 10% off the early-bird ticket price on any ticket</a>. </p>
<p><a href="http://updateconf.com">Check out the Update 2011 web site</a> (especially on an iPad or iPhone-tier device as it was designed iPad-first) and <a href="http://update2011.eventbrite.com/?discount=WINNING">book your tickets today to get an additional 10% off the early-bird price!</a></p>
<p>See you in Brighton in September!</p>
<p>(Update is proud to be part of the <a href="http://brightondigitalfestival.co.uk">Brighton Digital Festival</a> and I'm very happy to be on the steering committee for the festival. September is going to be a great month to be a geek in Brighton!) :) </p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3864/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>How to add pinch-to-zoom to a text view on iOS</title>
		<link>http://aralbalkan.com/3831</link>
		<comments>http://aralbalkan.com/3831#comments</comments>
		<pubDate>Wed, 11 May 2011 10:51:30 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[cocoa touch]]></category>
		<category><![CDATA[font size]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[pinch-to-zoom]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[text size]]></category>
		<category><![CDATA[uitextview]]></category>
		<category><![CDATA[visual impairments]]></category>
		<category><![CDATA[zoom]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3831</guid>
		<description><![CDATA[I'm up to my neck in work trying to get the site for Update Conference up and running but I saw a tweet in my stream from Mark Ford that I couldn't ignore. Mark had written a blog post about how his wife finds it difficult to use some iOS apps because they do not [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />I'm up to my neck in work trying to get the site for <a href="http://updateconf.com">Update Conference</a> up and running but I saw <a href="https://twitter.com/fordie/status/68228350283485185">a tweet in my stream from Mark Ford</a> that I couldn't ignore.</p>
<p>Mark had written <a href="http://fordie.co.uk/2011/05/10/iphone-app-developers-lend-me-your-ears/">a blog post</a> about how his wife finds it difficult to use some iOS apps because they do not implement a means to increase text size:<span id="more-3831"></span></p>
<blockquote><p>I have a particular bee in my bonnet when it comes to accessibility, my wife is registered blind and I am constantly frustrated when she is unable see things (like text on a screen) especially when I know that this is avoidable… What I don’t understand is why there is no way to change font size system wide, or why app developers don’t provide that facility. Yes I know that you can switch on zooming, but honestly – have you tried using zooming on a phone?</p></blockquote>
<p>So I dutifully retweeted Mark's tweet – as you do – and went on battling with cross-browser issues for the site (you really get to appreciate how wonderful an experience it is to develop for a single platform when you go back to battling with cross-platform development). I also told Mark that in <a href="http://feathersapp.com">Feathers</a>, you can pinch-to-zoom the tweet text in the main text view. (Goodness knows, having as custom UI as it has, Feathers has a long way to go in terms of accessibility itself.) Mark responded with: "ha! so text scaling is doable. Thanks @aral! care to explain how so others can follow suite?"</p>
<p>OK, Mark (and other iOS devs), here goes: it's actually <em>really</em> easy. </p>
<p>You simply create a pinch gesture recognizer and attach it to a text view. Then you adjust the font size (and hopefully persist it for next time so the user doesn't have to keep doing it every time she uses your app).</p>
<p>It's about as much code as it is to explain in English, so here's a snippet from Feathers:</p>
<div id="gist-966260" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>// Create a pinch gesture recognizer instance.</div><div class='line' id='LC2'>self.pinchGestureRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)] autorelease];</div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>// And add it to your text view.</div><div class='line' id='LC5'>[self.myTextView addGestureRecognizer:self.pinchGestureRecognizer];</div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'>// ... </div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>- (void)pinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer</div><div class='line' id='LC10'>{</div><div class='line' id='LC11'>	NSLog(@&quot;*** Pinch: Scale: %f Velocity: %f&quot;, gestureRecognizer.scale, gestureRecognizer.velocity);</div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>	UIFont *font = self.myTextView.font;</div><div class='line' id='LC14'>	CGFloat pointSize = font.pointSize;</div><div class='line' id='LC15'>	NSString *fontName = font.fontName;</div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'>	pointSize = ((gestureRecognizer.velocity &gt; 0) ? 1 : -1) * 1 + pointSize;</div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'>	if (pointSize &lt; 13) pointSize = 13;</div><div class='line' id='LC20'>	if (pointSize &gt; 42) pointSize = 42; </div><div class='line' id='LC21'><br/></div><div class='line' id='LC22'>	self.myTextView.font = [UIFont fontWithName:fontName size:pointSize];</div><div class='line' id='LC23'><br/></div><div class='line' id='LC24'>	// Save the new font size in the user defaults.</div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (UserDefaults is my own wrapper around NSUserDefaults.)</div><div class='line' id='LC26'>	[[UserDefaults sharedUserDefaults] setFontSize:pointSize];</div><div class='line' id='LC27'>}</div><div class='line' id='LC28'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/966260/9a269e51e75a0ab5efc06de918d44722018f693a/TextViewPinchToZoom" style="float:right;">view raw</a>
            <a href="https://gist.github.com/966260#file_text_view_pinch_to_zoom" style="float:right;margin-right:10px;color:#666">TextViewPinchToZoom</a>
            <a href="https://gist.github.com/966260">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>I hope this helps and I hope seeing how simple it is to implement will mean that more developers will implement this in their apps. Thanks for bringing it to my attention, Mark. </p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3831/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Where have you been? Your iPhone knows.</title>
		<link>http://aralbalkan.com/3823</link>
		<comments>http://aralbalkan.com/3823#comments</comments>
		<pubDate>Thu, 21 Apr 2011 10:37:04 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad 3g]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[recoding]]></category>
		<category><![CDATA[secret]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3823</guid>
		<description><![CDATA[Twitter has been ablaze recently with revelations that iPhones and iPad 3Gs are secretly recording your every move, and have been doing so for about a year now. According to Alasdair Allan and Pete Warden, the duo who made the discovery, the information is stored in a file that is backed up to your computer [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><img src="http://dl.dropbox.com/u/5269427/blog-posts/ios4location/locations.jpg" width="500" height="305" alt="Where I've been since OS4.0, as recorded by my iPhone (detail)."/></p>
<p>Twitter has been ablaze recently with revelations that <a href="http://radar.oreilly.com/2011/04/apple-location-tracking.html">iPhones and iPad 3Gs are secretly recording your every move</a>, and have been doing so for about a year now.</p>
<p><span id="more-3823"></span></p>
<p>According to Alasdair Allan and Pete Warden, the duo who made the discovery, the information is stored in a file that is backed up to your computer and survives handset upgrades: </p>
<blockquote><p>What makes this issue worse is that the file is unencrypted and unprotected, and it's on any machine you've synched with your iOS device. It can also be easily accessed on the device itself if it falls into the wrong hands. Anybody with access to this file knows where you've been over the last year, since iOS 4 was released.</p></blockquote>
<p>The duo also have <a href="http://petewarden.github.com/iPhoneTracker/">an open source Mac app call iPhone Tracker</a> that you can use to visualize your own location data. The screenshot at the top of this post is a portion of mine from this past year, limited to the area around the UK (the actual data ranges to the US and various Scandinavian countries).</p>
<p>According to Alasdair and Pete, there is no reason to believe that the data is being communicated to Apple. Still, though, the fact that Apple did not disclose that it was recording this information doesn't sit right with me even if it feels more like an oversight than a malicious act. I hope they will issue a statement on the matter to clear things up.</p>
<p>All that said, a lot of us do disclose our locations via services like Foursquare, Gowalla, and – for the masses – Facebook checkins. The difference, of course, is that you are aware of the fact and engage in it willingly. </p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3823/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>iPad 2: Fit For Real Work?</title>
		<link>http://aralbalkan.com/3808</link>
		<comments>http://aralbalkan.com/3808#comments</comments>
		<pubDate>Sat, 02 Apr 2011 11:28:44 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3808</guid>
		<description><![CDATA[Following my talks at the LOGIN, The Big M, NSConference, and Tweakers.net Developer Summit last month, .net magazine asked if I'd like to be the subject of their Reader Q&#038;A section in their next issue and answer questions sent in via Twitter on life, UX, mobile, and everything. I informed them that yes, I'd be [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<p>Following my talks at the <a href="http://login.lt/">LOGIN</a>, <a href="http://thebigm.mobi/">The Big M</a>, <a href="http://ideveloper.tv/schedule/details?event_id=3">NSConference</a>, and <a href="http://summit.tweakers.net/">Tweakers.net Developer Summit</a> last month, .net magazine asked if I'd like to be the subject of their Reader Q&A section in their next issue and answer questions sent in via Twitter on life, UX, mobile, and everything. I informed them that yes, I'd be delighted to, and this whole adventure eventually resulted in a lovely email from Tanya at .net magazine with the questions that were tweeted in. </p>
<p>(Welcome if you're reading this from the link in the .net article, by the way. I hope you enjoyed it.)</p>
<p><span id="more-3808"></span></p>
<p>Fast forward to this morning when I decided to write my replies using only my new iPad 2 to see how it holds up to some — albeit lightweight — real-world use. As I do, I will be writing this post, also on my iPad, using the free WordPress app.</p>
<h2>The first hurdle (or "even the best web apps still have an uphill struggle when it comes to competing with native user experiences")</h2>
<p>The first thing I had to do was to locate Tanya's email and copy the questions from it to Pages. After this, I would pick the questions I wanted to answer, delete the others, and start entering my answers after each of the questions. An easy enough task. Or so you would think.</p>
<p>The first problem was the Mail app on iPad when used with a GMail account via IMAP: it is horrible at searching for existing messages that it hasn't downloaded (ones on the server). So I had to do what I usually have to do, which is to fire up the GMail site in Mobile Safari. This let me find the message but — get this — I couldn't select the whole thing. There was just no way I could make the message scroll while selecting. A basic usability failure if ever there was one. I finally had to resort to using <a href="http://sendtodropbox.com/">Send To Dropbox</a> to forward the email to Dropbox where, using the Dropbox iPad app, I could select the contents to paste into Pages.</p>
<h2>Pages for iPad</h2>
<p>For the most part, Pages for iPad worked like a charm. My only complaint is that the word count feature is so well hidden that I actually thought it didn't have one (and cooked up a quick app to scratch my own itch before finding it). </p>
<h2>How's that for radical contextualization? WordPress app issues.</h2>
<p>Writing this post in the WordPress app wasn't entirely hassle-free either.</p>
<p>The first gotcha was a usability issue. When I started a new post, after entering the title, I tapped into the post body section and the header information entirely disappeared off the top of the screen. I would not have had a problem with that interaction — and, in fact, would have quite enjoyed the additional writing space it provided — if it had provided me with a cue — a landmark — to denote where the information went and a means by which I could get it back. Without either of those, I was left wondering whether it was a bug and I had lost the information altogether. It made me tap off of the text view to see if something had gone wrong. When the text view lost focus, the header information returned, and I was reassured that I hadn't lost it.</p>
<p>Another usability issue was more concerning: I wasn't sure, as I started typing my post, whether it was being auto-saved. This led me to feeling insecure and I started searching for a way to save. As I stumbled through the interface, I found the options screen where I set the status of the post to Draft and hit the save button. A quick test confirmed that the WordPress app doesn't auto-save as you're typing so I keep hitting the Update button every so often, which removes the editor and  thereby interrupts my writing flow.</p>
<p>I would implement quite a rigorous auto-save since there's nothing worse than losing data (and it's an operating system expectation on iOS). </p>
<h2>Adding images to my blog post</h2>
<p>One other usability issue I had was with adding images to my post. The buttons for adding images are at the bottom of the compose window and are covered by the keyboard when you are typing. For one thing, this led me initially to question if the functionality existed at all since I hadn't noticed them prior to clicking in the text box to edit my post. Then, it meant that I had to once more interrupt my writing flow to add images by first manually making the keyboard lose focus, then adding the image, then tapping in the text box to return to editing the text.</p>
<p>Once I realised where to find and how to use the buttons, I was unimpressed by the functionality. It adds some horrible code either above or below your content (instead of where you are in the document). </p>
<p><img src="http://aralbalkan.com/wp-content/uploads/2011/04/20110406-084819.jpg" id="blogsy-1303259751534.865" class="alignnone size-full" alt="20110406-084819.jpg" width="500" height="366"></p>
<p>I would redesign the interface so that the toolbar buttons were in a keyboard extension and so the writing area filled up the entire remaining space above the keyboard in both orientations. </p>
<p>Also, while taking screenshots on my iPad was simple enough (if a bit unergonomic due to the distance between the two buttons that have to be pressed in tandem), I found the simple task of annotating and cropping them to be a big issue. To cut a long story of several fruitless app purchases short, I ended up using the free <a href="http://www.zagg.com/j/photopad.php">PhotoPad</a> app which was one of the few I could find that actually showed me the exact image dimensions I was cropping to. </p>
<h2>A general UX gripe with the iPad: Undo</h2>
<p>Shake to undo works like a charm on the iPhone. This is a tiny device that fits into the palm of one hand. Shaking it involves almost no effort at all and is an ergonomically-sound gesture. Not so with the iPad. </p>
<p>The iPad is the size of about six iPhone 4 placed side-by-side and thus has very different human factors considerations. Lifting this baby off your lap and shaking it wildly from side to side every time you want to undo a typo will, at best, make you look mentally unstable if carried out in a public space.</p>
<p>Apple must implement a better gesture for this important gesture in future versions of iOS for the iPad. I recommend a three-finger swipe to the left (with a three-finger right swipe as redo). It's currently not mapped to any universal gesture on the OS and is relatively effortless to perform and can be layered in as an alternative gesture while still supporting shake-to-undo to transition iPhone users to the iPad.</p>
<p><em>Since writing this, I've been alerted on Twitter that there is an Undo button on the iPad's symbol/number keyboard but it's not ideal; hidden away like that. I've had an iPad since the beginning and I never noticed it.</em></p>
<h2>Blogsy</h2>
<p>I finally gave up on the WordPress app and I'm typing this in <a href="http://blogsyapp.com/" target="_self" title="">Blogsy</a>. Goodness knows it has its own limitations (for example, the code and "WYSIWYG" views look identical initially, making it impossible to know which mode you're in) but it is still light years ahead of the official WordPress app and has lots of potential (or is at least a step in the right direction).</p>
<h2>A land of opportunity</h2>
<p>So, is the iPad 2 fit for "real work?" Depends. On the app, that is. And what you call work.</p>
<p>On the one hand, you have awesome apps like Garage Band, Pages, Keynote, and Dropbox that you can be really productive with. On the other, there are lots of half-baked apps out there that may have potential but are, quite frankly, rather limited in professional features.</p>
<p>It feels to me like most apps on the iPad have a long way to go before users can be as productive as they are with a Mac. Far from being a negative aspect, this means that there is lots of opportunity here (for app developers who grok UX) to create successful apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3808/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Tweaky: not coming to a Mac App Store near you anytime soon</title>
		<link>http://aralbalkan.com/3739</link>
		<comments>http://aralbalkan.com/3739#comments</comments>
		<pubDate>Mon, 07 Feb 2011 22:12:23 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[app rejection]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[rejection]]></category>
		<category><![CDATA[tweaky]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[twitter for mac]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3739</guid>
		<description><![CDATA[A little over a month ago, I wanted to see what Apple would do if I submitted Tweaky to the Mac App Store. Not surprisingly, after keeping it waiting for review for about a month, Apple rejected it. Tweaky is my little Mac app that lets you enable the so-called "Super Secret preferences" in Twitter [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />A little over a month ago, I wanted to see what Apple would do if I submitted <a href="http://aralbalkan.com/3710">Tweaky</a> to the Mac App Store. Not surprisingly, after keeping it waiting for review for about a month, Apple rejected it.</p>
<p>Tweaky is my little Mac app that lets you enable the so-called "Super Secret preferences" in Twitter for Mac that are otherwise only available to people who purchased Tweetie for Mac via the MacHeist bundle (or who are comfortable with setting preferences manually via Terminal). You can <a href="http://aralbalkan.com/3710">download it via my web site</a> but you won't be seeing it on the Mac App Store anytime soon.</p>
<p><span id="more-3739"></span></p>
<p>The reasons? Twofold. </p>
<p>Firstly, it apparently "provides a limited set of features and functionality to users" and thus does not comply with section 2.8 in the App Store Review Guidelines which states:</p>
<blockquote><p>2.8   Apps that are not very useful or do not provide any lasting entertainment value may be rejected</p></blockquote>
<p>So, basically, Apple thinks that Tweaky is not useful. The 3,000 or so people who downloaded it off my blog based simply on my tweets probably disagree. But that's beside the point. It's Apple's playground and they can choose who they want to allow in. I'm cool with that. As long as there are still other ways of getting software onto your Mac, that is.</p>
<p>The second reason? The application "is creating files in the incorrect directories." This apparently violates section 2.30 of the App Store Review Guidelines, which states:</p>
<blockquote><p>2.30 Apps that do not comply with the Mac OS X File System documentation will be rejected</p></blockquote>
<p>So how was I violating the Mac OS X File System documentation? </p>
<blockquote><p>The application is creating files or writing to <code>&lt;~/Library/…com.twitter.twitter-mac.plist&gt;</code></p></blockquote>
<p>In other words, by changing Twitter for Mac's preferences. Unfortunately, that <em>is</em> what Tweaky does! :)</p>
<p>The funny thing, of course, is that by allowing people full access to Twitter for Mac's features, Tweaky actually makes Twitter for Mac compliant with Apple's App Store policies (Twitter for Mac currently isn't in compliance since it has hidden features that are only available to a subset of users and unlocked via external means.) </p>
<p>Oh well, I never really expected them to approve it but I would have been positively surprised if they had.</p>
<p>Ultimately, though, I do hope that there will never come a time when the <em>only</em> way to install apps on your Mac is via the App Store. If that ever happens – as painful as it may be – I will switch to Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3739/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Installing Mac Application Tools 1.1 with non-standard Xcode installs</title>
		<link>http://aralbalkan.com/3722</link>
		<comments>http://aralbalkan.com/3722#comments</comments>
		<pubDate>Wed, 19 Jan 2011 22:17:42 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools and Utilities]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[application tools]]></category>
		<category><![CDATA[dmg]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[not found]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3722</guid>
		<description><![CDATA[Workaround for a known Application Tools 1.1 installation issue.]]></description>
			<content:encoded><![CDATA[<p id="top" />If you, like me, don't like to install Xcode into the /Developer folder (maybe because you have several versions of it on your computer at one time), you will run into a problem while trying to install Application Tools 1.1 to build apps for the Mac App Store.</p>
<p>Like a number of installers I've encountered, the Application Tools 1.1 installer fails if it cannot find Xcode in the /Developer folder. In my case, I already had a /Developer folder with a few system items in it but Xcode was in a separate folder off the root of my drive called /Xcode3.2.5iOS4.2. </p>
<p><span id="more-3722"></span></p>
<p>To cut a long story short, I merely renamed /Developer to /Developer-temp and the Xcode folder to /Developer, ran the installer, and then named the two folders back again (you'll need to use <code>sudo mv /Developer /Developer-temp</code> and enter your system password).</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3722/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Tweaky: Super Secret Twitter for Mac preferences for everyone</title>
		<link>http://aralbalkan.com/3710</link>
		<comments>http://aralbalkan.com/3710#comments</comments>
		<pubDate>Sun, 09 Jan 2011 05:11:23 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[macheist]]></category>
		<category><![CDATA[nanobundle]]></category>
		<category><![CDATA[super secret]]></category>
		<category><![CDATA[tweaky]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[twitter for mac]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3710</guid>
		<description><![CDATA[Update 12 June, 2011: Version 1.3 released. Fixes the missing @ sign bug on original and /via slashtag quote tweet styles. Download now. It's a little past 5AM and I've been working on this for quite a few hours so apologies in advance if this post sounds slightly groggy. Allow me to introduce you to, [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><a href="http://thelink.is/tweaky"><img src="http://dl.dropbox.com/u/5269427/Tweaky.png" alt="Tweaky: click to download" class="transparent"></a></p>
<p><strong>Update 12 June, 2011:</strong> Version 1.3 released. Fixes the missing @ sign bug on original and /via slashtag quote tweet styles. <a href="http://thelink.is/tweaky">Download now.</a></p>
<p><span id="more-3710"></span></p>
<p>It's a little past 5AM and I've been working on this for quite a few hours so apologies in advance if this post sounds slightly groggy. Allow me to introduce you to, Tweaky for Mac…</p>
<p>Tweaky lets you use the Super Secret preferences in <a href="http://thelink.is/twitterformac">Twitter for Mac</a> which are otherwise only available to people who purchased the earlier version (when it was called Tweetie for Mac) through the MacHeist nanoBundle.</p>
<p>These Super Secret preferences actually include a number of important usability enhancements and should really have been made available in the core app. Tweaky fixes that oversight.</p>
<h2>Download</h2>
<p><a href="http://thelink.is/tweaky">Download Tweaky</a> (version 1.3, for OS X 10.6+, 848KB, .dmg).</p>
<h2>History</h2>
<ul>
<li>Version 1.3: Fixes the missing @ sign bug on original and /via slashtag quote tweet styles. Tested with Twitter for Mac version 2.1.1.</li>
<li>Version 1.2: Supports the show full names and quote tweet style preferences in Twitter for Mac version 2.0.2.</li>
<li>Version 1.1.5: Updated to support the changed link color preference in Twitter for Mac version 2.0.2</li>
<li>Version 1.1: no functionality changes, just fixed a few typos in the Help to make my 5AM self seem slightly more articulate.</li>
</ul>
<h2>The settings</h2>
<ul>
<li><strong>User timeline avatar derepeater</strong>: Only shows a user's avatar once if they have a string of tweets on your timeline. Also means that you only see a user's avatar only once when viewing just their tweets.</li>
<li><strong>Scroll over window will bring to front</strong>: If the Twitter window is partially obscured under other windows and you scroll the Twitter feed, the Twitter window will be brought to the front.</li>
<li><strong>Type anywhere</strong>: when the Twitter app has focus, typing will begin a new tweet.</li>
<li><strong>Hide app in background</strong>: When the app loses focus, it's hidden in the background (instead of potentially being partially obscured by other apps).</li>
<li><strong>Compose windows float over all windows</strong>: the little windows your write your tweets on appear in front of all other windows at all times.</li>
<li><strong>ESC closes compose windows</strong>: does what it says on the tin. :)</li>
<li><strong>Link color</strong>: sets the color that links in tweets are displayed in. Personally, I like the default color but feel free to Bubblegum Pink if that floats your boat. :)</li>
</ul>
<h2>How it works</h2>
<p>It's really not rocket science. The "Super Secret" preferences are just app preferences. You can easily set them using the <em>defaults</em> app in Terminal if you're not Terminal-phobic (e.g., <code>defaults write com.twitter.twitter-mac ESCClosesComposeWindow 1</code>). However, since many people are, and since these preferences really do make the app more usable, I thought it would benefit a lot of non-geeky folks to have an easy-to-use graphical interface.</p>
<p>		That, and after two years of working on iOS apps, I wanted to make a Mac app :)</p>
<p>		(And I'm pretty sure Loren and the other Twitter folk will make the features available to everyone soon enough anyway.)</p>
<h2>More goodies</h2>
<p>		If you liked Tweaky, check out some of the other stuff I'm working on:</p>
<p>		I've got a cute little iPhone app called <a href="http://feathersapp.com">Feathers</a> for decorating your tweets with proper punctuation, symbols, emoticons, and different text styles.</p>
<p>		If you want to learn how to make iPhone and iPad apps, check out the <a href="http://geekninjafactory.com">workshops I'm teaching in the UK with Geek Ninja Factory.</a></p>
<h2>Get in touch!</h2>
<p>If you have any questions or comments, feel free to leave a comment here or to <a href="http://twitter.com/aral">follow me on Twitter</a>.</p>
<p><strong>Hope you enjoy playing with Tweaky!</strong></p>
<h2>Credit</h2>
<p>The cute little bird is from the <a href="http://www.hongkiat.com/blog/freebie-fluzzy-twitter-icon-set/">Fluzzy Twitter Icon Set</a> and the arrow I used in the background image of the disk image is by <a href="http://www.designworkplan.com/signage-symbols/free-vector-arrows.htm">Sander Baumann</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3710/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Introducing Geek Ninja Factory: become an iOS ninja!</title>
		<link>http://aralbalkan.com/3679</link>
		<comments>http://aralbalkan.com/3679#comments</comments>
		<pubDate>Tue, 21 Dec 2010 17:03:19 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Brighton]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[cocoa touch]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[england]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[interface builder]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ios sdk]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[learn]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[uk]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[workshop]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3679</guid>
		<description><![CDATA[I love to teach and I had a blast this year while teaching my 3-Day iOS SDK course for iPhone and iPad at venues around the world. And, based on the feedback, the students had a blast too. So, for 2011, I'm taking the training to a new level: introducing Geek Ninja Factory. Via Geek [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><a href="http://aralbalkan.com/3679"><img src="/images/blog-post.png" width="500" height="200" alt="Geek Ninja Factory"/></a></p>
<p>I love to teach and I had a blast this year while teaching my <a href="http://thelink.is/iossdkdojo">3-Day iOS SDK course for iPhone and iPad</a> at venues around the world. And, based on the feedback, <a href="http://geekninjafactory.com/testimonials">the students had a blast too</a>.</p>
<p><span id="more-3679"></span></p>
<p>So, for 2011, I'm taking the training to a new level: introducing <a href="http://geekninjafactory.com">Geek Ninja Factory</a>. </p>
<p>Via Geek Ninja Factory, I will be teaching two courses in 2011 (and I have some other surprises planned too). These are a new 1-Day course called the <a href="http://thelink.is/iosmojodojo">iOS Mojo Dojo</a> and a 3-Day course titled <a href="http://thelink.is/iossdkdojo">iOS SDK Dojo</a>.</p>
<p>The <a href="http://thelink.is/iosmojodojo">1-Day iOS Mojo Dojo</a> starts out by introducing the iOS platform, including the various devices/generations and lays out the design limits and features of each, tying them in to the various frameworks in the iOS SDK. You get handy design-related tips and tricks before we move on to hands-on examples that compare and contrast the major tools and technologies for developing iOS apps. These include web standards (HTML5, CSS3, JavaScript), web + iOS-specific frameworks (JQTouch), creating native apps using web technologies and PhoneGap, using JavaScript to create native apps with native components (Appcelerator Titanium and NimbleKit), other technologies (Corona, Unity3D, etc.) and a quick glance at native development with the iOS SDK (Objective-C and Cocoa Touch with the Xcode tools).</p>
<p>The aim of the 1-Day course is to introduce you to the iOS platform and give you a wide overview of designing and developing for it so that you can make intelligent design and technology choices when embarking on your next app.</p>
<p>The <a href="http://thelink.is/iossdkdojo">3-Day iOS SDK Dojo</a>, in contrast, aims to give you a solid foundation in developing native iOS applications for iPhone and iPad using the iOS SDK (Objective-C and Cocoa Touch, as well as the Xcode toolset, including Interface Builder and Instruments).  By the end of the course, you will have the knowledge you need to build your first native app. Far more information on the 3-Day course is available on the Geek Ninja Factory web site.</p>
<p>The next courses are in January 2011 and seating is limited to 12 people. </p>
<p>Check them out today and sign up to become an iOS Ninja in 2011 at <a href="http://geekninjafactory.com">Geek Ninja Factory</a>.</p>
<p>PS. As a reader of my blog, here are two special codes for you: use the magic code NINJAWIN to get £100 off the <a href="http://thelink.is/iossdkdojo">3-Day iOS SDK Dojo</a> and the magic code NINJAMOJO to get £25 off the <a href="http://thelink.is/iosmojodojo">1-Day iOS Mojo Dojo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3679/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Fixing &#8220;Base SDK Missing&#8221; error with Xcode 3.2.5 and iOS SDK 4.2</title>
		<link>http://aralbalkan.com/3666</link>
		<comments>http://aralbalkan.com/3666#comments</comments>
		<pubDate>Wed, 24 Nov 2010 21:12:55 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[4.2]]></category>
		<category><![CDATA[base SDK]]></category>
		<category><![CDATA[base SDK missing]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[missing]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3666</guid>
		<description><![CDATA[If you just updated to Xcode 3.2.5 and iOS SDK 4.2, you might find that your existing projects do not compile. This probably doesn't surprise you as it's been the way for every SDK update as far back as the beginning of time (at least in the Jobsian calendar). Thankfully, with Xcode 3.2.5, you can [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />If you just updated to Xcode 3.2.5 and iOS SDK 4.2, you might find that your existing projects do not compile. This probably doesn't surprise you as it's been the way for every SDK update as far back as the beginning of time (at least in the Jobsian calendar). Thankfully, with Xcode 3.2.5, you can set your base SDK once and for all and it should work for all future releases. </p>
<p>But first things, first, here's the error I received while trying to compile one of the early projects from my iOS SDK workshop: "error: there is no SDK with the name or path 'iphoneos4.1'"</p>
<p><span id="more-3666"></span></p>
<p><img src="/images/ios42/1-error.png" alt="Xcode error: there is no SDK with the name or path 'iphoneos4.1'"></p>
<p>Also, when I looked under the Overview drop-down in Xcode, I noticed that the settings there were entirely wrong: </p>
<p><img src="/images/ios42/2-overview-dropdown.png" alt="The overview drop-down showing the wrong settings."></p>
<p>To fix the Base SDK Missing error (once and for all), I opened up the Project Settings (Project &rarrow; Edit Project Settings) and, under the Build tab, set the Base SDK setting to "Latest iOS (currently set to iOS 4.2)". </p>
<p><img src="/images/ios42/3-project-settings.png" alt="Changing the Base SDK to the Latest iOS SDK in Project Settings."></p>
<p>Closing the Project Settings, however, did not update the Overview drop-down and I could only build for the device, not the simulator. </p>
<p><img src="/images/ios42/4-overview-dropdown.png" alt="The overview drop-down after setting the SDK to the latest in the Project Settings, still showing the wrong information."></p>
<p>To fix this, I had to restart Xcode.</p>
<p><strong>Update:</strong> You don't have to restart Xcode: closing the project and reopening it also fixes it. Thanks to <a href="http://twitter.com/amarkulo/status/7542882198097920">Amar Kulo</a> for the heads up.</p>
<p>After restarting Xcode, the Overview drop-down displayed the correct information and I was up and running again. </p>
<p><img src="/images/ios42/5-overview-dropdown.png" alt="The overview drop-down after starting Xcode looks correct."></p>
<p>I hope this helps you if you encounter the same issue after upgrading to Xcode 3.2.5 and iOS SDK 4.2. </p>
<p>Happy coding! </p>
<p><strong>Update:</strong> The core frameworks will also appear to be missing initially. This, too, will be fixed after you re-open the project so don't go through the effort of re-importing them.</p>
<p><strong>Update:</strong> Also, if in 4.1, you added <a href="http://aralbalkan.com/3588">the iOS SDK 4.1 workaround for the <code>CGPDFContext.h:60:23: error: expected function body after function declarator</code> error</a>, you need to remove this or you will get a warning: '__IPHONE_OS_VERSION_MIN_REQUIRED' macro redefined.</p>
<p>If you get this warning, check whether you added the <code>-D__IPHONE_OS_VERSION_MIN_REQUIRED=040100</code> flag to the Other C Flags in Project Settings or whether you added the two defines listed in my blog post, above, in the Prefix.pch file for your project. Remove the flag and/or the defines to remove the warning. </p>
<p><strong>Update:</strong> I also had thousands of warnings on a project that uses the <a href="http://code.google.com/p/gtm-http-fetcher/">Google Toolbox for Mac HTTP Fetcher</a> and had the <code>-Xclang -fobjc-nonfragile-abi2</code> flag set in the project (this allows you to skip @synthesize statements and implicitly creates the, umm, implicit accessors).  Removing the compiler flag removed the 20,000 or so warnings also. For the record, I consider this a WIN.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3666/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>PhoneGap iOS installer bug (and workaround)</title>
		<link>http://aralbalkan.com/3652</link>
		<comments>http://aralbalkan.com/3652#comments</comments>
		<pubDate>Mon, 08 Nov 2010 17:41:22 +0000</pubDate>
		<dc:creator>Aral</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[BUG]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[XCode]]></category>
		<category><![CDATA[xcode not installed]]></category>

		<guid isPermaLink="false">http://aralbalkan.com/?p=3652</guid>
		<description><![CDATA[I was trying to install PhoneGap iOS on my new MacBook Air but got an error when I ran the PhoneGapLibInstaller.pkg installer. It was telling me that I didn't have Xcode installed when, in fact, I did. I just didn't have it installed in the default location (/Developer). (Since I usually have several versions of [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />I was trying to install PhoneGap iOS on my new MacBook Air but got an error when I ran the PhoneGapLibInstaller.pkg installer. It was telling me that I didn't have Xcode installed when, in fact, I did. I just didn't have it installed in the default location (/Developer). </p>
<p>(Since I usually have several versions of Xcode on my machine at the same time, I've taken to installing them off the root in descriptive folders – e.g., Xcode3.2.4iOS4.1, etc.) </p>
<p><span id="more-3652"></span></p>
<p>A cursory glance through the installer code revealed that the installer doesn't appear to need to do anything with Xcode, it just checks whether it exists (at the default location). Specifically, it checks if Xcode is installed by checking for the existence of /Developer/Applications/Xcode.app and if the iOS SDK is installed by checking for /Developer/Platforms/iPhoneOS.platform. So, as a workaround, I rebuilt the packager <a href="https://github.com/aral/phonegap-iphone">from source</a> and removed the two requirements. Lo and behold, the installer ran beautifully. </p>
<p>It's a niche issue (most people have Xcode installed in the default location), and I know that the PhoneGap team are aware of it, <a href="http://twitter.com/davejohnson/status/1678690370977792">Dave Johnson was looking into it</a>, and <a href="http://twitter.com/shazron">Shazron Abdullah</a> just posted <a href="https://gist.github.com/667981">a gist on the issue</a>, so I'm sure that a fix will be out shortly. </p>
<p>In the meanwhile, if you're affected by the issue, <a href="/downloads/PhoneGapLib.zip">you can grab my installer</a> (.zip; 356KB), which doesn't have the two checks in it, and try using that instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://aralbalkan.com/3652/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/uk/</creativeCommons:license>
	</item>
	</channel>
</rss>

