Magical adventures in nerdery.

MKMapView and zoomLevel

While searching for a fix / workaround for this MKMapView bug, I found a couple of useful pieces of code, that allow you to directly manipulate the zoom level of a MKMapView:

Here's the code from the above links, combined into a handy MKMapView category:

Xcode: Run project with specified localization - Stack Overflow

If you're debugging / testing an app, and want to make sure your localised strings don't mess up your UI, this is a really handy way of doing so, without having to change the language of your iOS device.

Related: Tethras is a wonderful service for having your app strings translated.

Stuff 'n' Junk, 2013 edition

A bunch of cool stuff I discovered over the past year.

Read More →

Apple, PrimeSense, Topsy

I've been reading and listening to a lot of speculation recently regarding Apple's latest acquisitions — PrimeSense and Topsy. While it's fun to speculate on pie-in-the-sky applications of these technologies in potential future products, I feel like the real reasons for Apple purchasing these companies are probably more grounded than expected.

Read More →

Hooking NSNotificationCenter to trace all messages

Steve Breen tweets:

Tracing all NSNotificationCenter traffic on iOS. Very cool! #iosdev

— Steve Breen (@steve_breen) October 16,2013

Google's iron grip on Android

The Open Handset Alliance is a group of companies committed toAndroid—Google's Android—and members are contractually prohibited frombuilding non-Google approved devices. That's right, joining the OHArequires a company to sign its life away and promise to not build adevice that runs a competing Android fork.

How is that "open" in any sense of the word?

You can't really blame Google for wanting to lock down Android, now that it has the majority share of the smartphone market, but those terms seem quite onerous.

Google, as a company, have changed a lot from the Google we knew and loved back in the early-to-mid 2000s. If Android was released by the Google of today, I highly doubt it would be open-source.

Why Android First is a Myth

A good summary of why startups continue to launch iOS-first and not Android. It's quite focused on VC-backed companies, but the following quote sums it up for almost any kind of app-based business:

Building and releasing on Android costs 2-3x more than iOS. This isdue to a multitude of reasons: less sophisticated tools, generallymore cumbersome APIs, fewer exposed advanced features, enormous QAissues brought on by fragmentation, etc. The rough rule of thumb isfor every iOS engineer you actually need two Android engineers—ortwice the development time.

What Starbucks Gets that Architects Don't

…Starbucks designed round tables in their stores. They werestrategically created "in an effort to protect self-esteem for thosecoffee drinkers flying solo". They were not round because thearchitect felt it looked better that way, they were not round becausethey were cheaper, they were round because as the article concludes"there are no empty seats at a round table" …

I love this sort of insight into how physical design can affect us on an emotional level.

Using iOS 6.1 as Base SDK in Xcode 5

Xcode 5 seems to remove all iOS SDKs, except for iOS 7. If you need to build an app for iOS 6 (and retain the iOS 6 UI & behaviour), then you'll need to re-download the iOS 6.1 SDK and symlink it into Xcode's SDK directory:

sudo ln -s iPhoneOS6.1.sdk/Applications/

There are a couple of solutions in the linked Stack Overflow topic. This answer has a download link to the iOS 6.1 SDK, without having to re-download Xcode 4.

Should I Use a Property or an Instance Variable? - Big Nerd Ranch Blog

Is it slower to use self.someOtherViewController instead of _someOtherViewController? Yeah, by about 8 nanoseconds.

Really interesting analysis from the guys at Big Nerd Ranch.