Last night I attended the NYC iOS Developer meet up at Time Inc. headquarters. The theme of the event was “Rant Night” and featured 6 experienced developers venting their frustrations about developing for Apple’s platforms. Here’s what they had to say:
Kevin Kim – Core Data and Not iCloud. I actually heard Kevin give a presentation on iCloud at a meetup back in November. I was fascinated by Core Data’s ability to synchronize databases using iCloud by sending and receiving changes (deltas). The only problem is, it doesn’t work! Syncing databases is an enormously complicated problem because of the ancillary relationships (cascading updates and deletes) that need to occur in order for data to be in a consistent state. There has been a lot of noise about this in the tech press over the past couple of months, and developers are now recommended to build their own cross-device data sync solutions. A sad end to such a promising start.
Paul Bruneau – OSX Gatekeeper: Always Nagging. Paul recalls that when the iOS App Store was released in 2008, there was debate over whether the same would happen for OSX. Now that the Mac App Store is here, it is indeed getting more difficult for users to install non-App Store released software. Even as a $99-per year certified Mac developer, scary messages still pop up that dissuade users from installing such programs. Obviously this is part of a push by Apple to get all programs into the Mac App Store where they be curated and, perhaps more importantly, take a 30% cut off the top.
Phillip Bowden – Objective-C: A Mediocre Language. Phillip names the lack of namespaces as his primary gripe with Objective-C. He mentions that in 1986 when this was discussed, an Apple executive didn’t understand that need and suggested that developers simply prefix a few letters to the front of each class name. And that decision has stayed until this day. Make sure to also prefix method names on categories (because the extended class may implement such a method in the future). ARC is great, but can lead to retain cycles in blocks. Phillip recommends checking out Clojure, Haskell, and Scala, as well as some of the older languages of the 1970’s for fresh air and inspiration.
Scott Ostler – NSButton Sucks. Scott’s concerns are directed at Cocoa for Mac OSX., where many of the niceties of UIKit on iOS are lacking. NSButton is a mess, with an API that suggests certain behaviors that simply do nothing. A case study in bad design. There is a project called Chameleon to port UIKit to OSX, but Scott doubts if it will fully replicate all functionality.
Akiva Leffert – Sometimes Repeat Yourself. Akiva used to work at Apple in their iBook textbook initiative. He rants against the obsession with DRY (don’t repeat yourself) and says that for to make code more explicit and understandable, a little repetition can be a good thing. Never missing an opportunity to throw in a jab at Ruby, Akiva explains that lazy loading in properties can lead to problems and to be explicit and simply call a load method instead. NSNotificationCenter and KVO are also things to avoid because of their opacity.
Natalie Podrazik & David Jacobs – Newsstand. Natalie and David build independent subscription-based magazine apps using Apple’s Newsstand Kit Framework, which apparently it is a little rough around the edges. Content can only be pushed to devices over Wifi, even if the content size is small as in their case. Apple must approve every issue, which can take several days and thus makes daily issues impossible. There is also a known bug with Testflight that leaves ghost icons on the springboard. Countless other gripes show that Apple likes to play the “we’re protecting the consumer” card instead of innovating the complete experience.
Finally, Amanda Connell of Tipping Point Partners announced a fascinating panel discussion called “Theory vs. Practice: Delivering Real World Software” on Friday May 3rd at 6pm, 6 of New York’s best software leaders gather in the Auditorium at New York Law School to debate the myriad methods by which teams build and ship great software. Only $8/ticket sign up here attend while there’s still space! Use discount code: NYiOSdevs for 30% off.
Pretty much every iOS and Mac developer will attest that the care and polish that Apple puts into their consumer products is noticeably absent from their developer platforms. That includes Objective-C, Xcode, the Developer Portal. That’s important for incoming developers to know, and a somewhat sad state of affairs. Microsoft actually owes a large share of its success to creating a developer-friendly ecosystem via its Visual* (Visual C++, Visual Studio, etc.) suite of tools in an age where no true alternatives existed. They also made the choice to keep the Windows API painstakingly consistent over the years to the point where a Windows 3.1 program can actually run on Windows 8. Some argue that this decision has kept Windows from a fresh “reset” in the way that OSX was for the Mac. Others point out that this was the cause for its phenomenal growth. Either way, it’s important for Apple to remember that developers, like consumers, have a choice of what platform to support. Some point to the growing popularity of Objective-C as proof that Apple shouldn’t worry. I would point out that it’s not Objective-C that developers love, it’s the platform and its reach. That’s a big difference.