Archive for July 7, 2016

Thursday, July 7, 2016

Protecting Your Network From Photos Uploads

Adam C. Engst (May 2015):

My Internet connection runs at 30 Mbps down and 5 Mbps up, and when I turned on iCloud Photo Library for the first time, Photos completely destroyed Internet performance for every device in the house: Web pages loaded slowly, Google Hangouts struggled, Netflix buffered repeatedly, Rdio stuttered, and even Dark Sky on the iPhone timed out getting climate data. I had to promise to pause syncing whenever Tristan needed to do homework (which is whenever he’s home, it seems), and it was clearly something that couldn’t run during our work days.

I recently enabled iCloud Photo Library for a small library in our household, and it did more than reduce the Internet performance. It made all our Macs and devices stop working. Web pages immediately showed errors. Mail and Dropbox wouldn’t sync at all. Apple TV couldn’t play anything. Wi-Fi calling didn’t work. This is with a pretty fast cable connection. Oh, and quitting Photos doesn’t provide relief because uploads continue via a helper process.

Every other network-intensive app that I use—Arq, CrashPlan, Dropbox, etc.—includes a bandwidth limiter. (Apps that upload seem to cause more problems than ones that download.) Photos has no throttle, just an off switch, which doesn’t really help because neither of its settings does what I want. Let it run, and no other app on any device can realistically access the Internet. Turn it off, and the photos never upload. It boggles the mind that the app was released this way and not fixed in the 15 months since (or, seemingly, in Sierra).

The standard advice is to install the Network Link Conditioner and use it to limit the bandwidth available to your Mac. To do this, you need to be a registered developer. Then you can download the “Hardware IO Tools for Xcode 7.3” and double-click the Network Link Conditioner.prefPane.

Note that if your Mac’s login account is a Standard rather than Admin user, you will not be able to click the button to enable Network Link Conditioner after installing it. System Preferences will beachball forever. However, because it affects the entire Mac, you can enable it from an Admin account and it will still limit the bandwidth of Photos running in another account. Even once it’s installed and enabled, Network Link Conditioner won’t work if you boot the Mac and log into a Standard account. You have to first log into an Admin account in order for it to load properly.

The problem with using Network Link Conditioner is that the network will also be slowed down for every other process on the Mac. Also, Photos may still monopolize the throttled connection and prevent other apps from doing anything. To fix this you would need to use a more involved method to limit the bandwidth for a particular process (via Rosyna Keller). I have not tried this, but it looks like that process would be cloudd and that it handles more than just Photos syncing, so this would still be an imperfect solution.

Previously: iCloud Photo Library: the Missing FAQ, More Problems With iCloud Photo Library Uploads.

And, speaking of Photos, Glenn Fleishman:

Yup, that’s right: hidden photos appear in plain sight in albums and the main view in Photos. Media marked hidden disappears only from Moments, Collections, and Years. If you use iCloud Photo Library, the same is true, because the photos or videos you’ve hidden need to sync among your devices so that they are in the same state on all of them.

Update (2016-07-08): Garrett Murray:

Had the same problem when Photos first came out. Took 3 weeks of night-only NLC uploading on my Mac to finish initial sync.

When “No Longer Available” Strikes in iCloud Music Library

Kirk McElhearn:

But things get complicated when music that you have added to your iCloud Music Library from Apple Music is pulled. Labels can withdraw the right to stream certain songs and albums at any time, but you won’t be notified. You may see albums and songs in your library, but their titles are a slightly lighter color (depending on the view), and their iCloud status is No Longer Available.


In most cases, this is little more than an annoyance. But there are certain situations where this availability is an iCloud Music Library problem. Look at the screenshot below: it’s my iTunes library in Albums view. You’ll see that there are two instances of Chicago’s At Carnegie Hall. This is because the first one I added to my library suddenly became No Longer Available. When I searched for the album, I found it and added it to my library, and the only difference is the addition of (Live) after its title. Somehow, the record label tweaked the name of the album, and it was considered to be a totally different album.

He also has a bunch of “No Longer Available” tracks with missing metadata.

Update (2016-07-23): Christopher Thielen (via e-mail):

With macOS Sierra’s “Optimize Storage” removing previously watched iTunes purchases, what do you think would happen if the movie is no longer available for download?

The iTunes Terms and Conditions recommends users create a backup but even a Time Machine backup would lose the file should it be off the main computer (“optimized”) long enough.

Android Flash Keyboard Hijacks Lock Screen, Violates Privacy

SecurityWeek News (via @SwiftOnSecurity):

A third-party keyboard application for Android that had over 50 million installs was found to collect user data and send it to a remote server, Pentest Limited researchers reveal.


Right from the start, however, Flash Keyboard raises a red flag, given that it asks for a great deal of permissions that it isn’t supposed to have. It can run at startup, can read and write home settings and shortcuts, can use network and Bluetooth as it likes, can modify system settings, disable the lock screen, force-stop other applications, and read the status of phone, user ID, and more. […] Moreover, Flash Keyboard uses device admin APIs that allow it to replace the standard Android lock screen with its own custom lock screen, which is monetized by displaying custom ads.


The researchers discovered that the application was communicating with servers in several countries, including the United States, the Netherlands, and China, and that it sent the following information to them: device manufacturer and model number, IMEI, Android version, user email address, Wi-Fi SSID, Wi-Fi MAC, mobile network, GPS co-ordinates, information about nearby Bluetooth devices, and details of any proxies used by the device.

Concurrent Core Data, Now Easier Than Ever

Arkadiusz Holko:

Our main thread-bounded operations use viewContext. Background work can be performed on a context returned by the factory method newBackgroundContext(). However, usage of performBackgroundTask(_:) is recommended because of the under-the-hood optimizations.

All contexts are independent of each other, there are no parent/child relationships here. To receive changes from other contexts we simply set automaticallyMergesChangesFromParent flag to true on a context. Despite its name (*FromParent*), it works correctly with the NSPersistentContainer setup in which contexts are siblings:

Not sure I understand that last bit.

Update (2016-07-07): James O’Leary says that, despite the name of the property, it treats the persistent store itself as an implicit parent context.