 ...one moment, while I find my presentation. Here is this slide show. Okay. I'm going to talk about game development, and I'm going actually to talk about full stack game development. That means that you have to start with developing the platform you are going to write the game for. So, Azure disclaimer at the beginning. That's not my drop. This is my hobby. All the opinions are mine. I didn't... The things I'm showing here and the things you received, I didn't make this alone. I just assembled things that were already around there, done by other people, so I don't deserve full credit for everything. This is not an advertisement for the things I'm doing and selling them, but I do sell them on Tinti. So, if you are interested in... Like, genuinely interested in having those things and not just, you know, tricked into buying them, you can buy them if you want. Everything I do is open source. If I didn't publish design files for some project I made, it's because I never finished it, or I forgot to publish it. You can always ask me, and I will probably apologize and publish it then. And the last thing is, we have to remember that... Well, I'm a young white guy in a very rich industry, and I have a huge privilege of being able to do these things. So, let's remember that not everybody is in the same situation, and that, you know, it's not just that I'm talented, I just was very lucky to be in that position. OK, the whole idea that we have here is that we want to take a microcontroller, running, hopefully, some kind of Python, add some display module and some buttons to it, and have a game console for which we can then write games in Python, because we like Python. And because writing games in Python for the PC is a bit trickier, especially if you want that game to be distributed and to your friends to play them without having to install Python and Pygame and whatever. So, that was the idea. So, I actually started with MicroPython, trying to do that. I started with the Pyboard, which was released as a Kickstarter thing, but I just didn't have the heart to actually leave it in my project, so I reused it to different other projects, and it was just too expensive to tell people, you know, just get this Pyboard, connect some display and buttons, and you can play my games. So, I wanted something cheap, and then MicroPython had this Kickstarter for support, ESP8266, and that was great, and I jumped at that. And, you know, there were a lot of things missing at the time, because it was just being developed. So, for instance, hardware SPI. SPI is a bus protocol that you have to communicate with the display, and you need it in hardware, because then it's fast, and the ESP8266 port of MicroPython only had software one, so I had to copy. Basically, without understanding the C-code, I copied that from NodeMCU and bashed at it as for... So, as long until it started to work. So, I learned C in the process, kind of. So, yeah, I was motivated back then. But, you know, then the MicroBit came out, and MicroPython got support to it, so I thought, yay, finally, there is a device that's distributed among a lot of people, so if I write my games for it, I can tell people to just run it on the MicroBit, and they will be able to play my games. Great, however, when you actually look at it, it only has two buttons, and it has 5x5 display. So, you can't even do tetris on that. You can do snake if you use the buttons to turn left, turn right, or use the accelerometer or something. So, you would still have to connect things to it. So, I tried to make this shield for MicroBit with a proper display, that's an OLED display and some buttons, and a battery because then you don't... You can hide the battery inside and a small speaker in there. And it actually works pretty well, except that the MicroBit has so little memory that you can't really write much of a game, at least in Python. I mean, you can only write so many lines of Python until it stops fitting on the MicroBit. And that actually made me stop doing that. However, the same idea was picked up by some other people, and there is this microgamer thing that you incidentally can also buy on Tindy, that does pretty much the same thing, except instead of those screws, those bolts I used, they used a proper MicroBit connector and stuff like that, and it's bigger and nicer. The thing they did right is that they actually ported the Arduboy games to the MicroBit, and because that's C++, it fits in there much better and it's much faster, so that worked for them. I still wanted Python. Oh, by the way, yeah, a little interruption. What software I'm using for all of this? I'm a complete amateur, I'm a hobbyist, so I didn't really manage to... So I couldn't afford to buy Eagle or Altium or whatever professional software people are using, and KiCAD wasn't really very usable back then, and it's still not very user-friendly, in my opinion, but it's much better now, so probably it's getting there. So I used Freezing. Freezing is probably most of you know it from those diagrams for breadboard schematics in tutorials and stuff like that, but actually Freezing has more tabs on the top and more views in there, and you can switch between them and you can make a schematic in it and then make a PCB. And it's super easy because it's just drag and drop. It's not like KiCAD where you have to select this with mouse, then press this letter, then select something from that menu, and you have to memorize all of that. In Freezing you just see everything and you just drag and drop things, and of course it's much more primitive. It doesn't have as many options for professional design, but it's enough for me. And since Freezing uses SVG images internally, you can use it with Inkscape. To, for instance, draw the outline of your PCB, then the fabrication house will cut it in that shape, and it's great for things like badges or decorations and stuff like that. Also in the images you want to put on the PCB in Eagle or in KiCAD you have to do some strange plug-ins or scripts that will convert it into the right format, let's import it. In Inkscape it's just SVG file, so that's great. And for code I use Vim. No comments. Okay, so I tried to make my own better microbit. And the way I did, I took one of those modules with 8x8 LED display because 8x8 is already better than 5x5, right? And I actually picked one that has two colors of the LEDs, so there are actually 16x8, but there are two LEDs in every pixel. They are green and red, so you can have black, green, red or yellow if you switch both of them at the same time. And some buttons. And I made this shield for Adafruit feather boards. Adafruit has this range of boards they sell, and one family of them is called the feather, the feather wing. The feather wing is actually the shield that comes on top of that. I think they are very like the perfect size for me and the pinout of it, like the what pin, that's what. It's really actually designed with makers in mind. It's not like Arduino where it just happened. Someone actually sat down and thought what would be best. So I really like them. They also have like a battery charger built in and the battery socket and so on. So it's really convenient for stuff like that. So I made that and it comes on any Adafruit feather board. So initially I used that with ESP8266 again and with MicroPython. And it works very well. But then Adafruit has forked MicroPython to make their own version of it. They call it circuit Python. And it's a friendly fork. It's not like they are fighting with MicroPython. They are actually pulling all the changes from MicroPython once in a while from upstream. So they are also reporting bugs. And this is cooperation, not a combat. So the difference is that Adafruit really wants, since they are selling things for hobbyists, not professionals, they wanted to really take MicroPython and make it super simple, super easy for professionals. So they focus on the first 10 minutes of interaction. And one thing they did that makes it incompatible with MicroPython is they took all the hardware APIs and they made them consistent on all of the boards. So on MicroPython, depending on what boards you are using, MicroPython on the micro bit is completely different than MicroPython on the pi board. And ESP8266 is even more different from that. So depending on what you are using, you have to actually rewrite all your programs. And Adafruit didn't want that, because they have a lot of learning materials that they didn't want to have in 10 different versions for 10 different boards. So they made that consistent. And the other thing they did, they made the boards work as USB drives. Actually, pi board does a similar thing. And so when you connect it to the computer, it just comes as a USB drive. This is great because that doesn't require any drivers. And you just can see the files in there. So you can just click on them and edit them with any editor. And that's the thing also they added. When you save, it restarts. So it automatically runs your code without you having to do anything. You don't have to click anything. It just restarts every time you save. And if you use the excellent code, the excellent new editor, you even get the serial console connection so you can actually see the Python wrapper and you can see the error messages in there and so on. So it's really a nice solution compared to some other things that are available on the market where you need special software, you need special hardware even sometimes, like a USB to TTL converter and so on. So that simplifies workshops. But I didn't stop there. I started to experiment with proper displays, like real stuff. And I was trying to get sprites and tiles working. One challenge is that there is not enough memory to keep all the images in memory, so there were tricks used. And I made this thing, which is the micro game, which lets you create real games, like real with graphics and sound on which circuit Python. It's a bit over constrained platform, so you cannot have scrolling, for instance, because it's not fast enough to update the whole screen on every frame. It only updates fragments of it, so as long as you don't have scrolling, you only have several moving objects, it's fine. And then I went back to that shield I made for the feather and said, OK, a featherboard from Adafruit costs about $25. My shield costs $10, and you need probably a battery for $5, so you pay $40 for a simple toy. And I was thinking at that point about running workshops with that, and I thought, no, that's too much. Nobody is going to pay for that. And moreover, only rich people will come and I don't want to make toys for rich kids. I want to make things for workshops with everyone. So I started experimenting with... Actually, I bought the same microcontroller that Adafruit has used, the same chips there. I connected it together, looking at their schematics, and I got it to work. That was really exciting. So the next step was I designed a number of prototypes. There were more than you can see here, but some of them I disassembled for parts for the next one. So, and... I'm gonna skip that. And ultimately I produced this thing, which is the same thing, except it uses a monochrome display with shades of the color instead of color, because that's cheaper. It only has like three electronic elements on it, because that's how I managed to remove everything that is not necessary. It's powered with batteries, and it costs about $10, if you make it in singles. If you make more of them, it costs proportionally less. And I had a presentation about that on Fosdam this year, and also I made a bigger version with a bigger matrix, which is electrically the same, and that might actually look familiar to you. So I had a Fosdam presentation this year, and after the presentation, Mark Andre, one of the organizers of EuroPython came up to me and asked, would I like to run workshops with that on EuroPython? And I said, sure, I would be delighted to. But how do we solve the problem that I have to give people hardware that I wouldn't want to pay for it myself, so either the conference pays for it or the people who come pay for it somehow? And so then, after some checking things and so on, so on, Mark Andre came up with this idea of just give it to everyone on the conference. They don't have to come to the workshops, they can even hack on it by the sales, and it's still a great way of learning Python or having fun with Python at least. So we did that, we produced like 1400 of them. And yeah, so that's basically the story. If you are interested in technical details, I skipped some of that, but you can find me, and also during the sprints we can talk. And the last thing is the PUL library is actually ported to many devices, it's not just on the PUL PUL. So you can run it on your computer, probably you have seen the PUL mulator already with Pygame, but you can also run it, this is a Lameboy device that was designed by a friend of mine, I also ported it to it. It doesn't have like shades or colors, so I used different patterns of pixels to show there, because it's only 8x8 display. And this is a prototype I made for a different conference previously that didn't work out in the end, but you can see it has more pixels and more shades of them, and accelerometer and so on, so on. So there are many, many different ways you can use the PUL PUL library, you can probably run it on any device that's capable of running MicroPython. And I'm working in the future on better versions of PUL PUL, so to make them even cheaper and even easier to use. So one thing I want to experiment with are displays. I will still display huge pixels like now, because that makes the games easier to make. You can make them in 20 minutes or something like that. But I still want to have display for displaying the errors, because you don't always have this serial connection available and so on. So that's the future development. It will probably take me two years or more to make the next version, so don't worry. Your PUL PULs are not going to be obsolete anytime soon. And of course, the circuit Python people keep working on circuit Python and improving it. Like this thing where you get error message on a display, display that has been only introduced like two months ago. Now it's working only for color displays. Now we are working on doing it for black and white displays again. Like the latest beta release. You can update your PUL PULs if you go to circuitpython.org. Documentation has all the details, how you do it. If you update it, they will get five times faster, because the latest version of circuit Python is five times faster than the previous one. So there is ongoing work improving the thing, even if the hardware is already fixed, we keep on working on the software side of things. And I hope during the spring tomorrow and on Sunday we can work, maybe someone will be interested on working in documentation and tutorials for it. So because that's what's missing, obviously. You got those devices and you have no idea what to do with them, right? So there is a tutorial in the documentation. If you go, there is a URL on the back of the device. You can go there and have the tutorial. But we need more. We need lesson plans, we need examples, we need stuff like that. So hopefully we can work on that next. And that's everything I have. Thank you very much. Aha, ha, that's better. Is there a comment in the question? The comment is, Radimir, what you've done is amazing. I just wanted to acknowledge that publicly. I think this is extraordinary, really is. I was involved in the micro bit and that took loads of people, loads of time to get this funky little device done. But what you've done as one person is extraordinary, phenomenal, really, really amazing. So stonking, yes. Well, so my question is, please can we have some form of networking so that with PewPews we can play against each other? Ja, so, I know this is like old school thing, but if you go to the documentation, there is a mailing list in there that you can subscribe to. The address of the mailing list actually PewPew at python.org. So it's easy to remember and it's open for everyone to subscribe to. We have about a dozen users right now in there. There is no traffic at all. Once a month I post an update about what has been happening with PewPew related things and that's it. Maybe there is sometimes some discussion after that in the thread. But however, don't be intimidated by that, we are completely open for any questions about helping people, about organizing workshops, whatever. So that mailing list is there for that. Thank you very much for reminding me to say about that. And of course there is a Discord channel that Adafruit is running for everything Circus Python, including the PewPews. So if you have any problems with PewPews or Circus Python in general, come to that channel. It's super friendly. There is a meeting every week on Mondays in the voice chat. So people like the developer, you can talk with the developers basically. I meant networking not in the sense of online and being a community together. Although it's wonderful to hear that all this stuff is going on. I meant networking as in I can sit next to this lady here and I can go, hey, do you fancy a game of blah, blah, blah. We have networking. Ha, ha, ha. Sorry, that was my fault. I should have been more specific. But you reminded me about something. I forgot about it. So I'm still... So yeah, communication is a tricky thing, especially if you have a workshop or a conference. If I put an ASP266 on every PewPew here, we wouldn't have internet anymore. So it's a tricky thing to do. I'm thinking about infrared things or something like that. But this is additional research I have to do. I have to see what works, what not. And yeah, I'm making no promises. You can always connect things to this connector on the back. And have like radio module or whatever there. And it's always nice if, you know, someone else comes up with expansion modules for it, for things they were missing. So it's always... It's also a nice thing to have, you know, expander on the back. So if you are interested in doing, I'm happy to help. So that... And other questions. Have you thought about adding a case or producing a case that I could buy? So yeah, there's a small one. Yeah, I'm not going to show it now. This one. Actually has a laser cut back that you can screw with those screws. And that's kind of like a case. And there are some people who designed on thinking where it's like 3D printed stuff. I don't have a 3D printer, so I didn't test them. So, okay. Thank you very much. Thank you, Radomir.