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.

