Lightning Talks (Wednesday) with Andrew Mshar

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

Lightning Talks (Wednesday) with Andrew Mshar
0:46:41
Published December 6, 2024
111 views

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

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 cover inclusive language in code and conversation, including alternatives to terms such as “blacklist,” “sanity check,” and “guys.” Speakers also present practical Django techniques: using `config/.` project layouts, a reusable SQL-query debugging context manager, custom QuerySets and annotations, and QR codes for storing text or contact data. Other presenters offer advice on CVs and LinkedIn networking, report on Ghanaian and Paraguayan Python/Django communities and projects such as an open air-quality sensor network, and outline ways to support the Django Software Foundation through donations, awards, and board participation.

Key takeaways

  • Use language that avoids reinforcing stereotypes, and prefer clearer inclusive terms in code, documentation, and everyday speech.
  • A Django project can use `config/.` to avoid embedding an undecided project name in its directory structure, while a maintained base-site template can provide a tested starting point.
  • A custom context manager can capture SQL from views, management commands, migrations, or tests, format it into a file, filter by duration, and show stack traces.
  • Custom QuerySets and database annotations can package reusable filtering and concatenation logic while reducing repeated queries and application-side work.
  • Strong CVs should focus on relevant skills and achievements, include Django and community experience, and be supported by regular, genuine LinkedIn activity.
  • Community-led projects such as Paraguay’s open air-quality sensor network and Ghana’s Django, PyLadies, and Python events show how open technology can address local needs.

Summarised automatically from the transcript.

Chapters

  1. 0:00 Inclusive Naming Andrew Mshar discusses inclusive language and alternatives for potentially exclusionary terms in code, documentation, and everyday speech.
  2. 6:13 Django Project Configuration Brent O'Connor presents a simpler Django project layout and introduces his reusable Django base site.
  3. 9:48 SQL Debugging Tools Levi Mann demonstrates a context manager for inspecting, formatting, and exporting Django queries beyond standard view debugging.
  4. 15:32 CV and Resume Advice Josh shares practical guidance for structuring a technical CV or resume, highlighting skills, experience, community work, and personal projects.
  5. 19:58 Custom QuerySets and Managers Samuir explains how custom Django QuerySets and managers can improve query reuse, performance, and code organization.
  6. 25:33 Air Quality Sensors in Paraguay Marcelo Alicece presents Aire Libre, an open-source community network of air-quality sensors and public data tools.
  7. 30:28 Ghana Community Activities Abigail highlights Django Girls, Django Social, and PyLadies Ghana events and the people building these interconnected communities.
  8. 34:00 LinkedIn Networking A recruiter offers quick ways to build a professional presence and network on LinkedIn before a job search becomes urgent.
  9. 39:30 Data in QR Codes Alberto Justin demonstrates storing text and vCard contact information directly in QR codes using Python.
  10. 43:57 Supporting the Django Community The closing announcement covers donations, PyCharm licenses, the Malcolm Tredinnick award, and Django Software Foundation board elections.

Transcript

7,441 words · auto-generated Show

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

0:20

Speaker 1: Uh so Fran uh uh finalized his presentation talking about inclusivity which is great because that you know it's the I mean very easy transition to what I want to talk to uh with you today. It's about and I I didn't have this Line talk uh already um Um prepare. This is about inclusive naming. These are things that I don't want you to feel um. Attacked or that you're doing something wrong. I just want us to consider a few things regarding the words that we use and how that those can have some implications uh within the community.

1:05

Speaker 1: And since we are so interested and so caring about inclusivity in this community, I think these are worth uh mentioning and sharing with you all for um to provide some food for uh thought. So uh the first thing is uh a lot of all the words are mostly okay. I mean it's it's not an issue and I know that they can there can be lengthy arguments about, ah, but why we can't use that word? I mean, what what is wrong with that word? Uh in general there's nothing wrong with a specific word. It's about how some words despite the the uh dictionary definition, have some extra meaning and many words reinforce stereotypes So I think it's good if

1:51

Speaker 1: if we try to consciously stop doing that and try to find replacement for some things. Not necessarily for us or oneself that know that they are inclusive, that they have a lot of attention to a lot of details, but because of the people that hear us children, uh other per other other person that hasn't been thinking about inclusivity or the meaning of the words. So for example, there are um Some initiatives about specifically inclusive naming in technology. I'm going to share a few links in the next slide, but these are about the words that we use in our code and in our documentations. So traditionally there are some words that are gender um

2:37

Speaker 1: non-neutral like many the middle you can use things like machine in the middle, it still is the the the nice acronym to it that we are all you all used to use. There are other words that I use and it and it's hard for me to change. So so I I I want you to know that I also it's this is hard also for for me, even though I'm very mindful of this. I always use variable names like dummy or crazy or we can instead use impacted or the uh sorry, I went to neurodiversities. Uh I usually use variable like dummy and and crazy. Uh but you can use simple placeholder or wild or Instead of sanity check, validity check. There are I haven't used that, uh, but I know that in some systems uh they are referred to as scrippled. Instead, you can say impacted or degraded.

3:25

Speaker 1: Um This is basically be mindful of minorities out there and people that have suffered or that are triggered by wars, for example, with abort or kill, those are triggers for some people. So maybe you can use halt for stop or Anything that is about color. There are a lot of technology about black something, black hat, blacklist or white, black hat, white list. With a strong connotation about meaning of those things, we can instead say other things like allow and deny list. Those in fact are more clearer words in terms of what they mean, right? So Ch these changes like this, I know that they are not necessarily possible one day uh

4:10

Speaker 1: from one day to another. It might take time depending on the size of the project, the politics of the project, and all that But just starting to thinking about and considering it is important because we can slowly try to incorporate this and spread the word among our colleagues or company or whatever and uh going to hopefully a more inclusive um code and documentation. And then I want you to think of uh the effect of the language um um particularly in spanish for example everything is uh has a gender in it all the nouns and all the adjectives and the default is to go uh to to default to the male form of all those. But then on the other hand, uh you might have uh when when you refer to a group of people, you might have

4:58

Speaker 1: defaults to female like for nurses, teachers, or cooks, uh while the language is still saying that they should default to male. So there are a lot of connotations in those as well. So uh I want us to embrace uh English, which uh is very easy to talk neutrally with. So that's very important, and I really like English because of that Which leads me to the there are a few links about inclusive naming initiatives with a lot of details and replacement boards But then this this thing that I keep hearing here and I know it's very common in the United States and I know it's very common in English. This hey guys, you know, if you go to uh hey guys CC it explain why despite being absolutely natural to use and

5:43

Speaker 1: I I understand is how most of the native English speaker people has been raised in Ghana is is to refer to a group of people It's not inclusive. I mean I don't I don't feel identified when they're saying hi guys, I don't feel included, uh because to me guys is male. So yeah, you can read that and you can consider using that in your uh speech and slides and code and all that. Thank you.

6:13

Speaker 2: Alright, hi. I'm Brent O'Connor. I'm the director of engineering here at Canopy. And I've been using Django since before version 1. 0. So a long time, approximately 17 years. So I'm here to give you probably the most technical talk you've probably heard of the whole conference. Sarcasm. So When you start a project, uh I think most people know this, but you use Django Admin, start project. And then you get an error message, and the error message isn't even in red , by the way. Which is interesting because this next slide, if you enter a name, uh a project name, and it's incorrect.

7:00

Speaker 2: The error message is in red, which is interesting. Um But my question is, why do we even need a project name? It doesn't make sense to me. And I remember 17 years ago or something, being kind of confused by this because I didn't even know what I wanted to call my project. Do I call it hello world or foo or I don't know So if you manage to get the project name correctly, it gives you a structure like this. But why? Why do we have the project name in the uh directory structure of our project? Uh I think we all know that naming things is kinda hard.

7:46

Speaker 2: Uh hence this joke uh that's pretty famous. Um so that's one of the hardest things for us to come up with. So I want to offer you guys an alternative. Which you can use, which is if you use config with a dot for the current directory, it will give you this structure. Which makes a lot of sense to me and hopefully a lot more sense to a lot of you guys that uh if you have a config group directory where the config should go in your project, it makes a lot of sense. I think if we were all consistent in this way, it would make tooling and building things a lot more consistent because you could predict

8:31

Speaker 2: where the settings are gonna be. You don't have to change any custom settings. Kind of nice. The other alternative is you can use my Django base site that I've been working on for I don't know, like 15 years or something like that, and I keep updated. Um But you might ask yourself, why would I want to use the Django based site? Well It's a quick way to get started with a Django project. It has all the necessary tools and packages that are kind of considered best practices. I try to keep up with what the community is doing. I actually every Saturday I update dependencies that Dependabot says is outdated.

9:18

Speaker 2: I put It also has an apps directory, which I also consider a best practice to put all of your apps for your project in an apps directory because it keeps things nice and organized and uh tidy It's tried and tested. And there's lots more reasons. I encourage you to go check it out. Thank you.

9:48

Speaker 3: All right, so my name is Levi Mann. Uh I also work at Canopy, which is a small tech company in uh Manhattan, Kansas. just down the road from where Django was born. We don't really like the Lawrence people, but that's another story. Um and today I just wanted to s kind of share uh a tool that our team uses for debugging SQL because that's Kind of something that everyone has to do. Whoops. So when you first start using Django, a lot of people have this mindset, right? Oh, it comes with an ORM. I don't have to learn SQL at all. I can just you know write my models, make queries, this will be great. The problem is once your project becomes more complicated, you might need to do some annotations and

10:34

Speaker 3: complicated stuff like that and you inevitably get to a point where you have an unoptimized something somewhere, right? And so you're like, all right, well I need to figure out what's actually going on. How many of you have used this? So that's like maybe the first thing you find, right? Oh, they have a way to print out the query that's being generated. Sweet. And in a lot of ways this is a great way to start, right? Because you get immediate feedback on what's going on in your query set. It's a great way to learn how Django, the ORM, is actually generating SQL queries. One of the problems is, what if you don't know what query set is causing your issue? Um, your s the slowness on your view, for example.

11:20

Speaker 3: And then another problem is the formatting for this, if anybody's tried to copy and paste it into their uh SQL client. It's not always great. It's hard to read. Usually you have to dump it into something else to reformat it so it looks nice. And then even then, sometimes string quotes and everything's not the way you want it So another tool people probably everyone here has probably used is Django debug toolbar, which is wonderful. Um gives you a ton more context, uh shows you all the queries that are loading on a specific page. Um Prints them out nicely, uh gives you a trace back of of what you uh you know where the query was generated, and so it's very useful. But the downside of that is

12:06

Speaker 3: What if I want to debug queries in a management command or a migration or a test? This just works for views because it's using uh the middleware. So, why can't we have a little bit of the benefits of both? And so that's the tool that our team built and kind of uses for this use case. Uh I'll get back to that. I was gonna do a live demo and we'll see how this goes because they never go wrong. But um so I have this basic Django site, it's a list view. Um Uh and it has some statistics about uh the books in this list, right? Um what if I want to print out the queries? In this case I could probably just use Django D debug toolbar.

12:51

Speaker 3: Uh-oh. The spinning wheel of death. Course. All right. So we built this context manager. And I have a live template for it. So you can basically it put inside of your code the exact spot you want to debug the queries for, uh put that inside of this context manager and it will print your queries. to the console. So um if we reload this page

13:38

Speaker 3: uh oh demo If we reload this page, once the there, okay. So here you can see we have a bunch of queries. that are running on this page and we can see there's 200, so that's a problem, right? Uh add our do select related everything, that's great. But what if I want to immediately run this query in my uh my SQL client, right? So we can actually provide it a file path. And now

14:23

Speaker 3: if you run it And we go to this file. We have a SQL formatted file, and we can immediately run that in our client. Right, so you can actually see what's going on. Um there's also a couple other settings I don't have a lot of time to show. Uh there's a threshold setting so you can set the uh A threshold for like I want to only see queries that run longer than a second or whatever. Um and there's also a way to render stack traces as well. So if you're interested, this is not a really a publicly available thing. I created a a gist on GitHub. That has the code necessary to do this. Um, but if we're thinking about maybe making this a more of a public tool.

15:11

Speaker 3: So if you're interested in something like this, we would be interested in knowing. So go to that gist, star it, leave a comment, so we can get some feedback on whether this is something we should make into a package. So thank you.

15:32

Speaker 4: Okay, hello everyone Or should I say hey y'all for everyone being American. I'm Josh. Um it's lovely to meet you all and we're gonna be giving a talk quickly about CV or resume advice. So a quick show of hands. Firstly, put your hand up if you call it a C V I'm in the wrong room. Put your hands up if you call it a resume. Okay, I stand corrected for once. Um finally, can you please put your hand up if you believe you have a good CV? Hopefully, I'll be able to give everyone else some tips from this then. Firstly, um, why am I giving CV advice? I'm a recruiter and we look at CVs all the time. We get thousands of inquiries. If you've popped over to say hello to us, thank you.

16:18

Speaker 4: Brilliant. We donate, we're a gold sponsor, donate to the DSF. We set up the Django social as well, and we do lots, lots more. So please come and check us out. So CV basics, first and probably foremost, uh the good. So try to stick to using one font. Um it looks clean, it's tidy. Headings, subheadings, you'll see as we go throughout. Use your location. You don't need your street name and door number and create an email address. On the flip side, the bad and the ugly. Don't use Josh O'Brien is sexy at hotmail. com. It's not a good look. You don't need your age. Um Let's get rid of that. Like I said, the full address already. And you certainly don't need uh that you were a paper boy or that you uh did

17:04

Speaker 4: GCSEs or I don't know what you call it here, but it's something different What what what Drew said. Thank you. Let's go straight into it then. So top of your CV, as I said, your name, go with the title that you want. Go for the title that you're looking for. Basic information, please include URLs to LinkedIn, your GitHub and other things as well. A short bio. Tell me who you are, tell me what you've done, the amount of experience that you have, and then tell us what you're looking for. We're just going to start continuously getting some repetition about what you're hoping to do, what you're hoping to find as your job. List your key skills. Do not list absolutely everything that you've worked with. Um it's not a good look. Stick to uh some of your strengths and just list a few of them.

17:51

Speaker 4: Employment history should be next. So Don't worry about reading all of that. I'll just quickly go over it. On the left, companies and dates, uh, month and year that you've worked there. And then we want to really see in detail what you've been doing, what are your responsibilities? What have you been working on? Have you been leading? On that, please include your tech stack. There are ATS systems now and they're consistently looking for uh keywords, key skills. They're just scanning solely for those. So If you're a Django developer, make sure you list you're a Django developer at the top, you're looking for a Django role, and that you've been working with Django throughout your roles and responsibilities. Third down, you can see that we've highlighted them in bold, it stands out, it should be the first thing that really your eyes are drawn to, fingers crossed. Underneath that

18:37

Speaker 4: education and achievements, some of you would have done code courses, list it, tell us about it, shout the success. Again, if you've completed a bachelor's or master's, tell us what it is. Furthermore, if you've completed Udemy courses or any certifications, again, shout about it and tell us. Community involvement is massive for us. We love Django. Tell people if you've been contributing to open source projects, if you've been a mentor, if you've attended a conference like this, it means that you're passionate about your learning and development and your career. So tell us, tell people on your CV. Personal projects and being personable. Tell us a bit about some of the projects you've been working on outside of work, outside of your core hours. You simply just need to list it, tell us what you've done in it, and then again, tell us the tech

19:24

Speaker 4: stack you've worked with. This cannot go sort of not shouted about enough, but be personable. Tell us who you are, tell us what Your interests are your hobbies. Do you take kids out? Do you game? Tell us. Because again, that's what's going to really separate you from everyone else. For me, that's all. The talk on the left is about this talk in a lot more detail. The one on the right is tips to become or securing your next Django job. Thank you very much. That's all folks.

19:58

Speaker 5: Hi everyone. My name is Samuir. I'm a software engineer at Nvidia here in Durham. I've been working with Django for about three years now and um was really excited to come to the conference. Um I've really enjoyed the talks And uh something that I wish I knew earlier on in my Django career was um how to use custom query set and manager classes. And this is I've been working with Django for about six months. And I started working with a new company and they showed me a lot of how to use this in my previous company, didn't know about and it really helped take the performance of my application and the organization of my code kind of to a new level. So if anybody's in a kind of similar situation to where I was a couple of years ago, this is what I would have wanted to have heard about.

20:45

Speaker 5: So I kind of have the DejangoCon inspired classes here. We have cities and conferences and than um speakers and talks that are given at different conferences. And something which you won't usually won't see by default on these kind of model classes. are the kind of objects property on these classes. By default, all Django models have this objects property. It's usually just the models. manager that's given And you've all certainly used this, even if you didn't know exactly what it was. I'm sure it's been referenced by a lot of other talks here. And you've certainly probably used a lot of the methods on it, such as creation and you know, filtering or annotations or all.

21:32

Speaker 5: And I think you can kind of classify these into two main categories when thinking about them. There are usually methods that are creating or mutating data in the database, such as ones at the top. And then there are ones that are selecting or aggregating or preparing data, selecting it from the database. And I'm mainly going to focus on the latter ones, which is usually what's involved when people are running into those N plus one areas that people have been talking about. Or slow querying errors, or not errors, but um complications that people have uh spent a lot of time talking about at the conference. And uh I kind of want to do this just through a brief example of how you might Add a new custom method to your manager. I've got an example here where I'm trying to basically serialize some data

22:21

Speaker 5: from my talk model, just trying to get the title of the talk. and the first and last name of the speaker. And the speaker is a foreign key on talk. And I kind of want a space between the first and last name. And you can run this and as hopefully a lot of people know by now, you're going to encounter an additional query every time you iterate through the for loop because you're calling the dot speaker property. And as many people have pointed out, you can add this select related method on the manager, which comes out of the box, and it can help resolve that issue to where you now only have to do two queries at a time But this is still, it's not a lot of code, but it would be really nice if you could kind of uh compress this logic of trying to obtain the first name and last name of the speaker together.

23:10

Speaker 5: in something that's a bit more reusable so that you don't have to re-implement this in a lot of different situations. And also so it just takes up less lines of code. And we can also do this only with one transaction in the database instead of two, which the select related requires. So what we can do is we can create a talk query set. I personally put these in a query sets. py module within whatever app I'm working with And you can add a custom annotation, which uses the Cuncat function tool. There's a lot that comes out of When uh it was said that Django comes with batteries included, that's certainly the case with a lot of these functions that you can um use to kind of build your own custom query sets um and annotations within

24:01

Speaker 5: Django. So uh really look at that documentation on what's offered there if you're interested in these kind of things in the future. But I can use this to at the database level uh Coalesce, perform an inner join on the speaker table and the talk table, and then coalesce the first name and last name of the speaker together, and then put it on the resulting query And then I can associate this custom query set with my model by just setting it as the object's property on that model. And so now I can kind of compress my previous for loop. I didn't have the select lady at the top here, but I can compress this down into basically a one-liner. And I can reuse this with speaker name in a lot of different cases. I can also chain other properties, I mean other

24:48

Speaker 5: methods onto this query set, like you would be able to chain filtering or exclusions together. So I can get the ordered names if I wanted to, and I can order by this annotation. And uh in terms of just using these in the future, where I really like to use these. Other than just annotating values on. If you have a lot of complicated filtering logic, perhaps there's a client request that you're taking in and you identify the user, and then you want to filter the Talks by whoever the user is, you can use this within various viewsets in a reusable piece of code by adding different properties such as filter by some complex logic. And then you can add those other annotations on. And so thanks.

25:33

Speaker 6: Hi everyone. I'm Marcelo Alicece. I'm a developer from Paraguay and I helped organize the Python Paraguay community. Before we start, this is Paraguay. It's located in South America. So I'm going to talk about this project that is a community project that was built in Paraguay by the Python Paraguay community and some friends. And the idea was to know what is the air quality at the moment. Why? Because we have a lot of forest fire, large clandestine emissions, garbage burning, and insufficient government control. And we didn't have like a an official government, uh

26:19

Speaker 6: like the official government agency wasn't it only had like one sensor. And uh we have a few other issues. Like this is right now how is uh South America the the air quality like in Paraguay at this moment like in AsunciĂłn it's pretty bad This is from a couple weeks ago. The Amazon forest is burning and we are all breathing smoke basically. So it's uh it's it's a problem. And uh and we wanted to uh to respond to the question like it's healthier to go for a run or I I prefer to stay home. What is healthier? And also this is a case of uh spike-driven development because there was this guy that wanted to

27:05

Speaker 6: sell sensors to the government for something like 10k per sensor, a sensor that costs 60 bucks, and we say like we can build it cheaper and open. So that is uh aire libre. What is Air Libre? It's a community, but also it's a network of sensors, of air quality sensors. And yeah, the difference with the other initiative is that we are a community, all the data is open and everything is open source. Well the hardware. It's basically one air quality sensor, one uh microcontroller, and the cost approximate cost is 25. It's five if you count with other the cable and other stuff.

27:51

Speaker 6: The framework is open source. There is a the GitHub there. Well it's I can skip this. Yeah, you just need to solve four cables and you 're done. Well, this is a repo. The back end, it's called Linka, and it's the one that receives all this the air quality data from the sensors. It's Linka because it's the planeteer of the wind. So this is a website. It's called aire libre with dot re. This is a repo. One It looks pretty good that that RE but it costs 60 bucks per year to renew, so just to

28:37

Speaker 6: no. Well this is how uh what the the website looks like. Every point of that it's it's the sensor and it has the the AQI, it's the air air quality index. We have night mode. And yeah, we have a few bots. The first one is in for Mathon, the other is for Twitter. Also the bots are open source. This is how it looks in Mastodon. It could be improved a lot. This is in Twitter. And this is how the sensors look alike. And yeah, uh it reads every two minutes the air quality uh data

29:22

Speaker 6: and it sends to the backend. uh that we can uh that we can yeah display via an API. And yeah and also one thing that is Um as you saw in the video, like we had this uh air quality um emergency, like a medical emergency, even. Um yeah, and thanks to this network of sensors, uh the like the government network of sensors was uh in maintenance and thanks to this one we have the data for that so it's I think I think at this moment we have something like 30 or something sensors And uh regarding the future, uh we receive a grant from the Mozilla Foundation and we can now we are going to have probably

30:10

Speaker 6: between 30 to 50 sensors more with that. And yeah, thank you. This is the website. And yeah, if you will need to contact me, I'm mailisearching everywhere. And yeah, those are my socials. Thank you.

30:28

Speaker 7: Uh good afternoon. I know we are so hungry, but this is just gonna take a few minutes. I promise. My name is Abigail, but most people know me as Afi. I go as Afi, that's my traditional name. I'm going to show you certain pictures which will highlight some of the things we've done in Ghana across the communities that are related to Django, like Django Girls, Django Social, and then Pie Ladies Ghana. Because in Ghana We are sort of intertwined. We do things together. So you see the same people or similar people in Jungle Girls, in Pie Ladies, and also Jungle Social and the other communities So for Jungle Girls Ghana, we've had one or two events from the beginning of the year till now. So this is the first event that happened in uh

31:13

Speaker 7: January, the ending of January, and that was the Django Girls in Hole. So this is a picture of when we concluded the workshop and that's Carfu in the corner there. Um, you know Jungle Girls is not going to be complete without cupcakes and hugs because that's one of the things that we do there. So that's one of the things that we had during the Jungle Girls event Now to Jungle Social Ghana we had our first meeting which we um it was more like an inaugural chat where we just talked about what we were doing Um, it was like a way to relax because that's the aim of having a social and it was great. So yeah. So that's coffee and then get heart in the corner there Um moving on to PyLeadies Ghana. As I said, all these communities are very different, but we are kind of the similar people in all of them

32:03

Speaker 7: or most of them. And I'm also an organizer for like all the communities on here So we had a we've had a lot of events, but let me just highlight just a few. So this one is a cybersecurity event. We had um like a two weeks workshop. where um that was held at the Stambig Bank Incubator in Ghana, Accra Ghana. And it was to train people on the offensive side of cybersecurity because It's a topic or area that is normally untouched, especially in Africa or in Ghana. So in the end, they were able to create projects and also get skills. To find ways of hacking or seeing certain things, vulnerabilities in networks. Also, moving on, so for PyLadies, we also have events

32:50

Speaker 7: that are online aside the in-person. So for online we have more of chats, we have workshops, we have tutorials. So this was an example of one like one like that on X So I just wanted to spend time and like highlight the awesome Lisa I also work with. I know my picture is not up there, but I'm here so you can see me. So we have Stancy, we have Cafe, we have Gerhardt, we have Yeah, we have. Jifa, we have Julius, we have Dorothy, and so many others. But these are the people who have put in so work, so much work uh from the beginning of the year till now we have one Python conference coming up in Ho in Ghana, which I'm going to keynote in October. So please Yes, keep an eye for that. And uh I think before the Python whole conference we'll have a Django

33:39

Speaker 7: social to end the year and then we'll prepare for the next Django social events for next year. So thank you so much for spending time to watch these pictures and yes if you want to find any way of getting involved or you want to just give me feedback thank you so much I'll be open to that have a nice day

34:00

Speaker 6: Right, just want to say I'm gonna run through this. I wrote it this morning and I haven't practiced it, so I'm gonna try and get it in five minutes. The um just very quickly about me, so I've been working in recruitment for Django people since 2008 in the UK, across Europe and here in the US. Three years ago Next week has started Foxley Talents. Again, just as an evolution of that part of my career. Earlier this year was invited to be an individual member of the Django Software Foundation. And I've been a community organiser for most of my career as well. Django Social, sort of the current project that we're working on, which was spoken about last year. Um right, anyway, quickly.

34:45

Speaker 6: The Coffee Break Reacts, this is like the LinkedIn edition. Just want to give some tips to people because we use it all the time. And what we we try to help people to understand is that actually how it can help you now if you're using it every day when you're happy in work or where you're not desperate people will tend to react when you do need some help on LinkedIn if you get laid off or something like that. So um there's some stats on LinkedIn. They're not very interesting. So I'm just gonna skip on. Quick show of hands. I'm gonna put all these up. If you can leave them up as we work through them. Who's got a LinkedIn account? Who's here? Yeah, okay. Who has logged in in the last week? Leave your hand up. Who has applied for a job through LinkedIn

35:32

Speaker 6: before? Okay. And from the other side of the fence, who has hired somebody through LinkedIn before? Okay, yeah, a couple. I thought it'd be more, but that's good for us, right? Um so and then with those who've been online this week, who has liked a post uh anywhere in any sense this week. Yeah. Anyone commented on a post this week? Okay, yeah, fewer, but still good. Who has posted this week? Yeah, a couple. Yeah. And has anyone sent a direct message this week? Yeah, quite a few. Good. Right. What I want to talk about is just a real simple these coffee break hacks.

36:18

Speaker 6: Just going along those, there's some really easy things you can do via your LinkedIn. Every day, every week, if you've got five minutes to play Candy Crush or Angry Birds or whatever the game is at the moment, like you can Just quickly log into LinkedIn and if you spend a little bit of time looking after your like your social network what you'd call your personal brand now, you can actually impact your s your future self should should you need any um any you know to to use LinkedIn there. Essentially by posting and doing several things each week um you can raise your profile a little bit to the people around you. I haven't added on here like connecting to people. I think you people look quite good at doing that anyway.

37:03

Speaker 6: But if you spend a bit of time just building up your network by adding the people that you've met here this week at the conference by um If you're interested in a in a job in a company, add a few of the engineers in that business, add the CTO or whoever, and start to engage with their content. If they're taking time to post stuff, it's feels nice to receive a little like or a uh thumbs up or a clap or whatever. If you can get involved in those you're you'll get a you'll build your reputation with those people, they'll start to know his oh it wonder who this guy is or girl is who keeps checking my my LinkedIn out But the easiest way to sort of try and elevate yourself is like going on and like trying to like a couple of interesting posts.

37:48

Speaker 6: If you can find a couple each week that you can share for that person with a few comments if you like. It just gives you that bit of confidence about putting yourself out there or or individually find something to post about each week. Again, you can help to improve what you moving closer right quickly. What could you post? There's um all sorts. You can post um if you've been here this week. take a picture, share it online. Um and that's a really easy thing to do if you if you wait for BarTecks photos to come out in um a month's time or whenever and you find a photo of yourself on there share that again and just use those things if you're comfortable doing so obviously um post about a problem you solve give some thanks to the to someone in the community share a project that's helped you

38:35

Speaker 6: These are just some of the pictures I've seen through the week here and just pulled together. But this this is why you're trying to, yeah. Well um help yourself out, showcase your knowledge. But then when you do come to that point where you need to look for work, if you post something like this, hey LinkedIn, I'm looking for work. um either you know these are the things that I do, this is what I mean. You're gonna have people who know who you are by this point who are gonna help you and engage with you. If you don't believe it Followed up with this one a couple of weeks later basically saying it turned out to be a really good idea to shine up the CV, put out a call for work on my socials, people who are engaging with me and coming to me and helping me out, which I hadn't done that stuff before. Wouldn't have happened. Um thank you. This is me on LinkedIn.

39:20

Speaker 6: Uh if you want to connect, if we're not already, we probably are. And this is how else you can find us. But thank you

39:30

Speaker 2: Hello everyone. So my name is Alberto Justin. I'm also known as Turikas on my social networks. And uh I'm here to talk about storing data on QR codes. So I've been using this uh Python Q QR code library from Lincoln. Thank you guys. Uh uh for in many projects like to creating short urls and uh it's like the the the most uh i i think people use qr codes just for sharing short urls Making payments in Brazil, for example, we have a system of payments since 2020 and that's like instant for every bank and people uh can share QR codes to uh share the

40:15

Speaker 2: payment details, uh tickets, inventory, but it can store data, like uh almost three kilobytes of data. And uh here's uh a little example. I can put, for example, a text, uh hello jungle com US. And if you scan this car key QR code, sorry. You're gonna just see the text. It's not an URL, you know. And uh actually uh the the code to To create in in Python is pretty simple, so you can use it to store other information you you want to share between systems, for example, like some specific IDs or other things.

41:00

Speaker 2: Uh the limit is actually your camera app. So when uh you point your camera app to a QR code What it does is detect the the data, the content in there. And for example, if it starts with HTTP or HTTPS, it's going to open the browser, right? So what I've done is to read the Android documentation on the camera app to try to see uh Which are the the list of file types it could detect and then open other other kind of apps, right? So for example, if it detects just a regular text it it it's going to show the text on your screen, you can copy it.

41:49

Speaker 2: Uh it starts with HTTP, it will open the browser. But then I found that uh it can also read V cards. So this is a QR code more dense, right? And here I stored a complete Vcard file. This is my contact information, by the way. And then what I've done is use a Python library to create the vcard file, and then I just pass all the content into that QR code uh code I've created. So uh here is a little script I've uh uploaded to GitHub. you can use it

42:35

Speaker 2: and you can you just need to install the QR code and vObjects libraries and you can call the script and pass all the parameters. José Carlos da Silva is like John Doe in Brazil. In Brazil, in Portuguese, I mean José Carlos is like the most common name in Brazil. So when for example you are scanning this QR code, it's going to show you your an option to add as a contact. And all the information is going to be filled. Obviously, it depends on your operating system, your camera, etc. Maybe some of the versions won't support it. But

43:20

Speaker 2: generally it works, right? And uh the ironic thing is that I've have here a card with this QR code with a V card inside printed so when you are at a conference You can just show your card, people scan it, and uh offline they you get your information. So you don't need to reach to an URL or something else, no? Um that's it. Hope you like it.

43:57

Speaker 6: Okay. Super quick different ways in which you can support our community and the Django Software Foundation. And the first and simplest is simply to make a donation. I hear from Jacob, we got about $700 worth of donations in the conference so far. I'd love to see that number go ten times higher. by the end of the conference. And if you come by to say hi after you made a donation, I'll give you a very limited edition Django Pony holo sticker. Simple as that. Second option is to purchase a PyCharm license, new license, or if you've not used it in a while and want to renew. They give us a hundred percent of the cost of the license.

44:44

Speaker 6: I can't stress enough how good of an offer it is for us. And if you do that right now and come say hi, I will give you a Django Pony Up next, Frank earlier today mentioned Malcolm Trednik, one of Django 's early contributors. We have an award to recognize people who do work of the standing of Malcolms. And the award is up and running for an extra week and I'd love to see more nominations for the people in this room who represent this ideal and also for the people who aren't in this room, this award is quite a significant monetary prize that can help people join those events. And finally, we have our board elections coming up

45:33

Speaker 6: and nominations for these elections open as of today. I'm on the board, I've been for the board for a year. I can't stress of how high purpose and high reward and high impact this type of role is. It's not for everyone, but You should definitely nominate yourselves, nominate people you know as individual members so you get to vote in those elections and also consider nominating yourself as a board member.

46:07

Speaker 4: Thank you, Thibaut. Thank you to all of the speakers this week. And I just want to say an extra thank you to all the organizers who have helped me throughout the week. Thank you very much.

Questions this talk answers

What inclusive alternatives can I use for common technology terms like “dummy,” “sanity check,” and “blacklist”?

Use terms such as “placeholder” instead of “dummy,” “validity check” instead of “sanity check,” and “allow list” or “deny list” instead of color-based terminology. Other replacements can include “halt” for “abort” or “kill,” and “impacted” or “degraded” for ableist terms.

Discussed at 2:37

Why should I avoid saying “hey guys” to address a group?

Although “guys” is commonly used for mixed groups in English, some people understand it as referring specifically to men and do not feel included by it. The speaker recommends considering more neutral alternatives in speech, slides, and code.

Discussed at 5:43

How can I create a Django project without putting the project name in the directory structure?

Run Django’s `startproject` command with `config .` so the configuration files go into a predictable `config` directory in the current project directory, rather than adding another project-name directory. This can make project tooling and settings locations more consistent.

Discussed at 7:46

Why use a Django base site template?

A Django base site provides a quick starting point with commonly needed packages and best practices, including an organized `apps` directory. The speaker also keeps its dependencies updated and has used it in tested projects over many years.

Discussed at 8:31

How can I debug Django SQL queries outside a view, such as in a management command, migration, or test?

The speaker’s team uses a context manager that can be placed around the exact code whose queries need debugging, then prints those queries to the console. Unlike Django Debug Toolbar, it is not limited to views and middleware.

Discussed at 12:06

How can I export Django’s generated SQL in a format I can run directly in a SQL client?

The query-debugging context manager accepts a file path and writes the captured queries to a formatted SQL file. That file can then be opened and run in a SQL client.

Discussed at 14:23

What should I include on a software developer CV or resume?

Include a clear name and target title, location, contact and profile URLs, a short bio, selected key skills, detailed employment history, and the technologies used. You should also highlight education, certifications, community or open-source work, personal projects, and some personal interests.

Discussed at 17:04

How can a Django custom QuerySet avoid repeated query logic and N+1 queries?

Create a custom QuerySet method or annotation—such as one that combines a speaker’s first and last name—and attach it to the model’s manager. This makes the logic reusable and allows it to be chained with filtering or ordering, while database-level joins and annotations can avoid extra per-object queries.

Discussed at 23:10

What is Air Libre and how does it monitor air quality?

Air Libre is an open-source community network of inexpensive air-quality sensors created in Paraguay. Each sensor uses a particulate or air-quality sensor and a microcontroller, sends readings approximately every two minutes to the Linka backend, and exposes the data through a website and API.

Discussed at 27:05

What Django and Python community activities has Ghana organized?

The Ghana communities have run Django Girls workshops, Django Social meetups, PyLadies events, online talks and tutorials, and a two-week offensive cybersecurity workshop. They also planned a Django Social and a Python conference later in the year.

Discussed at 31:13

How can I use LinkedIn to improve my future job prospects before I need a job?

Regularly build your network, connect with people from conferences or target companies, engage with their posts, and share useful content or your own work. Consistent activity raises your profile and means more people know and can support you when you eventually look for work.

Discussed at 36:18

What can I post on LinkedIn to showcase my skills?

You can share conference experiences, projects, problems you solved, useful tools, or thanks to people in the community. Posting about these activities helps demonstrate your knowledge and makes it easier for your network to recognize and recommend you.

Discussed at 37:48

Can a QR code store data other than a URL, and how do I create one in Python?

Yes. QR codes can store text, identifiers, payment details, and roughly up to three kilobytes of data; a Python QR-code library can encode that content directly. What happens after scanning depends on the phone’s camera app and the data format.

Discussed at 40:15

How can I put contact information in a QR code?

Generate a vCard with a Python library such as `vobject`, then pass the complete vCard content to the QR-code generator. Compatible camera apps can recognize it and offer to add the populated contact, which also works offline from a printed card.

Discussed at 41:49

How can I support the Django Software Foundation and the Django community?

You can donate, purchase or renew a PyCharm license through the conference offer, nominate people for the Malcolm Tredinnick award, and participate in Django Software Foundation board elections. Individual membership also allows you to vote in those elections.

Discussed at 43:57

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