 A lot of GD is in the room today, a lot of GD is in the house, so he is someone who likes to spend his weekends tinkering with Arduino and he also likes to dabble a little bit with cooking and baking as such, so very excited to have him talk and he comes all the way from Malaysia, so good afternoon guys. Hi guys, again, my name is Nishang Yi, I'm a Google Developer Expert for Firebase and also my typical job is a software engineer at a startup called Ideal Hub so we basically do sub-rentals, we simplify rentals for tenants. So that's just about me, so let's go through what we're going to talk about today. So this is the brief agenda that we're going to go through. So we're going to talk a little bit of what Firebase is, some features that Firebase has and what new SITs Firebase releases these features. And we're going to do a little bit of demo, it's going to be nothing great, but you know, hopefully the demo will cost very good today and a little bit of a question and answer. So if you have any questions you would like to ask and ask me in person, yes? Can you put on the mic? So, hello? Hello? No, you have to... I need to use both, mic? Oh, this is for the video recording, okay, okay, I get it. So, okay, back from commercial, so yes, again, if you have any questions you would like to ask about Firebase in person, feel free to raise your hand at the end of the session or if you're shy, you can just go to the link above and just enter whatever questions you have about the topic in general. So let's get started. So, okay. So the first thing is, before I continue on to what Firebase is, I'm sure a lot of developers or business owners have this kind of idea, right? They want to build an application of some sort, right? They have this business model in their head, they think it will work and then they ask this question, how do I actually get about and building it? Of course, then if you have developer people, you will ask around, then they will tell you what you need to do in order to get such application to be developed. So, typically, this is the response you will get from developers. If you want something so cool that can do all kinds of funny, funny stuff that, you know, as business owners would think that it's easy to do and they would say, oh, this kind of feature is really easy to do. Just go ahead and just build it. I'll just give you five days so you just get it done. But in real fact, as developers, we know that some features are hard to build and that is where problems come in later on. So as developers, we tell them, okay, if you want to be able to do all of these features, here's what you need to build. So basically, in this picture, it's the Large Hadron Collider. Of course, I'm exaggerating. You're not going to build a Large Hadron Collider, right? But you get the point. You get the point that you need a lot of effort in order to scale your front end, your UI, user interfaces, your back end, your servers, your databases, et cetera. So all of this will require a tremendous effort on the developers' point of view. And these are some of the stuff that the developers will need to consider, typically. So you have your UI, your DB, your servers, your hosting, and of course, you have an included scaling cost and et cetera. So a lot of these problems will happen when you want to try to build something, right? When you build a new app, you want to build something that you are sure is a killer app that will earn you lots of money. So these are some of the problems businesses will face when they want to build new applications. So this is a typical flow of how our development will go. And this is where Firebase comes in. So Firebase itself is a suite of developer tools, a lot of infrastructure tools that allows developers to build apps as fast as possible, as engaging as possible without costing too much in complexity. So let's take a look what this actually means. So the Firebase itself contains so many different offerings here. So you can see that it kind of overwhelms the developer, right? There's so many things here. Where do I get started? So in these kind of offerings, we're just going to go through some of them that really brings a more meaningful into your application itself so that your application has some sort of functionality at least to perform what your customer really wants. So the first thing is that as developers, here are the few languages that is supported here. So we have our iOS devs. Any iOS devs here? None? Oh, Android. Why? Because it's a Google event, right? So all of you are Android. Android, web, web, Unity, C++, then the rest are here for fun. The rest are like business owners or something maybe you're tech enthusiasts. So anyway, these are some of the platforms that Firebase supports. So just a small cheat. The web one is much easier if you want to start learning. So I will go for the web if you're really trying to start in development. So let's take a look at one of the offerings that Firebase has. The first thing is the Firebase Cloud Firestore. So anyone knows what this means besides the word fire here? So Cloud Firestore is actually a product offering by Firebase that allows you to structure data in a database and syncs in real time. So let me just show you a nifty graphic here. So imagine your customer has this application. He says that, I want my application to push updates in real time. Everyone should receive the update immediately on the spot. No question asked. So as a developer, you would scratch your head first and say, how am I supposed to service hundreds and thousands of customers in one shot in real time? This is where the Firebase Firestore comes into rescue. The Firestore actually allows you as developers to write your apps in such a way that it can automatically sync with the Firestore back end and get all the latest updates on the spot. So this is very useful when you want to create some sort of chatting feature or any kind of feature that you require updates to be received by everyone instantaneously. So besides that, as developers, we also want to manage our data in such a way that it is organized in a good manner. So in this case, the Firestore has a hierarchical kind of data structure. So we have a collection of documents. And each document has another collection and et cetera, et cetera. So it goes on further on down and down. And what's good is that you actually can directly filter what content you need. So let's take, for example, you have a list of customers, for example. And each customer has an order history or purchase history. And each purchase history has maybe some transaction details. So all of this information can be organized properly in the Cloud Firestore. And you, as developers, can maybe, for example, you just want to retrieve the products that the customer ordered or maybe the transactions the customer has performed, you can easily drill down through the Firestore and get the data you need. So let's take a look at an example of such documents. So this is directly pulled from the Cloud Firebase Console. So assuming that I have these objects called tasks, a list of tasks is a collection of tasks. So in each task, you will see that there are some details like what is your start date and date, and what is the task that you want to perform. So all of these are stored in a JSON manner. So everything here is JSON types. If you want to write complex data structures, you can easily just add it in as well. If you want to create a list of these data, you can always add a collection. So a collection is a collection of data. It's kind of obvious, right? So in a collection, you have a document. And in the document, you can add more collections. So think of it as a file and folder structure. One folder can have many files. And in that folder, you can have another folder, so on and so forth. So one of the use cases we have for real-time DBs is adding chat functionalities into your application. So for example, let's say you have this application that you want feedback from the users, or the users always like to complain. Who complained a lot? So those who like to complain, then maybe your business manager says, I want an application that allows users to complain immediately when they see a problem. So maybe they see a problem with MRT, they take a photo and snap it and send it to them. And they can get an instant reply from the management itself. So this is one of the features that you can use Cloud Firestore for. So besides that, it also allows you an offline and recent capability, which I will show you later. So if you have an Android phone review and you somehow have an internet connection, I'm going to just do a short demo with you. So if you have a phone, just take a screenshot, take a scan of the QR code, or you can just access the demo APK, and then probably we can take a look what this is. So it's a simple APK that showcases how you can use Firestore in your application as a chatting application. So let me just open the Firestore documentation. So let me just go to the console. And I have the app with me at the moment, so I'm just going to connect it to my computer so that you all can see what's happening if you decided not to install the app. So wow, so many people are sending a message already. So let me just enter my name here. So this is directly streamed from my phone itself. So now there's advertisements, okay? Never mind. That is not Firebase offering, okay? It doesn't put out advertisements. It's because of the streaming I've had used, just so you understand. So this is a real-time database that is currently streaming every time you enter a message on the app itself. So this is running on the Cloud Firestore on the spot. So every time you send a message immediately, all of you should get an update on the spot. So now let's take a look at how Firebase actually handles this. How does it look at the back? So the app I'm using now is this. It's a Flutter application. So let's take a look at the database section here. So these are all the messages I'm receiving in real time. So let me just make it bigger. Yup. So as you can see, every time you send a new message, new updates are being created on the spot. So basically every single chat is a message that goes into the Firebase. So anything that appears in green are new updates that come in. So this is one of the features of Firebase. So next I would like to demonstrate to you and the offline capabilities. So now I want you all to probably, actually you don't need to do anything. So let me just show you from my phone's point of view. Okay. So you see there's a lot of messages, right? So let me just turn off airplane mode. All right. So I'm turning on airplane mode so I don't have an internet connection, correct? So basically my connection is lost. No data is coming into the app. However, for example, let's say you are in a place where there's no internet service and you're using the app. So for example, oopsie. So let me just open it up again. So for example, you're in a place where you don't have internet service and you're using the app to send a message. So in typical conditions, I would send a message directly. In typical conditions, as a developer, you will need to handle this yourself. You'll need to handle this yourself. What happens if there is no connection? You need to have a retry logic at the back to resend the data when a connection comes back online. So I'm assuming on your phone you don't really have that message. So let me just turn off airplane mode. So once airplane mode is turned off, the message are automatically synced at the back on the spot. So my message should appear on your phone so it should be in part of this power of messages. So this is one of the features that the Firebase Firestore actually has is to handle offline capabilities. Not just chat message, but anything in general that you want to save into the DB. So that's one thing that we want users to be able to build and users able to use in your application so we don't want to disrupt the user experience when they're using the application itself. So now with that in mind, let's go through some of the features that was announced in the Cloud Next event because the Firestore has been quite some time already in the Firebase offerings. So one thing Firebase Firestore does is that it actually indexes all of your fields. The reason why they do this is so that searching can be really easy in the app. So imagine you just want to search the top 10 posts or the top 100 posts or whatever. You can easily search it with really fast performance. So this is what Firebase does by default. It automatically indexes all the child properties you have. However, there is a situation where we do not want Firestore to do that. That is inside when you're storing a collection of data that does not need to be indexed. For example, in the right hand side, you'll see something called big drawing. Maybe you're storing drawing instructions that does not need to be searched by your app or does not need indexing. So with this new feature, we actually allow you to turn off indexing on these fields. That way, you don't really need to handle too many of the indexes that is automatically generated for you. So let's also take a look at what Cloud Firestore added since the Cloud Next standard is that we added locations to the Firestore. So if you're familiar with Firebase before, you wouldn't see the location there. It was just added in. So with that, you can actually customize where you want your Firestore to be located. For example, if your app predominantly is from Southeast Asia, of course it is more sensible to have your data stored in that area rather than Europe or US. So with that in mind, the Cloud Firestore has launched these features, these countries for Firestore itself. Of course, not all of them are 100% available at the moment, but these are the planned regions, new locations that will be coming to you. So going on is that we also want to be able to import and export data in Firestore. So let's take, for example, we have two apps, right? One is a production version, one is your staging version. So the production version, of course, is where your customers will be using it most of the time. And you have a staging version where you do your testing or your debugging or your development version whatsoever. So there are times when a bug hits production and you don't really know what is the problem. You can't go around debugging production, right? So if you need the data to be replicated through different environments, you can use what we have, the import export that you can use to export out this data and import it into a different Firebase application altogether. Unfortunately, you have to use the Google Cloud CLI to order to do that. It's not yet available in the Firebase CLI. So this is an example command where we will need to export it out. For example, we can even export it out into a bucket, a Google Cloud bucket as well. So the next thing you want to talk about is authentication, right? Everyone should be able to understand what authentication is, right? So you enter username, you enter your password, and that's it. So Firebase itself has this offering for you to secure your data. So when you build an app, most likely you have something like you need to log in to an app, right? You need to keep track of your users and stuff like that. So typically, if you were to build an app by yourself, you need to do your own access management backend and everything like that. So that might keep you more more work to do. As developers, you have more spending time doing authentication rather than building your app features. Because at Firebase, what we want is that we want users, we want developers to focus on building features that the user wants but not the complexity that comes with it. So let's take a look at what Firebase authentication does. So Firebase authentication has the following field out-of-the-box providers. If you don't want to handle custom allow-ins, you can of course just integrate with Facebook, Twitter, GitHub, Google itself and you're done and you're good to go. So these are some of the ways that you can authenticate. However, if you have already an existing backend system with your own nice backend single sign-on and stuff like that, you can of course implement a custom authentication using the Firebase Admin SDK. It's available as an offering which you can just download the library for Java. You have it as well for Node.js as well. So you can implement this authentication in a way that you're generating a new Firebase token and that token will be used only after you have validated your users on your backend and then you can proceed with Firebase features. So now we have a clear picture of what Firebase authentication is. Let's go through what's new in authentication. So the thing that Firebase has introduced is passwordless sign-in. Means you don't need a password to sign into your account, right? It sounds like a magic, right? So what's happening here is that you as a user will be entering your email only. Once you send your email only, you will actually receive an email, a magic link that is sent to your email and just clicking on it will validate your user and automatically log in with this app. So now this is something that is really good because it solves a few problems in one shot. First thing is that users do not need to think of all the passwords you need. For example, case, uppercase must have number, must have number and symbol, must have emoji or something like that. So all of these weird password requirements sometimes frustrates users. So that's why they just stick to one password policy which is not secure in the first place. So with fast users sign-in, you can actually do a few things. You can first ensure that the user's email is valid. So remember you have those kind of validation emails once you sign up a user and you say we have sent an email to validate your email address. Please go to your inbox to validate your user. So we can actually skip this entire process automatically by using passwordless sign-in, right? Because we are sending you an email and you have to go to your mailbox in order to log in. So basically that kills two birds with one stone. So we make sure that you're the owner of that email address and your email address is valid to begin with. So this actually speeds up the onboarding process of users using your application. So the next thing I want to talk about is the Firebase Cloud Functions. So we all know what functions is. We probably know what cloud is, but putting it together, cloud functions, what does it actually mean? It's basically what it means is that we're having creating functions as developers rewrite functions either in applications or in server side applications like your Java Spring or your Node.js, et cetera. So all these functions can live without an application container. That's what I want to mean. So let's take a look at the traditional approach when you build your bad end, right? So let's say you want to build a bad end. So the first thing you need to choose your framework. So if you're into Node.js, you probably go with Node.js with Express or if you're with Java, you probably go for Java Spring or J2EE, et cetera. And then once you get back out of the way, then only you write your code to perform the function you want. Say, for example, for the sake of simplicity, just adding two numbers. Adding two numbers will give you a result that you want to write in your application, right? So in order to do that, what do you need to do? You need to choose your framework. You need to deploy your framework. You need to test your app to make sure it all works together. So this is the typical approach of how we build your bad end and then you might need to build an API layer if you're planning to connect it to an app itself. So with Cloud Functions, we can actually eliminate most of these steps. You actually just need to write a function in Node.js and then you can just deploy it on Firestore. And that function will be immediately available to do whatever you wanted it to do by calling it two ways, either through a background trigger. So, for example, a trigger when you update the DB at the back or update a storage when you upload new files, the trigger runs at the back on its own, or you can do it as an API call itself. You call a HTTP URL in order to do the calculation for you. So these are some of the ways you can use Firebase Cloud Functions for. So let's take a look at a very simple use case, which is the welcome emails, right? You always get welcome emails. So after you sign up as a new user or you purchase some sort of product, you want your users to receive another email to maybe introduce new products to them or maybe just thank them for signing up to begin with. So these are some of the use cases. So upon a new user has been added into the DB, you run a background trigger to send an email. So you don't have to do it on your own. You don't need to check whether the DB has data or not before you send the function. So this is one of the use cases you have. And the typical use cases we have is to process data in the background because sometimes we need to process data in the background, in the batch process or in some form or another in order to get useful data. So let's take about this maybe a millennial kind of point of view. He has a chatting app. So he enters in English and at the back it runs a clock function to translate it to emoji. Of course this is fun but not very useful but you get the point, you get the point that at the back end this information is translated to emojis. So let's take a look at a more useful example which I've created which is a gallery app demo. This is an APK, don't worry. So this is just a basic web app that you can use. So in this application it is actually a gallery application. So a gallery application what I mean by that is that this application allows you to upload pictures and all the pictures that you upload will be displayed here kind of like Instagram something like that. But the key point here is that the clock functions is running at the back every time you upload files because you don't want to download the entire size of your image every time a new image is added by your users. So if you will go to the app here you can just go to the following link and then in this application alone so let me just take my phone so let me just go back here I'm just going to access the app on my phone so this is the application I'm running at the moment and take a picture. Hello. So as you can see once I upload the picture actually generates a thumbnail at the back and replaces that image once the thumbnail generation is complete. That way I'm not downloading a lot megabytes of data from your camera to the app every time a new value is added. So go ahead if you're sporting enough to probably show off your photos you can probably do that. So at the back it's all in the cloud functions of its own so I mean stored in the Firebase cloud storage so let's just go to the web app you will see that the updates are updated in real time as well so it not just crosses devices actually crosses platforms as well so everything is synced immediately in real time so of course this is thanks to the Firestore so let's take a look at the back end what happens at the back so let me just open the code so I have it under the gallery demo Firebase application let's take a look at what's happening so we see that they are around quite a large number of downloads already let's take a look at our storage so in our storage which I'm uploading my pictures in there are two sets of images one is the images that is sent generated by the camera and those that is generated by the cloud functions which is denoted by the term prefix in front so all of these let me just take one and show you so all of these thumbnails are really small in size so this is 9KB or 8KB or 11KB of course you can compress the images even further depending on your need but this is just to showcase how cloud functions work it helps you run the function at a certain point in this case a background trigger that triggers these functions that triggers this function that generates the thumbnail so let's take a look at the function we have called generate thumbnail so let's take a look at the logs so every time a new message a new value is added in the the storage the trigger is immediately run in order to create that thumbnail as well so now I have a quota exceeded error because I didn't enable billing so let's just ignore that so this is one of the examples that you can use Firebase functions for not just necessary for galleries demo there's a lot of different ways you can use cloud functions in order to perform what you need so let's take for another example is that most businesses has a partner with a different technology company so for example I as a company A is partnering with maybe Lazada or some sort of e-commerce app and I need to sync all the data back into our backend but we as a company we never actually created APIs if we were to create APIs and give to the partner companies it will take time right so what cloud functions can help you do is to generate APIs that you need which you can give the URL directly to your partners and they can implement in their system in order to sync data between external services so this is one different one more example that you can use so the next thing that was announced is the ML Kit the machine learning kit available on Android and iOS so unfortunately it's not available on web at the moment because there's still some technical drawbacks they need to figure out so let's take a look at what ML Kit does in Firebase so ML Kit is basically a library which you include in your Android or iOS app that allows you to do machine learning immediately on your app without internet connection without connection to the internet so it's a more low latency but less accurate however it is accurate enough to do more of the simple models that already exist for example taking a doing some OCR scanning some barcode detecting faces detecting landmarks all of these features are already included in the library for you as a pre-built model however in certain days or certain times you don't really need these models you want to build your own model so let's say you have a TensorFlow model of your own you can actually upload that model into your Firebase console and then the ML Kit will work for you as well so this is an example that I did the other time so this if you will do it from the cloud you will actually use the cloud vision API which is a there is a latency because you'll be calling a HTTP API but this is running in real time in order to make life a bit more easier makes your app less pertinent to problems with latency so this is more of a low latency and kind of accurate ML that you can use that you can integrate in your application itself so the next exciting features I want to bring to you is that we have something called the Firebase in-app messaging so this was just released last week and my slides was done today before that so I had to panic and then add this in at the last moment to share with you guys so first thing is that let's try to figure out what is in-app messaging and cloud messaging itself so we have two types of messaging one is notification FCM right you would use the Firebase cloud messaging and the in-app messaging so Firebase cloud messaging is mainly used for notifications right you have an application that you don't use for some time you get notifications coming in and that is normal FCM however for in-app messaging we want to deliver content to the user when they are still in the app so this is an example of what we can do so for example take for example we have two different users right one user has just completed a level in the game and then you want to inform them that new challenges are available of course we won't send them as a notification because they are already in the app it makes no sense to show it on the notification and you click but you're still in the app so what we can do is that you can show messages in the app automatically without much coding on the other hand you have users for example who are first time onboarding into an application so as maybe e-commerce sites you will get free coupons because you're a new user so you can easily do this with the Firebase cloud storage sorry with the in-app messaging itself so the first thing is that developers will need to know what kind of content that we can put in an in-app messaging so not just developers but marketers as well right so in this feature we want to enable marketers who are non-IT savvy but they do well in marketing as their own forte to be able to engage to users without developer interference so if we do this in a normal application you will need to go through your developer you need to build some sort of campaign for my users then you go through and go back and forth what kind of content is supported, what can be done what cannot be done in the application so this solves this problem by allowing you to do all kinds of things so we can have target we can also target certain groups of users so this kind of group of users who are always most likely to buy things on a Sunday so we can target and push messages to that specific group of users or we can always target a group of users who always open the app they scroll around but they never buy things so we can target them and give them a coupon to increase the chances of them by purchasing something so of course we can customize the content depending on audiences and you can even customize the layout of the content as well so as I mentioned earlier your marketers be able to understand able to design the application the messages themselves so maybe that's a sign that is taking too long so let me just hurry up and show you a quick demo so this is still in beta so it might work it might not work so let's take a look at it so I had it in a totally irrelevant application so let me just find it for you so in one of my projects I can set up my in-app messaging on the left-hand side you'll see something called in-app messaging so let's say I want to create a campaign to tell users that they get 50% off the first time they use the app so I just create a new campaign you're actually presented with this screen that allows you to build what you want application to look like so I'm just going to enter something just a simple message and we'll probably say something like this just for the fun of it so of course a button has to be linked to some page in your application via deep link but for now I'm just going to put something normal so just put it like this so then you can of course enter the name if you target my campaign so it's like new users and I can select the application on the one so you can actually add more targets as well so if you have analytics set up which already have data on what kind of users you want to target you can set that out as well next you can of course do scheduling as well so in this case I'm going to start it now and it only fires on once per device for this campaign so you actually don't get spanned by the messages which is what we don't want to do in your application so I just click publish so what happens here is that this message is actually sent to all users who are using your app at the moment so let me just run let me just show you the code that was done to show that it's basically just importing some libraries here and there so we have our changes in our some changes in our cradle file so we have some dependencies for Google services and we also have some dependencies for the in-app messaging and basically there isn't any other code besides setting some analytics information which I will showcase later so let's just try to get this running so I have an emulator with me so this is a very basic app so let me just show you the app and you will see this message once I open the app you will get a message immediately showing you what the marketer has sent out so this is a good tool for marketers because they don't need to bother developers and you won't spend money and time building the features in order to just build this you can easily do this by using the Firebase console and by third party users as well so this is one example the other example I have is for example you have an existing user who is inside your shopping app and then you want to send a campaign to increase the chances of them buying something add to cart button so once you click the add to cart button you want to show them a message to tell them that if you buy this item you can get maybe 50% off something like that so we can actually build that as well by creating a new campaign in this case I will probably mention it like lucky you so maybe I can add some images as well let's see anything happy let's just take Chris Perks please image address let me just put it here and click next so the next thing I want to focus on is that is the scheduling here I want to include one more event I'm going to remove the foreground event I can add one thing called add to cart so there is an add to cart event which can be a custom tag which I have included here so in my Android code I mentioned that once the user has clicked add to cart button it sends out an analytic event of add to cart so we know that is an add to cart activity that is going on so once I go to my console here and click publish so all users who actually click on the add to cart button should be able to receive this message so let's just try it out hopefully it works so press then you get this message you can of course customize the content of your message to show different items depending on what you want to show so this is a new feature that was released by Firebase just last week ago to help you engage your users and get more out of your application so let's continue on with the rest so the next thing I have is Firebase hosting where you can host production grade web into internet so there are chances where for example we have a very nice website and it's written in Angular maybe if any kind of client side rendering so and you want to host it in a way that everyone who have access to it won't have any problems with the server when there's too many people using it so Firebase hosting is actually production grade so don't worry about scalability and it works really good so with the new features released in cloud next what we have now is that we have something called multi-site hosting so earlier on you're only able to host one site per Firebase application but now you can host as many different sites as you want on the application itself so you can have like an admin site you can have a customer site as well that lives in one Firebase project so it's pretty handy to use and it's only available to Blaze plans onwards so let's take a look at some configuration information so this is inside of the Firebase.json so you enter your configuration in here you have two sections, two hosting information one is a blog and one is your app so you just specify what is the name of the application and what is the path towards your static HTML CSS, JavaScript files are located and basically you can just run the Firebase CLI command to host whatever things that you want so in this case I'm going to host my blog and the name of the host's name itself and you can get it deployed on the spot so with that in mind Firebase hopefully Firebase has helped you understand better as developers and as business users how we can get our app from zero to hero in really quickly way without costing developers too much effort and too much problems so focus more on what you want the users to do in your application rather than building the complexities around it so here's some information if you want to learn how to use Firebase you can always go to the documents which are really really helpful when you want to get started with some use cases or some cases that other companies has faced you can take a look at some of the Cloud Function code examples that is provided by Firebase itself on GitHub so if you want to know how the gallery demo that you all saw just now was built you can take a look at my GitHub link as well and if you want to learn how to build your chatting app from scratch you can always check out the code labs which is really helpful with that now let's go to the last part of the section here is our Q&A so let's take a look at our Q&A so we have a few questions so do you have any C-Shot or .NET call support unfortunately for call support there is none however there is still C-Shot support but if I'm not wrong still not supported officially by Firebase itself so it's written by developer advocate for .NET itself so you can check that out what are your opinions on PWA in Firebase so for those who don't know PWA is Progressive Web Apps so Progressive Web Apps is where we want to move app users back to so that they won't install so just now how many of you tried to install the chatting app or didn't want to install because it's an APK and I have to download it and a lot of things to do so yeah we have a one or two the rest thank you for your support so those two not very nice joking so this is where PWA bridge the gap where you can actually launch an app without actually installing anything so a question is is PWA compatible with Firebase so let's say yes because PWA is essentially web so as long as you use the web SDK available to you on github you should have no problems using Firebase with PWA on its own in fact the gallery demo that provided to you was written in ionic that supports PWA I just didn't turn it on so can we use Firebase for Xamarin app so Xamarin runs on the C-Shot environment so yes you have limited functionalities however you still can access the API calls that Firebase has provided although you lose all the real-time functionalities that comes with the Firebase itself so let's talk about the difference between real-time DB and Firestore so if you notice I never mention anything about real-time databases so in Firebase there are actually two database offerings one is the real-time database and one is the cloud Firestore so let's talk a bit about the differences based on before Firestore was released everyone was using the real-time DB the real-time DB has real-time capabilities as same as the Firestore however there's a very significant difference between them so the real-time database do not have powerful querying capabilities I'm not able to filter a collection in a collection in a collection and just retrieve what I want so this is something that Firestore Fire real-time database has lacked over the time Firestore has come into the rescue and fixed these kind of pain points in a new DB offering however Firebase real-time DB has much faster synchronization compared to the Firestore so if I'm not wrong Firestore takes at least 5 seconds in order to push updates to all of the devices however real-time DB is much lower than that so there is a significant difference however 5 seconds difference in some situations might not be applicable or applicable so you have to go through and think which one suits you best but in my case so far Firestore is sufficient and provides you more features that you will need compared to that small latency difference so does it have backup and replication support so unfortunately at the moment the only backup you can do is to export it out and keep it somewhere if you want to do it like a cron jaw or something you can maybe you can use the cloud you can use the Firebase admin SDK outside the box so you basically can't do it directly in the Firebase console but there are many many libraries that is provided for Firebase to allow you to just do this you can even write something very simple Python script to just export your data every few days with the new export feature so what are the programming languages the cloud function support so is it only Node.js at the moment from my understanding Node.js is included and two new offerings were added I think the speaker later for cloud functions will mention it more so stay in tune for that but yes but not just Node.js but other languages are supported as well for Firestore can we add attachments for example binary file data files of course you can serialize the binary data files and store it into your cloud Firestore however I don't recommend it but you can do it not that you cannot but we rather not take Firestore to download all of that content every time the user updates so if it's really small stuff like maybe a few kbs I think it's fine however you have heavy stuff like Filmex I would concur against that you would probably be better off using the cloud storage and then you can of course put the storage bucket information in your real time or cloud Firestore DB will cloud Firestore come to Singapore this is the exact same question I've asked the Firebase team when is it coming to Singapore since Singapore you have data centers kind of obviously should be here right but at the moment I have still not yet gotten any official reply from Firebase so let's just wait and see so backup policies and backup location unfortunately we don't have anything built into the console you have to do we export yourself and policies probably you have to specify what kind of policies you want to do with yourself for authentication there's many users who will only be able to access documents they have access to or will have access to the whole so for authentication itself Firebase authentication actually allows you to do different kind of authentication for different kind of products so let's say for Firestore you have an admin you have a user only the user should see user data only the admin should see admin data only the manager should see financial data for example all of this can be configured via roles so when I say roles it is not really like you have a place where you can just tick tick tick and set roles but you have to write Firebase rules Firebase rules in order to specify which documents can access which documents can be accessed by a certain user and which documents cannot be accessed by a certain user if you go to YouTube and search for this exact keyword for roles and authentication and Firestore you should get a comprehensive guide by the Firebase team that actually goes you step by step in order to help you achieve this unfortunately China is still out of the way we are still not able to use cloud messaging services in China the we'll be able to share the pricing tier for cloud Firestore and real-time DB I'm not very sure about this however there is a free tier in Firebase that is really generous so just go ahead and create a free account with no billing information you don't even need billing to get started and you should be able to scale your application to at least a few K users okay so let me just cut to the last message here build alerts yes everyone is afraid of money not afraid of getting charged a lot of money so in the Firestore console itself there is no way for you to set that value however you can set it in the GCP console so if you go to Google Cloud console you can set a budget and then when it hits a certain threshold it will immediately notify you so that you can scramble and do something about it or probably add more details so I guess that's it for today thank you all for listening hope you all get something out of it thank you bye