Archive for June 2012

Friday, June 29, 2012

Fantastical 1.3.1

I’m kind of late to the Fantastical bandwagon, but it really is good. You get a hotkey-summoned natural language text field for creating events, which works much better than iCal’s. And there’s also an iOS-style list of upcoming events. Rather than opening iCal, I had actually found myself pulling the iPhone out of my pocket to see this sort of list. Now I just press the hotkey. Flexibits is currently having a 50%-off sale (via John Gruber).

I also learned a good tip from the FAQ, which is applicable whether or not you’re using Fantastical:

Why does iCal automatically open when I add an event to my iCloud calendar?

If you’re using Lion, iCal automatically opens whenever new iCloud events are pushed to your Mac. To change this behavior, go to iCal > Preferences > Accounts. Select your iCloud account, then change the “Refresh Calendars” setting from Push to something else, such as Every 30 minutes. Both iCal and Fantastical will continue to sync as you’d expect.

It had been driving me crazy that I would open iCal, add an event, and quit it; and then it would auto-launch itself just a few seconds later.

Debugging Core Data Objects

Craig Hockenberry:

It’s taken me months to learn these tricks, so hopefully this short essay helps you come up to speed more quickly than I did!

Thursday, June 28, 2012

Chocolat 1.0

Chocolat is a new programmer’s text editor. I’m not tempted to switch from BBEdit, but it does have some interesting ideas. The language support seems to be wide but shallow. The demo animation shows Haskell, Erlang, and Lisp. It even supports my beloved reStructuredText. Yet, for a common language such as Objective-C, the symbol list doesn’t include the methods—just C functions, defines, and the like.

Branch Prediction Fail

An interesting Stack Overflow question (via Mike Ash):

Here is a piece of code that shows some very peculiar performance. For some strange reason, sorting the data miraculously speeds up the code by almost 6x […] My first thought was that sorting brings the data into cache, but my next thought was how silly that is because the array was just generated.

QuickCursor Editor Example

Jesse Grosjean has posted some code showing how to integrate his QuickCursor utility with your NSDocument subclass.

Wednesday, June 27, 2012

SQLite 4

D. Richard Hipp et al. (via Reddit):

SQLite4 is an alternative, not a replacement, for SQLite3. SQLite3 is not going away. SQLite3 and SQLite4 will be supported in parallel. The SQLite3 legacy will not be abandoned. SQLite3 will continue to be maintained and improved. But designers of new systems will now have the option to select SQLite4 instead of SQLite3 if desired.

SQLite4 strives to keep the best features of SQLite3 while addressing issues with SQLite3 that can not be fixed without breaking compatibility.

Very interesting, particularly the primary key and decimal stuff.

Rewritten Facebook iPhone App

Nick Bilton (via Chris Espinosa):

One of the Facebook engineers said the new application has been built primarily using Objective-C, the programming language used to build applications for iOS. Many of the components of the current version of the Facebook app are built using HTML5, the Web-based markup language.

I’m surprised they went the HTML way to begin with, given Apple’s experience with some of the original built-in apps.

Nisus Writer Pro

William Porter:

As I worked on this review and reacquainted myself with Nisus Writer Pro, again and again I wrote a note about something I thought Nisus Writer Pro couldn’t do, and again and again I discovered that I was wrong. Here’s the executive summary: Nisus Writer Pro is a word processing power tool. This power does require a bit of effort to master, but compared to Microsoft Word, Nisus Writer Pro is remarkably user friendly.

If I used a word processor these days, it would probably be Nisus Writer Pro. I probably even have the floppy disk from one of the original versions somewhere. But over the years my workflow has inverted. Instead of writing in a word processing app that supports scripting, I now write markup in BBEdit and write code to process it. This seems like far from an ideal solution, but in practice it works. I’m still waiting for a product that handles writing, editing, and layout; flexible PDF, Apple Help, Web, and e-book output; includes; version control, change tracking, and text comparison. Nisus Writer Pro and, to a lesser extent, Pages seem to be approaching this holy grail but aren’t there yet.

AppleScript, appscript, Scripting Bridge, and Automator

There’s way too much to summarize here, but Dr. Drang and Clark Goble have posted on these topics with insightful comments by Hamish Sanderson, Matt Neuberg, and Andrew Barnert.

I’m not quite as negative on Scripting Bridge as others, but that may only be because I haven’t used it as heavily. It works OK for my purposes, but it certainly seems unfinished, and I’m not satisfied with either the exception- or delegate-based error handling.

For a while, it seemed that AppleScript, with good framework and bridge support, could become really great for both users and developers. Instead, it’s kind of been in stasis. We have Automator and AppleScriptObjC, which didn’t really live up to their potential. And XPC is the new hotness, but (so far) it’s solving a different and narrower problem.

Retina MacBook Pro Burn-In

Lloyd Chambers:

The problem occurs in as little as 20 minutes; close the window and the desktop is left with a latent image; a ghost image of whatever text or graphic was in the window left on screen.

Quitting the Finder or logging out has no effect, indicating that the problem is a hardware (screen) issue, not just a screen-bits (graphics memory) issue.

Suzanne Choney: has contacted Apple for comment; we will update this post if we hear back. Individual users, sharing their stories on the company's support site, have said that when they've notified Apple, or taken their laptops into Apple stores, new laptops have been ordered for them as replacements. The reason for the problem has not yet been explained.

There are also threads about this in Apple’s forums and at AppleInsider.

Update (2012-07-03): He’s getting the computer replaced.

Update (2012-09-16): Vojtech Rinik:

As it is always with Apple, there is one more thing. Some of the new Retina screens suffer from a picture burn in issue. The related discussion on Apple Forums is over 200 pages long.

My Retina MacBook Pro also suffers from burn-in, although it did not manifest at the time I wrote this post. I can live with the image retention it as-is, and I don’t want to go through the hassle of replacing the computer. The replacement screen may also be defective, and Apple may break or damage something else while replacing the screen. The main reason I got this computer was the months-long process of getting Apple to repair my previous MacBook Pro. However, I also worry that the burn-in problem will get worse over time and that therefore I should get it replaced now, under warranty.

Steven Sande reports that you can enter the Terminal command:

ioreg -lw0 | grep \"EDID\" | sed "/[^<]*</s///" | xxd -p -r | strings -6

If the display code begins with “LP” it’s an LG display; the Samsung ones seem to work better.

Update (2012-09-20): Marco Arment:

I’m mildly annoyed, but as John Siracusa recently discussed in Hypercritical (starting at 16:49), getting it repaired or replaced always carries the risk that the likely-refurbished replacement might be a lemon in other ways. And I may need to get multiple replacements before finding one without image retention.

Update (2012-10-22): Unfortunately, Samsung will no longer be supplying Apple with LCDs.

Update (2014-06-01): Marco Arment notes that the image retention problem seems to get worse over time.

Sandboxing Core Data and Migrations

Samuel Williams:

As Property Manager acquires new features (in this case, additional tagging and notation facilities), the data model needs to be updated. This in turn depends on CoreData to migrate the user’s previous documents to the latest data model. Traditionally, CoreData migrates the data transparently when the user opens the file, however here lies the problem with sandboxing: the updated file cannot be saved to disk unless the user is presented a NSSavePanel. Because of this, automatic migrations will fail.

Yojimbo and iCloud

Rich Siegel:

Please note that once we release a new version of Yojimbo with iCloud support, Yojimbo will only be available in the Mac App Store. This is because Apple has decided that any applications that use iCloud for sync may only be distributed through the Mac App Store. Therefore, all Yojimbo customers who wish to use iCloud to sync data will have to separately purchase the new version of Yojimbo from the Mac App Store once it becomes available.

Andy Ihnatko:

It’s easy for us all to think “Apple has this new iCloud service that’s way, way better than MobileMe. This is going to be great!” But a lot of developers are really feeling the pain. Products that were working just fine are now broken. Time, money, and resources that developers could be investing in making a great product even better must instead be spent just to keep their software working.

Both MobileMe and Core Data iCloud syncing are headache-inducing. Syncing is a hard problem.

Monday, June 25, 2012

Dogfooding the Sandbox

Rich Mogull:

Does Apple sandbox their own apps? -- Not those sold in the Mac App Store. And, to be honest, it would really help their case with developers if Apple would follow their own rules. It would also help Apple better understand developer concerns and improve entitlements if their own teams had to work within the same restrictions. Perhaps they are moving this direction internally, but the current versions of Apple’s major applications in the Mac App Store (like Aperture, Final Cut Pro, iLife, and iWork) are not sandboxed.

Manton Reece:

This reminds me of Twitter. When Twitter forced third-party clients to move to OAuth, but didn’t change their own app to use it, many developers said it was a double standard. Twitter’s response: the official Twitter app was part of the service, not really a separate app, so it didn’t need to use OAuth.

Indeed, after the June 1 deadline, Apple issued non-bug-fix updates such as iPhoto 9.3 and Aperture 3.3, yet they remain unsandboxed. Meanwhile, I’ve heard from at least one developer that Apple deemed a third-party 0.0.1 bug-fix update to not be a bug-fix, and so rejected it for not being sandboxed.

How Amazon Has Made Book Searches Less Useful

Kirk McElhearn:

Amazon is very efficient at selling multiple versions of public domain books, but they sell so many now that readers can be flustered when searching for them. Since the search results don’t take into account the actual worth of the books – editions from reputable publisher, for example – the dreck floats to the top of the list. It’s time for Amazon to improve searching, so users can filter out all of that, and find the books worth buying. And they need to stop favoring their own CreateSpace books, which is an anti-competitive practice.

FileBuddy 10.0b1

I thought the venerable FileBuddy utility was long dead. It had been three years or so since the last update, and developer Laurence Harris had all but disappeared from public forums. However, it looks like it’s coming back; a beta of version 10 is now available for download and purchase (via Christopher Stone).

Update (2012-06-27): Matt Henderson reports on his disturbing upgrade experience.

Sunday, June 24, 2012

AnandTech’s Retina MacBook Pro Review

Anand Lal Shimpi:

What’s even crazier is Apple wasn’t pleased with the difference in baseline filtering quality between the Intel HD 4000 and NVIDIA GeForce GT 650M GPUs. As the Retina Display MacBook Pro would have to regularly switch between GPUs, Apple wanted to ensure a consistently good experience regardless of which GPU was active. There are a lot of filtering operations at work when doing all of this resolution scaling, so rather than compromise user experience Apple simply wrote its own default filtering routines. Apple’s obsessive attention to detail really made it possible to pull all of this off. It’s just insane to think about.


To be quite honest, the hardware in the rMBP isn’t enough to deliver a consistently smooth experience across all applications. At 2880 x 1800 most interactions are smooth but things like zooming windows or scrolling on certain web pages is clearly sub-30fps. At the higher scaled resolutions, since the GPU has to render as much as 9.2MP, even UI performance can be sluggish. There’s simply nothing that can be done at this point - Apple is pushing the limits of the hardware we have available today, far beyond what any other OEM has done. Future iterations of the Retina Display MacBook Pro will have faster hardware with embedded DRAM that will help mitigate this problem. But there are other limitations: many elements of screen drawing are still done on the CPU, and as largely serial architectures their ability to scale performance with dramatically higher resolutions is limited.

Saturday, June 23, 2012

Retina Glider

Devin Coldewey (via Buzz Andersen):

The glider could arguably be called the mascot of the Game of Life — that is, if the game ever needed one. It represents both the emergent complexity of the game and its extremely simple core nature.


Etched permanently into the body of one of the most advanced computers ever made, then, is a symbol of experimentation, tradition, and potential — being killed.

The article doesn’t mention that Eric Raymond has proposed the glider as the hacker emblem. It represents the opposite of the direction Apple is taking its hardware and software.

Reclaim the Legacy Highlights & Shadows Adjustment in Aperture 3.3

Joseph Linaschke:

If you open pre-3.3-adjusted photo that had Highlights & Shadows applied to it, then you will see the old adjustment tool, with a new “Upgrade” button in place. Turns out you can save that old adjustment as a preset (set to zero even), and then add that to any new photo.

In most cases, I found the old Shadows tool to be overly sensitive. However, this lets you get back the Radius, Color Correction, and High/Low Tonal Width adjustments. Mid Contrast, which I found to be the most useful of the Advanced adjustments, has been promoted to the top level in 3.3.

Friday, June 22, 2012

Kindle App Margins

Bryan Larrick (via Kyle Sluder):

What Amazon has done is create a solid mass of text that has no breathing room. It’s claustrophobic. It’s stressed. It’s like standing three feet in front of a brick wall and pretending you’re appreciating the architecture of a building.

Responding to App Reviews on Google Play

Nathan Olivarez-Giles:

The idea here is to give developers a platform to address complaints, offer helpful tips, and let users know when features they’ve requested in an app review have shown up.


Developer responses will be public alongside reviews on a Google Play app listing. And, when a developer has something to say, Google will email the user who wrote the review to let them know there is a response.

So far it’s limited to “top developers,” which leaves a good opportunity for a competing app store to do better.

Update (2012-07-01): Matt Gemmell:

A review that you feel compelled to respond to is probably, in essence, a conflict situation. We have a rule of thumb for this: deal with conflict privately. Don’t shout at subordinates in front of the whole office. Don’t bicker with your spouse at someone else’s dinner party. It’s the same rule. It doesn’t matter what the tone or content is, on average; it’s still a crappy way to handle a situation.

Craig Hockenberry:

One idea I’ve had is giving developers the ability to add a support link to a review.

There are certainly some problems with responding in public, but I still think it would be better than the status quo.

PayPal Starts Bug Bounty Program

Dennis Fisher (via Slashdot):

PayPal’s decision to offer financial incentives to researchers follows the establishment of similar programs by companies including Google, Mozilla, Facebook, Barracuda and others. Google’s bug bounty program may be the most well-known and comprehensive, as it includes bugs not just in its software products such as Chrome, but also its Web properties. The company has paid out more than $400,000 in rewards to researchers since the program began and researchers who consistently find bugs in Google’s products can make a nice side income off the program.

Litter Boxing

Gabe Weatherhead:

Sandboxing is intended to protect Mac users from malware and poorly designed apps. I think it will accomplish some of these goals, but with a high price.


I would like a control in the preferences app to allow App Store apps to override core OS functionality and escape some of the sandboxing rules. Let’s call it “geek-mode” for now. Geek-mode should take effort to find. Geek-mode should require a password. If geek-mode is off, the App Store should not show apps that require it.

In my view, there should be entitlements available for everything that apps want to do. This would allow every app to be sandboxed, but apps would be prevented from doing things they aren’t supposed to be doing. Then, because every app comes with its list of entitlements, it would be possible for the system or the store to make the user opt-in to access apps that are potentially dangerous or confusing.

Beware a Full Recovery Partition

Little Snitch is the only third-party kernel extension that I use. I doubt that it’s the cause of the kernel panics I’ve been having, but I wanted to temporarily uninstall it just to be sure. I ran the uninstaller, which said it was successful, but the bundle identifier was still showing up in my kernel panic logs and in kextstat’s list of currently installed extensions. This was strange because I could see that the .kext file had indeed been deleted from the /System/Library/Extensions folder.

Even stranger, the logs showed version 2.5.1, when I’d had 2.5.2 installed for over a month. It seemed that Mac OS X’s kernel extension cache wasn’t being updated. I found various tips online, such as sudo touching the installed kernel extensions or removing the folder /System/Library/Caches/ None of these helped.

I then tried manually unloading the kernel extension:

icarus$ sudo kextunload -v -b at.obdev.nke.LittleSnitch
(kernel) Can't remove kext at.obdev.nke.LittleSnitch; services failed to terminate - 0xe00002c7.
Failed to unload at.obdev.nke.LittleSnitch - (iokit/common) unsupported function.
Jun 21 10:37:46 icarus[92]: Error copying //System/Library/Caches/ to /Volumes/Recovery HD/
Jun 21 10:37:46 icarus[92]: ucopyRPS - Error copying files used by the booter. errno 28 No space left on device

The error shows that the OS was trying to copy to the “Recovery HD” partition for Lion Recovery, but the partition was full. Apparently it was aborting without updating the cache on my main partition (which was not full). I used diskutil to mount the “Recovery HD” partition, and sure enough it only had about 40KB free.

Live-resizing the partitions didn’t seem to be possible, so I reformatted my drive and reinstalled Lion, which created a fresh recovery partition (now called “Boot OS X”, for some reason), which has 128 MB free. Now there’s enough space for the system to automatically update the kernel extension cache.

Sidenote: While trying to free up some space on the recovery partition, to avoid having to repartition, I inadvertently messed something up and rendered the main partition unbootable. Since there doesn’t seem to be a convenient way to create a new recovery partition, it’s probably a good idea to keep a backup. I’m going to create a device image of mine using DropDMG. I also learned that Carbon Copy Cloner can do this automatically when backing up the main partition.

Hate Mail and the New Religious Wars in Tech

David Pogue:

The hostility for and against Microsoft and Apple hasn’t abated. (At a product announcement last week, I sat next to fellow tech columnist Walt Mossberg from The Wall Street Journal. We laughed about our hate mail; Walt, in fact, has identified what he calls the Doctrine of Insufficient Adulation. That’s when you give a rave review to an Apple product – but you still get hate mail from Apple fanboys because, in their judgment, it doesn’t rave enough.)

Hacking Paid Upgrades in the App Store

David Smith (via John Gruber):

So long as you don’t actually delete the old version of the app within iTunes Connect you can continue submitting updates to apps even while they are in the Developer Removed from Sale state. Whether this is intentional functionality is unclear but I have verified that it does in fact work and the resulting approved updates are available for customers.

This is good news, although I still think the App Store needs paid upgrades. One of the strange things about the “hack” is that the store will notify users about minor updates to apps they’ve purchased but not major ones.

TextExpander 4 Leaves Mac App Store

Lex Friedman:

Because TextExpander must observe your keystrokes anywhere on your Mac to be useful, it can’t work in sandboxed form, so TextExpander 4 isn’t available in the Mac App Store. Now that the Mac App Store requires sandboxing, developers of non-sandboxed apps can submit only bug fixes for those apps in the store; any new or significantly updated apps must restrict themselves to operating in a sandboxed environment.

As before, Smile has gone to some extra effort to support both their Mac App Store and direct customers.

Cheaper Google Maps API

Thor Mitchell:

While the Maps API remains free for the vast majority of sites, some developers were worried about the potential costs. In response, we have lowered the online price from US $4 per 1,000 map loads to 50¢ per 1,000 map loads.

With iOS 6 removing the transit features from Apple’s built-in Maps app, I’m hoping that we’ll see some third-party apps (or an official Google one) that use Google’s maps and data.

Surface: Between a Rock and a Hardware Place

John Gruber:

There was no story. It was all over the place: Here’s an ARM tablet. Here’s the clever keyboard cover that goes with it. Now here’s another tablet that looks much the same but a little thicker but in fact is running a different and incompatible OS. Oh and here’s another keyboard cover, this one with moving keys. Design is about making decisions, and Microsoft could not decide. ARM or Intel? Who should be on stage? Soft or hard keys on the keyboard cover? They went with “all of the above”.

The keyboard cover looks intriguing, though. Typing on an iPad is still no fun.

Wednesday, June 20, 2012

The MagSafe to MagSafe 2 Adapter

Paul Kafasis:

This is the MagSafe to MagSafe 2 adapter attached to a piece of card stock, along with the box it came in, the booklets of information which accompanied it, the piece of cardboard to which that box was attached (and to which a packing slip is still attached), and the box in which all that arrived.

MagSafe 2 seems like a good idea. I’m glad Apple is going back to the T-shaped connector; the asymmetrical one that debuted with the original MacBook Air was not very usable. But it doesn’t make a whole lot of sense to ship my adapter separately, weeks in advance of the notebook it’s designed to work with. I expected that Apple would just stick it in the computer box, in a little plastic bag, like it used to do with the Mini-DVI adapters.

Update (2012-07-30): David Pogue doesn’t like MagSafe 2:

The magnet is too weak. It’s so weak, it keeps falling out. It falls out if you brush it. It falls out if you tip the laptop slightly. It falls out if you look at it funny. It’s a huge, huge pain.

Update (2012-08-01): Lukas Mathis:

Obviously, I should have been more careful. But with either an L-shaped connector or the MagSafe 1’s stronger magnets, this probably wouldn’t have happened. And perhaps the thicker glass on the older MacBooks would have survived this accident. Tiny design decisions can add up.

Tuesday, June 19, 2012

Edge Cases

Edge Cases:

A weekly podcast about (mostly Apple-related) software development by Andrew Pontious and Wolf Rentzsch.


Core Data Transient Properties

Andrew Pontious:

What I hoped they would be was full-fledged members of the database which just happened not to be saved to disk.

What they actually are is glorified instance variables. The trouble with using a custom subclass ivar is that its value is only present in the specific object you set it on. If you get a different object representing the same entity, say from another context, it won’t have that value. These can lead to lots of problems.

Netflix Quietly Smothers 3rd Party App Ecosystem


As the API program evolves with the business, we now need to make some changes. While we will continue to support third parties as they develop and offer Web sites and applications that interact with Netflix, these changes are designed to do so in a way that is aligned with our broader objectives.

Goodfilms (via Marco Arment):

What they are announcing is that from September 15th you will no longer be able to export your viewing history and associated ratings through their API. All API endpoints that expose rental history, and other parts of the API that tangentially supply that information will be removed. All they’ve said regarding motivation for that change is that they are changing their API so that it “is aligned with our broader objectives”. It appears Netflix considers what films you’ve watched and what you thought of them as their data, not yours.

MacBook Pro Retina Display Reflections


Retina display uses IPS technology for a 178-degree wide viewing angle, and has 75 percent less reflection and 29 percent higher contrast than the previous generation.

C. David Tobie:

The photo below shows a previous generation of 15 ” Unibody MacBook Pro (hereafter just “Unibody”) and the Retina Display MacBook Pro (hereafter Retina). As you can see, reflections in both screens are still sharp, and not smeared as with a matte screen. On the other hand, there is definitely a lot less reflection in the Retina screen on the left. There is also a double glazed artifact on the Unibody screen, from the extra layer of glass, which causes a second ghost image offset from the main image. This photo was shot in a dimly lit image editing studio; I’ll leave it to you to decide if this reduction in reflectance is sufficient to allow you to move to a gloss screen; but as someone moving from a Unibody MacBook Pro with a gloss screen already, this is all good from my perspective.

Raymond M. Soneira (via Jason O’Grady):

I have been making a big deal about Screen Reflectance since 2004 - all of my Mobile Shoot-Out articles include Lab Measurements of total and mirror reflections from displays. So I’m glad that Apple is now making this a marketing issue. According to Apple the MacBook Pro Retina Display does not have a separate cover glass with an Air Gap (like the new iPad 3). This lowers the Screen Reflectance (like on the iPhone 4) but it’s more difficult and expensive to manufacture (and a lot more expensive if you crack the screen). Apple is claiming a 75 percent reduction in Glare, which is one form or another of Reflectance. That is a factor of 4 reduction to 25 percent Reflectance of previous models. I find that 4:1 reduction claim hard to believe… more likely is a 25 percent reduction to 75 percent Reflectance.

Apple Shifts Its Icon Guidelines

Michel Fortin:

I’ve been reading the Icon Design Guidelines in the OS X Human Interface Guidelines today and noticed that Apple not only added one size of icon that should be created for use on Retina Macs, but they expect you to create the whole icon set twice.


PNG icons files should be put in a folder ending with .iconset and run through the iconutil command line tool to create the ICNS file. […] This sentence is interesting: “You must use iconutil, not Icon Composer, to create high-resolution .icns files.” What happened to Icon Composer? This really does feel like a last minute change.

Thursday, June 14, 2012

Growl, Notification Center, and Sandboxing

Chris Forsythe:

The benefit of this is that you do not need to rewrite your code, you’ll simply drop in an updated Growl.framework, update the XPC if you use that, and then you’re done. You now support Notification Center. If Growl is running, then Growl is used. The notification experience is pretty straight forward, users who want Growl are happy, users who just want NC are happy, etc etc.

Growl 1.4 is the current version, and the post talks about the upcoming Growl 2. However, I’m now building my apps with version 1.2.3 of the Growl SDK. Growl 1.0 through 1.2 used distributed objects and distributed notifications to communicate from the application to Growl. These are mature Cocoa APIs (dating back to NeXT) designed for interprocess communication. They are not allowed under Apple’s sandboxing rules, so for version 1.3 the Growl developers had to build an entirely new communication mechanism (called GNTP) atop the network APIs.

The developers started early and were ready for the original November 2011 sandbox deadline. They’re still working hard on bug fixes and improvements, but unfortunately my experience is that the new system is not mature enough yet. The new version of the Growl framework has caused many crashes in my applications, and the Growl application itself regularly gets into a state where it stops processing notifications and pegs the CPU.

The good news is that if your application isn’t sandboxed, or if you’re lucky enough to be granted a temporary entitlement, you can use the old version of the Growl framework with the new version of the Growl app. This seems to be perfectly reliable, although I’m not sure whether it will continue to work once the Growl application itself is sandboxed.

Wednesday, June 13, 2012

Retina MacBook Pro SSD

Anand Lal Shimpi:

Keep in mind that although the interface is electrically SATA, it is not physically SATA or mSATA or any other standardized interface - this is entirely Apple’s own creation. I suspect we’ll see 3rd party vendors produce SSD upgrades in the future, but unlike previous Apple SSDs, performance won’t be a reason to want to upgrade. Samsung’s PM830 is quite honestly the best behaved SSD controller I have used under OS X, it is no surprise that Apple chose it.

Apple is now advertising its flash storage as being faster than hard drives, whereas in the past it merely stressed that SSDs were more reliable.

The Missing Link Between Your iTunes Library and the iTunes Store

Kirk McElhearn:

Yet when you browse the iTunes Store, you see prices on albums and songs. Since iTunes knows what music you own, it should be able to show you which items you have already purchased when you browse the store, instead of showing you prices for songs or albums that are in your library. This is the case for apps in the App Store section of the iTunes Store, and I see this with TV shows (but not movies). Yet this is not the case for music.


Kirk McElhearn:

My Macworld colleague Chris Breen recently wrote about why he thought Ping failed, but I think both he, in that article, and I, in my article just after launch, missed the real reason. Ping was designed to be nothing more than a marketing tool, and it was wrapped within a proprietary application: iTunes on the Mac and iOS. Because of this, when users wanted to interact with others on Ping, they had to use these applications. They couldn’t access them via a web browser, which, in turn, meant they had to “visit a store” to do anything.

Speak for Yourself

Keith Wagstaff (via Jeff Johnson):

The app is being threatened by a joint lawsuit from Prentke Romich Company (PRC) and Semantic Compaction Systems, which claim that Heidi LoStracco and Renee Collender — the two speech pathologists behind Speak for Yourself — infringed on over 100 of their software patents. LoStracco and Collender fought back, claiming in court that the lawsuit is baseless.

Now it seems that despite the fact that the lawsuit is still in court, Apple has pulled Speak for Yourself from the App Store.

Speak for Yourself:

Now our sadness and disappointment have turned to indignation. Speak For Yourself will continue to fight this baseless lawsuit and the obvious, and blatant interference with your fundamental right to a VOICE which is motivated solely by their desire to drive SFY out of existence. That will not happen. We have started our fight in the Court with a motion for an injunction against Semantic and PRC. You can read our court paper by clicking on this link.

PRC employee JDonofrio:

Our patent attorney found more than 100 instances of infringement on the software patents that power our devices. We reached out to the developers of the app and offered various business solutions. All of our offers were refused and they started marketing the app in the iTunes® store late last year. This is the first lawsuit we have filed in our 45 years in business.

Dana Nieder:

According to this court document, here’s how this happened: PRC/SCS contacted Apple and requested that Speak for Yourself be removed from the iTunes store, claiming that it infringes on their patents. In turn, Apple contacted SfY and requested their response to these claims. The lawyer for SfY responded, explaining to Apple exactly why the infringement claims are unfounded, referring Apple to the current open court case, and pointing out that PRC/SCS had not asked the court for an injunction ordering the app to be removed from the store. For months, nothing happened . . . and then on June 4th Apple notified SfY that the app had been removed, due to the fact that the dispute with PRC/SCS had not been resolved.

Just because the app helps people doesn’t mean that it should be allowed to break the law. On the other hand, I have to wonder whether it actually infringes and how many of those software patents should have been granted in the first place. In my view, Apple shouldn’t be making this sort of determination. Let the courts decide the case and decide whether the product should remain on the market in the interim.

Update (2012-06-14): Dan Ravicher:

Savvy actors will learn and then exploit this policy, which will destroy competition and erode developer faith that the iTunes marketplace is hospitable to new entrants. It’s a nearsighted foolish policy that Apple will have to change at some point. Accusations are too easily made to allow them to be the sole basis justifying takedowns.

Tuesday, June 12, 2012


Marcel Weiher:

Having been a great fan of algorithmic drawing every since my exposure to DisplayPostscript on the NeXT Cube, I found all of this sufficiently unsatisfactory that I decided to work on a solution, the first step of which is a lightweight drawing context that provides a reasonable Objective-C drawing API on top of CoreGraphics and works the same on OSX and iOS.

Shift-Option for Finer Control

Mac OS X Hints reports that you can hold down the Shift and Option keys when changing the volume level or brightness to make finer adjustments.

Update (2012-09-29): Charles Parnot notes that you can hold down Shift to prevent a sound from being produced when changing the volume.

MacBook Pro Retina Display Analysis

Anand Lal Shimpi:

By removing the cover glass Apple reduces the number of reflections and thus glare, however it’s important to point out that this still isn’t a matte display. I’ve never been particularly bothered by glossy screens so I’m really the wrong person to ask whether or not the reduction in reflections makes it usable. Compared to my matte MacBook Pro, the Retina Display is obviously more glossy but at the same time remarkably close.

Update (2012-06-13): iFixit has a teardown.

Ross Miller:

…we ran CPUTest for 12 minutes to see just how loud and hot we could get the machine. There’s good news and bad news: while the fan was surprisingly quiet — even in an apartment with closed windows and some light traffic and rain outside, I could barely hear it — the heat was in the ballpark of what we’d expect from our personal 2011 MacBook Pro. Which is to say, hot — particularly the metal rim around the ‘U’ key, which is about where the processor rests internally. It's hard to touch for more than a few seconds.

Friday, June 8, 2012

File System Access

Steve Jobs:

You don’t keep your e-mail on your file system, right? The app manages it. And that was the breakthrough, as an example, in iTunes. You don’t keep your music in the file system, that would be crazy. You keep it in this app that knows about music and knows how to find things in lots of different ways. Same with photos: we’ve got an app that knows all about photos. And these apps manage their own file storage.

Dave Winer:

You can shuffle the parts around, and you still have the same problem. The data ultimately is organized in a hierarchy. If you can visualize that hierarchy, and provide interactions that make sense to edit and view that hierarchy, there’s no reason the same browser shouldn’t be used for all types of data. It does not have to be a “wall.” All your stuff ends up inter-relating anyway. Do you use the emailer to send music files? Yes of course. Do you use a text editor to write about the podcast you just recorded? Yes. So why have 20 mediocre tools when what you need is one really great one.

iTunes as a view on top of the filesystem makes sense. The iOS/iCloud view of a future with no shared state or messaging seems like a dead end to me. I don’t think it will work to pre-determine all the interactions that people will want.

Wednesday, June 6, 2012

LinkedIn Password Breach

Lex Friedman:

LinkedIn said on Twitter that it’s investigating the potential password hack. In the meantime, it's another good reminder to use a different password for each of your different Web services; if you have a LinkedIn account and use the same password elsewhere, you may want to start changing some of those passwords now.

Daniel Jalkut:

What if I committed the foolish move of using the same password on LinkedIn as I did on another, more important site? Now a hacker with possession of my username and password for LinkedIn can make some very good guesses about my username and password on other sites.

He’s written an app and an AppleScript to help.

Update (2012-06-08): Poul-Henning Kamp (via Graham Lee):

LinkedIn is learning fast right now, according to their damage control missives, they have now implemented salting and “better hashing.” But we have yet to find out why nobody objected to them protecting 150+ million user passwords with 1970s methods .

And everybody else should take notice too: Even if you use md5crypt, you should upgrade your password scrambling algorithm. As a rule of thumb: If it does not take a full second to calculate the password hash, it is too weak.

The Inside Story of the Death of Palm and webOS

Chris Ziegler:

The following is an account of Palm’s ascent prior to the launch of the Pre, the subsequent decline, and eventual end, assembled through interviews with a number of current and former employees.

Ray Bradbury, RIP

Andy Ihnatko:

The first time, it was Douglas Adams, and the surprise came because he was just so damned young. Bradbury’s death took me by surprise because…well, it’s weird, but it seemed like Ray Bradbury was never going to go away, you know?

Fish Shell

Peter Ammon:

The new fish is a POSIX command line shell with delightful, intuitive features like autosuggestions, 256 color syntax highlighting, web based configuration, and lots more. Best of all, these features just work, out of the box. No arcane syntax, no twiddling obscure knobs.

It runs inside your favorite terminal emulator, such as, xterm, or iTerm. You’ll feel right at home with its familiar syntax, and its new features will make you instantly more productive, without getting in your way.

Migrate From App Store Witch to Direct Witch

Rob Griffiths:

Unfortunately, with the rules that are presently in place, Witch is not sandboxable, which means that today’s release of Witch 3.9.1 is the last with any new features in the App Store—unless Apple changes their mind, which has been known to happen if enough users let them know how they feel about things (hint hint!). We fully intend to continue updating Witch with new functionality, but all such updates will only be applicable to the direct sales version.

Their direct version can recognize Mac App Store licenses, but unfortunately they are not allowed to mention in the Mac App Store description that the direct version exists. So customers who have not signed up for an e-mail list or RSS feed are likely to see the updates stop, with no explanation. It is possible to have an in-app “news” feature that displays information to the user, but Apple will reject apps that use it to mention updates or versions outside the Mac App Store.

Script Debugger 5

Looks like a solid update to one of my favorite apps. Already, I see that loading dictionaries is much faster.

Monday, June 4, 2012

Lion Zombie Document Mystery Solved

Matt Neuburg:

Here’s the answer: If an application is running at the time you shut down the computer (or restart or log out), that application will reopen its zombie windows the next time it is launched, even if you have told it not to.

I, too, have found that the only way to prevent zombies (and get the firewall working properly) is to manually quit every app before shutting down or restarting.

This paragraph doesn’t seem right, though:

The purpose of Sudden Termination is to support Resume (wouldn’t you know it?); most applications (perhaps all) that support Resume also support Sudden Termination, and it’s here that the trouble lies.

Applications have to opt into Sudden Termination via NSSupportsSuddenTermination, which predates Resume. I’ve seen lots of applications that Resume but few that support Sudden Termination.

Matrox DS1


Matrox DS1 gives you the most from your Thunderbolt port by letting you add a large display, a full size keyboard, a mouse, a wired network, and many other peripherals using a single cable. In an instant, you enjoy all the productivity benefits of a desktop computer.

When I eventually upgrade to a Thunderbolt MacBook Pro, I would be interested in a more professional-level dock. It seems that nobody makes one right now. The $249 (plus $50 cable?) DS1 doesn’t offer dual-link DVI or DisplayPort, so it’s limited to smaller displays, and it has only one USB 3 port and two regular ones. The $300 Belkin dock also has limitations. A dock that supported a full-size display, that had enough fully powered USB ports that I didn’t need any hubs, maybe even FireWire or eSATA—that would be interesting.

Update (2012-06-06): AnandTech covers the Matrox and Belkin docks.

Sunday, June 3, 2012

Instapaper Background Update Locations

Marco Arment:

iOS doesn’t yet permit apps like Instapaper to automatically download new content in the background on a regular schedule, but Background Update Locations can get most of the way there for a lot of people. Simply add up to 10 locations that you enter and leave often, and Instapaper will frequently update without manually launching it.

According to Apple, it’s not OK to let the user set a predictable schedule for downloading new content. But it is OK to have a more complicated user interface, and needlessly fire up the GPS chip, to produce a semi-predictable schedule. Meanwhile, the built-in Mail app can check for new messages on a repeating schedule, but third-party apps cannot. See also the background music kludge.

Friday, June 1, 2012

The Sandbox Chill

Brent Simmons:

I have to admit that I remain worried about sandboxing. I find myself discarding good ideas for apps just because of sandboxing rules. That can’t be a good thing for the platform.

I’m not worried so much that Apple will prevent me from running the Mac apps that I choose, but rather that they will indirectly prevent those apps (or features) from being developed in the first place.

A Tale of Two Cryptographically Signed OSes

Patrick Rhone:

So, today Apple released a very nerdy but quite well written in a way that humans can understand white paper on iOS security. It’s a fascinating read and I urge you to do so in full. At the outset, Apple provides the following explanation about the first level of security in iOS — The Secure Boot Chain…

Fear and Loathing and Windows 8

Michael Mace (via John Gruber):

My conclusion is that Windows 8 in its current form is very different; attractive in some ways, and disturbing in others. It combines an interesting new interface with baffling changes to Windows compatibility, and amateur mistakes in customer messaging. Add up all the changes, and I am very worried that Microsoft may be about to shoot itself in the foot spectacularly

Alfred and Sandboxing

Vero Pepperrell:

You’ll continue to find the free version of Alfred in the MAS, as Apple allows existing apps to remain in the store and receive bug fixes. However, if you’re looking for the big juicy new features, your best bet is to download Alfred from our website. With this version, you can take advantage of the Powerpack and of pre-releases, which give you a sneak preview of new features.

API Copyrights Are Dead

Eric Raymond:

Instead, Alsup did something subtle and clever. Under the guise of writing an exhaustive dissection of Oracle’s claims, he actually wrote a sort of roadmap or how-to manual explaining how to demolish claims of API copyrightability in general. If and when such a claim is again litigated in a U.S. jurisdiction, you can bet a vital organ that this ruling will be cited – and even though it’s not claiming to decide anything but the instant case, it is near certain that the judge will treat it as precedential for that future case in exactly the same way that (for example) Computer Associates vs. Altai has been repeatedly cited.

After X Years Programming

Dave Winer:

The conventional wisdom is that you “move up” into management long before you've been coding for 37 years. Only thing is I don't see programming as a job, I see it as a creative act. I drew a big circle shortly after I started, and said I was going to fill the circle. So until the circle is full, I still have more to do.

Mac App Store vs. Buying Direct

Jonathan Rentzsch:

Apple now only accepts sandboxed Mac apps, clarifying the situation: customers should buy Mac apps directly unless there’s a good reason not to.

Here are some reasons why it’s preferable to buy non-sandboxed apps directly from developers…

Reverting Apple’s “PNG’s”

Daniel Jalkut:

Essentially, the authors of this tool figured out the optimizations that Apple were doing, and reversed the steps to convert them back into standard PNG images. The tool relied upon a compiled-in version of the libpng library.

Recently when I went to use this tool again, I noticed that it did not work reliably. It dumped lots of memory errors and complained of “extra compressed data” in the input files. I then proceeded to spend too many hours trying to fix it, bashing my head against libpng, before my friend Tom Harrington alerted me to an Xcode-bundled tool that can do the job reliably:


Jens Ayton:

…a more accurate description of the issue is that they are not PNGs despite using a PNG header and similar file structure and purloining the .png extension.

The PNG specification has very specific conformance requirements specifically to avoid incompatible variants popping up, and disguising the iPhone-optimized pictures as PNGs is a downright Microsoftishly destructive thing to do.

Sandboxing Deadline Arrives

Lex Friedman:

Rich Siegel of Bare Bones Software spoke to Macworld about his concerns regarding sandboxing last November too, rattling off a long list of features in the company’s popular text editor BBEdit that he feared might not be allowed going forward: multi-file search and replace; text factory applications; multi-application automation using AppleScript or Automator; Open File by Name; disk browsers; live folder views in projects; SCM integration; bulk HTML tools operations (syntax check, site update); and lots of behind-the-scenes stuff such as scanning directories for ctags data. Back then, Siegel said he literally wasn’t sure which features BBEdit would be able to continue to support once sandboxed. And now that sandboxing is here, Siegel still isn’t sure…

First, there’s what your app does. Then there’s the subset of features that one would expect to work based on Apple’s WWDC presentation of the sandbox design and intent last June. A subset of that are the features that Apple has actually implemented. And a subset of that are the ones that actually work in Mac OS X 10.7.4 (or the various 10.8 previews). Thus, as Siegel says, “there’s a lot of testing to do.”

On the one hand, it’s kind of a waste of time to do this testing. The longer you wait, the more OS bugs will be fixed. You could work on improving your app and sandbox it more easily later. On the other hand, in theory, if you find and report the bugs now they’ll be fixed sooner. If showstopper bugs aren’t fixed by the time your feature update is ready, you can’t ship it.