Archive for February 16, 2016

Tuesday, February 16, 2016

Swift Evolution Proposals

SE-0024: Optional Value Setter ??=:

In certain cases the ?? operation doesn't help with lengthly variable names, i.e., really.long.lvalue[expression] = really.long.lvalue[expression] ?? "". In addition to this other languages such as Ruby contain a pipe operator really.long.lvalue[expression] ||= "" which works the same way and which is very popular. This lowers the barrier of entry for programmers from that language.

SE-0030: Property Behaviors:

There are property implementation patterns that come up repeatedly. Rather than hardcode a fixed set of patterns into the compiler, we should provide a general “property behavior” mechanism to allow these patterns to be defined as libraries.

SE-0031: Adjusting inout Declarations for Type Decoration:

The inout keyword indicates copy-in/copy-out argument behavior. In its current implementation the keyword prepends argument names. We propose to move the inout keyword to the right side of the colon to decorate the type instead of the parameter label.

All of these are currently under review. Property behaviors look very useful.

Update (2016-02-17): SE-0035: Limiting inout capture to @noescape contexts:

I propose we make it so that implicitly capturing an inout parameter into a escapable closure is an error. We added the explicit @noescape annotation in Swift 1.2, and have since adopted it throughout the standard library where appropriate, so the compromise has outlived its usefulness and become a source of confusion.

Previously: Seven Swift Snares.

Update (2016-02-23): Erica Sadun:

The Swift team has rejected three Swift proposals.

More Mac App Store Certificate Problems

Keith Gugliotto:

Beginning February 14th, many of our users who purchased from the Mac App Store have experienced an issue where the application crashes while opening. What we know, so far, is this is another certificate issue on Apple’s end, preventing applications from properly validating a Mac App Store receipt.

[…]

The official word from Apple is that, in general, restarting the Mac in question should resolve the issue. In addition, for OS X El Capitan users, Apple says updating to OS X 10.11.2 or later is required, and OS X Snow Leopard users should be sure the Mac App Store Update for OS X Snow Leopard is installed. While what we have here is technically similar to what happened last November, it’s not quite the same and, being on Apple’s end, not something we could’ve prepared for. We’re grateful for your patience and understanding!

We’re not seeing the issue in-house, but we’ve learned a restart does not resolve the issue – reinstalling the application itself does.

Jeff Johnson:

On 2 different machines, I had to delete the apps entirely and re-download them from MAS in order to get them to work. Quality.

Russell Ivanovic:

Some of my Mac apps won’t open today. I know why, and I know a re-install fixes it…but…sigh. Mac App Store: It Just Works*

Jason Simms:

Yet another Mac App Store delight: today, several apps stopped opening (some say "verifying", some do nothing). Fixed by redownloading.

Peter Cohen:

This CF is still biting me, months later

Rich Trouton:

Mac admins who have previously downloaded installers from the Mac App Store may be seeing some of those installers displaying warning messages and/or failing to install as of this morning.

[…]

In the case of applications where the needed version is no longer available from the MAS, or the application itself is no longer available, there are two ways to handle this issue[…]

Unlike in November, I have not seen these problems on my Macs.

Previously: WWDR Intermediate Certificate Expiration, No One Minding the Store.

Update (2016-02-16): Gregg Keizer:

Apple’s support document […] added a caveat about OS X apps. “Users running OS X El Capitan (v10.11 or v10.11.1) may receive a notification that your Mac app is damaged if it utilizes receipt validation to request a new receipt from Apple,” the document said. “They can resolve this issue by restarting their Mac or updating to OS X El Capitan (v10.11.2) or later.”

Computerworld staffers running the latest El Capitan beta—OS X 10.11.4—encountered dead apps early Tuesday, including Byword, a text editor; the Fantastical 2 calendar; and Clear Day, a weather app. Some apps threw out a request for the Apple ID password used to access the Mac App Store—in some cases only a fleeting dialog box—but other apps just would not launch.

Restarting the Mac did not help.

Rob Griffiths:

We’re paying 30% for the privilege of explaining to Apple’s App Store customers why their purchased apps don’t work.

Rich Siegel:

If you have a product in the Mac App Store, be advised that the MAS had a certificate expiration over the weekend. Brace for impact.

Paul Hagstrom:

Yep. That was my guess—several MAS apps just started silently failing to launch. Reinstall fixes it, but... grr.

James Knight:

ah is that why none of my apps work :(

Bad Uncle Leo:

Yup, tried to do an El Cap re-install last night, “damaged Install” & can’t re-install

Steve Steiner:

I would like to have thought they’d have this worked out after the last debacle but I would have been a fool to have done so.

Update (2016-02-17): The certificate problems seem to also be affecting FoldingText.

Wade Cosgrove:

As a developer this is absolutely unacceptable and as a user it’s even worse (silent launch failure)!

Phil Schiller (via Cédric Luthi):

Developers were notified in advance and support was set up to help (always can do better)

This seems to miss the points that users were not notified, that we’ve heard reports of support not being familiar with the issue, and that Apple’s recommended remedy doesn’t always work.

Wade Cosgrove:

This tech note does not reflect my experience. I am running 10.11.3 and experienced the issue after cold boot on Monday.

As far as I know customers have never received anything from Apple explaining these failures or how to resolve them.

Rich Siegel:

This is hard to do 140ch at a time. :-) But alas “we warned you” doesn’t take the edge off the customer’s pain…

…and time & time again, customers come to us angry about something we couldn’t possibly have dealt with in advance.

Daniel Jalkut:

FWIW I believe Apple has prepared admirably for this but the specific issue Wade called out seems out of developer hands.

Ashkan Farhadtouski:

Delete and reinstall is not a solution. If purchased directly this wouldn’t have been a problem.

Mike Ash:

The problem was clearly announced, in the bottom of a drawer in a disused lavatory with a sign saying Beware of the Leopard.

It was working for me for several days after February 14, but starting this evening ReadKit will not launch for me. It reports (silently, in Console): “Failed to check receipt signature: No valid signer”. Neither of Apple’s two pieces of advice—that the OS will tell me the app is damaged and that I should restart—worked, but deleting and reinstalling did.

Update (2016-02-18): Adam Knight:

YAY! Another day that none of my Mac App Store programs will open. Thanks, Apple.

My understanding is that the developer’s only responsibility was to make sure that their receipt validation code works with the new certificate. In cases where users are having problems, the apps don’t seem to be getting to that point. Receipt validation is (correctly) failing because of receipts signed with the expired certificate. The store is then supposed to download a new receipt signed with the new certificate. This is not happening. [Update (2016-02-20): See these comments. I now think that the app’s receipt validation is incorrectly failing and that the system is (incorrectly) not downloading a new receipt.]

Update (2016-02-19): David Foltz:

@gte I know it’s not your fault. But Napkin failed to launch today. Had to reinstall. Is this @mjtsai’s fault? ;)

Update (2016-02-20): Apple has significantly added to its page about the certificate expiration:

In some scenarios, an app purchased from the Mac App Store that utilizes receipt validation may fail to launch (exiting with a 173 error code) since it considers a local receipt that includes the expired WWDR Intermediate certificate invalid. OS X regards the receipt as valid when the updated WWDR Intermediate is present on your system and therefore does not request an updated receipt for the application.

To resolve this issue, delete the renewed, non-expired WWDR Intermediate certificate from your System and/or Login keychain within the Keychain Access application. After re-launching the application, you will be prompted for your Mac App Store login credentials in order to obtain a new receipt for the application. After you have launched your application and obtained a valid receipt, you can re-install the renewed certificate to continue your development. This issue will be fixed in a forthcoming update to OS X El Capitan.

Update (2016-02-22): Wolf Rentzsch:

my list of Mac App Store Apps had to delete+reinstall due to Valentine’s Day Cert Massacre: BusyCal, Divvy, Fruit Juice, FoldingText, Shush

personal toll would have been higher but every chance I get I move my apps from Mac App Store to Direct. Don’t care if need to re-purchase

How to Fix the Safari t.co Twitter Problem

Glenn Fleishman:

But for years, some Twitter users in OS X have had a problem with t.co in Safari. Instead of redirecting, the link results in an endlessly loading page that times out. Reloading the page results in a non-existent domain. Reload again, and the destination URL finally loads.

[…]

An Apple engineer who works on the WebKit team—the technology underneath Safari—recently tweeted in response to well-known Mac developer Rich Siegel and developer and podcaster John Siracusa that the problem has been identified, and a fix is underway. So relief is coming.

You can work around it by flushing the DNS cache or by telling Tweetbot to open the URLs directly.

Previously: Low-Hanging Fruit, Mac OS X 10.11.2.

AppleWorks and the Capriciousness of Nostalgia

Christopher Phin:

And if it wasn’t for AppleWorks smoothing the way between Mac OS 9 and Mac OS X—as a high-profile example of an app that could run on both thanks to Apple’s Carbon libraries—then I suspect that a good many people like me would have clung onto the classic Mac OS for many more months and years. As it was, because Apple released a free update to AppleWorks (originally for Mac OS 8.1) which meant that the same app could run in both 9 and X, on those occasions where you booted into OS X to marvel at all the shiny, lickable buttons, you could actually also choose to get some work done. Launch AppleWorks under OS X and not only could you open the same documents as you created under Mac OS 9, but because you were literally using the same app, both the formatting of your documents and the interface of the application remained unchanged. In other words, you had one fewer excuses to dismiss OS X as a toy and reboot back into the familiarity and power of OS 9.

[…]

My beloved Douglas Adams once wrote a set of three rules describing our reaction to technologies, and though not intended as such, they act as a perfect summary of why some bits of tech tickle our sense of nostalgia and some don’t. “Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works. Anything that’s invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it. Anything invented after you’re thirty-five is against the natural order of things.”

See also: my AppleWorks 6 review.