Archive for June 2010
Wednesday, June 30, 2010 [Tweets]
Jonathan Ive (via Brandon Walkin):
The amount of care that went into that SIM tray is extraordinary. To achieve this kind of build quality is extraordinarily hard work and requires care across so many teams. It demands incredibly close collaboration with experts in certain areas, material sciences and so on.
The interview, from Core77, includes some nice production photos, and I love the first comment by John Appleseed. Ive’s comments are interesting in that some might say iPhone 4 places too much emphasis on form rather than function. The symmetrical shape has its advantages, and overall I like it, but it doesn’t feel as pleasing or identifiable in the hand. John Gruber:
Both aesthetically and tactilely, the iPhone 4’s glass back is very pleasing. It has a 2001-monolith-like symmetry. But as a heavy iPhone user since day one, I’m finding it slightly disconcerting. I’ve always carried my iPhone the same way: front right pants pocket, with the glass toward my body, so that if my leg hits something or something hits my leg, the back of the iPhone would take the impact, not the glass. Now it’s glass on both sides, and what keeps happening is that I reach into my pocket to take it out, my fingers feel the smooth glass facing out, and I think, “Shit, I pocketed my iPhone wrong last time.”
Gruber also has interesting comments about the new system font, Helvetica Neue.
Like Core77, I’ve wondered why you can’t undock an iPhone one-handed. I liked that with the old Pilot 5000.
WebKit and Gecko support a CSS declaration for better kerning and ligatures (via John Gruber).
Update (2010-07-01): Jim Ray’s keming is a Safari 5 extension to inject this into every page.
Yesterday, I shipped version 3.0 of DropDMG. This is the biggest update ever for my first Mac OS X application, and it adds lots of new features and refinements that customers have been requesting and I’ve been wanting for myself. Pretty much everything has been rewritten or revised and modernized. It’s come a long way from the first version, more than eight years ago, which ran a single thread, had no preferences, and used an icon designed by the programmer. The basic concept—easy disk image creation via drag-and-drop or AppleScript—remains the same, however.
Although I’m the sole developer, I have many others to thank for helping with this release. Kenichi Yoshida did a great job on the new icon. The volunteer localizers had five translations ready by the time I was done with the code. The beta testers made lots of good suggestions and found all the significant bugs (so far, fingers crossed). And thanks, of course, to the users who paid for DropDMG, told me what was good and what needed improvement, and politely nagged about when the new version would be ready.
DropDMG 1.0 running on Mac OS X 10.1.2. I was pleased to find that it still works on Snow Leopard, a testament to good application code, Rosetta, and Apple honoring its API contracts.
Saturday, June 26, 2010 [Tweets]
Apple (via Apple Insider):
Friday, June 25, 2010 [Tweets]
At WWDC Apple announced a few more features, which I personally think of as Objective-C 2.2. These are “@synthesize by default” and “declare ivars in class extensions.” These are features that I have wanted for quite a while and I am sure a lot of other Objective-C developers have wanted.
They’re available in Xcode 3.2.3 if you use the 64-bit runtime and the LLVM compiler.
For all the supposed design refinement of the iPhone 4, this is a near-showstopper. It’s very surprising that the device shipped with this kind of flaw. If the fix is to add Apple’s £29 rubber bumper on top of this £600 device, that will be a very poor show indeed.
He has videos demonstrating the problem. Unfortunately, the bumpers don’t fit in docks and would probably make the phone stick in your pocket. Better to use tape. Perhaps some black electrical tape wouldn’t be so unsightly. Apple’s response is not encouraging, nor do I think it makes sense to blame the FCC. This is something that should work out of the box without accessories or instructions not to hold it in the normal way. Maybe they can add a clear coating or something.
Wednesday, June 23, 2010 [Tweets]
Yesterday, the SSD startup drive in my OS X MacBook became extensively corrupted, such that the computer would no longer boot from it. The process of recovering and repairing the drive revealed a number of important lessons related to recovery preparedness.
Friday, June 18, 2010 [Tweets]
Andrew Vande Moere (via Jason Kottke):
Bing Destination Maps seems quite interesting as a new way of rendering geographical maps in a more visually simplified, understandable and accessible way. In other words, imagine one can now create a sort of information-optimized summary maps, similar to those you would quickly draw yourself on the back of napkin.
Cool looking and useful. Alas, it requires Silverlight.
Thursday, June 17, 2010 [Tweets]
Jay from LinkedIn’s SNA team
describes interpolation search, which is like binary search except that it looks at the values of the elements so that it can do better than guessing the middle each time (via Alan Odgaard
The data structure for these uses a large sorted index file to do lookups, what is stored in this file is an MD5 of the key. Since the MD5s are used for the sort, the file is guaranteed to be uniformly distributed over the key space, and can often be many GBs in size. These files are memory mapped to help reduce the cost of a read, but the improved search algorithm can help to greatly reduce the number of seeks when the index is not fully memory resident. A disk seek comes at a price of around 10ms, so saving even one or two is a huge performance win.
Apple has posted the session videos for the 2010 Worldwide Developers Conference (via Michael Jurewitz). Incredibly, they are available less than a week after the end of the conference, and they’re free for registered developers. In 2009, it was more than a month before the videos were available (the fastest to that point, as I recall), and Apple charged $500.
Wednesday, June 16, 2010 [Tweets]
The fate of individual competitors aside, the fact that the most dangerous players are all coming out of the gate with languages and APIs a generation ahead of what Apple offers should be a huge warning sign. And again, this is all happening in the memory-starved, CPU-constrained mobile world. On the desktop, Apple is even farther behind.
This is not to say that Cocoa isn’t a great framework or that Objective-C isn’t very good for what it is. However, I think Siracusa is right that there’s a bit of groupthink and complacence at Apple and in the community. There’s a world out there where properties, blocks, and garbage collection are not shiny new toys.
Objective-C does have garbage collection now, but I still read about showstopping bugs in the GC versions of the frameworks. And, of course, any code that might be shared with an iOS app needs to be written with manual memory management. So, practically speaking, garbage collection cannot be the default choice today.
This all reminds of Jonathan Rentzsch’s recent points that (1) developers in the Apple community are great at focusing on user experience but that there is too little concern for the lower levels, and (2) that Section 3.3.1 limits engineering innovation to what Apple is able and willing to provide.
Update (2010-06-19): Jesper thinks that Apple is working on a new language to surpass Objective-C.
Monday, June 14, 2010 [Tweets]
This is disturbing; are publishers really not performing quality checks for ebooks? In this case, nearly 1/6 of the book is missing; the length of the file should have been checked.
It’s worth noting that this particular book has been the object of several “reviews” in the iBookstore mentioning the glitch (I bought the book before these reviews were posted), some of which mention having contacted Apple. That Apple is still selling the book is at a minimum disturbing.
Friday, June 11, 2010 [Tweets]
One of the
absolute worst features of C++ is how it makes a
lot of things so context-dependent—which just means
that when you look at the code, a local view simply seldom
gives enough context to know what is going on.
There’s no “debugger” in communication. There is no IDE
that helps figure out what’s going on. There is no syntax
There are just e-mails with patches and suggestions flying
around. There’s no room for special tools—if you as a
human cannot see what the code does from the change,
it’s a problem. And you usually see about three lines of
context around the code.
In this situation with hundreds or thousands of developers, primitive tools, and a huge code base, it makes more sense to optimize for clarity than conciseness or abstraction power.
Thursday, June 10, 2010 [Tweets]
By naming these features “multitasking”, Apple has set customers’ expectations to include what apps can do in a traditional computer multitasking environment.
It’s going to mislead people into expecting such behavior from apps, but we can’t actually deliver most of it.
It’s especially confusing because Apple lets built-in apps such as Mail do this sort of thing.
NoMoreiTunes (via Safari Extensions) prevents Safari from auto-opening iTunes when you view a Web page for the iTunes store. You can still click the “View In iTunes” button manually. So far this is the only Safari 5 extension that I’m using.
Tuesday, June 8, 2010 [Tweets]
In one of the elaborately produced, incredibly self-congratulatory promotional videos that the company released to announce the arrival of iPhone 4, one particularly outrageous moment stuck out for me. At about three minutes into the video, senior vice president for iPhone software Scott Forstall extolls the virtues of the Retina Display by declaring that “The text… is just perfect!” Meanwhile, the central image in the video at just that moment is this little typographic calamity…
Even on the larger iPad screen, the typography in iBooks needs work: hyphenation, ragged right, or something.
Update (2010-06-21): iBooks 1.1 adds ragged right.
Kara Swisher (via Dave Winer):
Kothari said that the pair plan to contact Apple in the morning and take [steps] to remove Times material out of the feeds.
It is not immediately clear why they need to, since Pulse draws from publicly available Times RSS feeds as many other apps do and does no scraping.
In fact, Pulse is little more than a really well-designed RSS reader, which is what the Times said it was in its write-up. You add feeds to it and it visualizes them in a way that’s easy to get through.
The app had been featured in Steve Jobs’ WWDC keynote and praised by the Times itself.
Update: Jason Snell reports that it’s back in the store.
Sunday, June 6, 2010 [Tweets]
Jesper and Steven Frank have posted their thoughts on the quote
that I mentioned from Steve Jobs: “We don’t run to the press and say, this guy is a son-of-a-bitch liar!” That’s actually pretty much what he just did, except that he planted a vague enough seed of FUD that none of the accused can defend themselves. And tarred all developers with it.
The most distressing App Store stories I’ve run across have been open about their entire communication with Apple. No one would blame you for pointing out fabrications in those stories, and you have chosen not to, which leads me to believe that at least some of them are true—probably all of them. I have a hard time stomaching treating your developers in this backhand, “walled garden,” “curated” way in the first place. It’s getting tough when you reject perfectly fine apps because you don’t feel like it (so much for the “customer benefit”).
I think I draw the line when you call the developers you mistreated “liars”.
It’s making Jesper want to buy an Android phone, a strange lowering of standards:
…that kind of thinking is right now inventing vulnerabilities where they’d otherwise have precious little.
Perhaps the very problem is this whole Apple stoically “taking it on the chin” business. Apple’s near total silence on really incredibly important matters is indeed a huge part of why so many developers, myself included, just don’t trust the damn thing. It’s like a black hole from which no information escapes.
Apple probably sees the black hole as a feature. Trust is less important than control and deniability.
Friday, June 4, 2010 [Tweets]
Who better to adapt a German-style board game than TheCodingMonkeys. It looks like a winner. Other board games I’d like to see: Titan, Puerto Rico, and Caylus.
Update: Unfortunately, it uses the third-edition rules for field scoring, which I think are less interesting.
So, no, the “open” iPhone will not silence the critics. Rather, it will give them more attack vectors to claim Apple is actually moving to solidify their closed, anti-competitive environment.
People will always find something to complain about, but not all complaints are equally valid. The benefits of the App Store are much less than the benefits of Cocoa. Adding Snell’s switch and allowing native apps outside of the App Store would quiet some critics. And, more importantly, it would provide real and substantial benefits both to users (more apps, more ambitious apps, demos) and developers (reduced risk, easier development and testing).
Thursday, June 3, 2010 [Tweets]
I propose that API documentation is combined with autocompletion. Anywhere in your code where it would make sense to show an autocompletion window, we show this window instead. Rather than show a set of seemingly random methods, we instead show the methods the particular class responds to, with a mechanism to view methods and documentation for the superclass.
He has lots of good ideas and mockups. Autocompletion in Xcode 3.2 is miles better than before, but it still leaves a lot to be desired.
I’m here to say to Apple that while I understand very well the reasons for the company’s walled-garden approach to native iPhone OS apps, the strengths of that approach have now been surpassed by the bad publicity and reputation that Apple and its products are now getting in the market as a whole.
Perceptions, once set, are hard to change. There are lots of straw men in the comments. Do people really think that the App Store is curating away the junk? Or that the OS itself doesn’t enforce a sandbox? It’s also strange to see so many suggestions that “the people have spoken” because Apple is selling lots of devices. The market also preferred Windows over Mac. One can succeed in business doing lots of things wrong if one gets a few key things right. Mistakes have a way of catching up to you eventually, though. I think Snell is right to look for leading indicators.
Jobs first notes that Apple, by supporting HTML5, supports a completely open platform.
Ah, yes, they still offer developers the sweet solution.
At the iPhone OS 4.0 launch event, Steve Jobs had every opportunity to bat down the other major competitive claim Android has over the iPhone OS: the fact that third-party iPhone app development isn’t “open.” Instead, Jobs went on a rant about porn being available on Android and not on the iPhone.
I can’t tell you how disappointing that moment was for me. Perhaps Jobs believes what he said, but it’s a ridiculous claim. Setting aside the issue that people should really make decisions for themselves about what they want to do with their devices, and that the iPhone OS has parental controls that could be used to block adult content from appearing on kids’ devices, Jobs’ statement was also completely counterfactual.
He also wasn’t candid about the secret reasons that Apple rejects apps, insinuating that developers don’t follow the rules and lie about it. Much of the controversy over the App Store is due to Apple not sticking with the rules that it laid down. The developer agreement doesn’t forbid having a better mail app, better voice mail, or a better photo frame, and yet Apple found reasons to block them. It’s unfortunate that Mossberg and Swisher let Jobs spin so much. Why have a live interview if you won’t follow up to make sure that your questions are answered? I get that they want him to attend D9, but the value of a rare exclusive interview is lessened when the subject just repeats what’s already been said elsewhere. The truck analogy was clever, though.
The gentleman on the phone was courteous and polite, but his message was blunt. While I had not been officially rejected (at least, not yet), he asked me some questions and hoped to manage my expectations. Based on the information available to him, the reviewers believed Briefs contained a non-Apple interpreter and the first team initially rejected it for non-compliance with section 3.3.2 of the iPhone Developer Agreement.
Briefs hasn’t actually been rejected yet, but then neither has Google Voice, which Apple “continues to study.”
In other words, I use a public API provided and documented by Apple to load the brief into memory from a network connection. When reading a brief from local storage, I use the + dictionaryWithContentsOfFile: method built into NSDictionary. Also public, documented and provided by Apple.
By all accounts, Rhyne has written a great app that would be an asset to the platform. However, his “public API” argument is meaningless. The point of the revisions to the developer agreement was to exclude applications that used non-approved languages via approved means. Briefs clearly has its own language. The app contains an interpreter. The fact that the code is semi-compiled and loaded as a dictionary rather than a string is irrelevant. It would not be a stretch to say that apps using XML also contain interpreters. Code and data are equivalent. Sections 3.3.1 and 3.3.2 effectively ban standard computer science and engineering techniques.
Every app with a text field should be able to email, tweet, blog, print, transmute, translate, and read aloud the current selection. Every app with an image view should be able to rotate, crop, set as wallpaper, save to Dropbox, post to Flickr, and upload to an SFTP server. Of course no single developer should add all these features to their application—we have a word for software like that—so a more elegant solution is called for.
Wednesday, June 2, 2010 [Tweets]
Given that, among the iPhone OS devices, only the iPhone 3GS and the third-gen iPod Touch featured NEON up until recently, it typically wasn’t worth the effort to work on a NEON optimization, given that it would benefit only these devices, unless the application could require running on one of them (e.g. because its purpose is to processes videos recorded by the iPhone 3GS). However, with the arrival of the iPad it makes much more sense to develop NEON optimizations. In this post I’ll try to give you a primer on NEON.
Tuesday, June 1, 2010 [Tweets]
Kaleidoscope is a new file comparison utility. As you’d expect from Sofa, the interface is pretty. It seems oriented towards designers, with some nifty ways of comparing images. It also has some good ways of comparing text files, but it doesn’t support editing or even applying changes. There’s an interesting tabbed interface so that you can see multiple pairs of files at once—rather than in sequence, as with some other tools. It doesn’t do folder comparisons like BBEdit or Changes. Overall, I think it’s prettier but less useful than Changes, with the same basic drawback: it isn’t quite integrated enough to fit into my workflow. I want more than the ability to set it as an external git diff tool.
Lately, I’ve been using GitX for viewing and accepting/rejecting diffs and BBEdit for deeper comparisons and editing. GitX is great for comparing against the HEAD and staging, but it doesn’t make it easy enough to get at previous versions of a given file or tree. And with BBEdit you’re totally on your own. Hopefully, one of these days BBEdit will get first-class Git support or I’ll have time to make some code contributions to GitX.
My Frame was first accepted and then rejected from the App Store:
A month ago I wrote a blog post about how Apple were not actually evil, because I was getting sick of all the media hype and bashing that was going on. Little did I know that a month later that blog post would come back and smack me in the face. Just yesterday the company that I work for (Groundhog Software) got a phone call from Apple, telling us that our photo frame application for the iPad My Frame was to be removed from the Apple App Store. They refused to be pinned down to an exact reason, simply stating that they were doing a cull of any applications that presented widgets to the user. All the guy on the phone would say is how much he liked our application, and how sorry he was, but there was nothing he could do. All we got out of him was that Apple no longer liked ‘widgets’ and wanted all widget apps removed. They refused to say what (if anything) we could remove from our application, or even who we could discuss this with.
I wouldn’t even describe it as a widget app. It’s not trying to bypass the App Store or the iPad home screen. It seems like a nice collection of features. But regardless, this is ridiculous behavior on Apple’s part.
As of this writing, My Frame is still available. So, assuming this isn’t a marketing stunt—and I have no reason to believe that it is—you still have a chance to buy it if it looks useful to you.
Update (2010-06-03): It’s gone from the App Store.