 Oh, wait a second. Can I speak my favorite Fox? Can I? Seriously, I'm off-brand. This is not working. All right, not better. So that's me. This is me as well. This is my Fox. He would kill me. This is Bela. We are both from Hungary, Budapest. Yeah, as we're previously introduced, I'm a JavaScript developer doing a bunch of open source stuff. And in my free time, I mock around with microcontrollers and hardware, not as much as some of you folks, but just casually. And I love what Chima said just a few moments ago, and you will see why in just a moment. So actually, I think I have a pretty cool demo, and I only have 14 minutes left, so I'm not going to talk a whole lot. I'm not going to show you the slides, but if you are interested or want to check out the source or stuff, there's a talk.flug.is.play. You will access the slides, so you can check out the links and shit. There's also Twitter channels for Cloudy Boy, which is the thing I'm going to be talking about, and SLSoftverse, which is the person who is talking about the thing I'm going to talk about. So feel free to ping me on Twitter. Like I was announced, I'm going to be talking about putting JavaScript and games onto microcontrollers. And to get a grasp of what I'm going to be talking about, we have been talking about Kickstarter today, so whoever knows what these things are. Who's seen these ever? If it helps, one of these is the Arduboy, the other is called the Tiny Aircade. I will help you a bit. This might be much more... So these ones, you're probably more familiar. So basically, what happens here is this is just this except the nicer polycarbonate housing. The Arduboy is basically an Arduboy in micro, packaged off with a screen and a few buttons. And that's cool, right? You can just order the parts, create it, put a buzzer on it, a few buttons, wire it up, and it will just work. And let's see if this works. Now I'm just plugging it in for power. I'm going to show you this a bit later. And then you've got a game on there, right? And that's pretty cool, except what you need to do that. The idea was they made this Kickstarter campaign and it was like, everybody can just download the Arduino IDE and create these games, right? They would just upload them to GitHub or whatever, and we can share all the games that they made. You know what the problem with that is? The problem with that is that with the Arduino IDE, you're programming in C and C++, right? Not as easy to get people to start programming C and C++ games on like tiny hardware, like resource-controlled, resource-contrained hardware. Because they're going to need a bunch of... They're going to need to be... No? Okay, it runs. They're going to need to understand the quirks of C and C++ and they will need to figure out how all this works. The other problem is Arduino IDE is not the easiest thing to be working with in the first place. And then again, we're not talking about blinking LEDs anymore, right? We want to put some graphics in there. For some graphics, you will need some bitmaps, sprites. You will need some sounds. You will need some tools to create all these graphic assets and audio assets that you would be needing. So here is where Cloudboy comes in. At the very first moment, it was just a C++ IDE to create games for the Arduino. This is where I go back to what Chopin I said. You know, the web is pretty cool that you can create all these nice interfaces and you wouldn't even know. Let me see if I can get... Yeah. So what you've just seen, and I will be talking about this in a little bit more detail, what you've just seen on the device itself is from a talk I gave last year at the conference called RooJS. So what you've just seen was this game that you might know from a certain web browser. The other problem is, you know, you created an IDE and then you were putting source code, compiling the source code and putting it onto the device itself. That's pretty cool, except you still had to program in C. And this is where another thing comes in that I just pretty recently created, which is basically you can create the game in JavaScript. The JavaScript API is using the canvas, if any of you were working with Web Dev, you know, you're just creating using a library or basically using the built-in JavaScript canvas. And you can create a game that later on some nifty stuff is going around in the background and your game will be running on the browser so you can preview it like I just did. But also what it will do is, oh, I just messed up. Doesn't matter. I will show you the other demo. So the game will just run on the device itself, right, on the browser itself. You don't have to, you know, when you're developing for microcontroller hardware, it would be, you know, make some code, compile it, flash it, wait until it flashes, try it out, oh, shit, I screwed up a variable declaration or something, you know, debug stuff like this. Now you can just do this on your laptop in JavaScript. And at the end, when it works, actually, just compile it to the device and put it onto the device. So to see that I'm not talking shit here, let me see camera. So, hello. Oh, yeah. So I'm just going to plug this in. So now it runs the Dino game. But what I'm going to do is I'm going to say, hey, you see, so on the left-hand side, you will see a JavaScript code, basically. It is 100 lines of code. The whole game that you're seeing here is basically 100 lines of JavaScript. Pretty straightforward. You know, you can shoot around aliens, space invaders. It's one of the classics. What you see is 100 lines of JavaScript code. When I press this button on the top left, what it does, it compiles, actually, it translates, basically, into C code. You know, some things work, some things don't work. Like, we don't want to create platform parity. There are a bunch of things. You don't want to replicate the whole of JavaScript in C. That's not the point here. You don't want to, you know, all the quirks and edge cases of JavaScript, you don't want to replicate them in C. But most stuff works, and like the basics work. So what you will see here is when it compiles the code into C, you just press the flash button. And you will see the, all right, there you go. It's already flashing. And tada. And I'm unable to play with it, but it works, basically. And again, I'm referring back to cheer my stock, because, okay, so this device is basically connected by a serial port. How do you flash it, right? So currently, I also have a daemon, which is basically very similar to what the folks over there use. You install the daemon in your local device. On the cloud, your code is compiled. You just use a website as an editor or a local. Here, I'm running a local version just for demo's sake and to ease up on demo gods. But you could be running this whole thing from a web page, from a web browser, and just using a local daemon to flash your devices. For some other devices like this one, which is totally empty and no battery, which is not useful. So with the Tiny Arcade, you actually get a microSD card. So what you can do is basically you create your code, you hit compile, you're downloaded, you're offered to download a hex file, basically a bin file, which is basically a firmware. You just copy that firmware, like download the firmware, copy it onto the SD card, hook it up to the device, and it just works. You don't even need any flashing or any actual hardware or daemon to run. Somebody showed the BBC MicroBit. The BBC MicroBit, you can just flash from your Android device because it just works over Bluetooth. And, you know, there's just one thing that you get this very easy flow. People can create games and debug games and share it onto microcontrollers. The other nice thing about this is actually you yourself can play this because this is just a web, right? This is just a web page. So if you hit, let me see if I can find a link. Now, there you go. If you go on your mobile phone or your laptop and hit cld.bi.shure.js, you can play the exact same game, right? Because it's not just made for a microcontroller, it is made for the web. So it will work on your mobile phone. It will work on your laptop computer. You can share your games with friends, you know, have them play it if they don't have a device either. The other interesting and nice thing about this is just one more bit that is pretty cool. So, okay, for example, okay, I don't care about JavaScript, right? You can see, you would say, I can create games, right? And I wonder how you would create the bitmaps for this because I'm pretty sure nobody would want that it is pretty terrible UX to be creating bitmaps like this, right? This is basically, you know, every byte is like 8 pixels, a column of 8 pixels. Every bit you set is basically going to be a pixel representing the final image. You will see when you have a web ID or a web interface, you can actually extend the features of the web interface with stuff like this. So this is great for learning, for example, because now you know what kind of stuff like I'm going to rewrite this to ff, and you will see it change. But it's not just interesting because of that, because at the end of the day, you will get this image, right? You will get this image, so what I can do now is I can actually click it if the demo gods are with me, or maybe I will reload the page just to be sure. Oh, there you go. And how about flying saucers? I hear people like flying saucers. Let's just... Yeah. Oh, let's make like this. This should do. Voila! You got a little icon of a flying saucer in there. So when I go in there, you will see it actually changes the code. Oh, this is a special representation for easier programming. So now I compile the code. You will see it changes there. I'm going to flash it again. See if this works out. And... You don't see a thing, but here it's going to be easier. There you go. Let's focus. So you will see that little flying saucers are in there. So basically it not just gives you the tools to put games on microcontrollers, but also gives you the tools to increase your own productivity and make more creative stuff. So if any of you want to try this, feel free to ping me after the talk or anything. And you can fly the slides on that link. And thank you for listening.