As an iPhone user, I appreciate the consistency of interface among the applications. Gratuitous use of a black UI only serves to distance an application from this smooth interface flow–maybe not as bad as a yellow, green or pale blue background, or an application that doesn’t even use standard navigation, tool and tab bars–but distanced nonetheless. Ironically, as more applications use the black UI, any one app using it is no longer differentiated–it’s now just noticeably “not Apple.”
Archive for September 2008
The core of the problem is an API flaw in KVO; -removeObserver:forKeyPath: doesn’t include a context argument. So, if you have an object that is subscribed to a key twice, with two different context pointers, it is undefined which will get removed. If your object is dying and cleaning up all observations, this isn’t a big deal. But if your subclass logic wants to temporarily turn off its observation, it has no way to make sure that’s what happens—it might instead end up removing the superclass observation.
But now that Apple has opened up the iPhone, we’ve got a situation that’s full of chaos and confusion and hurt feelings. And it’s time for Apple to explain what it’s doing.
Most likely, you sent a message to an already-freed object. Or maybe your pointer is perfectly correct, but someone else mangled the object’s contents—perhaps a buffer overrun in a nearby allocation, or use of a dangling pointer that once pointed to the memory now occupied by your object. Occasionally
objc_msgSend()crashes because a memory error smashed the runtime’s own data structures, but usually the trouble is in the receiver object itself.
Whether you’re in the debugger or looking at a crash log, you can recover more information about the crash than just the backtrace.
SquirrelFish Extreme uses four different technologies to deliver much better performance than the original SquirrelFish: bytecode optimizations, polymorphic inline caching, a lightweight “context threaded” JIT compiler, and a new regular expression engine that uses our JIT infrastructure.
There’s so much interesting language work being done these days. I wonder how many of these techniques could be applied to Python and Ruby.
A week after resubmitting (nearly three weeks after the original submission), another e-mail from Apple arrives. This time they’ve found a legitimate bug in the application, and have rejected it because of that. This is perfectly understandable, and is actually a very good service they provide. But it is extremely annoying to have to wait a week to discover that they’ve found a bug, and then wait another week to see if the fix works for them.
Podcaster, an iPhone application from Almerica, was rejected from the App Store:
Apple had nothing in the terms prohibiting developers from duplicating features currently available on desktop application. I followed all the guidelines and made sure everything is in the correct place. Yet Apple denies me because I allow users to download podcasts just like iTunes.
In the past, Apple has removed applications and rejected applications that were arguably not very useful. I don’t think Apple should be the arbiter of taste or quality, and the applications clearly met Apple’s stated terms for inclusion. Most people didn’t seem too bothered about the removal of joke applications, but others worried about a slippery slope. Turns out, they were right. As John Gruber says, this is flabbergasting and indefensible. Not only is Podcaster a useful application, but developers will also be less likely to create new applications, since there’s so much uncertainty about whether they will be approved. It keeps getting harder to give Apple the benefit of the doubt.
Update (2008-09-15): John Gruber on section 3.3.3.
Update (2008-09-20): Angelo DiNardi’s MailWrangler (for accessing GMail) was also rejected from the App Store, for duplicating the functionality of Mail.
The prevailing thoughts on the internet seem to be that these ads are ridiculous, that they make no salient point, that they are barely funny, and that they are a pathetic, misguided attempt by Microsoft to rekindle affection from a public that has grown quite accustomed to viewing the company as a stodgy old curmudgeon.
I think these ads are genius. Or if not genius, as close to genius as Microsoft could ever dream of coming. If I was one of Microsoft’s competitors, I might not be quivering in my boots quite yet, but I’d be thinking, “my god, I am wearing boots!”
I think “genius” is a bit much—but, then, Apple also throws the word around lightly. However, I agree that the ads are much better than the Internet reaction would lead you to believe. And I say this as someone who doesn’t find Jerry Seinfeld very funny. Apple’s own ads portray Mac users as smug. The Microsoft ads let Gates use the sympathy capital that Apple built up for PC guy. I think they’re an OK start at rebuilding Microsoft’s image, making them relatable and reminding people what they’ve accomplished over the years. Microsoft isn’t going to out-cool anyone, and they’re be mocked for trying. This is much better than corporate gibberish like people_ready.
Update (2008-09-15): Jesper’s take.
Air Sharing (via Mark Grimes) is so far the best iPhone application I’ve seen for making the iPhone show up as a disk in the Finder. The viewer supports all the expected file formats, including Web archives, and it remembers the document scroll position between viewings. The interface and help are very well done.
The only problem I encountered was with the Bonjour support. It uses the actual phone name set in iTunes, but says it’s using iPhone.local. And I couldn’t get it to work until I renamed my iPhone (“Michael Tsai's iPhone”) to remove the apostrophe.
Update (2008-09-11): The developer replied to my e-mail and said that these bugs are fixed for the upcoming 1.0.1 release.
Bugs happen. It’s a fact of life. Although you may not be in the mood at the exact moment they strike, the best possible thing you can do is file a bug report with the developer. You may not get an immediate solution, but you will provide extremely valuable forensic information that should help the developer fix the problem over the long term. Here’s how to report a bug effectively.
Jeffrey Friedl (of regular expressions fame) has a great article about color spaces, color profiles, and color management. I particularly like page 2, which lets you test your Web browser’s support for embedded color profiles.
I found his article while searching for the answer to a color problem on my MacBook Pro. My photos looked OK in Aperture’s Viewer and in Photoshop Elements, but in Aperture’s Full Screen mode and in other color-managed applications such as Preview and Safari, they appeared super-saturated. The solution was to open ColorSync Utility and set my external display as the default display device. Now the photos look correct, and they’re consistent from application to application. Although Apple classifies this as an Aperture issue, it seems to me to be an OS-level problem—and a longstanding one judging by the date on the support page. There are lots of threads in Apple’s discussion groups from other people who’ve encountered it.
It’s like Cocoa and Objective-C for the Web:
With Cappuccino, you don’t need to know HTML. You’ll never write a line of CSS. You don’t ever have interact with DOM. We only ask developers to learn one technology, Objective-J, and one set of APIs. Plus, these technologies are implementations of well known and well understood existing ones. Developers can leverage decades of collective experience to really accelerate the pace of building rich Web applications.
The September issue of ATPM is out:
- MacMuser: Whose line is it anyway?
- Next Actions: Master List for September
- Photoshop For the Curious: Don’t Yield—Merge!
- How To: Making Preview Useful Again
- Desktop Pictures: Western US National Parks
- Hardware Review: Das Keyboard Professional
- Hardware Review: Hard Drives as Floppies
- Hardware Review: iMetal Headsets
- Software Review: MacGourmet Deluxe 1.0.3
- Software Review: Séquence 1.0.1
- FAQ: Frequently Asked Questions