Closing session
Published June 13, 2025
This video is from DjangoCon Europe 2024 in Vigo, Spain.
Paolo Macchiore argues that contributing to Django can begin with writing code but grow through joining communities, attending sprints, speaking, mentoring, translating documentation, answering questions, and organizing events. Other speakers introduce stenotype typing as a fast, learnable skill; a Django Migration Zero tool for safely cleaning up old migration files and database history; and a redesigned Django Filer interface for managing files and folders. The remaining talks range from a deliberately unreliable, multi-user drum app to PyCamp’s relaxed, collaborative project camp and an NBA statistics site intended to help fans argue with facts while bringing African Django developers together.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: Does everybody know the first fall of Lightning Talk Club?
Speaker 2: Sorry?
Speaker 1: No it's not that. So um to help the um speaker know when it's time to stop talking um about ten seconds before the five minutes are I'll raise one hand and when I do that I would like you to clap with just two fingers like that Yeah, so if everybody does it they get this little noise that tells them that's happening and at five minutes I'll raise two hands and then you can burst out into applause and we'll send them off the stage for the next one. Okay So I 'll have five minutes. You'll have five minutes. Chuck, where's Chuck? Chuck, you'll be next. Then Ronnie, where's Ronnie?
Speaker 1: You'll be next so you should come to the front please. Are you ready? Okay, uh you ready to start the timer? Please welcome Paolo.
Speaker 3: Thank you. It's very great to be here. I applied for a talk in this conference but they refused me, so I'm trying to do the same talk in five minutes. So the title of the talk is Many Ways to be a Python contributor, but actually I'm a more a Django contributor, so I'll try to as I said say the same things in five minutes. I'm Paolo Macchiore, I'm a member of Pi PSF, DSF and Python Italia, a co-organizer of Pyconitalia, as you can see from my t-shirts. I'm organizer of Python Pescara and Django Country So I'll list a way to be better Python contributor or Django contributor. The first one is writing code.
Speaker 3: I started writing code in the Plon days with Zope Plon. and was a great way to be a better Python contributor. Another way is to joining a community I joined my first community in uh Florence. I I discovered about Django at Europeython twenty eleven and it was a very good way to improve as a contributor. Another way to be a better contributor is uh get involved. I uh started getting involved in DjangoCon Europe 2017 in Florence. It was a great way to see other people volunteering, organizing a conference. conference and decided to start get more involved. The same uh conference at joining a sprint, I suggest you to join a sprint
Speaker 3: I'm here we are we're Marcus and Mark. I they helped me with my first sprint and I learned a lot of things. And after that I contribute for the first time with a big feature in the Django uh code and they merged for Django two thousand 2. 0 version. Another way to be a better Django contributor is speaking at conference like this one. And this is a picture of my first ever talk in Florence I talked about full text search with Django, of course. And also coaching people is great to be a better contributor. And here my first Django Girls workshop in Rimini Then I decided also after joining Erasprints to organizing a sprint
Speaker 3: about the Django website when we decided to remove the external search engine and work on the internal one. And after that I decided to contribute to the Django website and I replace Starting from the point the documentation search, full text search and I replace it with Postgres. This is the documentation and this is all the functionality you can find in the full text search. and was a great way to improve the lot and working on bigger blog uh uh websites. I started also creating a blog and writing article about Django and Python and it's also wrote wrote a bit of front-end
Speaker 3: code I'm not used to bit and then I decided I'm on my risk to sharing content and online I can use for example and I received a lot of criticism and improved a lot from this criticism I suggest to do the same if you are brave enough And then I started to answer in question. I stopped uh searching for answer on Stack Overflow and started searching for questions because it was a way to answer on my own and to improve on a particular subject. Then I tried to help translating the Django documentation. With the Italian team we had finally we merged our documentation uh we reached uh certain amount of translating dog uh strings
Speaker 3: and was very funny I also tried to increase the diversity in the community and also about myself. I joined my first international DjangoCon in Copenhagen and I think Being part of the community and meeting people from everywhere, it's a way to meet other people and increase their diversity. I also started studying from members of the community and I tried also to inspire the community. Here I met PyCon DE uh after the pandemic of uh France and uh they suggested me to contribute back and writes in the forum. I also try to organize conferences like NC promoting PyCon Italia
Speaker 3: and organizing also workshop my first uh Django of girls workshop organized in my hometown and I then I start a community local link Pescara. There is no one no other community, it's a certain Python Pascal community and that iterates all over the other point I'll say because we organized it. Dinner, talks, trick, we 're cook and we went to university And this is it.
Speaker 4: Woo.
Speaker 1: Okay, well we know how it works, so Chuck.
Speaker 4: Hi. So um hello, I'm Chuck and I like checking up a lot of hobbies And learning new things. For example, I learned how to wear a kimono, and that's why you're seeing me wearing a kimono. Another thing that I decided I want to learn is to um do synotyping. So I've just ordered a keyboard today and I'll show you which one I ordered. First of all, it's signo typing and why I want to learn it, right? So um well this is not the keyboard order, but this is like maybe like how it looks typically. It's actually the fastest way to type and it's like uh you know, if you're fluent with it, you can type it in like two hundred and twenty five. five word for a minute. It's used in used by these amazing people who's doing transcription for us.
Speaker 4: Yeah. So uh the way you type is actually pressing all the keys at once. So like normally you type, you do it like one F at a time, right? But when you're using this kind of keyboard, you just like press like multiple key all at once. It looks really cool. Um let's see if I can play this video. Uh the sound doesn't matter, but like to show you a little bit of how it looks like. Hope the internet works. Um Yeah, come on. Okay, uh please. Okay. Yeah. So um you see that like you put all the fingers on the keyboard and then um so you press all of them at once. You can see that like that's the key press on the uh bottom left there. Then you see it's like actually very fast the all the words just like pop up like one by one. So um some people say like oh is it done by AI or something. It's actually not uh so when you press all the key you
Speaker 4: so um actually like uh there's a driver there to detect uh actually like from the key Which word it corresponds to and they will show up on the screen. So can I go to the next. So there are a few fun facts that I learned from just watching YouTube videos. So first of all, when you type in a steno keyboard, only sound matters. So for example, if you want to type cat actually you type key k8 instead of C A T because you know the sound is cat so you know KAT sounds like cat so yeah it's it works. Also on that keyboard you see there's only like 22 key or so it's like so like and it doesn't have an I key So to type I you have to press E and U together. I hope I get this right. So talking about that in front of the experts. And also in the keyboard, there's like two P
Speaker 4: keys. So actually there's one on the left and one on the light, right. So one is for the beginning P. for the ending P so um yeah it's quite cool. It's so different from what I know from typing. Um so this is the keyboard that I bought. Uh it it looks like just like you know a circuit board or anything like it's super fun. It's only Ufty US dollars uh including A driver that is actually open source. I'm not affiliated with this company. I just found them and I found it's really cool what they're doing doing. They're just like promoting signal typing, and I think more of us should take up this hobby. You know, nowadays there's like we have all the convenience, we have AI and network. But it doesn't stop me from learning this. It's kind of like now we have Google Translate but people still using uh Duolingo to learn new languages. So for me I like challenging myself, learning new things, and maybe one day I can join the transcription team, maybe, I don't know.
Speaker 4: So uh maybe next year we can have a typing contest and if I'm using that keyboard maybe I can beat all of you. So yay, thanks
Speaker 5: Okay. Um hi um since I didn't bring my letters. I'm zero prepared, but I think this is the idea of lightning talks. Um in the projects I worked with, I always had the problem that uh migration files would pile up and it would be very, very tedious to get rid of them. And uh if you use if you go with a Django way You would uh use the squash migration command. But in practice you will have if you have done this and probably you will know, um you will have many, many um circular dependency issues and it takes ages. And in the end, uh if I control the database, I don't really care about If once they're applied in production, it's basically kind of garbage. So um I found a pattern on the internet from uh some person. Um And it's called Migration Zero and I tried to implement this
Speaker 5: calling Django Migration Zero. This is the package. Unfortunately there was a migration zero Django package or something. I didn't really check the naming. You should do this one secret before you create a package. Nevertheless, um if you type this at PiPie you will find it. And um the idea is that um Here's a t T L uh DR. Um the idea is that there's a command for helping you clean it up. This is the easy part. The tricky part is to Um if you just delete the files you need to update your database as well because there's a migration history in the database. And doing this manually on production is very, very tedious and nobody wants to do this. So in practice nobody would ever clean up the migration because squashing takes time and doing it manually Is filling around your production database, which you probably don't have access to, so I don't know, it's kind of hard.
Speaker 5: So there's a management command. Um you can just put in your um continuous deployment and uh an an admin interface where you can basically say okay now I'm doing the cleanup and um yeah then everything happens not magically but out of the box kind of. It works very well. I have it in many projects. And it solves at least for me the problem. So if you're interested, then check out my Django Migration Zero and not the other one, because I don't know anything about it. Thank you.
Speaker 6: Contribute to Django CMS, my name is Fabian. I'm the Django CMS Fellow at the Django CMS Association. Besides Django CMS The DCA also provides another third-party app which is quite popular, the Django Filer. It's a reusable Django app, which you can use to organize any media files. uh in folders, manage their um permissions and make sure you don't pile up that data on your um storage, file storage. In the past month, um Jacob redesigned the package to give it a boost and usability and I'm glad he will now, has already started them uh demonstrating a preview And uh he's calling it Django
Speaker 6: Finder if that is uh resemblance to any app you might have known on your desktop, that's a pure coincidence So it's uh it offers an uh admin interface which is initially empty but uh you can create folders, subfolders, backfolders uh onto your desktop like well In the admin. Um you can export them in the same manner. I just downloaded it. Um you can rename files easily. It's not easy on the It just starts typing in the new name.
Speaker 6: You can navigate through the folder tree Um can always pin the current folder.
Speaker 2: Oh sorry, I'm just showing you can just um thumbnail any part of it And then this will be taken in the um data in the list view. Now we get a smaller part of that. What you can do is to pin the folders so that you can remember them and then you for instance go to another one
Speaker 6: And move files from there, which is one thing you always wanted to do. Once you have them.
Speaker 2: movie like this and you can something you you can do is to create for any MIME type you can create your own plugin Which then handles the detail view of those files and even the um uh list view, uh the the part of the list view. And I can show you something for audio files where you also might want to Sumpnail them. Audio files you can you cannot subnail. Just uh just show you here how that works. Take
Speaker 2: some time. Load it. So then you just can take any samples out of here and then save it. And if you um how over over the file Can you hear that? Well
Speaker 6: you have you have you could you could hear on your your machine you could hear now the audible uh thumbnail to speak
Speaker 2: And so you can also drag files from here to um to one of those um uh pin folders and you can just reorganize all the files you have. And that's something Which somehow was missing uh in the Django ecosystem. Uh Django CMS had something similar, but I now redesigned it with a uh much better user interface.
Speaker 6: So um let me just mention it's also multi-tenant so we can have several root folders and now I please give Jacob a big hand and encourage him to finish his work and add the permission system at on access controllers Which we just mentioned.
Speaker 7: I recently started working at fly. io and there's a lot of distributed systems there. So when you think about distributed systems, what you need to think about is like a bunch of nodes that are connected by some arcane incantation and together they bring a user experience that is highly available, full tolerant, and scalable. available because these nodes can be wherever in the world. Fault tolerance because whenever one of these nodes falls over, they can be replaced by another node or they self-heal and scalable because you can add and remove nodes at will. Obviously we can do better. So I got thinking and I thought what if we have like a paradigm shift here and invert this? So I came up with this. Um this is what I call the distributed user
Speaker 7: Uh it is highly unavailable, fault-prone, and not scalable. The way that it works is you have a single system uh that serves an app that is distributed over multiple users. So you need multiple users to collaborate in order for the app function. So it's highly unavailable because you need a lot of collaboration. It's full-prone because every device is slightly different. And you know, can fail in many unique ways. And it's not scalable because, you know, for every functioning app you just need a bunch of devices. I can see some confusion at this point and maybe thinking like what could you actually do with this? So You could come up with something like 3FA. Uh you know, you need two phones to get like the full
Speaker 7: uh code to to you know get to your two -factor authentication. You could have like the real Netflix flam family plan, like you know, having to kind of combine multiple devices in order to get the full television show that you're looking for. I I guess the the the real benefit of this is that you get something that I call truly immortal apps. Uh because if any one of these devices fails Like you still have 75% of your Netflix show is still there. Like you you get the gist of it. So now we get into demo mode. And I will make everything a bit smaller hopefully. And hopefully I have audio too.
Speaker 7: So what I've made is a drum app So I will start playing the audio here, hopefully. Yes, so what we hear here is a bit of a hi-hat But that's not really a drum machine, like this is part of our distributed user app. So let's add a snare here Will happen. Then let's add a bit of a kick to get like a full beat. Now we're going to modify this. Uh from our single control node.
Speaker 7: I feel a lot of pressure. So in a second we'll fall over to a different beat, hopefully. So any person that's sitting a bit closer to the front here can maybe see that you know uh hold on let me make this bigger That this is not actually running on local host. Like this is an app. So let's get to the actual demo now. Uh I would like anyone who can read to go to this address, which is war trucks dash drum.
Speaker 7: fly. death and then select one of the instruments, toggle audio, and then let's just see how unavailable, bulk thrown, and unscalable this app really is. And in the meanwhile If you're wondering how we how I actually made this app, this is called back to one of the earlier talks. We're using ServiceSent Events here, and that's how everything is getting synced up. How am I doing on time? 50 seconds. 50 seconds to make this demo work. So if I lower the volume, I should by now be hearing a bunch of phones. Unfortunately
Speaker 7: not entirely in sync, but let's call it a swing rhythm. Thank you very much. So
Speaker 8: I hate this talk layard in the Except this time I hope to not forget half of the stuff I want to say. So I'm here to talk about the best event I've been to twice. I've been to Django Kong three times, so it doesn't count. This event has been done for more than ten years in Argentina and in Spain for three times. I'm unaware of any other country doing anything similar, but I'm happy to know if there is any. This one in Germany. But it's not working. So this is 30 people living for four days together in a rural house away from a city in the middle of the mountain, working together on projects and having fun. The last part is the important one. Imagine the Django Kong.
Speaker 8: Prints except much much less unproductive. And I mean that. Like last year I coded for half a morning. That's all I did in the four four days. So it's not productive at all. So the event is, as one of the co organisers put it, calmly prepared on the fly. Now I don't know if I can fit it up. Yeah. So on the fifth day we propose the projects and vote on them. We try to make a schedule in which if project is assigned half a day, You can see this. And this doesn't mean you have to work on that project on that day. You can do whatever you want. As long you can spend the four four days working in the NATO. No one cares. As long as you don't break the code of conduct, you can do whatever. And you don't even need to but sorry.
Speaker 8: You don't even need to know Python to come. Like this year we had a partner or someone that was a biologist, we had even children, the the first two years that came with their parents. like it's pretty fair it's pretty open to anyone. Now uh so this works no Yeah, so this was uh one of the projects which was with system tiles with borders defined in the file name, generate a map in which the borders are correct. So brown with brown, blue We flu. Now the version my team did didn't fully work because there's a short amount of time, but we had 80%
Speaker 8: code coverage, which is a lot more which is a lot for a quick project. Now the next one, using MicroPython, we this build a laser tag two days. And I'm not sure if I can play. Now there is no sound but if it plays Of course not. Well basically imagine the Venice theme because that work was something while everyone was running during the night trying to attack each other with the light. Now this is and finally some photos that I just picked because random design here are working. There was a robot that I don't remember what it did. This was just talking
Speaker 8: in this was the infodamping workshop. And this is one of the photos. And this is another from this year. And finally, this year there were two lesser two Two Mario Kart tournaments. I didn't win any of them. And I'll wear tomorrow the PyCamp t-shirt, so if you have any any advice or any questions, feel free to come with. And that's all.
Speaker 7: Thanks guys. So I'm here to talk to you about a formula that I've been cooking up. So the formula is NBA times Django plus Africa equals community. So the NBA is an acronym for the National Basketball Association. And Django is a small web framework that you might have heard about, I'm not really sure. Um and yeah, and Nosebed Sexton is a project which combined NBA and Django together. So I began working on this last year, uh combined my two loves, the NBA and Django and the reason why I created it was because I wanted NBA fans to argue better. They have a big problem of arguing with emotions and they're always wrong. So So I'm gonna show you a quick demo.
Speaker 7: So let's say someone says, hey, LeBron James has only scored two points in his entire career. He sucks, right? You go on and you search LeBron James. And you will get um his entire career status you can see he's actually scored over 40,000 points. And then they'll say, oh, you know what LeBron has played two NBA seasons, uh he's clearly taking steroids, right? And then you check, you know, his stats by the regular season. And you can see oh he's actually played over twenty years in NBA, you know, he's not on steroids, he's actually been very efficient and playing for a long time. So that's one feature, right? You might have people who argue certain players like they like Michael Jordan
Speaker 7: over Kobe Bryant. So you want to search who scored more points over the course of their career So you search them both into the search form. And what you get is a similar page from uh LeBron James, but you've got both players there. And now you want to check the actual points per game production. So you would go down to so this is pre-recorded. Yeah. Uh points per game. And you get this very nice uh visual graph that shows their two points per game. And you can see clearly Michael Jordan has scored more than Kobe Bryant over the course of his career. Um
Speaker 7: another feature is the Mavericks and the Oklahoma City Thunder were playing the playoffs. And you know, you can see oh, how do the game results go? Who scored the most points? You know, you can get the game breakdowns by court. Uh you can see who the game leaders were and points, you know, and statistics. And you know, it's just a great tool for fans to argue with facts over emotions. So now let me get into you know, at this point you might say You know what, let me just keep up to date with the NBA. Let me see what's happening in the league. Uh you can get news from theringer. com, which is a site for getting sports news like the NBA. And you can read up and always be correct about your arguments from now on. So, where does Africa fill into this?
Speaker 7: So, as I was building this project, you know, Africa is a continent that is my home. I'm from Zimbabwe, and the NBA is growing on the continent. And I figured, you know, we need more opportunities to collaborate, to build community. and to work on projects. And I thought this would be a great project to bring Python developers, Django developers together and build this project as a group instead of just having it by myself because it gets lonely working on things by yourself. So this is a work in progress. Like I said it's a formula I am cooking up. I haven't finished it but I will be at PyCon Nigeria uh next month talking about it.
Speaker 5: So I hope to get a lot more African developers aware of it and building it and see how it goes. That QR code is for LinkedIn if you want to connect with me and talk more about it. But yeah, that's all. Thank you.
The speaker recommends several routes: write code, join the community and sprints, volunteer or speak at events, coach others, contribute to documentation, and share what you learn.
Discussed at 1:45You press multiple keys at once, and a driver maps each chord to a word or sound. The speaker notes that stenography is sound-based, so the keys you press may not match ordinary spelling.
Discussed at 6:54The Migration Zero package provides a management command to clean up migration files and update the database’s migration history. The speaker suggests running it as part of deployment rather than doing the cleanup by hand.
Discussed at 11:02Django Finder provides an admin interface for organizing media into folders, moving and renaming files, and previewing them; it also supports custom file-type plugins and multiple root folders for multi-tenancy.
Discussed at 12:23It’s a deliberately impractical idea in which one app is spread across multiple users’ devices, so those users have to collaborate for it to work. The demo is a shared drum app, synchronized using Server-Sent Events.
Discussed at 16:41PyCamp is a four-day gathering at a rural house where people work on projects and spend time together, with productivity explicitly not the main goal. You don’t need to know Python to attend; the speaker says participants have included a biologist and children.
Discussed at 20:46It lets users look up player career statistics, compare players with graphs, and explore game results and leaders, helping fans argue with data instead of just emotion.
Discussed at 25:11Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025