 Our community is big, and it attracts a wide range of people from various backgrounds, where each individual enriches the community with their unique experiences and perspectives. However, that community didn't appear overnight. If we go back to its founding one more time, when members initially began gathering together, one person stands out for their immersive contributions in attracting the thriving community of individuals we see today. Thanks to his efforts, Learning Python became accessible to anyone in the Czech Republic, even to those who are not proficient in English. Thanks to his dedication, our community became significantly more diverse and inclusive. He helped bootstrap Czech Pylates and devoted countless hours to teaching programming and women. Nowadays, he is still committed to teaching and empowering others to teach. He is making the community accessible and friendly to anyone. He is a C-Python developer, and he works as a senior software engineer at Red Hat. And today, he will tell us his story. Dear Python friends, I am very honoured and very excited to welcome on stage our first keynote speaker, Petr Victorin. Hello. Hello. Hello. All right. Thank you, Mia, for the introduction. So as you already heard, my name is Peter. People sometimes ask how to pronounce my name. If you speak English, it's Peter. You don't have to conjugate that. It's better that way. On the Internet, you can find me as that picture and that username. It doesn't have a good pronunciation. And I was asked to say something about myself. So this will be a very selfish talk all about me, all about my story, but also about the lessons I've learned. And I hope that maybe you can use some of these to make other people's lives more fun. So, a bit about myself, I was born in Brno about 200 kilometres from here. I was lucky to have a computer in the family when I was born, which wasn't really common in this country or in Czechoslovakia at the time. And also, my dad was a programmer, so I had access to computers from a very early age, and I started programming at six as I was starting to read and write. And I also had other lucky circumstances. So let me ask you, just to have a little morning exercise, for how many of you is English not the first language? Wow. You can see the effects of Brexit here. Almost everybody raised their hand. So most of you probably know that English is nowadays a prerequisite for any kind of serious programming. And I was pretty lucky in that respect, because when I was ten years old, my family moved to the U.S. And I got to learn English with basically no effort. So looking back, I realise I've been incredibly lucky. I had access to a computer, I learned English, also I look like a stereotypical programmer, so everybody assumed that, you know, programming is natural for me. I have no idea how things would be otherwise, and I have great respect for everybody who through their years struggled with being different and being told they don't belong. Also I had a loving family, so I could take risks and know that I would also always have a safety net to basically go home and have all my problems fixed. I never had to struggle, you know, for getting food or housing or things like that. So just remember, as I talk about my achievements in the community and about empowering others and making others have fun, I got lucky. And if you're sad that you didn't do as much and you didn't do enough, just remember it's not a fair race, I did have an unfair advantage. And if you want to help others, please be sure you're living a comfortable life first. If not, if anything's troubling you, then we are happy to help you, we don't expect anything in return. But if you think you would enjoy helping others, then here are some tips on how to do that. So US universities are pretty expensive. So after I finished high school in the US, I moved back to the Czech Republic, got my bachelor's here, and then I moved to Finland for my master's thesis. I went there for the European Erasmus program, who here knows Erasmus? Ah, it's Europe, I thought all right. So that's a European mobility program for student exchanges. And usually you go there for like a half a year or a year. My Finnish university happened to have an international master's program, so I stayed there for my whole degree. My Czech university wasn't too happy about that, sorry. But when I was done there, I realized that my home is back here, so I moved back. Why I'm talking about that? When I was moving to Finland, I was looking for some advice on what Finland looks like, and I found this person, Honza, I don't know if he's here somewhere? He is somewhere here. He'll have a talk on Friday, I think, right? Just to move the spotlight on somebody else for a while. So Honza went to Finland a few years before me, and he had a blog, and was a very active writer on the blog at the time, and explained what Finland is like, and it's great, you should all go there and study there. And in 2011, he had a conversation on Twitter that went something like this. Michael said, I've really enjoyed this Ruby meetup in Vanu, and Honza said, oh, that's nice, and is there a Python meetup? Because at this time Honza was writing PHP, and he was looking to learn Python. And the answer is no, make one. You don't have to be an expert. And the rest, as they say, is history. Honza made the first meetup in Vanu. I unfortunately was in Finland at this time, but I did manage to go to the second one that looked like this. And I will talk a bit about how these meetups are organized around these places, because I think it's quite inspiring. But first, a little Czech lesson. How do you say in Czech, go to meet some friends? The phrase is, jit na pivo, literally that means go for a beer. That's just part of this culture here. Another interesting thing about the Czech language is that the sound I is pronounced exactly the same as the sound I. You can probably know where this is going. The Czech Python meetups are named pivo. So when we say jit na pivo around here, it means go to a meetup. This is too good of a pun to not use. But I always like to remind people that drinking is not mandatory at these events. I don't drink alcohol myself. And I've always felt welcome at the meetups. So usually when I go somewhere to meet with friends, I get lots of questions like, why don't you drink with us? Just come on, have a glass. Or are you driving? Or never got, are you pregnant? But that's probably the worst one. Well, not at these meetups. It might be the fact that I was near the beginning and kind of helped shape the culture. But there were some meetups that were going for a longer time before this, like the one in Prague. And I also felt quite welcome there. So I like to think of that as my experience with being different. Because I don't look different. This is the close I can get. And that made me try to help, try to make life easier for people who might feel like they don't fit. And I'm very happy that our community is like that. So back to linguistics. This name for the meetups was actually coined outside the Czech Republic in Bratislava. And they had pivot meetups that currently don't have the name anymore. We adopted the name for the first pivot meetups in Brno. Shortly after that, the Prague meetups changed the name as well, because it's too good of a pun, right? Sometime after that, I started helping Honza with organization of the Brno meetups, which freed his hands for some interesting experience. So we went basically on a missionary trip to Ostrava. I took the train there, looked for a venue, found a venue where we could have a meetup, then looked for somebody who could organize the meetup after the first one we organized ourselves, and found Lumir. He's probably here as well. There he is. Hi, Lumir. So he organized the pivot meetups in Ostrava for a very long time. And then it spread, and now we have too many pivot meetups to even count. Mia counted them. Do you remember the number? I have seven there, because some of them are no longer active. So in Bratislava, they went back to Rubislava, and they welcome all the dynamic languages, or maybe all languages. Oh, I haven't been there for a long time. Anyway, how many of you go to Python meetups? Oh, not that many. That's interesting. How many of you do not have a meetup close to where you live? How many of you who had just had their hands up would like to have one? That's quite a few hands. So these are tips for you. As I said, when Honza organized the first meetup, he was very much not a Python expert yet, because that's not something you need to organize, right? You just need to find people who are willing to talk about the topic you're interested in. So my tip for organizing your meetup is just start. Go for it. Find some people. Find one or two people and just get together and talk. Put it on the internet, people will join. And also, it's about the people. You need two things. You need a venue, for example, a restaurant, a pub, a club. In the summer, you can do it in the park. And you need people. You need at least two people to have a conversation. Anything else is a bonus. You can have speakers and talks as a bonus. You can have a projector as a bonus. You can have food. You can have sponsored food if you're really lucky. Sometimes announcing the event publicly is a bonus, although I wouldn't recommend that to new meetups. And, of course, spreading to other cities like Verde and Ostrava is also optional. Another thing is look for help. If you organize something, say to the attendees that you're looking for help organizing the next event because you might be ill, you might be busy, and it's really hard to keep a meetup going in just one person. This happened to us after Honza. Organized for many years. He passed the organization to me, and I organized for a lot of more years, and I passed the organization on to other interested people. That's not a problem there. It's always better if there's some overlap. And if you want a long-running meetup, you pretty much have to have help. One more thing, own your records, own your data. So Pivo was advertised on lennard.com. Does anybody remember that? So lennard, Facebook, Twitter, meetup.com, and what do all these sites have in common? It's really hard to get historical data from them because either they don't exist anymore, or they're slowly monetizing every access, or you have to search the history somehow. So my tip for you, if you're starting a new thing, just put the data in a Git repository where everybody that has it keeps a copy. What we did is then took the data and built a webpage from it, just a very simple front end. Mainly, I say it's mainly to make the organizers record the data somewhere that we own it. And then people like me who decades later look back and say, oh, what did we do back then? How did these things get started? Well, we have an answer. After that, the advice I will give you is keep it regular. So set up a date and always do a meetup on the regular date, or if there's an exception announce it widely. That means people don't have to ask, when is the next meetup? Is there a meetup this month? Things like that, there will be a meetup. If it's the third Wednesday of the month, then there will be a meetup in Prague. Third Wednesday of the month, of course, happens to be today. As you already heard, there is a meetup in Prague, and there has been a meetup every third Wednesday for the last decade. I think they missed one when COVID first started and then they moved offline. So keep it regular. So then you don't even have to announce it if you're too busy for that. If you want any details, you can go to pivo.cz. The website looks like this. You can switch to English. And there's information about Prague Pivo. So there is a map, link to maps, so you can navigate there. Now I'm having more technical difficulties. Right. So I hope you're properly tired hearing about meetups. Because there's another thing that kind of grew from this community that was started. When you get people talking together, they have weird ideas and some of them are actually worth executing. Some of them need a little push. And the push for our community Python courses was this post on Facebook. So somebody called Marushka said, hello, we're looking for a tutor for Python. So Marushka was attending university, studying library studies. And they have a Python course, mandatory Python course. And some of them were struggling with that. And the interesting thing was name the price. And we've just returned from our missionary trip to Ostrava, spreading the word about Python. And now somebody's asking to pay for us to spread the word about Python. That didn't really make much sense to me at the time. Now, I know there are some professional Python tutors around here. I don't mean to disrespect your job. But at the time, I was very much in the community mood and wanted to share my knowledge with everybody willing to listen, which I still do. But I've always kept that as a hobby. So it doesn't really make much sense to pay for this. Also, a university student probably couldn't afford a professional, a good professional tutor. To make the proper money, you probably have to go to a bank or a big company. Or do some pro bono work. So that's what we did. And with a bit of luck, I think we stumbled on a pretty good recipe for organizing a community course. So here's that recipe. It's modified slightly, so it should be more applicable to your situation. If you want to share what you know with people, with any kind of people, the first thing you want to do is pick a target audience. Probably the easiest is complete beginners, because you know the level of expertise for everybody. But if you want people who are familiar with containers, or familiar with Python already, or writing metaclasses for their day job, pick who you want to teach. The next step is to invite three to five people, keep it small. And if you live in a city, you're very likely to find people who want to know, who want to learn what you have to offer. So reach out, invite a few people, then have an end result in mind. So in our case, we didn't start with that, and we just asked the people, what do you want to do with Python? Oh, you want to download the menu page from your favorite restaurant, OK? So for that, you will need to learn how variables work, a little bit about HTTP, how to save a file, how to maybe you want to parse HTML, maybe you want to parse a PDF. So we asked for the end result, but if you're planning a course, you probably want to start there, OK? Then you need to explain what they don't know. I kind of skipped ahead here. So explain everything they don't know, right? If you picked the proper target audience, you'll have a good idea of what they don't know, but they will always surprise you. There will always be something extra that you didn't think about that you need to also explain, unless you've been doing the course for a while, right? That takes a while. It will always take more time than you think. So what we did for our first iteration of the course is not give a specific end date. We just said we'll meet every Monday. I think it was Monday. And just go on explaining things. And if we achieve our goal, then we'll pick a new one and we just went and went and went. And the important thing is there is that I kept notes about what I taught every day. When done, we would pick another task and start over. Or you can start over with new people. The other lucky thing that I stumbled upon is sharing notes, which comes naturally because I had open source code. So I just put my notes on GitHub for everybody to see, which is just perfect. Notes are there to recall what you said that day. So you can go back a year later or maybe somebody couldn't make it to the meeting so they can go back to the notes and see what they missed. Later on when the course got bigger, the notes became more important because we got some helpers, like teaching assistants where people are interested in helping people with their problems. By the way, it's surprisingly easy to hire people or recruit people like this because it seems a lot of people in this community like sharing knowledge. And helping out at a course is pretty easy. Look for missing parentheses. If you don't know the solution to a problem, then you ask somebody else. We actually ask people who go through the course to come back and help others. Because for once it lets them know what they actually learned and compare themselves with the total beginners they were just half a year ago. And the other thing is to let them go through everything again so they kind of solidify their knowledge. Back to notes. The notes are also useful for other courses. So just like the meetups expanded to other cities, the community courses expanded as well. So people from Prague said, we're very jealous of you. You have your beginner Python courses for PyLadies and we want that as well. And the solution to that is, again, just to start. If the notes were there, they just took them and created their own course. And of course, I think the last step, where we're almost there, is making notes for self-learners so anybody can go through the material online. Now, if you're doing a course in English, you don't have to do this because everybody's done that. The internet is full of that. If you're doing this for your own local community, especially beginners, they might not know English that well. So it is useful for them to remove that barrier. And also, if you're teaching something that nobody has ever taught before, which happens, I think this is the way to go. Start with a small group first, see where people struggle, and then write the tutorial for your new library that, of course, nobody's taught before, knowing what your target audience will ask. I don't know if Daniela's here. Ah, hello. Everybody's here at the conference. OK, so if you don't know Daniela, he's like the documentation guru. And he says that tutorials are the hardest part of documentation to write. Is that right? Yes, so if you have the task to write a tutorial, I think the best way to do it is before you start writing, try to teach the stuff to somebody. As I said, pick a target audience, say to yourself, what does the person already have to know, and then just teach it. Ask what they don't know, ask what they don't understand. And after that, write down what you needed to explain. And that'll become the start of your tutorial, and then you can show that tutorial or make another course with a few more people to put in any corrections. It's really fun, so consider that. Next time you have to do a tutorial. So we started pretty small, but nowadays, the courses are pretty big, and we have a lot of different types of people involved in these courses. So of course, the most common role is the attendee, someone who wants to learn Python in this case or something more advanced maybe. And they signed up. There is usually no shortage of these in big cities. Everybody wants to go to a free course. So what PyLadies do is pick based on motivation. Another role is the organizer. Like with the meetups, the organizer doesn't have to be the expert. So that's somebody who takes care of having a place to learn at, of running the registration, of answering questions like, what should I do if I forgot my homework? What should I do if I can't make it to the meeting? That's quite a demanding task. And usually people rotate there. Then we have, of course, some mentors or helpers, people who help with the issues. Again, these don't have to be experts. They just need to be a little bit ahead to diagnose the problems. We have the person presenting the material. I don't know if this is the right name in English. We have the author of the course materials, somebody who writes or contributes to what everybody sees in the notes. We have the maintainer of those notes. We have sponsors. This is actually funny because it's really hard to sponsor community courses, at least the ones we do, because they're basically budgetless. Everything you need to run this course is some space. And companies are usually, unless it's COVID, they're usually very happy to give you an unused conference room for the evening, if you want to teach people Python for no money. So what the sponsors do is give money for stickers, give money for t-shirts, because they want to contribute at least something more. Now, the interesting thing about these roles is that people graduate and migrate. So attendees, hopefully, some attendees will become organizers when the current organizer is burnt out and carry on with the tradition. Some of them will go back and help with the new batch of students, again, to go through the material one more time and to see how far they've progressed during the course. And some of them, you know, fixed bugs, make new courses, make new workshops. I think the by-working workshops, Mia mentioned. Right, in Prague, you have weekly meet-ups where people solve each other's problems by working. And there is also weekend workshops where somebody says, I want to teach people pandas, or I want to teach people how to work with Excel tables in Python, and they just do it. And they can do it because we have a network of organizers who take care of courses and know how to do this stuff. So it all kind of brings the community together. And I guess that's the main thing, bringing the community together and building the community. I think this is the perfect way to introduce new people to the community, teach them what they have to know. Let me ask one more question. Who here was in the beginners' day on Monday? So you saw firsthand, or maybe that wasn't a good question. There was a beginner's workshop on Monday. Who was on that? Not that many people. Has anybody been at some beginner's day event or some beginner's tutorial at some Europe Python or other conference? Oh, there's quite a few, quite few people. Maybe it's not good that it overlaps with the more interesting workshops. But I definitely encourage you to try and then maybe organize your own. It is quite fun. And it is also something you can do to help the community. And the community is the key here. How many of you know this quote? That's less people than I expected. Interesting. So if you want to know about how community around Python works and how it should work, you should probably read something Brett Cannon wrote or spoke about at conferences. I will borrow some of his words here because he's thought about these things a lot. And I would like to say one thing more than what Brett likes to say. Brett likes to talk about open source conferences. Does everybody know what open source is? People are laughing. But so we freely share the source code of our libraries. But why do we do it? Because the source must flow. All right. So I've seen it explained like there are two schools of thought about why we open the source. The first is the free software movement, which maybe not everybody is old enough to actually get hit by that. So this is something that I like to compare to the right to repair stuff. So imagine you buy a kitchen blender and one of the blades on it breaks. And the argument is that you have a moral right to replace that blade. You should be able to make your own blade if you have the necessary tools and expertise. It should be possible for you to just make something yourself and put that in. And if you don't have the tools and expertise, then you should be able to pay somebody to do that for you. Not necessarily the same company who made the blender in the first place, because that company might not exist anymore or ask for too much money or things like that. And also the blender is fully yours. You can take it apart and convert it into a power drill instead of a blender. Or you can take it apart and remove the little microphone in it that listens to everything that you say. Why is that even in the blender? So this is like the moral underpinnings of the free software movement. You should own the software that runs on your computer. And the best and probably the only way to do that is to have access to the source code. Now, the other school of thought, which is what the open source initiative goes with, is practical reasons. Open source works as a methodology. It's a way to make software. And it usually results in better software. If you open the source, all other things being equal, the software will probably be better. So this is something like diversity and inclusion efforts in corporate world. Very direct and business-like reasoning. There's no emotions. We do this because it makes us build better stuff. It's not necessarily easier to build open source software, but in the long run, the software tends to be better. So which one is Python? Do we open the source because it's the morally right thing to do? Or do we open the source because it results in better software? Yes. So I actually think it's a better answer. I haven't seen too many Python libraries licensed under the GPL. Why would you not license under the GPL if that's your ideology, if that's something you think everybody has a moral right to open source software? Why would you not use the free software license that makes more software open and free? So if that doesn't look like a good reason for me. And the business-like reasons, I mean, really? Do we open our source because it makes software harder to build but better? Some of us do, of course. It's a valid reason. But I think the main reason we do this and the main reason we do everything in this community is for the community itself. We meet people. We have interesting discussions with people. And to have a community, you have to have something to base the community around. You have to have something to talk about. And the best topics are kind of involved and something that takes a lifetime to learn. So we always have something to talk about. Always, you can always find new people with new ideas and new areas of work. So it always stays fun. And for me, that's the main reason I do stuff. That's the main reason I open my source. It's the main reason I publish my own libraries and then go to these conferences and so on. Does that make sense to anybody? Some of you, at least. Yeah, so for me, that's the meaning behind Brett's quote. I came for the language, but stayed for the community. Because the language, I mean, that's the seed around which the community grows. That's the thing you need. But it's not really about designing a language and learning a language. That just means to an end that's there to meet people. Of course, it's only one of the reasons. We all have jobs related, or most of us have jobs related to Python as well. We want to build good products. We want you to have control over your software and so on. But it's not the main reason. Right. And I was very worried I would have a short talk, but now I have five minutes left. Anyway, so Brett wrote this blog post and had a talk about setting expectations for open source participation. How many of you have seen that or read it? So there should be many more hands there, if you care about the community. I see Russell nodding his hand. So take it from him. Definitely look this up. And I should probably tell Brett to make it a little more searchable on his blog. And I would say to that, that's my yes and answer, is if I wrote that blog, if I was smart enough to write that, I would say setting expectations for community participation. Because everything he says doesn't just apply to software and how to interact on a GitHub repo, but how to interact in a community. It can be here in a conference. It can be on a course, on a meetup. It doesn't have to be directly about the software. So to just repeat Brett's words, everyone is a volunteer. Everything you use has a cost. Somebody made the library you're using. Somebody donated their time, or maybe some company donated their employees time. You get to use it for free, but it doesn't matter. It doesn't mean that it didn't cost anything to make. So basically everything you use, everything you get from the community is a gift, a present, and you should treat it as such. And because we all give gifts and expect nothing in return, participation in open source should be a series of kindnesses. And I would change that to participation in the community should be a series of kindnesses. What does that mean? Kindnesses. So the word Brett first used was a favor, something you do to make somebody else happy. But the word favor kind of implies that you should do something in return, whereas you shouldn't. Everything we do is given freely, and there's no expectation of getting something in return. So if you use Python, or if you use NumPy, or Django, or PyTest, or Textual, or Beware, or whatever other library, nobody expects you to go join the project and help it out. On the other hand, if you want to, that would be a really nice thing to do. Again, if you have the time and the means. So unfortunately, I didn't time my talk well, I think, right? How much time do I have? One minute. OK. So read Brett's post. He says details about all of this first block of interactions, how they can go very wrong, and how to avoid that, how they can do well. And after you read Brett's post, you will see that it also applies to giving a talk at a conference, right? I don't expect anything in return after I'm done with the talk. You're free to just leave and skip the applause. Yeah, I mean, really, yes, go. You're free to leave and skip the applause. I don't think you're not obligated to applause, right? I do it mainly for me because I enjoy it, and because I made a promise. It applies to organizing a meetup. It applies to teaching a course. If I teach my course to beginners, well, I don't expect them. There's no expectation for them to go back and organize the next one. They can just leave. Or if they are feeling kind, they can also stay and help out. So do not expect anybody in this community to do anything for you. They're all doing it for themselves. There's one exception, and that is if they promised. So if you promise to give a talk at a conference, then you better do it, and it's very bad if you don't. The same thing if you promise to give a review tomorrow or something like that, then you better do it. It doesn't really help the community. It makes people frustrated if you forget about that. So that's the part about promises from the title of my talk, and I see me staring at me because it's my time to end. So I will be around today if you want to talk more. I hope you liked the presentation, and see you all at the conference. Thank you, Peter, for your great talk. So now it's the time for our Q&A session. If you have any questions, please go behind one of these two microphones. And in case you're joining us online, then you can post your question to PyCharm Forum Hall. Do we have any questions? Yes. Please go behind. Thank you very much for the talk. I appreciated very much that you put the focus on the advantage that you had or how lucky you were. My question is, is there any experience with this advantage used and how to teach Python on your side or in the community? This would be very interesting for me. Thank you. So the question is about experience with teaching disadvantaged people. So I focused on PyLadies. We didn't have any women at our meetups when we started. And now we have community organizers like Mia. And there's a lot of them. And I think the courses helped a lot to make it seem normal that the ladies are welcome at our events. It would be really nice to welcome everybody else. But I need to delegate that to somebody else. Hopefully somebody else step up. Thank you very much. Go on. Something that you mentioned in passing a couple of times was burnout, that a previous organizer burned out and then the next person took over and burned out and then sort of preparing for the burnout that's going to happen. Do you feel that burnout is an inevitable part of community participation like this? And if not, how do you avoid it? So do I feel if burnout is inevitable? No, but it's probable. So you should plan for it. Whenever it stops being fun for you, take advantage of the fact that you don't owe anybody anything. It is always a kindness. And nobody should expect anyone to do more than they already did, unless they promised. And take advantage of that. If you don't want to organize the meetups anymore, just stop. I call this delegation by resignation and it's very, very effective at finding new organizers for things that people want. If nobody cares about that meetup, then maybe it's fine if it just goes away. You'll be much happier. If you're not happy organizing it. So it is a bit hard to see the signs and to realize that you're not happy in your role that you've been doing for a decade. So be a bit careful about that. But yeah, burnout is real. Burnout happens to most people. And it's fine to prevent that usually by stopping what you're doing. Thank you very much. I enjoyed that. Although I think you took an unfair advantage because all your wisdom was looking back woods into the past. What advice do you have? What wisdom do you have for us in the other direction? Because what about the next 10 or 12 years of this? Can we build from the past? Or is it going to be an unexpected future of community that we have to deal with? That's a very open-ended question. I don't know too much about the future. If you have a crystal ball, then I would be happy to use it. So what I will ask you is to learn from the lessons of the past and then come up with new ideas and see how the two interact. That's usually where the most fun is. Do you have any fears for the future? Fears? Yes. When I see this community, no. I mean, things can always go wrong, but I don't see reasons they should. I am worried about some stuff, but we'll overcome that. OK, thank you for your great talk. I have more of a practical question about teaching. It's one part to teach the language, but from what I've discovered, a very difficult part is teaching this sort of an algorithmic thinking. So do you have any tips and tricks how to teach this part of programming? So this is a part I skipped a bit. I did try teaching at a university, and I hated that. I hated two things about that. The first one is having to grade people's work and evaluate them, which is, I don't like that. And the second part is, in my community courses, I teach motivated people. I teach people who want to learn. So my advice is teach algorithmic thinking to people who want to learn it, because those are the ones who will get it. Another thing you might want to try is get people interested in algorithmic thinking. So they will want to learn it. But don't just say, I will teach you programming, and then go with, here is how you can shuffle a deck of cards using pointers. That doesn't work. That's actually what the university course in Bernoded, before we started the courses. They took the IT curriculum, and they applied that to library studies, library students. It didn't work at all. They got better. They have a special course for that. But that's a big reason why we started these community courses. OK, thank you. We have one more question here. Go ahead. When you were mentioning, why do you open source? You mentioned only two reasons. Do you open source for one reason for another? Well, there are many others. Why did you do that? Why did I do it? To make you think, to make a point. OK. Yeah, there is so much stuff I didn't get to in this talk. I even have some of that stuff on the slides I didn't get through, but there is a lot to talk about. And I could only pick stuff that I talk about. So there is always more. OK, thanks. Do we have any more questions here? I'm checking the discord, and it seems like we don't have any more questions. So in this case, thank you very much for your questions, and thank you very much for your attention.