Archive for April 1, 2018

Sunday, April 1, 2018 [Tweets] [Favorites]

Xcode 9.3

Apple:

Developers can use a new 64-bit testing mode in macOS 10.13.4 to test software for 64-bit compatibility.

[…]

Xcode 9.3 adds a new IDEWorkspaceChecks.plist file to a workspace’s shared data, to store the state of necessary workspace checks. Committing this file to source control will prevent unnecessary rerunning of those checks for each user opening the workspace.

[…]

Projects created in Xcode 9.3 use a new project format that is incompatible with earlier versions of Xcode. To open projects in earlier versions, change the project format by selecting the project in the Project navigator, opening the Document inspector, and selecting the desired format from the Project Format pop-up menu.

It’s working about the same as previous versions of Xcode 9 for me. That is to say, not a horror show, but the same old bugs such as warnings not disappearing after building and builds sometimes failing unless I manually clean the folder.

I haven’t tried the new build system yet. How reliable are people finding it?

Jamie Halmick:

If you’re a developer and haven’t been using the betas you should be aware that building for iOS 11.3 requires Xcode 9.3 which requires macOS 10.13 High Sierra.

Gianluca Bertani:

Xcode 9.2 won’t debug on an iOS 11.3 device, and Xcode 9.3 won’t install on macOS Sierra. Here we are again: I’m forced to upgrade macOS agains my will, to be able to do my job.

Vineet Choudhary:

From Xcode9.3, text anti-aliasing can be disabled in the source editor by running the following command:

defaults write com.apple.dt.Xcode SourceEditorDisableAntialiasing -bool YES

Previously: iOS 11.3, macOS 10.13.3, Disabling Xcode 9 Font Smoothing, An Xcode Plug-in for Unsmoothed Text.

Swift 4.1

Ted Kremenek:

Swift 4.1 adds more generics features to the language, furthering the goals set out in the Swift Generics Manifesto. The following generics-related proposals have been implemented in this release:

[…]

These are additional Swift Evolution proposals that were implemented in this release:

This was a fun update because it was easy to update my code, and I was able to delete lots of boilerplate related to Equatable and IndexDistance. Synthesized Equatable and Hashable conformance makes the code much more concise and potentially more reliable. It still has some room for improvement, though: there’s no way to omit fields without implementing the methods yourself, and the internal function for combining hash values is not exposed as API.

See also: Replacing flatMap With compactMap.

Previously: Swift 4: Synthesizing Equatable and Hashable Conformance, Swift 4.1 Conditional Conformance Is Amazing, Code Size Optimization Mode in Swift 4.1.

Update (2018-04-03): Ben Cohen:

Hashing needed some more work before this could happen, but @lorentey has been working on a proposal to turn the hashing improvements he landed in 4.2 into a proposal for a public API.

See also: Accidentally Quadratic Rust Hash Tables.

Update (2018-04-12): Joe Groff (tweet):

The core team discussed this proposal in our meeting today. There are still a couple days left in the review period, but we’re tentatively inclined to accept this proposal, but wanted to suggest some changes based on public review discussion and our own review[…]

Cutting “Old Heads” at IBM

Peter Gosselin and Ariana Tobin (Hacker News):

The company reacted with a strategy that, in the words of one confidential planning document, would “correct seniority mix.” It slashed IBM’s U.S. workforce by as much as three-quarters from its 1980s peak, replacing a substantial share with younger, less-experienced and lower-paid workers and sending many positions overseas. ProPublica estimates that in the past five years alone, IBM has eliminated more than 20,000 American employees ages 40 and over, about 60 percent of its estimated total U.S. job cuts during those years.

[…]

The company’s pre-2014 layoff documents required employees receiving severance to waive all bias claims based on “race, national origin, ancestry, color, creed, religion, sex, sexual orientation, pregnancy, marital status, age … disability, medical condition, or veteran status.” The new documents deleted “age” from the waiver list. In fact, they specifically said employees were not waiving their right when it came to age and could pursue age discrimination cases against the company.

But, the new documents added, employees had to waive the right to take their age cases to court. Instead, they had to pursue them through private arbitration. What’s more, they had to keep them confidential and pursue them alone. They couldn’t join with other workers to make a case.

With the new documents in place, IBM was no longer asking laid-off workers to sign away their right to complain about age bias so, the company’s lawyers told the EEOC, the disclosure requirement in the 1990 amendments to the age act no longer applied.

[…]

IBM has also embraced another practice that leads workers, especially older ones, to quit on what appears to be a voluntary basis. It substantially reversed its pioneering support for telecommuting, telling people who’ve been working from home for years to begin reporting to certain, often distant, offices.

MyFitnessPal Data Breach

MyFitnessPal:

On March 25, 2018, we became aware that during February of this year an unauthorized party acquired data associated with MyFitnessPal user accounts.

[…]

The affected information included usernames, email addresses, and hashed passwords - the majority with the hashing function called bcrypt used to secure passwords.

So, apparently none of the app-specific data.

John Gruber:

It’s a little scary that this went undetected for a month. Makes me wonder how many of these data breaches are never noticed.

Update (2018-04-03): Dave Teare:

Many companies hide from the truth and make things much worse for themselves and their customers. Instead, MyFitnessPal did it right. Not only did they handle the disclosure with finesse, they also had excellent systems in place to limit the exposure of the leak.

MyFitnessPal provides a great case study on how to handle a data breach and protect customer information.

[…]

For those looking to learn more about the MyFitnessPal breach, Troy Hunt started his Weekly Update 80 with a full discussion on the subject that I found very intriguing, especially the strategy on how to migrate from a SHA-1 hash to using bcrypt.

Why Doesn’t Apple Music Let Users Search for Composers?

Kirk McElhearn:

You see some composers listed as “artists,” you see their names in the titles of albums (for a number of years, many if not most classical albums that feature music from a single composer have that composer’s name at the beginning of the title), you may see playlists with a composer’s music, you even see “songs,” but you cannot see all the music by a composer.

[…]

This lack of searchability borders on contempt. Apple Music wants you to be able to “discover” music, but they don’t give you the tools to search for anything. You can only really discover music in the For You section, or in playlists. And it’s not just for classical music; I’d like to have better search for jazz as well, looking for specific musicians.

Apple has the metadata; they just don’t let customers access it.

This sort of thing is why it annoys me whenever Apple talks about music being in its DNA.

Fred Showker:

Go to Google advanced search, and search for Composer in the phrase field, and put itunes.apple.com in the ‘at site’ field.

Update (2018-04-02): Nick Heer:

Even something as basic as the year of release cannot be searched even amongst local tracks on iOS, and I find that completely absurd. I would love nothing more than to see a modernized version of the column browser better tailored for Apple Music’s vast library.

Update (2018-04-12): Nick Heer:

After I linked to Kirk McElhearn’s piece about Apple Music’s limited search capabilities, Erin “Syd” Sidney pointed me to a three-year-old post he wrote about the lack of detailed creator information available on the platform[…]