Archive for January 16, 2018

Tuesday, January 16, 2018

Swift String ABI, Performance, and Ergonomics

Michael Ilseman:

String’s ABI consists of its in-memory layout, any methods that are public or callable from inlineable methods, and any interpretation of its bit pattern by inlineable methods. The challenge in designing String’s ABI is determining what avenues are worth keeping open to pursue in the future and what should be closed off for good to ensure performance.


We’re planning on two major efforts to improve performance this release: comparison improvements and small-string optimizations. Additionally, internal to the standard library, we’re introducing and using unmanaged strings and some performance flags, which may be worth surfacing as API for highly-performance-sensitive uses.


Ergonomics is an area that’s not been well-served by String. Collection conformance and multi-line literals in Swift 4 were a welcome first step. But, trying to write a script, solve a classic whiteboard interview question, or participate in a coding competition can quickly become an exercise in frustration.

Previously: Swift 4 String Manifesto, Swift ABI Stability Dashboard.

The Final Conf-Down

Chris Adamson:

I think it’s interesting to note that there’s been an obvious, substantial contraction in the conference scene.


The obvious explanation is that after 10 years, iOS is old news, that most people who want to work with it are already doing so, and there’s less travel/training money available. This makes sense, to a point, although if that’s the case, then how can the No Fluff Just Stuff tour be doing 17 events this year, hawking old warhorses like Java and Spring?

Still, the idea that iOS is old and unsexy can be seen in the fact that nearly every new conference focuses on Swift, even putting it in their name: dotSwift, try! Swift, Forward Swift, Swift by Northwest, Swift Summit, etc. Good for marketing, although as a speaker, I find it somewhat limiting: I don’t feel like I could do a talk on, say, debugging with Instruments or Auto Layout in storyboards, since those wouldn’t really be about Swift.


Today, WWDC is nearly impossible to get into, and all its videos are quickly made available to non-attendees (lately, most or all of them have been livestreamed). So if you’re just interested in getting Official Info from Cupertino, just standing in front of that firehose is all that’s necessary.

Update (2018-01-17): Marco Arment.

Ten years ago, you had to go to conferences to hear most prominent people in our industry speak in their own voice, or to get more content than an occasional blog post. Today, anyone who could headline a conference probably has a podcast or YouTube channel with hours of their thoughts and ideas available to anyone, anywhere in the world, anytime, for free.

But all of that media can’t really replace the socializing, networking, and simply fun that happened as part of (or sometimes despite) the conference formula.

I don’t know how to fix conferences, but the first place I’d start on that whiteboard is by getting rid of all of the talks, then trying to find different ways to bring people together — and far more of them than before.

Update (2018-01-18): Jeff Johnson:

You can’t really eliminate formal talks at conferences, because then it becomes a lot more difficult to justify the expense to employers.

Manton Reece:

It can’t be overstated how important it is to meet people face to face in our community.

Update (2018-01-27): Adam C. Engst:

There’s no shortage of Apple-focused conferences for professionals to gather with peers. We have once again collected details — or at least dates — for all the Apple-related conferences we can find; if we’ve missed any, let us know in the comments.

iPad Erased By Too Many Failed Passcode Entries

Josh Centers:

Alas, I know this problem all too well because I have a tech-addled toddler who likes to use the iPad Lock screen as a drum, so he disables his iPad regularly. And before you ask, no, this feature is not related to the Erase Data feature in Settings > Touch ID & Passcode that erases the data on your iOS device after 10 incorrect passcode entries. This is a built-in security feature that cannot be disabled.

How many incorrect passcode entries it takes before the iPad locks is up for debate. Apple’s support document says six. In my testing, that isn’t true. It took only five tries with random passcodes to disable my iPad for 1 minute.


Once you kick off the process, it works like this: the device is disabled for 1 minute. There is no way to bypass it being disabled — you just have to sit in time out like a naughty child. Once that time is up, you get one chance to get the passcode correct or your device is disabled for 5 minutes. Get it wrong again and it’s disabled for 15 minutes! The next failure disables it for another 15 minutes. After that, 1 hour. Get it wrong one more time, and you won’t be able to get in directly on the device ever again. Your only solution at that point is to erase all content and settings and restore from backup.


Worse, this feature can render a device completely useless and potentially cause a user to lose data, if the device wasn’t set to back up or its backups were failing for some reason. I’ve never seen a non-optional security feature that could brick a consumer-level device even if an authorized user could later authenticate themselves.

Update (2018-04-07): Dave DeLong:

Working myself up to write a righteously angry blog post about how pathetically terrible the parental controls on iOS are.

This time it’s that f***ing “finish setting up your iPad” nag that tells them to set a passcode.

They set a passcode. They forget the passcode. They enter a wrong one. I now have to DFU the stupid thing and spend an hour bringing it back to life.

Meanwhile, all app data is lost

Google Memory Loss

Tim Bray:

I think Google has stopped indexing the older parts of the Web. I think I can prove it. Google’s competition is doing better.


My mental model of the Web is as a permanent, long-lived store of humanity’s intellectual heritage. For this to be useful, it needs to be indexed, just like a library. Google apparently doesn’t share that view.

It’s hard to know whether something like this is just a temporary glitch. It doesn’t make sense to me that Google would want to skip some pages just because they’re old.

I have actually had a lot more trouble whenever I try Bing or DuckDuckGo. Some pages they don’t seem to be able to find at all, and others are in the list of matches but don’t have the relevance ranking I would expect.

Update (2018-01-18): Jonathan Poritsky:

I had a few little tricks to discover aging content back then, including using Google’s date range search tool. Trying to use the same tool again this week brings up precious few useful results. From the outside looking in, it feels as though Google is discarding the early web. Which is strange given the company’s supposed raison d’être of organizing the world’s content.

Apple Health Data Used in Murder Trial

BBC (via Hacker News):

Data suggesting the suspect was climbing stairs could correlate to him dragging his victim down a riverbank and climbing back up, police said.


The suspect - identified by a hair found at the scene of the crime - refused to provide police with the PIN code to his phone so investigating officers turned to an unnamed cyber-forensics firm in Munich, which broke into the device.

Previously: Amazon Echo Privacy.