WEBVTT

00:00.000 --> 00:27.880
All right.

00:27.880 --> 00:29.460
Alright...

00:29.460 --> 00:31.980
I think we can start.

00:31.980 --> 00:34.540
Sunday afternoon at Phosem is always

00:34.540 --> 00:36.060
bit more difficult.

00:36.060 --> 00:37.140
People are tired.

00:37.140 --> 00:38.700
They're already drunk.

00:38.700 --> 00:40.860
So thank you for being here.

00:40.860 --> 00:43.860
And let's make it fun.

00:43.860 --> 00:48.540
So micro Python OS, who am I, Thomas Farstrike?

00:48.540 --> 00:51.460
I'm the creator of micro Python OS.

00:51.460 --> 00:53.820
And I have a background in kernel development

00:53.820 --> 00:56.860
embedded Linux and C++.

00:56.860 --> 01:01.140
I try to draw myself there, but maybe I should have used a picture,

01:01.140 --> 01:03.900
I don't know, not great.

01:03.900 --> 01:05.140
So how did this start?

01:05.140 --> 01:09.900
So one year ago, I was asked to build a device using

01:09.900 --> 01:13.580
a microcontroller, an ESP32.

01:13.580 --> 01:17.860
Is there anyone who already worked on ESP32s, anyone before?

01:17.860 --> 01:20.460
Yeah, half of the room.

01:20.460 --> 01:23.700
So the device is beautiful.

01:23.700 --> 01:28.260
It has a nice touch screen, all kinds of sensors, has a camera.

01:28.260 --> 01:31.540
So it's a beefy microcontroller.

01:31.540 --> 01:34.540
So I thought, OK, I'll just install whatever

01:34.540 --> 01:39.420
operating system they have there in the picture of the vendor.

01:39.420 --> 01:42.500
And I'll just make an app for it and put it in the app store.

01:42.500 --> 01:45.620
And then that will be the end of the day.

01:45.620 --> 01:48.100
But apparently, this wasn't possible.

01:48.100 --> 01:49.740
This didn't exist.

01:49.780 --> 01:54.220
ESP32 apps are usually created from start

01:54.220 --> 01:57.020
using some libraries, but you can just dynamically

01:57.020 --> 02:01.060
load something in memory and execute it.

02:01.060 --> 02:04.660
So I thought, OK, let's just create it myself then.

02:04.660 --> 02:08.620
First, I looked at doing it in C++.

02:08.620 --> 02:13.220
This one, I know there are lots of libraries available.

02:13.220 --> 02:15.420
It's lightweight and the logical choice.

02:15.420 --> 02:18.980
So the ideal was forming.

02:18.980 --> 02:21.660
That's why Drake looks a bit blurry there.

02:21.660 --> 02:23.540
Ideas coming.

02:23.540 --> 02:26.340
But this was a no-go.

02:26.340 --> 02:31.140
Turns out, this ESP32 has a very limited MMU.

02:31.140 --> 02:35.900
So you have to custom compile the C code into a binary.

02:35.900 --> 02:40.860
It's a challenge to maintain if you can even get it working.

02:40.860 --> 02:43.300
Very unforgiving, of course, as we know,

02:43.300 --> 02:46.500
in C, you have to allocate memory yourself.

02:46.500 --> 02:49.900
And it's easy to make mistakes.

02:49.900 --> 02:52.300
So this was going to be very difficult.

02:52.300 --> 02:55.820
And even if I was successful, I would

02:55.820 --> 03:01.140
have to find a PC way for apps to be developed on top.

03:01.140 --> 03:05.820
And we all know making apps in C is not trivial.

03:05.820 --> 03:08.540
Maybe for most of you guys, it's doable.

03:08.540 --> 03:13.620
But an app developer wants to have it easy.

03:13.620 --> 03:17.900
And that's why I thought maybe use micro Python OS.

03:17.900 --> 03:21.420
Drake likes this too.

03:21.420 --> 03:25.660
There's dynamic loading of code, scripts, and binaries.

03:25.660 --> 03:27.020
It's a modern language.

03:27.020 --> 03:30.620
So memory management is done for you.

03:30.620 --> 03:34.140
Very easy to make apps in Python.

03:34.180 --> 03:41.180
And you can even make device drivers also in micro Python.

03:41.180 --> 03:43.900
First, I was very skeptical about micro Python.

03:43.900 --> 03:45.060
I tried it before.

03:45.060 --> 03:48.980
And yeah, it wasn't very stable.

03:48.980 --> 03:52.700
When I tried it, it didn't work very well.

03:52.700 --> 03:55.380
But I took a second look one year ago.

03:55.380 --> 03:57.500
And it's surprisingly fast.

03:57.500 --> 03:59.460
Many libraries are available.

03:59.460 --> 04:00.980
Have been ported now.

04:00.980 --> 04:03.860
It runs on desktop natively.

04:03.940 --> 04:06.940
You have a very quick coding cycle.

04:06.940 --> 04:13.260
And it's 99% of the Python features are in micro Python.

04:13.260 --> 04:16.220
So then I started proving the concept.

04:16.220 --> 04:19.060
So I made on the top left, I made a launcher that

04:19.060 --> 04:23.300
can just load an application, load an app from the storage,

04:23.300 --> 04:24.900
and launch it.

04:24.900 --> 04:26.100
That worked.

04:26.100 --> 04:29.340
Then I made a Wi-Fi app to be able to connect to the Wi-Fi

04:29.340 --> 04:31.220
and download apps.

04:31.220 --> 04:32.940
That works as well.

04:32.940 --> 04:36.060
OK, nice installing apps worked.

04:36.060 --> 04:40.060
And then, of course, also important over the air updates.

04:40.060 --> 04:42.940
So that you can update the operating system.

04:42.940 --> 04:48.300
So these core 6, 5 or 6 apps they worked.

04:48.300 --> 04:52.380
And so that was very promising.

04:52.380 --> 04:54.980
So high-level architecture, then I went with

04:54.980 --> 04:57.900
is from the bottom to the top.

04:57.900 --> 05:00.900
Let's see, we have the low-level drivers

05:00.900 --> 05:03.460
are in the kernel.

05:03.460 --> 05:10.500
So the free RTOS kernel on ESP32, Darwin on macOS.

05:10.500 --> 05:17.140
So both the macOS kernel and then the frameworks on low-level,

05:17.140 --> 05:18.460
same for Linux.

05:18.460 --> 05:20.820
So the kernel, low-level frameworks.

05:20.820 --> 05:23.820
And then in it, you run a micro Python runtime.

05:23.820 --> 05:27.460
And on high-level, you have micro Python drivers

05:27.460 --> 05:29.220
and C drivers.

05:29.220 --> 05:33.380
And frameworks are also written in micro Python and C.

05:33.380 --> 05:38.220
And then apps are the cherries on top of the cake.

05:38.220 --> 05:40.860
So that's on a high-level.

05:40.860 --> 05:46.620
But of course, this is building on top of other cool things.

05:46.620 --> 05:48.220
So we have level GL.

05:48.220 --> 05:50.220
This makes it beautiful.

05:50.220 --> 05:53.460
So with level GL, you can make light weight,

05:53.460 --> 05:56.060
but beautiful user interfaces.

05:56.060 --> 05:59.260
Many widgets very actively developed.

05:59.260 --> 06:04.380
So if you haven't heard about it, this is the thing to use.

06:04.380 --> 06:07.540
And I should also give credit to level GL micro Python,

06:07.540 --> 06:09.980
because level GL is written in C.

06:09.980 --> 06:16.460
And the micro Python bindings weren't very usable.

06:16.460 --> 06:19.260
But this project, level GL micro Python,

06:19.260 --> 06:20.460
took it to the next level.

06:20.460 --> 06:25.460
They made it really easy to use level GL in micro Python.

06:25.460 --> 06:32.860
So yeah, that's also what micro Python OS is using.

06:32.860 --> 06:35.860
And then it's important to learn a few lessons from Android,

06:35.860 --> 06:39.860
the good, and copy the good, and also to avoid the bad.

06:39.860 --> 06:42.380
So the good things from Android is, as you know,

06:42.380 --> 06:45.540
you create an app once, and it runs on all of the supported

06:45.540 --> 06:47.060
Android devices.

06:47.060 --> 06:49.700
It's easy to make an app.

06:49.700 --> 06:51.100
You have to compile it.

06:51.100 --> 06:53.700
So that's a bit less.

06:53.740 --> 06:56.980
On micro Python OS, you don't even have to compile your app.

06:56.980 --> 07:01.140
It just is script that's executed.

07:01.140 --> 07:03.780
But the frameworks in Android are also good.

07:03.780 --> 07:05.540
The user interface is good.

07:05.540 --> 07:07.580
Yeah, millions of dollars have been spent on it.

07:07.580 --> 07:10.500
So let's copy what we can.

07:10.500 --> 07:13.860
But let's also avoid the mistakes of Android.

07:13.860 --> 07:17.900
For example, only releasing the source code twice per year.

07:17.900 --> 07:20.420
Yeah, that's not great.

07:20.420 --> 07:24.220
Also, I heard that they will maybe make it difficult

07:24.220 --> 07:29.140
to install your own APKs on your devices.

07:29.140 --> 07:31.900
Might need a developer account.

07:31.900 --> 07:36.020
So they're closing off the system a bit.

07:36.020 --> 07:40.940
And so these are things that, of course, we want to avoid.

07:40.940 --> 07:43.420
So why would you use micro Python OS?

07:43.420 --> 07:45.020
It's very lightweight.

07:45.020 --> 07:47.620
You can see the snake is eating its own tail.

07:47.620 --> 07:50.020
That's how lightweight it is.

07:50.020 --> 07:52.300
It boots in three seconds.

07:52.300 --> 07:53.580
It's written in Python.

07:53.580 --> 07:57.580
So if you like Python, then for sure.

07:57.580 --> 08:00.740
100% open development.

08:00.740 --> 08:05.740
So the commit searches all in the open, frequent releases.

08:05.740 --> 08:07.620
It runs native on desktop.

08:07.620 --> 08:11.500
And yeah, it's a growing fun, exciting new thing

08:11.500 --> 08:12.300
that's coming up.

08:12.300 --> 08:15.700
So very nice to use.

08:16.620 --> 08:24.340
I had to innovate a bit on top of this to make things easier

08:24.340 --> 08:25.660
for the users.

08:25.660 --> 08:29.620
Because you see on the top, that's the default keyboard.

08:29.620 --> 08:34.860
That you get in level GL when you make a keyboard.

08:34.860 --> 08:40.220
But on a tiny touchscreen, this is very hard to use.

08:40.220 --> 08:43.100
If you have to type your Wi-Fi passwords on a keyboard

08:43.100 --> 08:46.100
like that, you need children's fingers

08:46.100 --> 08:48.220
to be able to type on that.

08:48.220 --> 08:51.340
So I made a new one, impulse keyboards, buttons

08:51.340 --> 08:59.020
are 50% larger, and that makes 100% easier to type.

08:59.020 --> 09:02.300
Then I used swipe gestures for navigation.

09:02.300 --> 09:04.860
So I don't want to waste any screen

09:04.860 --> 09:08.940
a state on buttons that are on screen if it's not necessary.

09:08.940 --> 09:11.420
So to go back, you swipe from the left edge,

09:11.420 --> 09:14.860
like on Android, if you enable it, to open the menu,

09:14.860 --> 09:18.660
you swipe from the top, like on Android.

09:18.660 --> 09:22.620
So that way, we save some screen in a state.

09:22.620 --> 09:27.580
I also optimized the QR decoding to use higher resolutions

09:27.580 --> 09:32.180
that were not available in a driver by default.

09:32.180 --> 09:35.340
To be able to scan higher resolution, high density QR codes

09:35.340 --> 09:40.860
from a phone screen, you really need this higher resolution.

09:40.860 --> 09:46.780
I added a video for Linux 2 camera driver for micro Python

09:46.780 --> 09:50.820
so that when I run it on a laptop or when someone runs it

09:50.820 --> 09:53.180
on their laptop, they can use a camera

09:53.180 --> 09:56.380
from their laptop for debugging, for testing,

09:56.380 --> 09:59.660
or for just taking pictures.

09:59.660 --> 10:02.140
And then the joystick for focus direction,

10:02.140 --> 10:06.100
because level GL by default just has a next and a previous button.

10:06.100 --> 10:08.860
So in the launcher, you have to go by all the icons

10:08.860 --> 10:10.980
to select an app.

10:10.980 --> 10:14.260
But if you have a joystick, like I do on some devices,

10:14.260 --> 10:18.140
then focus direction, just point in a direction,

10:18.140 --> 10:22.220
and the focus moves in that direction.

10:22.220 --> 10:26.820
Then I ported micro Python Noster to micro Python,

10:26.820 --> 10:29.980
sorry, Python Noster to micro Python Noster.

10:29.980 --> 10:32.020
So but Noster is not very well known.

10:32.020 --> 10:35.460
Is there anyone who has heard about Noster?

10:35.460 --> 10:38.340
No, one person, nice, nice.

10:38.340 --> 10:43.140
So it's kind of a more decentralized, really protocol

10:43.140 --> 10:46.580
that can be used for social media,

10:46.580 --> 10:50.140
but also for discovery, for publishing.

10:50.140 --> 10:56.220
It's a lightweight protocol that has a growing community.

10:56.220 --> 11:00.820
And finally, also had to add micro Python bindings

11:00.820 --> 11:04.420
for easy DH to be able to use Noster.

11:04.420 --> 11:10.740
So this is micro Python OS, but of course,

11:10.740 --> 11:13.660
it's useless if you don't have apps on top of it.

11:13.660 --> 11:16.740
The only reason for existing is apps.

11:16.740 --> 11:20.860
So to make apps for micro Python OS,

11:20.860 --> 11:24.060
and here's a hello world example.

11:24.060 --> 11:26.780
So you can see it's just a few lines of code.

11:26.780 --> 11:29.940
A class hello that extends from activity.

11:29.940 --> 11:33.700
And then in the on-create function, we create a screen.

11:33.700 --> 11:35.340
We create a label.

11:35.340 --> 11:38.300
We set some text, hello world on the label.

11:38.300 --> 11:39.860
We center the label.

11:39.860 --> 11:43.180
And then we publish the screen.

11:43.180 --> 11:48.980
We tell the framework to show this screen.

11:48.980 --> 11:52.020
And if anyone ever wrote an Android app,

11:52.020 --> 11:54.300
this is what you would do on Android as well,

11:54.300 --> 11:57.340
just in a Python syntax.

11:57.340 --> 12:02.220
So very familiar, the idea is to make it very easy.

12:02.220 --> 12:05.340
Then you create a manifest.json file.

12:05.340 --> 12:10.220
And there you put some info about your app.

12:10.220 --> 12:13.340
So the version number, the name of the app.

12:13.340 --> 12:15.100
And also the entry points, the thing

12:15.100 --> 12:17.940
that needs to be executed to start your app.

12:17.940 --> 12:22.860
You define this in a manifest.json.

12:22.860 --> 12:27.420
And then you package the whole bundle of the icon of the app

12:27.420 --> 12:29.460
and the manifest and the source code.

12:29.460 --> 12:33.260
We bundle everything into an MPK, just like on Android,

12:33.260 --> 12:35.140
where we have APKs.

12:35.140 --> 12:36.860
It's just a simple zip file.

12:36.860 --> 12:39.860
And then you have a nice bundle with your app.

12:42.540 --> 12:45.380
And then you publish it in the app store.

12:45.380 --> 12:48.380
So the app store currently has two backends.

12:48.380 --> 12:53.860
Original one is upstart microphone.nOS.com.

12:53.860 --> 12:57.980
So this is a curated list of the best of the best apps

12:57.980 --> 12:59.700
that they've been reviewed.

12:59.700 --> 13:03.580
They're known to be working well.

13:03.580 --> 13:05.460
And if you want to be listed there,

13:05.460 --> 13:11.420
just reach out through the chat, which I'll show later.

13:11.420 --> 13:13.300
So that's a curated list.

13:13.300 --> 13:16.340
But now we also have support for batch hub.

13:16.340 --> 13:21.980
So this was created for the Y2025 event for that batch.

13:21.980 --> 13:24.180
So the microcontroller that you receive

13:24.180 --> 13:30.460
and you go to the event, there was an app store

13:30.460 --> 13:32.260
was also created.

13:32.260 --> 13:38.140
And this app store now also has support for micro Python OS apps.

13:38.140 --> 13:40.580
And of course, we can add more backends

13:40.580 --> 13:43.380
if they're very welcome.

13:43.380 --> 13:46.980
Both centralized backends, or maybe more decentralized

13:46.980 --> 13:51.220
backends based on the roster are welcome there.

13:54.420 --> 13:57.060
So which apps do we have currently?

13:57.060 --> 13:59.620
I'm spending most of my time working on the frameworks

13:59.620 --> 14:03.020
and the OS, so the most of the apps there are pretty basic,

14:03.020 --> 14:06.900
just proof of concepts, ready to be improved.

14:06.900 --> 14:10.420
But so we have the Lightning Piggy there.

14:10.420 --> 14:12.820
That's kind of a big one.

14:12.820 --> 14:16.740
This was funded by the Lightning Piggy Foundation.

14:16.740 --> 14:22.100
They wanted to have an app that is a bit like wallet

14:22.100 --> 14:25.340
that teaches kids or people in general

14:25.340 --> 14:28.460
to save for the really long term, to save

14:28.460 --> 14:33.700
for the first car in 15 years, or their first house in 20 years,

14:33.700 --> 14:35.620
to save in the long term.

14:35.620 --> 14:37.700
But of course, you cannot do that with euros.

14:37.700 --> 14:39.740
They become worthless and less.

14:39.740 --> 14:41.740
Maybe you could do it with gold or silver,

14:41.740 --> 14:44.100
but this one does it with Bitcoin.

14:44.100 --> 14:48.500
Sending tiny amounts of Bitcoin to the wallet.

14:48.500 --> 14:50.340
That's that app.

14:50.340 --> 14:56.380
And of course, we have a camera app with QR decoding

14:56.380 --> 15:00.700
image viewer to view your images that you make.

15:00.700 --> 15:03.020
We have a few games like this floppy birds,

15:03.020 --> 15:05.340
clones called quasi bird.

15:05.340 --> 15:08.580
And then of course, a music player, a sound recorder.

15:08.580 --> 15:10.260
Most of them are proof of concepts,

15:10.260 --> 15:14.060
just to make sure the hardware and frameworks work.

15:14.060 --> 15:21.820
And so they're pretty basic, because yet still very early days.

15:21.820 --> 15:24.660
And we have eight more, and now it's nine more,

15:24.660 --> 15:27.260
because another one will end this week.

15:31.140 --> 15:35.060
And why would you build an app for micro-pitan OS?

15:35.060 --> 15:36.620
Well, it's fun to do.

15:36.620 --> 15:37.860
And it's easy.

15:37.860 --> 15:39.420
Very easy.

15:39.420 --> 15:43.140
Few lines, hundreds lines of Python, 200 lines of Python,

15:43.140 --> 15:44.940
and your app will work.

15:44.940 --> 15:47.300
Or you can make it very hard if you like.

15:47.300 --> 15:49.900
You can make something very complex.

15:49.900 --> 15:51.500
It's educational.

15:51.500 --> 15:54.020
If you're like me, you didn't know Python.

15:54.020 --> 15:59.260
Then this is a perfect opportunity to start playing with it.

15:59.260 --> 16:02.580
Many examples, because everything is open source.

16:02.580 --> 16:04.020
Nice community.

16:04.020 --> 16:06.780
And the next one I also like,

16:06.780 --> 16:10.300
you'll be one of the only apps that offers that functionality.

16:10.300 --> 16:13.100
Instead of being one of the hundreds of apps.

16:13.100 --> 16:15.340
So for example, we don't have a calendar app.

16:15.340 --> 16:19.300
If you make one, then people will use your app.

16:19.300 --> 16:21.620
We don't have an alarm clock app.

16:21.620 --> 16:22.620
Make one.

16:22.620 --> 16:24.940
It's just a few lines of code.

16:24.940 --> 16:28.900
And then you will be D, an alarm clock.

16:28.900 --> 16:31.540
And it's a growing field, so that's always fun.

16:33.820 --> 16:35.780
We have good documentation.

16:35.780 --> 16:37.420
All the frameworks are documented.

16:37.420 --> 16:42.220
And updated, docs.micro Python OS.

16:42.220 --> 16:47.100
And we support a few hardware devices and more are coming.

16:47.100 --> 16:49.340
So let's take a look.

16:49.340 --> 16:54.140
So the first one is this wave share S3 touch2.

16:54.140 --> 16:55.860
Awesome device.

16:55.860 --> 16:57.140
It has SD card.

16:57.140 --> 16:59.020
It has an IMU.

16:59.020 --> 17:00.980
It has touchcreen.

17:00.980 --> 17:03.580
It has battery management.

17:03.580 --> 17:05.540
So you can connect the battery.

17:05.540 --> 17:06.660
And it has a camera.

17:06.660 --> 17:12.140
So it's a microcontroller, but it's a powerful one.

17:12.140 --> 17:15.300
So if you want to start playing with micro Python OS

17:15.300 --> 17:21.380
on a physical device, this is a nice one to buy.

17:21.380 --> 17:24.260
But of course, it's still a microcontroller.

17:24.260 --> 17:27.420
It has just 300 kilobytes of RAM.

17:27.420 --> 17:30.020
8 megabytes of PSRAM connected.

17:30.020 --> 17:32.220
And then 16 megabytes of ROM.

17:32.220 --> 17:40.260
So it's a computer for ants, or like an IBM PS2 from 1981.

17:40.260 --> 17:45.060
But of course, the cost is 100 times less.

17:45.060 --> 17:50.340
The second one that's supported is the fried cam 2024 batch.

17:50.340 --> 17:54.620
So who here has heard about fried cam in Belgium?

17:54.620 --> 17:57.180
Yeah, a few.

17:57.180 --> 17:58.740
So this is every two years.

17:58.780 --> 18:02.180
There's a family friendly cam for hackers,

18:02.180 --> 18:04.740
for makers in Belgium.

18:04.740 --> 18:07.860
And all the participants, kids and adults,

18:07.860 --> 18:11.980
they all get a batch so they can wear it on their clothes,

18:11.980 --> 18:13.580
or they can play with it.

18:13.580 --> 18:17.980
And this is a microcontroller, ESP32 based,

18:17.980 --> 18:23.660
with a display, a few buttons, a buzzer, an IMU, multicolor

18:23.660 --> 18:28.380
leds, and you can also connect expansion boards.

18:28.380 --> 18:32.620
So yeah, this is a nice one.

18:32.620 --> 18:36.900
This year's fried cam batch is in the oven,

18:36.900 --> 18:40.260
is being baked, so the prototypes are being made.

18:40.260 --> 18:41.980
And this one will have a touch screen.

18:41.980 --> 18:45.980
So that will be also very cool and an audio jack.

18:45.980 --> 18:48.660
It will also support retrogo for playing games,

18:48.660 --> 18:51.100
like doom and gameboy and nest.

18:51.100 --> 18:54.580
So it will be a nice device.

18:54.580 --> 18:57.460
And here is another announcement,

18:57.460 --> 19:00.740
is that we reached out to manufacturers,

19:00.740 --> 19:03.820
and they're also interested in installing micro Python

19:03.820 --> 19:08.820
OS in the factory, by default on their boards on ESP32.

19:08.820 --> 19:13.620
Because we all know how disappointing it can be.

19:13.620 --> 19:16.780
You receive an ESP32, and it doesn't do anything.

19:16.780 --> 19:20.860
It shows a demo, but you have to spend weeks making your app

19:20.860 --> 19:22.660
before you can actually use it.

19:22.660 --> 19:26.580
But by adding micro Python OS in the factory,

19:26.580 --> 19:31.740
the vendors already have a fully functional Android-like device

19:31.740 --> 19:33.940
that people can install apps on.

19:33.940 --> 19:38.180
So we've received this week samples of the first device

19:38.180 --> 19:41.180
from a small manufacturer in China.

19:41.180 --> 19:45.420
And also a bigger manufacturer in China

19:45.420 --> 19:49.460
has shipped as samples also this week.

19:49.460 --> 19:53.140
And I can already say that the second one

19:53.140 --> 19:54.740
is a new form factor.

19:54.740 --> 19:56.500
It will be a smartwatch.

19:56.500 --> 19:58.220
And it will have Laura as well.

19:58.220 --> 20:00.780
So it will be very fun to play with,

20:00.780 --> 20:04.340
and to port micro Python OS too.

20:04.340 --> 20:06.820
So for now, we are doing this for free this porting,

20:06.820 --> 20:09.780
because we want to spread it around,

20:09.780 --> 20:11.660
and have a bigger install base.

20:11.660 --> 20:14.220
So if you're also working on a device,

20:14.220 --> 20:17.820
and you also want to have it ported there,

20:17.820 --> 20:20.660
very if you want to have this done for free.

20:24.540 --> 20:29.100
Now, we have a few minutes for a live demo.

20:29.100 --> 20:32.220
Of course, demos are always carry, risky,

20:32.220 --> 20:33.820
valid work.

20:33.820 --> 20:35.820
And so where is the demo?

20:39.420 --> 20:41.180
You're looking at the demo.

20:41.180 --> 20:43.180
We've been in micro Python OS the whole time.

20:43.180 --> 20:51.660
That'll be proved to you.

20:51.660 --> 20:55.940
So when I click, then I exit the full screen.

20:55.940 --> 20:59.780
And this is the image view app.

20:59.780 --> 21:03.420
So I'm just in the image view, let's not click the lead.

21:03.420 --> 21:07.420
And so I can press escape to go back,

21:07.420 --> 21:11.060
but I'll just swipe from the left to show this gesture.

21:11.060 --> 21:12.580
So going back.

21:12.580 --> 21:16.140
And here we have, yeah, have it running on my desktop here.

21:16.140 --> 21:20.820
So all the apps that I have here,

21:20.820 --> 21:24.180
some of them still under construction.

21:24.180 --> 21:29.100
So if I open, for example, the app store,

21:29.100 --> 21:31.820
normally it doesn't run on such a huge display,

21:31.820 --> 21:36.780
but here we have the app store showing apps.

21:36.780 --> 21:41.580
And then we can install apps and install them,

21:41.580 --> 21:44.820
just basically unzipping it.

21:44.820 --> 21:48.060
So I press escape to go back.

21:48.060 --> 21:49.740
I'm not going to show all of them,

21:49.740 --> 21:53.180
but maybe the camera is nice.

21:53.180 --> 21:58.180
So you see, this is the video for Linux in action.

21:58.180 --> 22:02.900
And I can take a picture like that.

22:05.340 --> 22:06.500
We have the settings.

22:06.500 --> 22:09.260
We have the OS updates.

22:09.300 --> 22:12.460
I'll do that one as a last one.

22:12.460 --> 22:14.420
So this, of course, the OS update,

22:14.420 --> 22:15.820
this is simulation.

22:15.820 --> 22:17.020
It's downloading the update,

22:17.020 --> 22:19.740
but it's not really writing to my disk,

22:19.740 --> 22:23.260
because I want to leave my operating system.

22:23.260 --> 22:28.260
Leave my Linux as it is, and just have this running on top.

22:29.860 --> 22:32.660
So let's get back to the presentation.

22:32.660 --> 22:34.380
This was the picture I took.

22:40.260 --> 22:44.460
So here we go, the live demo.

22:44.460 --> 22:48.820
So just to finish up, we have four core contributors right now.

22:48.820 --> 22:52.460
Everyone's invited to at least come check it out.

22:52.460 --> 22:56.140
We have 15, now 16 apps in App Store.

22:56.140 --> 23:02.140
24x on GitHub, community chat has now 55 members.

23:02.140 --> 23:06.060
300 plus stars on GitHub and 2000 commits,

23:06.060 --> 23:07.660
but those are rookie numbers.

23:07.660 --> 23:11.220
We have to pump those numbers up.

23:11.220 --> 23:15.340
In the roadmap, we have the factory installs that's very exciting.

23:15.340 --> 23:18.940
We will add a few more frameworks to make

23:18.940 --> 23:21.060
give it more capabilities.

23:21.060 --> 23:25.060
And then release an API 1.0.

23:25.060 --> 23:29.860
And add more drivers, add more boards,

23:29.860 --> 23:33.580
and see where the community wants to take it.

23:33.580 --> 23:37.620
So it runs on ESP32s, but also everything on top.

23:38.020 --> 23:39.660
You can run it on the Raspberry Pi.

23:39.660 --> 23:43.020
You can run it on Linux desktop.

23:43.020 --> 23:46.820
So the next step, I would say, is run it on desktop,

23:46.820 --> 23:48.420
if you like.

23:48.420 --> 23:51.020
And we have pre-built binaries.

23:51.020 --> 23:54.660
If you don't want to compile it yourself, on Linux and macOS,

23:54.660 --> 23:58.620
you can just download the pre-built binary.

23:58.620 --> 24:02.660
I don't know why you want to use anything else.

24:02.660 --> 24:07.060
So you can build an app or get a supported device

24:07.060 --> 24:12.900
and flash it and install it, and then publish it in the App Store.

24:12.900 --> 24:14.260
Installation is very easy.

24:14.260 --> 24:17.140
Also, we have this web installer, web serial.

24:17.140 --> 24:20.420
So just with your web browser, you go to install.

24:20.420 --> 24:25.340
And we have one firmware that works on all the different devices.

24:25.340 --> 24:27.460
So we detect on the ESP32.

24:27.460 --> 24:29.740
We detect the hardware at boot.

24:29.740 --> 24:33.820
And then we initialize the board properly.

24:33.820 --> 24:36.660
So micro Python OS is waiting for you.

24:36.700 --> 24:37.580
Join the chat.

24:37.580 --> 24:41.460
It's just a telegram chat that we redirect to,

24:41.460 --> 24:42.700
clone the repo.

24:42.700 --> 24:46.060
And if there's any questions, you have 30 seconds.

25:00.060 --> 25:02.340
Hello, so thanks all for this project.

25:02.340 --> 25:05.020
Would it be suitable to start for a simple phone,

25:05.020 --> 25:08.580
like feature phone?

25:08.580 --> 25:13.180
Yeah, so the question is, if we can also run it on a phone,

25:13.180 --> 25:15.900
yeah, this is a big dream of mine.

25:15.900 --> 25:18.260
Having Laura is a step in the right direction.

25:18.260 --> 25:21.940
So more radio communication, Wi-Fi and Bluetooth,

25:21.940 --> 25:26.460
but indeed, we just need to add support for the cell phone chip.

25:26.460 --> 25:28.380
And all the rest is pretty standard.

25:28.380 --> 25:30.020
So yeah, it would be nice.

25:30.020 --> 25:31.660
Yeah, thank you.

25:35.020 --> 25:36.420
Good job.

