 Thanks, everyone, for coming, first of all. I really love coming here specifically to San Francisco, to this event, to this room, or the room downstairs in the last two times. It's always a joy to be with you all. And what I want to talk to you about is a bit on WebRTC on mobile. I'm not going to do a lot of that because we've got better speakers for that than me. And the first thing I want to talk about is our expectation. When we say WebRTC and we think about where it should run and how it should execute, this is what we have in mind. It needs to run everywhere. It needs to run on the desktop, on browsers, on mobile, on tablets, everywhere. But reality is slightly different today. Reality is that if you want to run WebRTC out of the box, the only place you can do that is inside a browser and in specific browsers. Not all of them support it today. We're not going to whine about it. We're not going to check why that's life. That's how it is. What we're going to do today is speak again how we end up getting WebRTC into mobile because mobile for us is the most important platform today. And the reason it's so hard to get WebRTC to mobile is the second part. Mobile is also the most complex platform that we have these days. It's a smaller device, less CPU. We've got battery issues, but then we've got a lot more accelerators, a lot more sensors and information that we can get in so we can get more context out of it. And now we need to fit WebRTC into that environment. And we have two of them. We've got the iOS and Android. So the question that we asked is, how do you get WebRTC into mobile? And we wanted to make an event that would answer that question in the best possible way. And the thing is that in order to answer that question, the first thing that we need to do is to decide, well, what mobile exactly is for us? Because mobile comes in different shapes and sizes. There is the web application part. I can just run web applications in the browsers or I can develop applications for the mobile device. And these I can do either as hybrid ones or native ones. When you talk about web applications, we have two platforms to think about. Okay, iOS and Android, what we want to do is to get WebRTC to work inside the browser. Now, iOS doesn't work today with WebRTC, no matter what you try to do inside the browser. You can't really go install a browser and have WebRTC work on it. Chrome doesn't work with WebRTC on iOS today. And even if it would, do you actually go and ask a person to install a browser on his device in order to be able to run such a thing on it? Doesn't make sense. On Android, though, we have Firefox and Chrome today that support WebRTC. We have more browsers support WebRTC on Android. Doesn't really matter. One thing to remember when you get here, by the way, is that on many of the Android devices out there, Chrome isn't the default browser that comes with the phone, okay? Any of you have an LG or a Samsung phone? Okay, have you noticed the fact that when you open a URL, it doesn't really go into Chrome directly. It goes to some other browser instead. That one doesn't support WebRTC, okay? So you need to take these things also into consideration and what do you do then in the flow of your application. There are ways to do that, but not today. The next thing that we're going to look at is hybrid. Hybrid means a cross-platform application we're trying to build. So we're not going to build an application for iOS and a separate application for Android and when you fix a bug in iOS, you go and fix a bug in Android and when you add a new feature, we add it here and we add it there. We want to use a framework or some kind of a mechanism that would allow us to develop once and run many. And there are two alternatives when we do that. The first one is to use WebView. For those of you who don't know, WebView is simply getting an HTML page inside the browser that can render HTML pages and JavaScript code, okay? The other alternative is to use compiled code. So I write something in scripting language, one type or another, even JavaScript. The codes get compiled for my target device. And then I can write all of my application ones, the application logic ones and just the UI, write it twice to fit with the different nuances and modalities of iOS and Android, okay? But I can now look at development and do it in a different way. Now, if you talk about WebViews, the way we do it is we take JavaScript code because it runs with HTML, we need to run it in a WebView. We need to get that code to run on our device. One of the most popular ways to do that is using Cordova or PhoneGap, the others, but this is the most popular one. And to get the JS code into the device, we just pass it through PhoneGap. And that does the magic of getting that to run properly. Now, to get WebRTC to run as well, we just add WebRTC plugin to PhoneGap. You go online, you search, you'll find two or three of such plugins, you can try them out, some of them work better, some worse, but there are alternatives out there. The second type is compile code. I need to compile the code and run it, I can use Samarin and then use C-sharp, react-native, titanium-accelerate or other such frameworks and platforms, some open source, some proprietary and commercial. Today, we're going to look at react-native, later on in one of the talks. Now, when we talk about native development, what you want to do is to run natively on the device. And for that, you need to take WebRTC and split it or your application and split it into three different parts. There's the application part, which you know, the code that you write today and do very well how to achieve. And then there's WebRTC core engine. And that part is written in CC++. And on top of it, there's a kind of a glue that will get the WebRTC functionality that you need into your application. And when you talk about iOS, that glue is going to be Objective-C and your application will be either in Objective-C or Swift or both. When we move to Android, then that glue is going to be JNI. Your application will be written in Java. And there's this minor complexity, complication, or detail that all of the low-level media stuff, you need to access through Java and you can't access through CCode. So you get these libraries as well from the WebRTC code, but you need to know of these different changes and architectures that are there. And then the question is, which one should we use? Should we go for a Web application, a native one, a hybrid? Which framework do we need to take? Well, I just have no clue. I don't know. It is going to depend on you, on your company, on how you work, on the structure of the team that you have in place, on the know-how that you have in the company, on the requirements that you have, and on what you want to achieve. So what I want you to do today is to listen up to the rest of the presentations that we have. We've got a lot of content for you and to be more informed in what you're going to do and to make better decisions when you go to mobile. So what we did was collected the best speakers that we could find. Really, we found very good speakers. I'm very happy with the speakers that we have. And they are going to talk to you and to give you a lot of information, things that I haven't known until yesterday when we did a lot of the dry runs. The first part of the day, we're going to look into the actual operating system. We'll start by talking on Android and then we'll move to iOS and the details of what you need to do when you go and pick the code from WebRTC.org and compile it and run it. All the things that you need to do, the ugly stuff, the black work that needs to be done to get things in place. After that part, we're going to go out on a break. Then you'll be able to mingle, ask questions, talk to each other, refreshments, the cafeteria on the other side. After the break, we're going to be back and then we're going to talk about, I'd say the part of somewhere between hybrid and native development and we're going to have sessions around using C++ as your cross-platform development which for me was very new to see someone does that with WebRTC on mobile. It was like, okay, someone is really brave and that's a very interesting talk. Then we're going to listen for the react-native one, how to get that done and what happened there. From there, we're going to segue a bit. Something that is really necessary in mobile is to look at the errors of quality and what we have is a session around video quality on mobile. Mobile is a very hard environment to do video on in real time over live networks. Usually are on us, okay? And we'll have a talk about how to do that well. Last but not least in this part of the day, we're going to look at reverse engineering duo. Fipo is with us almost every year and he's going, he tinkered into Google Duo and he's going to look at it and say how it is built inside, how Google decided to build their mobile application using WebRTC and what we can learn from that. Afterwards, we're going to have an additional break, then a quick session by Girl Develop it and why we're doing these things with them. By the way, it's hard to find women that are willing to speak in these events at Cranky Geek. If you know someone or you are someone, please come to us so that next year we will be able to put here a woman that will speak. I really would love to see that happen. Then we have the WebRTC team from Google that will talk to us and share with us what they have seen in the last year on the market, statistics, what they are doing, the roadmap. And last but not least, again we have him every year in San Francisco and I'm very happy that we have you here today again. We have Tim, he's our magician. He usually does a demo on stage of something very interesting. He's also the only guy in the room that is allowed not to go through our drills before. So he didn't do a dry one with us, which means that for me it's going to also be a surprise and as usual I'm sure that this is going to be a very good surprise. So thank you all and enjoy the day with us.