Archive for September 2016

Friday, September 30, 2016

Mailtitude: Take Apple Mail to the Next Level

A bunch of us developers of Mail plug-ins and accessories have gotten together for a sale. Through October 10, you can get the following products at a discount: EagleFiler, Herald, InfoClick, Letter Opener, Mail Anti Inline Plugin, Mail Perspectives, MailButler, MailHub, MailTags, SigPro, SpamSieve, and Tealeaves. This is not a bundle, just a selection of quality products available directly from their developers via a shared coupon code: MAILTITUDE.

Sandboxed Launch Services

Daniel Jalkut:

As far as I can tell, new restrictions have been placed on sandboxed apps in 10.12 that prevent such apps from using a variety of LaunchServices functions (or their NSWorkspace abstractions) that would reveal the path on disk of a specific other application.

For example, if I have BBEdit installed in ~/Applications, a sandboxed MarsEdit cannot tell that it exists. This is even though MarsEdit has an entitlement to send Apple events to BBEdit, and it can open documents in BBEdit, and BBEdit may already be running. With previous OS versions, NSWorkspace would let MarsEdit look up BBEdit by its bundle identifier, even though MarsEdit might not have access to read the returned URL. On Sierra, unless BBEdit is in the global /Applications folder, or another that sandboxed apps can read, NSWorkspace returns nil (and no error) as if BBEdit didn’t exist. Apparently, returning the inaccessible but nonetheless useful URL is considered a bug.

This is a bit surprising because we know that Launch Services is not actually scanning for applications from within the sandboxed app. Rather, it’s returning cached data that was gathered by a process with greater privileges. However, it turns out that that process verifies the privileges in the context of the application. The application only receives URLs that it can read.

My takeaways from this long Twitter conversation are:

Lastly, since this API change was not documented, I was thinking about how a developer might have detected it, other than through a bug report such as mine to Jalkut. The natural answer is unit tests. I have a lot of tests of basic OS behavior that can help detect changes and regressions. Unfortunately, as far as I know, Xcode can’t run unit tests inside the sandbox. So code that works as expected under test may not work as expected in an actual app.

Omni’s IAP Trials and Upgrade Discounts

Ken Case (via Twitter):

The underlying problem, as noted above, is that downloading the app has a fixed cost. We’ve always set that cost to be the standard price of our app, leaving us no way to charge less. But what if we take a fresh look at this problem, and make our downloads free? You know, like every iPhone app in the Top Grossing List has already done? It’s not that they don’t sell anything—or they wouldn’t be on that list. They just don’t sell the original download. (Which we’ve never done on our own store either.)

With the original download free, we can implement any pricing options we want to offer customers through In-App Purchases. We can offer our standard unlocks of Standard and Pro, of course. But we can also offer a free 2-week trial which unlocks all of the features of Pro and Standard, letting you freely choose between them. We can offer a discounted upgrade to the new Standard. And we can offer free upgrades to the new versions to any customers who recently purchased the old app.

Marc Palmer proposed something like this in 2014. It’s not entirely clear to me whether Apple’s guidelines allowed it then, or even whether they do now. Nat Brown points to rule 11.9, which said that apps could not contain expiring content or services. It was removed when the guidelines were rewritten in June 2016. Ken Case says that “Apps can offer trials of optional content,” but are app features “optional content” in the same way as game levels? Rule 3.2.1 (iii) says (emphasis added):

Disabling access to specific approved rental content (e.g. films, television programs, music, books) after the rental period has expired; all other items and services may not expire.

Omni is not offering subscriptions, which explicitly can have trials. Perhaps it’s OK for the tier-0 IAP to expire because it’s free.

Either way, it’s key that OmniGraffle will perpetually work as a free viewer-only app if you don’t purchase any IAPs. Otherwise, if it didn’t do anything useful, Apple would not allow it in the store. This is a great fit for Omni, because they want everyone to be able to open their file format, anyway. However, this approach does not scale to other types of apps where there is no natural subset that can be made free.

Assuming Apple allows this, it sounds like a rather convoluted way to get to a pretty good place, although it’s also an admission that Apple is unlikely to make demos or upgrades built-in features of the App Store. Instead, developers will write a bunch of notoriously difficult code to approximate those features, and Apple will have less ability to ensure that it all works properly and consistently for customers.

The Story Behind Claquette

Thomas Zoechling:

Want to showcase an animation or an application feature? Instead of a static screenshot with paragraphs of text, a 3 second GIF works equally well and also draws more attention.


The following sample images were created using different quantization techniques. They illustrate the quality impact of the used algorithm on the final image.


The Image Descriptor section can be used to define a sub-image which does not provide pixel data for a full frame. Instead it contains coordinates and pixel data for a subsection of the full image.

By using frame differences and sub-images with a proper disposal mode, redundant image data can be avoided. Depending on the nature of the input video, this can greatly reduce the file size of the final GIF.

Phoneys iMessage Sticker Pack

Benjamin Mayo:

In the first high-profile iMessage App Store rejection we’ve seen, the developer of the Phoneys sticker pack says Apple has reached out with bad news: the company will pull the app in a week if it is not significantly changed. Phoneys (currently) features stickers that look like iMessage bubbles, effectively allowing users to replace messages from their friends with some funny alternative text.

The app hit #1 Top Paid in the iMessage App Store. Despite getting approved initially, Apple says that the store does not accept “prank apps” and the current form of the stickers violate Apple trademarks …

Adam Howell:

Bill was nice, but to the point. Apple’s lawyers weren’t happy that Phoneys got through the review process. The stickers couldn’t be blue or green, they couldn’t use San Francisco as the typeface, and the app could no longer be marketed as a “prank” app, because Apple doesn’t approve prank apps (even though I myself had never used the word “prank” when marketing Phoneys, others did, and I certainly understood where he was coming from). They were not going to pull the app, Bill made sure to emphasize. They’d give me a week, until next Thursday, to fundamentally change it so that the bubbles looked nothing like iMessage bubbles, instead looking something closer to “comic book cartoon bubbles”.

Update (2016-10-07): Adam Howell:

But, even though Phoneys is as dead as all those predictions that 2016 would be “the year of the bot”, the iMessage App Store is alive and thriving. And at not even 4 weeks old there’s a lot we still don’t know about it. So, I thought it’d be useful to publicly go into Phoneys’ numbers and see what they can teach us about the current state of the iMessage App Store.

Thursday, September 29, 2016

Apple’s iMessage Metadata Logs

Juli Clover:

Conversations in the Messages app feature end-to-end encryption that makes the content of the messages impossible to decipher, but according to documentation found by The Intercept, Apple tracks who its customers send iMessages to and is able to hand that information over to law enforcement when compelled to do so through a court order.

When a text message is sent to someone, the Messages app pings Apple’s servers to see if the person has an iPhone or iPad in an effort to determine whether to send a message via iMessage or SMS. Each ping records date, time, number, and IP address, all of which is kept in a log that Apple says it stores for 30 days.

John Gruber:

It shouldn’t be surprising that Messages does a lookup on each phone number and email address you attempt to send an iMessage to. If there wasn’t some sort of directory lookup, how would the messages get routed? Here’s Apple’s own description, from their iOS Security Guide[…]

Rene Ritchie:

My understanding is that, at some point, Apple’s iMessage engineers decided they needed to keep a metadata log in order to detect and fix problems with iMessage dispatch.


As a result of keeping the log, if presented by a court order, Apple has to turn it over. Same with any log kept by any company.

The State of Apple Music and Streaming

Chance Miller:

In terms of numbers, there were an average of more than 18 million music subscriptions during the first half of this year, which is double the number reported at the same time last year. “Music subscriptions are now significantly bigger revenue generators than CD sales, and virtually equal to permanent downloads,” Sherman writes.


Citing label executives, Bloomberg reports that most Apple Music subscribers are people new to streaming services, not former Spotify users. Spotify is believed to have around 40 million paid users, while Apple has 17 million as of earlier this month.


Sherman notes that while a song streamed from YouTube is no different for the fan, it’s dramatically different for the artists and labels. Sherman also put Spotify’s free streaming tier in the same boat, noting that the payout differences between free music streaming and paid is “jarring and indefensible.”


Spotify was founded about ten years ago and is currently available on 8 OSes and offers a free tier. AppleMusic was started fourteen months ago and is available on 3 OSes and offers no free tier.


Spotify relies solely on the revenue of their music services, whereas Apple relies on hardware sales for their main source of revenues and profits.

No one is profitable with streaming services, yet.

Nick Heer:

Anecdotally, the recommendations I’ve received from Spotify have generally been more well-rounded in almost all regards, despite using the service less than I do Apple Music or local playback. I also appreciate Spotify’s large variety of community-created playlists.

But I’d rather pay for just one streaming service, and I’d prefer to use the one that’s integrated into the applications I use most: Music on iOS, and iTunes on my Mac. Unfortunately, as I’ve written before, its recommendations have been lacklustre.


It remains a complete mystery to me why the rest of Apple Music’s recommendation features are not using iTunes playback and rating data, nor the previously-collected Genius data.

Peter Kirn (via Michael Yacavone):

And there, unless you’re a big artist or label, the relationship hasn’t been great, either. I’ve yet to talk to many labels or artists happy with their experience dealing with Apple; by comparison, I’m hearing more positive feedback about Spotify. That’s qualitative and just hearsay, but I can’t find material evidence that Apple Music is a place where smaller- and medium-sized artists see much control. Spotify and Pandora are adding new artist connect features, whereas Apple, as Hypebot noted this month, is backing off of its Connect service. What we get instead is front-and-center machine algorithm streams, despite Apple saying publicly that they’ll do more human curation.

Matthew Garrahan et al. (via John Gruber):

Spotify, the music streaming service, is in advanced talks to acquire SoundCloud, as competition heats up with Apple for the future of digital music, said people briefed on the discussions.

SoundCloud, which raised $100m in June from a group of investors including Twitter, was last valued at about $700m.

Realm Mobile Platform


When we launched Realm in 2014, our goal was to help mobile developers build better apps faster by giving them a powerful alternative to SQLite and Core Data. Two and a half years later, we’ve reached more than a hundred thousand active developers and more than a billion worldwide installs of apps that use Realm.


Today, we’re launching the Realm Mobile Platform, a new offering that integrates our fully open-source (see below!) client-side database for iOS and Android with new server-side technology providing realtime synchronization, conflict resolution, and reactive event handling.


The Developer Edition is free forever for all kinds of use cases, from hobbyists to small commercial applications, and the Enterprise Edition is available as a time-limited trial and fully supported product designed for the largest production use cases.

Xcode Memory Graph Debugger Tips

Brent Simmons:

Lines between objects have a label. A line represents a reference. Click on the label to see if the reference is strong or weak or unknown and what the source and destination are.

Don’t click on anything where the name looks something like MagicOb (something like that). It crashes Xcode for me every time.

See also: WWDC 2016: Visual Debugging with Xcode.

What’s in a Swift Collection?

Ole Begemann:

Collections in Swift are very powerful but also very complex. If you want to implement your own custom collection type, you need to understand how the Collection protocol works. And even if all you want to do is use the familiar collection types from the standard library, we think it’s worth learning how things work, not least because it can be a big help in decoding what the compiler wants to tell you with its error messages.

In this article, we’d like to discuss the Collection protocol’s associated types. This might seem like an obscure topic, but we think understanding what the associated types do and why they are needed is key to understanding collections in Swift.

Wednesday, September 28, 2016

Pro Music Perspective on Apple

Peter Kirn (via Michael Yacavone):

Apple’s desktop OS is too often unstable and incompatible, and the yearly update cycle isn’t helping. […] Instead, we’re being treated to disastrous, showstopper audio reliability problems.


Here’s how bad this is: you show up to a gig, and out of the blue, your machine starts popping or dropping buffers or creating random distortion. That’s clear-the-floor stuff, things that could make people never want to play again. […] People who work in support paint an ugly picture, and then anecdotal evidence is useful, because it covers a range of different situations. And it’s getting been worse through El Capitan: “OS X 10.9 (rare occurrences), OS X 10.10 (occasional occurrences) and OS X 10.11 (most occurrences, compared to the aforementioned OS versions).”

Now, it’s not uncommon to wait a few weeks when an OS comes out to make sure your complex ecosystem of software hosts, plug-ins, and hardware is compatible. But note the OS numbers – that’s years without a fix, and instead worsened regressions. That’s simply unacceptable. OS X 10.9 Mavericks is about to turn three years old (older if you count pre-release builds).

It is apparently fixed, with some caveats, in Sierra. But:

In a now yearly ritual, Apple has broken plug-in validation for its own Audio Unit format. Open question: why? Why is this now a regular feature of updating an operating system for a format that has basically remained unchanged for years? Why shouldn’t desktop upgrades be the kind of no-brainer mobile upgrades are.

There are some workarounds for plug-ins, but this reveals a deeper, more cultural problem at Apple. The inability to ship OS builds to developers in time for them to adapt, a tendency to change OS internals without properly documenting the results, or whatever the reason, the upshot is the same. If musicians can’t trust an upgrade, they won’t install it – and that means they will avoid critical fixes, too.

How Apple’s Hardline Privacy Policy Limits Key Features

Dan Moren:

When Apple first announced the feature, it made a big deal about the fact that the processing of photos for faces was done locally, on the device itself, rather than transmitted to servers. It was an obvious jab against Google Photos, which had already rolled out a similar feature, but did its processing in the cloud.

Again, there’s a laudable element to this. People don’t like to feel that their personal and private photos are being pored over, even if “just” by a machine. But these local silos have, at least at the moment, made the feature less useful, because the analysis happens on each device that the new Photos is on. That means even if all the photos on your iPhone are scanned for faces, when you upgrade your Mac to Sierra, the Photos app there doesn’t benefit from the information on your phone—even if they’re all the same photos.

It sounds like to have things work the way you’d want, you would have to re-tag all your photos on each device. And, I guess, forget about doing anything with faces from the Web interface.

Rui Carmo:

So yes, all those neat, magic features like face detection and Moments will turn out to be pretty much useless in real life – if not for me, then surely for the millions of people about to run out of iCloud storage and realize they have no easy, practical way to safekeep their photos.

Greg Barbosa:

Apple clarified that the use of differential privacy to collect user data would be opt-in, meaning if a user didn’t want to give into the system they didn’t have to. What Apple never indicated was where this opt-in area would be and what would happen if you decided against it…


With iOS 10, opting in to having diagnostic and usage data sent automatically to app developers means that users are also automatically subjected to data collection using differential privacy. It seems that if a user wants to submit diagnostic data to developers, but not be subject to the collection of this new data, they’re out of luck.

Via Nick Heer:

Though this may seem paradoxical, I think the critical factor in the unfriendliness of the setup process is the number of pages and options presented. This could be made less intimidating by, for instance, storing as many options and settings as possible in iCloud, and allowing the user to confirm them on a single page during setup.

Google Reneges on Allo Privacy Feature

Russell Brandom: (via John Gruber, Hacker News)

The version of Allo rolling out today will store all non-incognito messages by default — a clear change from Google’s earlier statements that the app would only store messages transiently and in non-identifiable form. The records will now persist until the user actively deletes them, giving Google default access to a full history of conversations in the app.


Like Hangouts and Gmail, Allo messages will still be encrypted between the device and Google servers, and stored on servers using encryption that leaves the messages accessible to Google’s algorithms.

Yahoo Says Hackers Stole Data on 500 Million Users in 2014

Bob Lord (via Hacker News):

A recent investigation by Yahoo has confirmed that a copy of certain user account information was stolen from the company’s network in late 2014 by what it believes is a state-sponsored actor. The account information may have included names, email addresses, telephone numbers, dates of birth, hashed passwords (the vast majority with bcrypt) and, in some cases, encrypted or unencrypted security questions and answers.

Nicole Perlroth:

Yahoo announced on Thursday that the account information of at least 500 million users was stolen by hackers two years ago, in the biggest known intrusion of one company’s computer network.


Two years is an unusually long time to identify a hacking incident. According to the Ponemon Institute, which tracks data breaches, the average time it takes organizations to identify such an attack is 191 days, and the average time to contain a breach is 58 days after discovery.

Via John Gruber:

Verizon, in midst of acquiring Yahoo, only found out about this two days ago.

Nick Heer:

The massive 2014 breach disclosed today by Yahoo is just one of three reported hacks from the past four years. As noted previously, there was also a 2012 breach of 200 million accounts, and Emptywheel has pointed to an individual account hacked earlier this year.

There’s something very unsettling about the way tech companies are responding to these big security breaches: none of them informed their users with anything resembling a sense of urgency.

Lloyd Chambers:

Yahoo stored unenencrypted user data, including all sorts of personal data that should be stored encrypted, but was not—gross security incompetence to maintain a dossier on every user.

Nicole Perlroth and Vindu Goel (via Melanie Ehrenkranz, Slashdot):

The 2014 hiring of Mr. Stamos — who had a reputation for pushing for privacy and antisurveillance measures — was widely hailed by the security community as a sign that Yahoo was prioritizing its users’ privacy and security.


Mr. Stamos and his team had pressed for Yahoo to adopt end-to-end encryption for everything. […] Mr. Bonforte said he resisted the request because it would have hurt Yahoo’s ability to index and search message data to provide new user services.


But when it came time to commit meaningful dollars to improve Yahoo’s security infrastructure, Ms. Mayer repeatedly clashed with Mr. Stamos, according to the current and former employees. She denied Yahoo’s security team financial resources and put off proactive security defenses, including intrusion-detection mechanisms for Yahoo’s production systems. Over the last few years, employees say, the Paranoids have been routinely hired away by competitors like Apple, Facebook and Google.


Mr. Stamos, who departed Yahoo for Facebook last year, declined to comment. But during his tenure, Ms. Mayer also rejected the most basic security measure of all: an automatic reset of all user passwords, a step security experts consider standard after a breach. Employees say the move was rejected by Ms. Mayer’s team for fear that even something as simple as a password change would drive Yahoo’s shrinking email users to other services.

Update (2016-09-30): Bruce Schneier:

I did a bunch of press interviews after the hack, and repeatedly said that “state-sponsored actor” is often code for “please don’t blame us for our shoddy security because it was a really sophisticated attacker and we can’t be expected to defend ourselves against that.”

Well, it turns out that Yahoo! had shoddy security and it was a bunch of criminals that hacked them.

Update (2016-10-03): Paul Szoldra (via Slashdot):

To be sure, Yahoo has said that the breach affected at least 500 million users. But the former Yahoo exec estimated the number of accounts that could have potentially been stolen could be anywhere between 1 billion and 3 billion.

Update (2016-10-04): Joseph Menn (Hacker News):

Yahoo Inc last year secretly built a custom software program to search all of its customers’ incoming emails for specific information provided by U.S. intelligence officials, according to people familiar with the matter.


The sources said the program was discovered by Yahoo’s security team in May 2015, within weeks of its installation. The security team initially thought hackers had broken in.

When Stamos found out that Mayer had authorized the program, he resigned as chief information security officer and told his subordinates that he had been left out of a decision that hurt users’ security, the sources said. Due to a programming flaw, he told them hackers could have accessed the stored emails.

Update (2016-10-11): Sarah Perez (Hacker News, Slashdot):

At the beginning of October, Yahoo disabled an email forwarding feature, which would allow users to automatically redirect incoming emails sent to their Yahoo address to another account.

Update (2017-01-23): Tim Hardwick:

Yahoo is under investigation from the Securities and Exchange Commission over its failure to disclose its massive data breaches sooner, according to The Wall Street Journal.

Update (2017-10-04): Chance Miller (Hacker News):

Yahoo today has disclosed that the 2013 hack initially thought to have affected 1 billion accounts actually affected all 3 billion of its user accounts. The company made the announcement in a filling with the SEC…

Nick Heer:

If you ignore the press release’s spin of what wasn’t stolen, you’ll notice that they omit what was: as acknowledged previously, that includes names, email addresses, MD5 hashed passwords, phone numbers, birthdates, and security questions and answers.

Update (2018-10-24): Mitchel Broussard:

In the settlement, Yahoo has agreed to put $50 million into a fund for victims of the breach, provide two years of credit monitoring from AllClear, and a few other benefits for victims. The settlement is still awaiting court approval.

Overcast Tries Ads

Marco Arment:

If any new patron-only features are widely demanded, I’ll be stuck with the year-one problem again. If not, they won’t bring in enough money. The latter is more likely: what most people want (and will pay for) is pretty well covered by Overcast’s current features.


Charging money only works in scarcity, but most kinds of software are no longer scarce, especially on iPhone. Whatever I charge money for, someone else can give away, and vice versa. For instance, most of my competitors now offer a dark theme at no additional charge, but if I give mine away without any other changes, I’ll go out of business.


The content industries figured out the solution a long time ago. If 97% of my users can’t or would rather not pay, but they spend substantial time in the app every day, the solution is probably ads.

Tuesday, September 27, 2016

AppleScript and Code Signing in Sierra

Shane Stanley:

If you have moved to macOS 10.12 Sierra, you will probably have noticed that the AppleScript version is 2.5, unchanged from that in El Capitan. That doesn’t mean nothing has changed for scripters, though; there are at least a couple of things we have noticed.


In Sierra, the rules on what can be in a signed bundle have been tightened, and resource forks are no longer allowed. AppleScript has been saving information in resource forks forever, although that information has been unused for a long time. With Sierra, when you save a script, this resource fork information will no longer be saved.

So how will this affect scripters? If you don’t sign your code, it obviously doesn’t matter. And if you have applets written and codesigned under previous versions of the OS, they’ll still work fine. But it means you cannot codesign a script that was last saved in a version before Sierra; you have to save in Sierra to be able to sign in Sierra.

SpamSieve supports some e-mail clients that require AppleScripts to have resource forks. Newfangled data fork scripts are not recognized. With Sierra, it’s no longer possible to include those scripts in my app because then it can’t be signed:

resource fork, Finder information, or similar detritus not allowed. Command /usr/bin/codesign failed with exit code 1.

So I am instead packaging the scripts in a .tar archive and having the app expand it to access the scripts when needed. In order to complete the code signing, I also had to get rid of some unimportant metadata that was attached to some of my HTML and CSS files. The easiest way to do this was to delete the affected folders and restore them from Git (which only stores basic Unix metadata). You can also use the xattr tool.

If you’re code signing with Sierra, also beware of having duplicate identities.

Back to Stanley:

[A] lot of applications that did not have tabbed windows will when running under 10.12, and how that effects scripting them might not be obvious. […] The trick is that, as far as these applications are concerned, they are still opening separate windows for each document the same as before. The system then makes the windows all the same size and position, and only actually draws the frontmost one to the screen, along with a tab bar.

So when you script such an application, you too should treat the tabs as separate windows.

Unfortunate App Store Rejections

One of the less discussed problems with App Review is that apps get rejected for using private API when they are not actually doing so. Peter Steinberger’s PSPDFKit:

These are in fact not calls to private API, just simple selector name clashes, where PSPDFKit has named a method internally the same as one that Apple uses internally. Since these internal names are not documented and this also cannot be verified offline, there is no way for us to anticipate what names are supposedly reserved.


This review seems to be both arbitrary and applied at random. We also got reports that they submitted the exact same app binary, just changed the build number to allow a re-submission, and it went through without any issues.

Sometimes this happens in reverse. Daniel Jalkut:

A major App Store frustration is you can never know when a precision bug fix update will be blocked by reconsidered review criteria.

And then there are the no-win situations. Jalkut again:

Interesting edge case: latest version of @blackinkapp (a bug fix for Sierra) rejected because I link to subscription info pages for puzzles.

Advice from Apple is to use in-app purchase, but I don’t control or profit from them. Have to stop encouraging 3rd party purchases. :-\

Glenn Fleishman:

So you can’t link to a product page for the app which has info?

Daniel Jalkut:

I’m overt about it in the app: I offer a login screen for the affected services. I can see why they’re grumpy, but what can I do?

Glenn Fleishman:

They rejected my The Magazine archives after several months for sale because the book had some Amazon book links in it.

Which was ridiculous. It’s a 1,200-“page” ebook with Amazon links that generate $0. i’m not fixing it.

Sierra Drops HiDPI Scaling on External Displays

Tim Hardwick (via Mike Rundle):

Several MacRumors readers using 4K displays have described the disappearance of scaled HiDPI resolutions beyond 1920x1080 since updating from OS X El Capitan, leaving their options reduced to 1080p or a non-scaled native resolution of 3840x2160. Monitors with native 1440p resolutions also seem to have had HiDPI scaling options removed.

Owners of larger displays often use Apple's scaled HiDPI resolutions offered in Display preferences to enjoy increased desktop space without reducing the legibility of text.


This command in Terminal and a reboot fixed it for me on Sierra.

See also: Super User.

Update (2016-09-27): Ian Sutherland:

I was having this problem with my 4K display in Sierra. Plugged it in today and it worked perfectly at 2560x1440. No idea why.

DreamHost’s New Mail Filtering

I’ve long recommended DreamHost as a mail provider because they allowed full user control. Alas, that is no longer the case. It started with the creation of Promotion and Social mailboxes, which could not be turned off. There was an outcry, so the feature was temporarily removed until a setting could be added.

However, a new spam filter was also introduced, and unlike DreamHost’s previous offering, there is no way to disable it. This is an issue for several reasons. First, I already use a more accurate spam filter and some Mail rules to organize messages just the way I want. I don’t want the spam sprayed across different account mailboxes. Messages in server mailboxes are ineligible for processing with Mail rules, add IMAP syncing overhead, and can be difficult to deal with in Mail because it doesn’t always cache messages that did not arrive in the inbox.

Second, the new filter makes lots of mistakes. I had more than 1,000 false positives (good messages in the Spam mailbox) in the first few days. And this was despite creating whitelist rules that matched the vast majority of those messages, but which were for some reason ignored. The messages were almost all from the same domain, which I blanket whitelisted at the highest priority, so there’s no reason this shouldn’t have worked. The whitelist rules are also limited, so even if they worked you could not effectively disable the filter by creating a rule that whitelisted everything (or even everything from a particular mailing list).

Lastly, some of my accounts are monitored by FogBugz. I don’t check them from regular mail clients, so there is no opportunity to review the contents of the Spam mailboxes. FogBugz only checks for new messages in the inbox, so any falsely caught good messages will be silently ignored. I’ve temporarily worked around this by creating DreamHost forwarders to forward those addresses to a FastMail account. DreamHost does not apply its spam filter to forwarded messages, and FastMail’s own filter can be turned off. So this setup allows FogBugz to see all the messages.

What about the other accounts? It’s actually quite common for mail providers to have server junk filters that can’t be disabled. This is usually not a problem so long as they put the messages in the Spam mailbox rather than deleting them sight-unseen. There are a variety of ways to deal with this, whether or not you are using a client-side filter such as SpamSieve.

Update (2016-10-18): The DreamHost whitelist rules are still not working, and the support people have not been able to explain to me why.

Monday, September 26, 2016

OmniFocus 2.7

The Omni Group:

This release adds the ability to specify an encryption passphrase separate from your sync password. Don’t set a separate passphrase until you are running at least OmniFocus 2.16 on all of your iOS devices and OmniFocus 2.7 on all of your Macs.


This release also updates OmniFocus for Mac’s pasteboard format to match the TaskPaper format used by OmniFocus for iOS and makes other improvements to sharing and exporting[…]

I really like the option to use the TaskPaper format, but it often gets in the way because I’m copying and pasting a single line of text for further processing. For example, I’m merging two actions in OmniFocus, entering a URL into a non-default browser, or moving an action into FogBugz. In cases like this, the hyphen-space is unwanted, and it’s an extra step to delete it. There is a hidden preference to omit TaskPaper tags (such as the OmniFocus context) when copying, but that doesn’t address the hyphen issue. In my opinion, copying in TaskPaper format should be a separate menu command, with the regular command copying only the text that’s shown—like in other Mac apps.

Previously: OmniFocus Now Supports End-to-End Encryption.

Update (2016-10-10): Version 2.7.2 implements my suggestion:

Reverted the change that made TaskPaper text the default pasteboard format, and added a new Copy as TaskPaper menu item that always includes full TaskPaper details and copies the children of a selected item, but only if they are visible. So you won’t ever accidentally get completed or filtered items, and you can collapse a parent item if you don’t want to copy its children.

Mac Terminal Tips

Brent Simmons:

Magic I just learned: in Terminal, do a thing with output (like ls), then do cmd-shift-A.

This selects the output of the previous command.

Jeff Nadeau:

Cmd-Ctrl-V. Pastes text fully escaped, including spaces.

Jordan Rose:

Cmd-Up is still my favorite new (El Cap) Terminal feature.

This scrolls you back up to the previous command.

Chris Page:

In Terminal, adding Shift for these commands extends the selection, just like in an editor.

Dave DeLong:

Don’t forget that two-finger scrolling now works w/ less, man pages, etc…

Jeff Nadeau:

Yup and you can toggle mouse reporting with ⌘R. I do it a lot with tmux.

Chris Page:

You can also use the Fn modifier when clicking or dragging, to interact with the terminal view.

Justin Miller:

The basics of marking in Explains those gutter marks!


Anyone knows what’s Paste Selection?

Jordan Rose:

Seems to be more “Insert Selection”. Takes what’s selected and puts it at the cursor w/o changing clipboard.


So a selection-specific pasteboard in Terminal. Reminds me of selecting to copy during my linux days.

Chris Page:

The selection pasteboard is named “” and is public.

Previously: Craig’s Terminal Tips.

Rich Siegel Interview

I enjoyed this two-part interview with Rich Siegel:

We talk to Rich about how he got started with BBEdit, how he’s using free apps and trials with his products, and even get an update on how things are going since he pulled his apps from the Mac App Store.

The merging of TextWrangler and BBEdit seems like a great idea, probably overdue.

Today we talk to Rich about the value of providing excellent customer support, why indies might want to consider building and selling professional tools, and the basic business skills that every indie needs.

Bare Bones sets the standard for reliability and customer support, which helps to explain their longevity.

Update (2016-09-30): See also: Siegel’s talk.

Update (2017-03-06): Zac Hall (TidBITS, MacRumors):

Bare Bones Software announced this week it will no longer develop new versions of its free code editor app TextWrangler. While the software will continue to work barring any future show stopping bugs, Bare Bones says it won’t release updates to TextWrangler for the next version of macOS.

Sunday, September 25, 2016

Successful iCloud Desktop and Documents Folder Storage

Bill Cheeseman:

This article tells the story of what happened after I turned on iCloud Desktop and Documents Folder storage in the iCloud pane of System Preferences, shortly after installing macOS v10.12 Sierra on my Mac Pro (Late-2013) and my MacBook Pro (Late-2013). My aim is to help others to feel comfortable doing it themselves while avoiding the pitfalls I discovered along the way. I include a lot of detail here, most of it not yet mentioned in other online commentaries. The process took a few days and was full of unexpected turns and hard decisions, but it came out well in the end. I can now happily use continuity, switching freely between my two Macs, my iPhone and my iPad, editing the same document on all of them.

Previously: macOS 10.12 Sierra Notes.

Update (2016-09-27): Rich Trouton:

Based on the results of my testing, I have no plans for enabling iCloud Desktop and Documents syncing on any of my Macs for the foreseeable future. Leaving aside that Apple isn’t offering enough storage space at prices I want to pay, the results I saw from my testing of the synchronization process did not inspire my trust in it.

It did give me an insight into why Apple chose to remove support for portable home directories (PHDs) in Sierra. The havoc that could be caused by two separate synchronization processes trying to sync the same set of files, especially when portable home directories were using a two-way sync process, would be breathtaking to behold.

Ben Lovejoy:

But Mac users may also be running that same risk without even realizing it. Because that first option – to ‘Optimize Mac Storage’ for files stored on iCloud – is on by default in my experience. This means that, for any file on iCloud, your Mac could be deleting files from your Mac without your knowledge or permission. That should never be the case.

It should never be the case for safety reasons, but also for reasons of practicality. We don’t all live in an always-connected high-speed Internet world, where we can access any cloud file simply by waiting a few seconds. Many of us frequently work on the move, on trains, planes and metro systems where Wi-Fi is either unavailable or exceedingly slow and unreliable. This is not the time when you want to discover that the document you want to work on doesn’t exist locally.

John Gruber:

So it’s not so much that the feature is dangerous but that the experience of enabling it on a second Mac is really poorly designed. When you enable it on a Mac when there’s already an existing iCloud Desktop folder, there should be some sort of dialog that explains exactly what’s going to happen.

Update (2016-09-28): Phil Stokes:

I then re-enabled iCloud in the hope that this would refresh whatever it was that had become out-of-sorts. Unfortunately, that still didn’t work. I next tried unlinking again, logging out and re-linking after logging in. Still no dice, and by this time I was sufficiently worried that there was nothing for it but to halt all my other activities on the computer and try a restart. Possibly the system holds something in a memory cache that needs to be flushed, I’m not sure. In any case, I took the step of unlinking iCloud first, then restarting, then re-linking after reboot. Success (and relief)!

Update (2016-10-30): Lloyd Chambers:

If your data is moved into the cloud by iCloud Drive, it means that your local backups won’t be backing up your crucial data. Which means there is only one (1) copy of your files, eg. NO BACKUP at all. Just iCloud as the sole copy (presumably Apple backs up, but do you really trust Apple that much?)

Wednesday, September 21, 2016

Dropbox Modifies TCC.db to Give Itself Accessibility Access

Phil Stokes (via John Gruber):

If you have Dropbox installed, take a look at System Preferences > Security & Privacy > Accessibility tab (see screenshot above). Notice something? Ever wondered how it got in there? Do you think you might have put that in there yourself after Dropbox asked you for permission to control the computer?

No, I can assure you that your memory isn’t faulty. You don’t remember doing that because Dropbox never presented this dialog to you, as it should have[…]


Indeed, even with your admin password, it still shouldn’t be able to get into Accessibility. Clearly Dropbox’s coders have been doing some OS X hacking on company time.

Duncan Davidson:

Furthermore, it doesn’t look like they are storing a copy of your password, as some reports have said—and which would be really, really bad. No, they’ve simply been installing things in a way that let’s them retain root privileges so that they don’t have to bug you again when they want to change things up later.

Rosyna Keller:

Dropbox could have saved a lot of pain had they just made a first-run dialog that asks if they want to enable certain features…

Phil Stokes (Hacker News, MacRumors):

After a little digging around in Apple’s vast documentation, it occurred to me to check the authorization database and see if that had been tampered with.


The string output for dbfseventsd binary didn’t reveal anything much interesting, but with the deliciously named dbaccessperm file, we finally hit gold and the exact proof I was looking for that Dropbox was using a sql attack on the tcc database to circumvent Apple’s authorization policy[…]


The upshot for me was that I learned a few things about how security and authorisation work on the mac that I didn’t know before investigating what Dropbox was up to. But most of all, I learned that I don’t trust Dropbox at all. Unnecessary privileges and backdooring are what I call untrustworthy behaviour and a clear breach of user trust.


This is an Apple system dialogue box, not a dialogue from Dropbox. Mac OS X requires password authentication for changes to certain permissions, and this dialogue box is a standard way for a Mac OS X app to ask for your permission.


Yes, you can choose to click Cancel rather than approving these additional permissions. However, this means that the Dropbox features listed above will not function on your computer. If you don’t give your approval, you will be asked to enter your username and password again the next time you start or restart Dropbox.


Dropbox uses Apple Mac OS X Accessibility permissions to function properly. Specifically, we use Accessibility APIs for the Dropbox badge (part of Microsoft Office integrations).


You cannot currently disable Accessibility access for the Dropbox Mac OS X desktop app. We realize this isn’t a great experience, and we’re actively working to make this better.

Phil Stokes (MacRumors):

With the release of the latest version of the Mac operating system, 10.12 macOS Sierra, it’s pleasing to see that Apple have fixed a bug I reported against El Capitan in October of last year, and wrote about on this blog here and here.

The TCC.db is now under SIP, which means hacking the Accessibility preferences is no longer possible.

Surreptitiously modifying the permissions database is a violation of user trust. It seems to be well-intentioned, but I’m surprised that Dropbox would go to such lengths in order to ease the setup of a feature that probably few of its customers use. I do sympathize, however, as a developer who has had to guide customers through the confusing process of manually granting accessibility permissions.

macOS 10.12 Sierra Notes

The first impression of downloading a major OS update is still discouraging.

Adam C. Engst:

Fujitsu (a TidBITS sponsor) is warning users of the company’s ScanSnap document scanners and accompanying software to avoid upgrading to macOS 10.12 Sierra at this point. Fujitsu has identified a variety of problems associated with its ScanSnap software when running in Sierra.

People have been blaming Fujitsu for this, but I wonder whether the issues are instead caused by bugs from Apple’s rewrite of its PDF subsystem, which has also been affecting EagleFiler. (I’ve also updated DropDMG and SpamSieve for Sierra.)

Andrew Cunningham and Lee Hutchinson (Hacker News):

It has been a long time since the Mac was Apple’s favorite child, and there are places in Sierra (like the Messages app) where it clearly feels like Mac users are getting a second-tier experience compared to people on iOS. Add in the Mac’s stale, aging hardware lineup and Apple’s total lack of communication about it, and there seems to be real problems for the Mac as a platform.


When Snow Leopard, Lion, and Mountain Lion dropped older Macs, there were clear reasons why the hardware that went unsupported was being left behind (PowerPC CPUs, 32-bit Intel CPUs, and 32-bit EFI and driver limitations, respectively). In Sierra, aging hardware and drivers are a factor—drivers especially, since a lot of the GPUs, networking hardware, and chipsets in those older machines have long since been forgotten by the hardware companies that made them—but there are no hard-and-fast hardware cutoffs. I’ve seen many attempts to define a strictly hardware-related cutoff, but none of them quite work.


If you don’t want universal clipboard to work, you can head into the General preference pane and disable Handoff. As best we can tell, there’s no way to keep Handoff but not the universal clipboard.


The main change in Notes is a real-time collaboration option. Hit the button at the top of the screen and enter some Apple IDs to invite others to view and edit the note with you. You can send anyone you’ve invited a link via one of many different apps or services, including Mail, Messages, AirDrop, Twitter, Facebook, and more.


The Gatekeeper options in System Preferences will no longer let you choose to allow any and all apps by default. The only two options are to allow signed apps and Mac App Store apps (still the default in Sierra, as it always has been), or just those from the Mac App Store.


In discussing APFS checksumming directly with Apple, the company told Ars that user data integrity is a top priority, and that the decision to checksum metadata but not file data (and other major architectural decisions made around Sierra) are driven by decades of data on what does and does not work well with file system design.


One tack Apple didn’t take is writing multiple copies of an object’s metadata to disk. The reasoning given is simply that solid state disks offer no real way for the operating system to ensure that the multiple copies would be written to different physical NAND cells—and that concurrent writes are in fact often grouped into the same cell. Writing two redundant copies to the same physical location kind of defeats the purpose of having two redundant copies.


Disk Utility was redesigned with El Capitan, and the few tweaks Apple has made are unlikely to appease you if you miss the old version.

Stephen Hackett:

There is one big difference between these sets of results worth pointing out. Spotlight can surface email attachments, while Siri can just show what’s in my user folder.


Lastly, shared clipboard content is only available for two minutes. This helps make Universal Clipboard feel much more intentional. In my month or so of using it, I’ve never once felt surprised at my devices doing the “wrong” thing.


This does screw with clipboard managers on the Mac. I use Alfred for this, and it only sees Universal Clipboard content after I paste it somewhere on the Mac. In short, I can’t use Alfred as a running clipboard history for my iPhone or iPad when they are in range of my Mac. This isn’t a big deal, but something to be aware of if you use a clipboard manager.


This is one of the features Apple ships that feels like it was designed in a bubble. Universal Clipboard is great if you work in a very intentional way. If you’re at your Mac and go to pick up your iPad to finish a task, it’s great. If you share your tablet with someone else in the house, however, you can very be quickly in the situation where devices in the same location are over-riding each other’s clipboards.

Roman Loyola:

To use Universal Clipboard, you copy from your Mac or iOS device just as you normally would. Then go to your recipient device, and perform a paste. If you’re pasting on a Mac, you may see a progress bar indicator. On iOS, you see a message window stating the device your paste is coming from.

I did find one hiccup involving Microsoft Word. When copying text from a Word document, it pasted in iOS 10 Notes as Chinese text.

Jason Snell:

What I’m saying is, the Universal Clipboard feature is really cool and clever when it works, and I wish it worked more reliably. I’ll keep trying to use it. I hope it becomes more reliable as time goes by.


Still, I gave it a whirl. I turned on iCloud syncing for my Desktop and Documents folder (you have to sync them both), knowing I’d be watching a few gigabyte-sized audio projects slowly uploaded. What happened was a bit more disturbing: The entire contents of my iMac’s Desktop disappeared. This turned out to be a function of the fact that I’d already turned on syncing a MacBook Pro, and rather than merging the contents of the laptop’s Desktop with my iMacs, Sierra created a new folder and moved all the items on my Desktop into it. (The same happened to my Documents folder.) So my files were still there and uploading, but I had to drag them back out onto the proper Desktop and restore them to their proper positions.


Sierra also offers a feature that lets your Mac arbitrarily delete any of the items in your Desktop and Documents folders that have been stored in iCloud. […] Here’s what happened: I was editing a podcast in Apple’s Logic Pro X, and my project was stored on the Desktop. All of a sudden, the voice of one of my podcast panelists simply vanished from the mix. I quit and re-launched Logic, only to be told that the file in question was missing. Sure enough, a visit to Finder revealed that Sierra had “optimized” my storage and removed that file from my local drive. I’ll grant you, the file was a couple of weeks old, and very large as most audio files are. But I was also actively using it within a Logic project. Apparently that didn’t count for anything?


To add insult to injury, at the time my files were deleted, my hard drive had approximately 80GB of free space. Why were the files deleted? I have no idea, but I suspect a bug in how Sierra was viewing the stock internal SSD of my iMac, because it’s also warned me that it didn’t have enough space to back up a 64GB iPhone with more than 100GB free, and gave me a “you’re about to run out of disk space” warning with 60GB free. So not only did Sierra remove files that I was using, it did so without any necessity.

Adam C. Engst:

For those struggling to free up space, particularly on a notebook Mac with relatively little internal flash storage, Optimized Storage sounded great, at least if you don’t mind paying for online storage in iCloud Drive. And while it could be a great boon for such people, it turns out to be a somewhat confusing collection of seemingly unrelated features, burdened by one of the stranger interfaces that Apple has produced in recent years.


Amusingly, Microsoft Windows has been capable of automatically deleting files from its Recycle Bin at least since Windows 98, although back then it deleted older files when adding a newer file to the Recycle Bin caused it to exceed a user-specified size. I’m surprised it took Apple this long to get to the point of taking the trash out for the user.


My second warning is that turning off Desktop and Documents folder syncing is stressful. When you do this, in System Preferences > iCloud > iCloud Drive > Options, Sierra tells you that all your files will be available only in iCloud, which seems wrong: if you’re turning off syncing, you’re doing so because you want them locally. However, that dialog is followed immediately by another that tells you that you can recover your files from iCloud Drive.

Tom Bridge:

This is a great concept, designed to save space on your SSD-based Macs that are very definitely space constrained, but there are pitfalls. I am glad that Rich Trouton has made available his configuration profile that blocks this setting for organizations to use on their computers. I’m not interested in turning this feature on any time soon.

Rich Trouton:

Siri is a welcome addition to macOS Sierra, but in certain environments it’s a service which needs to be disabled. For those Mac admins who need to do this, here are the relevant keys.


On macOS Sierra, when you click the play/pause button on attached headphones and Siri is Off, an alert comes up asking you whether you want to enable Siri. Every. Single. Time. No matter what you do.

Keir Thomas:

With the macOS Sierra update Siri finally makes it onto the Mac.

However, did you know about the following Mac-specific tricks?

Nick Heer:

It’s a little frustrating that this kind of stuff is gated behind a spoken Siri command. Not only does this require talking to your computer — a task which I still find a little bit weird — it also means that the computer must interpret what you’re saying absolutely perfectly for this feature to be of any use.

David Pogue:

Siri on the Mac—that is really big. Siri is far more complete and powerful than Cortana is on Windows, and having voice control of your computer is a game-changer.

Lloyd Chambers:

Unlike the past 3 or 4 releases, macOS Sierra is probably safe to go ahead with right away. Finally, relief from the Apple quality failure onslaught.

Lloyd Chambers:

Clicking on my Sent mailbox (and others) results in delays of up to 30 seconds in showing the mailbox, along with multiple rainbow beach balls. The system has had ample time to do whatever it is it does after a system upgrade. Then trying to open one message may take another 20 seconds. Apple mail pins a CPU or more during this time.

Peter Maurer:

TIL that Icon Composer uses Garbage Collection and thus can’t run on Sierra. Dammit, I was still using that, mostly for quick scaling.

See also: Alex Guyot and Rene Ritchie.

Previously: Testing for macOS 10.12 Sierra.

Update (2016-09-23): Andrew Abernathy:

Well, Aperture is pretty broken in Sierra. Just switching to the Info tab gets an uncaught exception; “continue in an inconsistent state?”

Update (2016-09-24): I continue to run into PDF and Preview issues. I’m also having problems with new application windows being added in tabs despite disabling that in the preferences.

Josh Marshall:

When I did that everything disappeared. So all the files on my Desktop were gone. All the files in my Documents folder were gone.


The guy on the line explained to me that the system was really more intended for users who had a single desktop and iOS devices rather than trying to use this syncing function on more than one desktop.

Update (2016-09-27): Benjamin Mayo:

I’ve barely used macOS Siri and I already have a list of niggles and unfinished edges. I’m even ignoring things that are potentially debatable and just focusing on things that are unequivocally wrong.


There is nowhere to check Universal Clipboard connectivity so I’m basically left in the dark about how to fix this because it fails silently. If it was done properly, it would flag up a ‘Universal Clipboard Failed’ alert with details of the error. As it is, I have no recourse apart from crossing my fingers and hoping it sorts itself out.

Update (2016-09-28): Keir Thomas:

We’ve already described macOS Sierra’s new window-snapping feature but we didn’t realize Sierra also introduces a new feature that lets you ultra-quickly expand windows to the edge of the screen.

iOS 10 Notes

My initial impression is that I don’t have a strong reaction either way. A lot of things are a little nicer. Some are a little worse.

I initially ran into a lot of errors syncing with iTunes on my Mac, but that mysteriously fixed itself after a day or so. I continue to see a bug where there’s a delay before dictation works with my Bluetooth headset.

Probably the worst problem is that auto-correct is much less accurate. I went from typing pretty quickly and very accurately to frequently typing long strings of nonsense. They don’t even look like words, and it takes multiple tries to correct them. And, secondly, when I am typing slowly and not making mistakes, it is more aggressive about “correcting” to a completely different word. Hopefully, either iOS will adapt to the way I type or I will fix whatever I’m doing wrong.

The camera audio bug is finally fixed. HDR still doesn’t stay on. Importing photos via Image Capture now requires me to unlock the phone.

The Bedtime feature is interesting but a bit odd. It doesn’t consistently remind me to go to bed, and there seems to be no way to preview the wake-up sounds. [Update: The sounds do play, but very quietly. The preview seems to use the ringer volume (which I had set to the minimum) rather than the one in Bedtime (which I had set to maximum).]

For full reviews, see Andrew Cunningham, Nick Heer, David Pogue, Rene Ritchie, and Federico Viticci.

Jason Snell:

The biggest change in iOS 10, the thing that required the most retraining for me, happens right at the beginning of every interaction.

In iOS 9, I began using my iPhone by putting my thumb on the home button of my iPhone 6S and pushing. Touch ID would sense my fingerprint and unlock the phone. Yes, it blew past all my notifications, but it was fast.

With iOS 10, I’ve needed to train myself to do things in an entirely different way.

Steven Frank:

I’m confused by this new iOS 10 device unlock process. I have to do this 100s of times a day and now suddenly it’s possible to do it wrong.

David Chartier:

Each major iOS release brings big headline features that Apple announces on stage. But there’s always a lot of great little improvements and polish, many bringing improvements worthy of their own headlines. I kept a running list of these big little iOS 10 features while testing the public betas. Now it’s time to share with the rest of the class.

Josh Centers:

I’d like to share ten of the most useful and relevant highlights to help you make the most of iOS 10.

Nick Lockwood:

OMG the new Messages interface is so much worse than before. Mystery meat unlabelled buttons for everything.

Ashley Feinberg (via John Gordon):

Apple seems to be using search (in this case powered by Bing) to pull GIFs from a number of different sources. Its only censorship method thus far seems to be blocking potentially problematic words like “boobs” and “penis” and—as of this morning—“butt.” And there’s no reason for Apple to think that the word “huge” would bring up anything more than, say, a particularly large pillow or strawberry, except for the fact that of course it fucking would.

Simon Ganz:

After iOS 10 update, all shortcuts are gone and when re-added, don’t sync.

Kirk McElhearn:

Lots of people have been asking where the Shuffle or Repeat buttons are in the iOS 10 Music app. And it’s true, they’re not easy to find.

John Gruber:

The problem is, the screen where you swipe up to reveal them doesn’t offer any sort of visual indication that there’s a reason to swipe up.

Kirk McElhearn:

Genius is one of my favorite features in iTunes and the iOS Music app. It’s full of surprises. But it seems that Apple doesn’t like it any more. They changed the way you make Genius playlists in iTunes 12.3, and now they’ve removed it from the iOS Music app.

Mike Clay:

It's been a few days now, and the reality of the iOS 10 music ecosystem is beginning to settle. The redesigned Apple music player has been polarizing, to say the least, and one of the most dismayed groups are users who rely heavily on star ratings.

In iOS 10, ratings in general are buried deeper in the UI. Apple has made it a little more tedious to access their proprietary Love/Dislike algorithm, but the older 5-star system has been removed entirely.

Andrew Cunningham:

I’ve been tracking the performance of new iOS versions on the slowest supported hardware for four years now, and I don’t think my findings have been positive since I wrote about iOS 6 on the iPhone 3GS. iOS 7 was a bad fit for the iPhone 4, and iOS 7.1 was only an improvement in a relative sense. iOS 8 and iOS 9 were tolerable on the iPhone 4S, but they were still significant slowdowns compared to iOS 6 and 7.

But we have some reason to be optimistic about iOS 10 on the iPhone 5.

Kirk McElhearn:

With iOS 10, you can use your iOS device as a magnifying glass.

Benjamin Mayo:

I like the move back towards thicker fonts.

heyeased (via Isaac Halvorson):

The history of the 1px wallpaper effect, iOS 7.0-7.1: It could not set to wallpaper (App crashed), 8.0-8.2:Folders were pale blue tone (I vaguely remember Dock had a dark color also on 1px.), 8.3-9.3: these were gray tone and the background was never darkened on any color, and 10: the background is darkened on any color but Dock and folders are the original color. It has been changed three times since iOS 7.

Jeremy Burge:

This release (iOS 10.0.1) contains a total of 37 new emojis, or 632 emoji updates in total. This latter figure includes completely new characters as well as redesigned images for existing emojis.

Nick Heer:

Despite all of the things I thought Apple did right in iOS 10, I found their lack of support for the iPad as a unique platform to be disappointing. I know they can’t hit every item on their internal wish list with each release, but after the robust enhancements to the iPad experience in iOS 9, seeing many of this year’s improvements be scaled-up versions of the iPhone experience was not encouraging. In particular, the lack of significant improvements for the 12.9-inch iPad Pro seems worrying.

Tuesday, September 20, 2016

Swift 3 Notes

Ted Kremenek (Hacker News):

Swift 3.0, the first major release of Swift since it was open-sourced, is now officially released! Swift 3 is a huge release containing major improvements and refinements to the core language and Standard Library, major additions to the Linux port of Swift, and the first official release of the Swift Package Manager.

It’s great that he links to all the enhancement proposals.

Ole Begemann:

This is an excerpt from the Strings chapter in Advanced Swift. Chris Eidhof and I are currently updating the book for Swift 3 (and improving it in the process). This section on strings was originally written by Airspeed Velocity for the first edition of the book, and Chris and myself updated it for the upcoming edition.

Ole Begemann:

Trick question: does a string in Swift 3 always contain its prefix?

Ole Begemann:

In Swift 2, ranges were closely connected to collections. A range’s element type had to be an index type, and ranges themselves were also collections. This model underwent significant changes in Swift 3 as part of the new collection indexing model. Because the old index protocols no longer exist, the only constraint on a range’s element type is now Comparable conformance. And since the range elements now can no longer advance themselves, it follows that Range can’t be a Collection anymore, at least not without additional constraints. As a matter of fact, the Range type in Swift 3 is closer in concept to what used to be called intervals in Swift 2.

Erica Sadun:

I am really happy with how SE-0094 turned out. I helped with the paperwork but it was all Kevin Ballard‘s brain child, putting together the two new sequence functions. If you haven’t been playing with these yet, they’re available in the latest developer snapshots (both the main trunk and the public branch) and they’re delightful.

Brent Simmons:

Note that the Objective-C name SomethingHappenedNotification becomes just .SomethingHappened in Swift, and it’s automatically a Notification.Name.

Nick O’Neill:

These are just some of the big items you’ll run into when looking at your diffs after running the Xcode automatic migration.

Matt Gallagher:

This article is my response to the question of the week: “how much work is involved in migrating to Swift 3?”


I really wish I could say anything in this article [Exponential time complexity in the Swift type checker] had changed but the compiler issues described all remain exactly as is.

Natasha Murashev:

So although the Swift 3.0 upgrade is very painful, it is also a good time to notice all those repetitive things in your code and refactor.

Erica Sadun:

Swift 3 is a major, breaking language change. Are you ready to make the jump? Let “Swift from Two to Three” help you along the way. From migrating your code, updating your style, and adopting new Swift features, this book ushers you into the newly refreshed language. Learn what changed, why it changed, and how you can update your code using this hands-on guide that covers all the major difference with plenty of examples and insight.

There’s a Reddit thread about people’s experiences updating.

Update (2016-09-28): Keith Harrison:

Swift 3 has brought us some interesting access control changes. The differences between open and public or private and fileprivate take some getting used to. Luckily unless you are writing a framework the new rules are simple. Here is what you need to know.


John Gruber:

The problem with Bluetooth isn’t Apple. The problem is Bluetooth. It sucks. There is no open standard for wireless audio that doesn’t suck. “Open” had its chance, and they blew it.

Josh Centers:

The proprietary W1 chip brings several advantages: up to 5 hours of battery life, support for various sensors, purportedly superior audio quality, and most important, easy connections. You’ll be able to pair a W1 device merely by placing it close to an iOS device. Once connected, settings are synced to an Apple Watch, if you have one, and over iCloud to any of your other Apple devices (although Apple didn’t mention the Apple TV). You can simultaneously connect to your iOS devices, Macs, and Apple Watches and, according to Apple, switch seamlessly between them.


TidBITS Security Editor Rich Mogull was on site at the Apple announcement and had a chance to try the new AirPods. He verified that they fit similarly to EarPods, so if you dislike that fit, don’t waste your money on the AirPods. However, Rich said that they’re overall more comfortable, because there’s no cable drag. Even so, he wasn’t sure that he would use them for running.

John Gruber:

Latency is noticeably better listening to say, keyboard clicks, than with my Beats Powerbeats 2. But it’s still noticeable.

Kirk McElhearn:

No, the real problem is the fact that they’ll be so easy to lose. I can’t understand why Apple would release a product like this.

John Gruber:

I don’t mind Apple’s wired ear buds, but the AirPods feel better and fit better.

Jason Snell:

I think they’re going to be an extremely successful product, and more than that, I think they’re going to create an avalanche of competitors that try to match or beat Apple at their game. This is a product that really does feel magical, in old-school Apple style. It’s a thoughtful application of a bunch of different technologies, largely learned by spending a decade building miniaturized components for smartphones. Apple wasn’t the first company to create this sort of product—Bragi has been there for a little while—but it’ll be the one to popularize them.


Without a cable, there’s no clicker to play or pause your music, but if you pull one of the AirPods out of your ear, the iPhone pauses automatically—a cue that you’re removing an earbud because you want to hear something in the real world, or are talking to someone. Pop the AirPod back in and the audio begins to play. Take both of the AirPods out and the iPhone switches its audio output back to its own speakers.

Riccardo Mori:

From a user interaction standpoint, I’m not sure that a double tap on the AirPods to activate Siri is such a good idea, unless they can register very light taps. To me, that’s just an invitation to make an earbud drop.

Christina Warren:

I do wish there was some gesture support on the devices for stuff like skip or pause because those are functions I use on my wired headphones ALL THE TIME. Talking is cool but sometimes you just want immediate feedback you can only get from physical contact. Also, it’s just weird to be the person in public who appears to be shouting orders to their imaginary friends.

AirPods aren’t noise canceling, but in my brief experience in a bustling scene, they did a nice job blocking out sound. On a similar note, the microphone is tuned so that when you’re talking, it filters outside noise and just hears your voice. I had no trouble talking to Siri, even in a crowd.


Let me put it this way: AirPods sound way better than wired EarPods. I know that isn’t saying much, but it’s worth noting when you consider that the design is very, very similar.

John Gruber:

I love AirPods. They’re so good, so clever, so well-designed, and such a pleasure to use that they deserve their own standalone review. They’re not cheap at $159, but they make the $199 Beats Powerbeats2 wireless headphones I bought last year look like a joke.

Ruffin Bailey:

No, the AirPods are an interface. They are your Star Trek communicators. You tap, you get Siri, you ask whatever [Apple] device is near you to do what you need. They’re commoditizing device access.


You, untethered from any one specific device, with a wealth of ways to access any of them. And as that interface gets less and less substantial, it will gradually fade until it converges with what we now think of as augmented reality. That’s what device integration (that is, having Apple provide all of your devices) buys us, and it’s impressive seeing how what, on their face, are such minor advances (“Hey, Apple’s made Bluetooth headphones!”), really are just small pieces on a much, much larger chess board.

I remain very excited to try the AirPods, although since I don’t have an Apple Watch I really wish they had controls—other than Siri, which is cumbersome and I assume requires a network connection. Still, I think they’re going to be a hit.

Previously: iPhone 7.

Update (2016-09-24): Accidental Tech Podcast reports that there is a preference to make the double-tap play/pause rather than invoking Siri.

Update (2016-09-30): Mark Sullivan:

Veteran Apple engineer Bill Atkinson—known for being a key designer of early Apple UIs and the inventor of MacPaint, QuickDraw, and HyperCard—saw this coming a long time ago. He gave a presentation at MacWorld Expo back in 2011 in which he explains exactly why the ear is the best place for Siri.

John Gruber:

Not 12 percent of iPhone owners. 12 percent of consumers. For a product that Apple has merely announced, but not yet even started advertising. That’s huge. It’s just a survey, so take it with a grain of salt, but anecdotally, I get stopped almost every day here in Philadelphia by people asking if my review unit AirPods are in fact AirPods.

Update (2016-10-03): Mayur Dhaka:

Tap-and-hold wouldn’t work because the Airpods don’t actually detect a tap the way the iPhone’s screen does. It’s accelerometer picks up on the tap-tap movement to trigger Siri. Surely tap-hold could be implemented, but I doubt it would be as accurate.

The root problem is that Apple didn’t want to have any buttons.

Update (2016-10-11): Federico Viticci:

Not only are Apple’s claims accurate, I think they’re downplaying the magic going on inside their W1-powered headphones.

Update (2016-10-29): Juli Clover (Hacker News):

Apple today told TechCrunch that it needs “a little more time” before the AirPods are ready for a public release, without specifying the reason behind the delay.

Apple did not provide TechCrunch with updated launch information, so it is no longer clear when the AirPods will be available for purchase.

Update (2016-11-17): Rene Ritchie:

I’ve taken them walking, jogging, driving, even a little dancing — my living room, my business! — and they’ve stayed in fine. I’ve been out in the rain, the sleet, and really strong wind. I’ve only had them fall out twice: When I tried whipping my head around to see if they’d fall in, and when I tried some Brazilian Jiu-Jitsu drills at Serenity Caldwell’s urging. Both created enough force that, when I hit at the right angle, the AirPods came loose.

Even so, this exceeded both my expectations and my past experience with wired EarPods.


Because the AirPods offer beam-forming mics that engage when they detect your jaw movement, you can speak very softly — not quite sub-vocally, but close — and still get Siri to understand and trigger commands. In my tests, they do a great job isolating your voice. I’ve used Siri in the car, around the house, on the streets, and in relatively noisy hotels and bars with no problem.


The easy pairing and switching really do make a difference too. With other Bluetooth headphones, I’d swap pairings every once and a while, but mostly stopped because of the hassle. With AirPods, Apple TV is still a hassle, because it pairs like standard Bluetooth, but everything else is a dream.


I bought some PowerBeats 3s specifically to wear with my AppleWatch 2 while running, and I've been pretty disappointed, specifically because of how poor the pairing "magic" is. Sound quality is fine, comfort is good, battery life is ridiculous, I don't care about brand, and cost is quite frankly not a concern to me. I chose them entirely based on what I thought would be least hassle pairing with the W1 chip.

Where it fails so hard is its inability to recognize that I want to play music from the watch to the headphones. It literally takes minutes, not seconds, but MINUTES, every time, to start up my music prior to starting my run.

Update (2016-12-09): Rene Ritchie:

Apple’s new AirPods would be the ultimate stocking stuffer — IF THEY WERE SHIPPING. But they’re not. That means everyone I wanted to gift them too will have to wait. Even if Apple announces them now, they may not arrive in time, so I decided to take matters into my own hands and give out IOUs in the form of cards.

Joe Rossignol quoting the Wall Street Journal:

A person familiar with the development of the AirPod said the trouble appears to stem from Apple’s effort to chart a new path for wireless headphones. In most other wireless headphones, only one earpiece receives a signal from the phone via wireless Bluetooth technology; it then transmits the signal to the other earpiece.

Apple has said AirPod earpieces each receive independent signals from an iPhone, Mac or other Apple device. But Apple must ensure that both earpieces receive audio at the same time to avoid distortion, the person familiar with their development said. That person said Apple also must resolve what happens when a user loses one of the earpieces or the battery dies.

Update (2016-12-10): Nick Heer:

What’s more curious to me about the AirPods is that this issue isn’t something I saw reported in any of the early reviews published back in September. That’s not to say that the reviewers were lying, but if this is the reason for the AirPods’ delay, it must happen regularly enough that Apple wasn’t happy with it.

John Gruber:

“More difficult to manufacture at scale than expected” is also what I’ve heard through the grapevine, from a little birdie who knows someone on the AirPods engineering team. Things like what happens when you lose one or the battery dies — Apple solved those problems during development.

Update (2016-12-13): Apple is now taking order for AirPods. Mine are promised to arrive by December 21.

iPhone 7 Notes

Matthew Panzarino:

Every time you take a picture with the iPhone 7, both the wide angle and telephoto fire off. Yes, two 12 megapixel pictures for every shot. This could be a prime driver behind the increase of the iPhone 7 Plus’ memory to 3GB.

Both images are needed due to an Apple technique it is calling “fusion” internally. Fusion takes data from both sensors and merges them into the best possible picture for every condition. If, for instance, there is a low-light scene that has some dark areas, the image-processing chip could choose to pick up some image data (pixels or other stuff like luminance) from the brighter f1.8 wide angle and mix it in with the data from the f2.8 telephoto, creating a composite image on the fly without any input from the user. This fusion technique is available to every shot coming from the camera, which means that the iPhone 7 Plus is mixing and matching data every time that trigger is tapped.

John Gruber:

In my testing I didn’t see any noticeable difference between 1× shots on the iPhone 7 and 7 Plus. I think this “fusion” stuff only kicks in, or at least mostly kicks in, once you start increasing the zoom level. Put another way, I think the wide angle lens assists the telephoto lens more than the telephoto lens assists the wide angle.

Riccardo Mori:

Of all the new camera improvements in the iPhone 7 and 7 Plus — as ingenious as the dual camera system is on the bigger iPhone — my favourite is the flicker sensor. As Schiller explained, The flicker sensor reads the flickering of artificial lighting and can compensate for it in the photos and videos you take. I take a lot of indoor photos, and the flickering can be very annoying, especially when you want to include the source of artificial light in the frame. If this works as advertised, indoor photos and videos taken under artificial light will definitely look better, probably with more natural tones.

John Gruber:

Here’s the genius of the black and (especially) jet black iPhones 7. In a very seductive way, they look like something new and desirable. And at the same time, they are instantly recognizable as iPhones.

John Gruber (Hacker News):

After just five days — more than half of which I’ve spent using the matte black iPhone 7 Plus — this jet black iPhone 7 has a few “micro abrasions”, to use Apple’s own term. I can only see them when I’m looking for them, and only when I reflect light off the surface at the perfect angle, but they’re there. This is after two days of careful use, and never putting it in a pocket that contains anything else. The back surface of this phone shows more wear after (effectively) two days of use than my space gray 6S does after nearly a year.

That said, the unblemished back of the 6S looks downright boring. The jet black back of this iPhone 7 looks glorious.


The iPhone 7 now has OIS, for both stills and video. It works great. Side-by-side with my old iPhone 6S, I got noticeably better photos at an outdoor family gathering at dusk. I got noticeably better photos shooting indoors at night. And video shot while walking around is noticeably more stable and fluid. OIS does exactly what it says on the tin.


The new home buttons don’t feel like actual button clicks at all. It feels like the iPhone is clicking, not the button.


The new Taptic Engine is cool. Here’s my favorite use so far: the spinner control for things like picking a date or time (say, setting an alarm in the Clock app) now feels like a real spinner. It’s uncanny. I can’t wait to see how developers use these APIs.

Jason Snell:

I found that the Jet Black model indeed felt much more grippable than other iPhone 7 or iPhone 6 colors. Imagine placing a slightly damp finger on an iPhone screen, and how much harder it is to swipe your damp finger along that screen. That’s what’s going on with the Jet Black phone: even a little dampness on your fingers will cause them to skid along the surface, while it might slide right over the rougher anodized aluminum surfaces of the other colors.


I wouldn’t recommend you start using the iPhone for underwater photography—and Apple cautions that water invasion can void your warranty. But if you should get an iPhone 7 a little wet, everything will be okay.


When I first felt the new home button, I was really disappointed. The vibration felt halfhearted, and it made the act of pushing the home button feel like a letdown. I shouldn’t have worried: Apple actually offers three different levels of vibration in the new Home Button entry in the Settings app. And the most aggressive of those three levels worked great for me. No, the feel’s not the same as the old moving home button, but I managed to get used to it after about three button presses.

David Pogue:

When your phone is locked up, you can no longer hold down the Sleep + Home buttons to force-restart it. Instead, you’re now supposed to use Sleep + Volume Down, just as on many Android phones.

Gus Lubin (via Mike Rundle):

There’s an old rumor that iPhone home buttons break easily, and it’s causing millions of people to use an obscure accessibility feature called AssistiveTouch to avoid pressing them.

Juli Clover:

iPhone 7 and 7 Plus users are going to have a tough time unlocking their devices during wintertime. As it turns out, the new “solid-state” Home button on the iPhone 7 and iPhone 7 Plus requires skin contact or the right kind of capacitive gloves to function. […] And because the iPhone 7 uses the redesigned Lock screen in iOS 10, there's no quick and easy way to bring up the passcode entry screen to unlock the phone manually[…]

Raymond M. Soneira (via Craig Hockenberry):

The display on the iPhone 7 is a Truly Impressive Top Performing Display and a major upgrade and enhancement to the display on the iPhone 6. It is by far the best performing mobile LCD display that we have ever tested, and it breaks many display performance records.

Paul Miller and Dieter Bohn:

As pictured above, you can see a piece of plastic sits behind the ingress protection (waterproofing!), right where the headphone jack would have been. And (update!) according to Apple it’s a “barometric vent.” Apparently adding all the waterproofing to the iPhone 7 and 7 Plus meant that it was more of a sealed box, and so to be able to have an accurate and working barometer, Apple used that space. The barometer is the thing that allows a phone to measure altitude, and Apple points out that on the iPhone 7 it can measure even minor changes like climbing a flight of stairs.

Juli Clover:

IPx7, the water resistance rating, means the iPhone 7 can withstand immersion in water to one meter (3.3 feet) for 30 minutes, tested in laboratory conditions. IPx7 is the second-highest rating, below IP8, which indicates an ability to withstand long periods of immersion under pressure. Samsung's devices, by the way, are rated at IP68, suggesting better overall water resistance.

Apple has said that removing the headphone jack helped Apple meet IP67, however Samsung’s IP68 Galaxy S7 does have a headphone jack.

Chipworks (MacRumors):

We have revised our first A10 floorplan with help from our friends at AnandTech in the search for the small, high-efficiency cores. Our combined guess is that it is likely they are indeed integrated within the CPU cluster next to the big, high-performance cores. This makes sense given the the distinct colour of the small cores indicating a different digital library, and the position of the big core L1.

John Gruber (MacRumors):

Looking at Geekbench’s results browser for Android devices, there are a handful of phones in shouting distance of the iPhone 7 for multi-core performance, but Apple’s A10 Fusion scores double on single-core. […] The iPhone 7 scores better on both single- and multi-core than most MacBook Airs ever made, and performs comparably to a 2013 MacBook Pro.

John Gruber:

The iPhone has all the benefits (in short: superior design) that would keep me, and I think most other iPhone users, on the platform even if it didn’t have a performance advantage. But it does have a significant performance advantage, and it is exclusive to Apple. This is an extraordinary situation, historically. And year-over-year, it looks like Apple’s lead is growing, not shrinking. It’s not a fluke, but a sustained advantage.

Mark Sullivan:

Why? For a long time iPhones were one-size-fits-all-networks phones, but the iPhone 7 and iPhone 7 Plus each come in two different versions (or SKUs, in industry-speak), one with an Intel modem chip inside and one with a Qualcomm modem. The Intel 7630 modem doesn’t work with Sprint’s and Verizon’s 3G CDMA networks, so all Sprint and Verizon customers will get an iPhone 7 with a Qualcomm chip inside. For everyone else, the iPhone 7 could have either an Intel or a Qualcomm modem.


The end game for Apple may be to work with Intel to co-design a future system on a chip (SoC) that includes the modem, Apple Ax CPU, GPU, and many other components on one chip. This unified design can reduce the space the chips take up inside the phone, reduce the heat they emit, and reduce the power they require. The whole thing may be fabricated at Intel fabrication facilities.

AppleInsider (MacRumors):

In most cases, users claim the EarPods’ volume and call answer/end buttons become unresponsive after a few minutes of inactivity. Audio continues to play, and the microphone remains active, but users are unable to adjust volume settings, start or stop calls, or invoke Siri with the embedded remote.

Mitchel Broussard:

On the MacRumors forums, mentions of a “buzzing” and “static” sound coming from the back of the iPhone 7 and iPhone 7 Plus began on Friday afternoon. […] As pointed out by The Verge, the consensus of the noise’s origin online is that it’s caused by a phenomenon known as “coil noise.”

Oscar Raymundo:

So, you’ve unboxed your brand-new iPhone 7 or 7 Plus. It’s all set up, and it still has that fresh, new iPhone smell. Then, you hear a weird hissing noise. Or realize that the Home button or the Lightning EarPods are acting funky. Or your iPhone 7 is just not connecting to the cellular network. Yikes!

Yes, those are actual glitches that have already been reported by iPhone 7 users. If you’re experiencing a similar technical issue with your new device, take a deep breath and check out some possible solutions below.

David Steele:

Let’s take a look at seven features that Apple are belatedly bringing to the market and then consider why this is a good thing.

See also: more reviews.

Previously: iPhone 7.

Update (2016-09-24): James Thomson:

The lightning headphone adaptor sucks - walking about town listening to podcasts, it went dead 4-5 times and I needed to unplug / replug.

Yes, this was on 10.0.2, and I was actively listening to stuff and the audio just stopped.

Serenity Caldwell:

My general takeaway from the week’s misadventure is this: You can probably use your iPhone in the shower, at the beach, or wash debris off its screen under the faucet with no ill effects. But when you completely submerge it, you’re putting stress on every water-resistance gasket in the phone — and if just one of those gaskets fail, you’re looking at an Apple Store visit and a costly to very costly repair.

Wednesday, September 14, 2016

Testing for macOS 10.12 Sierra

Sierra will ship on September 20, so I’ve been testing my apps with the Golden Master (GM). Unfortunately, GM doesn’t mean what it used to. Not only is the macOS 10.12 GM different bits than customers will install (same with the Xcode GM) but there are actually multiple GMs.

The first GM that I downloaded was build 16A319. Then I heard about 16A320 and 16A322. There was probably one in between those, too.

When a new GM is released, it does not appear in the Mac App Store as an update. You have to delete the Install macOS, redownload the installer, and install the whole thing again.

I have been using VMware for testing. Despite the update to VMware 8.5, VMware will not automatically install Sierra for me. If I create a new VM and tell it to use the installer app, VMware reports an error: “Unable to create the installation medium.”. [Update: See below.]

There are two methods that have worked for me:

  1. Copy and open a Mac OS X 10.11 VM, drag the installer app to its Finder, then run installer. (Then, optionally, delete the installer, empty the trash, and compact.)

  2. Create a blank disk image called Sierra, then make an installer disk:

    sudo /Applications/Install\ macOS\ --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\

    And tell VMware to create the VM based on the disk image.

Unfortunately, the Sierra GM is still rather buggy.

Update (2016-09-15): Another GM build, 16A323, has been released, and I’m told that the “official” release next week will be different still.

Emma Rios reports that the second GM still has an issue with slow Wi-Fi.

Update (2016-09-20): The final build from the Mac App Store is 16A323.

Wednesday, September 7, 2016

iPhone 7

Overall, it is impressive and better than I was expecting. The processor is much faster, battery life is better, the camera has an image stabilizer (but still the bump), it’s water resistant like the original Apple Watch, the display supports wide color, and the speakers are better. I plan to keep my iPhone 6s, though.

I was a bit surprised that it does not support the Apple Pencil or True Tone, and also that the old iPhones got bumped up to 32 GB.

As expected, the case is the same uncomfortable shape—the worst of all the iPhone designs.

I’m not sure what to make of the new home button—early reports are mixed.

The AirPods look great, especially the battery life and ease of charging. Of course, this assumes that the wireless pairing works as well as Apple promises. Bluetooth audio has always been unreliable. I’m not sure I want to give up my Jawbone ERA, which is very easy to hear in noisy environments. It sounds like the AirPods only filter out the noise for the microphone, not the speaker. And I’m not sure the AirPods will have a snug enough fit for jogging. I was also hoping for better controls, i.e. the ability to play/pause/next without using Siri, a regression compared with wired earbuds.

Of course, there is no headphone jack. The way Apple justified this was pretty disappointing—no real reason was given. Even if the AirPods are great, that is a separate issue, not a benefit. The “courage” line was rather strange. They have the courage to make a proprietary wireless product, but they’re including wired EarPods and an adapter in the box? Or was it the courage to make everyone who likes their headphones carry a bulky adapter? At least extra adapters are only $9. There was also no reassurance about different use cases. For example, I have yet to see an adapter that would let me attach the iPhone to my car’s audio and charge it while it’s in a GPS mount.

Update (2016-09-08): Michael Nelson (via Parker Higgins):

That’s great, right? They “started allowing” it. You know who wasn’t so in love that idea? Headphone makers. As MacWorld wrote back in 2014, the rest of the audio industry largely resisted Apple’s invitation to revamp entire product lines to service a single piece of hardware that was bound to be updated again in a few years anyway.

Nick Lockwood:

Having standard ports lets hardware manufacturers bypass MFI.

The MFi licensing fee is $2/port.

John Paczkowski:

But the thing is, when Apple scrapped the iMac’s floppy drive, the floppy disc was ferociously inadequate as a storage solution and in obvious need of replacement.

The 3.5-millimeter audio jack, however, is neither inadequate nor in obvious need of replacement.


At the top of both devices is something called the “driver ledge” — a small printed circuit board that drives the iPhone’s display and its backlight. Historically, Apple placed it there to accommodate improvements in battery capacity, where it was out of the way. But according to Riccio, the driver ledge interfered with the iPhone 7 line’s new larger camera systems, so Apple moved the ledge lower in both devices. But there, it interfered with other components, particularly the audio jack.

So the company’s engineers tried removing the jack.

Andrew Pontious:

“It’s a dinosaur. It’s time to move on.”

Throwing away perfectly good tech because of “progress” will be the death of us.

David Smith:

I really don’t understand the way they’re marketing this >.< why not lead with “it made room for the camera + 2hrs of battery”?

My guess is because it didn’t really make room for all that. Besides, this is all premised on the idea that the phone’s size can’t change. If the decision really was about size rather than “courage,” surely Apple could have found way to fit the headphone jack into the iPhone 7 Plus.

Phil Schiller:

Remember, we’ve been through this many times before. We got rid of parallel ports, the serial bus, floppy drives, physical keyboards on phones — do you miss the physical keyboards on your phone?

As far as I know, Apple never shipped a device with a built-in parallel port.


This is much worse than I imagined – I was expecting some sort of shoe to drop to make this palatable, like wireless charging of the phone too. I will admit that a fair amount of conventions were uprooted and smart things were done to help the wireless story towards what it needs to be. But here’s the problem: if things that you start to play from your other connected devices really do start to play on the AirPods too, that’s the wireless headphones nightmare, to not have any control over those things.

Andrew Cunningham:

Apple’s Taptic Engine does provide feedback when you touch the button, but it’s now much more like the haptic feedback you’d get from a capacitive or software button on an Android phone. […] The iPhone 7’s Taptic Engine is less precise, so the entire phone vibrates slightly as you press down on the Home button. You can adjust the force of that feedback in the settings (and an Apple representative said it would be added to iOS’ increasingly lengthy first-time setup process, too), but it still feels like pushing a solid thing that makes the phone vibrate instead of pressing a button. It will also take some time to get used to the amount of force needed to register as a “click,” something that was far more obvious with the old clicky button.


A quick note on the W1: it’s used to make pairing and battery status checking and the Siri features work quickly and seamlessly, but the actual audio is still being streamed over good-old Bluetooth, and the AirPods can be paired the standard way with anything that will do Bluetooth audio.

Juli Clover:

Belkin today announced the Lightning Audio + Charge RockStar for the iPhone 7 and the iPhone 7 Plus, an accessory that will allow iPhone 7 users to charge their iPhones and listen to music at the same time.

It has two Lightning ports, but no headphone jack, so you would also need to use Apple’s dongle to plug into regular headphones or a car’s Aux input.

Update (2016-09-20): Chuq Von Rospach:

So Apple came into the event with weak expectations because of the leaks causing a focus on superficial and cosmetic details — but lets be honest, the iPhone depends on a style/design attraction as well, so these issues are important (but it’s not the lead feature each time, which gets forgotten) — and there were some sour notes in the event itself, especially the “Courage Dance” that sidetracked us fro the meat of the event. And that’s too bad, because the good stuff was really good, but it’s muted in the conversation because of the other distractions.

Jean-Louis Gassée:

One could say that the pundits did for Apple what the company should have done on its own: Underpromise as an easy path to overdelivery.

The Register:

The truth though is that large tech companies, especially in Silicon Valley, often use access to their events and their executives as a way to force positive coverage of themselves. If you write one bad thing about them, they threaten to stop talking to you. If you ignore the warnings, they blacklist you.

Riccardo Mori:

It’s not that I don’t think wireless is the future for audio. Nor I think Apple should continue to keep the headphone jack indefinitely. My argument against the jack removal is that the alternative solution Apple has presented doesn’t feel elegant, effective or compelling enough. Since everyone is quick to bring up past examples, I’ll say that again: every time Apple purposely dropped a technology from its hardware, the chosen alternative was better in every way, more elegant, more practical, more efficient — just compare the huge advantages of FireWire over SCSI, to make one example. What Apple has proposed as an alternative to wired audio on the iPhone doesn’t feel this better, but more like a stopgap.

Riccardo Mori:

I’d really like to read a list of those “too many reasons aligned against it sticking around any longer”, but the fact is that this transition Schiller talks about isn’t yet necessary. Instead of solving an existing problem, Apple has created a problem to then solve it their way and feed us the narrative of the courageous pioneer. All the examples of past transitions Schiller makes are valid because all those were technologies that were made obsolete by the appearance of newer, more advanced, better solutions.

Kirk McElhearn:

We’ve been talking about this for more than a year, and I had pretty much resigned myself to accepting the company’s boneheaded decision, and living with yet another dongle (though I hadn’t planned to buy an iPhone 7, and I still don’t plan to do so).

But when Phil Schiller said “Courage,” that flipped my bits.

John Gruber:

Removing the headphone jack but including both Lightning ear buds and a legacy adapter is a nudge. But the nudge will help drive adoption of wireless headphones. In the alternate universe where Apple introduced the exact same AirPods and W1-powered Beats headphones but kept the analog audio port on the iPhone 7, adoption of those wireless headphones would be slower. I think a lot slower. More people would have a worse experience on a daily basis, dealing with tangled cords and all the other hassles of having your ears tethered to a device.


Choosing to do what you know will be unpopular in the short run but you believe will prove correct in the long run takes courage. Courage of one’s convictions, not courage running into a burning building to save a life, but courage nonetheless.

Henry T. Casey (via Kirk McElhearn):

Both accessory-maker Belkin and Apple offer a solution to this problem, but neither provides users with a good experience.

Rob Griffiths:

Traditionally, third-party battery pack cases plug into the Lightning port, and typically provide a micro USB connector in its place. They also then usually have a headphone passthrough, either via a port extender or a special headphone cable extender, to allow you to plug in headphones without removing the battery pack.

I was curious how the case makers were going to address this for the iPhone 7, because blocking the Lightning port means that users will have to use wireless headphones when using a battery pack.

Josh Centers:

How big of a deal is the lack of a headphone jack? It wasn’t popular, with a post-announcement survey of 1140 American consumers by Toluna Quicksurveys revealing that Apple’s move ranks among the least favorite changes in the iPhone 7. However, Toluna Quicksurveys added a couple of exclusive questions at our request. Of the respondents, 74 percent said that the lack of a headphone jack wouldn’t affect their purchase decision, and 56 percent of respondents went further, saying that it wouldn’t even require them to change their habits, presumably because they already rely on wireless audio or the iPhone’s built-in speakers.


Apple has played this game before. Apple are the experts of coming out of things with the same attitude as it went into it with. The actual casualties will be ignored. The point is that Apple will never do anything that will allow the theories they put forward to be tested.


Why don’t they offer this? Because it wants to be a company to which it is more important to be right than to serve the actual needs of their customers. It wants to put a dent in the universe in terms of causing upheaval and in terms of implementing an idealistically pure world view, not in terms of being solicitous towards the everyday problems of people. Letting people pick thicker mocks their effort and drive to make things thinner, even if that drive is exactly what would let them offer iPhone P, too.

John Gruber:

If you have to have a bump, own the bump, I say. And the new iPhones own their bumps. Some of Apple’s product photography highlights the bump — the complete opposite of the iPhone 6 shots two years ago that hid the bump. And the antenna lines have been cleaned up significantly.


One surprise for me is that the new iPhones lack the True Tone color-balancing feature in the 9.7-inch iPad Pro. At the March event introducing that iPad, Phil Schiller said of True Tone, “Once you get used to it, you can’t go back.” I took that as a hint that the new iPhones would get it too. Clearly, I was wrong. My guess as to why: space. True Tone requires extra sensors. iPads have room for those sensors; the iPhone doesn’t (yet). Too bad.

John Gruber:

My gut feeling from my time in the hands-on area is that in the real world, the black iPhone 7 looks better, and the jet black iPhone 7 feels better. I say “in the real world” because in the perfect vacuum of a retail display or photo studio, the jet black iPhone looks like the most stunning device I’ve ever seen. There’s no way it’s going to look like that in the real world. But I think it’s going to feel great in your hand even when it’s smudged with fingerprints.

Dan Graziano:

The company traditionally issues a statement about the record number of people who purchase the devices during the first weekend of sales, but this will no longer be the case.

Update (2016-09-28): Peter Kirn (via Michael Yacavone):

First, it appears the analog output in Apple’s headphone adapter (that is, via the Lightning port) isn’t strong enough to drive analog headphones reliably. There’s an excellent and detailed study of this by Germany’s CT magazine.


Second, Apple’s efforts to improve Bluetooth pairing appear to be locked to their own headphones. That would be fine, if Apple were any good at making headphones – except, sorry, they really aren’t.

Evolving App Store Business Models

David Smith (Hacker News):

I don’t have solid data going all the way back to 2008 when I launched my first app, but I do from 2012. In the last 4.5 years the split of where my revenue comes from has followed a clear, inexorable march from being paid-based to advertising-based. Starting in 2012 advertising in my apps made up around 10% of sales whereas now it is nearly 80%. That increase has come almost entirely from a near collapse of my paid upfront sales (with my in-app purchase income largely unchanged).


The sizable jump in advertising revenue this year was caused by switching away from iAd to AdMob when Apple announced they were discontinuing that advertising platform. The dip in revenue from January to May of this year was caused by staying on iAd even when their rates started to slide, likely an early indication of the end of the service.

I wonder how much revenue Apple is losing by discontinuing iAd.

Russell Ivanovic:

In 2008 we made all our money from paid apps. In 2016 we still do and our revenue is higher than ever. There is no one rule for everyone.

I know plenty of devs who are struggling in every business model. Paid, IAP, Ads. Being indie is not easy. There is no silver bullet model.

Previously: Apple Eliminating Its App and Radio Ads.

App Store Subscriptions Clarification

Apple Store Review Guidelines History (Apple, Hacker News):

If you offer an auto-renewing subscription, you must provide ongoing value to the customer. While the following list is not exhaustive, examples of appropriate subscriptions include: new game levels; episodic content; multi-player support; apps that offer consistent, substantive updates; access to large collections of, or continually updated, media content; software as a service (“SAAS”); and cloud support.

The “consistent, substantive updates” part is the most interesting, but I don’t understand how that works in practice. When you are submitting a new app, it doesn’t have a track record of updates, and it’s hard to even predict what the development path will be like.

Curtis Herbert:

Unfortunately subscriptions require a lot more work on our part than paid up front. StoreKit and receipt validation can be new territory, even for a lot of senior developers as many just haven’t had to touch a lot of this before.


One annoyance, here, is that this only seems to happen on app launch. If the user is inside your app when the renewal actually goes through, you won’t get the callback until next time.


There is no insight into when they turn off auto-renew. I can’t adjust my wording in-app to acknowledge that they disabled auto-renew.


Subscriptions were born from newstand, and it still shows. One of the final steps of the purchase phase is to prompt the user to share email, name, and zip code. It is billed as “the publisher wants this information”, but I don’t! A friend on Twitter pointed me to this dev forum post which explains that there is no automated way to opt out of asking this, but if you email App Review they’ll manually flag your app to remove the prompt.

Previously: Pre-WWDC App Store Changes.

Tuesday, September 6, 2016

Removing Abandoned Apps and Shorter App Names

Apple (details, Hacker News):

We know that many of you work hard to build innovative apps and update your apps on the App Store with new content and features. However, there are also apps on the App Store that no longer function as intended or follow current review guidelines, and others which have not been supported with compatibility updates for a long time. We are implementing an ongoing process of evaluating apps for these issues, notifying their developers, and removing problematic and abandoned apps from the App Store.

I think this is what most people expected Apple would do all along. We’re long past the point where Apple should be bragging in keynotes about how many apps are in the store. People don’t want quantity; they want better apps that are easier to find. Hopefully, Apple will not remove useful apps that still work but that have not been updated in a while.

In hopes of influencing search results, some developers have used extremely long app names which include descriptions and terms not directly related to their app. These long names are not fully displayed on the App Store and provide no user value. App names you submit in iTunes Connect for new apps and updates will now be limited to no longer than 50 characters.

This makes less sense to me. If the terms are irrelevant, Apple should never have allowed them to begin with. If they’re legitimate, why the arbitrary limit? Long names are a workaround for the fact that the App Store’s search engine doesn’t work very well, so this change could potentially make apps harder to find. As with search ads, the name limit is not necessarily a bad idea, but it’s worrying that Apple continues to work on the edges of the problem instead of just improving its search engine.

Manton Reece:

My worry is that Apple attempts to fight problems with new policy alone instead of also encouraging the right behavior with App Store features.

David Smith:

It looks like only around 9% of apps currently have names that are longer than 50 characters (around 200k).


The average length of an app name is 22 characters. The mode is 11. The median is 17. Which tells me that the 50 character limit was added largely to constrain the problem rather address it directly.


At the very least I suspect the trend of adding a dash/colon to the end of your app’s name and then appending a subtitle will be strictly forbidden.

Daniel Jalkut:

There are over 2 million apps in the App Store, and Apple has effectively announced that they are prepared to re-review all of them in the name of improving overall quality in the store. This hints strongly that there has been some systematic improvement to the review process. It boggles the mind to imagine that all 2 million of those apps were in fact reviewed by humans, but that happened over the course of almost 10 years. Whatever process Apple is gearing up to apply, they claim apps will start dropping from the store as early as September 7.

Swift 3’s “Never”

Erica Sadun:

SE-0102 removes the rarely-used @noreturn function type and replaced it with a dead-end return type[…]


Never allows a function or method to throw: e.g. () throws -> Never. Throwing allows a secondary path for error remediation, even in functions that were not expected to return.

As a first class type, Never works with generics in a way that the @noreturn attribute could not.

Erica Sadun:

Guard conditions require you to exit scope. Never mean you cannot return from your function. So, instead, add a simple do-scope layer[…]

Fortunately, I don’t think this sort of contortion is commonly needed.

iTunes 12.5 Removes Unreadable Custom Colors

Kirk McElhearn:

“Someone at Apple thought it would be a good idea, a few years ago, to have iTunes display content in certain views using colors extracted from album artwork. Sometimes this is quite attractive. But sometimes, this borders on torture.”


Well, Apple is changing this in iTunes 12.5. They’re eliminating this feature entirely. While there is currently an option to turn it off, I suspect that most people don’t bother to look for the setting, or don’t know it exists. And they then end up with a display that is simply unreadable.