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