Apple

APFS considered harmful...


…or at least “not ready for prime time”.

It seems I wasn’t quite correct in my assessment of why my MacBook was sluggish. Full-disk encryption was indeed having a visible effect on performance, but even after turning it back off, I’ve still been seeing some pretty awful performance… after a few days of uptime.

There are two primary symptoms, both connected to filesystem performance: first, Time Machine backups take progressively longer each time (no matter how much data is being backed up), until it starts reporting that a typical 300MB backup will take more than an hour; and second, image-heavy web sites start loading very slowly, with JPEGs showing up ‘blocky’ while they’re rendering. If I don’t reboot when I detect these two issues (usually after about four days of uptime), then I’ll start having difficulty mounting and unmounting external devices and network volumes, and Disk Utility will show a SPoD. I’ve had to disable automatic backups, because I can’t put it to sleep until they finish (Time Machine will cheerfully corrupt your backup history if you disconnect from the file server while it’s running).

My recent vacation makes it difficult to be sure, since I turned the MacBook off after every use, instead of my usual “leave it up until it crashes”, but I think this is specific to the OS 10.14.4 release.

With all the problems they’re having with hardware and software, it seems the old cliché about “there’s no I in TEAM” could be rewritten as “there’s no QA in APPLE”.

Related, when I do reboot, the first thing I do is open top in a Terminal window and wait a minute or two until the load drops from ~50 to under 5; then I kick off a backup and start working.

Update

After a lot more testing, it seems that APFS is only responsible for about a third of the slowdown. The rest is coming from the TCP stack. Rebooting is still the only fix; I’ve tried switching between wired and wireless, changing out the USB-C ethernet adapter (I have like five brands of them, between home and office), manually resetting the interfaces, etc, etc.

If I work completely offline, local I/O still slows down over a few days, but if I’m online, network I/O gets worse faster. Still a problem after the 10.14.5 update, and I’m thinking it’s specific to the 12-inch MacBook hardware, since I don’t see it at all on the 15-inch MacBook Pro that’s usually on the other side of the kitchen table.

Filevault, unvaulted


Even though I ended up having to work while in Japan, I didn’t pack my work laptop, a 15-inch MacBook Pro with all kinds of corporate IP goodness on it. I just took my little 12-inch MacBook, with all kinds of personal goodness on it. So I backed it up three times, encrypted the SSD with Filevault, and took along an encrypted backup drive that I stored in a separate bag.

In theory, between modern CPUs and modern SSDs, the penalty for full-disk encryption should be pretty small. This is sadly untrue for the 12-inch MacBook, even with a Core i7; I could cope with the N% I/O slowdown, but it rippled through the system, causing other things to either slow down or get a touch flaky. The most visible culprit was kernel_task chewing up a lot of CPU, which generally indicates thermal throttling, but the temperature sensors reported all-is-well, so I’m guessing something about Filevault was setting it off. APFS was also getting really sluggish after a few days, requiring reboots.

Now that I’m safely home and more or less caught up on life, I made three backups and turned Filevault off. Currently the system’s grinding away rebuilding the Spotlight indexes (cache-like stuff is skipped in the encryption/decryption process), and kernel_task is nowhere in sight.

Dear Apple,


Will you ever figure out how to sync data between devices?

Seriously, how long have you been shipping the Reminders app now, which is, I note, one of the single most useful features of your watches, now in their fourth generation?

You know, the one that constantly gets out of sync if you own more than one device, like, say, a Mac, an iPhone, and an iPad?

That’s right, the one where the only reliable fix is to open the Calendar app on each device and manually refresh your list of Calendars.

Hell, you could buy 2/3 of the third-party sync solutions in the world out of petty cash, and your entire iCloud platform would benefit.

Another day, another iPhone


Got the call that my new new new phone arrived at the Monterey Apple Store on Friday afternoon, and since I had no interest in fighting traffic, I went over first thing Saturday morning to pick it up.

Yes, I made sure to test for the presence of wireless antennas before leaving the store this time, and was pleasantly surprised that this one had up-to-date firmware on it as well. I let it charge all day before restoring my backup to it just after midnight.

Why? Because after it’s all done, I have to erase and re-pair the watch, which wipes out the day’s activity and exercise, and it won’t re-sync music until it’s hooked up to the charger. So, as soon as 9,000+ songs finish syncing to the phone, I can pair the watch, plug them both in to charge overnight, and go to bed. Then spend the morning re-authorizing apps to use the fingerprint reader, refresh cached data, re-download in-app purchases, re-assign ringtones and alarm songs, erase all but three of the auto-synced watch apps, etc, etc.

Special thanks to Neal for the iPhone 7 loaner that was actually useful, unlike the Apple Store loaner.

Bonus: the Del Rey Oaks Safeway has a fully-stocked Boar’s Head deli. It’d be nice if the ones near my house upgraded, but this is closer than Morgan Hill, unless I’m coming from my office.

Dear Apple,


With all due respect, “data detectors” are bullshit.

When I type “1​/2-pound roast beef” into a shopping list, I am most definitely not planning a meeting on January 2nd at noon. Particularly not the January 2nd that was nearly three months ago.

Seriously, if you had a QA department, would you know what to do with it?

Dear Apple,


Okay, so in the process of replacing the battery in my phone, you broke it. Not entirely surprising given the low repairability of your hardware designs, but that’s what backups are for, and you did replace it with a new one and gave it a 90-day warranty.

Okay, so it took over eight hours to restore all my data to the new one, and I had to spend another half-hour resetting and restoring my watch.

Okay, so the new phone won’t stay connected to a wireless base station that’s more than about ten feet away. Or to the watch at similar distances. In fact, it only sometimes sees two of the dozen wireless networks that my iPad can see, and frequently fails to connect with random error messages (“incorrect password” that is suddenly correct two minutes later).

Wait, that’s not okay. In fact, that kinda sucks, because now I have to drive 40 minutes back to your store, twiddle my thumbs waiting for my appointment, and then most likely spend another eight hours restoring to a new new phone.

Can you forgive me for wondering if this isn’t a subtle plan to sell me an upgrade?

Day of Rage Update

The genius quickly agreed that the new phone was a complete lemon, and went to replace it. And came back with a 16GB iPhone 6 loaner, because they didn’t have another replacement in stock, and this triggered their system to demand that it be sent off for repair, which will take 3-5 days (and almost certainly result in returning Yet Another New Phone).

The replacement is useful only as a phone, which means it’s basically useless. A co-worker has offered the loan of his old iPhone 7, which at least has enough space for my stuff. I’ll probably spend tomorrow restoring all my data to it, but won’t bother restoring in-app purchases, etc, since I’ll have to do it all again next week.

New iPad Mini!


“Up to 3x faster than the old one.” If I weren’t planning to spend all my money in Japan next month, I’d even consider buying one.

Meanwhile, I’m off to the Apple Store today to get a new battery in my iPhone 6 Plus, because $49 < $700++.

Update

…and thanks to a fumble-fingered Apple tech, I get to spend the rest of the day watching data restore onto a brand-new iPhone 6 Plus, an unnecessarily complicated way of changing the battery. Once it finishes upgrading iOS to a version compatible with my backup, that is.

As a bonus, I had to wipe and re-pair the watch. Fortunately the only local data lost was how much I walked around the mall while waiting for them to break my phone.

Restored!

…and that’s eight hours of my life I don’t get back. Thanks, unnamed Apple technician.

For the record, the only app on my phone that lost data was MyNoise, which doesn’t save your favorites in a way that gets backed up. Special bonus, the sharing button crashes the current version of the app, so I couldn’t even send them back from my iPad. Other apps lost local caches and forgot about previous in-app purchases, but that just contributed to the 8+ hours spent restoring data and seeing what didn’t work any more.

Apple's closed ecosystem...


Part of my vacation planning is building up map bookmarks to share with my sister, so we can go off on separate adventures and easily meet up later. I have a bunch of old Google Earth/Maps bookmarks from previous trips and planning. I also have a bunch of Apple Maps bookmarks from recent planning. (why? Because Google no longer supports the standalone Google Earth app, and wants you to run it in Chrome, which logs you into your Google account so they can track you across the Internet)

Google lets you export any number of saved places to an XML file. Apple lets you share one bookmark at a time to specific applications, but only as a URL pointing to maps.apple.com. For more fun, on a Mac your bookmarks are stored as an opaque binary blob in ~/Library/Containers/com.apple.Maps/Data/Library/Maps/GeoBookmarks.plist, along with a cached copy of their data about the location. You can reorder this list inside the desktop Maps app, but that order will not be respected on iOS.

Extracting 35 bookmarks meant creating 35 notes in a supported app, then copy-pasting them into a text file and extracting the “q” (name) and “ll” (lat/lon) fields.

Seriously, Apple?

Update

For future reference, to convert KML to straightforward CSV using togeojson and jq:

togeojson $kmlfile  | jq -r '
	.features[]|select(.geometry.type == "Point")
	| select(.properties.name)
	| [([.geometry.coordinates[1],.geometry.coordinates[0]]
		| join(",")),.properties.name,.properties.description]
	| @csv'

Update

So, you can get your Apple Maps bookmarks as a CSV file, but only by using Apple’s privacy page to request a copy of all data Apple has on you, and waiting about 5 days for them to package it up.

“Need a clue, take a clue,
 got a clue, leave a clue”