Archive for May 4, 2020

Monday, May 4, 2020

Arq and Time Machine Exclusions

Manuel Grabowski:

I figured there must be some way to find out what data exactly changed inbetween two TM snapshots. There is. I let that script run (for almost an entire day) and in the resulting output I was quickly able to find the directory that was responsible for almost the entire size of the changes: ~/Library/Arq/.


So for months, my two primary backup strategies have negatively affected each other by slowing down to a grinding halt and consuming ungodly amounts of CPU power and fan spinnage.

The corresponding folder in Arq 6 is /Library/Application Support/ArqAgent. Even though I recently started new Arq backups, and they contain only a small fraction of my files, that folder already contains a cache.noindex folder that’s 11 GB. (Due to its file permissions, that folder is no longer accessible in Finder, so I had to inspect it via Terminal and sudo.)

Because .noindex only applies to Spotlight, Time Machine is wasting time, energy, and space backing up these files. To exclude them from Time Machine, they’d have to be in a .nobackup folder or otherwise marked.

I suppose there’s a reason that some people might want to back up the Arq cache. It could be slow or expensive to redownload the cached data if you do need to restore from a backup. But I decided to add a manual exclusion in the Time Machine preferences.

Sidenote: I’m now using Arq 6.2.11, which seems to work well except that unmounting an unrelated drive still causes other in-progress backups to abort.


Faster Face ID Failing With a Mask

Juli Clover:

In the iOS 13.5 beta, released this morning, Apple has streamlined the speed with which the passcode pops up when a person wearing a mask is detected, making it easier to get into an iPhone with a passcode when Face ID fails.

Speedier access to the passcode interface is noticeable when you swipe upwards on the Home screen when unlocking the iPhone , as this action now immediately brings up the passcode interface if your face is covered by a mask.

John Gruber (tweet):

iOS 13.5 is clearly going to make this better by just skipping right to the passphrase screen, but it turns out you can jump to that screen immediately in the current version of iOS just by tapping the “Face ID” text label in the center of the screen. I had no idea this text acted like a button, and never would have guessed that it did. If only there were some way that on-screen elements that act like buttons could be made to look like buttons…

Willi Kampmann:

Even if that invisible button looked like an actual button, it still wouldn’t be obvious because why would you tap the “FaceID” button to cancel FaceID and go straight to codeID


Update (2020-05-19): Javier Soto:

iOS 13.5 is shipping with an improvement for FaceID with masks (showing the passcode prompt right away), but they still have the same bug where if you start typing it right away, it misses the first key press 🤦‍♂️

It’s the same “iOS calculator can’t do math” bug all over again.


NSProgress Documentation Conflicts

Curtis Herbert:

Wait...what? The new NSProgress stuff on NSOperationQueue says you have to call super.start() to contribute towards progress, but Foundation docs for NSOperation say to never call super.start() O.o


The progress property represents a total progress of the operations executed in the queue. By default NSOperationQueue does not report progress until the totalUnitCount of the progress is set. When the totalUnitCount property of the progress is set the queue then opts into participating in progress reporting. When enabled, each operation will contribute 1 unit of completion to the overall progress of the queue for operations that are finished by the end of main (operations that override start and do not invoke super will not contribute to progress).

NSOperation documentation:

At no time in your start method should you ever call super. When you define a concurrent operation, you take it upon yourself to provide the same behavior that the default start method provides, which includes starting the task and generating the appropriate KVO notifications.

Matej Bukovinski:

Let’s just replace a NSProgress helper with built-in API. Easy. A day later we’re still trying to figure out if we even know how this API is supposed to be used. Spoiler: The header is right. As usual. Never rely just on the generated docs.


-isIndeterminate returns YES when the value of the totalUnitCount or completedUnitCount property is less than zero. Zero values for both of those properties indicates that there turned out to not be any work to do after all; -isIndeterminate returns NO and -fractionCompleted returns 1.0 in that case.

NSProgress documentation:

Progress is indeterminate when the value of both totalUnitCount and completedUnitCount are zero.


Update (2020-05-06): Peter Steinberger:

UIKit folks, there’s a radar from 2017 about wrongly documented NSProgress API.

Update (2020-05-19): Noah Gilmore:

Oh man, this just reminded me of a nasty customer-facing issue we fixed with NSProgress. Turns out that if you set completedUnitCount too many times on a background thread, app’s memory grows uncontrollably and eventually hits the memory limit 😨

NetNewsWire Code Layout

Brent Simmons:

The benefits of components and being careful with dependencies are clear — but why use actual frameworks? After all, a conceptual module doesn’t have to translate to an actual separate library target.

I’ve found that it’s easier, when using a framework, to ensure for a fact that you don’t let an unwanted dependency to slip in. It’s kind of like treat-warnings-as-errors — it makes sure you’re not getting sloppy with dependencies.

The App Coalition

The App Coalition:

The App Coalition is the first organization devoted to developing forward-looking policies to protect consumers in line with their increasing reliance on apps and to ensuring that consumers have unfettered access to the content of their choosing on their devices through those apps. Additionally, the Coalition seeks to educate stakeholders about the app economy to ensure a fair market in line with both consumer laws and consumer expectations.

Naomi Nix and Ben Brody (via 9to5Mac):

The App Coalition’s main trade group competition is ACT-The App Association, which weighs in on policy issues affecting developers, but also counts Apple and Microsoft Corp. as sponsors, according to its website.


Among the other policy issues the group plans to focus on are privacy and content moderation. Gregory Guice, also of McGuireWoods Consulting, said the group would advocate against unnecessary intrusion by platform companies into apps to moderate content. He added that the App Coalition also plans to support laws that would spell out exactly what kind of data can be collected from users and how it can be used.


Although the group said it isn’t focused on competition issues initially, it said its long-term focus is on creating “a market free from control by artificial barriers, such as those created by gatekeepers.”