Lightning Talks Day Two

This video features Kojo Idrissa at DjangoCon US 2023 in Durham, North Carolina, USA.

Lightning Talks Day Two
0:44:34
Published November 22, 2023
291 views

This talk was presented at: https://2023.djangocon.us/talks/lightning-talks-monday/

LINKS:
Follow Kojo Idrissa 👇
On GitHub: https://github.com/kojoidrissa
On Twitter: https://twitter.com/kojoidrissa
Website: http://kojoidrissa.com/

Follow DjangCon US 👇
https://fosstodon.org/@djangocon
https://twitter.com/djangocon

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

Video production by the presenter and DjangoCon US 2023 volunteers.

Summary

The speakers argue that Django and its community can make development, deployment, and participation easier through practical tools and shared habits. Peter Baumgartner presents Django Production, an opinionated package for production settings, secrets, static files, Gunicorn, and health checks; Mariana explains coding dojos as collaborative, test-first practice; and another speaker describes OpenShow, a Django-based system that uses HTML/CSS and OBS for reliable church livestreams. Other lightning talks invite attendees to Brazilian Python conferences, recruit contributors to Django’s Code of Conduct Working Group, show how OpenAPI schemas can generate Python clients for Django REST Framework APIs, offer strategies for living and working with ADHD, demonstrate data-driven walking challenges, and introduce a browser extension for switching documentation between software versions.

Key takeaways

  • Django Production packages common deployment concerns—static files, environment secrets, Gunicorn, health checks, and production security defaults—into a reusable setup.
  • Coding dojos build programming skills through small test-first steps, rotating pilot and co-pilot roles, and collaborative discussion once tests pass.
  • OpenAPI schemas from Django REST Framework can generate usable Python client libraries, avoiding hand-written HTTP calls and providing features such as retries.
  • Small personal systems can solve substantial problems, from an OBS and Django livestreaming tool to data-driven challenges for walking every street or trail.
  • The Django community benefits from inclusive regional conferences, Code of Conduct volunteers, and tools that help developers use documentation for the correct software version.
  • Advice for ADHD includes experimenting with working environments, forgiving unfinished projects, keeping detailed notes for future starts, and seeking help when needed.

Summarised automatically from the transcript.

Chapters

  1. 0:22 Django Production Defaults Peter Baumgartner argues for a batteries-included deployment experience and presents Django Production for simplifying production settings, static files, secrets, servers, and health checks.
  2. 5:03 Coding Dojos Mariana introduces coding dojos, explaining their pilot-and-copilot format and the practices of baby steps, test-first development, and collaborative learning.
  3. 10:16 Open Show for Church Streaming A solo developer describes building an open-source Django application for church presentations and livestreams using Snowmix, OBS, HTML, and CSS.
  4. 15:16 Brazilian Python Conferences Felipe showcases Python conferences across Brazil, including AfroPython, Python Nordeste, and Python Brasil, with an emphasis on inclusion and regional community.
  5. 20:48 Django Code of Conduct Working Group Michael Clark explains his experience serving on Django’s Code of Conduct Committee and invites contributors to join the new working group structure.
  6. 25:41 Generated Clients for Django REST APIs A demonstration shows how to turn Django REST Framework’s OpenAPI schema into a Python client library with Swagger tooling, avoiding manual HTTP requests.
  7. 30:15 ADHD, Productivity, and Self-Compassion The speaker shares personal strategies for concentration, comparison, unfinished projects, note-taking, and seeking help while managing ADHD.
  8. 35:24 Gamifying Long-Distance Walking Ann Beaman explains how she used Strava, GPX data, maps, and data analysis to walk every block in her neighborhood and complete a park trail challenge.
  9. 40:02 Unified Documentation Version Switching Doug Harris presents a browser extension that redirects documentation sites to preferred versions of Django, Python, PostgreSQL, Wagtail, and other projects.

Transcript

6,990 words · auto-generated Show

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

0:22

Uh

0:22

Speaker 1: I'm Peter Baumgartner. Uh I uh hang on, I'm fumbling with my options here I'm the founder at a company called Lincoln Loop. We are a digital agency. We focus on Django solutions. We help people with hard Django problems. We also have this tool called AppPack, which takes the kind of Hellscape or whatever you want to call it that's AWS and makes it really easy to use. It's like a platform as a service in your own AWS account. So I'm not just self-promoting here. There's a reason I wanted to show this. Um, I've been doing a lot of work with deployments with uh Django sites lately, and um my Talk point of my talk here is it's too hard.

1:08

Speaker 1: We should make it easier for people. Um and uh it's Django has this philosophy. It's batteries included. It ships with tools that solve common web development problems. One of the most common web development problems is getting your site online. Um so uh if we look at uh shoot hang on here. Uh okay. Um had an extra tab in there. So uh I did a post on how I get a Wagtail site up on uh App pack, but really it's getting a Wagtail site up anywhere. This isn't a pick on Wagtail.

1:53

Speaker 1: Wagtail uses all the same defaults that Django does. So I had to go through, I had to learn how to uh serve static files because that's not included. Um I had to connect to my database. We do okay there, we've got a setting for that. Um I needed to put a health check endpoint in. That's not that uncommon these days. Um I had to figure out which production web server I wanted to use and add that to my requirements and run it. I had to change some production settings like a secret key and loud host, and that probably doesn't even cover the ones that I want to add like security things. I had to figure out where my files were gonna go because I wanted them on S3. And that's about it. So it's a lot of steps

2:39

Speaker 1: and I see this trips up a lot of people. It's not totally obvious and there's a lot of different ways to do this. And I think Django should do a better job of providing a batteries included option here. And this is these are Django's docs on how to deploy a site. There's a lot here, and I'm guessing most people don't actually read them because you can kind of figure it out if you hack up together and read blog posts and all that. So I came up with a project called Django Production. And this is kind of what I wish Django would do is Just give you these tools out of the box and give you a way to flip between development and production.

3:27

Speaker 1: I tried to be opinionated but not really use tools that were kind of weird esoteric things. So it includes white noise for serving your static files. It includes a way to load secrets and environment changes from the environment with Django Environ. It includes a way to run GUnicorn and it includes a health check endpoint that you can include in your settings. the way you add this to your project. Oh, also like it it has this toggle, so you can have a Django Mv uh environment variable and when you set it to production it sets all the right security settings to um kind of the defaults that we want them to be in Django.

4:14

Speaker 1: So uh I can show you really quick, there's not really much there, but it's again stuff that trips people up. Um so we do things like Setting C Surf cookie secure and session cookie secure and um stuff that like just people don't generally think of this um when they deploy Django sites. So uh I would love to have this be in Django proper, but I think part of the process is kind of getting some buy-in behind it. So if this is something you're interested in, come talk to me about it. I'm not totally married on how it works, but I think it's important. So I'll be at the sprints and I'll be at the booth out in the hall. Chat with me. Thanks

4:59

Speaker 2: Thank you, Peter.

5:03

Speaker 3: Hi, I'm Mariana. Uh I wasn't going to show slides at all, so I just wrote them to At least have something written there. I'm here to talk about coding dojos. Who here has been to a coding dojo at all? Really? Whoa. Yeah. Okay, we we have to change that. So um I'm really excited about that because that's how I actually learned how to program. Uh it's the most fun way of programming um and it can get you really far. So I'm standing here so it's It's a good statement that it actually works. So uh coding dojo

5:48

Speaker 3: is a meeting to program together. uh develop uh good programming practices uh and above all have fun together. Uh it's Uh well dojo, I don't know if uh everyone knows what a dojo is. It's like that that place where you train martial arts. Uh and I I really like the the martial arts metaphor because in in any martial arts you know that the You repeat some movements over and over, like you repeat the same punch, the the same kick over and over until it's just part of your body, and when you need it It's just there.

6:33

Speaker 3: You're so used to doing it. So and that's how that's that's the philosophy of how you develop those skills. You just repeat them over and over Uh it's very easy to organize one. The only structure you need is a computer, a projector, and hopefully people bring food because You don't want to do anything without food. And that's it. You don't need like a huge setup. Just a computer and a projector is fine. And that's how the dynamic goes. You have a pilot and a co-pilot. You set up a timer with like five minutes or you know

7:18

Speaker 3: whatever time you you think will be cool. Uh during that time when you hit play, only the pilot is allowed to touch the uh keyboard. And only the pilot and co-pilot are allowed to talk. The audience just watched that Until the tests start passing. As soon as the test is passing, audience is allowed to intervene, make suggestions, refactoring. discuss the problem, whatever, but if tests are failing, pilot and co-pilot have to be there on their own and figure it out on together How does it scroll this way?

8:03

Speaker 3: Okay. So the principles that guide the uh the meeting are first one baby steps. That means you find the smallest possible problem you want to solve and you focus on that problem before moving on to the next one. Which is usually funny fun to watch people come to a session for the first time because we're not used to thinking that way. So uh it seems kind of stupid when you when you try to do that, when you try to not solve

8:49

Speaker 3: Things that you you think you have a solution in your head, and then you have to stop yourself from writing the code for that because you're not allowed to. You're only allowed to solve one problem at a time And for me, that's the most interest uh entertaining part of the thing, which is seeing the people struggle. Oh , great. Okay. The second principle is uh you have to write your tests first. So oh yeah I have this incredible solution will solve everything. Don't matter, you're not allowed to write that. That's that's uh you make me nervous, sorry. You're not allowed to to write any code uh if there's not a task for that

9:37

Speaker 3: Uh and the abilities you I'm the abilities you want to develop with that is that you learn to structure uh problems uh first you learn to formulate ideas because you have to explain to the audience what you're thinking. You learn how to Sorry. You learn how to uh write readable code and document. Okay.

10:16

Speaker 4: Okay. So how do you write software? Which, and write it as a solo developer, which accepts video from a video input, displays slides , automatically creates multiple versions of each slide, includes images and video in the slides. Streams this whole feed to the internet, allows for reusable sets of slides, and this is in the context of a church service where we um Display lyrics to hymns, and we want to be able to reuse those and not have to recreate the slides every week. Organizes slides by segments of an event, so the slides for each part of the church service

11:04

Speaker 4: in this case Has an extensible presenter interface. I want to be able to copy the script for the event into the software and then organize the slides in the script to give really good cues. Um then I and and oh by the way, it has to not break while you're running the live stream for your church service. Well, just like anything else, you build it piece by piece, very carefully, so it all works theoretically. Now I already knew I didn't want to try to write the live stream system. Luckily, I don't have to, because someone else already did. And I started designing the system that was built on SnowMix, if anybody's heard of that.

11:49

Speaker 4: It's an open source software video mixer. The guy that wrote it. uses it to broadcast rocket launches for Copenhagen suborbitals and it's awesome. Um but uh it's also capable of synchronizing audio and video just need to get that into OBS. That's easy. Video slides.

12:08

Speaker 2: We've lost your slides.

12:09

Speaker 4: Oh no. No, we haven't. They're still there. I'm just I just wasn't showing one. Um Uh video uh video slides would be ingested directly into Snowmix. Text and image slides would have to be created, and then those images could be fed to Snowmix. That'd be that'd be good. Um But remember the requirement of multiple versions of slides, one to be displayed in the room, one to go in the live stream, and everything else. That means the program really needs to dynamically generate the images from the text and the images of the s in in the slides and format them based on a set of formatting rules. That would all be done by a worker in the background and then we

12:55

Speaker 4: get those and give them to Snowmix and yada yada yada yada. Um I spent about a week trying to figure out how to implement this. And um The application architecture started reminding me of the wiring behind the system it's running on. And then I had an epiphany. And I immediately threw away all my planning for this architecture because someone already wrote a really flexible system for dynamically formatting text and images and even videos based on a wonderful system of formatting rules. Duh. So now I just need to format my slides with HTML and CSS, and then I can use an OBS browser view. To superimpose them over the ki

13:41

Speaker 4: video that I get from my cameras, and I can use OBS to integrate the audio and everything else. So this is now solo developer heaven because now all I have to write is one Django app. The way this works in practice is that when you're presenting the slides, you have one window up on your screen, which is up there, that's displaying your slides. You have a browser source open in OBS like I talked about, and then you have a presenter interface in front of you that has all the slides laid out so you can click on them. When you click on one, it displays it in all the various places. That page also works on a phone, so you can have remote control. I could give a whole talk on how the structure of the show really actually works. in open show and how incredibly nice it is to use in practice.

14:28

Speaker 4: But Kojo 's sneaking up on me, so I'm not going to. But I will I will end with this. Since I implemented the initial workable alpha of this three or four months ago, I have not had a single live stream failure or a single slide deck failure where my old system built on some paid software that I won't denigrate too much was crashing every single week and it was driving me insane. So it's only getting better. If you're interested in any of this, and I'm sure I'm not the only solo church tech guy in this room, though I'm probably in the minority in that it is my actual job full-time. Check out the code on GitHub, ping me on Mastodon or find me in the hall. I love talking about this thing. I did it.

15:12

Speaker 2: Thank you. You did very well.

15:16

Speaker 5: Thank you. Hello, so I'm Felipe. As you can say, I'm from Brazil. And I'm I'm here to invite you for a few conferences that we do in Brazil. Most of people here, at least that I have met, have never been to Brazil. Brazil is a beautiful country and half of the population of South America are in Brazil and we do not speak Spanish, we speak Portuguese A lot of people believe that in Brazil we speak Spanish. So this is my talk, come to Brazil, and this is the how the country is separated in regions. And For most of the regions that we are seeing here, there is a conference specific for that region to get the people together for that region. And we also have a conference that's uh

16:03

Speaker 5: AfroPython conference. I'll show you a video very briefly and I will show you in two acts because the video will take all my time for this talk. So I will show you very briefly. And this is the last Afro-Python conf that we did in July of this year. And this is a conference that was made. especially for bringing black people that code in Brazil together and we always try to be very inclusive so you see the um person doing sign language the Brazilian sign language at the bottom right and you're gonna see a lot of people a lot of people in Brazil believe that there is not enough um black engineers or people that code in Brazil but we are there and After Python made it made zig

16:48

Speaker 5: Sorry, makes it easy for companies to find more black developers and remake the connection so more people can get employed and have a better life. We also try to always have subtitles because that's very inclusive for people that are deaf especially. This is a a conference that happened in In Salvador. That's the city that's the most black city outside of Africa. And that was very key for us. And we also bring a few um entrepreneurs that want to share their their business. We all have uh kids' space. And this is the key that I was telling yesterday that this is the moment and we have a cultural presentation during the conference where people could enjoy a bit of the local

17:38

Speaker 5: culture. And this is me and Amanda, both of the partners at AfroPython and organizers of the conference as well. I will stop here and you can see more on our YouTube channel. We have a few videos of conference that we have done in the past. And it's nice to see a lot of uh what we have done so far. Um let's go back to the presentation We also had the Python Nordeste, that's the conference for the northeast of Brazil. That's a beautiful conference this year was uh was also in Salvador. But next year gonna be in Natal in Norway State and I'll show a bit for you later. Um we also have the PyCon Brazil, we call it Python Brazil

18:27

Speaker 5: because it was easy for for us to get sponsors. And our most of the companies didn't know what understood what was the con, so we had to change the name. This is gonna happen at the end of the next month, October. And Sorry, are you already in October? I don't know. Um it's gonna happen at the end of the October and beginning of November. So this is gonna happen the very south of Brazil. In Brazil you don't choose the the conference to be held in a city two times like year after year. We usually like we choose this year the 20 25 plays to hold the conference. So next year we already know where is the conference and I'm gonna show you in a few minutes.

19:13

Speaker 5: But if this conference is too close for you, you can go next year. If marriage lights are passing I will be able to show you. It's not working and I don't know why. Let's see Okay. I see you, Kojo. Um Python Nordeste is the conference for the Northwest of Brazil. And next year, gonna be Natal. Uh Natal is a beautiful city. This is the state is very small, is that red thing in the map But it's a city with a lot of cultural stuff that you can see. Churches, you can uh surf in the sand. That's very different and it's super nice. Um

19:58

Speaker 5: you can have this kind of um tourist um Tours as well, that's a beautiful space. And and for the next year, it's gonna be in Rio, the city that I was born, and a friend of mine as well. And you can have this view and get to enjoy Rio. So come to Brazil. See you.

20:16

Speaker 2: Thank you Felipe

20:20

Speaker 6: Well uh I don't have sli I was told I could plug my notebook in but I don't

20:26

Speaker 2: that's fine. If you're giving a lightning talk, you don't have to have slides. You can have slides if you want to. You can have a next card, you can have a notebook, you can you can prepare your information however you see fit. So Michael and his notebook are going to share with us how you can contribute to Django, I'm assuming by way of the Code of Conduct Working Group. So Michael, go ahead.

20:48

Speaker 6: Thank you, Kojo. I regret having to follow a talk called Come to Brazil. It's a little tough. So uh hi, I'm Michael Clark. Um I live here in Durham. I bet you can tell what my university was. Um I've served on the Django Software Foundation Code of Conduct Committee, which going forward would be called a working group. for the past about six and a half years. And I just want to talk about what my experience is like been serving on that committee And hope that some of you will be inspired to think about serving on the Code of Conduct Working Group or maybe one of the other working groups that are in the process of being formed by the Django

21:39

Speaker 6: Software Foundation Um, I probably don't have to sell too hard about the idea of having a code of conduct. You all know that this community is a really wonderful, welcoming, open, accepting community. But I think it's important to codify a code of conduct mainly because this is a very international group. People from a lot of different cultures come together. And not everybody sort of looks at at conduct and behavior the same way. So I think having a way of sort of codifying it and and having a sort of

22:24

Speaker 6: ground rules uh for conducting ourselves is really important. And it's also important to have a group of people that can sort of adjudicate any any issues that might arise around conduct. So, as I said, I've served on this committee for the past six and a half years. Um I didn't really know what to expect. I figured, well, this is this could be kind of you know tough. We probably are gonna have to wrestle with some really tough situations. things like that. And actually it has turned out to be far from that. It's a very low volume job. It has high impact, but in the time that I've served

23:12

Speaker 6: We address one, maybe two issues a year. This is such a well-behaved community that we really don't have that many things to to uh to worry about. Uh right. Um and Since I've served this long, I feel like I'm coming to kind of my end of what I think I should serve. I think it's good to have new blood. Come on these committees. I'm not burned out by any stretch of the imagination. I just feel like you know having people in volunteer roles for a long period of time taking up space that could

23:59

Speaker 6: be used by other people it is probably not a good idea. So um and one of the members of the long serving members of the Codoc of Code of Conduct Committee has recently just stepped down. So we've got some openings. uh on the committee and so I'm here to recruit you to to think about uh joining us. This would be a good time. to join the the the committee or now it's called a working group. As you may have heard from Chaim's talk yesterday, we're establishing a new sort of structure within the uh Django Software Foundation where we're moving to a working group structure. So it would be a good time to kind of get in and on the ground floor and try to help

24:45

Speaker 6: shape how that's going to look. The code of conduct probably could stand a refresh, right? So being on the ground floor of taking a look at that And being able to contribute to that. So my call to action is if you are even slightly moved Email conduct at jangoproject. com or come talk to me. If you do, I'll give you a sticker. And finally, if Code of Conduct Committee doesn't really inspire you, there are some other working groups that are being formed. So kind of keep your eye on what's going on there and

25:33

Speaker 6: think about applying for one of those. So thanks very much.

25:37

Speaker 2: Thank you, Michael.

25:41

Speaker 7: So we I make a lot of uh I I make Django application. And some of them have lots of them have DRF in them. Okay, so I make a lot of uh rest in points using DRF. And when I want to then use them, I find myself writing opening up requests and chaining things together with requests or just concatenating strings together and hitting the HTTP endpoints. I hate that. So it's like there's gotta be a better way. I mean we've got we've got DRF, it's generating, it can generate open API schemas. We have these well-formatted YAML schemas that we can just just we should be able to just use a code generator. I come from the Java back from the days of Java

26:27

Speaker 7: and um uh I can't remember what was called Apache something or other, but like we would we would just make uh endpoints and then we would go run a code generator and we'd have a Java library and then we just use that. We wouldn't deal with the whole HE And that was 15 years ago. So I'm thinking, come on. So I just decided to Google around a little bit and uh found there's the open API swagger, the Swagger folks run a website called Swagger Hub where you can give it a YAML file and it'll generate code in whatever language you want and then you don't have to write HCP anymore. So I made an endpoint. I, co-pilot, made an endpoint yesterday. Here it is. Basically I just made some models.

27:12

Speaker 7: I made some serializers, I made some viewsets, I really just hit tab and enter a whole bunch of times. I made some URLs. Here you go. Dan tab and enter a bunch of times. And then I ran it. And there it is running. And then once you run that, then you can go and look at your beautiful uh DRF site and then you can go and look at your swagger UI because you um Where is it? Where is that s where's that one? Where's that one? URLs. So you could go in here and you say, yeah, well actually I want to go ahead and serve an open API schema.

27:57

Speaker 7: This is all the DRF documentation. You say, yeah. do it this way. And then you say, all right, and now enable swagger, do it that way. And it's pretty straightforward and this is all I'll share the link to the repo in a minute. And so then you have this swagger interface, which is really nice. And then you click this link here and it takes you to your schema. And then you click download and you download it, and it's in your downloads, and you open up. up your downloads and then you can open up that file and you can I'm just gonna walk you through this a little bit fast And then there's your YAML file, and then you can go back over to Swagger Hub, and then you can just again paste it in. It'll render out that same

28:43

Speaker 7: documentation You can say export, you can say yeah, I want a Python library. And now you can go back over to your downloads. And there's your brand new Python library that has everything you need so you never have to uh concatenate strings together anymore in order to hit the uh endpoint. And so let's see that working. So I just um Loaded that into PyTarm because I love PyTharm and I wrote up a little example code here and it's basically gonna do is say go connect to the API, list the customers, and then I have another one that's going to make a customer. Let's run it and see what happens. So there's our customers. And if we come over here, we can see we have another customer.

29:29

Speaker 7: Let's run it again. And there's our customers. And what I really like about this is that imagine that your uh API somehow has a network lip, so I just stop the server. And now I'm gonna run this. It's gonna say, I can't find it. And now I'm gonna go ahead and start the server again. And it's gonna say, hey, I found it. So it gets you retry out of the box, which is awesome, and I didn't have to write it. That's all I got.

30:07

Speaker 2: Thank you, Ryan. Ready to go, Jack? All right.

30:15

Speaker 8: Me. I was diagnosed with ADHD as a kid. My parents worked really hard to make my environment uh appropriate for that. I was prescribed meds. I managed all right and eventually joined the Marine Corps where I had all the structure that a person could want. And thank you for coming to my talk. Happy story, right? Uh not so much. In 2017, uh around that time frame my role at work changed significantly. Uh I also got married shortly after that, a whole new set of responsibilities. And then the pandemic affected all of us. So all that previous structure in my life that somebody with ADHD really needs really disappeared. I was dealing with anxiety, a lack of direction, a lot of issues, felt like I was drowning in life.

31:01

Speaker 8: and uh needed some help. And that can be really scary, but it's also really rewarding once you figure out those underlying uh issues and get them resolved. I spent the past three years really introspecting, um thinking about what worked for me. And uh so I've got some some tips and some thoughts that may or may not work for you. I'm not a medical professional, um, and you know you better than you uh than I do, but uh Hopefully some of these will be helpful. So some of the things that I've struggled with and what I've done to mitigate them. Concentration. All my life, obviously, you know, concentration is always a struggle, and I think a lot of us deal with that. If you go online, you'll see recommendations for what's ideal, somewhere comfortable, quiet, with nothing distracting nearby. That's what you should be studying with.

31:47

Speaker 8: For me, that would be really boring. I don't do well in an environment like that. No thanks Experiment to find what worked for you. For me, it turned out being in a busy public place like a coffee shop, but putting on noise-canceling headphones is where I get the best work done. I'm very effective. It was a really annoying uh a revelation for me at the time. Here's me yesterday working on the slideshow at the coffee shop. It might be entirely different for you. Experiment. Think about what works for you. And don't just listen to the bloggers who may have the answers but don't know you. Number two, I often felt like I wasn't accomplishing enough or like other people were ahead of me in life. Society tells you where you should be

32:33

Speaker 8: in life and that's you know having a fancy car and a fancy job and and everything else early on. In reality , that's not how it works for many of us. We're much more complex than that. Life isn't a race with a specified timeline. We're all going at different paces and we all have a lot of different variables in our lives that are different points. You know, here's just a simple diagram that I threw up. You know, on the top is what it looks like when we're looking at another person on social media or in public. One-dimensional, they're either doing good or they're not. In reality, we're all doing good and and you know, various levels of that in a variety of areas of our lives. And then three, uh shame about half-finished or abandoned projects. I start lots of things.

33:19

Speaker 8: There's so many things that that I want to do and learn and be. Um and the reality is many of those projects, many of those things I start on, I I never get around to finishing. You gotta forgive yourself. Life isn't about how many things you can accomplish and not everything needs to be finished. It may sound cliche, but there's something to the journey. There's some value in learning and experiencing things, even if you don't get to an endpoint. And furthermore, you can often pick up a project again if you take notes. I've gotten very religious about this. I have something to take notes. Wherever I go, whether it's the bathroom, the shower, work , I'm able to take notes somewhere. There's a lot of tools these days, notebooks, uh

34:06

Speaker 8: good apps like Obsidian and Joplin There's waterproof writing tablets, but set your future self up for success. Write down things like where your project started, what research you've done, where you stopped at. and where to find uh the documents and how to set up an environment so that you can get started again. And then keep that list with you. uh somewhere accessible so that if one day you're procrastinating on something you're supposed to be doing, but you have energy to work on this other thing, you can go back to that list, find something that used to interest you and maybe does again, and get started again quickly. Look back occasionally, it may feel like you're not accomplishing a lot, but you are. Sometimes you just need to think about it

34:51

Speaker 8: I've contributed to things like Django and this community, even though I've failed to accomplish a lot of other things. And more importantly, I've provided for my family, I've mentored people, I've kept my husky alive and thriving and spoiled, and I've made a lot of friends. Last, get help if you need it. Needing help is completely normal and human, and seeking help is healthy. So last I'll leave you with the the pet tax. There's my husky and my favorite picture of her.

35:22

Speaker 2: Thank you, Jack. See

35:24

Speaker 7: it. All right. So hi, my name is Ann. Beaman. It's my first Django Con having a great time here. And gonna talk about walking. So in spring 2020 we had pandemic and I felt really cooped up being inside all the time. I didn't want to just drive around my neighborhood and look at stuff and waste gas. So I wanted to go exercise, but I am not motivated to just get up and do a walk every morning. Boo, that's boring. So I need to go somewhere. I need a destination and mine, but I wasn't able to do that when a lot of businesses were closed to the public, so I wasn't be able I wasn't going to be able to do bio breaks. So I gamified it and I decided to challenge myself to walk every single block of my one square mile borough. How did I do that?

36:09

Speaker 7: Data collection. I determined what my boundary was for my neighborhood looking on Google Maps and my local government website. I downloaded the free version of the Strava app to record my apps or to record my walks, and then I maintained consistent naming conventions. to say lands down one, lands down two, blah, blah, blah, blah, blah. So I would be able to see that later. I'm a data engineer by trade, as you can see. So the data engineering aspect, I found out you can bulk download your Strava data from their website. It is really scary to go on Strava's website and click download or delete your account to get there But I did it and you get this nice set of data and I was able to look up the unique IDs for each activity based upon my naming convention I had set.

36:57

Speaker 7: and find the corresponding GPX files, which are location data, and load those into an open source program called Derive that my colleague Ryan taught me about. And that builds a heat map. So the data analysis portion is I would intermittently update and review this heat map with my updated data. and formed a plan around what my next sections were to tackle. As you can see, my first map was really easy, simple, just going around in loops or whatever. And the final is just doing little squiggles and filling out itty bitty little things. And I reviewed the stats to feel super accomplished. Look at all the stuff I've done. I've walked a bunch of miles and I've, you know, got to know my neighborhood. That's the final heat map.

37:44

Speaker 7: So fast forward to this fall. I moved close to Wissahickin Valley Park, a beautiful place in Philadelphia, Pennsylvania And I joined Friends of the Wissahickan, which is a nonprofit group that does cleaning and maintenance of this park because Philly doesn't have enough time or resources to dedicate to this very large park. And they have an all trails challenge, which is uh the goal is to traverse all 50 plus miles of unique trail within the park and raise money while doing it. So same approach. Data collection, established a boundary, use my Strava app. I now have a Garmin Watch which downloads Fit files that I have to then convert to GPX files. And

38:29

Speaker 7: I sync that data to Strava and again maintain a consistent naming convention of ATC, number, whatever. Data engineering again, very similar. I had to do a little bit more fiddling around and I wanted to use a different program this time. to see um with mymaps. google. com where you can upload gps files and essentially create your own heat map. Uh to do that, I had to merge all my GPX files files manually. These basically look like XML files where each section is different just iterative location data points. And Uh data analysis. So the the map, the GPX into Google Maps is what you see here.

39:16

Speaker 7: My partner is also doing this challenge with me, so we're doing some walks together, some walks separately, and we compare notes He's doing some cool stuff. He's got a paid version of Tableau, so he gets to use Python and he's having a lot of fun with it. I wanted to be frugal and see what I could do for free. Here's my completed map so far. Everything in red is what I've done. I had to break it up in the northwest and southeast, and when I get back from this conference, I have one week to finish off the little remaining parts So my takeaways here are challenge yourself, explore the outdoors, whether it's here at the conference or at your home or somewhere else. and avoid paying for subscriptions by re-engineering the features you need for way too much time and effort. And if you have any, if you're uh

40:02

Speaker 7: willing and able, uh please donate to this cause And if you're interested in knowing more about what I did, I'm happy to show you details in the hallway. Thank you All right, yeah, documentation and sanity. I'm Doug Harris. I work for Truth Initiative. We are a nonprofit focused on tobacco cessation and education. And prevention. But I've been doing Django stuff for over 15 years now, and uh I'm gonna talk about a little problem I've encountered in the past where You do something like you forget the exact syntax for Django query filters. So you go to Google and you type Django query filters and you click on the link because Django's got great documentation. But then you notice it's 4. 2. Now you work for a maybe a cautious organization that wants to stay on the latest

40:51

Speaker 7: long-term support version like I do. So we're using 3. 2. And it's probably the same syntax, but you've been doing this long enough and you've probably been bit. Raise your hand if you've ever been bit because you try to implement a feature and you realize no it's in a newer version than you're actually using. So we got these nice little links at the bottom, and you click to see the 3. 2 version. Then you have the same question in Postgres or Python or Wagtail or what have you. So what I came up with or what I adapted from other people's previous work was what I call the unified documentation switcher, unified doc switcher. It's a browser extension available for Firefox and Chrome Remember is the version you like.

41:37

Speaker 7: Python, Django, Postgres, Celery, sort of. I realized recently that Celery changed the domain for its documentation. Fix coming soon. Wagtail works for me because it's in my local version, not on the released version, but again, I'll release that very soon. Let's do a very quick demo. So here's the uh here's the problem case. I search for Django templates and I click, and we are on the 4.

42:09

Speaker 8: 2 version, so I go over here to the 3. 2 version. good uh different tab I want to find about making queries in Django and again I'm on 4. 2 I wish it would remember where

42:21

Speaker 7: I am. Um

42:22

Speaker 8: and if anybody knows anybody at read the

42:25

Speaker 7: docs, look that'd be nice feature.

42:28

Speaker 8: So here is my non-incognito browser where I have this going. And I click this, I get this little banner here at the top that says you've redirected to 3. 2. And I search for templates and the same story. And if I want to click away because there's something I want to click on, it does that nicely. Same story with Wagtail. Click here and I'm on the oldish but still long-term support, 2. 16. 3. And so it works really well. Got a nice little UI here where I can see what my current versions are for all the

43:05

Speaker 7: documentation sets that I care about. Um if I need to I can reset. Um let's see No issues. New features cause problems. If you search for Django release notes and you want to see the release notes for 4. 2, guess what? Those didn't exist in the release in the Django 3. 2 documentation. No issue, I haven't come up with a nice problem, but once you realize that that's what's going on, it's pretty easy to work around. Domain changes cause problem, as I mentioned, salary changes. Not enough platforms. I listed five platforms there. Those are ones that I use a lot. I'm sure there are others that would be useful.

43:51

Speaker 7: You know, so many of uh Python prod uh projects are built on read the docs. Um it'd be really nice if It was kind of a standard feature on any read the doc site that said, hey, cookie this version for me. I've thought about like expanding this so it just recognizes read the doc site, and I may do that. That's it. There's a QR code that takes you to the GitHub page. There are links on the README for both the Firefox and Chrome extensions. That's my information. That's my talk. Thank you.

44:24

Speaker 2: Thank you very much.

Questions this talk answers

What does deploying a Django site typically require configuring?

You generally need to configure static files, the database, a health-check endpoint, a production web server, production settings such as the secret key and allowed hosts, security settings, and storage such as S3.

Discussed at 1:53

What does Django Production add to make deploying a Django site easier?

Django Production packages common production defaults and tools, including WhiteNoise for static files, environment-based secrets with django-environ, Gunicorn support, a health-check endpoint, and production security settings controlled by an environment variable.

Discussed at 2:39

What is a coding dojo and how does it work?

A coding dojo is a group programming meeting focused on practicing good programming habits and having fun. A pilot and co-pilot work at the keyboard in timed intervals; the audience can contribute when the tests pass, while the pair must solve failing tests themselves.

Discussed at 5:48

What principles do coding dojos use to improve programming skills?

They emphasize taking baby steps and solving only the smallest current problem, writing tests first, explaining ideas clearly, and developing readable, well-documented code through repetition.

Discussed at 8:03

How can a solo developer build a church livestream and presentation system without writing a video mixer?

The speaker uses Snowmix and OBS for video, audio, and compositing, while writing a Django app for slide management. Slides are rendered with HTML and CSS in an OBS browser source, with a presenter interface that can also be controlled from a phone.

Discussed at 12:55

What conferences and community events can Python developers attend in Brazil?

Brazil has regional Python conferences such as Python Nordeste and Python Brazil, as well as AfroPython, which brings Black developers together and supports inclusion. The speaker also highlights upcoming conference locations including Natal and Rio.

Discussed at 15:12

What is it like to serve on Django’s Code of Conduct Working Group?

It is a low-volume but high-impact volunteer role: the speaker’s group handled roughly one or two issues per year over six and a half years. The work also offers a chance to help refresh the Code of Conduct and shape the Django Software Foundation’s working-group structure.

Discussed at 22:24

How can I generate a Python client library for a Django REST Framework API?

Expose the API’s OpenAPI schema through Django REST Framework, download the generated YAML, and import it into Swagger Hub. Swagger Hub can then generate a Python client library so callers use typed client methods instead of manually building HTTP requests.

Discussed at 27:43

What is a good way to find a productive work environment with ADHD?

Experiment rather than assuming a quiet, distraction-free space is best. For the speaker, working in a busy coffee shop while wearing noise-canceling headphones produced the best concentration.

Discussed at 31:47

How can I return to unfinished programming projects later?

Keep notes describing where the project began, what research you completed, where you stopped, where the relevant documents are, and how to recreate the environment. Keeping that list accessible makes it easier to resume projects when your interest or energy returns.

Discussed at 33:19

How can I map every street or trail I have walked?

Record walks with Strava or a Garmin watch, use consistent activity names, export the location files, convert them to GPX when necessary, and load them into mapping or heat-map tools such as Derive or Google My Maps.

Discussed at 35:29

What is the Unified Documentation Switcher?

It is a Firefox and Chrome extension that redirects documentation pages to the software version you use, such as Django 3.2 instead of Django 4.2. It supports several Python ecosystem projects and provides a UI for managing the configured versions.

Discussed at 40:51

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 Kojo Idrissa

More videos from DjangoCon US