Last Week on My Mac: Updates, updates

The Apple calendar has come to include two relative fixtures: WWDC in early June, and the month of upgrades in September. We’re now in the short breathing space between last week’s iOS/watchOS/tvOS upgrades, and next week’s macOS upgrade.

iOS 11 was not the most stellar of upgrades, on my iPhone 6 or iPad Pro, but went smoothly. As it came in, so many old 32-bit apps went out, which is always a sad moment. What was most irritating at the time was that iOS 11 was happy to tell me which apps would now no longer work, but left me to delete them manually. That’s the sort of stupidity which arises in an operating system which is locked down and doesn’t support scripting, and made me appreciate how fortunate we are with macOS – at least for the moment.

More serious flaws in iOS 11 are its backward steps with respect to accessibility, particularly for those with vestibular disorders. A lot of its interface uses animations and effects which can induce nausea in the quite substantial proportion of the population who suffer from motion-induced symptoms. Apple had previously been coaxed and coached into providing switches to minimise or eliminate those, which have helped a lot of iPhone and iPad users cope better with their interface. iOS 11 seems worse than ever, with inadequate controls.

This is a simple issue to rectify: all Apple has to do is write into its interface principles that all animation and motion effects shall be capable of being disabled, and that control shall be given to the user, and the same too for macOS.

Apple also made a serious gaffe in releasing iTunes 12.7 with iOS 11, as the new version of iTunes doesn’t deal with the iTunes App Store or ringtones any more.

For those not upgrading to High Sierra next week, this means that their only way to purchase and update apps (and ringtones) is on their iOS devices. If you have an iPhone and a couple of iPads, that means downloading everything separately for each device. If you’re a family with more devices still, this gets really silly.

iTunes needed pruning though. With the successive addition of more and more stores, it has become as ungainly as a pregnant camel. High Sierra brings an elegant solution, in the form of Content Caching, which has been unbundled from macOS Server and incorporated into macOS. This should make it easy for a single device to update its apps, and leave them cached on a Mac ‘server’ ready for the next iOS device.

The problem with this solution is that it is another incompatibility between iOS devices, iTunes 12.7, and Sierra, which doesn’t offer Content Caching. To benefit from Content Caching, you’re going to need High Sierra on the Mac server, and the new App Store on your iOS devices. Only then does upgrading to iTunes 12.7 make sense. Not that Apple warned us of this, of course.

So if you’ve upgraded to iOS 11 and iTunes 12.7 but don’t intend upgrading to High Sierra just yet, you may want to think about downgrading to an earlier version of iTunes to regain access to the iTunes App Store. Provided that the Store and iOS 11 still work properly with that version.

Mistakes such as these are understandable when they occur in products from a mixture of different vendors, but for Apple there is simply no excuse.

Along with all its OSes, Apple has released a major upgrade to its development environment, Xcode 9. In complete contrast, this is proving to be one of the best upgrades since Xcode’s introduction fourteen years ago, although it is still not suitable for anyone migrating from scripting languages such as AppleScript.

Xcode 9 brings with it another important upgrade, of the Swift programming language to version 4.0. It would seem that well-written Swift 3.1 code is proving straightforward to port to this new version, even though the description of its changes is somewhat opaque.

I confess to a major philosophical and theoretical block with one of the new features of Swift 4.0: the concept of the Substring as a structure separate from String. A String is an array of characters, as is a Substring. However, a Substring is also a slice of a String. I can see the storage efficiency which can result in using Substrings wisely, but cannot help but think that Ralph Griswold, who designed and developed the string processing language SNOBOL, must be wondering what the world is coming to.

But Swift 4.0 seems to work well all the same.