iOS and Mac Development Link Roundup: November 2011

I skipped my customary monthly link roundups in September and October simply because I did not have the time to compile them. Not only did the composition of the interesting links at the end of the month take up an increasing amount of time (which I would be fine with), but the fact that I felt I had to stay up to date with my Twitter timeline every single day in order not to miss anything made this impossible.

Perhaps not surprisingly, the amount of positive feedback I got the roundups increased tremendously once I had stopped doing them. Thanks to everybody who told me they liked these posts. The feedback encouraged me to make another attempt at continuing the series, though note that I am not making any promises. It is quite possible that I abandon the whole thing again as soon as next month.

iOS 5.0.1

Apple released iOS 5.0.1. The update contains, among other small improvements, a way for developers to specify files that should remain on device, even in low storage situations. iOS 5.0.1 thereby fixes the “Cleaning” issue faced by many offline content apps, illustrated by Marco Arment.

To prevent your offline files from both being backed up and deleted by the system, put them anywhere in your Documents or Library folder except /Library/Caches and set an extended attribute to mark them as “should not back up”.

Thanks to Apple for providing such a quick fix. It shows that Apple is indeed willing to make changes to their policies when they realize the consequences for consumers are bad.

Programming

Siri

The guys from Applidium reverse-engineered Siri’s protocol. Basically, Siri uses binary plists over a non-standard-conforming HTTPS to talk with the server. It seems to require an iPhone 4S device ID to authenticate against the server. The binary plists contain raw audio data using the Speex audio codec. Applidium also published a collection of tool.

Using these as a basis, someone named Pete created SiriProxy, a proxy server that allows you to inject custom handlers for certain keywords into Siri’s vocabular. Pete’s demo video is worth watching.

In the meantime, several SiriProxy plugins have been published or demoed, such as one for Spotify from Simon Maddox.

Components and Libraries

  • MKNetworkKit by Mugunth Kumar is an interesting new iOS networking library, inspired by both ASIHTTPRequest and AFNetworking.

  • SVGKit by Matt Rajca is a library for rendering SVG files as Core Animation layers. All shapes are represented by instances of the CAShapeLayer class and are animatable.

  • GMGridView is a promising new grid view component for iOS, written by Gulam Moledina. Supports horizontal and vertical layouts, reordering via drag and drop, and the pinch-to-fullscreen gesture. Requires iOS 5.

  • Sam Vermette published SVStatusHUD, a replica of Apple’s HUD overlays in iOS. I especially like how Sam prescribes the situations in which you should use the component to stay in accordance with Apple’s usage:

    It should only be used in response to hardware or other important notifications (for instance when an accessory is detected by your app).

  • Matthijs Hollemans wrote MHTabBarController, a custom tab bar controller that illustrates the new view controller container APIs in iOS 5.

Tutorials and How Tos

Miscellaneous

  • The GNUstep project has release version 1.6 of the GNUstep Objective-C Runtime, bringing it to a level with iOS 5.0 and OS X 10.7. The GNUstep runtime also includes an interesting feature: Support for prototype-style object orientation, Javascript-style.

  • The LLVM team has started a series of posts outlining major changes in LLVM 3.0. So far, they have published two articles on the type system rewrite and exception handling redesign. This is pretty in-depth stuff that you probably don’t need to know about but it never hurts to understand how the compiler works.

  • Martin Pilkington continued his series of Xcode reviews, this time with Xcode 4.2.

  • Nathan de Vries discovered how to enable WebGL (which is publicly only available for iAds since iOS 4.2) in UIWebView (using private APIs).

  • An article titled Parallel Implementations by John Carmack:

    If the task you are working on can be expressed as a pure function that simply processes input parameters into a return structure, it is easy to switch it out for different implementations. If it is a system that maintains internal state or has multiple entry points, you have to be a bit more careful about switching it in and out. If it is a gnarly mess with lots of internal callouts to other systems to maintain parallel state changes, then you have some cleanup to do before trying a parallel implementation.

  • Daniel Jalkut in response to an old Linus Torvalds e-mail about his hatred of C++: Objective-C is the Language

  • Chrashalytics is a new contender in the iOS Crash Reporting field.

  • VendorForge by Keith Pitt is one of several third-party package managers for Cocoa developers that popped up over the last few months. Other similar projects include CocoaPods, kit and vendor. Since managing third-party libraries in Xcode is currently an absolute pain, this is an area where the Cocoa community could really benefit. My hope is that we end up with one great package manager that everybody can agree upon instead of an ugly mess of multiple different approaches.

Design

Community

  • Charlie Miller found a serious security hole in iOS that allows apps to download code and execute it outside of their sandbox. The result: Apple removed the offending demo app from the App Store and threw Charlie Miller out of the developer program for 1 year. Federico Viticci wrote about it for MacStories.

  • Chris Schilling did a fantastic interview with Matt Mills of ustwo, creators of Whale Trail. So much insight about the state of the App Store and the game industry in this one. (Their Making of Whale Trail video is also worth watching.)

  • Copycats is a great article by Matt Gemmell:

    There’s nothing new under the sun, as they say - we’re all inspired and affected by other things. All of our design takes place under constraints. So, be influenced. Incorporate elements. Agree with implementations. Understand an approach. Realise the purpose and function of a design decision. Address a need. Renew something. Be an innovator, not a copycat.

  • David Barnard talks openly about the rather disappointing launch of this beautiful new app, TweetSpeaker.

  • The guys from Shifty Jelly wrote a post that describes pretty well how life is as an indie developer.

  • In A Letter to the Developer Community, Brittany Tarvin raises an important problem: what can we all do to make women feel more welcome in this community? For example, at Apple’s iOS 5 Tech Talk in Berlin this month, less than 1% of the participants were women. It felt just wrong, regardless if you were a man or a woman.

  • Great, encouraging quote from John Gruber’s keynote speech at the Çingleton Symposium in October:

    If you think this app store platform is big now, you really haven’t seen anything yet. … But I say to you, “This is an extraordinary time to be an Apple developer”. This is the right time and the right place. This is a once in a career opportunity. … If things go right, if things go the way I think they are going to go, these next five years, we are never going to work harder, we are never going to be under more pressure, we’re never going to be more stressed, we are never going to feel like we have to work faster and we are never going to have to solve tougher problems. We’re never going to have to move this fast. But the only thing any of us are going to regret is if we don’t aim big enough.

    The whole talk is worth watching.

App Store

Sandboxing Deadline Extended

Apple extended its deadline for Mac App Store apps to be sandboxed from the planned November 2011 to March 1, 2012. The nearer the original deadline came, realization probably grew in Cupertino that developers need more time to assess the impact of the sandboxing requirements on their apps and adapt them accordingly. And hopefully, Apple provides enough leeway to allow Mac apps to exist under sandboxing without impairing functionality that users take for granted.

On the occasion of Apple’s announcement, an interesting discussion about the merits (or not) of sandboxing sprung up in the blogosphere:

Pricing and Marketing

Update December 1, 2011: Marco Arment updated his regular device and OS version stats. As of the end of November, 45% of Instapaper users have updated to iOS 5. I would have expected a higher adoption rate.

Competition

Steve Jobs Biography

Walter Isaacson’s Steve Jobs biography came out in late October and many of you have probably already read the book. If you haven’t, I think you should do so because it really is quite good (although probably not as good as it could and should have been).