[MUSIC PLAYING]
TIMOTHY JORDAN: Let's start with a quick view
of what's happened recently with the Google Developer platform,
also known as the TLDR.
User identity has gotten a lot easier
with the latest release of Google Play Services.
We've revamped sign-in to make implementations simpler
and provide users a more streamlined experience.
Other updates, TouchSmart Lock APIs, the Fused Location
Provider, and App Invites.
Magnus is on the show today to tell us more.
MAGNUS HYTTSTEN: [NON ENGLISH SPEECH]
TIMOTHY JORDAN: [NON ENGLISH SPEECH]
More than 19,000 organizations are now testing or using
Android for Work, which makes it easier and safer
for employees to use their own Android devices for work.
Important bug and crash fixes are
in place with the latest release of the Android Support Library,
available now.
Find success with your app or game business with Google Play.
This is the goal behind a new playlist
of videos from our annual developer event, Playtime 2015.
The Android Dev Summit is just around the corner.
If you can't make it in person, remember
to tune into the live stream November 23 and 24.
Also, the Chrome Dev Summit has wrapped.
And if you weren't able to make it in person, that's OK.
All the sessions are available online.
Splash screens for web apps launched from the home screen
on Android, and script execution deferring
are two big things launching with Chrome 47 on December 1.
Pete is on the show today to tell us
what we need to pay the most attention to for that launch.
PETE LEPAGE: [NON ENGLISH SPEECH]
TIMOTHY JORDAN: [NON ENGLISH SPEECH]
MAGNUS HYTTSTEN: [NON ENGLISH SPEECH]
TIMOTHY JORDAN: Compound bindings, as well as
affective children and distributed node observers,
are the two significant features included in the latest
release of Polymer.
The Google Maps API meetups and hackathons
will continue with the Europe version of Code the Road.
You can sign up today to find out
what's possible with the Google Maps API.
Follow the link to this and everything
mentioned in the TLDR in the description below.
I'm Timothy Jordan, and this is the developer show.
You've probably been wondering what runtime permissions
on Android M mean for you.
Well, here's Reto to explain it all in a segment we call,
who's doing what now?
MALE SPEAKER: I heard Android 6 is out.
It's mostly what, just kind of bunch of bug fixes?
MALE SPEAKER: Wait, are you calling doze mode and runtime
permissions a couple of bug fixes?
MALE SPEAKER: Uh.
I don't know, yes?
MALE SPEAKER: It's going to be freakin huge.
MALE SPEAKER: Wait, wait, wait, so hold on.
Who's doing what now?
RETO MEIER: Don't let that happen to you.
I'm Reto Meier, and this is Who's Doing What Now?
[MUSIC PLAYING]
MALE SPEAKER: What is that about?
RETO MEIER: Until now, apps have had to ask permission
for every device feature that they
may need to use before you've even installed it.
MALE SPEAKER: Hey Reto.
Before we can interact, I'd just like you to sign a few things
that I may want to do.
So I'd like to take your picture.
I'd also like to know your exact location, your recent calls,
and of course, all of your friends,
and their contact information.
So if you could just--
RETO MEIER: Hard pass.
This sort of approach made a lot of sense
back when each app served one specific purpose.
A camera app that wants to take your photo.
A concierge app that wants to know where you are,
or a replacement dialer that needs
to know your contacts and your most recent calls.
These days, apps have found all sorts of innovative ways
to take advantage of many of the sensitive features and sensors
on a device.
And users want to decide which features to take advantage of,
and what information they're willing to share.
When you target Android 6, API level 23,
you need to check every time you perform an operation that
requires user permission, as users can revoke permission
at any time.
If you don't have permission yet,
you can request it, optionally showing a rational
explaining why you need it.
This will ask the user for permission,
which they can accept or deny.
And you can see the results in this callback.
Of course, it's good practice to fail gracefully
if permission is not granted, and to only ask
of missions you really need.
Users potentially denying dynamic runtime permissions--
that's who's doing what now.
[MUSIC PLAYING]
TIMOTHY JORDAN: Google Play Services 8.3
is out in the wild.
And on the show today to tell us all about it is Magnus.
MAGNUS HYTTSTEN: Hey.
TIMOTHY JORDAN: It's OK.
I asked Magnus to use his indoor voice on the show today.
And there's no launcher.
It's dangerous in the studio.
But you know what, we can talk about Google Play Services.
In fact, let me just count them.
There's four people in the audience that
haven't seen your videos yet.
So if you could just, in a nutshell,
what are Google Play Services?
MAGNUS HYTTSTEN: Of course.
Google Play Services is about 21 APIs that
sits over the Android platform.
So it contains things like Google Map, Google Drive,
Google Fit, and the Vision API for example.
And it's completely disconnected from the Android releases.
So we can actually push Google Play services out
to the external developer audience five or six
times per year.
So that means we can create a lot of information,
and get that available to developers very, very quickly.
TIMOTHY JORDAN: Awesome.
Now in 8.3, what's the one thing that people
should pay attention to?
MAGNUS HYTTSTEN: So the one thing in 8.3
specifically is the sign-in API.
So the sign in API has been completely refactored in 8.3.
Whereas previously, it was tightly connected
to the Google API client, it has now
been broken out and refactored into a separate API.
And that means that you can connect new APIs
and you can change the scope's without having to reconnect
the entire Google API client.
That's managed completely separately in the Google
sign-in API instead.
So that's a great new feature.
It allows developers to write code which is a lot cleaner
and easier to read.
TIMOTHY JORDAN: Great.
Google Play Services 8.3
Earlier today, I tracked down the tech lead of TensorFlow
to get some more details about machine learning, TensorFlow,
and how you can use it in your apps.
So I managed to track down Rajat.
He is on the Google Brain team.
And he's the TL for TensorFlow Rajat, hello.
RAJAT MONGA: Hi.
TIMOTHY JORDAN: OK.
So TensorFlow is an open source toolkit for machine learning.
Now I'm hoping that you can give us a little bit more insight
for our developers out there about machine learning
and why TensorFlow is so cool.
So let's start with machine learning.
Give us, kind of in a nutshell, for app developers--
not for researchers or academics,
but for app developers-- what is machine learning?
RAJAT MONGA: So if you think about how you might teach
a two-year-old what different things are-- let's
say cats and dogs-- you would show them pictures of cats,
and you would show them pictures of dogs,
and tell them what each is.
And then over time, they'll learn to recognize those
automatically.
Well, you can do the same thing with computers as well.
And that's really what machine learning helps with.
So for example, you could have a million images,
and take those and sort of-- some of dogs, some of cats,
some of cows, and so on.
And once you train a model with that,
the computer can learn to recognize
what is cat, what is dog.
If you're showed it new images, they'll
be able to tell what it is.
So images is one area.
But you can really use that to make all kinds of applications
smarter, to help them automatically pick up
the things that the user wants, before the user having
to specify exactly what.
It's used in many, many different products
that you're probably used to.
For example, the one I like to talk about the most
is Google Photos.
If you go--
TIMOTHY JORDAN: So cool.
RAJAT MONGA: It is.
TIMOTHY JORDAN: Show me photos of a bike.
And that's all my bike photos, or whatever it is.
RAJAT MONGA: Exactly.
And this is the technology being used there.
TIMOTHY JORDAN: What's the workflow from,
say, like idea to it's in an app.
RAJAT MONGA: So if you think about researchers,
what they like to do is, they have new ideas that they
want to try out, maybe on their data set and build a new model.
And what TensorFlow allows them to do
is it's really flexible for them to build their model
and specify it exactly as they like, and train it.
And then once they're done with that,
the app developer can take the trained model,
use the same library, same API, and deploy it
on servers, in the data center, or in that application
on the mobile phone.
We aim to release real working models
for a lot of those, where we provide the model
specification that somebody could
use to train on their data set.
And in some cases, actually pre-trained
on data sets that are available, for example
for images, that can really be used by the developers.
TIMOTHY JORDAN: Thank you for taking time out today.
And of course, thank you for working on TensorFlow.
And that's a closer look at TensorFlow.
Please, check it out and tell us how you use it in your app.
Hey Pete, Chrome 47.
What are the two biggest things we need to pay attention to?
PETE LEPAGE: Well, there's always new stuff with Chrome.
The two biggest ones that I'm most excited about
are splash screens and request idle callback.
MAGNUS HYTTSTEN: Wow, that's a mouthful
PETE LEPAGE: Yeah, tell me about it.
Some of these API names are--
TIMOTHY JORDAN: A lot of letters in those identifiers.
PETE LEPAGE: Exactly.
Splash screens for apps that users have added to their home
screen provide a new, dynamically generated splash
screen when they're launched.
In the past, if you launched an app from the home screen, you
just--
TIMOTHY JORDAN: You've got the app loading
and it loads the web page after that.
And it's just--
PETE LEPAGE: And all the user saw
while all that stuff was happening was a white screen.
It was boring.
It didn't look like an installed app or anything like that.
Well now Chrome will automatically,
dynamically generate those splash screens
using the manifest file.
It looks for three things.
It looks for the app name, it looks for a background color,
and it looks for a set of icons.
Now, the icons get a little bit tricky
because, it's looking for, ideally,
a 128 device pixel icon.
TIMOTHY JORDAN: Device pixels--
PETE LEPAGE: Device pixel, us web developers don't
do device pixels all that well.
So what you need to know, the easiest way to do it,
is take the 128, make sure you've got a 128 times 1.5
to give you the 1.5x devices, times 2,
so 256 CSS pixels for the 2x devices, times 3, and times 4.
And that will pretty much cover all your devices.
And then, voila, you've got a splash screen.
TIMOTHY JORDAN: Great, so splash screen.
What's the next one?
PETE LEPAGE: Request idle call back essentially lets
you say, hey, I've got JavaScript
that I need to run when the system is in idle.
If you are running JavaScript while the user is doing
something-- if they're scrolling,
or while something else is going on, you're going to get jank.
Request idle call back is run when the device is not
doing anything.
So it's a really easy way to say, hey, this is not
the most important JavaScript.
Let's go run this when we've got some time.
TIMOTHY JORDAN: Very cool.
Chrome 47.
PETE LEPAGE: Chrome 47.
TIMOTHY JORDAN: Thanks Pete.
PETE LEPAGE: Out soon.
Thanks.
TIMOTHY JORDAN: We're nearly at the end of our show for today.
But I have one final question for the panel.
Pete, what happens when you break the build?
PETE LEPAGE: I've never broken the build.
Web fundamentals has always been perfect.
TIMOTHY JORDAN: Magnus, what happens
when you break the build?
MAGNUS HYTTSTEN: When I break the build,
I go like this-- I broke the build!
And then I work like crazy.
TIMOTHY JORDAN: Well, Dan Galpin broke the build this week.
And this is what happened when he tried to fix it.
[MUSIC PLAYING]
And that was Tuesday.
Hey, you know what?
I can't get everyone here on the show,
but I can ambush them at their desk.
Have a question about a Google platform,
or anything really, let me know in the comments,
and I'll track them down with my selfie stick.
Thanks for joining us here on the developer show.
I'm Timothy Jordan, and I'll see you next week.
[MUSIC PLAYING]