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.