 You know, whatever, just having a conversation. So, oh yeah, one thing I wanted to mention for Saras. Decorators stopped working in Babel 6. And if you want to fix them, use this, right? The legacy thing, they just recently built it. I was waiting for weeks for this thing to come out. It's very, very useful. If anyone's using decorators in their old code with Babel 5, and you have been stuck because of that, now you can upgrade with this thing here. It's really nice. Anyway, so, hi, I'm Sebastian. I do some stuff. And I try to solve all my problems with JavaScript. OK, so I had this problem once upon a time that I didn't have a motorcycle. So I got a job, wrote some code, got paid, quit the job, bought a motorcycle, problem solved, JavaScript. Thank you. So then, like, as everyone knows, he's got dutches. And I ride around all the time, sometimes crash, and have just generally a lot of fun. But there was a problem, right? When I'm riding around, it's really loud and stuff. So I wear these little earplugs, and then you can't hear the engine anymore, so you get bored. So I bought this helmet. And with the helmet, it's all sealed off and whatnot. So I thought, hey, can I get some music up in here? So I bought this thing. And this is pretty cheap stuff. This is $50, $100, something like that. And it comes with Bluetooth. So you connect it up to any device. And I was thinking, OK, this is cool. And I can use Siri and talk to it. But Siri is kind of not very, very good. And I was like, JavaScript should solve this, right? So I was like, OK, what can we do with JavaScript? Well, it turns out there's this web speech API. So if I'm riding around, and I've got Bluetooth in my helmet, I've got my phone in my pocket, shouldn't I be able to Bluetooth to the web speech API and talk to my phone instead of talk to Siri, and use my own artificial intelligence or something? So that's not what I did. But I did use the Web speech API. I'm not quite there yet. Turns out I have the wrong phone. I have this Apple iPhone thing. And it's bad because it doesn't really support this stuff. Firefox OS. Yes, Firefox OS. Actually, or Android, that's also fine. But Firefox OS is cool. What would you install Chrome on your iPhone? It uses the same Safari. It's fake. Mickey Mouse. So it turns out there's two things in the Web speech API. There's speech recognition and there's speech synthesis. And if you go, can I use? It'll tell you, yeah, it's totally supported. Turns out only half of it is really supported. So the speech synthesis is supported. So you can do text to speech. But you can't do speech to text. It won't recognize it and turn it into text that I would want to do. So on iOS, you can do that. But on Chrome, on Android, you can do both. So I was like, OK, well, at least I can play with that. So I was sitting at my computer and quoting something up a few months ago. And I haven't yet gotten onto an Android phone because I haven't been able to buy a phone yet. Maybe get another job and then get paid for that. And then quit and then buy a phone. So that's how it works, right? So basically, I built a little demo here called Hands Free. Because the goal is that I can control any web app through JavaScript from voice recognition. So I want to be able to just talk and control the web app. And if I'm building a normal app, I should work with any web app. So I should work with the normal navigation controls, like links and buttons. That's sort of the basic stuff that I want to do. So I've got this repository. And you can go and clone it. And once you've cloned it, if you're using a new client like me, forget, then open up in terminal, totally epic. So you can run some tests and see that it probably still works. I don't know. Here we go. Come on, come on to the computer. Yes, OK, it works. Fantastic. You have one test. App exists, all right? So my tests are mostly linting. So I'm running standard, and I'm rinting my CSS. That's it. So it's a, yeah, yeah, OK. Damn you, man, damn you. Give it away. OK, so how does this work, all right? So let me check the read me. There's a bunch of stuff in there. So if you run npm-start, there's a bunch of stuff. But it says wow here, so I'll run that. So if you run it in dev mode, I spin it up at HTTPS. The reason, actually, if you run it without HTTPS, then the browser has these permissions thing with the WebSpeech API, and it'll ask you every time you want to invoke the speech listening thing. So it's listening in the microphone. And you'll have to give it permission every 30 seconds, because it keeps breaking the connection, and they have to instantiate a new one. So whenever I start listening, I have to create a whole new connection, and they ask for permissions over and over and over if you're on HTTPS. Whereas if you're on HTTPS, you click it at once, and it sort of remembers it forever, or for the whole day, or something like that, or entire session. So that's really, really nice. So I've included a little command if you want to generate a self-sign certificate and spin up a local server with HTTPS. So it's really simple to use. And this is just obviously a really ugly default prototype thing. And what you can do is you can start voice control by clicking this little button here. And this doesn't work in Safari, like I said. OK, never mind. Demo fail. So in Chrome, however, it's a self-sign certificate. Until I get the acne thing working. Hey, where'd it go? Ah! Oh, I said, ah! Yeah, sorry. You can just import this for your own root certificate to your browser. Excuse me? I'm on the route side. You don't need to have your certificate applied. You just need to import your own root certificate to the browser at your time. OK, full request welcome. Thank you. So start voice control. Now it starts listening. And it doesn't ask me. Normally it asks you to pop up. You click Allow. So obviously you can't just randomly do this to any website. But you have to click once. And then it'll start recording. So I should be able to control the buttons and the links, because that's what I will use for my web application. I want to be able to listen for anything. And whenever I speak the element while I'm riding on my motorcycle, remember, I'll be able to say, hey, Jarvis or something like that, and then open a little menu. Because that's really just a link. And that opens a little menu with other links that start playing music or open a video on YouTube or something like that. So you can imagine building a normal web app. But then using this in the background, just one little script file that you drop in and you start it. And it just starts controlling your web app just by clicking around. And it's just like a normal single page app then. So if I say hello, it probably won't work. It's like, I have to stop and start it probably. It's recording the whole time. So it only cuts out once in a while. So you've got to, it still needs a little work. OK. Hello? Success. So hands-free, OK? All right, thanks. So that's one problem solving at MSPJP. I want to show one more real quick. So as some of you may have heard, I kind of teach a class now. And in doing so, I lost my voice because I was speaking a lot, not drinking enough water. And it happens, apparently. So for about a week, I couldn't really speak much and couldn't say much. So after inviting all my friends over from most of the crowd here to come and talk instead of me and running out of cool videos to show during the class, I said, OK, why don't we take the second part of the speech API, which is speech synthesis. And maybe JavaScript can talk for me. So it was just a small little hack that I did, a little code pen. And I'm using the speech synthesis and speech synthesis utterance objects, which are supported by Safari as well. So now this works in both Chrome and Safari. And a little bit of code, I was able to put together a thing that just says, like, allow a class. All right, cool. This is pretty sweet. Et cetera, et cetera. So the nice thing is not only does it record my voice, it also creates a log. And I can just copy, paste that into notes or in a chat room or something like that. So this was just a little fun demo that I did with JavaScript. And I think the speech synthesis API is really powerful for a lot of users that have accessibility issues. And you can create your own tools now instead of just relying on these ancient screen readers, we can use this instead, build browser extensions that use this. I think the speech recognition API is also going to be really cool. I'm kind of hoping to have access to an Android phone someday to be able to build something from my helmet. And I'll definitely try to record that. Maybe do a Skype call-in. That'll be interesting. Probably die. All right, so that's what JavaScript does for me. Thank you.