Uncategorized

[MUSIC PLAYING] ANDREW LEE: I hope you enjoyed the last Firebase talk where we talked about some of the new things And I’m going to be doing a deep dive today speaking about how Firebase and Google Cloud Platform can be used together to build some really amazing apps My name is Andrew I’m one of the co-founders of Firebase Before I dive in though, I want to say how really excited I am to be here Firebase has come a long way in the last six years And this year has really been our best yet So if you saw I/O last year, we really expanded the platform, and since that time, over a million developers have used Firebase to build an app If you’re one of those developers, thank you I really appreciate the trust you’ve placed in us to help us build your app and to build your business But first, let’s take a minute to try and travel back to 2011 Our team started working out of a coworking space in San Francisco And one of the first things that we did when we began working on Firebase was write down the vision for what we were trying to build And the first sentence read, “build the simplest-to-use and easiest-to-understand app development platform in the world.” We felt that cloud computing was breaking its promise to developers While it had reduced the capital required for you to build and scale software, it had done very little to make the actual writing of that software easier Cloud computing was supposed to save developers time It was supposed to reduce their cognitive load and let them focus on delivering actual value to their customers And it really hadn’t done that yet And we wanted to fix that The amazing part about this statement is that this is still our mission today This is still what we’re working on And it’s gotten a whole lot easier since we’ve joined Google, because we get to work directly with Google Cloud Platform While Firebase is a full suite of products for building and growing mobile apps and web apps, we know that some apps need more than we can offer out of the box For example, they might need specialized analytics or specialized types of storage They might need to do intensive computations or, say, machine learning And in many of these cases, the Firebase core offerings can’t help you But Google Cloud Platform can If you don’t know much about Cloud Platform, it gives developers the ability to use Google’s computing infrastructure to build, deploy, and run software at massive scale And this is a huge investment area for Google We have invested more than $30 billion in the last three years on this infrastructure And Cloud Platform offers a full range of products across storage, compute, networking, big data, and machine learning OK So what does this have to do with Firebase? Well, Firebase and Cloud Platform are really a complementary pair And combined, they provide a full suite of products to let you serve even the most demanding use cases And we’ve really designed this platform to make it easy to use them together If you’re a mobile developer, you can start using Firebase for its level mobile features and its rapid time to market, and then when your needs get more complex, you can move over and start using products from Cloud Platform to augment your app On the flip side, if you’re a backend developer and you want to start with Cloud Platform, later you can start using Firebase when you build out your apps This is all made possible because under the hood, Firebase and Cloud share a number of common components First, they have a common foundation They share the same project and billing and account systems So when you create a Firebase project, it is literally a Cloud project Second, we’re actually beginning to share our products as well We recently announced that Cloud Storage would be available through Firebase Cloud Storage is Google’s petabyte-scale storage offering And we also announced that Cloud Functions would be available through Firebase And you can expect to see more of these integrations going forward with Cloud products being available directly through Firebase As we continue to integrate Firebase and Cloud Platform, we’re seeing more and more customers doing great things together with these technologies For example, National Public Radio is using Firebase Analytics in its mobile app But NPR wants to do some more advanced analysis than they can do out of the box with Firebase Analytics, and so they’re using Big Query from Google Cloud Platform so that they can match their front-end behavioral data with their backend usage data and improve

their overall understanding of their users’ engagement and retention We believe that this combination of Firebase’s mobile feature set and the full power of Google Cloud is really powerful, and can support the needs of even the most demanding applications So I’d like to show you in practical terms what that actually means for you What can you do together with Firebase and Google Cloud? And to do that, I’ll be building an app right here, called Favorite Places that’s going to lets you post pictures of places that you love For today’s demo, I’ll be building a web application But everything we do is fully cross-platform So you could do this on iOS or Android, or even using our Unity and C++ SDKs So here are the requirements for my application First, I want to let users be able to login to the app so they can receive a customized experience I want users to be able to upload photos of their favorite places I want users to be able to view a feed of the photos that they’ve uploaded in the past And I want those images optimized for mobile so I’m not wasting bandwidth or battery and so they fit nicely on the screen To help me build this, I’m going to use several products from Firebase We’ll be using Firebase Hosting to actually host the static web assets, Firebase Authentication with the new phone number authentication you heard about earlier today for login, Cloud Storage for Firebase for storing the photos, and the Firebase Realtime Database to store my feed metadata This is going to get us most of the way there, but we’re still missing the last requirement, which was the ability for you to scale images to fit on your phone Now, this is actually a relatively easy problem to solve client side, if we want to, but that doesn’t really help us, because mobile networks are slow, bandwidth is expensive, battery is expensive And so we really want to do that resizing on the server side so we can optimize the delivery of those images Ordinarily, this would be a huge hassle We’d have to stand up a whole new service We’d have to set up a 24/7 on-call rotation We’d have to provision a bunch of servers We’d have to deal with all of the normal maintenance and scaling and operations of running that backend service And I don’t want to do that But fortunately, we have a much easier solution, which is Cloud Functions Cloud Functions for Firebase is a product that we launched in March, and it gives you the ability to run small pieces of server-side code in response to events in your app, without needing you to manage your servers or scale amount This makes it really easy for developers to do things like send a push notification when a user signs up, or thank a user for an in-app purchase, or transform data before inserting into their database, or in the case of this app, do some image processing when a new image is uploaded We launched Cloud Functions for Firebase in March, and the tremendous response we’ve seen has been really exciting There are thousands of apps today built using Cloud Functions And we’ve seen over a billion events running Functions since then Today we support a number of providers You can see some of the products on the screen that emit events to Cloud Functions And you should expect to see more integrated in the future All right So we have our requirements’ list Let’s actually dive in, and let’s build this app Can I get us to switch over to the laptop screen? OK So to save time on the demo, I’ve actually kind of fleshed out the early stages of the app So you can see what it looks like here I’ve already populated the title bar And we have a box for entering your phone number and a confirmation code, because we’re going to be using phone number authentication So let’s add our first feature, which is Firebase Login And Login is really critical to this application, because we want to segment the data by user You wouldn’t want another user to be able to modify your photos or vice versa And fortunately, with Firebase Auth, this is really easy to set up We have an out-of-the-box experience that lets you login with common providers, like email and password, social auth, or even integrate with your own providers And just today, as you heard, we announced phone number authentication, which lets your users login to your app using just their phone number and an SMS confirmation code There’s no passwords to remember or emails to type in And Firebase Authentication integrates really tightly with the other Firebase products to let you control access

to different resources So this is what’s actually enabling us to segment the photos by user and the database data by user So the first thing we’ll need to do is jump over to the Firebase Console And we’ll jump into our Authentication tab, and we’ll configure phone number authentication So if you click Authentication, Sign-in Method, you’re going to see a new option today in the console called Phone And I’ll open that up And it turns out the configuration for phone number is really easy You just have to enable it, which I’ve already done So we’re all set with configuration Let’s get started All right So for today’s app, I’m going to be writing all of my code in TypeScript If you like TypeScript, great If you don’t, don’t worry You can do all this in JavaScript And remember, this all is fully cross-platform, so on your iOS or Android or Unity or C++ apps, you can do all the same things So the first piece of code I need to add is a reCAPTCHA on my page And this is because Firebase phone number authentication uses reCAPTCHA to prevent spam and abuse The next thing we want to do is hook up that GUI that you just saw so that when I click those buttons for Login or Confirm Code, that it actually runs the appropriate handlers to do the login So I’ll insert some code here And this is doing a couple of things First, when I run– click the Login button, it’s running Sign in with Phone Number, which is actually kicking off the SMS verification to my phone And then later after I’ve entered that code and clicked Confirm, it’s going to call confirm on the verification that has been sent to my phone And then the next thing we need to do is actually handle that login event So we want to make sure that after the user has logged in, we hide the login screen and we show them login content instead And so we have a simple event handler here that’s fired every time our authentication state changes And I’ve hidden a little bit of GUI code here, but there’s a helper here that’s actually hiding the old UI and displaying a new UI And I’ve set up a helper function here that we’ll use for the rest of our example called onLogin So I’ll that insert that here And this is going to get called after the user has logged in All right That’s it We’ve added authentication to our app Cool Let’s add our next feature So the next thing I want to add is the ability to upload photos to my app And just like with phone number authentication, the first place we’re going to start is over on the console So I’ll jump back over to the Firebase Console This time, I’ll head over to the Storage tab And storage in Firebase is Cloud Storage So you actually get access to the full range of Google Cloud Storage products, including buckets in regions all over the world, as well as different storage classes So if I click up here in the upper right, I can choose to add a bucket And I can select regions in the US or all over the world, as well as different storage classes But it turns out for this example, the default bucket is a US central multi-region bucket, which is actually perfect for what we’re trying to do And so I’m going to stick with the default for this example All right So let’s actually add the code to upload images into my app In the onLogin handler here, I’m going to add a little snippet And again, we have a UI helper function that is setting up the actual input form for me to input my photo And then it’s crawling into this function when the user adds their photo And we just have a couple lines of code here to handle that The first is creating a reference to the file to upload, and the second is actually writing that file into Cloud Storage These two lines of code here is actually all you need to upload a file directly from your app to Cloud Storage All right We’re all done with that So now if I deployed the app, you’d see that we could click the button and it would upload the photo But the next step is we actually want to resize that photo We want to go over to Functions, as I mentioned earlier, and we’ll jump over to that code And we’re going to set up a Cloud Function that takes that new object, resizes it, and puts it back into Cloud Functions So the first thing I’m going to do here is actually create my Cloud Function And we have an SDK for Cloud Functions that makes this really easy All you need to do is add something to your exports, like we did here And we now have a Resize Image Cloud Function And we bind that to the events coming from Cloud Storage

with this line right here So this means that this function is going to run any time a new object is uploaded to Cloud Storage The next thing we need to do is do a little bit of parsing So I add some code here to actually look at the request and pull up some variables that we need And we want to make sure that we’re only doing image resizing for newly uploaded images We don’t want to have this event run when we resize the images because that would put us in an infinite loop So we’re going to jump out of this function if this is not a new upload And then let’s do the actual image resizing So I have a bit of code here that is first downloading the image from Cloud Storage to my local Cloud Functions VM and putting it into a temp directory Then I’m spawning a new process with Image Magic to do the actual resizing And finally, I’m uploading that file back into Cloud Storage And that should do it That handles our image resize So let’s move on to our next feature So we want to have a feed of images so you can see what was in our app– what we uploaded previously to the app And so we’re going to store that in the Firebase Realtime Database, and we want to add to that feed after the image resize has occurred Because if we did that beforehand, you might see the non-resized image, and we want to see the resized image So we’re actually going to do that in our Cloud Function as well So I’ll add a little snippet here, which after we’ve resized the code, is going to push a new item into our Realtime Database with some metadata about the new object to display And then finally, we want to jump back over to our client-side code, and we actually want to display the feed in the app And so to do that, we’re going to listen on the Realtime Database to all new children of our feed And for each of those items, I have some code here which will actually add the UI And I have a helper function to make that a little bit easier Cool So that should do it So I’ll just save this file And I’m going to jump over to the command line, and I’m going to deploy this to Firebase And we’re going to let that run And while this is running, I want to show you a couple of features that I maybe didn’t mention earlier that I think are really exciting you might want to know about So let’s jump back over to our iOS simulator here, and let’s look at the top of the screen You’ll notice that this app is hosted at favoriteplaces.pictures This is a domain name I bought yesterday And this is a custom domain This isn’t something that Firebase provided for you It’s something that I bought And you’ll notice also that there’s a little lock icon right here And that’s because we’re actually serving this page over HTTPS One of the really cool features about Firebase Hosting is that we automatically provision an SSL certificate for you on your custom domain, and we do it for free So if you want a simple way to get your assets online on your domain with SSL, use Firebase Hosting The other cool feature I want to point out is that if you look in our code, at the top of our client-side code, you’ll notice that there’s no API keys up here There’s no default settings or configuration It just declares this Firebase variable And that’s because Firebase Hosting is actually configuring the Firebase SDK for me automatically I don’t have to put any special configuration here, which is really convenient to get going But it’s especially useful if I’m managing multiple environments Say I have a staging environment and a production environment, this makes it simple for me to do that without managing those keys OK So let’s jump back over to our deploy It looks like it finished Fantastic OK Let’s give this a shot So I’m going to go back to my mobile app, and I’m going to refresh Great And I’m going to type in my phone number here And I’m going to send myself an SMS confirmation Ah! But Google doesn’t know if I’m a human or not, so the reCAPTCHA is actually checking to make sure I’m really a person and not a bot to prevent abuse, and it wants me to select pictures of storefronts I hope I don’t fail this in front of all of you Think How’s that look? Is that right? Uh, nope That wasn’t it All right I’m a human Yes! Great And then I’m going to wait for my SMS There we go

And I have it So I’ll type that in All right We’re logged in It worked Cool! [APPLAUSE] OK So now I’m going to upload some photos into my app So I’ll click this plus button And I actually have a few images already on my phone So let’s upload a picture of the Golden Gate Bridge And I’ll click that button And right now, what’s going on behind the scenes is I am uploading that picture directly from my mobile phone into Cloud Storage That is triggering an event in Cloud Functions, which is then downloading that image into Cloud Functions, resizing it, putting it back into Cloud Functions, then adding some feed data into the Realtime Database, which is pushing that data out to my mobile app, and it is responding to an event on the device to update my feed And all of that happened with the code that I just showed you [APPLAUSE] Now I want to show you something that I talked about earlier but I think is really easier to understand if you see it And that is that when you’re using Firebase, you are using Cloud Platform Now remember, we updated– we uploaded that image using the Firebase SDK for Cloud Storage And we configured this using the Firebase Console for Cloud Storage So of course, if I go over and I look in the Console for Firebase, and I reload this page, you would expect to see some images in here I can look in here and see that there’s actually– there’s content here But what you might not expect is that if I go over to the Cloud Storage Console tab in Google Cloud Platform, and I look in my bucket there, I see the exact same contents They are literally the same platform It’s the same product They have the same data OK So I think we’re all done I thought that went really well I don’t know about you, guys, but I thought that went great [APPLAUSE] And I– you know, I really want to share this with my friends, and I think my mom would be super excited about this So I’m actually going to pull out my phone here, and I’m just going to take a picture of this app here Hang on I’ve got to turn my flash on MICHAEL BLEIGH: Andrew, what are you doing? ANDREW LEE: Oh, hey, this is sort of awkward, Michael I’m actually doing an I/O talk right now MICHAEL BLEIGH: Oh, well, I know that, but now you seem to be trying to take a picture of your laptop with your phone What’s that about? ANDREW LEE: Oh, yeah, I’m really good with Twitter, and I have a lot of followers So I just thought it’d be cool if I took a picture of the app that I just built, and then I tweeted that Actually, here Why don’t you hold this? And I’ll just pose in front of the laptop I’ll just kind of go right here MICHAEL BLEIGH: Wait, wait, wait Wouldn’t your followers rather have a link to the content that you have on the screen there than just a blurry photo from your phone? ANDREW LEE: Yeah, that might be cool, but it’s not going to work, because, actually, I don’t– there’s no way for me to share a URL of that content It’s just– it’s a single-page app MICHAEL BLEIGH: Well, there’s no way to share URL yet Tell you what, let me jump in here for just a second I think I can whip something together in just a few minutes, and I think you’ll like it Can I take over here? ANDREW LEE: Sure That sounds awesome Yeah, Give it a try [APPLAUSE] MICHAEL BLEIGH: Hey, everybody I’m Michael Bleigh I’m the engineering lead on Firebase hosting and the Firebase CLI Can we flip back over to the slides for a minute? Great So it’s great that we have this app where we can upload photos and then take a look at a feed of our photos But if this is supposed to be a sharing app, I think we’re falling short It’s a little lonely There’s no way to share this with anybody else So let’s add one more feature to our app, which is a great social sharing experience And for this feature, we’re going to need four new requirements First, we’re going to need a sharable URL so that I can send it to any of my friends and they can instantly get to the piece of content that I’m trying to send Second, we’re going to need that content to be high performance and scalable What happens if my tweet goes viral? I need to be able to handle that load Third, we’re going to want the image thumbnail of the photo that I’m sharing to show up embedded in the tweet so that people are drawn in and they have a bigger target to click And finally, we’re going to want to automatically recommend some tweet text so that people have a frictionless sharing experience They just click a couple of buttons, and– bam– they’ve shared it Now, how am I going to tackle all of these new requirements? You might have heard today that we’ve launched a brand new integration between Firebase Hosting and Cloud Functions, and that’s really going to help us out here Now you can create rewrite rules for Firebase Hosting that will send matching requests to a Cloud Function that you specify

This gives you the ability to mix and match Firebase Hosting’s production-grade static hosting with the dynamic processing power of Cloud Functions This is a great new tool to help you build capable, performant mobile apps So Cloud Functions and Firebase Hosting can get us most of the way there That checks off three of the boxes I can dynamically generate HTML for a sharable URL, Firebase Hostings global CDN gives me the performance and stability characteristics that I need, and because I’m rendering the content server side, Twitter’s crawlers can pick up that metadata and embed it in the tweet But what I don’t have is a way to automatically recommend tweet text You’ll notice that there was no title added to the photo when Andrew uploaded it He just sent the image So how are we going to tackle this last requirement? Well, luckily, as Andrew told you, a Firebase project is a Google Cloud project And one of the Google Cloud Platform’s strongest characteristics are its machine learning APIs One of those is the Cloud Vision API that can analyze images and actually tell you about the content One of the features of the Cloud Vision API is landmark detection And when we’re uploading our favorite places, that’s a natural fit for this feature So we’re going to use that to help us out and build this feature So let’s jump over to the code and get started All right So the first thing I’m going to do– I’m in the browser code, and the first thing that I need to do is add– oh, sorry– could we jump over to the laptop? There we go So we’re in the browser code, and the first thing that I’m going to do is I’m just going to add a Share button to every item in my feed So add a little piece of code here So I’m just defining a share URL that’s going to be /places/ and then an ID for my image And I’m going to add that to this helper that we’ve already set up So there we go So with that change, now every image on my feed is going to have a share button that links to /places/ID But of course, there’s nothing there yet So we need to build that functionality So now I’m going to jump over to the Cloud Functions code Now, one of the things that I like the most about Cloud Function is that I was already a Node.js developer, and Cloud Functions works great with the Node ecosystem So I like building web apps with Express.js, and that works out of the box with Cloud Functions So here, I am defining a simple Express app So I define my Express app And I’m defining a single route, which you might recognize from the last screen And then I’m just parsing a few things out of the URL And I’m setting up some content So I don’t know what I’m going to use for the landmark name yet, but I have a URL, and a description, and a tweet And now I need to send some data back Now, I could use any server-side rendering framework, any template engine that I want But for our case in a simple demo, I’m just going to inline some HTML So here we go OK So there’s my HTML It’s a really simple page But one thing that I want to call out are these Twitter meta tags that I have in the header That’s the metadata that allows Twitter to parse the URL, and then display information embedded in the tweet And Twitter doesn’t execute JavaScript on your site So this isn’t something that I could have done just by loading the Firebase Web SDK and then manually rendering that with browser-side JavaScript after the fact It has to be done on the server Other than that, this is just a really simple page that will render my image and have a tweet button, that, when I click it, will have some pre-populated text So now I have built my Express app, but I need to actually export that as a Cloud Function Luckily, as Andrew showed you, that’s incredibly easy I just add a single-line export, and now I’ve created an HTTPS Cloud Function And you’ll notice that I just passed my Express app directly into that Cloud Function handler I didn’t have to do any special wrapping There was no special handling required, because Cloud Functions works really well with the Node.js ecosystem OK So now I’ve built my Cloud Function, but I want to serve this on my own domain using Firebase Hosting So how do I go about that? Well, I’m going to jump over to the Firebase JSON And here you can see that we already have one hosting rewrite set up that redirects any URL to index.html And this is a great solution if you’re building a single-page web app that’s all browser side, because you have JavaScript that runs in the client and figures out all of the logic for your page But now I’m adding some server-side logic Luckily, again, this is really simple I just had one line of configuration that’s going to rewrite my share URL to the function called serveSharePage that I just defined So now I’ve not only built my Cloud Function, I’ve connected it to Firebase Hosting so it’s going to serve on my domain name Now that’s most of our requirements But again, the last one was that we would auto-populate

the tweet text with something relevant to the actual content And another one of my favorite features of Cloud Functions is that when you’re executing in the Cloud Functions environment, you are automatically authorized to use all of the Google Cloud APIs for that project So if I want to use the Google Cloud Vision SDK for Node.js, there’s no config strings or initialization that I have to pass into that I just initialize it with a single line and an empty call Now below I’m going to replace this TODO with my actual code So I have a single line of code that passes my GCS– my Google Cloud Storage file over to the Cloud Vision API, and that’s going to detect the landmarks and return that as a response, which I’m then saving as a variable and using in my HTML So I think that’s everything that I need to do In just a couple of minutes I’ve built a social sharing experience with server-side rendered content that uses the Cloud Vision API to populate a description So let’s go ahead and deploy that Now, while that’s deploying, I wanted to call out one other thing that I did here You’ll see on this line that I set a cache control header in my response Now, one of the best features of Firebase Hosting is that we’ve put everything behind a global CDN that caches things at the edge so that people who are in the same area get a lightning fast response to images– to things that have already been cached Now, by default, we’re not caching Cloud Functions’ responses because we don’t know how frequently they change, what kind of characteristics they have So this is something that you opt into But that’s really easy All you have to do is set a cache control header on your response In this case, I’m saying public, which means this is OK to be cached by a CDN I’m setting a max-age of 5 minutes or 300 seconds, which is how long the browser is going to cache it And I’m setting an s-maxage, which tells the CDN how long it should cache it In this case, two hours So with that one line, I’m now telling Firebase Hosting that you can cache any response from this end point for 2 hours when it receives it And that’s really going to help me with those performance and scaling characteristics that I talked about So I’m going to go to the deploy, and it looks like that’s going to be finishing up But I think that I’ve built everything that I wanted to build here So let’s see if my quick coding was enough to impress my boss Hey, Andrew, can you come take a look at this? ANDREW LEE: Did you get it all working? MICHAEL BLEIGH: I think so So I just deployed it I’m going to refresh the page here to get the latest code All right So you can see now there’s a Share button But I’m going to upload a new photo, just for good measure Let’s take a look How about– that’s a great picture So you can see it’s processing the image, just like before And that is just running the same resize code that Andrew already showed you But now I’m going to tap on the Share button, and that is going to call out to my Cloud Function running on Firebase Hosting And you can see that I have the image, and the Cloud Vision API has recognized this as the Palace of Fine Arts I also have this Tweet button that makes it really easy to share So I’m going to do that And you can see that it has pre-populated the tweet text with “Check out my awesome picture of the Palace of Fine Arts” and a link to that content So I’m going to go ahead and tweet that Great And I’m going to pull up my Twitter feed just to see how that looks Do a quick refresh Try that one more time There we go ANDREW LEE: There you go [APPLAUSE] MICHAEL BLEIGH: And there you go The photo’s embedded in my tweet What do you think? ANDREW LEE: Very cool And that was super fast, Michael MICHAEL BLEIGH: Great ANDREW LEE: So I think the best part about this is that since this is at favoriteplaces.pictures, you can all pull it up on your own phones and give it a try right now if you like And while you do that, I’m going to play with it myself, because that was super cool, Michael And I want to try this So I’m going to jump back over here to my app And I’ll choose one more picture This time I’ll do the arch We’ll let that upload There we go And I’ll tweet one more time There we go Cool [APPLAUSE] Has anyone managed to log in on their phone? All right I got some thumbs up Awesome Cool Can we jump back to the slides? All right

To quickly recap, we just built that app using six different products from Google, Firebase Hosting, Firebase Authentication, the Firebase Realtime Database, Cloud Storage for Firebase, Cloud Functions for Firebase, and the Cloud Vision API, and all of that together made this app work There’s a lot more I’d love to show you That’s just scratching the surface of the products that we have, but I only have 40 minutes to talk So instead, I’ll really encourage you to give this a try on your own You can get started in just a few minutes at Firebase.google.com or cloud.google.com Our goal is really to handle the common infrastructure for you so that you can focus on the things that actually drive value for your users, rather than focusing on making the basics work I think you’ll find that between the two platforms, we really have a pretty comprehensive offering, and we reach across the entire spectrum of mobile app development So hopefully, we can fulfill the requirements of even your most demanding applications Before I go, I want to touch briefly on another topic I’m really excited about, and that is open source Google has a long history of prolific open source contributions Last year alone, we had hundreds of thousands of commits to open source repos on GitHub across more than 15,000 projects And we’ve heard a lot of feedback from the Firebase community that you’d love to see Firebase do more of this as well And so I’m really excited to say today that we are doing that And today is the first wave of those releases And it’s going to include the SDKs for a number of the backend service products on iOS, the web, and our server-side admin SDKs And we’ll have more coming soon By making our SDKs open, we’re really trying to show a commitment to our community of transparency, and we’re trying to build a stronger relationship with you We haven’t just thrown the code over the wall either This is going to become a core part of our own tool chain So if you want to report a bug or you want to send a pull, we’re listening File issues on GitHub, send us a pull request We can’t wait to see what you do You can go check out these repos right now on GitHub The links are right here If you want to learn more about Firebase or Cloud Platform, we have more than two dozen sessions, I believe, at I/O I highlighted a few of the most relevant ones But I really encourage you to follow the link on the lower right there that has a link to all the Firebase sessions Also, there is a Sandbox right out the door right here that has a number of the Firebase staff present if you have more questions And I’m going to be waiting outside right here in the parking lot, too, if you would like to speak to me– with me after the talk So thank you very much for coming [APPLAUSE] [MUSIC PLAYING]

You Want To Have Your Favorite Car?

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