Archive for February 22, 2019

Friday, February 22, 2019

Intelligent Tracking Prevention 2.1

Apple (Hacker News, MacRumors):

As of ITP 2.1, partitioned cookies are no longer supported and third-parties classified with cross-site tracking capabilities now have to use the Storage Access API to get any cookie access.

[…]

Cookies can either be set in HTTP responses or through the document.cookie API, the latter sometimes referred to as client-side cookies. With ITP 2.1, all persistent client-side cookies, i.e. persistent cookies created through document.cookie, are capped to a seven day expiry.

[…]

WebKit implemented partitioned caches more than five years ago. A partitioned cache means cache entries for third-party resources are double-keyed to their origin and the first-party eTLD+1. This prohibits cross-site trackers from using the cache to track users. Even so, our research has shown that trackers, in order to keep their practices alive under ITP, have resorted to partitioned cache abuse. Therefore, we have developed the verified partitioned cache.

This all sounds good, but in practice ITP seems to get in the way of sites that I do want to remember me. There are some that I visit just once or twice a month (e.g. to pay a bill) that now treat my Mac as a brand new device (requiring extra authentication via security questions or SMS) every single time. As far as I know, there is no way to tell Safari to trust a particular site and always remember its cookies. So it’s either put up with a worse user experience or use a different browser.

Previously: Apple Is Removing “Do Not Track” From Safari.

Apple Closing Stores Because of Patent Trolls

Joe Rossignol:

Apple plans to close both of its retail stores within the Eastern District of Texas in a few months from now in an effort to protect itself from patent trolls, according to five sources familiar with the matter.

[…]

The plans are significant, as U.S. law states that patent infringement lawsuits may be filed “where the defendant has committed acts of infringement and has a regular and established place of business.” By closing its stores in Eastern Texas, Apple is ending its established place of business in the district.

[…]

The Eastern District of Texas has been a hotbed for patent litigation over the past few decades[…]

Is this a brilliant legal hack? A sign of a system so broken that even a company with Apple’s resources would rather inconvenience customers than try to defend itself? Note that at the country level, Apple has chosen to play ball in legal environments that it doesn’t like, but those have threatened its customers rather than Apple itself.

Update (2019-02-26): See also: Hacker News.

Swift Subclass of NSTextStorage Is Slow Because of Swift Bridging

Darren Mo (via Marcin Krzyzanowski):

Calling -[NSTextStorage attributesAtIndex:effectiveRange:] is nearly 3 times as slow for TextStorageSwiftSubclass compared to NSTextStorage. Time profiling shows that this is caused by the bridging of the Objective-C dictionary return value to Swift. Effectively, this means we cannot use Swift if we want to subclass NSTextStorage.

There are ways to get around bridging overhead at method call sites. I think the issue here is that these techniques can’t be applied because the subclass is being called by the frameworks. Perhaps there’s a way to work around it by implementing certain methods in Objective-C and others in a Swift extension, but interoperability can be messy depending on how much you are taking advantage of Swift’s features.

Jonas Boberg:

Note that this is not just an issue with subclasses, but also delegate methods, such as NSLayoutManagerDelegate shouldUseTemporaryAttributes.

Previously:

Update (2019-02-26): Paul Goracke:

Fortuitously just watched WWDC18 Session 229 (“Using Collections Effectively”) this morning, which raised this concern (and example using NSAttributedString) starting at 28:16.

Finder Shows Incorrect Folder Sizes

Lloyd Chambers:

Generally if I see a zero byte folder, I just delete it out of habit. That’s a habit I have to unlearn: what if it was just one folder among many and Get Info also shows zero bytes... hard to not want to just trash the thing.

This bug is particularly severe on hard drives (because they are slow) and when there is disk I/O going on. You might wait a looooooooooong time to see any display of the size. Why can’t it just say “calculating...”? Because it eventually seems to get it right (though I’m not sure of that).

I haven’t seen zero-byte folders, but I have seen lots of incorrect folder sizes since updating to macOS 10.14. For example, a folder of photos was showing as about 10 GB instead of 100 GB. All of its child folders had underestimated sizes, too. Yet they added up to more than the size shown for the parent folder. This persisted for days. It happens on my iMac’s built-in Apple SSD, so there shouldn’t be any third-party software or hardware to blame.

Raising Prices Lifted App Revenue

Stuart Hall (via Michael Love):

Then I received an app review suggesting I should bump my price. I’d never really considered it. I haven’t given the app a lot of thought since I launched it. It functioned exactly how I needed and the value felt right to me at $1.99.

[…]

The results were pretty interesting. Moving to $4.99 immediately gave a big boost in revenue. The conversion rate only dropped 2%. Which means only 1 in 10 people had an objection in paying 2.5x the price!

$7.99 also gave a good bump on revenue with only a slight drop in conversion rate.

[…]

Possibly the most interesting future experiment is subscriptions. Based on the feedback I received users are starting to expect subscriptions.

Update (2019-02-26): Ken Case:

We try not to do this very often, but it's time to update our app prices.

Ejector 1.0

Dave DeLong:

I’m pleased to announce Ejector, an app that gives new purpose to your ⏏️ key. Without a CD drive, this key does nothing; now it shows all your mounted drives and volumes and helps you eject them.

The app has a 7 day trial, and costs $10

I’ve been using LaunchBar to do this, but it’s cool that it can be invoked with the actual Eject key.

Dave DeLong:

Hold down the option/alt key when ejecting to force eject volumes

[…]

Apple, please sherlock this: rdar://problem/43736317

It’s not clear to me whether there are technical factors (disk access, private Touch Bar APIs) keeping it out of the Mac App Store, as it’s the sort of utility one would hope to find there. It’s not sandboxed, at present.

Update (2019-02-26): Dave DeLong:

Ejector isn’t sandboxed, it uses private Touch Bar APIs, and technically the eject key detection is undocumented and unsupported. It’d be possible to make it MAS-acceptable, but I think it would degrade the user experience.