WEBVTT 00:00.000 --> 00:04.520 Oh, he's crazy. 00:30.000 --> 00:54.000 Okay, welcome. This is a presentation about microlog 2.0, it's a programming language for microcontrollers. 00:54.000 --> 01:02.000 So I made my presentation inside of a microcontroller. 01:02.000 --> 01:07.000 So what is micrologs exactly? 01:07.000 --> 01:18.000 Well, here's Rosa, our mascot. She takes the name from Rosa Peters. Rosa Peters was a mathematician 01:18.000 --> 01:21.000 who developed the theory of recursivity. 01:21.000 --> 01:27.000 And we like to think that you can design a programming language for kids that 01:27.000 --> 01:33.000 high-level enough and abstract enough that you can even teach recursivity recursion with it. 01:33.000 --> 01:38.000 So that's why we chose Rosa as our, as the name for our mascot. 01:38.000 --> 01:44.000 It is a bunny because of three reasons, bunnies are small, just like our language. 01:44.000 --> 01:49.000 They're fast, hopefully just like our language. And they are human-friendly. They're not scary. 01:49.000 --> 01:56.000 They're not like a big, powerful animal. They're just cutly and fun to play with. 01:56.000 --> 02:00.000 So oh, I'm taking a picture. Of course, it's clear that I need to. 02:00.000 --> 02:04.000 Okay, so micrologs is a visual programming language. It's blog-based. 02:04.000 --> 02:09.000 Everyone knows what blogs are nowadays. So I don't have to explain that. 02:10.000 --> 02:14.000 And it's four microcontrollers. So you're programming these little devices. 02:14.000 --> 02:22.000 Things like this device here, or this device here, or this other device here, 02:22.000 --> 02:26.000 or the one that the presentation is running it. 02:26.000 --> 02:29.000 So just this one. 02:29.000 --> 02:38.000 And it runs on Linux windows, macOS, and the browser that means the IT runs on all these systems, right? 02:38.000 --> 02:42.000 We are part of the software-film conservancy foundation. 02:42.000 --> 02:46.000 These are fiscal sponsored for free software projects. 02:46.000 --> 02:52.000 They sponsored projects way bigger than us, such as Inkscape, or Squeak, 02:52.000 --> 02:57.000 and other very free software projects. We've been lucky enough to have been accepted 02:57.000 --> 03:03.000 early on on the conservancy. So that's a way that we can receive funds and pay for 03:03.000 --> 03:06.000 some things, some of which you're going to see today. 03:06.000 --> 03:10.000 That could have been possible without that. And it follows the people principle. 03:10.000 --> 03:15.000 And of course I made up this acronym at home when I was presenting when I was preparing this presentation. 03:15.000 --> 03:21.000 John, by the way, this was supposed to be a joint presentation with John. 03:21.000 --> 03:24.000 But John is helping out with another workshop next year. 03:24.000 --> 03:31.000 But he doesn't know I made up this people thing. He's going to find out when he watches the recording. 03:32.000 --> 03:37.000 In my language, PEPA is this device. That's not what we're talking about. 03:38.000 --> 03:42.000 So what does PEPA mean? Well, it's a language that's portable. 03:42.000 --> 03:47.000 And that means that you can port it between different microcontrollers. 03:47.000 --> 03:55.000 It's not just the IT. That's portable. You can run micrologs on several different architectures and types of microcontrollers with different features. 03:56.000 --> 04:01.000 It's interactive. That means that anything you do is reflected immediately. 04:01.000 --> 04:06.000 So anything that you change in your program is reflected instantly in your microcontroller. 04:06.000 --> 04:10.000 You don't have to wait for any compiler-load cycles. 04:10.000 --> 04:16.000 It's parallel because we think that's how humans think. 04:16.000 --> 04:20.000 We think in 2D, especially. So we lay our programs in 2D. 04:20.000 --> 04:27.000 We don't lay our long sequence of instructions. We lay small sequences of instructions that run in parallel. 04:27.000 --> 04:34.000 And it's an autonomous language. That means that once the program is... 04:34.000 --> 04:38.000 Well, once you're happy with your program, you can just disconnect your board. 04:38.000 --> 04:43.000 And this board doesn't have much batteries. So this might fail miserably. 04:43.000 --> 04:46.000 It kind of does work. 04:46.000 --> 04:49.000 Okay, now I have to go about to... 04:49.000 --> 04:55.000 I'll connect it again just for power, but hopefully you'll believe me. 04:55.000 --> 04:59.000 It's actually in the board. 04:59.000 --> 05:04.000 Okay, so what does portable really mean? Let's see that. 05:04.000 --> 05:13.000 This same program that I have here, I could... 05:13.000 --> 05:18.000 Imagine I forgot to save this program when I was preparing the presentation. 05:18.000 --> 05:21.000 And I just had it here in this board. 05:21.000 --> 05:24.000 How could I retrieve this program back from the board? 05:24.000 --> 05:26.000 Right? How could I port it to another board? 05:26.000 --> 05:31.000 How can I transfer this thing that I have here to this other device? 05:31.000 --> 05:36.000 Well, if I don't have the source code, there's no way around it, right? 05:36.000 --> 05:40.000 This is already in a burnt into the device. 05:40.000 --> 05:44.000 How do I get it out and put it into another device that has a different architecture, 05:44.000 --> 05:46.000 a different processor, whatever, right? 05:46.000 --> 05:53.000 Well, in Microsoft Logs, what I can do is I can say open from board. 05:53.000 --> 05:56.000 Then it tells me to connect the board. 05:56.000 --> 06:01.000 I will connect to it via USB, in this case. 06:01.000 --> 06:06.000 And now it's reading the project back from the board. 06:10.000 --> 06:16.000 It is a rather big project, it has a whole presentation in it. 06:16.000 --> 06:36.000 And now I should be able to connect a different microcontroller. 06:37.000 --> 06:42.000 Okay, and now it's open and I have the code here. 06:42.000 --> 06:45.000 So this code is now in this other microcontroller. 06:45.000 --> 06:51.000 All right, so I can retrieve the code from a board, load it into my ID and load it into another microcontroller. 06:51.000 --> 07:01.000 I will continue with the other one because the screen real estate is slightly better. 07:01.000 --> 07:04.000 And I have to go back again, sorry. 07:04.000 --> 07:09.000 I didn't think of these queries when deciding this was a good idea. 07:09.000 --> 07:11.000 So it's just interactive, man. 07:11.000 --> 07:14.000 Well, I just told you, right? 07:14.000 --> 07:18.000 I can change the code at any time. 07:18.000 --> 07:25.000 And I can run code in real time and see the result right away. 07:25.000 --> 07:33.000 So for instance, if I wanted to, you know, I don't know what I'm doing now, but I'm going to draw a rectangle. 07:33.000 --> 07:41.000 That's 100 pixels wide and oh, it's not connected of course. 07:41.000 --> 07:48.000 Connect USB. 07:48.000 --> 07:51.000 So it gets drawn instantly, right? 07:51.000 --> 07:55.000 So of course it won't. 07:55.000 --> 08:02.000 Wait, let's bring this here and this. 08:02.000 --> 08:07.000 The projector has a very low resolution, so I don't have much space to work on. 08:07.000 --> 08:11.000 But hopefully you can see what's happening. 08:11.000 --> 08:14.000 So let's make something. 08:14.000 --> 08:16.000 Let's have this. 08:16.000 --> 08:22.000 Actually, let's do that forever until I start it. 08:22.000 --> 08:23.000 Oops. 08:23.000 --> 08:32.000 And I'll just use a random number from 1 to 100 here. 08:32.000 --> 08:36.000 And the color should be around 1, 2. 08:36.000 --> 08:39.000 Random color, there we go. 08:39.000 --> 08:43.000 So hopefully you can see that this thing is life and interactive. 08:43.000 --> 08:47.000 And you can play as you go, right? 08:47.000 --> 08:48.000 Okay. 08:48.000 --> 08:52.000 I could continue my presentation like this. 08:52.000 --> 08:57.000 Oh, I first need to. 08:57.000 --> 09:00.000 I keep getting. 09:00.000 --> 09:10.000 Well, that will get the rows on low going to your brains. 09:10.000 --> 09:14.000 But yeah, so we got to what does parallel mean? 09:14.000 --> 09:16.000 Well, you can see what parallel means, right? 09:16.000 --> 09:18.000 I have a bunch of things running in parallel here. 09:18.000 --> 09:22.000 A bunch of little scripts that are running at the same time. 09:22.000 --> 09:24.000 What does autonomous mean? 09:24.000 --> 09:25.000 We've seen that already. 09:25.000 --> 09:26.000 You can disconnect the board. 09:26.000 --> 09:29.000 I'm not going to do it because I will have to again. 09:29.000 --> 09:31.000 I go through a lot of the slides. 09:31.000 --> 09:33.000 But you know what autonomous means? 09:33.000 --> 09:36.000 Let me stop this madness also. 09:37.000 --> 09:40.000 You've got the point, hopefully. 09:40.000 --> 09:42.000 So again, the paper principle. 09:42.000 --> 09:45.000 Our guiding principle that I just made up. 09:45.000 --> 09:49.000 But portable means a little bit more to us. 09:49.000 --> 09:52.000 Let me show you. 09:52.000 --> 09:56.000 So it's not just physical microcontrollers as we want to support. 09:56.000 --> 10:04.000 At one point, our Demos Christiane Bauer had this idea that we first didn't like. 10:04.000 --> 10:11.000 She was like, what if we could have some sort of an emulator for kids who don't have a microcontroller? 10:11.000 --> 10:13.000 And we're like, no, this is not a good idea. 10:13.000 --> 10:20.000 Because we're all about physical computing and the real deal is when you can touch the thing and connect sensors to it and actuators. 10:20.000 --> 10:32.000 But then we kept thinking and just by switching the word emulator with the word virtual microcontroller, 10:32.000 --> 10:35.000 we started to think that was probably a good idea. 10:35.000 --> 10:37.000 Microwave is VM based. 10:37.000 --> 10:43.000 That means that the virtual machine that's running here is the same one that's running here or in any other microcontroller. 10:43.000 --> 10:47.000 And theoretically, we could implement it on the browser as well. 10:47.000 --> 10:52.000 And that started taking some of our boxes, right? 10:52.000 --> 10:55.000 So we decided to do it just that. 10:55.000 --> 11:09.000 And so even instead of connecting to a board, I connect to a boarding board is the name of our virtual microcontroller, not emulator. 11:09.000 --> 11:11.000 There you go, it's the same thing, right? 11:11.000 --> 11:21.000 So I can now hopefully, which is this is on the world. 11:21.000 --> 11:27.000 Oh, don't tell me I forgot to remove the presentation, which. 11:27.000 --> 11:39.000 So I have this slide on a file because I do want to, what's going on? 11:39.000 --> 11:40.000 What's going on? 11:40.000 --> 11:42.000 Oh, that would all, sorry. 11:42.000 --> 11:46.000 Okay, so this is really the same presentation. 11:46.000 --> 11:50.000 If I go one slide back, you can see the same thing. 11:50.000 --> 11:56.000 The same code that we've taken off this board and now load it into a virtual microcontroller. 11:56.000 --> 12:00.000 So now you don't have to look at this tiny camera, again, the joke is over. 12:00.000 --> 12:02.000 Now we're in the virtual world. 12:02.000 --> 12:07.000 A board is not an emulator, but a browser-based virtual machine. 12:07.000 --> 12:10.000 Okay, it's not emulating any hardware. 12:10.000 --> 12:18.000 It's actually, it doesn't try to emulate any physical capabilities that it doesn't have, right? 12:18.000 --> 12:20.000 So it can make sound. 12:20.000 --> 12:24.000 It can produce visuals. 12:24.000 --> 12:30.000 It can receive input by means of these two buttons and also by means of a touchscreen. 12:30.000 --> 12:37.000 But it will not try to emulate things like a temperature sensor or, you know, a tilt sensor. 12:37.000 --> 12:39.000 We are not emulating anything. 12:39.000 --> 12:43.000 This is actually a virtual microcontroller, and it has just these few sensors. 12:43.000 --> 12:49.000 Two buttons and just these few actuators sound and video. 12:49.000 --> 12:52.000 Okay, it runs the exact virtual machine. 12:52.000 --> 12:57.000 Exactly the same code, compiled for the geeks out there using M-scriptons. 12:57.000 --> 13:02.000 So it's the same C virtual machine in the microcontroller but running on the browser. 13:03.000 --> 13:09.000 And now we can start talking about microogs 2.0, which is the point of this presentation. 13:09.000 --> 13:14.000 Microogs 2.0 was released just a few months ago. 13:14.000 --> 13:23.000 It's been a long year of redesigning the whole UI and blocks. 13:23.000 --> 13:27.000 They were designed actually two or three years ago by Mark, our graphic designer. 13:27.000 --> 13:32.000 Who we hired through the software field and conservancy? 13:32.000 --> 13:41.000 And just so you see it, I'm going to show you a glimpse of what the old UI looked like. 13:41.000 --> 13:47.000 So take a look at what our current UI looks like. 13:47.000 --> 13:55.000 Regardless of your preferences, I think that you're going to prefer the new one to the old one. 13:55.000 --> 14:01.000 So this is, it won't go away. 14:01.000 --> 14:08.000 This is why I believe you need a graphical designer in your team and not just an engineer. 14:08.000 --> 14:16.000 So on the technical side of things, the micrologs 2.0 version uses a new VM. 14:16.000 --> 14:22.000 We designed the VM to use a 16-bit instruction instead of 32-bit ones. 14:22.000 --> 14:26.000 That means we can fit larger user programs into our board. 14:26.000 --> 14:32.000 It also means we have slightly, slightly faster upload times when you're developing. 14:32.000 --> 14:37.000 The synchronization time is slightly lower. 14:37.000 --> 14:40.000 That may seem like we're going backwards, right? 14:40.000 --> 14:42.000 Because we had 32-bit instructions. 14:42.000 --> 14:49.000 Now we have 16-bit instructions, but we realized that actually almost half of our code was empty code. 14:49.000 --> 14:56.000 Because most of the instructions fit in half the amount of space. 14:56.000 --> 15:02.000 So we decided to complicate a little bit some parts of the byte code where you need to, 15:02.000 --> 15:06.000 you know, now we need to have multi-part messages for some things. 15:06.000 --> 15:12.000 But all in all, it's faster, it's smaller, and I guess more human friendly. 15:12.000 --> 15:19.000 So something new, also in micrologs 2.0 is localization is now handled by web late. 15:19.000 --> 15:28.000 On the last, we presented, I forgot what, about micrologs and someone came after the talk from the audience 15:28.000 --> 15:34.000 and said that they wanted to contribute an Italian translation and how did we handle it? 15:34.000 --> 15:39.000 And I showed that person our system and they were like, oh, okay, thank you. 15:39.000 --> 15:42.000 We will be in touch. 15:42.000 --> 15:47.000 And we decided we would have to do something about it and make it easier for translators to contribute. 15:47.000 --> 15:52.000 Because our previous system was really way too complicated. 15:52.000 --> 15:54.000 So now we have web late. 15:54.000 --> 15:57.000 I don't know if you all know about web late. 15:57.000 --> 16:02.000 It's a free software project for localization of free software projects. 16:02.000 --> 16:11.000 It's really great, since we've moved to web late, we've got translations from people we don't know from the internet. 16:11.000 --> 16:17.000 And we got two weeks ago, we got a full Tamil translation. 16:17.000 --> 16:20.000 100% of the translation done in a weekend. 16:20.000 --> 16:22.000 So some people are really, really active in this community. 16:22.000 --> 16:26.000 If you have a software, a free software project and you're looking for localizations, 16:26.000 --> 16:32.000 I really, really strongly encourage you to do the work required to get it into web late. 16:32.000 --> 16:35.000 Because it really, really, really pays off. 16:35.000 --> 16:41.000 So we have now many languages, a quicker turn around between, you know, you add a string 16:41.000 --> 16:45.000 and you get the new translation and the process is much easier. 16:45.000 --> 16:52.000 So we feel now confident to invite a white audience to participate in the translation process, which we did not before. 16:52.000 --> 16:57.000 We also have, in Microsoft's 2.0, the possibility to program your boards via BLE. 16:57.000 --> 17:00.000 So you don't have to be attached by a cable anymore. 17:00.000 --> 17:04.000 This is very useful for moving robots. 17:04.000 --> 17:11.000 If you're programming a robot that has legs or wheels, even though Microsoft is autonomous, 17:11.000 --> 17:17.000 and you can disconnect the cable and have it run around, while you're programming it, you have to be attached to it. 17:17.000 --> 17:24.000 And if the robot is moving around, you have to move around also with your laptop, and that gets tiring. 17:24.000 --> 17:30.000 So we implemented programming over BLE, which is very useful now. 17:30.000 --> 17:33.000 We also have many new libraries in 2.0. 17:33.000 --> 17:37.000 I'll mention some, we have many new sensors and actuators. 17:37.000 --> 17:39.000 A lot of them contributed by the community. 17:39.000 --> 17:46.000 If you go to the library browser, you'll see we have a whole bunch of categories of sensors and 17:47.000 --> 17:52.000 different libraries for lots of different devices. 17:52.000 --> 17:56.000 We have libraries for live coding for live coding music. 17:56.000 --> 18:05.000 This is something that I got into about 2 years ago and started thinking of ways to produce music with microcontrollers and micrologs. 18:05.000 --> 18:10.000 And I'm now playing in bars some nights in Barcelona having lots of fun. 18:10.000 --> 18:17.000 Also, new libraries for different kinds of communications like BLE radio and UTP and stuff. 18:17.000 --> 18:26.000 And many new kits and robots from different hobbies and companies that contact with 1000 and we added support or did it. 18:26.000 --> 18:30.000 And most importantly, you can help too if you want. 18:30.000 --> 18:33.000 We're essentially looking for translators. 18:33.000 --> 18:35.000 Now I can say it with a straight face. 18:35.000 --> 18:38.000 It's very easy to get your translators and translation into micrologs. 18:38.000 --> 18:44.000 So if your language is not in the list, you can just click on missing language. 18:44.000 --> 18:50.000 And this will take you to our weekly page about how to translate micrologs. 18:50.000 --> 18:57.000 And there's a link here to the website page where you can submit your new language. 18:57.000 --> 19:01.000 I haven't done that ever, so I don't know how to do it. 19:01.000 --> 19:08.000 If you register, there's probably going to be a button to submit new languages. 19:08.000 --> 19:12.000 But I was spreading the word, of course, that's the most important thing for a free software project. 19:12.000 --> 19:19.000 We don't have any advertisers, we rely on the community to spread the word. 19:19.000 --> 19:27.000 Writing libraries, if you feel that there's some library missing for your sensor, your hobby robot, whatever, 19:27.000 --> 19:34.000 the port that you're building, the board that you've bought, you can help writing a library. 19:34.000 --> 19:45.000 You can help out in our Discord answering community questions or helping others get started or getting help yourself. 19:45.000 --> 19:52.000 You can also donate, preferably, preferably, monthly to the free software conservancy, 19:52.000 --> 20:00.000 so that we can pay for other people to help on the project in the future. 20:00.000 --> 20:05.000 Testing, of course, always helps reporting bugs, things that don't work. 20:05.000 --> 20:11.000 Following us, we are on MasterDone and Blue Sky and nowhere else. 20:11.000 --> 20:16.000 And here's where you'll find all about it, micrologs. 20:16.000 --> 20:18.000 Thank you very much. 20:18.000 --> 20:22.000 Thank you.