Archive for June 29, 2018

Friday, June 29, 2018 [Tweets] [Favorites]

Rebuilding Apple Maps Using Apple’s Own Data

Mark Gurman (in 2015, tweet):

The current plan is to revamp the foundation of the Maps application, shifting to the in-house base map database by 2017; this would lead to the cutting of ties with partners such as TomTom, which currently have multi-year Maps contracts. While Apple hopes to achieve the 2017 shift, a source says that Apple is not completely on track to meet this goal, so a 2018 launch may be more likely.

Matthew Panzarino (tweet, Hacker News, MacRumors, iMore):

It’s doing this by using first-party data gathered by iPhones with a privacy-first methodology and its own fleet of cars packed with sensors and cameras. The new product will launch in San Francisco and the Bay Area with the next iOS 12 Beta and will cover Northern California by fall.

[…]

This is nothing less than a full re-set of Maps and it’s been 4 years in the making, which is when Apple began to develop its new data gathering systems. Eventually, Apple will no longer rely on third-party data to provide the basis for its maps, which has been one of its major pitfalls from the beginning.

[…]

The consistent message is that the team feels it can deliver a high quality navigation, location and mapping product without the directly personal data used by other platforms.

“We specifically don’t collect data, even from point A to point B,” notes Cue. “We collect data — when we do it — in an anonymous fashion, in subsections of the whole, so we couldn’t even say that there is a person that went from point A to point B.

[…]

All of this, of course, is governed by whether you opted into location services and can be toggled off using the maps location toggle in the Privacy section of settings.

Apple says that this will have a near zero effect on battery life or data usage, because you’re already using the ‘maps’ features when any probe data is shared and it’s a fraction of what power is being drawn by those activities.

This sounds good, but I’m skeptical that Apple’s focus on privacy is not putting it at a disadvantage. It does not seem possible that the end points of a trip are not useful data. It’s also not clear to me how this benefits the user who is already having their location tracked by Apple (Find My iPhone) and the carriers, anyway. And if Apple Maps is not good enough for people to choose it, they’ll use Google Maps and give Google their data, so Apple’s principled stance would be for naught.

Mark Gurman:

Should be noted that it’s been 6 years since the bungled launch of Apple Maps and they’re launching the new version in half of one state.

Matthew Panzarino:

Maps is not getting a visual “overhaul” yet (it was implied that it will eventually) but you’ll notice differences immediately.

[…]

Can I opt out?

Yes. It will not happen if you do not turn on location services, and it can be toggled off in the Privacy settings for Maps. It’s not a new setting, it’s just the existing maps setting.

From what I can see, the existing Maps setting only lets you control the sending of probe data by turning off Location Services entirely, rendering the app mostly useless. So, practically speaking, you can’t opt out, and you can’t measure how much of your cellular data is being consumed to update Apple’s maps. [Update (2018-06-29): This is incorrect; see below.]

Update (2018-06-29): John Gruber:

The new maps sound great, but the big question how long will it take to roll them out everywhere.

See also: @agilethumbs.

Update (2018-07-02): See also: The Talk Show.

Twitter to Show Ad Payment Information

Selina Wang (via Hacker News):

Twitter Inc. said it will show detailed information about advertisers on the social-media service, addressing concerns from lawmakers that the company let foreign meddlers run rampant during the U.S. presidential election.

Starting on Thursday, anyone will be able to search for a Twitter account and see all the ads it has run in the past seven days. For U.S. political advertisers, users will be able to see billing information, ad spending, demographic targeting data and the number of times tweets have been viewed. Twitter had been planning to create this “transparency center” since last October. Facebook Inc. has introduced similar features.

Exploring @dynamicMemberLookup

Olivier Halligon:

This proposal had some controversy, and one thing I didn’t personally like on this new feature is that it meant that typed annotated with @dynamicMemberLookup would not, by design, show any potential compilation error. Which is understandable, as the whole need for that proposal was to be able to call properties which we didn’t know at compile-time.

But this also meant that once the type was annotated with @dynamicMemberLookup, you wouldn’t be able to choose at call-site if you wanted an expression to allow dynamic member lookup or wanted the expression on that type to be type-checked.

[…]

The solution is actually quite short to implement. We’ll create a ^ postfix operator that will wrap the instance it’s applied on into some proxy object that is the one being @dynamicMemberLookup. That proxy object will just wrap the dictionary we applied ^ on, and on dynamic lookup, will search the key in the dictionary to return the corresponding value (if it exists).

[…]

In the playground attached below, I’ve explored that idea a bit more, by allowing another syntax. This one looks more like creating a context or scope in which everything we call is dynamically looked up (instead of looking like chaining ^ calls)

Ole Begemann (tweet):

Here are some non-obvious things you can do with @dynamicMemberLookup:

  • Provide a setter in addition to the getter. This allows assignments through dynamic member lookup, or passing the subscript expression inout. For an example, check out Doug Gregor’s wrapper for reading and writing environment variables.

  • Choose any return type. The subscript must have a single parameter, which can be any type that conforms to ExpressibleByStringLiteral but will likely be a String 99 % of the time. The return type, though, can be anything you want, including generic parameters.

  • Provide multiple overloads of the subscript with different return types. If there are multiple dynamic member subscripts, the compiler will pick the best match according to its normal type inference rules, or emit an error if the choice is ambiguous.

Here are some things you can’t do:

  • “Hide” a declared member of a type. Declared properties always take precedence in the type checker over dynamic member lookup.

  • Retroactively support dynamic member lookup for a type you don’t control. The attribute only works on the original type declaration.

Chris Lattner:

Nice summary, including a good descriptions of potential caveats. One thing that I haven’t explained yet is that the constexpr work can grow to support static diagnosis of bad members - the member names are constants after all!

Previously: Swift 4.2.

Update (2018-07-18): Jonathan Wight:

Found a great using for Swift 4.2’s @dynamicMemberLookup doing Python “records” (ala @kennethreitz ) style sqlite binding[…]

Everything You Knew About Chromebooks Is Wrong

Mike Elgan:

Today, the best new Chromebooks can runs apps from three additional operating systems.

Not only do Chromebooks run apps, but they run more apps without dual- or multi-booting than any other computing platform. Chromebooks can run apps from Android, Linux and Windows concurrently in the same session.

[…]

Now that Chromebooks are getting far better and easier for running Linux, Google is explicitly promoting Chromebooks as a development platform.

[…]

A huge number of major cloud services, especially Google ones such as Docs and Gmail, offer easy offline modes. The Chrome Web Store is packed with free extensions that give you offline capability.

[…]

Yes, some low-end Chromebooks are very cheap. But the powerful new generation is more comparable to a normal laptop.