JENNY MURPHY: Hi everyone Welcome to this week’s session of the Google+ Platform Office Hours This week we’re going to be talking about the new release of the Hangouts APIs, version– which number? WILL THOMPSON and JOHN BERRY: 1.1 JENNY MURPHY: 1.1 It adds a lot of cool new functionality And we have some engineers from the team joining us And a bunch of people from the community, so we should have a nice, fun discussion So before we dive into stuff, let’s tell you a little bit about ourselves I’m Jenny Murphy I’m a developer programs engineer here at Google I focus mostly on the [? reft ?] APIs and the social plug-ins, like the +1 Button But I like hacking Hangout apps when I have the time And I’m joined here today by– MARTIN: Hi, I’m Martin I’m a software engineering intern at Google And I’m working on a Google+ 3 [? project. ?] JENNY MURPHY: Very cool And, if you remember, he’s actually been on the other end of these Hangouts pretty often So it’s great to have you in person JOHN BERRY: And hi, yes everybody, I’m John Berry I’m the develop advocate for Google+ working on Hangouts WILL THOMPSON: I’m Will Thompson I’m a developer programs engineer on Hangouts JENNY MURPHY: And then joining us over the Hangout from left to right, from my view, we have Alan ALAN FURTZENBURG: Hi there, I’m Alan Furtzenburg I’m an outside developer I mostly develop Hangout apps I’m most known for my caption app, and the app appearing in my upper left hand corner is the My Time Hangout app JENNY MURPHY: Now say hi to Gerwin GERWIN STURM: Yeah hi, I’m Gerwin from Austria I do lots of stuff with the Google APIs for fun, actually So probably my most well-known Hangout app is the Comment Tracker, but I’m doing lots of different stuff with WebGL And I just tried the face tracking thing, and just playing around really JENNY MURPHY: Cool, we’re actually using the Comment Tracker today, so JD? JD SALAZAR: Hey, I’m JD Salazar, and I’m a developer on the Hangouts API team JENNY MURPHY: Next, Moritz MORITZ TOLXDORFF: Hi, I’m Moritz from Germany, and I’m also playing around with the Hangouts API a lot And I think I’m most common for my two apps, I deal a lot with the Hangout Lower Third and the Hangout Volume Control apps JENNY MURPHY: And, last but not least, Richard RICHARD DUNN: And I’m Richard Dunn I’m the lead for the Hangouts API team JENNY MURPHY: Cool According to your lower third, you’re apparently Google RICHARD DUNN: You’re all of Google JENNY MURPHY: You’re all of Google JD SALAZAR: All in one, one for all, that’s what I say JENNY MURPHY: Cool So we were talking about the latest release of the Hangouts API Richard, would you like to give us a little overview of what’s been added in this release? RICHARD DUNN: Sure, yeah We added a bunch of stuff this time around The first thing we added was facial motion detection and getting the data where the face is So in the past we’ve had images that can track the face, and now we’re actually exposing that data so that any app can use it to display whatever they like Or use it to control a game or anything like that We also released a new way of broadcasting messages to instances of your app, which lets it go much faster Use it for things like sending mouse movements or tracking an object in a game, things like that We added static overlays So images that you can overlay over your video that don’t track a facial feature but are fixed on the screen And there’s obviously examples of that running in this Hangout The Lower Thirds app, which is fixing the names there And I believe Alan’s Time is probably using that as well And then we added a bunch of miscellaneous stuff You know, ways to figure out whether the Hangout is an on air Hangout, whether it’s a public Hangout And we did some changes actually based on developer feedback, which was allowing you to see the names of people that aren’t using the app I believe Moritz needed that for volume control, because you’d like to be able to identify whose volume you’re affecting I think that’s about it ALAN FURTZENBURG: This also has the first of the on-air features, correct? RICHARD DUNN: Yeah So we just started with whether the hangout is an on air Hangout, and whether it’s broadcasting And we obviously plan to add a bunch of stuff in that area soon JOHN BERRY: And there’s both the methods and as well as

events for that? RICHARD DUNN: Correct JENNY MURPHY: Very cool It’s a lot of neat stuff We’re really looking forward to seeing what people will do with some of these features I’m kind of excited about the face tracking, the data stream And there’s a lot of cool potential I’m waiting for someone to write a robotic camera that tracks faces I’ll do that If someone else does it, I’ll send you a t-shirt or something JOHN BERRY: Well, Will’s camera has got a pretty cool WebGL WILL THOMPSON: Yeah, the giant floating robot head Yeah, it’s actually in the video that we released when we released the version 1.1 Yeah, it’s just– we have a roll, pan, and tilt And I hook that up to a cube to kind of move it around And then, I made the mouth move up and down with volume Although, actually I want to go back and change that so it actually moves with the top and bottom lip endpoints, or attach points The other thing is, I was able to go zoom in and out And we’re able to do zoom in and out by basically using the scale between your eye and the tip of your nose That should stay constant the entire time If your nose is like moving out someplace it’s going to be bad That person’s going to have suboptimal performance GERWIN STURM: Yeah, I actually use the distance between the two eyes to measure the zoom So that’s what I use for that WILL THOMPSON: That’s how the Wii works too It sees those two points and zooms in and out And that’s how you know how far away the controller is from the thing Yeah, it works really well I would worry that if I was using– well, it’s probably the same either way– whether if you turn your head and zoom in and out, whether the two eyes close together or these two close together are going to be better or worse But anyway, it’s pretty neat I hope to release [INAUDIBLE] for that really soon [LAUGHTER] JOHN BERRY: You also did some cool things like you added weighting and [INTERPOSING VOICES] WILL THOMPSON: Yeah, I absolutely used smoothing I’ll show you the code as soon as I can It’s basically weight– I have a five frame smoothing, and I weight the most recent frame the highest but still use those other five frames It does mean that if you shake your head like this really fast it doesn’t move quite as much, but that’s OK as long as you’re not Richard Nixon or something JENNY MURPHY: I think the probability of Richard Nixon using your Hangout app is pretty low WILL THOMPSON: That would be pretty low You know, I should probably make a Richard Nixon robot head, too That would be [INTERPOSING VOICES] MORITZ TOLXDORFF: I was thinking about creating a head-controlled pong game [INAUDIBLE] by moving your head up and down or something WILL THOMPSON: Yeah One of the things that I would absolutely recommend is that you put a mustache or something on whoever the face is tracking right now Because one of the things I discovered during testing is it would lock on to somebody standing behind me And I would be like, God, it’s not working, what’s this? [LAUGHTER] WILL THOMPSON: Then I realized, oh wait it’s– JOHN BERRY: Another cool idea that I heard was like soccer, or using your head to bounce a ball back up and down, and then knocking it over to somebody else WILL THOMPSON: Head hacky sack JOHN BERRY: Yeah JENNY MURPHY: That would be pretty cool Cool So I see some questions are starting to pile up on the feed And this is primarily a question and answer show So if any of you out there would like to ask questions, go find the announcement post on the Google+ developers plus page And it should be pretty close to the top now, because it’s active And it’s also linked from the original post of this broadcast. And ask your question there and we will respond to it live at some point in this session WILL THOMPSON: I have some questions JENNY MURPHY: You do Will? WILL THOMPSON: I do I actually have questions that Alan asked on the newsgroup and I haven’t had a chance to respond to it yet I figured we could ask Richard and JD Here, I’m going to read from Alan So if we don’t set the scale for our bottom thirds, for our non-tracking overlays, what does the system assume? JD SALAZAR: I believe the default is width– the references width and a scale of one WILL THOMPSON: OK Also, I know there’s a method to get to display ratio Will the ratio change during the Hangout? JD SALAZAR: No, it shouldn’t WILL THOMPSON: OK MORITZ TOLXDORFF: I think there’s a slight small issue or mistake in the reference JD SALAZAR: OK Let me just find it WILL THOMPSON: Live document debugging right here JENNY MURPHY: Yeah We could to change it at the same time? [INTERPOSING VOICES] MORITZ TOLXDORFF: I can’t find it

JOHN BERRY: If you can actually send us that link WILL THOMPSON: Yeah, send us the link JOHN BERRY: We’ll be happy to update it WILL THOMPSON: OK And the last question is about resolution of the feed One of the things that’s interesting is how wide is the feed exactly, so that I can make ideally-sized overlays And I guess it would be interesting for you guys to address some of that JD SALAZAR: Sure So the problem with that is it’s camera-dependent So even more than that, it’s camera-dependent and what we detect with reference to your computer Like how much load there is and so forth And so you can’t really guarantee anything about the resolution I think we could look into giving some guidelines on approximate image sizes that we think might look good But I don’t think we’ll ever be able to tell you exactly what the resolution is so that you can optimize perfectly ALAN FURTZENBURG: And I think we can understand and appreciate that I think guidelines would really, really help Or at the very least, an API method that told us what the maximum resolution is, or something along those lines Because I know when I started playing with the static graphics, I pretty quickly figured out what the numbers were going to be that I usually ended up with And that gave me an idea for what maximum I should design for But even scaling down from that doesn’t always look good, and certainly if I needed to scale up to that, it’ll come out really badly JD SALAZAR: Right Yeah, I think that there’s definitely work we can do in both providing guidelines outside of the API to what looks good, and also trying to come up with ways in the API to give you feedback on what might look good in specific situations That’s definitely a to-do item for us, I think JOHN BERRY: And you know, we say this all the time, but since you’ve experimented, I’m sure other developers would love to hear about those ranges, and how you found those useful And we’d love to hear feedback in terms of what we could be recommending, too JENNY MURPHY: Great JOHN BERRY: So that was all the questions? WILL THOMPSON: Those are Alan’s questions? JENNY MURPHY: Unless you thought of any in the interim, Alan ALAN FURTZENBURG: Oh, I’ve thought of plenty in the interim And in fact, I know I emailed some of them last night while I was in the middle of trying to get the clock working The documentation indicates that the URLs for an image resource should be either HTTP, HTTPS, or a data URL I had trouble getting the HTTPS one working And one of the things I realized is that there’s no error called if it can’t load an image resource for whatever reason A, am I correct about the fact that HTTPS is not supported? And B, is there supposed to be some indication somewhere that it can’t load a resource? And I guess the follow up to C is, if either of those are no, what can be done to change this? JD SALAZAR: OK, so an HTTPS should work And if you’re experiencing problems, then– WILL THOMPSON: Well, one thing you can do is absolutely send us a piece of sample code that demonstrates the error And we can take a look at that, definitely I saw your email and was like, yeah that’s interesting Let me go try that And I haven’t had a chance to try it yet J.D. SALAZAR: B, you are correct that we do not currently provide any feedback as to whether the image was loaded or not, and we’re working on it That’s definitely high on the list of things that we want to add, I think JOHN BERRY: Just get better feedback, or specifically about the overlays? WILL THOMPSON: Just when a overlay fails to load JD SALAZAR: Yeah, I think in general for any image resources we’ll look into adding some type of event that tells you when it loaded and if it loaded MORITZ TOLXDORFF: In my case– I just posted the code in the chat I’m basically just doing the forward slash, and just leaving out the HTTP or HTTPS, so the Hangout [UNINTELLIGIBLE] whatever it should use But actually, it should use HTTPS, because the Hangout is running HTTPS as well And this is working fine without any error or something ALAN FURTZENBURG: I couldn’t get it to use a relative URL at all

[INTERPOSING VOICES] MORITZ TOLXDORFF: I had some issues when I was running my apps on my own server, but it has issues with a non-trusted certificate and stuff But since I run everything on AppSpot, it’s running perfectly fine JD SALAZAR: Yeah, that would be my I guess for you, Alan, is that it has something to do with the certificate that is being used The talk plug-in isn’t quite as accepting as Chrome is So you might be able to hit the URL in Chrome, but the talk plug-in might have issues with the certificate But we can look at that JOHN BERRY: Alan, I’m more talking about a protocol relative URL WILL THOMPSON: So instead of just a relative URL, it’s HTTPS And instead of saying HTTPS colon slash slash, whatever, you just leave off the first HTTPS colon slash And then whatever protocol you used to get there, it’ll use that one to get the next resource JOHN BERRY: You’ll see– ALAN FURTZENBURG: But in this case that would have failed Because it loads the rest of the resources securely, but it can’t load the image resources securely WILL THOMPSON: Well, in your case [UNINTELLIGIBLE PHRASE] JENNY MURPHY: Yeah, we’ll get to the bottom of it WILL THOMPSON: Yeah Send us some code and a link to the image that’s not working, and we’d be curious JENNY MURPHY: Cool So are there any other questions in the Hangout? MORITZ TOLXDORFF: Yeah What about adding animated GIF support? JENNY MURPHY: Animated GIFs as overlays? MORITZ TOLXDORFF: Yeah Right now you probably can load PNGs and JPEGs JOHN BERRY: And data URLs WILL THOMPSON: Well, data URLs may contain– [INTERPOSING VOICES] MORITZ TOLXDORFF: Yeah, and data URLs Sure An animated GIF would be quite cool I had some ideas with that JD SALAZAR: Yeah, I think that’s an option I think also just better support for animating image resources in general Such that you can have some guarantees about showing and hiding images will happen in the same frame, could help with that too It’s not the same An animated GIF is obviously an easier way to do it But I think both of those things are something we should work on MORITZ TOLXDORFF: And would it also be possible to add text or other elements to the UI without messing up the whole video pane? Like, just adding somewhere a button or text somewhere in the UI as an addition? JOHN BERRY: Can you give us an example? What kind of thing are you looking for? MORITZ TOLXDORFF: What was it? WILL THOMPSON: Where in the interface do you want to add this text? JENNY MURPHY: Yeah, can you give us the specifics? You know, a story, tell us the story about how you’d use it? MORITZ TOLXDORFF: For example, my volume control app, right? I have the mute Hangout button, and that if I want to place the button not inside the left extension pane, and I want to move it up where the microphone and video mute buttons are Something like that JOHN BERRY: So you want to influence the outer Chrome of the UI MORITZ TOLXDORFF: Right JENNY MURPHY: That would be really cool It’s a lot of potential there but– MORITZ TOLXDORFF: I mean, sure you can mess around a lot then, but if you do it right you can produce some awesome stuff WILL THOMPSON: Just put white boxes over everything [LAUGHTER] JENNY MURPHY: You can no longer exit [LAUGHTER] WILL THOMPSON: Yes, it’s the no exit JENNY MURPHY: [UNINTELLIGIBLE PHRASE] JOHN BERRY: Until the Hangout cuts out MORITZ TOLXDORFF: Yeah, that way you can actually create your own themes for Hangouts JENNY MURPHY: Cool JOHN BERRY: All right, so [UNINTELLIGIBLE]– ALAN FURTZENBURG: It has been a feature that a lot of people who were broadcasting without using Hangouts on air have been requesting JOHN BERRY: The Hangouts team in general is every day looking at how to improve the UI And we’ve gone through at least two major UI refreshes since we launched And the developer feature has to go hand in hand with the user experience, you know, the end user feature So that’s great feedback for thinking of the future There is no plan I know of today to add that, but something to look into JENNY MURPHY: Yep, cool ALAN FURTZENBURG: A broad question about resources and image resources There’s a note in the API guide that warns us that once images are allocated in the plug-in, they can’t deallocated How big of a problem is this really, and is there any work

being done on being able to free up those resources? JD SALAZAR: Yes, there is work being done And it’s probably not a problem unless you’re loading, like, hundreds or thousands of images WILL THOMPSON: I was going to say, I’ve definitely crashed the Hangout when I was loading images like crazy, but that was when I was loading them almost every frame [UNINTELLIGIBLE PHRASE] JOHN BERRY: I mean, certainly we can try it with 100 images on a MacBook Air and it works, for 100 overlays, and that’s not a problem So I can tell you that’s my benchmark [LAUGHTER] ALAN FURTZENBURG: OK The reason I ask is, I know Moritz and I had been talking about doing digital clocks And one of the questions was, well why don’t you just create a canvas, put the text on it, and replace the image from the canvas every minute or every second? And I’m like, well, because you’re allocating all these images and they’re never going to get freed up And there was– MORITZ TOLXDORFF: [UNINTELLIGIBLE] will crash ALAN FURTZENBURG: And there was some people who were surprised like, come on, you’ve got to be freeing up the image resources somewhere And I’m like, the documentation says they don’t get freed up JD SALAZAR: Yeah It’s definitely important for us to provide a way for you to free them up to do things like that But for now I would say, as a general guideline, if you’re in the low hundreds of images it’s probably, won’t have much of a problem WILL THOMPSON: Yeah, it depends on how big they are JOHN BERRY: And also– JD SALAZAR: Yeah, that’s true JOHN BERRY: I noticed, that also includes other overlays So the sound overlays also take up memory and do not get freed up So if you have a bunch of images and a bunch of sounds, you should be [UNINTELLIGIBLE] MORITZ TOLXDORFF: By the way, are the sounds broadcasted to all the participants, or only locally? I think only locally, right? J.D. SALAZAR: Yeah That’s correct WILL THOMPSON: Yeah And actually, if you play them through the plug-in, they are more likely to be noise-cancelled Which is a great use for if you want to alert somebody without alerting everybody, rather than using an HTML5 audio tag or something, you can just be like, bong, through the plug-in So if you’re making a game that takes turns or something like that It’s a very easy part JD SALAZAR: Yeah, that’s probably the best part about using the audio in the API is that you should get echo cancellation most of the time MORITZ TOLXDORFF: Are you planning on broadcasting sounds to our participants like you do with the overlay? JD SALAZAR: Yeah, that’s a heavily requested feature and something we’re looking at adding MORITZ TOLXDORFF: Cool And also, what I would like to see– I mean, with my volume control when I mute the Hangout, now I have the overlay to indicate that I muted the Hangout And it would also be cool if I get notifications on top of the Hangout, that I’m able to broadcast these notifications to all the participants Like, when I block someone it shows up on everybody’s Hangout [UNINTELLIGIBLE PHRASE] the people in the Hangout that I muted the Hangout for me WILL THOMPSON: Yeah, we only provide that the same way we did the [UNINTELLIGIBLE] avatar, which is that you [UNINTELLIGIBLE] state, and then have each of the individual apps post it themselves WILL THOMPSON: But yeah, that’s cool JENNY MURPHY: Agreed MORITZ TOLXDORFF: And another more general thing is a lot of people asking me how they can remove an app they installed Which is currently not possible Because when you try out a lot of apps, at some point you just think the app is not worth having it installed And you want to remove it There’s no way to do it You can revoke access, but this is not enough The app is still showing up in your Recent tab and whatever WILL THOMPSON: It can be incriminating, depending If you have poker in there and you’re working out or something JOHN BERRY: Unless you work for a video game company RICHARD DUNN: Yeah, we agree We definitely need a way to do that It’s in progress You can revoke the permissions for the app WILL THOMPSON: Yes You can go to Google.com/dashboard, and click on the revoke permissions RICHARD DUNN: I mean, they really have no permissions out If you don’t run them in the Hangout, they really have no permission to do anything I mean, they’re not running It’s not like they’re offline apps But yes, that will be coming soon JENNY MURPHY: Yeah, this is an artifact of the fact that, on the Hangouts, we’re moving really fast. So lots of cool stuff is coming out This is just one of those rough edges where we’ll clean it up Hang tight RICHARD DUNN: It’s a happy problem to have, that people have too many apps that they feel like they need to remove some JENNY MURPHY: Exactly JOHN BERRY: I mean, as I develop a lot, I have probably 40 that are just called Hangout app

So I’d love to get that feature RICHARD DUNN: So fill in your metadata people JENNY MURPHY: Yeah, especially you WILL THOMPSON: Yeah, I was going to say, I may actually be the person who has the most apps in their API console I think I win Yeah, and everybody who calls them Hangout gadget– I have this sea of Hangout gadgets JOHN BERRY: Cool, you want to jump to the comment screen? JENNY MURPHY: Sure So I’m going to be reading some questions from the comment stream So again, if you’re watching and you’d like to ask a question go to the Google+ developers page and you can ask there There’s an announcement post where you can post your questions, and we’ll find them and answer them So I’m going to start from the oldest questions first. And Joshua Owen asked, yesterday– way ahead of the curve– asked the question, is there any way through the [? dom ?] to identify the user’s filmstrip partitions on the bottom filmstrip? It would be great if we could drag and drop things from our Hangout app onto a person’s partition to initiate actions RICHARD DUNN: So, two answers to that One, yes, you do have their filmstrip position It’s in the participant object So you can use that And I don’t know if we’ll do anything as complicated as drag and drop, but we’ve definitely identified that people want a quick way to do some action that’s based on the user So we’ll be looking into ways that maybe we can either circle, click events on the film strip or something like that So that people can initiate an action on a particular user without having to reimplement that UI Like– ALAN FURTZENBURG: Well– no, sorry Finish first RICHARD DUNN: Like volume control, right? I mean, you have that list, but it might just be easier if it’s, like, click on a person, and then adjust their volume ALAN FURTZENBURG: I think related to that is also the question that I get a bit is, are you guys looking at being able to position the individual small thumbnails elsewhere on the screen, like we can position the large video stream anywhere on screen? RICHARD DUNN: Yeah, we’re definitely looking at that ALAN FURTZENBURG: OK awesome JOHN BERRY: And, you know, I’ve seen people experiment with the filmstrip position for example Because if you know how many persons you have, and you kind of know how wide each object is And you’re using the drag data from the JavaScript, you know you’ve exited the eye frame Right? So you can just assume, kind of, that they’re there JENNY MURPHY: So you can put little air hockey gates at the bottom of the screen? RICHARD DUNN: It’s definitely hack, though Because any minor tweak to the UI could screw that up JD SALAZAR: There’s also a problem where if you have an extension open, then you can’t actually get to some people on the filmstrip Right? It will obscure the people on the left, for example JENNY MURPHY: Right So if you do something like that, put a visual indication on the bottom of the screen, the approximate location, it will probably help a little bit But it would be a hack But it would work, probably.l RICHARD DUNN: We will definitely look into a way to have some way to select people via the filmstrip JENNY MURPHY: Cool OK, so moving on to the next question [UNINTELLIGIBLE] asked, I need a consistent unique ordering for all participants of a Hangout I thought display index would be suited for this, however, I periodically run into the situation where it seems multiple participants have the same display index value Can somebody explain this? This seems to be related to whether a user is just present in the Hangout or they’ve started my Hangout app RICHARD DUNN: Interesting Well, taking it from the end back, I would say multiple people having the same display index seems like a bug to me So we should probably look into whether that happens And as for the first part, like just getting the consistent number, I think, Will, you’ve had a feature request opened for that as well Like an absolute ordering based on when they– WILL THOMPSON: Yeah, I’d be really interested in knowing– and either an absolute order You can do it a little bit by looking at the time stamp on when they arrived in the Hangout You know, you have somebody just call a set [UNINTELLIGIBLE] as soon as they walk in And then just declare that’s an arbitrary order It’s not necessarily the order they appear in the thumb strip, but it is an arbitrary ordering JD SALAZAR: If you don’t care about the ordering and getting people jumping in the middle [INAUDIBLE] like Hangout ID or something, too

It just depends on what you’re looking for, I guess RICHARD DUNN: I would definitely like to add– just because it’s super easy for us to add, I would definitely like to add some sort of absolute ordering But in terms of the display index, my expectation would be that they were always different So that’s a surprise to hear JOHN BERRY: He actually updated his post with an edit, and said, just realized I’m using Get Participants while using Get Enabled Participants guarantees that display index is unique Consistent order across all users And he ends with a question mark So I think the question we should raise is Get Participants versus Get Enabled Participants RICHARD DUNN: Actually, I know what this– I wonder if that might be that, if they leave– well, then they’d disappear GERWIN STURM: I think that problem might be the display index If I have to display index two for someone, someone else in the Hangout might have the same person display index three Because the ordering isn’t unique among all participants So that might be the problem he’s having JD SALAZAR: I think that’s true I think that you can’t guarantee that participants will be displayed in the same order for everyone in the Hangout GERWIN STURM: So that might be the problem That the display index two is different for me than for someone else in the Hangout RICHARD DUNN: Well, Jonathan, can you forward that message to me? We’ll definitely fix that WILL THOMPSON: Assuming it’s buggy, we will fix it JENNY MURPHY: Yes Thanks for the bug report So moving on to the next question [UNINTELLIGIBLE] asks, is it possible to access Picasa photos within a Google+ Hangout that were shared from another Picasa web account? So within– or actually, someone else like to field this one? I will field– GERWIN STURM: Yeah, actually it is possible, because if it’s a public photo you can access it Because you can access all Picasa photos, so you can use the Picasa data API to access those photos You just would need the Google ID of the person you want to have the photos access of And now with the possibility that you can actually add [UNINTELLIGIBLE] to your Hangout, the ones you want, you can actually request limited photos as well, which have been shared with you in some cases JOHN BERRY: That is a super awesome feature [UNINTELLIGIBLE] just rolled out And I know you worked on a photo app So why don’t you explain a little bit about what you had to do to do that? Because it’s not so straightforward GERWIN STURM: Yeah, so actually for my photo app I’m using the Picasa data API to access the photo So I’m taking my Google IT, and use it to access the Picasa data API that can request albums which I have And I can request the photos in the albums, and then just put the link to the photo actually put into the shared state, so the others can have the link for the photo to be displayed And this should work for my photos or for the photos of others as well So if I know the link to a photo I can share it in the Hangout JOHN BERRY: Pretty neat GERWIN STURM: Actually, I could just screen share the app if you want, if anyone’s interested [INTERPOSING VOICES] JOHN BERRY: And you’re using the JS client, right? The– GERWIN STURM: Actually for the data API I’m just using the [UNINTELLIGIBLE] requests to access it So let’s see if I can screen share this OK, do you see it? So actually what I’m doing on this side here, I’m just loading all my Picasa albums The public Picasa albums Where the Picasa data API and then just can choose one album So this side part here, this is only private to me in the Hangout app And now I can choose one photo It shares the link with all the other people who are using the app And they can see the same display if they are using the app So that’s about it what I’m doing And if you, actually it should be possible if you do access albums of other people, as long as they are public and you have the IT So in this case I’m just refilling the API with my Google IT So it accesses my albums, but in the same way you can access the public albums of other people as well So you could actually just say, I want to access the public albums of Richard, and then it would be able to display them and share those photos as well JOHN BERRY: And again, that’s using the Picasa [UNINTELLIGIBLE] API, which [UNINTELLIGIBLE] unrelated Google+, but because Picasa and Google+ photos are related, he’s able to do that Cool Cool integration JENNY MURPHY: Yeah, the photos on Google+ use the Picasa backend, so that’s the relationship between them

The Picasa APIs allow you to access some of them Cool, thank you very much for demoing that That was really– So continuing on through the questions Joshua asks another question What is the best way to detect when a Hangout app gets unloaded? So that I could do some cleanup once it’s been unloaded, for example? Anyone? JD SALAZAR: Sorry Could you repeat the question? JENNY MURPHY: What is the best way to detect when a Hangout app becomes unloaded? For example, if you want to do a clean up RICHARD DUNN: So we don’t really have– We don’t have this notion of– I guess there’s two answers to that, right? There is the other people that are– other instances of the app can detect that Yeah, so other instances of the app can detect that that person’s left the app, if they want to do clean up there What we don’t have is, we don’t have a way that the app instance itself, when it gets unloaded, has time to do anything We basically just kill it off So it’s an open question of whether that’s a good thing to do I guess there are some nice things that can be done there WILL THOMPSON: Well, yeah It’s certainly sort of like the OnApp hidden event JOHN BERRY: Yeah, so there’s the OnApp hidden, which I think is the second answer to that Because apps don’t run if you hide it So for example if you toggle an extension, or if the app, you switch over to the video feed, at that point, we fire an event that says– I think that’s exactly what you call the app, OnApp hidden So if you have animation, you might want to pause the animation Or if you want to– if you’ve queued up background data that you need to send out to your server, that may be a good time to do that And if you want to do something if the user leaves, and there’s other users on your app, then you could do the On Enable Participant Changed, and say, hey, we have a lost user and it’s changed the games JENNY MURPHY: Cool That’s [UNINTELLIGIBLE] ALAN FURTZENBURG: People have asked me this question as well, in regards to suggestions that I’ve made about how to trigger something when a Hangout is started with an app How it can then go communicate with a web server They said, well how do you do the opposite? If a person leaves without anybody showing up, how do you clear that value? And I said, uh, that’s a really good question And the best solution that I had come up with, that I hadn’t tested yet, was to attach something to the iframe and detect when the iframe was close So when it receives an On Close event for– I forget the correct name of the event But I haven’t tested it yet, and I don’t know for sure how it’ll work, how well it will work, or what other problems that are associated with that JENNY MURPHY: Cool Thanks for the possible solution Which would work in most cases Someone killed the process in the web browser You wouldn’t get that– [INTERPOSING VOICES] WILL THOMPSON: In that case, you almost might consider a KeepAlive JENNY MURPHY: Yeah, a KeepAlive or a heartbeat? WILL THOMPSON: Yeah, just once a minute, be like, oh, this Hangout’s still going with this app, and then, nope, this Hangout’s not going anymore [INAUDIBLE] JENNY MURPHY: Interesting JOHN BERRY: In KeepAlive 108, which I’ve been experimenting with this morning, is Google analytics JENNY MURPHY: Google analytics for KeepAlive? JOHN BERRY: Yeah, right So with the new real time infrastructure JENNY MURPHY: Oh, the real time [UNINTELLIGIBLE]? RICHARD DUNN: Are you actually working on editing that, Johnson? JOHN BERRY: No, I was just playing around with Google [UNINTELLIGIBLE] this morning, and I’ve been doing some things around trying to look at the [UNINTELLIGIBLE] API, right? [UNINTELLIGIBLE] API, as well as the JavaScript wrapper So there’s some cool things that you can experiment with inside of the Hangout JENNY MURPHY: This is actually a problem that’s existed in web applications pretty much from the beginning Is you don’t know when people disappear So there are a lot of solutions out there on the web And any solution that’s been out there to solve this problem for regular, traditional web applications will also be able to help you figure out– for example, if you have server side state that you need to clean up when the Hangout app is closed WILL THOMPSON: [UNINTELLIGIBLE PHRASE] Whatever it is that you need to do JENNY MURPHY: Yeah Cool Okey doke So moving on to the next one Chad asks, is there any chance that facial tracking will be able to support multiple faces? So like we have right here, four people on camera WILL THOMPSON: Wow, that would be cool JENNY MURPHY: It would [LAUGHTER] [INTERPOSING VOICES] JENNY MURPHY: OK, moving on to the next one MORITZ TOLXDORFF: Then we have [UNINTELLIGIBLE] games in the Hangout WILL THOMPSON: Yeah, we have no announcements about that

JOHN BERRY: I will say, as we’re developing two of us on the screen, the standard use case for Hangouts is you in front of your laptop Definitely right now we’re behind a camera and it’s getting all four of us But most people use Hangouts while their on their laptop WILL THOMPSON: This is the use case why you need a mark when you’re doing puppets Like [UNINTELLIGIBLE PHRASE] or playing a game with your head Mark which face you are actually attached to WILL THOMPSON: It should say “one-up.” WILL THOMPSON: P1 JENNY MURPHY: P1 P1, P2, P3, P4? That would be cool WILL THOMPSON: I think his next question was, gosh, wouldn’t it be cool if there’s WebGL? And the answer is, yeah, that’d be so cool That’s how the 3D robot floating head works It’s in [UNINTELLIGIBLE] So again– JOHN BERRY: Yeah He said something simpler He said, I want to see a face tracker in my [UNINTELLIGIBLE] image And somebody was demoing– JD– the– JD SALAZAR: J.D. SALAZAR: I don’t actually have this app [INTERPOSING VOICES] JOHN BERRY: But it was a picture of John Malkovich, and his mouth was moving with your mouth And it was pretty striking, as well It’s doable with the current API JENNY MURPHY: Is that one open source anywhere? JOHN BERRY: I have no idea JD was the one who was playing with it JENNY MURPHY: So a lot of the hangout applications are actually open source So if you track them down, sometimes you can figure out how people did them, too WILL THOMPSON: Right click, Resource JENNY MURPHY: That works, also Cool, so just moving up the stream of questions WILL THOMPSON: But yeah, I would actually add that WebGL is really great in the Hangouts, as opposed to Flash, because it’s running natively rather than running in a plug-in It’s awesome JOHN BERRY: Gerwin has some experience, right? GERWIN STURM: Yeah A little bit JOHN BERRY: I think, Gerwin, you’re the first person to try WebGL inside of Hangout So you get that– GERWIN STURM: Yeah, I think it was the first thing I tried with a Hangout app actually JENNY MURPHY: Cool OK, so there’s a question unrelated to Hangouts API that Harold asks, that I will answer Harold asks, how do I use the Google+ +1 button on a web page, and it seems that Google apps users can’t use it The complaint is that login is required in response to the RPC call He’s also having trouble with the badge, which renders as a big white box So this could depend on a lot of things And the easiest thing is for us is just hook up and troubleshoot It could be an issue because it’s a JavaScript that’s running on your page it can sometimes be in conflict with other JavaScript on your page Or even web server configuration, because our buttons will fetch your page to create the snippet, and if they can’t access it for some reason, our page fetchers can’t access it, that will cause problems, also So in other reasons, there’s a lot of things that could be causing these issues So I’ll look back with you after the broadcast, and we’ll solve your problems. We’ll get back to you So, moving up the thread While I’m poking around on the thread, does anyone in the Hangout have any other questions or comments they’d like to chat about? Announcements? GERWIN STURM: So I actually don’t have a question– So I actually don’t have a question, but a suggestion, really, because you just start with the on-air functionality in Hangout apps There’s actually three things I want to see in there Actually, I think would be interesting to see who’s the one hosting the Hangout on there So which of the participants is the one who broadcasts? So that he maybe can get special privileges inside of the Hangout app Then there’s the thing with the YouTube URL, so we can link it and I can use it in the comment tracker And then also the link to the broadcast URL on [UNINTELLIGIBLE] which announces the– so those are actually the three things Actually, I would be happy with the broadcast, because there’s a lot of things you could do with that MORITZ TOLXDORFF: [INAUDIBLE] the outgoing volume RICHARD DUNN: What’s that? MORITZ TOLXDORFF: Being able to adjust the outgoing volume to the video stream, so you can use volume control to adjust actually the video, audio levels from all the participants as a host RICHARD DUNN: OK More good suggestions WILL THOMPSON: And definitely more metadata about the Hangout on air, is what I’m hearing Has anybody ever tried to put the Hangout on air broadcast

inside the Hangout? What would happen? It’s like the IT Crowd Searching for Google inside Google causes the internet to close [LAUGHTER] JOHN BERRY: Then they do a screen share with the video– [INTERPOSING VOICES] WILL THOMPSON: Screen share the broadcast inside the Hangout That would be awesome We should try that JENNY MURPHY: Do you want to try it right now? WILL THOMPSON: I don’t want to set fire to this room, so we better not JENNY MURPHY: Yeah, we’re in a new room, which is not as equipped as previous ones So we don’t want our work lab to catch on fire But later when it’s a different computer WILL THOMPSON: Yeah We’ll see if we open a wormhole in time and space JOHN BERRY: I don’t know about you guys, but I don’t own a fire retardant suit JENNY MURPHY: You don’t? JOHN BERRY: Nope [INTERPOSING VOICES] JENNY MURPHY: They’re useful when doing things like welding All the wool Wool clothing is very fire resistent Just in case you were wondering, everyone WILL THOMPSON: You don’t have asbestos gloves? JENNY MURPHY: No, I actually don’t WILL THOMPSON: They gave those to us in high school It was amazing It was like, later on, [UNINTELLIGIBLE] But as it was JENNY MURPHY: Anyway, moving on [INAUDIBLE] asked a question earlier about the Picasa photos being accessible from the Hangout app, actually clarifies the question Actually, I mean for non-public Picasa web photos shared via Google+ from a different account So I’m assuming this would be if Martin would share a photo with just me, would I be able to access– oh, we can access our own Picasa web via [INAUDIBLE], but there doesn’t seem to be a way to access the photo that Martin shared to me, for example Is there a way? So this is starting to get to one of the corners where using these multiple APIs together doesn’t always work wonderfully The Picasa web APIs do not include all of the features of the security model Google+, for example, which is built on the same backend, but uses the slightly different system for managing all the sharing and stuff I am not aware of a way to do this specific thing It’s a great question I do not believe you can do it with the current APIs that are available But I think you’ve done more hacking on these APIs than I, Gerwin Do you have any input? GERWIN STURM: Yeah, I actually only used public APIs without the [UNINTELLIGIBLE], so I’m not sure what is possible with the Picasa data They’re actually pretty difficult to work with, to actually get to know how to use them So I haven’t really went into all the stuff with the Picasa JENNY MURPHY: Yeah, they’re using our older, G data style APIs, which are different than the APIs that, for example, Google+ uses And as a result they have a little bit more rough edges We learned a lot when we built all the API infrastructure, and as a result we like our new APIs a lot more So you’re in an interesting case, where you’re having to work with both of them at the same time, which is challenging And if you can find a way let us know It’s cool And with that question, we’re actually just about out of time JOHN BERRY: Well there’s one question I wanted to answer JENNY MURPHY: Oh, there’s one question you wanted to answer, huh? JOHN BERRY: Somebody asked, where you can get all those cool stickers on your laptop? [LAUGHTER] JOHN BERRY: So this one right here, this G+ sticker, you can actually buy it from the online Google store We just started shipping that So you can get a pack of five for a couple of bucks US And I’m pretty sure it ships internationally WILL THOMPSON: And we have the old +1 button We have all kinds of– JOHN BERRY: But the only one you can buy is this guy Actually, my HTML5 one, which I’m very proud of, you can get from the HTML5 site, and a bunch of other places The JS one, the logo’s at opensource You can print it yourself And the Hangouts one and the circles one, you’ll have to bribe us WILL THOMPSON: You’ll have to bribe us JENNY MURPHY: You’ll have to do awesome Do extra awesome JOHN BERRY: I actually send out stickers to people who do cool things, or help me out, or help the community So if you [UNINTELLIGIBLE] JENNY MURPHY: Yeah, so do cool stuff Let us know WILL THOMPSON: [UNINTELLIGIBLE] like move his laundry over or something He’s like, here’s a sticker ALAN FURTZENBURG: There are a couple of questions on the YouTube page that may be of interest. Somebody asked, as a regular user, is there a page that lists the Hangout apps? Anything like the Chrome web store for Hangout apps I know that we all needed to register with the Chrome web store What are the plans for a web store for Hangout apps? RICHARD DUNN: Well Hangoutapps.com has been doing a pretty good job of listing all of them WILL THOMPSON: Yeah, that’s a community project that’s pretty cool JOHN BERRY: The short answer for that is, there are plans, and we’re still developing them A lot of that is based on feedback The main way that people discover is through the viral

nature of apps If somebody’s doing a Hangout with an app and you discover it And then, we’re recommending people make plus pages to drive traffic to their Hangout app Either a Hangout app per plus page, or if you have a brand that you’ve created around your apps, or just my apps plus page And Google’s trying to strive to build platforms for developers So a way to distribute and monetize is definitely on our radar, and we’re working towards that ALAN FURTZENBURG: You had somebody who agrees with the special privileges of the Hangout creator to boot and mute a user who’s causing a problem And I know that comes up frequently in the Hangout discussions And a request. Please implement messaging from G+ app to the web browser while a friend is within your circle What are the plans for interaction between the app and the chat window? RICHARD DUNN: Well, obviously that’s a big request. I think there’s some sensitivity around chat I don’t know quite if that’s pushing stuff into the chat window or pulling it out Pulling it out is obviously– [LAUGHTER] RICHARD DUNN: Yeah I mean, we’re looking at those issues and we’re trying to solve some of them JENNY MURPHY: Yeah, we’re working through the chat issue, but we’re just very cautious about interacting with the chat too much because we don’t want it to either become too noisy And we also don’t want to compromise the privacy of anyone in the chat So we’re taking a cautious approach to this particular feature But there’s some cool potential there, so we’ll see ALAN FURTZENBURG: And finally from the YouTube chats, several people thanking for the answer And finally, this is an awesome Hangout [LAUGHTER] JENNY MURPHY: And it’s awesome because all of you guys joined us WILL THOMPSON: From Google engineers to all of our community It’s really been great JENNY MURPHY: And the overlap of our community and Google engineering So thanks very much to everyone for joining This has been a really great session in our new location, which will hopefully have a dinosaur next time WILL THOMPSON: Yeah, we need to get a whiteboard so we can plan a dinosaur JENNY MURPHY: Yeah, we’ll figure it out WILL THOMPSON: Somebody will provide a dinosaur JENNY MURPHY: But in regards to this video, there will be an edited version published to the Google+ developers page It’ll include the show notes, like we have for every session And it’ll be up later today or tomorrow In the meantime– JOHN BERRY: And also the YouTube Google Developers [INAUDIBLE] JENNY MURPHY: It’ll also be added to YouTube.com/GoogleDevelopers way at the bottom of the page under the Google+ platform office hours It’ll also be visible there And the show notes will be there too Well, until next session, thanks everyone for joining us See you later ALL: Bye

You Want To Have Your Favorite Car?

We have a big list of modern & classic cars in both used and new categories.