Lightning Talks (Tuesday) with Andrew Mshar

This video features Andrew Mshar at DjangoCon US 2024 in Durham, North Carolina, USA.

Lightning Talks (Tuesday) with Andrew Mshar
0:42:34
Published December 6, 2024
944 views

This talk was presented at: https://2024.djangocon.us/talks/lightning-talks-tuesday/

LINKS:
Follow Andrew Mshar 👇
On GitHub: https://github.com/programmylife
On Mastodon: https://fosstodon.org/@programmylife
On X: https://x.com/programmylife
Website: https://programmingmylife.com/

Follow DjangoCon US 👇
https://fosstodon.org/@djangocon
https://x.com/djangocon

Follow DEFNA 👇
https://www.defna.org/

Video production by Confreaks
Follow Confreaks 👇
https://confreaks.com
https://x.com/confreaks

Summary

The lightning talks present practical ways to make Django easier to use and sustain. Richard Terry introduces Nano Django, which puts full Django—including APIs, models, admin, migrations, and deployment—in one file and can later convert it into a conventional project; Adam Fast explains what DEFNA needs from communities proposing future DjangoCon US locations. Other speakers describe Arepa, an early MongoDB backend for Django; DjangoNauts Space’s mentorship programme; stronger Django tests; Django Commons as shared maintenance infrastructure for open-source packages; advice for job applications; Django Girls’ tenth anniversary and need for support; and the success and growth of DjangoCon Africa. Together, the talks argue that Django’s strength depends not only on its technical tools but also on deliberate mentorship, maintainership, inclusion, and community-organised events.

Key takeaways

  • Nano Django offers a single-file entry point to full Django and can convert the result into a standard Django project as it grows.
  • DEFNA is seeking local communities and suitable venues for future DjangoCon US events, with affordability, accessibility, connectivity, and volunteer support as key concerns.
  • Arepa is building a new MongoDB backend that maps Django’s query operations to MongoDB while supporting models, the admin, querying, and authentication.
  • DjangoNauts Space and Django Commons address two community needs: helping new contributors get involved and sharing maintenance responsibilities for open-source packages.
  • Good Django tests should verify database changes, complete responses, and query counts rather than only HTTP status codes.
  • The speakers called for authentic job applications, continued support for Django Girls, and wider participation in successful regional events such as DjangoCon Africa.

Summarised automatically from the transcript.

Chapters

  1. 0:00 Nano Django Richard Terry introduces Nano Django, demonstrating single-file Django applications, APIs, models, admin, deployment, and conversion to a standard project structure.
  2. 4:53 DjangoCon US Venue Proposals Adam Fast explains DEFNA’s role and outlines what communities need to provide when proposing a future DjangoCon US location.
  3. 10:57 MongoDB for Django The MongoDB team demonstrates a new backend that brings Django models, the admin, queries, and other features to a MongoDB architecture.
  4. 16:51 Djangonaut Space Mentorship Lillian presents Djangonaut Space, a mentorship program helping new contributors participate in the Django open-source ecosystem.
  5. 19:28 Effective Django Testing Reddy shares common testing mistakes and shows how to organize tests, verify complete responses, and monitor database query counts.
  6. 24:41 Django Commons Lacey introduces Django Commons, a community and GitHub organization that provides maintenance support and shared infrastructure for open-source projects.
  7. 28:14 Job Applications and Interviews A Canonical hiring lead offers practical advice on demonstrating value, showing rather than telling, focusing applications, and avoiding generic AI-generated content.
  8. 33:34 Django Girls at Ten Rachel Calhoun celebrates Django Girls’ tenth year, shares survey results, and calls for contributors, organizers, sponsors, and donors.
  9. 37:24 DjangoCon Africa The closing report reflects on the first DjangoCon Africa in Zanzibar and previews the next event in Arusha.

Transcript

7,391 words · auto-generated Show

Automatically transcribed, so expect mistakes in names and technical terms.

0:20

Speaker 1: Hi. Um so hopefully will work this time. Uh yesterday my laptop blew up when uh we plugged it into the A B system. So thank you to Adam for lending me your Hi everyone, I'm Richard Terry. I'm a Django developer at Lincoln Loop. And I'd like to thank them for supporting my side project, Nano Django, which gives you full Django in a single file. So one of the reasons that people like Flask and Fast API is because they're super easy to get started with. You just open up a text file, write a function. And it just works. But if you try to do the same thing with Django, you have a few more steps. And you end up with something like this. So although this structure really helps as your project grows, if it's your first time it can be a bit confusing, and even if it's your hundredth

1:09

Speaker 1: time It can be a bit of a faff if you just want to do a quick experiment. So I thought let's address that and stuff everything into a single file Now, over the years, a lot of people have done Django in a single file. It's usually a subset of Django. Most people implement views and routing and sensibly stop there. But that means you lose Django's batteries, which is why I'm writing Nano Django. So to get started, you can uh pip install Nano Django. And the first thing we'll do is re-implement Flask's hello world. So first import and instantiate the Django object. And then you can define a function which returns the content. You register it as a view with the app. root

1:55

Speaker 1: decorator, and we've got Flask's hello world. So to run it in development mode using RunServer, you can run uh Django run. Or if you want to uh deploy it, you can use uh nano Django uh serve DjangoCon. Um and that will use Junicorn behind the scenes. So Bows Flask, what about Flask API? Well, Nano Django has built-in API support using Django Ninja. You can register an API view with app. api. get or. post. And now we 've got fast APIs. Hello world. Behind the scenes, as I say, this is using Django Ninja, which gives you all the nice things that you need, like swagger docs and schemas using PyDantic. And just like Fast API and Flask, we can also run asynchronously,

2:40

Speaker 1: just add async to the view definition. And Nano Django run and serve will use UVicorn instead. So Now we're at the same level as Flask and Fast API. What about Django's batteries? Well, let's create a model. So here we've got a simple model that creates uh it logs the time that instances are created And we can use it in our views. So you can read, write everything you do in a normal project. And when you run it, it's going to go away and create a set of migrations for our models. It creates a database and applies them, creates a super user if we don't already have one, and then runs run server or UV-callin depending on your views. And we've got fully working models. But there are more batteries, so we can add the admin site with an app.

3:25

Speaker 1: admin decorator. You can pass in extra arguments to customize the model admin. And when you run the scripts, you'll then have an app insight. But it gets even better with PEP723 because we can specify Nano Django as a dependency at the top. call app. run at the bottom and now we've got a fully functional self-contained Django site which can run with nothing more than UV or PipEx. So at this point we've got a really powerful tool, and I've been finding it very useful for sort of experimenting, prototyping, sharing working examples with other people by email, even deploying a simple app or two. But the problem is now that by having everything in a single file, we've lost one of the things that makes Django so good, and that's the project structure. And as our project grows, that's going to become a problem.

4:14

Speaker 1: Nano Django can help with this. It has a convert command which will take your single file, go in and automatically refactor it in a fully structured Django project that doesn't use Nano Django at all. With all your uh models, views, admin, APIs, everything automatically put in the right places. So Nano Django gives you the full power of Django in a single file, helps you build simple things quickly without holding you back as your project grows. So please, please do give it a try and come find me at the Lincoln Loop booth outside if you have any ideas for how we could improve it. Thank you very much.

4:53

Speaker 2: All right, so my name is Adam Fast and I work for a company called JBS. dev. Thanks to them for paying me to be here for many years and serve the community through some of my roles. So I am the treasurer and a board of directors member for the DEFNA or the Django Events Foundation North America We're a group of nine board members who basically act as a legal entity to shield the DSF. From financial harm if an event goes badly. And so we operate this conference for the benefit of the community. We're an IRS 501c3. as well and we're kind of in the similar financial size as uh as the DSF themselves, um except we sort of pay hotels and venues rather than fellows.

5:42

Speaker 2: Um but it's still a value. So the thing that people always ask is, I would like to see DjangoCon in my city. So we have some 2025 proposals and we've been for looping over them, not finding quite the right mix, largely on affordability. And we're always constantly looking at future years. So even if you can't necessarily submit for a 2025, think about 2026, 2027, 2028. We would love to be moving there. We try very hard to control the costs to keep ticket prices low so people can afford can attend while also having a very great conference experience for everybody. So, what we need is a local Django community willing to help.

6:30

Speaker 2: We've had that in a lot of our cities that have that have been the best. Here's the organizing committee that submitted the proposal for Durham a number of years ago They do a lot of the local research. They develop the proposal, give us kind of the business case for why their city should be used. Often they will go to the venue. Peter was here several times, even a year before we ever came to the conference, to just get a lay of uh, you know, how's the halls laid out? How would we do this? you know, will this work? Give us restaurant and local recommendations, uh, childcare, we have recommendations for that because we do pay for that for attendees if they need it to be able to attend. Local logistics, everything from running to Walmart for things that got forgotten.

7:18

Speaker 2: And we like to be in racially diverse areas. We're not at the scale where we can pay to plot to fly people to a city to scope it out for us. Some larger organizations can do that. We don't do it. And so it helps to have that local team. Venue-wise, we need to be able to seat 300 to 500 people in classroom style. This is kind of what the industry calls this. We need catering for gluten-free vegetarian, vegan, kosher, and halal And we need that to be handled with professionalism and very well. We need Wi-Fi usually capable of a thousand people because pip and Docker images are brutal. And people are doing, you know, they're experimenting, which is fine. That's why we're here. It needs to be reasonably close to an international airport.

8:04

Speaker 2: More direct flights are the better and affordable as well. If you look at the the Durham proposal, which I have a link for, they also kind of suggested, hey, here's the number of direct flights we have, here's some average prices, and that's very helpful for us as a board as we look at where are we going We need hotels ideally connected to the conference venue, but it doesn't have to be or you know sometimes it's a hallway like what we have here We need a sprint venue. Sometimes that is the same as our conference venue. Sometimes it is different. Thank you, Cactus Group That saves us a lot of money and keeps ticket prices down by being able to host somewhere that is Django connected while still

8:51

Speaker 2: being able to have the sprints and foster that innovation. And we need a Django Girls venue. Thank you again, Cactus Group. They hosted that. There was a Django Girls meetup on Saturday before we started this. And that's kind of been a trend. We always do Django Girls and infuse new people. We need audiovisual. This is about two to three hundred person hours of work to set up the things that you see. in uh in this. And a lot of times we don't use in-house, we are able to do better by finding and negotiating other vendors. I will help guide places if you're trying to submit a proposal and need specifics. I have those. I'm very happy to collaborate. Thank you to American AV Confreaks, Whitecoat Captioning, and BarTech.

9:38

Speaker 2: Talk to your local convention and visitors bureau because they have people who sit at desks all day and try to get us to come as a conference. They want that money. And so they will know which venues and hotels can meet our needs. They will put you in touch. They'll take our basic size. This is a QR code of the written long-form proposal details. This is available on the DEFNA site. Here is the Durham proposal. And I can share this in Slack when I get off the stage because I'm almost out of time. And send us to yours and begin a dialogue. We are happy to answer questions. Hello at defna. org. That's slightly different group than the hello at DjangoCon. us. And also last plug, help us organize DjangoCon

10:24

Speaker 2: US for 2025. We always need volunteers. Here's a QR code for the list of teams. Any skill set you have, we would love to have. As I said in the beginning, this is an entirely volunteer team, all of us on the board, everybody. And we can always use help. It's a great community, very welcoming, and we just appreciate everybody that helps us. And I want to thank all of our volunteers personally We just really appreciate the army of people that make this conference possible. Thank you. Hi

10:57

Speaker 3: everyone. Welcome to my Lightning Talk. Sometimes brute force is best, right? Uh and this is basically walking through our findings as we uh try and build a new MongoDB backend for Django. And so I like to think about brute force because it's usually the thing you try and avoid in interviews. Um, you usually try and go for the most optimized solution. But in this case, we've come to realize that maybe just doing the hard work is what's needed. So let me give some backstory. Before I started working at Mongo, uh, my friends and I founded a company that was using Flask and MongoDB This started out as a really small app. That was the motivation behind behind using Flask, behind using MongoDB, really quick startup costs. As it grew, we actually really wanted to switch to Django because we didn't want to deal with the admin. We didn't want to be able to log in, none of that, right?

11:44

Speaker 3: But unfortunately, we were too tied into the minutia of MongoDB to um do the work. So it felt like too much work for too little time. However, that stuck with me. And so about a year ago, I got hired, right? I found myself at MongoDB , and they asked me to just continue working on the thing I like to do, NoSQL databases. For about a year, you know, I really started getting my feet wet as an open source developer, and that's when they started hitting me with a Django pitch. So what's the Django pitch? So we had noticed that on the 2023 Django Developer Survey that Django developers decided using MongoDB As a person who had tried to use MongoDB, I understood how significant this was. There's not really a tool that lets you truly and fully integrate in a way that

12:30

Speaker 3: makes sense. So people must have really wanted it. And there have been several attempts to make this work in the past that didn't necessarily align with what MongoDB had wanted to use or how MongoDB envisioned it being used. Django, Django, MongoDB Engine, PiModem, just name a few. And more importantly, this just felt personal. I wanted this to work. So what happened? We got to work. We felt it best to make NetNew uh a NetNew library because libraries like. Django MongoDB engine hadn't been updated since 2015 and we're using Django 1. 6. As we all know, we're on Django 5. And MongoDB is on server version 8. And uh and this was using like server version 3. 4 So, without further ado, I'll give you the demo before I explain more things. Alright, so

13:15

Speaker 3: bear with me. So this is part one, and I'm gonna run it at two times speed. So, what I'm gonna show is uh basically me doing the first thing, creating a super user. This previously wasn't something we'd be able to do, but I was able to quickly create a super user, name it jib. There we go. Login already in the admin page. Able to see myself, able to make sure that everything works. So moving from there, I just wanted to validate that I could even access my models. So went ahead. Try to make a model, try to save it, failed. Uh made some edits, found out time zone wasn't defined. So So uh just uh just

14:01

Speaker 3: I I got I had to chop the uh chop the video a little bit. There we go, time zone. And right then There it was, question all in the MongoDB database, right? And so in a second, I'm about to show again it pops up on the admin dash. And so the last piece was just confirming that this actually is all existing and being managed in MongoDB. And that's what that last part of the video is. So And so there it is. The question is in the Mongo database. And so finally, I wanted to do the last thing, which is just try and query. So again. I was able to query. I was able to upload data, make an admin dashboard, query the information, look at the information, and do all that in a NoSQL architecture.

14:49

Speaker 3: Something that usually people Say you can't do, because usually people pigeonhole Django to being SQL. Well, in reality, what I've come to find by being here, oh, sorry. But in reality, what I come to find by being here is that like we we can actually make this work. And so how does it work? Brute force. So we just thought, what like what if we just move the SQL and just put what we want in the callback function And that's exactly what's going on. So we uh after deep diving, researching, and understanding, we realized that the Django's query tree has basically this exposed as SQL method. And we found by attaching or overriding our own and calling it an asMGL method to each class in the tree, we'd be able to create a Mongo

15:37

Speaker 3: query. basically from the ground up, matching the same syntaxes, using the same query sets, and existing in the same ecosystem that all these other backends do. We found out, however, this takes time. We have to go through every Django operation and make an equivalent Mongo query. So here's an example, right? People. objects filter status equals a, right? In SQL, that's select from people where status equals a. MongoDB, D B people find status is A. Okay, so what makes us cer so certain that all this is useful? And like I said, it's speaking with everyone. Understanding that some people don't even like write SQL in their day-to-day. They really just leverage the query sets. And also understanding that there are different databases for different solutions. And that 8% is a real set of people. I was one of those real set of people.

16:23

Speaker 3: And so we know that we're solving a real problem. And to that I say thank you guys for all the support, all the help, and please try Arepa, right? Right now it's an early stage of development, so we're looking for feedback from the community to know whether or not we're going in the right direction about this. Because again, we want to do right by you guys and we want to do right by ourselves. Attached below are the emails you can reach out to. Please feel free to talk to me afterwards. And yeah, I look forward to chatting with the rest of you guys.

16:51

Speaker 4: All right, um so hi, I'm Lillian. I'm the navigator coordinator for DjangoNot Space, and I want to talk about um DjangoNot space. Um So Jangonaut Space is a mentorship program and it has um these it creates these teams consisting of navigators, captains, and jjangonauts And so the purpose is for the navigators and the captains to help guide new contributors through the open source process. There are one-on-ones and a support system to help ensure that the new contributors will be successful. Here's a link, so you can go to that site to learn more. The impact is real So I have some stats

17:37

Speaker 4: here listed um showing you that there have been many PRs to several different Packages across the Django ecosystem. We had 17 new contributors to Django 5. 1 release and a lot of personal growth for both the mentees and the mentors. So what I really want to get, the message I want to get out today is a call for collaboration. So the mentorship program is It's currently it's successful, but we also want to experiment with more ways for getting people involved, both the maintainers and new contributors. Some of the problems that we run into is trying to coordinate the the teams, trying to form the teams.

18:24

Speaker 4: We have people coming from many different time zones all over the world, so coordinating the time zones could be a problem and so if we could have a different format, maybe doing like more asynchronous, that would be interesting. Um so if you're a maintainer of a package and you have some interest but you might not You might think that you don't have enough time to commit. You're the person I'm trying to reach out right now because we want to understand what will work and what won't work. So please contact us, email us at contact at DjangoNot Space. And if you're someone who's interested in getting involved as a new contributor or a captain, follow us on our socials. And that is all. If you have any questions, you know, definitely ask me.

19:12

Speaker 4: I'll be around. I'm happy to share with you my personal experience with this one. program and also to come up with new ideas for making it better

19:28

Speaker 5: Hi everyone. My name is Reddy. I'm from Bolivia, that's in South America, and uh currently I live in Chicago. I work for a company called Keeper Solutions. They are based on Ireland. Do some contracting stuff with them and have some other clients as well. So I'm I'm I'm I didn't say I'm a back-end developer. I do a Django Rest framework like Uh 90% of my time probably. But oh well. Well originally the the the code was supposed to be T D D cheat cheat uh for writing good test on on Django framework. But I said, hey, uh since we are pretty close to Halloween, why not introduce some? House of Horrors here. So don't know if you already have your customs for Halloween. I'm going to dress as a back-end

20:13

Speaker 5: developer. Like like this Well, let's start with with this. You know, I don't know how many of you do some TDD or or not, but you know that there's a mantra. So the idea is to first write your tests, then to make them pass, and then refactor. But the idea is to always write your tests first. That's you know, people that do TDD uh that's that's the way. So How many of us really do that? Many times I just wrote the functionality first and then I was, oh, I forgot to push or to do some tests and okay, write some tests now And now we have some AI also that can help there. Uh probably uh developers we tend to go and try to start writing and pushing code and code and code.

21:00

Speaker 5: And it's At least this methodology writing your test first helps you to uh take a breath and think if your solution is really what you want to to build. So let's start with uh the House of Horrors So don't know uh well you see uh the file structure that we have here, that this is something uh uh some mistake that some people do, uh how they are try to organize their tests. For example, here you see that they have like, or we have a test aut, test models, realizers, but then we have more specialized test names uh uh above uh uh below. It says tests uh create user, delete user. So uh there are better ways to organize your your tests. Uh the best way that I try to or the pattern that I try to follow to be a good cut

21:47

Speaker 5: is to So I have my layers, I have my model, my serializers, my view, and I try to organize my tests in a similar way. Trying to follow the same name. So I'm testing a file. Keep your consistency in your files. Um what do you see around here? First of all, I see some single quotes mixed with double quotes. Um like uh I it's uh weird stuff that that that I try to to that I always is I try to have double quotes always or single quotes have consistency there how the code looks like And uh at the end, we see that this test is only uh asserting the status code. With this, we didn't uh test uh well I didn't explain you what this test was about.

22:32

Speaker 5: So this is about creating bookmarks. We have the payload what we are sending, then we have the URL below, and then we are calling the endpoint finally, and then we are just asserting the status code. There are better ways to do this. In this case, you see, we have we are not just calling the endpoint, we are asserting that actually it's doing what it's supposed to do, that it's creating a bookmark we are counting at the beginning how many bookmark bookmarks we have in the database, then we are are asserting that we created at least one because that's what it's supposed to do. No, uh if for some reason we get double creation or something like that. And then we are accepting that the object was created with the correct data.

23:18

Speaker 5: Another scenario, we have a list endpoint, often bookmarks as well And here as well, we are just asserting the status quote. A better way will be to uh test the whole response. Uh you know, getting the response, then asserting the status code, asserting, well, this is a paginated less list endpoint. So Asserting that the count is correct, asserting that the whole response is correct, and not just asserting, for example, that the IDs appear in the response. Here we are asserting like everything, the whole response, the whole JSON response. One of the uh it's pretty close. Hammuscar uh well asserting the number of queries um you know n plus one queries, those are everywhere Uh so one way to make sure that your tests are consistently, dunno, uh

24:04

Speaker 5: checking the behavior of your application and do you are pushing uh optimum code is to always have this uh or I this is what I try to do always a certain number of queries. And something good with when you use PyTest to run this It will show you all the queries that you made. So you don't need any extra tool. You know, we don't have the Django toolbar on backends. Please don't forget to clean your prints before pushing your coat. If you know you're you're going to make the cat cry and that's it Thank you so much.

24:41

Speaker 6: Good afternoon. My name is Lacey. I have some notes here that I'm going to refer to so that I get through everything. Um, I've gotten the impression at this conference so far that there might be a few open source maintainers in this room. Is that true? Okay. I've also gotten the impression from open spaces and attending conferences over the last 10 years that sometimes that's stressful. Is that true? Yeah, once in a while life gets in the way, you can't make the updates that you need to. You have pull requests that aren't being merged, issues that people are raising that you can't get to. And you just get behind and you need a little bit of backup. Or there's an open source project that you really want to use, but it's unmaintained and it needs a little bit of TLC. It would be really great if someone could give that project the TLC that it needs. That's where Django Commons comes in. Django Commons is a new organization that is aiming to be that buffer between

25:30

Speaker 6: the open source project and the contributors to help you as the maintainer maintain your project in the way that you need to. As Mario said this morning, the most important thing about Any community is that is it is indeed a community. So Django Commons is first and foremost a community of individuals who just want to help. The second thing that Django Commons is is a GitHub organization. So If you join Django Commons, if your project joins Django Commons, that means that your project comes under the umbrella of our GitHub organization so that we can have some of those administrator rights. that will help you maintain that project whenever you can't maintain it yourself. The reason that we exist is because it's a major risk to the community for

26:15

Speaker 6: projects, especially popular projects, to have a single point of failure. So we want to help you spread those responsibilities for whenever life gets in the way and you can't do the things that you need to do. We also want to provide a safe and trusted way to give that support. So you can see exactly who's on who is on our administrator team. You can see the other teams that we have. We have a code of conduct team, we have a security team, so we're ready to provide you that little bit of infrastructure that you need that you don't currently have. We do have a couple of projects that are already under our umbrella. Django FSM2 and Django Task Scheduler have already joined us. Django T debug toolbar is on the way. And then if you're interested in joining us as an individual who just wants to be part of the team that's helping, or if you want to bring your project under our umbrella.

27:04

Speaker 6: The way to do that is to go to our membership repo and open up an issue and we will help you through the rest. We do have a few package requirements like having a code of conduct. Things like that, but we will help you do the setup that you need to get your project to be part of us. Four of our admin team are here this week. If you're in this room, will you raise your hand? Yeah, all right. So if you want to chat about this, if this sounds interesting to you, then please seek us out. We would love to talk with you more. We were at the open space earlier today, and we would love to hear about what you need, what are the things that you feel like you need to support your project? We do have some lofty goals also. Right now we're focused on these kind of smaller detail things. But we would really love to help you recruit new contributors, get those contributors onboarded so that they can become a consistent help for your project.

27:53

Speaker 6: We would also like to pursue funding to help offset some of your costs or maybe do some of the you know the kind of grants that um that Jacob was talking about in his talk earlier. So like I said if this sounds um compelling to you or interesting definitely come and chat with us Thank you.

28:14

Speaker 7: I wrote an article called Twelve Rules for Um job applications and interviews and it turned out to be the most popular thing that was ever published on the web. But uh at least a lot of people um apparently read it. I've got some credentials in this field. In my work at Canonical, I've handled thousands of, many thousands of applications. I've read thousands of CVs, I've conducted hundreds of interviews, I've hired dozens of people, and I train interviewers and other hiring leads. And I see many potentially excellent candidates who should do well but don't, and they go wrong in their interviews or their CVs, their resumes. don't do them justice. They don't understand expectations. They are not prepared for the experience. They don't understand what the employers ex uh need from them in the in the process.

29:01

Speaker 7: And I see the same mistakes over and over again. And many of these people are the ones who don't have cousins in Silicon Valley, who come from outside the industry, from non-Western countries, from underrepresented groups. And my heart sinks when that That happens, and hence the article I wrote. So I don't have time for all the twelve rules, so I'll just give you four here for a taste. But you can find it via that QR code, which I'll show again in a few moments. So rule number one is show, don't just tell. You can tell people things, and if you're lucky, they might understand you. And sometimes if you're really lucky, they might even believe you. But generally, people don't like being told what to believe. Somebody tells me I'm committed, determined, and dedicated. And I think

29:46

Speaker 7: I'll be the judge of that if you don't mind. So I'm rather unmoved when somebody tells me their their qualities. But if some somebody is able to show me that's a different story, one candidate mentioned to me that he used to get up at five in the morning and had to take three different buses to get to the only high school in his city where he could study music. And I thought Wow. He didn't need to tell me about his dedication, commitment, or determination. He showed me and I could see them for myself And when somebody leaves room for me to make a judgment, I'll hold it much more strongly than if they tried to make it for me. Rule number two is demonstrate value. Tell me about your work as a test engineer. I wrote tests. Well, I actually was aware that a test engineer

30:31

Speaker 7: writes tests. I was looking for something else. I was looking for value. I want to know what the candidate achieved, what difference they made, what value they brought. I improved our process by setting up a weekly test engineering office hours. Well, tell me more, because I love to hear about attention to collaboration and effective initiatives Rule number four, share show a part and not the whole. You see the ears of a donkey sticking up over a fence, and you know perfectly well that the rest of the donkey is there as well, even though you can't see it. It doesn't occur to you to wonder if it's missing Uh but many candidates insisting on presenting the entire donkey. And reviewers and interviewers are not um

31:17

Speaker 7: Complete idiots. They they can infer the rest of it from some details. You can trust on them to do that. So concentrating on just a few details allows you to present those. vividly and effectively and you uh let the interviewer do the rest of the work or filling in the rest of the donkey. And rule number twelve is Be a human being because across the industry, hiring pipelines are being filled with astounding quantities of AI-generated rubbish. So these are three examples of something I've seen Literally hundreds of times in job applications, their chat GPT's answers to the question, briefly say what you enjoy about technical communication and writing. And it's a really creepy experience as if the same broken and distorted entity has applied for all the jobs over and over again.

32:08

Speaker 7: It's a really shitty answer as well. It's just remixed in hundreds of depressing ways. And the candidate is immediately and permanently rejected. These are more examples from a popular website called ResumeWord that you may have heard of. It ingests a job description and then effectively encourages users to make up fake CVs with bogus overquantified claims. And this garbage is inauthentic and unbelievable. And they're false AI friends. And across networks and communities, especially in the non-Western world hopeful entrants into the industry are sharing bad advice and tools that they hope might give them a little advantage in the search for work and it's disastrous. So If I can save just one person from shooting themselves in the foot with one of these treacherous AI guns, I'll be very glad.

32:55

Speaker 7: And if any of the advice um in the article turns out to be useful to you, let me know. I'd Be really happy if you read it and tell me your thoughts. Meanwhile, I want to go home from this conference with um lots of new colleagues. I need I'm actually hiring a hundred up to 154 Technical authors. I don't expect to find them all up this weekend. Documentation platform engineer working with Python and Django, amongst other things, developer relations engineers, community engineers. And whatever else I can get, there are hundreds of jobs on the Canonical Ubuntu website. Thank you so much. Come and talk to me. Thank you.

33:34

Speaker 8: All right, cool. We got it. We got there. All right, hello everybody. I'm um I'm Rachel Calhoun. I'm a trustee on the board for Jamal Girls Foundation. I think most of you know what Jambal Girls is, but for those of you who might not, it's an international organized nonprofit organization that creates and maintains resources and materials. For organizers in other cities and countries around the world to create workshops for introducing Django to women and non-binary folks. This is our new logo. I don't know if um everybody can we get a clab? That's great, right? So the idea was we had so many questions um Is this com is this workshop for me? And yes it is. Um

34:19

Speaker 8: Django Girls is uh we wanted to be more trans and non-binary inclusive, so we made it more explicit with our logo um by but also staying true to our brand. Um This is our tenth year, which is pretty big, so we wanted to celebrate. And to celebrate, we got in touch with some great friends in the community, thanks to PieCharm. JetBrains, we were able to do a survey. And if you're here, you might have gotten an email about that. And if you filled it out, thank you. It's really important to see where we can improve, what works and what doesn't. As an organization. Um some impact reports. 69% of the folks who filled out the survey either got a job because of the workshop or are planning to, which is pretty uh significant.

35:04

Speaker 8: Um this is yeah the data scientist in me will say the caveat is that These folks are people that are still in the jail communities, so it's probably bias. Um anyway, 80% of 82% of those are working in programming. The other um cool finding was the impact of the workshop was Um some of the highest um things that they said was I had fun, I was inspired by other women um in tech, I made new friends, I networked, um and That's great that um a programming workshop can do that. And that's the point is to make it fun um and keep going. The next great so I don't know if you can see my awesome shirt. All right, um so to celebrate the 10 years, we have a shop and we have um some of our old designs with some of the new fresh ones as well, so check it out.

35:53

Speaker 8: Um and if you'd like a shirt today, I'll tell you how you might be able to take one home. Uh call to action, contribute. We're always in need of volunteers. Um and I think Everybody wants your time. So if you have extra, please consider contributing your time to help maintain and update our resources, our translations, a tutorial. We have a website that also needs work. Or if you're a community organizer, you want to organize a workshop or coach at one, that's also a great way. And money. I want to thank the DSF for always supporting Django Girls and helping us. with some of the workshops, but we'll we'll always um need more as an organization to try to keep this going. Here are some of our socials, follow us, jingle girls

36:39

Speaker 8: everywhere. And the last call to action I will have is uh financial support. We need to keep going as an organization. We have um employees that we have part-time that help us keep things running. You can find us GitHub sponsors, you can join us on Patreon, you can donate on our page. We have Stripe as well. Scan the QR code You can also become a corporate sponsor, thanks to those that are here. And also the next, I have a few shirts with me. They're orange, not this, not this color, sorry. But if the next um I think six shirts. So the next six people who uh donate will take home a shirt today. Anyway, thank you All right, hello everyone.

37:24

Speaker 8: It's me again. In 2023, something freaking fantastic happened. That was DjangoCon Africa. It was the first one ever, and I was very lucky to be there among uh so a few other people in the audience. Um so what happened? I'm going to give you a little bit of a report back. It was a very, very successful event. It was a very hard event to pull off. So it happened in Zanzibar, Tanzania, in November last year. The we had attendees from more than 20 different countries. There were 26 talks, 10 of which were by women. So it's not exactly 50-50, but it's kind of hard to get 50-50 in Africa. This is actually a very good trend that things are on. We had a lot of students in attendance, many of which were women, so that that was by design.

38:11

Speaker 8: So Django Con Africa was also a DjangoCon for Africa. Interfacing with the universities, like lots of universities was was part of the game we were playing. Um It was taken quite seriously by Zanzibar in general. So there were a bunch of govern government officials that showed up and senior university officials. There are universities there that teach Python now, which is really cool. And it wasn't just because of this event, like the Tanzanian um PyCon community is freaking fantastic. Um, but it was taken quite seriously, which is lovely. We formatted things quite differently to how things are formatted here. So instead of having sprints at the ends, we had workshops and collaboration space at the end, and more than two-thirds of the people who attended.

39:02

Speaker 8: went to those. So that was really, really cool. There was such a massive emphasis on community and belonging and interaction. Um like it blew my mind. Um And even beyond that, on the on the topic of showing and not telling, uh people were really, really dedicated to coming. Um there were a bunch of people who spent something like three days on a bus through Africa in order to get to the event And then three days on a bus through Africa in order to get home. And that is not nice. But they did it. They were on the bus longer than they were at the conference and they were freaking like happy to be there. So A picture is worth a thousand words. I've got about a thousand pictures. Um so I uh there's a lot of cool pictures. Look at the vibe, look at the setup.

39:49

Speaker 8: But also pay attention to seeing a few faces that that you recognize. The Django Africa community is part of this community. There is overlap. We're on different continents, but we've got a lot of reasons to support each other and it was a vibe. So I mean look at that. So Uh while I'm going through this, I think there are probably people in this room that were involved that would be very, very happy for you to go to them and ask them questions about their experience and questions about what's what's happening next. Can those people if there is anybody in the room who's who's happy to be the recipient of questions, can you raise your hand or stand up? Okay, we got we got a Daniela, we got you at the back.

40:35

Speaker 8: Awesome. There's some people also outside. But um Yeah, so that's it was a great, great experience. Um some proper nerd stars showed up. Um yes, that concludes the pictures. So This was hard to pick uh to to put together. It was especially difficult because of funding, the F-word that everybody is using today. So It would have been impossible without funding and it was hard to get funding. So I just want to make a point of highlighting a couple of people who did well with us. There are folks here, there are folks out there that helped out with funding the last Django Con. And those people, if they're huggers, they deserve hugs. Go

41:20

Speaker 8: go hug these people. So Lincoln Loop for example 2 rock, there's Refsys. Like so we had a lot of a lot of support um in the end. It was quite a battle to get that support. We had a lot of local partners who helped out as well. So like we had the State University of Zanzibar who gave us access to their their locations so we had like a free place to to run the conference and overall it was a fantastic success and what's cool is that we're doing another one. And that's happening next year in Arusha , 11th to 16th of August. I'm gonna be there. I think uh I can see some of you there as well. That's it. Thank you.

Questions this talk answers

How can I put a full Django project in a single file?

Nano Django packages Django’s functionality into one file, including views, routing, APIs, models, migrations, the admin, and dependencies. It can later convert that file into a conventional Django project structure.

Discussed at 1:09

How do I run a Nano Django app?

Use `django run` for development, or `nano-django serve` for deployment; API views run under Uvicorn when they are asynchronous. A PEP 723 dependency block and `app.run()` can also make the file executable with tools such as `uv` or `pipx`.

Discussed at 1:55

What does a city need to host DjangoCon US?

DjangoCon US looks for a local organizing team, an affordable venue seating roughly 300–500 people classroom-style, suitable catering, strong Wi-Fi, airport access, nearby hotels, a sprint venue, a Django Girls venue, and audiovisual support. Local knowledge and help with logistics are especially important.

Discussed at 5:42

Can Django’s admin and superusers work with MongoDB?

The demonstrated backend successfully created a superuser, logged into the Django admin, created and managed a model, stored it in MongoDB, and queried the data. The project was still early in development and was seeking community feedback.

Discussed at 13:15

How can Django work with MongoDB instead of a SQL database?

The Arepa backend maps Django’s query-tree operations to MongoDB queries by overriding the relevant SQL-generation methods with MongoDB equivalents. This preserves Django querysets and allows models, the admin, saving, querying, and other Django features to work with MongoDB.

Discussed at 14:49

What is Jangonaut Space and how can I get involved?

Jangonaut Space is a mentorship program in which navigators and captains guide new contributors through the open-source process with teams, one-on-ones, and support. Maintainers can contact the program about collaboration, while prospective contributors and captains can follow its social channels.

Discussed at 16:51

How should I organize Django tests?

Organize tests consistently around the application layers they cover—such as models, serializers, and views—and use matching, descriptive file names. The speaker recommends keeping the test layout parallel to the code layout.

Discussed at 21:47

What should Django tests assert besides the HTTP status code?

Tests should verify the behavior and result of the request: database counts, created objects and their data, and the complete JSON response for list endpoints, including pagination. It is also useful to assert query counts to catch inefficient behavior such as N+1 queries.

Discussed at 22:32

What is Django Commons for?

Django Commons provides a community and shared GitHub organization that helps maintainers when they cannot keep up with issues, pull requests, or project administration. It reduces single points of failure by providing trusted administrator, code-of-conduct, and security infrastructure.

Discussed at 25:30

How can I join Django Commons or move a project under its umbrella?

Open an issue in the Django Commons membership repository. The organization will help with the required setup, such as adding a code of conduct, and can accept either individual contributors or projects.

Discussed at 27:04

How can I make my job application or interview better?

Show evidence instead of merely claiming qualities, explain the value and results of your work, present a focused selection of details rather than every detail, and be a genuine human being. The speaker strongly advises against submitting generic or fabricated AI-generated application material.

Discussed at 29:09

What is Django Girls and how can I support it?

Django Girls is an international nonprofit that provides resources for workshops introducing Django to women and non-binary people. People can help by volunteering, organizing or coaching workshops, maintaining translations and tutorials, or providing financial support through donations, sponsorships, GitHub Sponsors, or Patreon.

Discussed at 33:24

What happened at the first DjangoCon Africa?

The 2023 event in Zanzibar attracted attendees from more than 20 countries and included 26 talks, many students, university and government participation, and workshops and collaboration sessions attended by more than two-thirds of participants. Its emphasis on community and inclusion made it a major success despite the difficulty of securing funding.

Discussed at 37:23

When and where is the next DjangoCon Africa?

The next DjangoCon Africa is planned for Arusha from August 11 to 16 of the following year.

Discussed at 41:20

Presenters

Note: 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.

More videos by Andrew Mshar

More videos from DjangoCon US