Archive for March 2019

Friday, March 22, 2019 [Tweets] [Favorites]

iOS 12: Changes in Memory Accounting


iOS 12 and tvOS 12 require apps to use memory far more efficiently than before. If you have difficulty reducing your app’s memory requirements, contact us to request an entitlement for your app to use iOS 11-style memory accounting.

Steve Troughton-Smith:

An example of Apple providing private entitlements on request so that iOS apps can do things they could not otherwise; there are so many ways in which Apple could use these w/ trusted partners to build categories of apps that would otherwise break rules


This memory requirement is news to me. So great to hear about a change like this 6 months after it shipped. Also there’s no details I can find on what the rules are it’s just “use less memory”. Really hate this platform sometimes. 😥

Orion Edwards:

The problem with extra entitlements like this is that apple is useless. We asked for the “don’t show Apple Pay pop up when you see NFC” entitlement as it interferes with our app’s behaviour over a month ago. No response from apple whatsoever

We found a similar thing online, except their story was “apple ignored me for over a month, but then I asked my friend who works at apple to have a look and then it got dealt with.” It’s hard to have a handy friend who works at apple when you live in New Zealand 😞👎

Andrew Grant:

To be fair, this is them grandfathering in existing apps after they made significant changes to available memory in iOS 12. There are a lot of apps that are still submitting with the old SDK due to this change

Previously: Transmit 5 on the Mac App Store.

Late Responders

Paulo Andrade:

To summarize what was said above, some features that rely on the responder chain should be available even when the relevant responder isn’t on the the chain’s path.

With that in mind I propose a solution I’m calling “Late Responders”. The way it works is that you setup a late responder registry further up the chain, such as the window. Then, the responders further down the chain can register a late responder with the registry and let it handle any features that should be always available.

This way even if the responder itself isn’t in the chain’s path, its late responder surely will be.

Thursday, March 21, 2019 [Tweets] [Favorites]

UTF-8 String in Swift 5

Michael Ilseman:

Switching to UTF-8 fulfills one of String’s long-term goals to enable high-performance processing, which is the most passionate request from performance-sensitive developers. It also lays the groundwork for providing even more performant APIs in the future. String’s preferred encoding is baked into Swift’s ABI for performance, so it was imperative that this switch happen in time for ABI stability in Swift 5.


Swift 5, like Rust, performs encoding validation once on creation, when it is far more efficient to do so. NSStrings, which are lazily bridged (zero-copy) into Swift and use UTF-16, may contain invalid content (i.e. isolated surrogates). As in Swift 4.2, these are lazily validated when read from.

This sounds great, as I’ve run into problems in Objective-C where strings that are not valid Unicode would cause strange failures a layer or two below my code. I don’t see it documented what happens when validation fails, but my guess from the code is that it repairs the string using replacement characters. That makes sense given the cases I’ve seen. Set one bad attribute on a managed object, and the entire context fails to save. If validation were eager, maybe I could do better at the point of creation than replacement characters (assuming I’m even creating the strings myself). But, this much later, I don’t think there’s much to be done. It’s not worth risking data loss for the common case where the developer hasn’t anticipated this happening and written code to fix the strings.

As mentioned above, Swift 5 switches from two native storage representations to one. This allows for better analyses and more aggressive optimizations with fewer potential code-size or compilation time costs.

For example, inlining is a compiler optimization that can improve run-time performance at a potential cost to code size. In Swift 4.2, most string methods contained a pair of implementations, one for each storage representation. No matter what form a 4.2 string was in, an entire portion of potentially-inlined code wouldn’t even be run; this increases the cost and diminishes the benefits of inlining. Furthermore, the greatest benefits of inlining come from follow-on analyses and optimizations specific to one call-site, which are exponentially more difficult to perform on a dual representation. Swift 5’s unified storage representation is far more amenable to inlining and follow-on optimizations.

Michael Ilseman:

String remembers performance-relevant information about its contents through the use of performance flags.

For example, a String that is known to be all-ASCII has a trivial UTF8View, UTF16View, and UnicodeScalarView. Also, mapping offsets between the two code unit views is trivial, so there is no need for any bookkeeping as part of Cocoa interop.

Previously: String’s ABI and UTF-8.

More Undiscoverable Gestures

Nick Lockwood:

For years I thought it was weird that Apple’s phone UI provides no way to paste in a copied phone number. Then someone showed me how to do it and… I couldn’t be angrier 🤬

In case it isn’t clear from that screenshot, you have to long-press on the featureless whitespace area above the keypad.

I guess putting a text field, or literally anything at all would have compromised the designer’s vision.

I didn’t know this either.

Alex Rosenberg:

It’s the same with copying from Calculator. As a user, I expect that to work because the same traditionally worked on Mac.

Constantino Tsarouhas:

You can also tap it once to use it like any other text field (cursor, selection, etc.). It’s been that way since the redesign in iOS 7, IIRC.

Kirill Pahnev:

We have to agree. iOS has become platform of hidden tricks and gestures

Andrei Anton:

…maybe the actual problem is having an UI where what’s technically an input field (that’s obviously expected to have a “long tap to copy/cut/paste” function) looks EXACTLY like whitespace! Let’s bring back UIs that actually have strong visual cues in them…

Jaime Santana:

Another “hidden” dialpad feature; upon opening it, with the text field still empty tap the dial button, it will paste the last dialed number. You have to tap the dial button one more time to actually dial it.

Jason notes that you can put a call on hold by touching and holding the Mute button.

Tom Dale:

I’ve been using OS X for over 15 years and I just figured out how to remove a saved color from the system color picker.


Facebook Stored Hundreds of Millions of User Passwords in Plain Text for Years

Brian Krebs:

Facebook is probing a series of security failures in which employees built applications that logged unencrypted password data for Facebook users and stored it in plain text on internal company servers.


The Facebook source said the investigation so far indicates between 200 million and 600 million Facebook users may have had their account passwords stored in plain text and searchable by more than 20,000 Facebook employees. The source said Facebook is still trying to determine how many passwords were exposed and for how long, but so far the inquiry has uncovered archives with plain text user passwords in them dating back to 2012.

My Facebook insider said access logs showed some 2,000 engineers or developers made approximately nine million internal queries for data elements that contained plain text user passwords.

Zero-day Safari Exploits Allowed Complete Takeover of Mac

Ben Lovejoy:

The first exploit managed to escape the sandbox, a protection macOS uses to ensure that apps only have access to their own data, and any system data permitted by Apple.


The second got rather further, gaining both root and kernel access to the Mac.

This despite process isolation and sandboxing

It’s Frustrating That Preview in Mojave Isn’t Better

Adam Engst:

When 10.14 Mojave rolled around, however, its Continuity Camera and screenshot features directly impacted Preview, so I decided it was time to do a deep dive and see what else might have changed in Preview.

Unfortunately, the results of my investigation weren’t particularly positive. The new features in Preview don’t add much value, one change is actively bad, and Apple introduced a handful of bugs.

Overall, I think the version in macOS 10.11 was better.


MySpace Lost Music Uploaded From 2003 to 2015


As a result of a server migration project, any photos, videos, and audio files you uploaded more than three years ago may no longer be available on or from Myspace. We apologize for the inconvenience and suggest that you retain your back up copies. If you would like more information, please contact our Data Protection Officer, Dr. Jana Jentzsch at

Via Nick Heer:

Anyone who thinks that something like this couldn’t happen to the music they’ve created and uploaded to Soundcloud or YouTube is fooling themselves.

Update (2019-03-22): Gary Bernhardt:

Reminder that “the cloud” is neither a backup nor a suitable location for data that you care about. Your provider will delete all of your data when it’s no longer economical to host it, or when someone typos a shell command, whichever comes first!

Not Relying on NSFileCoordinator

Soroush Khanlou:

This is where I discovered my problem. Without using NSFileCoordinator, the mutatingObject dropped about 70% of writes. With it, even using the reading and writing options correctly, I was still losing a few dozen writes every 10,000. This was a serious issue. An object storage that loses about half a percent of writes still isn’t reliable enough to use in production. (Apple folks, here’s a radar. It includes a test project with a failing test.)

At this point, I started thinking about what I was actually trying to do, and whether NSFileCoordinator was really the right API for the job.

Do-nothing “Antivirus” Apps

Catalin Cimpanu (via John Gruber):

An organization specialized in testing antivirus products concluded in a report published this week that roughly two-thirds of all Android antivirus apps are a sham and don’t work as advertised.

Tim Schmitz:

The fact that this stuff exists on the iOS and Mac App Stores really makes you wonder what the point of app review is anyway.

I don’t like the idea of Apple deciding—which it already does to a certain extent—whether an app is “useful,” but clearly one role of a trusted store should be to prevent deception.

Why Operators Are Useful

Guido van Rossum:

The general idea here is that once you’ve learned this simple notation, equations written using them are easier to manipulate than equations written using functional notation -- it is as if our brains grasp the operators using different brain machinery, and this is more efficient.


Now, programming isn’t exactly the same activity as math, but we all know that Readability Counts, and this is where operator overloading in Python comes in. Once you’ve internalized the simple properties which operators tend to have, using + for string or list concatenation becomes more readable than a pure OO notation, and (2) and (3) above explain (in part) why that is.

Of course, it’s definitely possible to overdo this -- then you get Perl.

Observing the use of custom operators can help identify problem spots in a language.

Wednesday, March 20, 2019 [Tweets] [Favorites]

AirPods 2019

Apple (Hacker News, ArsTechnica):

The new Apple-designed H1 chip, developed specifically for headphones, delivers performance efficiencies, faster connect times, more talk time and the convenience of hands-free “Hey Siri.” AirPods come with either a standard charging case or a new Wireless Charging Case for convenient charging at home and on the go.

Hey Siri support is a big deal because, if you don’t have to dedicate one of the two tapping actions to Siri, you can use it for a forward or backward skip. I don’t think this is worth buying new AirPods for, and Qi charging seems much less useful here than for a phone, but I think many original AirPods owners are going to be forced to upgrade within the next few years simply because of the aging batteries. I haven’t yet had problems with listening, but recently I’ve been getting less than an hour of talk time. AirPower is still not available, so Apple hasn’t said whether the new case will work with it, though I would assume so.

Joe Rossignol:

The new AirPods are available to order on and in the Apple Store app starting today with a wired charging case for $159, the same price as the original AirPods, and with a wireless charging case for $199. Both options will be available at Apple Stores and select resellers starting next week.

The wireless charging case is also available individually for $79 for use with both the first-generation and second-generation AirPods. An LED light indicator located on the front of the case shows the charge status at a glance.

Ryan Jones:

BTW, very nice launch strategy for AirPods 2:

1) pods + wireless case
2) pods + normal case
3) just wireless case

Super flexible and conscientious of user needs. Could have easily been 1 only.

Tanner Bennett:

It is cheaper to buy brand new AirPods and the new case separately, then sell the old case, than it is to buy the new AirPods outright

Zac Cichy:

I just wanted a charging case that isn’t going to collect metal particles and stain the inside. Maybe next time!

Ish Abazz:

Is there any way to trade in or recycle old AirPods? I’m betting hundreds of thousands of them will be replaced soon.

Mark Gurman:

These AirPods were initially planned to go on sale last year. They’re also working on a future version with noise-cancellation and water resistance. Those were planned for later this year, but would now imagine that’s for 2020.

Update (2019-03-21): Lee Hinde:

FWIW, I’m upgrading solely to get the longer battery life. I’m in a remote-only company (lots of Slack calls) and sometimes meetings go past the current gen’s battery life.

Ryan Jones:

Wait a second, AirPods 1.5 could a path to volume control now.

Siri: Hey Siri
Play/Pause: Remove
Right Pod: Volume Up
Left Pod: Volume Down

Update (2019-03-22): Kirk McElhearn:

This is quite disappointing. I bought mine when they were released, in December 2016. I don’t use them a lot; I use them for phone calls (I work at home, and I prefer making phone calls with headphones), and to listen to music and podcasts when I walk. But that is, on average, less than one hour a day, and sometimes I don’t use them for several days.

Nevertheless, I find that they don’t connect to my iPhone reliably any more, and they don’t last as long as they used to.

iMac 2019


Apple today updated its iMac line with up to 8-core Intel 9th-generation processors for the first time and powerful Vega graphics options, delivering dramatic increases in both compute and graphics performance.


The 21.5-inch iMac now features 8th-generation quad-core, and for the first time 6-core processors, delivering up to 60 percent faster performance.

The 27-inch iMac now for the first time features up to 9th-generation 6-core and 8-core processors, delivering up to 2.4 times faster performance.

It’s great to see an update, and without a price increase, but I’m not sure this is what people were hoping for. The case seems to be unchanged, and so likely doesn’t address the dust or thermal issues.

There’s no T2 support and, if Apple keeps the same schedule, that means two more years to wait. I understand that the T2 might be too expensive for a lower end model, and not applicable to the hard drive configurations. But for a 27-inch iMac that’s $1,899–$5,249 with an SSD? Even the $799 Mac mini has one.

Then there’s the mystery of no SSDs in any of the base configurations. Sure, have an optional Fusion Drive for those who don’t want to pay for a 2 TB SSD. But the default configuration should be an SSD. They really are not that expensive to buy third-party, and Apple must get better deals than we do. Is this the case of perfect being the enemy of good—insisting that all Mac SSDs must be high-end ones, even though cheaper SSDs are still way better than hard drives? Or is it just all about margins?

Lastly, I wonder whether Apple planned to hold out on SSDs for so long. If the standard configuration is going to have a hard drive, then the case should be designed for it. But since 2012 the 21-inch iMac has only supported slow laptop hard drives. The case, the OS, and the file system were not optimized for hard drives, and yet that’s what the default configurations include.


After nearly two years, Apple has released new iMacs, and Jason has an exclusive interview with Apple’s iMac product manager, Colleen Novielli.

Jason Snell:

The $1099 base model non-Retina iMac remains unchanged, the desktop equivalent of the $999 MacBook Air—an old model anchored to a low price.


What this means is that these new iMacs have closed a bit of the gap between the highest-end iMac and the lowest-end iMac Pro. You’ll need to pay extra in configurable options, but the highest-end eight-core iMac should creep close to iMac Pro territory in terms of processor and graphics performance.

Of course, all that performance comes in a familar shell—it’s the same iMac cooling system as before, which means if you stress out the iMac you will hear the fans. My friend Stephen Hackett ended up switching from a high-end 5K iMac to an iMac Pro in order to get a computer that was silent under heavy load, thanks to the iMac Pro’s superior (and quiet) cooling system.

Marco Arment:

Nice to see an iMac spec-bump, finally.

Shame they haven’t included the T2 and its huge security benefits. I was hoping to see all Macs with T2 chips by the end of the year.

Maynard Handley:

So option 2 is use cheap low-end slow flash and driver. Personally that’s the path I would take. Sure, there’d be mocking about the slow flash, but IMHO it’s a better tradeoff than HD!

Paul Haddad:

The 6 core CPU is non hyperthreaded, which is crazy on a $2300+ machine.

Wojtek Pietrusiewicz:

iMac early 2019. 1TB SSD = $700. Samsung 2TB NVMe M.2 = $500.
Samsung 1TB 970 Pro = $350. 970 Evo = $250.

Colin Cornaby:

The weird thing is the Vega GPUs Apple is using... don’t exist? If they’re custom slower versions of real Vega, that’s a big bummer. Still not shipping a high end consumer GPU on the iMacs?

I’d guess it’s a power and heat thing. Vega requires a good amount of power and runs hot. Unless they really wanted to up the power supply in the iMac full Vega might not be an option.

Ian Spencer:

It took two years for this? It’s a $450 upgrade to not have a three year old GPU that was slow even when it was new. And that upgrade isn’t even to the mid-range Vega 56. Yikes.

John Gruber:

This is an industrial design that deserves to last years. It still doesn’t seem possible to get displays of this caliber at these prices in the PC world — or at any price for 5K in an all-in-one.

Llyod Chambers:

Why would you go with 32GB memory from Apple, when it costs less to install 64GB?

Howard Oakley:

The one feature about them which concerns me is their continuing use of rotating hard disks, alone in the cheaper configurations, or as part of a Fusion Drive if you need more and faster storage. There are two issues which you need to consider: using the APFS file system on a hard disk, and the Fusion Drive itself.


APFS works on hard disks, and has done so in release form for around a year now, but it hasn’t been designed to get the best out of them, in contrast with HFS+. Although I haven’t been able to find good performance comparisons, all those who I know who use APFS on hard disks consider its performance to be relatively poor.


If almost all data read from and written to the hard disk in the Fusion Drive passes through the SSD as a temporary buffer, the SSD will see a great deal more write activity than would be expected for its size. […] Evidence from some with older Fusion Drives is that this can lead to worryingly early failure in SSDs, which appear to have aged much more quickly than would be expected.

Nick Heer:

Snell asked Novielli about the base-model iMacs that retain a spinning hard drive. She acknowledged that it’s a cost-based decision; I still think it’s indefensible. The drives Apple uses in the base-model iMacs, and even the Fusion Drives in the step-up models, don’t perform acceptably running Mojave. The base model iMac is simply not a good product and should be purchased by nobody, so it’s hard to see why it’s still available.

Tom Bridge:

And they also ship by default with old, slow 5400rpm hard disks that came to the marketplace in 2007 in 1TB capacities. When Hitachi released the first Deskstar with 1TB that year, at a whopping price of $399, they boasted a cost-per-GB of $0.40. Now you can have a SATA SSD for less than $0.25 per GB, and an M.2 SSD for $0.35 per GB.

Chance Miller:

Apple has also quietly lowered select upgrade costs. For the MacBook Air, Mac mini, and MacBook Pro, SSD upgrades are now slightly cheaper, while RAM upgrades for Mac Pro have also seen a price drop.


Update (2019-03-21): tipoo:

And even with all those constraints imposed, a hybrid hard drive would have gone a long way too. Feel a bit bad that some unknowing people will get a worse macOS experience than 5 year old systems with an SSD.

Colin Cornaby:

Fusion Drives being standard on iMacs would be less of an issue if you could upgrade to a full SSD post purchase.

iPad Air and iPad mini 2019


Apple today introduced the all-new iPad Air in an ultra-thin 10.5-inch design, offering the latest innovations including Apple Pencil support and high-end performance at a breakthrough price. With the A12 Bionic chip with Apple’s Neural Engine, the new iPad Air delivers a 70 percent boost in performance and twice the graphics capability, and the advanced Retina display with True Tone technology is nearly 20 percent larger with over half a million more pixels.

Apple today also introduced the new 7.9-inch iPad mini, a major upgrade for iPad mini fans who love a compact, ultra-portable design packed with the latest technology.

It’s good to see the iPad mini updated after all these years. The new models look good, although I was hoping to see a lower end model with a reduced price. The $310 A10-based iPad, though a better tablet, is still more than double the price of comparably sized Android tablets. And, I’m sure it would confuse things, but I personally would want one without pencil support because I know I won’t use it, and so I would prefer the more oleophobic screen.

Joe Rossignol:

The new iPad Air is a lower-cost replacement for the 10.5-inch iPad Pro, which was priced from $649 prior to being discontinued today.

Tim Hardwick:

Apple says that with the new A12 Bionic chip, the iPad mini now delivers three times the performance and nine times faster graphics. Meanwhile the advanced Retina display with True Tone technology and wide color support is 25 percent brighter and has the highest pixel density (3 million) of any iPad.

Elsewhere, an 8-megapixel rear camera brings improved low-light performance and HD video recording, while the front facing camera has been bumped up to 7 megapixels for better-quality selfies and FaceTime HD.

The new iPad also benefits from the same Wi-Fi performance and Gigabit‑class LTE that’s built into the latest iPad Pro models, and retains the headphone jack found in previous iPad mini models.

Marco Arment:

The iPad lineup makes far more sense now than when there was a $500 price gap in the middle of it, most but not all could use Pencils, the Mini was ancient, etc.

Now, they’re all Pencil-able, they’re all A12 except the cheapest model, and all prices and sizes are well-covered.

Michael Love:

Interesting strategy here - I think many/most of us were assuming they’d try to reach out to the low end, but instead they’re basically putting a 2018 CPU in a 2017 Pro, taking away 120 Hz, and charging the standard-for-many-years $499 for it.

Francisco Tolmasky:

It is so weird that the iPad Air and iPad mini only support the old Apple Pencil. The iPad mini was my favorite incarnation of the iPad line when it came out, and I was considering getting one again, but I have no interest in needing two different kinds of iPad pencil.

Apple keeps creating and extending these arbitrary transition periods. The old Apple Pencil should be in the past. Instead we have an entire other generation with it now. This sucks for developers too who have to continue designing for old technology. Same with lightning ports.

John Gruber:

The new iPad Air isn’t based on the old iPad Air — it’s an update to the 10.5-inch iPad Pro. (It even works with the same cover and keyboard peripherals.) And the new Mini is really just a smaller version of the new iPad Air — they could have just called them both “iPad Air” and had one be mini-sized and one regular-sized, similar to how the two sizes of iPad Pro have the same product name. As far as I can see, there is no difference between the new iPad Air and iPad Mini other than size.


I am reliably informed, the inductive charging data port for connecting Pencil 2 on the latest iPad Pros is expensive enough to be prohibitive for the new Air and Mini.

Update (2019-03-21): Uluroo:

The five available iPads might seem confusing at first glance. The naming scheme doesn't help keep things simple. Here's how you should view iPad:

• iPad Pro, one product in two sizes
• iPad Air/mini, one product in two sizes
• iPad, there solely for its low price tag

John Gruber:

But it costs so much less than an iPad Pro. I think of the iPad Pros as the iPad Nexts, and these new iPad Air and iPad Mini models as the iPad Nows. A 64 GB 11-inch iPad Pro costs $800, the 64 GB new 10.5-inch Air costs $500, and the Mini is just $400. You even save on cellular models compared to the Pro — it costs $150 to add cellular to an iPad Pro, but only $130 to an iPad Air or Mini.


Really, in a lot of ways, the iPad Mini feels like the one true iPad, and the others are all just blown-up siblings that don’t quite know how to take advantage of their larger displays.


But here’s a really big pro in the iPad Mini’s column that I didn’t fully anticipate until diving in with it this week: it’s so much better for thumb-typing.

Colin Cornaby:

Has anyone commented yet on the lack of USB-C on the new iPads? Certainly is a bummer for those of us that like the idea of USB-C as a single connector, and it also blows a hole in the idea of a strong USB-C ecosystem for iPad.

The Dwindling Number of iOS Text Editors

Brett Terpstra:

Over the weekend I weeded out the dead apps on my iTextEditors comparison chart and was surprised to find that over 30 of the 90 editors on the list were no longer available. I figured a few would be gone, but a third of them had gone the way of the dinosaur.

Perhaps the cream has risen to the top and most people are settling on the leaders of the pack. Maybe there just isn’t that much money to go around in the iOS text editor market.

I’m still using Editorial, but it hasn’t seen many updates lately and still doesn’t work with iCloud.


Friday, March 15, 2019 [Tweets] [Favorites]

Brief Examples of OmniFocus Perspectives

Gabe Weatherhead:

The “Changed” perspective is the best kind of “undo” screen. If I accidentally mark a task or project as complete or if I mistakenly changed something that removes the task from my view I go to this perspective to fix it. It shows everything in my OmniFocus sorted by modification date.

With enough perspective trickery I even create project outlines that are otherwise not possible in OmniFocus. It’s the double negative in this perspective which removes all of the tasks from the view and leaves me only with the nested projects and folders to browse.

eSellerate Shutting Down

I received this in an e-mail from eSellerate:

Thank you for being a loyal eSellerate customer over the years; we sincerely appreciate your business. Due to evolving business needs, Digital River will be retiring the eSellerate platform on June 30, 2019. As a result, commerce starting July 2019 will run through our premier e-commerce solution, MyCommerce Share-It.

We will start proactively upgrading clients to the new platform starting April 15. We recommend you move your business even before that to start immediately enjoying the modernized features and functionality of MyCommerce Share-It, including:[…]

We’ve created tools for you to use to make this upgrade simple, fast and efficient; no heavy lifting on your part.

I primarily use FastSpring these days, but I like to have a second store as a backup. The new admin site let me log in with Chrome and Firefox but not Safari. The migrator copied my basic product information but not the icons. I haven’t yet been able to test the license generation because you need to e-mail them to get an account-specific test credit card number in order to place a test order.


Apple Responds to Spotify

Apple (Phil Schiller, MacRumors, Hacker News, Reddit):

And developers, from first-time engineers to larger companies, can rest assured that everyone is playing by the same set of rules.

I don’t think anyone actually believes this. If a small developer did what Uber or Facebook did, they would have gotten more than a slap on the wrist. Meanwhile, certain apps that compete with Apple seem to get extra scrutiny. It’s also important to remember that the App Store guidelines are not laws passed by a democratic process with any pretext of fairness. Rather, Apple unilaterally makes the rules to advance its interests, and it changes them as necessary to thwart competitors.

We want more app businesses to thrive — including the ones that compete with some aspect of our business, because they drive us to be better.

Yet Apple specifically disallows sideloading apps and competing stores, which would drive the App Store to be better. And the digital content businesses like books and music—where Apple competes—are the ones where Apple sets the fees to disadvantage competitors. The built-in advantages of bundling and integration are not enough for Apple to compete; it forces companies like Amazon to make apps like Kindle harder to use. The businesses not competing with Apple—like Uber—are the ones that don’t have to “contribute” to the App Store.

After using the App Store for years to dramatically grow their business, Spotify seeks to keep all the benefits of the App Store ecosystem — including the substantial revenue that they draw from the App Store’s customers — without making any contributions to that marketplace.

Today’s Apple believes that customers have no inherent right to install software on their devices, and further that any revenue related to using such devices owes a rent to the platform vendor. This is like Dixon Ticonderoga making rules for what you can write with your pencil and then demanding a cut if you sell any of your work.

The only time we have requested adjustments is when Spotify has tried to sidestep the same rules that every other app follows.

I’m not sure whether this is true, but, again, the rules were specifically written to disadvantage competitors like Spotify.

The only contribution that Apple requires is for digital goods and services that are purchased inside the app using our secure in-app purchase system.

And they’ve written the rules to make it really difficult to use other purchase systems because they know that IAP couldn’t compete on a level playing field. Customers have to suffer through a worse user experience because Apple refuses to charge a reasonable fee.

Damien Petrilli:

It takes some “courage” to use the 84% of free App as an argument, knowing most of those are the garbage and scam Apps which plague the App Store today.

Most companies NOT paying Apple are basically unethical businesses who farm data and violate privacy to earn money.

Meanwhile those trying to make a decent living with good Apps are hit by the 30% Apple tax.

Charles Perry:

From Apple’s response to Spotify: “We keep all our developers on a leash. It wouldn’t be fair to other developers to unleash just you. And really, shouldn’t you just appreciate what you’ve been given like all the other good dogs?” (I may have paraphrased.)

Dan Masters:

Disappointing to see Apple take the low road with irrelevant rhetoric. They’re using artists as their political football, with the sole purpose of swaying popular opinion & setting a narrative.

This is the same company that wasn’t going to pay artists for streams during trials.

Apple justifies their ‘fair’ tax on devs, yet has happily paid much less than their fair share of taxes where they operate, while benefiting from each nation’s respective resources & markets.

I guess Apple is more equally ‘entitled to their business model’ than others.

David Barsky:

“Contributions to that marketplace” is a funny way of saying “we’re mad that you’re not rolling over and letting us double-dip into revenue we have no business touching.”

Manton Reece:

Apple likes to brag about how much money they’ve paid to developers, but they leave out how much they’ve kept for themselves: about $50 billion. To Apple, they are doing us a big favor by letting us ship iOS apps.


And yet in the previous quote, Apple says that 84% of apps pay nothing and they are fine with that. Uber pays nothing to Apple. Games with ads pay nothing to Apple. Why is it wrong for Spotify to also want to limit how much they pay to Apple? The line Apple has drawn around in-app purchase is arbitrary. They could just have easily restricted Uber accepting payments, or banned third-party ads.

Nilay Patel:

Apple put out a response to Spotify’s antitrust campaign today, and it is just extremely weird. Especially this part, where they repeat this inaccurate “suing songwriters” talking point that honestly makes no sense.

Owen Williams:

Apple repeatedly says that what Spotify is doing is “wrong” but then just goes ahead and makes provably untrue statements up - in order to make its approach look better, even though Apple has historically done the EXACT SAME THING TO CREATORS.

Dan Masters:

From just a few weeks ago!:

“Apple changes its iPhone photo contest page to say it will pay winners, after originally stating ‘prize has no cash value’”

Owen Williams:

I find myself reading the long letter, which tries to rebuke each of Spotify’s points, thinking that the PR doublespeak is incredibly eloquent. Apple avoids touching on any of the issues in the ecosystem, while sometimes unintentionally reinforcing Spotify’s point: it controls a broad swathe of the ecosystem’s destiny, with little oversight.


iTunes decimated the competition in the music purchasing business and ended up with a monopoly that was hard to compete with because artists had little other choice in where to sell their music. Then, it started exerting power over artists: threatening to remove them for not signing new contracts, and eventually wound up in court over price fixing after artists and competitors complained. Artists didn’t really like the service either, because it paid so little and restricted most of its music in the earliest days to Apple devices like the iPod.


Spotify isn’t demanding anything different: they’re demanding the same business model as Apple Music, and the same rules applied to them as everyone else on the platform… including Apple. Attacking Spotify for making “ever-smaller” contributions here is contrite, because their margins are squeezed by Apple’s price pressure.


Update (2019-03-15): Jeff Johnson:

Apple has painted itself into a corner with its newer “services” strategy, because the Spotify case now becomes an existential threat to Apple’s business model. Whereas it wouldn’t have been a big deal under Apple traditional strategy of selling insanely great products.

Ben Thompson:

I believe Apple’s App Store policies are per se illegal tying — specifically, iOS to App Store in-app purchase. Spotify, though, has a stronger case than anyone, because it is not only subject to Apple’s App Store policies but also competing directly with Apple Music. It will be very difficult for Apple to argue that it is not attempting to extend its position in smartphones into a dominant position in digital goods when that extension is rather concretely framed as a direct benefit to Apple’s own offering.

Via Rene Ritchie:

The “if you don’t like App Store terms, you can just sell through the web or Google Play Store”, which a lot of people are going to respond with, is the Walmart to Target argument, which is poorly fitting at best.


Spotify has a real chance on the facts, at least on the core counts. The EU views anti-trust as a way to ensure competition, up to and including ridiculous things like forcing Microsoft to include browser ballots.

But instead of being candid about that, and the general policies Spotify sees as unfair, and about the harm it believes those policies do to its business, they kinda play the victim card in a way that seeks to conflate or distort their harm onto us, which just comes off as, I don’t know, smarmy.


And here’s where it gets a tad ironic: The same is true for Apple. Forget Apple Music. The App Store is really just a nicely packaged re-sale of other people’s apps.

Jesse Squires:

Apple’s response to Spotify claims “everyone is playing by the same set of rules.”

This is a lie. Completely untrue.

I worked on iOS at Instagram for 2 years. We (and FB) absolutely got special treatment in a number of ways. Especially for app reviews.

Oscar Apeland:

There is a clear difference in how I’m treated by app review with my new startup compared to when I developed a 150k+ MAU app

David Pierini:

Cash-rich Apple is reportedly not paying the artists who share their talents for the in-store ‘Today at Apple” sessions.

Rather than money, the session leaders could select from three of the cheaper Apple products.

Steve Troughton-Smith:

Real talk: Apple (+ all the other App Stores) should have independent, 3rd-party oversight; I’m sure Spotify would have no trouble finding devs who have battled unjust/capricious rejections & suffered a chilling effect on innovation. Phil Schiller should not be final arbitrator

As much as the media coverage will be they said/they said schoolyard nonsense, there is a real issue here, and it’s bigger than Apple’s “30%”

The real “30% tax” is the apps and categories of apps we don’t and will never have, because they were nope’d from on high as they didn’t fit into the App Store box or raised uncomfortable questions re Apple’s business models. There is still no Steam Link app on the App Store

James Owen:

Apple claims that Spotify would not be the business they are, without the app store.

What would Apple be without the iPhone? How could there be an iPhone without Qualcomm IP?

Apple charges 30%

QTL charges $7.50 on a iphone, and Apple says $QCOM is an extortionate thief.

Federico Viticci:

This part from Apple’s response to Spotify is somewhat misleading. There is no Siri domain for music playback that Spotify (or others) can use.

There are Siri shortcuts, which Spotify could add, but the experience is FAR from the native integration Apple Music has.

John Gruber (tweet):

What Apple should do is allow apps that opt out of IAP to explain that users need to subscribe or make purchases using a web browser, and allow them to link to their website from within the app (even if they’d be required to open that link in Safari, as opposed to an in-app web view).

Why in Safari? Why even in a Web view rather than in the app?

Update (2019-03-21): R. Scott Love:

There are also “Technology” taxes too - for example, you cannot embed certain plug-in platforms within your app despite open architecture standards and public APIs - so the alternative is that you vend from your own site but lose the DRM battle

Nick Heer:

By the way, Apple’s response to Spotify’s accusations has the conviction of damp newspaper. Their press release drags in some nonsense about Spotify’s disagreement with new royalty rates determined by the Copyright Royalty Board, and claims that there’s a level playing field for developers when everyone knows that the biggest developers often get special treatment. They didn’t even bother to sign the damn thing.

One of the reasons this dispute has been rattling around in my head and why I’ve been having a hard time figuring it out is because both companies are acting like jackasses. Apple should have no problem allowing developers to direct users to purchase subscriptions outside of their app. Perhaps there should be restrictions on the subscription page — for example, mandating a minimum level of security, or maybe requiring that the checkout form supports Apple Pay. The rest of Spotify’s complaints are distracting, with some bordering on asinine.

Michael Rockwell:

Here’s the thing about allowing developers to opt out: it’s a slippery slope. If Apple allowed developers to push users to a website for purchasing digital goods, they would. There are plenty of payment systems out there and building a website that integrates with them is easier than ever. But I don’t want to give my credit card credentials to every single developer that builds an app I’m interested in. Doing so will only increase the chances of my debit or credit card becoming compromised and then I have to go through the hassle of getting it replaced, which is a major pain.

To be fair, if developers used Apple Pay on their websites, these security concerns would be mitigated. But it’s not just the security aspect that has me on board with in-app purchases, simplicity is another major factor. The ability to quickly purchase a subscription through the app using my fingerprint, restore a subscriptions on another device, and manage all of my subscriptions in one a single location are niceties that would go out the window if Apple allowed developers to opt out.

That’s the problem with the 30%. It’s so high that, if there’s any way at all to opt out, it encourages developers to make things worse for their customers. IAP provides real value to both customers and developers, just not that much. At a sufficiently better price, apps would choose to use it—problem solved.

Secondly, if outside payments were specifically allowed, I think it’s likely that we’d see a rise of intermediate payment processors to facilitate transactions. You’d be able to pick a trusted company to remember your credit card information (and hide it from the developer) and to consolidate your subscriptions. There would be an SDK to make it easy to pay with Face ID. The company would charge a fee for this service, but it would be a fraction of what Apple charges. Big companies like Amazon, Netflix, and Spotify would use their own systems, but there’s not very many companies at that level, and you already trust them.

See also: Accidental Tech Podcast, Hacker News, Reddit (2), The Talk Show.

Thursday, March 14, 2019 [Tweets] [Favorites]

Dropbox Limits Free Plan to Three Devices

Juli Clover:

Dropbox users who have a free Dropbox account are now limited to using that account on a total of three devices, according to new information added to the Dropbox website and spotted on Twitter (via The Verge).

Dropbox says that as of March 2019, “Basic” users, which is the free tier, can add their account to three devices. Dropbox users who already have their account attached to more than three devices can keep them linked, but there will be no way to link additional devices when over the three device limit.

If you have a Mac, an iPad, and an iPhone that’s already three devices. I imagine this will accelerate the trend of people switching to iCloud Drive. I’ve been working towards that myself and keep Dropbox quit most of the time on my Mac, as its file change monitoring is disruptive.


Update (2019-03-15): Brian Stucki:

I made the jump from Dropbox to iCloud Drive this year and it’s been really nice. If you really want to rid your Mac of the app itself, Transmit from @panic does a really nice job of logging into Dropbox for any shared folders you still need to access.

Clark Goble:

Obvious way around - multiple accounts and then share folders.

Peter N Lewis:

The problem with all these subscription products is all the companies want $10/month. If DropBox offered a $10/year plan (or even $20/year) they could probably make a fortune. Instead they just keep trying to drive away low volume customers. It is just not worth $120/year.

Tanner Bennett:

Its malicious, fake system dialog which attempts to steal your user account password so it can keep itself enabled in accessibility settings is also disruptive, among other things.

Kirk McElhearn:

Back around 2014-15, I took out a pro subscription with 1 TB, but there was no way I could make it worthwhile. I don’t need 1 TB, and even if I did, it wouldn’t fit on my Macs; I could put that much data on an external drive connected to my iMac, but now my MacBook Pro. (Yes, I know, selective sync; but I still don’t need that much storage.)

The problem is that Dropbox doesn’t have a low-priced, low-GB plan. I’d happily pay, say, $20 a year for 100 GB, because I am aware that I’ve been getting this service for free for many years. But I’m not spending $100 a year.

NetService NutHouse

Jeff Johnson:

I couldn’t reproduce the crash myself, so I did a bit of searching on the web, and I discovered the explanation on Stack Overflow. The function NetService.dictionary(fromTXTRecord:) is declared to return [String:Data], but when the TXT Record does not have the proper key=value format, CFNetwork inserts kCFNull in the dictionary where Data is expected. This causes Swift to crash.

In Objective-C, the method +[NSNetService dictionaryFromTXTRecordData:] does not crash. However, it still behaves badly, because it is declared to return NSDictionary<NSString*,NSData*>*, but the dictionary can contain NSNull instead of NSData, so your app could still crash if the code trusts the compiler and calls NSData methods on NSNull.

Needless to say, this bug is awful. It affects both macOS and iOS. Moreover, the bug has existed for more than two years, which is even more awful. Fortunately, developers can work around the bug. In Objective-C a workaround is easy, because we can just check the returned dictionary for NSNull values at runtime. In Swift, however, the crash occurs before we can check the dictionary, so we need to try something else.

He worked around it using the Core Foundation version of the method, which has a different signature and so bridges differently. But it seems to also work to disable the bridging by casting with as NSDictionary.

Previously: Swift Subclass of NSTextStorage Is Slow Because of Swift Bridging.

App Store Covers RSS Readers


This story can only be viewed on the App Store in iOS 11 or later on your iPhone or iPad.

Brent Simmons:

The bummer about these articles is that the full thing can only be read in the iOS App Store. It would be nice if they actually appeared on the web, too.

I’d like the entire store to work in a browser.

Jeff Johnson:

And if only you could follow daily App Store features using some open internet format like... RSS?

Sketch Takes Venture Capital

Sketch (tweet):

When we started Sketch back in 2011, the design landscape was very different to the one we know now. Innovation had all but stopped and existing tools were not serving designers’ needs. We stepped into the market and broke it open, paving the way for a new wave of design tools, built on top of our open plugin system, and Sketch became the foundation of what design is today.


With that in mind, we are incredibly pleased to announce that we have raised $20 million in Series A funding from Benchmark. This represents our first capital raise since we started working on Sketch nearly 10 years ago and we’re sure you’re asking, “why now?

Simply put, this will allow us to serve your needs better, faster. Benchmark has been on this journey many times before with companies like Elastic, Twitter, Uber and Zendesk. With such an impressive track record, we think they’re the perfect partner to help us create and scale the best version of the Sketch platform.

They’re going to make Sketch for Teams and also a Web version.

Dan Counsell:

Ah crap. I fear this great app may be ruined over the coming years by external pressures from investors. Fingers crossed it works out.

Previously: What It’s Like to Take on Venture Capital Investment.

Wednesday, March 13, 2019 [Tweets] [Favorites]

Spotify: Time to Play Fair

Spotify (Hacker News, MacRumors):

Apple requires that certain apps pay a 30% fee for use of their in-app purchase system (IAP) – as is their prerogative. However, the reality is that the rules are not applied evenly across the board. Does Uber pay it? No. Deliveroo? No.


If we choose not to use IAP (the only payment option on iOS), Apple, in return, bars us from communicating directly with our customers who access Spotify via Apple platforms. Apple won’t let us share awesome deals and promotions — like 99c for three months of Spotify Premium. And we aren’t just talking about what we are allowed to do on the app. Worse yet, they don’t even let us email offers after you register your account, claiming we are circumventing their rules.


But where Apple thinks that our app doesn’t abide by their unilaterally imposed restrictions, it routinely rejects bug fixes and app enhancements that would improve user experience and the app’s functionality – leading fans to believe our app and tech abilities are sub par.


For Spotify to use Apple’s billing system (IAP) — giving our fans the opportunity to upgrade to Premium — Spotify and others now have to pay 30% of any subscription fees. Apple now prohibits buttons or links to any other external ways to pay. This is the first of many moves from Apple that would make it harder and harder for our fans to upgrade to Premium[…] We elect not to use IAP for a bunch of reasons, including the fact that giving up 30% was too much for us to keep our prices low for our fans.


Now that Apple has Apple Music, rejections of the Spotify app start becoming more and more common, and they even go as far as threatening to remove us from the App Store. Those rejections seem to coincide with our promotional campaign seasons[…] Now just having a “Learn More” button is enough to upset the Apple cart even though this is the first time we’ve heard of such a rule.


This time, we are rejected because of a campaign that makes reference to a Spotify Premium promotion (“get 3 months now for €0.99”), despite only directing users to a landing page with no info on where or how to purchase Premium (which Apple had allowed only a few months prior). In fact, Apple’s chief lawyer told us a year earlier that such a landing page was OK, but that didn’t stop the App Store from blocking our app for this reason


Apple Music sends the very type of promotional push notifications that it forbids its rivals to send


So we announce two podcast acquisitions we are super excited about, and all of a sudden Apple arbitrarily decides to prohibit use of its API to recommend podcasts to users

Federico Viticci:

I personally believe Spotify is right here, and that it’s time for Apple to open up their platform more and lower their App Store cut.

Think about it this way: is what’s good for Apple also good for consumers in 2019?

Marco Arment:

Take Spotify’s complaints and timeline with a grain of salt.

It’s really just three things:

- Apple’s 30% cut is high
- The rules around it are anticompetitive
- Spotify gets rejected a lot for trying to evade them

Everything else is a bit bullshitty.

Many of Spotify’s complaints are ascribing malice to limitations of young products.

Any developer, Watch or HomePod owner, or Siri user can tell you that Spotify wasn’t the reason Watch podcast apps sucked before watchOS 5 or that SiriKit and HomePod have no audio intents yet.

There’s no Spotify for HomePod, but you can run it on a Mac SE/30.


Apple did the same thing to Kindle for iPhone back when it launched.

We submitted the original version to Apple with a fully functioning store built into it—and were then stuck in submission limbo. Two weeks later, Apple announces their intent to build in-app purchasing.

The kicker: Apple wanted a 30% cut of every book sold on the store …and at the same time, had negotiated with book publishers that the publishers MUST sell all books at a 30% margin on ALL stores if they want to sell their books via Apple’s own ebook store. Aka we couldn’t sell books at an increased cost, even if we wanted to. We would have had to take a loss on every purchase.

In the end, we had to remove all of the store functionality from the app, and weren’t even allowed to link people directly to the web store for purchasing (or even instructions for purchasing).


Update (2019-03-15): Peter N Lewis:

Forcing developers to use IAP, and forcing people not to offer a non-IAP purchase, is not a limitation, it is a deliberate financial move available to Apple only because of the lock-in on the iPhone App Store.


My $0.02: this will never happen unless something causes captive users to start switching away from Apple in significant numbers (highly unlikely) or there’s government intervention. If you see a third way out of this please let me know.

Felix Krause:

See company politics in action:

1) Use your iPhone to google a book
2) Tap on the Amazon link
3) Amazon properly deep links and opens its app
4) Amazon app: “Oh wait, if we sold a book now, Apple wants its cut, noooope, not with us”
5) Amazon app opens Safari again
6) Tadaaa 🎉


See the results of Apple’s greed and anti-competitive behavior in action.

Using the full featured Kindle, Audible, and Comixology apps on Android is such a revelation that I could never consider returning to such a crippled and user hostile platform.

I do see repurcussions with allowing apps to be installed outside of the App Store though. Apple would have to put a lot of effort into making the App Store a really attractive option for selling and promoting apps, otherwise someone else would do it.

Joe Rossignol:

Spotify CEO Daniel Ek elaborated on his company’s complaint against Apple with the European Commission in a speech today at the International Conference on Competition in Berlin, according to Variety and The Hollywood Reporter.

See also: Core Intuition and Apple Responds to Spotify.

Apple’s Declining Capex

Neil Cybart:

The most surprising revelation found in Apple’s recent 10-Q and 10-K filings is related to capital expenditures (capex). For the first time in 16 years, Apple expects its capex to decline during the current fiscal year. Declining capex is made that much more intriguing for Apple considering how Amazon, Alphabet, Microsoft, and Facebook are each experiencing significant increases in capex. Analyzing Apple’s capex and the potential reasons for its decline provides a look at how the company is being managed and how Apple is unique when compared to other Wall Street giants.

Exporting a Blog Archive

Manton Reece:

Over a year ago I proposed a new blog archive format. The idea was to have a better way to save the posts and photos in your blog, or move your blog to another platform. I’m happy to announce that can now export in this format.

Exhaustive Swift Properties With Tuples

Joshua Emmons:

How can we get switch-like exhaustiveness when dealing with the properties of a type? The first step (and our first clue) is to treat the properties as a set. What if we put them in a tuple?


So, to be clear, habitually shoving all properties into a tuple won’t scale well. But it is a useful tactic to employ when dealing with models, mocks or anything that has:

  1. naturally constrained state,
  2. logic that depends on the shape of said state, and
  3. a strong affinity towards change in the face of shifting requirements

Tuesday, March 12, 2019 [Tweets] [Favorites]

What’s Wrong With iOS Multitasking

Fraser Speirs:

Now that we have four operations that are essentially the exact same physical gesture but differentiated by the length of time the gesture is performed for, I am concerned that many users will become quite confused.


I have already had several very savvy iOS users tell me that they simply thought it wasn’t possible to multitask an app that wasn’t in the Dock.

I know that there are a number of ways to do this but none are very discoverable and some are very difficult to execute.


I have observed a number of friends on Twitter posting screenshots of their iOS 11 app arrangement which can probably best be described as “everything in the dock and a junk drawer folder at the end” just so they can be guaranteed that the first path to an app (going via the Dock) will always yield a result.


In practice I found that, too often, I needed to create arbitrary pairs of apps and this caused all my bespoke app pairings to be dismantled in the background. This gave me a sense of instability in the iOS 11 UI. Things I had built were being dismantled invisibility and they were not the way I had left them. This is another of these “functional cliffs” - a short term use of an app leads to the invisible dismantling of a pairing in the background.

Software-ICs, Binary Compatibility, and Objective-Swift

Marcel Weiher:

Swift recently achieved ABI stability, meaning that we can now ship Swift binaries without having to ship the corresponding Swift libraries. While it’s been a long time coming, it’s also great to have finally reached this point. However, it turns out that this does not mean you can reasonably ship binary Swift frameworks, for reasons described very well by Peter Steinberger of PSPDFKit and the good folks at instabug.

To reach this not-quite-there-yet state took almost 5 years, which is pretty much the total time NeXT shipped their hardware, and it mirrors the state with C++, which is still not generally suitable for binary distribution of libraries. Objective-C didn’t have these problems, and as it turns out this is not a coincidence.


Swift is designed as a programming language, not as middleware with language features. Therefore its modularity features are an add-on to the language, and try to transport the full richness of that programming model. And Swift’s programming model is very rich.


Did I mention that Objective-C is middleware with language features?


Update (2019-03-13): Peter Steinberger:

Given the above constraints, PSPDFKit will likely never fully move to Swift. First and foremost, we still have many clients with applications built in Objective-C. There’s rarely a good reason to do a rewrite of battle-tested code, and we cannot force our partners to rewrite just for the sake of rewriting. Secondly, moving to Swift would heavily limit our subclassing system — currently, developers can register almost any exposed class and offer a subclass that PSPDFKit will initialize internally in place of our default base class. But seeing as Swift classes can no longer be subclassed in Objective-C, these capabilities would be greatly restricted if we switched to Swift.

This limits us to using Swift internally — which is the worst kind of Swift usage.

Bad Release Notes

Bad Release Notes:

Bug fixes and performance improvements

Dedicated to shaming apps for their bad release notes.

Submissions are welcome by email or Twitter.

Damien Petrilli:


“The goal is to use this site as a reference when Apple deny your App update because of the release notes being not descriptive enough”


Update (2019-03-22): Jeff Johnson:

* We had to ship an update to change the Description field in App Store Connect.

Classical Music on Apple Music

Mitchel Broussard:

Last August, Apple Music was updated with a new section in Browse curated by Deutsche Grammophon, one of the biggest classical music labels in the world. While classical music fans welcomed the specific focus of the area, many of our readers quickly pointed out the numerous issues that remain for classical listeners on a daily basis within Apple Music, and the fact that they've been there since the launch of the service with seemingly no correction in sight.


Monday, March 11, 2019 [Tweets] [Favorites]

The State of Mac Hardware in Early 2019

Wojtek Pietrusiewicz:

Macs, like many other computers, have always had their share of problems. These past few years feel particularly bad though, so here’s my quick take on the current state of the Mac lineup.

Maybe things will turn around later this year, with the Mac Pro and rumored new pro notebooks, but right now we’re in quite a dark period for the Mac—both hardware and software.

Lewis Hilsenteger (via Damien Petrilli):

After many years using MacBook variants I’ve made the switch to Windows. I’ve used every version of MacBook Pro and MacBook Air that have been released. My current laptop of choice is the Lenovo Thinkpad X1 Carbon / Lenovo Thinkpad X1 Extreme. Turns out switching from Mac to Windows isn’t as painful as I expected.

See also: Accidental Tech Podcast.


Update (2019-03-12): Colin Cornaby:

I’ve seen from time to time people suggest, that even with a Mac’s decline in quality, it’s not like people are going to switch to Windows. Yet I know people who’ve happily switched over. I worry that if Marzipan leads to another decline in quality there will be more switchers.

The Mac’s main competitor is still Windows. That’s what’s so frustrating about the pro app conversation around Marzipan. Unless the big packages port over from Windows, nothing is going to change. And those guys aren’t upset about AppKit, they’re upset over Metal and Nvidia.

Most pro app vendors already have their own UI libraries (which is already frustrating if you care about the Mac experience.) AppKit vs UIKit isn’t really going to move the needle much for these app vendors in porting over from Windows.


The next MBP refresh feels personally pivotal to me, be it this year or later; even aside from the state of macOS. I’m not buying another first-generation design after the experience with 2016 model. And I won’t be able to convince myself to buy another MBP with a TouchBar.

Nick Fugitt:

I’ve said this repeatedly but Apple has spent 2015-2019 (half the decade) executing and then recovering from horrible decision-making around 2012-14. It’s truly a dark age for the Mac and there’s no guarantee we’re about to be done

John Gordon:

The iMac dust problem hit me. Rare that gets a mention.

The Sad State of Logging Bugs for Apple

Corbin Dunn (tweet, Hacker News):

This is where things get screwy depending on the component your bug lands in, since bug management is group dependent. Many groups will have only one or two QA people to do the initial screening of those large drop areas for bugs. QA engineers are sometimes instructed to screen bugs with a priority and “fix period” before passing them off to the engineer responsible for the code. This is terrible because many engineers will not look at bugs with a low priority. It is much better for the engineer who “owns the code” to look at a bug and determine the priority. The QA engineers will frequently get a huge back log of bugs to screen, and it can take weeks, or even months, for some bugs to get screened. Sometimes this leads to a mass screening of bugs, marking them all with a low priority. Bug originators have to notice this, and complain about it for the priority to get increased. Worse yet, some groups mass close bugs older than a year or so, and ask the originator to re-open the bug if the issue still exists. A lot of people don’t pay attention to bugs that need verification, and they simply become lost.


Engineers also dislike screening bugs because sometimes they have to add them to their queue for the current release. This increases their required workload for that release, which is something people don’t like doing. So, instead, many bugs stay unscreened.


Sometimes QA screen bugs with a low priority and holds onto them. They never get moved to the appropriate code engineers, and effectively become lost in the system. Sadly, I had seen this happen way too often.


When a bug is sent back as fixed, the internal developer who originated the bug is supposed to verify the problem is resolved. They can send it back if the problem isn’t resolved. However, internal developers don’t really have an incentive to verify bugs. Management doesn’t keep track of bugs that need verification or really require developers to verify them. Most engineers do verify bugs; they like to make sure problems are resolved. But external developers are left in a more sad state. The bug becomes closed for them, and is dead.


Internal engineers need to take more responsibility in promptly screening bugs. Management needs to allow engineers to have more time to do this, which is at the expense of working on features or fixing already screened bugs. Engineers should always be expected to have a very low unscreened bug count.

This matches what we felt like must be going on when filing bugs, as well as the way the smaller bugs seem to hang around forever, with new ones added each year. Even Mojave, which was supposed to be a refinement release, seems to have, on balance, increased the number of bugs. As a user, it sucks that things don’t work as well as they used to. As a developer, I spend too much time working around OS bugs and breakage—in other words, preventing my apps from getting worse rather than actually making them better. I assume other developers are in the same boat, and this may be one reason there seems to be less excitement around apps these days. Everyone is wasting a lot of energy treading water.

It’s as if the OS is rotting away before our eyes. The good news is that this should be fixable. Apple has tons of smart engineers who care. But the process does not seem to be set up to produce quality. Management talks a good game but clearly has other priorities. There are undoubtedly many policies that could be changed to improve the organizational incentives, and a core problem seems to be that Apple remains understaffed for its ambitions. The headcount can’t and shouldn’t be massively increased in a short period of time, but there is something Apple could do today to help stem the tide: go off the annual schedule.

Peter Ammon:

The single easiest and most effective thing Apple could do to improve its SWE org is to invest in Radar.

Radar’s importance within Apple cannot be overstated. It subsumes what would be multiple tools in other orgs. As an Apple SWE you spend a massive amount of time in it. And yet Apple treats Radar as a cost center, developed by an outsourced offshore team. It’s slow to search, supports only plain text, is hard to script, and is missing obvious features, e.g. automatic duplicate finding.

Hire five good SWEs, give them a mandate to serve the needs of the org, and you will massively increase the effectiveness of every other engineer.


Anecdotally, I didn’t find the situation internally to be much better. Many bugs internally go unanswered because there is not enough time allocated to fixing core systems and designing better replacements. The truth is, I know personally of several teams that aren’t able to get through the queue of internally filed and scheduled bugs.

To me, it feels like Apple hasn’t resourced core pieces of infrastructure and engineering teams in line with upper management’s plans for growth. While many teams are relatively sequestered, once you start talking to folks elsewhere in the company it becomes clear that many teams are struggling to stay above water. More still, everyone shrugs about it because it’s not clear exactly what is wrong. The best description I’ve heard is in many cases engineers are willing to offer hacks as a solution to meet management’s demands, and management is either willing to accept those hacks or doesn’t know better.


We originally designed Radar so that bugs would be verified as closed by the person with most interest in seeing this happen: the tester assigned to that part of that project. Then management swooped in with an edict that bugs must be verified as closed by whomever originally reported them. This is a stupid idea, because it creates the perverse incentive that no one should report a problem if they are outside the team (because then you are committing to verify the fix, which just means more work for you that has nothing to do with any of your main responsibilities).

When I pointed out that the system would now discourage people on different teams from helping each other, the sponsoring director said “that’s what pink slips are for.” Direct quote. Soon after that I resigned from the design team.

Without reasonably skilled and principled leadership, you just don’t get quality software. And “quality is everyone’s job” is just an empty and childish slogan. Excellence is not transmitted through slogans and wishful thinking. You have to assign responsibility, provide resources and time (which means lowering velocity of new development), and follow-up.

The fundamental reason why it doesn’t happen is the technology market is not efficient. Quality is, in fact, not as important as career testers wish it were. You can get away with doing terrible work and not lose your job. The fact that Apple pays no significant penalties for having buggy products insulates it from our slings and arrows.

Corbin Dunn:

Some obvious issue, like “this button should do X but it does Y” can be verified by almost anyone. But some issues need the attention of the original author to really verify the bug. Maybe what needs to be done is someone in QA needs to attempt to verify the bug, or “pre-verify”, and then it goes back to the originator for final verification, who can also verify it, or simply close it if they feel like QA did a good job.


What’s even sadder is we used to be better at this when I started at Apple in 2008. Bugs often got screened and triaged and sometimes fixed within a week. I blame the yearly release schedule, where shipping features became a higher priority than overall quality

Corbin Dunn:

I feel the same way; people took more time on bugs back in those days. I also think the yearly schedule is to blame.


When a process is annoying and you do nothing, people eventually do give up and leave. When it reaches that point, they’re not coming back even if you finally wake up and fix what bugged them.

Apple software quality is in serious danger precisely because of this type of community and infrastructure rot. They are not encouraging developers to help them, and a not-surprising number of serious issues have shown up in released products in recent years.


By now, a significant fraction of bugs are bugs in Apple’s frameworks. We try to report them to Apple, but they are ignored, or simply closed because they are related to deprecated APIs.

Of course, customers don’t complain that Apple frameworks are buggy -- they complain that our app crashes! So Apple has no incentive to fix it.


The entire value of WWDC is going to the Labs, giving an Apple engineer your Radar number, and having them read you or paraphrase the internal-only notes attached to the ticket. Half the time the question/bug will be clearly resolved internally or a workaround posted. But no updates are added to the public ticket, and it will remain open and unchanged for years.

Gus Mueller:

Corbin is a former AppKit engineer, and this is a must read for developers. It’ll make you angry, and it’s stuff you already figured was happening.

Tanner Bennett:

This confirms what we already knew. Almost no one at Apple takes bug reporting seriously. Reports will stack up indefinitely and eventually macOS will be a shell of its former self.

Corbin Dunn:

It is not just macOS, but iOS too.

Paul Haddad:

Interesting read. My view on bugs, work around them and move on. Even if it gets assigned it’s not getting fixed for at least a year.

Jeff Johnson:

IMO Radar screening issues are merely a symptom. The root problem is that Apple produces a completely unmanageable volume of bugs. Even if they screened all Radars quickly, then what? Bugs still get written much much faster than they get fixed. That’s unsustainable.

I suspect that Radar screening is allowed to be lax precisely because everybody knows that a huge volume of bugs will never get fixed anyway. It’s like bailing out the Titanic.

There’s also a tolerance for shipping bad bugs. If heads rolled at the company for shipping bad bugs, then Radars would get screened.

Adam Savage:

Just getting my music downloaded to my phone is a recurring nightmare I relive every time I upgrade. Having my music ON my device should be a simple choice, & you’ve made it Byzantine. How is it that I have to visit a support forum to learn how to download SONGS to my PHONE?!

The language of permissions is still fascinatingly and infuriatingly opaque, to the degree that when using iTunes, I’m regularly convinced it has an agenda antithetical to mine. Searching Suport forums is also nightmarish as helpful buttons from one version disappear in others.


Update (2019-03-20): Michael Nachbaur:

It’s easy to blame Apple for poor bug handling practices, but I feel it’s a two-way street. It’s just as much our responsibility as theirs to ensure important bugs get fixed; we should do everything in our power to make their jobs easier in solving bugs. And if we can’t, then at the very least we can treat Apple’s engineers with respect.

Safety Experts Weigh in on the Boeing 737 MAX

Max Prosperi (via Yan Zhu):

The preliminary investigation following Lion Air Flight 610 revealed that prior to the crash, a system called Maneuvering Characteristics Augmentation System or MCAS had engaged, without the pilots’ knowledge. The MCAS lowers the nose automatically to prevent a stall, or the loss of lift, if it detects that the angle of the plane’s nose is too high relative to the ground. A malfunctioning sensor may have led the MCAS to engage repeatedly, countering the pilots’ maneuvers.


Diehl recalled that leading up to the implementation of the MCAS, an FAA official came to him and asked whether or not he thought the automation of aircraft was safe. Diehl’s advice: “Automation, if done right, is great, but it can also bite you.”

After the Lion Air crash, Boeing denied that it had not properly communicated to pilots the addition of the MCAS to the MAX-series 737s, a major difference with previous models of the airplane. (That position contradicts what some airlines have said.)

David Fickling:

A software update intended to fix the problem identified in the Lion Air crash still hasn’t been rolled out. The fact that the crew on Flight 610 are likely to have been aware of the known issues with the aircraft, too, raises the more worrying possibility that there’s an unknown complication.


Two hull loss incidents in under a year on a brand-new aircraft type with only 350 in service.

Compare that to the 787 which, despite serious development problems, has about 800 aircraft in service for many more years, and still zero hull loss incidents.

Or compare the MAX 8 with it’s predecessor, the 737-800, which has had 16 hull loss incidents in a fleet of 5000 aircraft across more than two decades of service.

The 737-MAX seems less safe to operate, whether the reason is an aircraft defect or difficulty of operation, or lack of adequate training.


Statistics do funny things with such low sample sizes.

Take the 777, for example. It went nearly 20 years, much of that time as the most popular widebody flying, before its first accident resulting in a passenger death. Then it had 3 in a year. It hasn’t had another in the 5 years since that time. Was the 777 any less safe in 2013-2014 than in its other 25 years of service history? Obviously not. Similarly, the A320 family had a streak of fatal crashes in the last few years, yet there’s no reason to believe the A320 isn’t safe, let alone that it’s any less safe than it has been for the rest of its service history.

Update (2019-03-12): See also: Jon Ostrower (via Hacker News) and New York Times (via Hacker News).


I think required reading should be Normal Accidents: Living with High-Risk Technologies by Charles Perrow.

Mac McClellan (via Martin Steiger):

Though the pitch system in the MAX is somewhat new, the pilot actions after a failure are exactly the same as would be for a runaway trim in any 737 built since the 1960s. As pilots we really don’t need to know why the trim is running away, but we must know, and practice, how to disable it.

The problem for Boeing, and maybe eventually all airplane designers, is that FBW avoids these issues. FBW removes the pilot as a critical part of the system and relies on multiple computers to handle failures.

Boeing is now faced with the difficult task of explaining to the media why pilots must know how to intervene after a system failure. And also to explain that airplanes have been built and certified this way for many decades. Pilots have been the last line of defense when things go wrong.

What makes that such a tall order is that FBW airplanes – which include all the recent Airbus fleet, and the 777 and 787 from Boeing – don’t rely on the pilots to handle flight control system failures. FBW uses at least a triple redundant computer control system to interpret the inputs of the cockpit controls by pilots into movement of the airplane flight controls, including the trim. If part of the FBW system fails, the computer identifies the faulty elements and flies on without the human pilots needing to know how to disable the failed system.

Update (2019-03-13): Dallas Morning News (Hacker News):

Pilots repeatedly voiced safety concerns about the Boeing 737 Max 8 to federal authorities, with one captain calling the flight manual “inadequate and almost criminally insufficient” several months before Sunday’s Ethiopian Air crash that killed 157 people, an investigation by The Dallas Morning News found.

Update (2019-03-15): Jon Ostrower (via John Gruber):

Every airplane development is a series of compromises, but to deliver the 737 Max with its promised fuel efficiency, Boeing had to fit 12 gallons into a 10 gallon jug. Its bigger engines made for creative solutions as it found a way to mount the larger CFM International turbines under the notoriously low-slung jetliner.

See also: Hacker News (3)


Assuming the author is correct, and the reaction to the MCAS issues is a simple reaction that every pilot should know by memory: Is it really acceptable that once every 3 months a 737-Max will attempt a nose dive and require a vigilant pilot who can identify and correct the issue before the plane crashes into the ground?

And this likely happened at least twice, while there were 300 MAXs in service. If there were 3,000 MAXs in service, MCAS misfires would presumably be happening 3x a month worldwide - each misfire requiring a proper pilot reaction. How can you defend Boeing in that case?


Here’s what I don’t get about this whole situation:

AIUI 737 MAX has an instability such that, in near stall conditions, some attempts to recover can make the stall worse. To mitigate this, Boeing added MCAS, and MCAS can malfunction with a single sensor failure. Imagine that this failure occurs and the pilot successfully turns off MCAS but ends up in a dive, too close to the ground, or otherwise in a bad situation. Now the pilot has to recover, but they are facing a faulty AoA indicator (if they have one at all) as well as a plane that, because MCAS is off, is unstable in near-stall conditions. And the pilot has never been trained in the handling of type 737 MAX under these conditions.

Am I wrong for some reason, or is this a potentially rather dangerous situation that could be caused by a single instrument failure?

Update (2019-03-21): Dominic Gates (via Nick Visser):

Current and former engineers directly involved with the evaluations or familiar with the document shared details of Boeing’s “System Safety Analysis” of MCAS, which The Seattle Times confirmed.

The safety analysis:

Understated the power of the new flight control system, which was designed to swivel the horizontal tail to push the nose of the plane down to avert a stall. When the planes later entered service, MCAS was capable of moving the tail more than four times farther than was stated in the initial safety analysis document.

Failed to account for how the system could reset itself each time a pilot responded, thereby missing the potential impact of the system repeatedly pushing the airplane’s nose downward.

Assessed a failure of the system as one level below “catastrophic.” But even that “hazardous” danger level should have precluded activation of the system based on input from a single sensor — and yet that’s how it was designed.

Trevor Sumner (Hacker News):

BEST analysis of what really is happening on the #Boeing737Max issue from my brother in law @davekammeyer, who’s a pilot, software engineer & deep thinker. Bottom line don’t blame software that’s the band aid for many other engineering and economic forces in effect.👇🎖🤔

See also: The Talk Show.

John Cassidy:

Early on, employees of the F.A.A. and Boeing decided how to divide up the certification work. But, partway through the process, a former F.A.A. safety engineer told the Seattle Times, “we were asked by management to re-evaluate what would be delegated. Management thought we had retained too much at the FAA.” The engineer said that “there was constant pressure to re-evaluate our initial decisions,” and “even after we had reassessed it … there was continued discussion by management about delegating even more items down to the Boeing Company.”

Even the work that was retained, such as reviewing technical documents provided by Boeing, was sometimes curtailed. “There wasn’t a complete and proper review of the documents,” the former engineer added. “Review was rushed to reach certain certification dates.”

Alan Levin and Harry Suhartono:

That extra pilot, who was seated in the cockpit jumpseat, correctly diagnosed the problem and told the crew how to disable a malfunctioning flight-control system and save the plane, according to two people familiar with Indonesia’s investigation.

The next day, under command of a different crew facing what investigators said was an identical malfunction, the jetliner crashed into the Java Sea killing all 189 aboard.


Airline mechanics tried four times to fix related issues on the plane starting Oct. 26, according to the Indonesia preliminary report. After pilots reported issues with incorrect display of speeds and altitude in the two prior flights, workers in Denspasar, Bali, replaced a key sensor that is used by the Boeing plane to drive down its nose if it senses an emergency.

Flight data shows the sensor, called the “angle of attack” vane, which measures whether air is flowing parallel to the length of the fuselage or at an angle, was providing inaccurate readings after that.

Steven Ashley:

At Boeing, safety really is an option: Optional cockpit ‘disagree lights’ wld have alerted pilots that the anti-stall, angle-of-attack (AOA) sensors were not in agreement. But after 2 crashes, they’re suddenly standard equipment...

Skype for Web Drops Support for Safari

Chance Miller:

In a statement to VentureBeat, Microsoft explained that Skype for Web uses a “calling and real-time media” framework that functions differently across the various browsers. Thus, it decided to prioritize Skype for Web support in Microsoft Edge and Google Chrome[…]


Update (2019-03-11): My hospital’s Web site just stopped working in Safari. The login page just endlessly reloads itself. It works in Chrome and Firefox.

Flickr Protects Photos From Deletion

Flickr (via Hacker News):

When we recently announced updates to Flickr Free accounts, we stated that freely licensed public photos (Creative Commons, public domain, U.S. government works, etc.) as of November 1, 2018 in excess of the free account limit would not be deleted. We wanted to make sure we didn’t disrupt the hundreds of millions of stories across the global internet that link to freely licensed Flickr images. We know the cost of storing and serving these images is vastly outweighed by the value they represent to the world.

In this spirit, today we’re going further and now protecting all public, freely licensed images on Flickr, regardless of the date they were uploaded. We want to make sure we preserve these works and further the value of the licenses for our community and for anyone who might benefit from them.


In memoriam accounts will preserve all public content in a deceased member’s account, even if their Pro subscription lapses. The account’s username will be updated to reflect the “in memoriam” status and login for the account be locked, preventing anyone from signing in.


Friday, March 8, 2019 [Tweets] [Favorites]

iClever Himbox HB01 Bluetooth Car Receiver

Now that I’m using an iPhone XR, I no longer have a headphone jack. I’ve had bad luck with combination charge/audio dongles, and the Qi charger car mounts I’ve seen have been unwieldy. So extended car use will require the Lightning port for charging, meaning that audio must be played wirelessly. Fortunately, I’ve found a much better Bluetooth-to-headphone jack adapter than the Anker SoundSync Drive I had been using. It’s called the iClever Himbox HB01.

The Himbox works in the same way as the SoundSync, just more smoothly. Most importantly, it auto-connects to my phone so that when I press the Play button it’s already ready to go. There’s no variable delay, no need to retry, no question about whether it will actually connect. It’s just transparently ready every time.

This can actually be unexpected or unwanted. For example, if I’m playing audio with my AirPods and get into the car, when I turn on the ignition (which powers on the Himbox) it will steal the Bluetooth connection from my phone. Even with no audio playing, it will proactively switch the phone’s audio output.

I can prevent the Himbox from stealing the connection by unplugging it, but it would be better if it simply had an off switch. The USB connector is tight enough that pulling it one-handed will unplug the entire four-way cigarette lighter adapter, which other devices are using for charging.

There are buttons to Play/Pause and to skip Back and Forward. You can long press the latter two to adjust the volume. It has its own microphone for calls, which is great because this lets me answer calls when the phone is in my pocket. You can also long-press the Play button to initiate Siri. I like this because I’ve not found Hey Siri to be reliable when driving. Unfortuantely, unlike AirPods, the Himbox does not seem to use its own microphone for Siri. At least, it never seems to understand me when the phone is in my pocket.

There’s a bright light that’s always on when paired. This is helpful for finding the button, and it flashes when a call comes in, but it’s just too bright at night, even when I’m not looking directly at it, when my eyes are adjusted to the dark.

I also ran into a problem mounting the Himbox. You’re supposed to stick a metal mounting plate onto the car. The Himbox then attaches to the plate magnetically, so it can easily be removed. However, the adhesive never felt very secure and came unstuck within just a few hours (fortunately leaving no residue). I ended up putting gaffer tape completely over the mounting plate. The magnet is plenty strong enough to work through the tape.

This reads like a list of complaints, but I’m actually very happy with the Himbox. The common case is when I do want it to auto-connect. That works very well. I don’t want to go back to the SoundSync or to manually plugging and unplugging a mini-phone connector.

For some reason, the Himbox is currently unavailable at Amazon, but you can get one at Walmart.

Open Sourcing Windows Calculator


Today, we’re excited to announce that we are open sourcing Windows Calculator on GitHub under the MIT License. This includes the source code, build system, unit tests, and product roadmap. Our goal is to build an even better user experience in partnership with the community. We are encouraging your fresh perspectives and increased participation to help define the future of Calculator.


Reviewing the Calculator code is a great way to learn about the latest Microsoft technologies like the Universal Windows Platform, XAML, and Azure Pipelines. Through this project, developers can learn from Microsoft’s full development lifecycle, as well as reuse the code to build their own experiences. It’s also a great example of Fluent app design. To make this even easier, we will be contributing custom controls and API extensions that we use in Calculator and other apps, to projects like the Windows Community Toolkit and the Windows UI Library.

Via Miguel de Icaza:

A jewel hidden inside this release is an MIT licensed infinite precision math library in C++[…]

Previously: iOS Calculator Bug.

Update (2019-03-12): Anis Muslić:

-Be Microsoft
-Release source code of calculator on GitHub
-Paste password into calculator
-Use it as part of telemetry to collect data.

Thursday, March 7, 2019 [Tweets] [Favorites]

A Privacy-Focused Vision for Social Networking

Mark Zuckerberg:

Public social networks will continue to be very important in people’s lives -- for connecting with everyone you know, discovering new people, ideas and content, and giving people a voice more broadly. People find these valuable every day, and there are still a lot of useful services to build on top of them. But now, with all the ways people also want to interact privately, there’s also an opportunity to build a simpler platform that’s focused on privacy first.

I understand that many people don’t think Facebook can or would even want to build this kind of privacy-focused platform -- because frankly we don’t currently have a strong reputation for building privacy protective services, and we’ve historically focused on tools for more open sharing. But we’ve repeatedly shown that we can evolve to build the services that people really want, including in private messaging and stories.

I believe the future of communication will increasingly shift to private, encrypted services where people can be confident what they say to each other stays secure and their messages and content won’t stick around forever. This is the future I hope we will help bring about.

Alex Stamos:

This isn’t a post I expected to read, and I wish he wrote it two years ago. Hopefully the external vision is reflected in internal moves to change product culture that informs thousands of product and engineering decisions per year. Turning a ship that large is difficult.


Right now FB gets crap (from the same people) for both invading people’s privacy and not policing communications enough. This is the judo move: in a world where everything is encrypted and doesn’t last long, entire classes of scandal are invisible to the media.

He explicitly recognizes the downside for safety, and rightly points out the potential mitigations, but he is coming down pretty hard on putting data outside of Facebook’s reach for advertising, content moderation, investigation and government requests.


The “Secure Data Storage” section is a massive shot across Tim Cook’s bow. Expect to hear a lot about iCLoud and China every time Cook is sanctimonious.

In other news, Zuck has clearly given up on entering China, as these changes makes that impossible. Good.

Ben Thompson:

In fact, what Zuckerberg announced is quite believable, precisely because it makes perfect sense for Facebook: this is a privacy cake that Facebook can have — and eat it too.


By the same token, though, just because Facebook capped Snapchat’s growth doesn’t mean that Snapchat’s core insight about the desire for private, ephemeral communication was wrong: what Zuckerberg wrote yesterday is basically Snapchat’s reason-for-existing. In other words, while Instagram Stories built a wall around Snapchat by copying Snapchat’s secondary feature, this “Privacy-Focused Vision for Social Networking” is a clear attempt to build the core of Snapchat for everyone else.


Perhaps most compelling, though, is the degree to which this move locks in Facebook’s competitive position. As I noted above, Snapchat already showed that Facebook is vulnerable in the realm of private ephemeral communications, but soon that will no longer be the case. Moreover, given Facebook’s focus on end-to-end encryption, the company has made it that much harder to even get off the ground: not even Snapchat is fully end-to-end encrypted (pictures are, but not text messages).


Why can Facebook deliver most of the value? Because they are still Facebook! They still have the core Facebook app, Instagram, ‘Like’-buttons scattered across the web — none of that is going away with this announcement. They can very much afford a privacy-centric messaging offering in a way that any would-be challenger could not. Privacy, it turns out, is a competitive advantage for Facebook, not the cudgel the company’s critics hoped it might be.

Nick Heer:

If Facebook truly is going to build private, encrypted services for its users, it’s not because the company’s culture has radically pivoted to embrace the value of privacy. This is more likely a tactic, rather than a goal for its own sake.

Previously: Facebook and Phone Numbers.

Update (2019-03-08): Zeynep Tufekci:

So, wow, Mark Zuckerberg published a plan to entrench Facebook, fend off regulatory action, lower costs, shrink scandal exposure, acknowledge realities— and he called it a “privacy-focused vision” while ignoring all the big privacy issues! 🙄

I mean, Facebook doesn’t need to read your messages—that’s not how its surveillance machine runs. Zuckerberg states as much same day in interview in @Wired. Done right, shift to end-to-end could be great. But it could just mean hiring fewer content moderators and hiding scandals.

China’s not happening. No kidding. People like Snapchat’s features and Facebook will keep copying them. They will scramble WhatsApp and Instagram hard into Facebook so regulators can’t break them off. These are not privacy shifts—they’re shrewd competitive moves for entrenchment.

See also: Exponent, Hacker News.

TensorFlow Differential Privacy

James Vincent (via Dan Masters):

Google has announced a new module for its machine learning framework, TensorFlow, that lets developers improve the privacy of their AI models with just a few lines of extra code.

TensorFlow is one of the most popular tools for building machine learning applications, and it’s used by developers around the world to create programs like text, audio, and image recognition algorithms. With the introduction of TensorFlow Privacy, these developers will be able to safeguard users’ data with a statistical technique known as “differential privacy.”


There are some downsides to using differential privacy, though. “By masking outliers, it can sometimes remove relevant or interesting data, especially in varied datasets, like those involving language,” says Erlingsson. “Differential privacy literally means that it’s impossible for the system to learn about anything that happens just once in the dataset, and so you have this tension. Do you have to go get more data of a certain type? How relevant or useful are those unique properties in the dataset?”

Ariel Herbert-Voss:

Just found this incredible paper by @korolova and team: they straight-up reverse engineered Apple’s differential privacy system. They share implementation details and findings about privacy loss in a real-world system, which is key for broader DP adoption.


CloudBerry Backup for macOS

Dave Kitabjian:

I have seen other reviews of CloudBerry that happily check many boxes on the feature list and grant it a favorable rating. I wonder how many of those reviewers actually performed a non-trivial backup using the product and took the time to evaluate whether it was in fact working properly.

I really wanted to be the one to tell the TidBITS community that there was another great backup app to consider. But I wanted to do that because I want to help you protect your data, and right now, the best way I can do that is to recommend that you do not use CloudBerry Backup for macOS.


How Time Machine Makes Backups With APFS

Howard Oakley:

The preparatory sequence identifies and deletes expired local snapshots. According to Apple’s Support Note, these local snapshots are kept for 24 hours; although the log entries below indicate a shorter period, later backups confirm that this is normally the case, and you should expect to find a full 24 hours of snapshots at any time.

backupd then copies changed items to the backup destination. In order to maintain the impression that each backup is a complete copy of the source volume, it then makes hard links to all the unchanged files and folders. It is able to do this as, unlike many file systems, HFS+ supports directory hard links as well as those to files.


backupd then checks that there is sufficient free space on the backup destination, and if there is, performs that same process as with HFS+, copying changed items and making hard links to the rest. That is followed by new steps, which save a clone family cache to the new backup folder, and back-up-later caches there too. The precise purpose of these isn’t yet clear, although the latter may well list files which changed as the backup was being made.


I have been writing that Time Machine has fallen behind macOS, at least in respect of its reliance on the HFS+ file system for backups, which results from its use of directory hard links. This implementation of Time Machine for APFS is perhaps best viewed as version 1.5: it now takes best advantage of the new file system as its source, but has yet to find a new backup method and format appropriate to an APFS backup destination.

Howard Oakley:

That old [HFS+] system periodically failed, perhaps when FSEvents lost track of recent changes, or became corrupted. In those circumstances, Time Machine would perform a lengthy ‘deep traversal scan’ to determine what needed to be backed up, which could in some cases take several hours. One strong case for adopting a new approach with APFS was to reduce the frequency of those deep traversals by using a more robust mechanism for determining what to back up. There’s no evidence that the new snapshot-based system is any quicker – indeed, in many cases it may perform more slowly than using FSEvents.


However, deep traversal scans do still occur on APFS volumes. In one period of only 8 hours, my iMac Pro undertook and completed two such scans, as shown in the T2M2 report below.


Wednesday, March 6, 2019 [Tweets] [Favorites]

Problems With os_log

BJ Homer:

Is there anyone outside Apple who finds the new logging system useful? Seems like it’s annoying and actively intrusive for external developers.

The os_log features are useful to Apple, but without anyway to gather logs for our own reporting, I don’t see how the features are useful to third party devs.

Some of the problems: difficulty getting logs from customers, so much spew that the log files are huge and hard to sift through, important log entries that are never persisted to disk, high CPU use when leaving Console open to catch the unpersisted entries, NSLog becoming unreliable and not showing anything in some cases, API that needs to be wrapped to be useful but which is designed not to be wrapped. Instead of unifying things, unified logging has resulted in everyone finding their own workarounds.

Peter Steinberger:

Ideally, we’d love to fully switch to Apple’s os_log API. However, it has one major downside: There’s still no way to access the rolling log to add to the reports that get sent back to us. Multiple radars have been submitted to Apple, requesting this feature be added (rdar://40853863, rdar://30444429), but in the meantime, developers are forced to implement their own solutions if they wish to include logging in a crash’s backtrace.


For our specific use case, we’ve decided to integrate Crashlytics’ CLSLogv function as a custom logger that we use with CocoaLumberjack, a framework that offers many other useful features, such as adding macOS logging capabilities.

Mike Piontek (tweet):

With NSLog I can have a switch in my iOS or macOS app that redirects stderr to a file. The user can turn that on, recreate the problem, and just tap a button to email the file. Super simple.

With os_log, this doesn’t work. Of course there’s sysdiagnose, but that requires a complicated button combination, scrolling through a list of hundreds of other log files, and then… basically the only option is to try to email me a 200MB file.


I was originally planning to create my own wrapper for os_log, even though it’s recommended against (see WWDC 2016). That way I could have it write to a file as needed, or just pass the data to os_log the rest of the time. But it seems there’s actually no good way to do that, due to the problems described here.

Rob Mayoff:

The problem is that os_log doesn’t take an Array<CVarArg> argument; os_log is itself variadic over CVarArg. So Swift casts args (an Array<CVarArg>) to CVarArg, and sticks that casted CVarArg into another Array<CVarArg>.


Sadly for you, Swift doesn’t yet have any syntax for argument splatting. It’s been discussed more than once in Swift-Evolution (in this thread, for example), but there’s not yet a solution on the horizon.


So you might go looking for an os_logv. Sadly, you won’t find one. There is no documented companion to os_log that takes pre-bundled arguments.


One last thing. Why doesn’t the compiler complain about converting Array<CVarArg> to CVarArg? And why does Kamran’s suggestion (of using %@) work?

It turns out these questions have the same answer: it’s because Array is “bridgeable” to an Objective-C object.


Update (2019-03-07): iKyle:

It feels like an internal tool Apple built for themselves and then asked everyone else to use for our use cases, without realising it doesn’t actually work for those uses.

See also: Custom String Interpolation and Compile-time Interpretation applied to Logging (via Tony Arnold).

Update (2019-03-08): Per Olofsson:

Add to this that os_log can’t be called from scripting languages such as python

Finder Bug Replacing a Folder With Dot Files

Lloyd Chambers:

  1. Copy a folder with dot files to another destination (I used “.icj”).
  2. Change one of the dot files.
  3. Repeat the copy. When the Finder offers Cancel or Replace, choose Replace.

PROBLEM: the copied folder contains old data in the invisible “.icj” file.

I was easily able to reproduce this on macOS 10.14.3.

Previously: Finder Shows Incorrect Folder Sizes.

GameClub Plans to Resurrect Abandoned iOS Games

Mitchel Broussard:

As Hodapp explained on TouchArcade, Apple’s frequent updates to the iPhone have caused ongoing problems for iOS developers on older App Store games. The first of these major issues hit during the release of the iPhone 4 in 2010 and its introduction of an increased resolution, which meant all developers needed to update their games with higher resolution textures.

While some developers decided to do this, others couldn’t justify spending time and money to modernize their games. Of course, this issue grew exponentially worse with the introduction of iOS 11 in 2017, bringing with it the removal of all 32-bit apps from the iOS App Store. TouchArcade kept an ongoing list of every 32-bit app that was no longer supported with iOS 11, including the TouchArcade app itself.


Now, Hodapp is leaving TouchArcade to address this issue with GameClub, a developer with the intent to bring the best of these forgotten and unplayable iOS games back to life. To achieve this, GameClub will handle all of the updates, ongoing maintenance, and support for each game, in essence becoming the new developer of the game.


MacStories Shortcuts Archive

Federico Viticci (tweet):

Since the original release of Workflow in 2014, we’ve created hundreds of automations to help readers use their iOS devices more efficiently. The goal of this archive is to offer a complete catalogue of our old workflows as well as new custom shortcuts for Apple’s Shortcuts app.

Each shortcut in this archive has been created, updated, and tested by Federico and the MacStories team. Shortcuts are organized in categories, and you can jump directly to a specific category by using one of the section links below.

Dr. Drang:

This is not only a set of pre-built shortcuts, it’s also a source of inspiration for new shortcuts you can build based on these.

Tuesday, March 5, 2019 [Tweets] [Favorites]

Patreon and Facebook

Brandon Gomez (via Hacker News):

The number of active patrons supporting artists on the platform in 2019 has seen significant growth, up 1 million over the last year, the company said. The company is also on track to pay out $500 million to content creators in 2019, pushing the company to surpass $1 billion in payouts since its inception in 2013.


Patreon CEO Jack Conte said in an interview with CNBC that the platform will soon be facing the challenge of maintaining a profitable model as the company continues its growth.

“The reality is Patreon needs to build new businesses and new services and new revenue lines in order to build a sustainable business,” Conte said.

Dan Olson:

This is the bizarro upsidedown that capital lives in. Their existing model, handle the logistics of subscription service for businesses too small to handle them directly, is the definition of sustainable. It scales up ridiculously well.


So Patreon has made around $55m in revenue since 2013. If their startup money had been a loan they’d have probably paid it back by now and would be operating a pretty sustainable service.


So Patreon has made around $55m in direct revenue, but they’re in hock to Thrive Capital for ~$107m, and Thrive doesn’t just want their money back with interest.

Dami Lee:

Facebook began expanding access to its Patreon competitor last night, giving more page owners the ability to start offering content to their subscribers for a monthly fee. But it doesn’t take much digging to see that the terms for Facebook’s feature, known as Fan Subscriptions, make for a bad deal for creators, giving Facebook a lifetime license to use their work and the right to take up to a whopping 30 percent of subscription fees.


For now, page owners get to keep the entire subscription fee. But Facebook plans to begin taking a cut once the feature formally launches, and its terms of service allow Facebook to take up to 30 percent, with 30 days notice of the change. That cut is standard for an app in Apple’s or Google’s app store, but it’s giant for a creator-focused platform: Patreon takes just a 5 percent share of a user’s pledges.

Update (2019-03-22): Patreon:

We’re announcing new creator plans, which will be available later this spring. Current creators on Patreon will see no change to the fees they pay or the features they have, unless they are interested in some of the new stuff we’re launching!

Amazon to Give Power to Brands to Remove Fakes

Alex Hern (via Hacker News):

Amazon will hand over unprecedented powers to brands to remove suspected counterfeits from its site, as part of a concerted push to eliminate fakes and frauds from the shopping experience.

Under the company’s new Project Zero programme, companies will now be able to remove counterfeit listings themselves, without having to wait for Amazon to take action.

For companies that face a serious counterfeiting problem, a further tool called “product serialisation” allows them even greater control. Manufacturers can now assign unique serial numbers to every product they sell and require Amazon to scan those serial numbers and check authenticity on every sale.


Powered by Amazon’s machine learning expertise, automated protections continuously scan our stores and proactively remove suspected counterfeits. Brands provide us with their logos, trademarks, and other key data about their brand, and we scan over 5 billion product listing updates every day, looking for suspected counterfeits. We’ve been testing these automated protections with a number of brands, and on average, our automated protections proactively stop 100 times more suspected counterfeit products as compared to what we reactively remove based on reports from brands.


Thunderbolt 3 Becomes USB4

Peter Bright:

Fulfilling its 2017 promise to make Thunderbolt 3 royalty-free, Intel has given the specification for its high-speed interconnect to the USB Implementers Forum (USB-IF), the industry group that develops the USB specification. The USB-IF has taken the spec and will use it to form the basis of USB4, the next iteration of USB following USB 3.2.

Previously: Confusing USB 3.2 Branding.

Update (2019-03-06): Nick Heer:

Making Thunderbolt royalty-free and not dependent on an Intel controller chip would likely be of considerable interest to a company that may want to build the protocol into a non-Intel platform.

Visual Studio 2019 for Mac Preview 3

Microsoft (via Aaron Bockover):

Today, we’re excited to announce the Preview 3 release of Visual Studio 2019 for Mac. This is the next release of our IDE for .NET Developers on the Mac.


In addition to the above, we’re excited to introduce a first preview of the new, fast, fluid, and performant C# editor, built on top of the same core editor as Visual Studio on Windows.


The new editor builds on a solid foundation provided by the Visual Studio editor on Windows, with native macOS UI added to make sure it feels right at home on a Mac. Not only does this provide an enhanced experience with smooth editing and navigation, but the new editor also has all the powerful IntelliSense/code-completion and quick fix suggestions you expect from a Visual Studio Editor. Plus, as the editor is truly native, you get all the benefits of a modern macOS editor, including several top features such as right-to-left and bi-directional text support and full support for native macOS input sources, which makes VS for Mac an IDE that speaks your language.

This sounds great, but it’s followed by a screenshot with oddly spaced checkboxes.

Update (2019-03-06): Miguel de Icaza:

Our new text editor is implemented as an NSView, with CoreText rendering on CALayers implementing all the proper NSText protocols on top of the same editor engine from VS/Windows.

Aaron Bockover:

Retained-mode layout with CoreText rendering into a CALayer per visual line, with input being fully NSTextInputClient conformant (so all the native input methods light up). Many functional layers are modular NSView/CALayer adornments (visible white-space, squiggles, etc).

Update (2019-03-20): See also: Merge Conflict.

Monday, March 4, 2019 [Tweets] [Favorites]

Bringing iOS Apps to macOS Using Marzipanify

Steve Troughton-Smith:

At WWDC 2018 Apple gave us a ‘sneak peek’ at perhaps one of the most impactful developments on macOS since the transition to Mac OS X: UIKit apps running on the desktop. Today, I’m going to detail a special tool I built, called marzipanify, to get started with UIKit on the Mac early, and start the initial bringup of your iOS app on macOS.


There’s another reason for the iosmac distinction: many of the frameworks underneath, née iOS Simulator, clash horrendously with the built-in macOS frameworks, thanks to a decade of divergence from OS X. Both iOS and macOS today share a UIFoundation framework to help support UIKit and AppKit and provide common code, but UIFoundation makes decisions at runtime based on which platform it’s running on that affect everything from Interface Builder to text rendering. At its simplest level, this means that if you link AppKit into your iOSMac app, all manner of things will explode in your app. The iosmac linker variant for iOSMac binaries explicitly prevents loading non-iosmac binaries and libraries into your code (unless they’re whitelisted).


Altogether, it appears running modern UIKit on macOS is so much more complex than the more-obvious tack Chameleon took when it rewrote UIKit for the Mac all those years ago. It’s not a virtual machine by any stretch, despite evolving from the iOS Simulator, but it certainly goes to great lengths to distance itself from how Mac apps traditionally work.

Steve Troughton-Smith:

If you look at your newly-marzipanified app, and compare it with Apple’s built-in UIKit apps on Mojave, you will notice that yours looks a lot more clunky and less-native than what Apple’s doing. To really make your app sing, you’re going to have to use some new classes and mechanics unique to UIKit on macOS.


One thing that is key to remember is that Marzipan scales everything in your window by 0.77 to better suit the desktop. This is mostly transparent to the developer, unless of course you’re trying to closely match the metrics used in AppKit apps for e.g. sidebar row height, and you suddenly realize everything is smaller than it should be.


You may find all your centered text is no longer centered when run on the Mac. That’s because Apple uses different integer values for the NSTextAlignment enum, so NSTextAlignmentCentered is interpreted as NSTextAlignmentRight.

James Thomson:

Here’s iOS PCalc running under Marzipan on Mojave. Mostly working, with a few graphical glitches - some stuff works even better than the current Mac version, like fullscreen / live resizing. Looking forward to seeing what we get officially at WWDC in June.

Previously: Apple to Target Combining iPhone, iPad, and Mac Apps by 2021.

Keyboard Shortcuts Killed by Bug

Howard Oakley:

When you try to edit the command associated with that shortcut, the editing box is tiny, just over two characters in width, so tiny that it’s hard to read or change its contents.

With a fourth shortcut added, every single entry made by the user is replaced by an ellipsis. Which command is which shortcut? Well, you can either read it through the selection keyhole, or view it in the tooltip attached to the ellipsis.

I have spent some time looking for workarounds which make this feature still usable, and cannot find any. This bug effectively renders the App Shortcuts feature unusable in Mojave 10.14.3.

You may not use App Shortcuts, and consider them a minor feature of little importance. This bug, though, reveals a great deal about what is going wrong inside Apple, which is the reason for this article.

The bug is present at least as far back as macOS 10.13.4.

Facebook and Phone Numbers

Jeremy Burge:

For years Facebook claimed the adding a phone number for 2FA was only for security. Now it can be searched and there’s no way to disable that.

Facebook 2FA numbers are also shared with Instagram which prompts you ‘is this your phone number?’ once you add to FB.

The original FB phone number prompt never mentioned “and more”. It was shown for MONTHS before a link was added in September 2018 clarifying “actually we’ll use this wherever we damn well please”

WhatsApp also shares phone numbers with Facebook

Facebook shares phone numbers with advertisers

Update (2019-03-05): Zack Whittaker (Hacker News):

Alex Stamos, former chief security officer and now adjunct professor at Stanford University, also called out the practice in a tweet. “Facebook can’t credibly require two-factor for high-risk accounts without segmenting that from search and ads,” he said.

Since Stamos left Facebook in August, Facebook has not hired a replacement chief security officer.

John Gruber:

The lesson some people are going to take from this is that enabling two-factor authentication is for suckers.

Nick Heer:

Ever since fears about SIM hijacking began spreading, some people have been claiming that using SMS-based two-factor authentication is worse than not using two-factor at all. I think that’s silly and myopic. It is worth noting that SIM hijacking is pretty easy for someone who has access — directly or indirectly — to a carrier’s SIM backend. But the circumstances under which someone’s phone number would be hijacked are pretty rare for the vast majority of us. People who are connected with low character count or high-valued social media accounts, higher-ranking employees, activists, journalists, wealthy individuals, and public figures are more susceptible to these kinds of attacks. Most of us, however, are not any of these things, and will likely benefit from using any kind of two-factor authentication. You should use a code generator or a hardware mechanism like a YubiKey wherever you can, but SMS authentication is not necessarily terrible, and is likely not worse than using no verification at all.

Adding to the Wayback Machine

Jesse Gardner:

Jeffrey Zeldman shared this helpful tip for saving web pages to the Internet Archive Wayback Machine[…]

I reference the Wayback Machine a lot, so requesting an archive of the current page by prepending the url with is wicked useful; but I figured I’d make it just a smidge easier by turning it into a bookmarklet.

Friday, March 1, 2019 [Tweets] [Favorites]

Upgrading From an iPhone SE to an XR

I’ve been using an iPhone XR for several months now. I really wasn’t sure I wanted to give up my iPhone SE, which is so easy to hold and comfortable to use, but I wanted a faster phone with a better camera and more battery life. I ended up liking the iPhone XR much more than I expected to, and I would choose this model again over the iPhone XS or XS Max, even without price being a factor.

Overall, I like Face ID a little better than Touch ID. Face ID works on the first try most of the time, but even without Require Attention it fails to recognize me more often than Touch ID does. And, perhaps due to an iOS change, even when it seems like it did recognize me, I need to type my passcode multiple times per day. When the phone is in my pocket, Face ID feels slower than even the iPhone SE’s Touch ID. Even with first-generation Touch ID, I could put my finger on the sensor and have the phone unlock while I was raising it to my face. With Face ID, even with Raise to Wake, I still have to wait until the phone is in front of me and then swipe up. Face ID also fails in some circumstances where Touch ID worked, such as lying sideways on a pillow in bed or wearing ski googles. However, Face ID also has advantages. It works with gloves on, with wet fingers, and with dry/cracked skin. It’s more convenient when the phone is in a dock or car mount where it would be hard to get my hand under it to put my thumb on the sensor.

Adjusting to not having a physical home button was easy. I can’t believe how much of a non-issue it was. The multi-tasking gestures are great. The notch itself doesn’t bother me as much as I expected, but I miss being able to see at a glance whether an alarm is set.

The display is amazing. I actually think it looks better than the OLED screen on the iPhone XS. Text on OLED screens looks a bit funny to me, especially when scrolling. There’s a weird color effect that kind of reminds me of Microsoft’s ClearType.

I wasn’t sure whether I would like the size of the screen. With the iPhone SE, I could easily reach everything with one hand, and this wasn’t the case even with an iPhone 6s. The iPhone XR is quite a bit larger. In fact, I found that it’s so large that I hold and use it in a different—unapologetically two-handed—way, and the adjustment has been easy. Being able to see so much at once is an incredible advantage. I’ve long known this on the Mac, where I’ve always tried to get as much screen space as possible. But, in a way, it’s more true on the phone because it’s so cramped to begin with. Modern iOS and apps are less information dense than before, and they no longer seem to be optimized for 4-inch displays like when that was the flagship size. I miss those days, but at this point I don’t think even a new small phone would bring them back.

With the iPhone 6–8, I felt like the additional screen real estate was questionably worth the increase in physical size and reduced one-handed use. But with the XR, with its higher DPI that shows the same number of points as the iPhone XS Max while only being slightly larger than the iPhone XS, it’s clearly worth it to me. And despite the high resolution, I didn’t find any text to be too small, even with the lowest Dynamic Type setting.

The display shows enough text to read books comfortably, so that I no longer bother carrying my Kindle to waiting rooms, etc. Besides showing more, the large display also requires less scrolling. It feels like I’m being interrupted less when reading a long document or book, and that I can scan through a list of tweets more quickly. And it allows for a larger keyboard, which I think has improved the speed and accuracy of my typing.

A downside to the large display is that, because it goes right up to the edge, I got a lot of accidental input. I would touch a control (often in Camera) that I didn’t mean to. And I would find that tapping a button I did want to touch wouldn’t work because I was also accidentally touching the edge of the display somewhere. Using a case mostly eliminated these problems, although it also makes intentional edge gestures slightly more difficult.

The other downside to the large display is the greatly increased physical size. This bothers me much less than I expected in hand, but it’s unpleasant in my front pants pocket. It’s less comfortable to walk around with the phone in pocket, and I find myself removing it if I’m going to be sitting for an extended time. Overall, I don’t think I’d want to go back to a smaller display, but I kind of miss the innocent days when we could pretend there wasn’t a trade-off here. Perhaps when Apple makes a foldable phone.

The size in the pocket wouldn’t be so bad with the phone by itself, but it’s especially pronounced with a case. And, unfortunately, I’ve found a case to be necessary for the iPhone XR. The phone is just too slippery without one. The aluminum sides are much less grippy than the iPhone XS’s stainless steel, and it lacks the square edges that make the iPhone SE so easy to hold. It seems like combining these attributes with the iPhone XR’s display would make an ideal phone, but that’s not a configuration that Apple offers.

The case I’m using is the $10 Spigen Liquid Crystal. I don’t love the way it looks, with its text printed on three different surfaces, and the dot grid on the back, but it’s very grippy (without being too sticky in my pocket) and comfortable to hold.

I expected to like Apple’s $39 clear case but ended up strongly disliking it. It looks better out of the box, but it accumulates more fingerprints on the surface and pocket lint and gunk under the edges. The plastic has a hard feel—somehow it feels less forgiving than the metal of the phone itself—so that I find it almost painful to hold. It’s also a bit too slippery, and the buttons are way too tight. The Apple case is a bit less bulky, though, and there’s a little cutout at the bottom so that your finger doesn’t bump into the edge of the case when swiping up to go home.

The other reason I consider a case necessary is that it evens out the camera bump so that the phone can sit flat. I hate the bump, but the camera is great. In ideal conditions, it’s not so different from the iPhone SE’s. But it’s far superior in low light or when the subject is moving. Getting ready to take a photo is faster, both because the camera app opens more quickly and because with Smart HDR I no longer have to manually turn on HDR every time.

Unfortunately, Smart HDR seems like a work in progress. The first problem is that it can introduce artifacts. I’ve seen unnatural skin, a solid red rectangle over part of the image, and unnatural reflections on metal surfaces that I don’t see in person. The second problem, compounding the first, is that if the phone thinks only a little HDR is required it will apply the processing (and possibly introduce the artifacts) without saving a separate non-HDR version of the photo (even with Keep Normal Photo enabled). Perhaps this is because Apple doesn’t consider this processing to be HDR. Yet neither problem seems to occur when Smart HDR is disabled. In that case, you get a manual HDR toggle in the Camera app, but it’s easier to use than on the iPhone SE because you can just tap it on or off without having to first tap to open the HDR “menu.”

The iPhone XR doesn’t just take photos with better lighting and sharpness; they also look different. I think this is due to the larger aperture causing a shallower depth of field. Roughly speaking, less of the area around the subject will be in focus. I’m not sure how I feel about this. Sometimes having a slightly blurry background—it’s nothing like Portrait Mode—emphasizes the important part of the photo and makes it look more professional. Other times, if I’m taking a photo to “document” something (the writing on an object, or how a piece of equipment looked before I took it apart), I would prefer to have more of it look sharp.

Portrait Mode has occasionally produced great results, but usually they look sort of weird. I wish it worked more like HDR, saving two versions, so that I could revert to the normal one if it didn’t work out. Absent that, I rarely use Portrait Mode because I don’t want to risk not ending up with a good shot.

Miscellaneous things that I didn’t expect:


Update (2019-03-04): John Gruber:

I’ve been saying the same thing, including on a recent episode of my podcast talking to Joanna Stern, who just bought herself a XR for her own use. For using the iOS interface — Safari, Twitter, Mail, Messages — I really do think I prefer a great LCD to an OLED display. Where OLED’s advantages show most are when watching video — that’s when the deep blacks matter.

You can retroactively turn off the Portrait Mode blur in the Photos app, but this feature is not available to me since my workflow is to use Image Capture to import the photos to Lightroom and delete them from the phone.

Carlos Moffat suggested that the Face ID problems I’ve been having lying sideways in bed might not be due to the pillow, but rather to holding the sensor too close to my face. Holding it farther away when unlocking does seem to help.

I have not missed 3D Touch or the headphone jack.

Matt Del Vecchio notes that you can swipe up while raising the phone, rather than waiting until Face ID can see you. I have not been able to physically do this one-handed, whereas it’s easy to one-hand unlock with Touch ID when taking the phone out of my pocket. Even with two hands, the phone won’t recognize the swipe unless you have also pressed the power button or have already moved the phone up enough that Raise to Wake has been triggered.

Juli Clover (via Meek Geek):

You might think [the iPhone SE would] be noticeably slower than newer iPhones, but, surprisingly, for built-in apps it’s speedy. When using Mail, Messages, Calendar, FaceTime, and other similar built-in apps, the iPhone SE is as speedy as 2018 iPhones.