Archive for May 20, 2022

Friday, May 20, 2022

Restoring Contacts From a Time Machine Backup

Miles Wolbe:

Open then “Enter Time Machine” from menu bar icon to restore (H/T). Note that the “Browse Other Backup Disks…” option accessed by Option-clicking the Time Machine menu bar icon really means “Browse Other Backup Disks for the current device”.

This didn’t work for me. It just showed an empty Contacts window, and none of the Time Machine buttons responded, so I had to force quit. Fortunately, he lists 4 other methods. It seems like to really do it right you need to erase all the contacts in iCloud first:

No consideration is given here to iCloud Contacts sync (though thermo2’s 20-step procedure is reproduced below without prejudice). Back up, back up, back up and understand what you are doing.

Disk Utility Can Only Check Backup Disks in Recovery

Howard Oakley:

The most serious problem with Disk Utility remains its manifest inability to run First Aid on some volumes and containers, in particular Time Machine backup stores. This problem persists, although currently it now seems confined to APFS backup volumes.


If you need to run First Aid on an APFS Time Machine backup disk, the only methods available are to use Disk Utility or apfs_fsck in Recovery Mode. This is a serious failure, particularly as the message given to users is to “back up the data on this volume”, which is wholly inappropriate for a backup volume, and gives the false impression that failure is imminent.


Less serious, but more confusing, is a sporadic bug which displays bizarre results after a disk has been erased, or partitioned into two or more containers.

I run into this last issue a lot. Sometimes partitioning fails for no apparent reason. Other times, Disk Utility says it succeeded but displays a completely different partition structure than what it had been asked to create.


New Receipt Validation Sample Code

Apple (via Thomas Zoechling):

The following example code illustrates how to retrieve an identifier in macOS for validating an App Store receipt. Use the data returned to by the copy_mac_address function to validate the App Store receipt.

In the following Swift code, the io_service function uses IOKit to retrieve network interfaces as an optional IOKit object. The copy_mac_address function looks up an appropriate network interface and returns the hardware address from the IOKit object as optional CFData.

Apple’s sample code for this had been broken at least since Catalina. I still think there should just be an API for validating and parsing receipts, instead of encouraging developers to either reinvent the wheel or incorporate open source code of questionable quality.


Update (2022-06-08): macOS 13 adds AppTransaction.

Update (2022-06-10): John Siracusa:

Still no simple Apple API to validate Mac App Store receipts, though, right?

Rosyna Keller:

No. And I’m not sire there will be on as it’s a semi-antithesis of DRM checking: have your check in multiple places that can’t be stubbed out by one change to the binary especially if it would apply to every binary.

John Siracusa:

I just don’t want to have to statically link OpenSSL into my dinky app and then copy/paste a bunch of code I don’t understand. I’m not trying to stop someone with a hex editor. I’m trying to stop casual piracy.

Rosyna Keller:

This new API is for making feature selections betterer based on date purchased without needing to roll a new app entry on the App Store for the new version.

Weathergraph 1.0.97

I recently started using Weathergraph. I’ve been happy with Snowflake Weather on my iPhone, but less so on my Apple Watch. Weathergraph has a great watch app and complication, and it’s even better with the new icon theme and precipitation probability display that were added in the 1.0.96 update. For some reason—maybe the location-based updates—it does not seem to be subject to the watchOS 8.5 bug that prevents my other complications from updating automatically. And, unlike Apple’s complication, it can show the last cached forecast when there’s no network connection.

The basic design feels like an evolution of Weather Line and Weather Strip, but I think Weathergraph shows the information better. The display is very configurable, so I can choose to show wind speed but not wind direction, humidity but not the dew point, and the UV index but not the atmospheric pressure. Unfortunately, the rain percentage is shown as a light blue area with no scale or label, so it’s not clear what the percentage is except in relative terms. I like how you can choose the zoom level and how it can be different for the phone, the watch app, and the watch complication.

The main drawback is that it only supports a single location, which cannot be set manually, so you can’t use it to plan travel. So right now I’m using Weathergraph in combination with Snowflake.

Weathergraph Pro—which includes Foreca, Dark Sky, and realtime forecasts—is $3.99/month, $19.99/year, or $49.99 for a lifetime license. Below are some screenshots comparing it with other weather apps that I have installed.


weathergraph-iphone-1 weathergraph-iphone-2 weathergraph-watch-complication weathergraph-watch-app-1 weathergraph-watch-app-2


apple-iphone apple-watch-complication apple-watch-app-1 apple-watch-app-2 apple-watch-app-3

Snowflake Weather

snowflake-iphone snowflake-watch-complication snowflake-watch-app-1 snowflake-watch-app-2

Weather Strip


CARROT Weather

carrot-iphone carrot-watch-complication carrot-watch-app