All right.
Alright...
I think we can start.
Sunday afternoon at Phosem is always
bit more difficult.
People are tired.
They're already drunk.
So thank you for being here.
And let's make it fun.
So micro Python OS, who am I, Thomas Farstrike?
I'm the creator of micro Python OS.
And I have a background in kernel development
embedded Linux and C++.
I try to draw myself there, but maybe I should have used a picture,
I don't know, not great.
So how did this start?
So one year ago, I was asked to build a device using
a microcontroller, an ESP32.
Is there anyone who already worked on ESP32s, anyone before?
Yeah, half of the room.
So the device is beautiful.
It has a nice touch screen, all kinds of sensors, has a camera.
So it's a beefy microcontroller.
So I thought, OK, I'll just install whatever
operating system they have there in the picture of the vendor.
And I'll just make an app for it and put it in the app store.
And then that will be the end of the day.
But apparently, this wasn't possible.
This didn't exist.
ESP32 apps are usually created from start
using some libraries, but you can just dynamically
load something in memory and execute it.
So I thought, OK, let's just create it myself then.
First, I looked at doing it in C++.
This one, I know there are lots of libraries available.
It's lightweight and the logical choice.
So the ideal was forming.
That's why Drake looks a bit blurry there.
Ideas coming.
But this was a no-go.
Turns out, this ESP32 has a very limited MMU.
So you have to custom compile the C code into a binary.
It's a challenge to maintain if you can even get it working.
Very unforgiving, of course, as we know,
in C, you have to allocate memory yourself.
And it's easy to make mistakes.
So this was going to be very difficult.
And even if I was successful, I would
have to find a PC way for apps to be developed on top.
And we all know making apps in C is not trivial.
Maybe for most of you guys, it's doable.
But an app developer wants to have it easy.
And that's why I thought maybe use micro Python OS.
Drake likes this too.
There's dynamic loading of code, scripts, and binaries.
It's a modern language.
So memory management is done for you.
Very easy to make apps in Python.
And you can even make device drivers also in micro Python.
First, I was very skeptical about micro Python.
I tried it before.
And yeah, it wasn't very stable.
When I tried it, it didn't work very well.
But I took a second look one year ago.
And it's surprisingly fast.
Many libraries are available.
Have been ported now.
It runs on desktop natively.
You have a very quick coding cycle.
And it's 99% of the Python features are in micro Python.
So then I started proving the concept.
So I made on the top left, I made a launcher that
can just load an application, load an app from the storage,
and launch it.
That worked.
Then I made a Wi-Fi app to be able to connect to the Wi-Fi
and download apps.
That works as well.
OK, nice installing apps worked.
And then, of course, also important over the air updates.
So that you can update the operating system.
So these core 6, 5 or 6 apps they worked.
And so that was very promising.
So high-level architecture, then I went with
is from the bottom to the top.
Let's see, we have the low-level drivers
are in the kernel.
So the free RTOS kernel on ESP32, Darwin on macOS.
So both the macOS kernel and then the frameworks on low-level,
same for Linux.
So the kernel, low-level frameworks.
And then in it, you run a micro Python runtime.
And on high-level, you have micro Python drivers
and C drivers.
And frameworks are also written in micro Python and C.
And then apps are the cherries on top of the cake.
So that's on a high-level.
But of course, this is building on top of other cool things.
So we have level GL.
This makes it beautiful.
So with level GL, you can make light weight,
but beautiful user interfaces.
Many widgets very actively developed.
So if you haven't heard about it, this is the thing to use.
And I should also give credit to level GL micro Python,
because level GL is written in C.
And the micro Python bindings weren't very usable.
But this project, level GL micro Python,
took it to the next level.
They made it really easy to use level GL in micro Python.
So yeah, that's also what micro Python OS is using.
And then it's important to learn a few lessons from Android,
the good, and copy the good, and also to avoid the bad.
So the good things from Android is, as you know,
you create an app once, and it runs on all of the supported
Android devices.
It's easy to make an app.
You have to compile it.
So that's a bit less.
On micro Python OS, you don't even have to compile your app.
It just is script that's executed.
But the frameworks in Android are also good.
The user interface is good.
Yeah, millions of dollars have been spent on it.
So let's copy what we can.
But let's also avoid the mistakes of Android.
For example, only releasing the source code twice per year.
Yeah, that's not great.
Also, I heard that they will maybe make it difficult
to install your own APKs on your devices.
Might need a developer account.
So they're closing off the system a bit.
And so these are things that, of course, we want to avoid.
So why would you use micro Python OS?
It's very lightweight.
You can see the snake is eating its own tail.
That's how lightweight it is.
It boots in three seconds.
It's written in Python.
So if you like Python, then for sure.
100% open development.
So the commit searches all in the open, frequent releases.
It runs native on desktop.
And yeah, it's a growing fun, exciting new thing
that's coming up.
So very nice to use.
I had to innovate a bit on top of this to make things easier
for the users.
Because you see on the top, that's the default keyboard.
That you get in level GL when you make a keyboard.
But on a tiny touchscreen, this is very hard to use.
If you have to type your Wi-Fi passwords on a keyboard
like that, you need children's fingers
to be able to type on that.
So I made a new one, impulse keyboards, buttons
are 50% larger, and that makes 100% easier to type.
Then I used swipe gestures for navigation.
So I don't want to waste any screen
a state on buttons that are on screen if it's not necessary.
So to go back, you swipe from the left edge,
like on Android, if you enable it, to open the menu,
you swipe from the top, like on Android.
So that way, we save some screen in a state.
I also optimized the QR decoding to use higher resolutions
that were not available in a driver by default.
To be able to scan higher resolution, high density QR codes
from a phone screen, you really need this higher resolution.
I added a video for Linux 2 camera driver for micro Python
so that when I run it on a laptop or when someone runs it
on their laptop, they can use a camera
from their laptop for debugging, for testing,
or for just taking pictures.
And then the joystick for focus direction,
because level GL by default just has a next and a previous button.
So in the launcher, you have to go by all the icons
to select an app.
But if you have a joystick, like I do on some devices,
then focus direction, just point in a direction,
and the focus moves in that direction.
Then I ported micro Python Noster to micro Python,
sorry, Python Noster to micro Python Noster.
So but Noster is not very well known.
Is there anyone who has heard about Noster?
No, one person, nice, nice.
So it's kind of a more decentralized, really protocol
that can be used for social media,
but also for discovery, for publishing.
It's a lightweight protocol that has a growing community.
And finally, also had to add micro Python bindings
for easy DH to be able to use Noster.
So this is micro Python OS, but of course,
it's useless if you don't have apps on top of it.
The only reason for existing is apps.
So to make apps for micro Python OS,
and here's a hello world example.
So you can see it's just a few lines of code.
A class hello that extends from activity.
And then in the on-create function, we create a screen.
We create a label.
We set some text, hello world on the label.
We center the label.
And then we publish the screen.
We tell the framework to show this screen.
And if anyone ever wrote an Android app,
this is what you would do on Android as well,
just in a Python syntax.
So very familiar, the idea is to make it very easy.
Then you create a manifest.json file.
And there you put some info about your app.
So the version number, the name of the app.
And also the entry points, the thing
that needs to be executed to start your app.
You define this in a manifest.json.
And then you package the whole bundle of the icon of the app
and the manifest and the source code.
We bundle everything into an MPK, just like on Android,
where we have APKs.
It's just a simple zip file.
And then you have a nice bundle with your app.
And then you publish it in the app store.
So the app store currently has two backends.
Original one is upstart microphone.nOS.com.
So this is a curated list of the best of the best apps
that they've been reviewed.
They're known to be working well.
And if you want to be listed there,
just reach out through the chat, which I'll show later.
So that's a curated list.
But now we also have support for batch hub.
So this was created for the Y2025 event for that batch.
So the microcontroller that you receive
and you go to the event, there was an app store
was also created.
And this app store now also has support for micro Python OS apps.
And of course, we can add more backends
if they're very welcome.
Both centralized backends, or maybe more decentralized
backends based on the roster are welcome there.
So which apps do we have currently?
I'm spending most of my time working on the frameworks
and the OS, so the most of the apps there are pretty basic,
just proof of concepts, ready to be improved.
But so we have the Lightning Piggy there.
That's kind of a big one.
This was funded by the Lightning Piggy Foundation.
They wanted to have an app that is a bit like wallet
that teaches kids or people in general
to save for the really long term, to save
for the first car in 15 years, or their first house in 20 years,
to save in the long term.
But of course, you cannot do that with euros.
They become worthless and less.
Maybe you could do it with gold or silver,
but this one does it with Bitcoin.
Sending tiny amounts of Bitcoin to the wallet.
That's that app.
And of course, we have a camera app with QR decoding
image viewer to view your images that you make.
We have a few games like this floppy birds,
clones called quasi bird.
And then of course, a music player, a sound recorder.
Most of them are proof of concepts,
just to make sure the hardware and frameworks work.
And so they're pretty basic, because yet still very early days.
And we have eight more, and now it's nine more,
because another one will end this week.
And why would you build an app for micro-pitan OS?
Well, it's fun to do.
And it's easy.
Very easy.
Few lines, hundreds lines of Python, 200 lines of Python,
and your app will work.
Or you can make it very hard if you like.
You can make something very complex.
It's educational.
If you're like me, you didn't know Python.
Then this is a perfect opportunity to start playing with it.
Many examples, because everything is open source.
Nice community.
And the next one I also like,
you'll be one of the only apps that offers that functionality.
Instead of being one of the hundreds of apps.
So for example, we don't have a calendar app.
If you make one, then people will use your app.
We don't have an alarm clock app.
Make one.
It's just a few lines of code.
And then you will be D, an alarm clock.
And it's a growing field, so that's always fun.
We have good documentation.
All the frameworks are documented.
And updated, docs.micro Python OS.
And we support a few hardware devices and more are coming.
So let's take a look.
So the first one is this wave share S3 touch2.
Awesome device.
It has SD card.
It has an IMU.
It has touchcreen.
It has battery management.
So you can connect the battery.
And it has a camera.
So it's a microcontroller, but it's a powerful one.
So if you want to start playing with micro Python OS
on a physical device, this is a nice one to buy.
But of course, it's still a microcontroller.
It has just 300 kilobytes of RAM.
8 megabytes of PSRAM connected.
And then 16 megabytes of ROM.
So it's a computer for ants, or like an IBM PS2 from 1981.
But of course, the cost is 100 times less.
The second one that's supported is the fried cam 2024 batch.
So who here has heard about fried cam in Belgium?
Yeah, a few.
So this is every two years.
There's a family friendly cam for hackers,
for makers in Belgium.
And all the participants, kids and adults,
they all get a batch so they can wear it on their clothes,
or they can play with it.
And this is a microcontroller, ESP32 based,
with a display, a few buttons, a buzzer, an IMU, multicolor
leds, and you can also connect expansion boards.
So yeah, this is a nice one.
This year's fried cam batch is in the oven,
is being baked, so the prototypes are being made.
And this one will have a touch screen.
So that will be also very cool and an audio jack.
It will also support retrogo for playing games,
like doom and gameboy and nest.
So it will be a nice device.
And here is another announcement,
is that we reached out to manufacturers,
and they're also interested in installing micro Python
OS in the factory, by default on their boards on ESP32.
Because we all know how disappointing it can be.
You receive an ESP32, and it doesn't do anything.
It shows a demo, but you have to spend weeks making your app
before you can actually use it.
But by adding micro Python OS in the factory,
the vendors already have a fully functional Android-like device
that people can install apps on.
So we've received this week samples of the first device
from a small manufacturer in China.
And also a bigger manufacturer in China
has shipped as samples also this week.
And I can already say that the second one
is a new form factor.
It will be a smartwatch.
And it will have Laura as well.
So it will be very fun to play with,
and to port micro Python OS too.
So for now, we are doing this for free this porting,
because we want to spread it around,
and have a bigger install base.
So if you're also working on a device,
and you also want to have it ported there,
very if you want to have this done for free.
Now, we have a few minutes for a live demo.
Of course, demos are always carry, risky,
valid work.
And so where is the demo?
You're looking at the demo.
We've been in micro Python OS the whole time.
That'll be proved to you.
So when I click, then I exit the full screen.
And this is the image view app.
So I'm just in the image view, let's not click the lead.
And so I can press escape to go back,
but I'll just swipe from the left to show this gesture.
So going back.
And here we have, yeah, have it running on my desktop here.
So all the apps that I have here,
some of them still under construction.
So if I open, for example, the app store,
normally it doesn't run on such a huge display,
but here we have the app store showing apps.
And then we can install apps and install them,
just basically unzipping it.
So I press escape to go back.
I'm not going to show all of them,
but maybe the camera is nice.
So you see, this is the video for Linux in action.
And I can take a picture like that.
We have the settings.
We have the OS updates.
I'll do that one as a last one.
So this, of course, the OS update,
this is simulation.
It's downloading the update,
but it's not really writing to my disk,
because I want to leave my operating system.
Leave my Linux as it is, and just have this running on top.
So let's get back to the presentation.
This was the picture I took.
So here we go, the live demo.
So just to finish up, we have four core contributors right now.
Everyone's invited to at least come check it out.
We have 15, now 16 apps in App Store.
24x on GitHub, community chat has now 55 members.
300 plus stars on GitHub and 2000 commits,
but those are rookie numbers.
We have to pump those numbers up.
In the roadmap, we have the factory installs that's very exciting.
We will add a few more frameworks to make
give it more capabilities.
And then release an API 1.0.
And add more drivers, add more boards,
and see where the community wants to take it.
So it runs on ESP32s, but also everything on top.
You can run it on the Raspberry Pi.
You can run it on Linux desktop.
So the next step, I would say, is run it on desktop,
if you like.
And we have pre-built binaries.
If you don't want to compile it yourself, on Linux and macOS,
you can just download the pre-built binary.
I don't know why you want to use anything else.
So you can build an app or get a supported device
and flash it and install it, and then publish it in the App Store.
Installation is very easy.
Also, we have this web installer, web serial.
So just with your web browser, you go to install.
And we have one firmware that works on all the different devices.
So we detect on the ESP32.
We detect the hardware at boot.
And then we initialize the board properly.
So micro Python OS is waiting for you.
Join the chat.
It's just a telegram chat that we redirect to,
clone the repo.
And if there's any questions, you have 30 seconds.
Hello, so thanks all for this project.
Would it be suitable to start for a simple phone,
like feature phone?
Yeah, so the question is, if we can also run it on a phone,
yeah, this is a big dream of mine.
Having Laura is a step in the right direction.
So more radio communication, Wi-Fi and Bluetooth,
but indeed, we just need to add support for the cell phone chip.
And all the rest is pretty standard.
So yeah, it would be nice.
Yeah, thank you.
Good job.