Lightning Talks (Monday) with Andrew Mshar

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

Lightning Talks (Monday) with Andrew Mshar
0:38:59
Published December 6, 2024
58 views

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

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 covered practical tools, proposals, community projects, security, accessibility, and ergonomics in the Python and Django ecosystem. Calvin Hendrix Parker demonstrated Scaff, an opinionated Django project generator that initializes Git, configures local Kubernetes services, and keeps development, sandbox, and production deployments consistent. Paul Everitt presented PEP 750, which would add Python template strings that can be interpreted as HTML, CSS, SQL, Markdown, or other domain-specific languages, while Tim Allen introduced Pyromania for simpler virtual-environment management. Other speakers encouraged developers to inspect and responsibly report vulnerabilities in the open-source packages they use, promoted Django stickers and the Django Brew podcast, explained that QWERTY became dominant through a Remington business decision rather than ergonomics, and showed how stenography keyboards enable highly accurate real-time captioning.

Key takeaways

  • Scaff creates a ready-to-commit Django project and deploys a consistent stack of Django, PostgreSQL, Redis, MailHog, and related services through local Kubernetes.
  • PEP 750 proposes Python template strings that tooling and functions could transform into HTML, CSS, SQL, Markdown, or other domain-specific languages.
  • Pyromania provides a command-line workflow for creating, listing, activating, navigating, and removing Python virtual environments while keeping pip and wheel updated.
  • Open-source users can improve security by selecting less-maintained dependencies, reading their code, using tools such as Bandit and CodeQL, and reporting vulnerabilities responsibly.
  • QWERTY was adopted through a typewriter-manufacturer business decision, and alternative layouts and ergonomic split keyboards may reduce repetitive strain.
  • Stenographers use chorded keyboards and customized shorthand to caption speech in real time, and speakers can help by sharing slides and maintaining a reasonable pace.

Summarised automatically from the transcript.

Transcript

6,478 words · auto-generated Show

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

0:19

Speaker 1: Hello everyone, my name is Calvin Hendrix Parker and I'm co-founder and CTO of Six Feet Up. We solve hard application problems and we love using Django to do it. I get really excited though about the developer experience. My dream world would be that you get a new laptop and within an hour you're committing code into some repository that can now be code reviewed and pushed into production right away because that's the best way to go. But it it's hard, like right? It's hard to get all the stars aligned and all your things working just right so you can develop on your local machine. So that's why we put together some opinions. Uh we took Well originally was the Django Cookie Cutter. Who's used Django Cookie Cutter in the room? Awesome. Well if you're familiar with Django Cookie Cutter, this may look familiar and even more opinionated.

1:05

Speaker 1: Uh so let me kick it off because I want to do it live on the stage. I'm in a folder where there's nothing on my file system. I'll do it for real so you can see it. Nothing in this directory. And I'm going to use the scaff command. That was the previous repository that I was showing the README for up there on the screen. And we're going to run a speedrun 03 demo. And this is going to actually download our own kind of custom bait Scaff container to your machine, as long as you have Docker desktop or some compatible thing like Orb Stack installed, you'll be good to go to get this to go. And so this should look familiar to the uh cookie cutter users in the room. answer all the kind of kind of questions you can have a next js front end or not you can select kind of mail what are you running sentry or celery or have debugs on

1:51

Speaker 1: But we take care of even more of the problem. You'll see here we've got a repo URL already set up for us. We're gonna go ahead and init the repo, add all the files to it, get you that initial commit, so you're right at the point where you can just like push. your current state of the work. How many times have you started a project and forgot to do a git init and get add and you're like, oh crud, I forgot what I just did. But we do that for you. No problem. So we go into speed run. If you do gitstat, you'll see we are in a git repository. Everything's checked in and ready to go. And we've standardized on a couple other tools. We have opinions around, like tilt. So what I'm actually going to do is launch a Kubernetes cluster on my local machine and deploy Django, Postgres, Redis

2:37

Speaker 1: , Mailhog. And numerous other uh tools right into that uh thing ready to go. So let's go here to tilt. And you can see that once this is up and running which I could start running. I I just deployed Django live into a Kubernetes cluster running on my laptop and before I could even get to show you that it was done it was done. That's how fast you can get started. And if we actually go right here, we can see we're in a full Django debug mode. We're ready to do debugging on our local machine. I did I gave a talk at PyOhio about actually doing remote debugging into this setup. Using PyCharm or VS Code. I demoed it in PyCharm. It works really great. So I'll show you that too. We open up Speedrun. You'll see here it deployed out a set of Kubernetes manifests. And not only for my local development instance, this is actually to aid you into doing your sandbox releases, your production releases.

3:27

Speaker 1: So everything from front to back should look the same. I'm deploying into Kubernetes whether I'm doing my remote debugging or locally debugging or I'm doing it onto a sandbox instance someplace else. So that all said, uh If you come see me out at the booth out there and you build your little car like this, your little race car because you're going so dang fast because you're using Scaff to build your Django projects, uh you'll be in the running to win a board game that we're giving away each day. And if you do the scaff challenge yourself, there's actually a scalf command that you'll run like I just ran, but you add dash dash challenge, it'll time you. And whoever's on the top of that leaderboard will get that fancy keyboard that's also sitting out there at the uh desk. And I'd love to see some awesome runs up there. I know there's one run up on the the uh the leaderboard right now.

4:15

Speaker 1: Here we go. So Anthony is the one to beat right now. Where's Anthony at? I think I saw him walking around here. Maybe he's not in here right now. But he's the one to beat right now. He will be uh coming back after you once you've uh topped his time, I'm sure. So thank you very much and let's all go out and have an awesome developer experience.

4:36

Speaker 2: I have spent 17 years following Calvin on stage. Um, can you hear me okay? Can you see me okay? Yeah. All right. Yeah, I know, I know. Podiums are not my friend. In in honor of Chris May giving a wonderful talk about the web. I got a little cocky and I changed the title at the last second to putting the web back in the web with PEP 750. Hi, I'm Paul. I'm your friendly neighborhood pie charm advocate. Come and see me. This is going to be the second riskiest demo I've ever given at the end. Come see me during a break. I'll tell you the story. I'll give you a teaser. It involves Linux, venture capitalists, and condoms.

5:22

Speaker 2: All right. For those that might know my background, it's very ironic that I'm speaking in a Django conference. Tee hee hee, the reason why is revealed on this screenshot. Python and the web go back a long way. Python has long had a love story. This is the year 2000, and we were talking about templating in the web. And the workflow back then is kind of the center to what I'm trying to pitch you on here. The workflow back then was there are designers, there are developers. The developers want to keep the designers as far away as possible. So we're going to give them this pretend thing called a template, and they can't possibly mess us up. And in my opinion, that remains Python's templating story

6:10

Speaker 2: circa 2006 and Ford. Except somewhere along the line, Python decided, hey, React! We're going to get out of the business of doing an HTML UI. Let React do that. Why? Well, React didn't say designers, developers, React said developers are writing HTML, so we're gonna make them as productive as possible. We're gonna make them feel like they're doing development. Raise your hand if you've done JSX or TSX or TypeScript All right. I'm just going to hypothetically say all of you love that because it reinforces my point. We have great tooling in front-end stuff, and that's one of the reasons we outsource the world to them, but It is not a good idea.

6:57

Speaker 2: As Chris May described, there is such a thing as JavaScript fatigue. These things are good, not good for websites. And I loved Chris talking about Alex Russell, followed by Alex Russell, followed by a little bit more Alex Russell, because he's really making a good case for this. And Python needs to worry about this. If you outsource the front end of JavaScript, the business people are going to be like, huh, can we do that JavaScript thing on the back end too? Probably a problem. But fortunately, HTMX is here as a counter-revolution because HTML is great. We should be doing more web platform stuff. What if Python re-embraced it? And that is Pep 750. So this is a pep with me, Jim Baker from Jython Fame, and Guido.

7:43

Speaker 2: And the idea is to kind of replicate a little bit of what JavaScript has with tag template strings. but take a step from F strings forward into a richer universe. So I'll give you real quick the what, why, the how, and the status on this. The what is to make a change to Python to let it have a new kind of thing called a template string, which can be pumped into a function. that turns it into a domain-specific language like HTML or CSS or Markdown or SQL or whatever. The who behind it, we have those three folks and then we've got some others Lissandros is doing the implementation and Dave and Kudai and other people. It came out in August I was on vacation in France.

8:29

Speaker 2: And it got the most traction of any pep announcement in a long time. People had opinions. So here is a quick uh quick demo or a quick screenshot of the minimum on this. The idea, oh, I'm chopped off at the bottom. I am not touching it. So at the bottom we use this. Apologies. You'll see it in a second. You put a greet template function that has passed a template and can pick apart the arguments and do some transformations. So people can just write strings and you can give them a business language to go with their string. For example, a demo. This is the craziest thing I've done in a while.

9:16

Speaker 2: I hope the font's okay. So the idea here is I'm using an HTML template language. My tooling knows it's HTML because I told them it was HTML. We could all standardize on these things. How am I doing?

9:32

Speaker 1: 30 seconds.

9:34

Speaker 2: So more briefly, I told it it was HTML, so this string can do things like title class, it knows it's HTML. But like an String, I can do operations inside the brackets, because it's just Python. This is giving me a squiggly because of here I have tooling and I can rename this to view undername and fix it, but then it's squiggling me because Type checking. I said this was a string, not an int, and so if I say world, I make that error go away. We have a vision that's too long to fit in a lightning talk.

10:23

Speaker 2: I've been doing web for a long time. My first website, uh Navy. mil, started in 1992. Love Python, love the web. It's time for us to put new life into Python's web story.

10:41

Speaker 3: No, okay. Hi, I'm Tim. I'm principal engineer at Warden Research Data Services at the Wharton School. And uh, you know, Wharton's been supporting this community for about 10 years now in different ways. We hosted DjangoCon in 2016 in Philadelphia. I'm wearing the shirt. And uh we're sponsoring this year. And about 10 years ago, I was just learning Python And those were the days I was told to use Virtual Env, and there was this handy tool around Virtual Env called Virtual Env Wrapper, which you will see pictured here, which is still on PyPI. And uh a little bit after that, PEP 405 gave us this wonderful um set of virtual environment tools within Python itself. So it was no longer a third-party application that was painful to install. It came bundled with Python itself. And to be completely confusing, instead of being called virtual

11:27

Speaker 3: env, it was called vmv. So there are now two competing standards on which to use, but vmv has been bundled with Python since Python 3. 3, which you can see right here. It was added in version 3. 3. And I've taught, you know, over a hundred newcomers how to write their first line of code in Python. And this has always been a major stumbling block for the newcomers, is how to use virtual environments. Not to mention the user interface on creating virtual environments is not the greatest. You know, you have to do Python-M VM VM and then dot space vm. bin. activate or scripts. activate on Windows. And you're kind of asking the users to take a leap of faith. And I create hundreds of virtual environments. So I have no idea where they all are on my system after a while.

12:15

Speaker 3: It becomes a total mess, and I stumble across them years later. So this annoyed me. But what also annoyed me was there was no package called Pyromania. I could not pip install Pyromania, and I couldn't believe after all these years of the Python package index existing that nobody had snagged Pyromania. So I made my two dreams come together and I created a package called Pyromania, where you get to type pyro on a regular basis to manage your VMs. So what does it do? Pyromania helps make VN management straightforward, inspired by Virgil LanvWrapper, the muscle memory I had when I first started Python. And by default, it will create a VM called VM in the current directory, which is uh you know somewhat of a convention that has come about. It will also

13:00

Speaker 3: instantly upgrade pip and wheel to the latest versions. so that you don't get that message about upgrading pip every time or try to pip install something that requires wheel and then tells you about the error that it could not compile. So it automatically takes care of both of those things. It also includes handy options for switching into the deep-rooted site packages folder very easily. And it creates pre and post-activation hooks that you can modify, including one where when you activate a virtual environment from anywhere on your system, It will put you into the working directory you created it in. So these are things that I do all the time. And how did that look in practice? I'm glad you asked. So I'm gonna go ahead here and just type Pyro. And look what it does. It shows me a list of all my existing.

13:47

Speaker 3: virtual ends that I can do and there's a handy command where I can just type pyro help and it will show you all the different commands I can do. But if I want to create a new one, I can just type pyro DjangoCon And it will say, hey, it doesn't exist. Do you want to create it? Yes. And it goes ahead and creates it and it upgrades to the latest pip and wheel. And it sets the prompt to be Django Con instead of VM. So you can actually see which VM you're in. You'll see also right now in my current working directory, it's users T Allen, but if I go back to my list, I can go over to my rough directory. Or I can go over to my Wagtail Gridder directory. And it will automatically move me over to that directory, no problem. And if I want to see the list, the full list is right there as well the paths on where they live.

14:33

Speaker 3: And now I can just run my Pi test and I'll be in Wagtail Gritter and hopefully this test suite is still actually passing. So you can see I can easily maneuver around all the different folders, I can easily create VMs, I can easily delete gre VMs. And the help command is always there. So that's all it does. It can handle multiple versions of Python by passing it command line options so you can install any version you have on your system at any time. And while this may be usurped by tools like UV at some point, for now it still works for me and saves me a bunch of time. So that's all I wanted to share. Thank you very much. Feel free to check it out. It's on PyPI as Pyromania.

15:12

Speaker 4: Um I don't have slides because I want to show an example of the power of word of mouth. I want to tell a story, a story that I learned while preparing for the Black Python Doves Leadership Summit. This is a story that has been told throughout many childhoods across Western Africa. So to my friends who are from Ghana and parts of Western Africa, if I messed it up, it's how I heard it. So I'm sorry. I'm gonna tell you a story about a character known as Anansi. So Anansi is known as a trickster and is often finding himself in more trouble than is usually worth. But I think one time he did something truly amazing. He went to the sky god and he asked the sky god, I want all the knowledge in the universe.

16:01

Speaker 4: And the sky god said, What are you crazy? I'm not gonna do that for you. I'm not gonna give you that. But if you really want it, I need you to return to me the python, the tiger, and the wasp. Now, we're not gonna talk about those other animals because they're not important and this is Django Con. We're gonna talk about the Python. So Ananse goes to the Python and is trying to think like how am I going to capture this Python and send him back to the Sky God? And then he comes up with an idea. So he he goes to the Python and he goes, hey Python. I'm having an argument with my wife. She says that you're not the longest animal on the planet. And I said, surely there's not even a tree branch that could measure to the length of the python

16:50

Speaker 4: And the Python being arrogant was like, you're right, I am the tallest. And in fact, I see you brought this tree branch, so I will prove it to you. Well Ananse was like, Well go right ahead. He lays the tree branch down on the ground. The python tries to line up next to it, and sure enough he stretches out as far as he can, but his tail curls up at the end, just falling short of the tree branch. So Anonse goes, well, I don't know. It seems like you're not as big as you think you are. And the Python goes, well, no, I am. Let me try again. And tries again and the tail curls up again. And Anonse goes, I think I see what's happening. Let me help you. Place your tail down at the end, and I'll tie it to the branch

17:36

Speaker 4: so that you can really stretch out and show how long you are. So the agrees, puts his tail up against the branch, Ananse wraps his tail with his silk. And then proceeds to continue wrapping up the python around the branch, picks him up and carries him to the sky god, and says, there I figured it out. Now you might be wondering why I'm telling you this story. Well, there's a simple moral to it. If you want to unlock all of the knowledge in the universe, all it requires is a little bit of trickery. Some knowledge of Python and knowing how to tell your logs.

18:22

Speaker 4: And if you want to know how we're spreading the word of mouth about Python to black communities, come visit and say hello and over at the Black Python Devs booth. We also have jewelry that we brought in from Kenya that was designed by local Kenyan artists. So thank you.

18:42

Speaker 5: Okay, anyway, um I want to um make this for memory. I don't have the text. Um okay Uh my name is Santos. Um this is my first time in Jong Kong. Uh my first time in the US actually. I'm really excited to be here. Um so before I start I want to ask a question. Raise your hand you if you are from Latin America. Okay. I met some of you. Hopefully I make some more of you later. I want to talk to you about security aspect of open source. When we talk about open source, we think of big projects like Linux of Django, uh, with a lot of contributors, like uh reviewing and reading the code. So we think it's more secure because everyone can see the code.

19:30

Speaker 5: So it's more difficult for someone to introduce bugs. But the reality for most open source projects is something like this Um it's usually one person maintaining the project in the free time. And mistakes happen. We also like uh have this like blind to us on projects. We toss blindly on those projects that there are the people that are made and uh they don't make mistakes, but there are humans. Maintenance are humans. They've made mistakes, mistakes happens, uh oversights can happen to anyone. So we need to like uh realize that. And Okay, let me check my text very quick. Um

20:17

Speaker 5: Okay. But anyway, in I mean even in big projects, uh vulnerabilities happen, so small projects is going to happen more often. Um so I have some list of open source projects here, uh KickPython, Django Impersonate, Django Gravatar, and Django Alouth. And what these projects have in common is there are projects that I use for my work and I have found vulnerabilities in all these projects, are reporting vulnerabilities and they have fixed those And um so I want to teach you how you can also help to improve the security of the projects you use And the first step is to look uh for the most common vulnerabilities, especially the ones in Python. So you have some links there that you can look.

21:02

Speaker 5: And the second step is to choose a project. Well, maybe by project. como. That's the thing that everyone uses now, I guess. You can also like a list all the requirements of your project and choose the projects that have like the fewer contributions of the projects that are least active and choose one of those Those are good projects to choose. But you can also like choose a project that you are trying to integrate into your codebase or using like a Tulity from that project. Um and the third step is like a more important one is just read the code. Um It's it's uh with the with the with the knowledge we have about the most common vulnerabilities, it's really like uh we are more than ready to start looking for vulnerabilities in the code base.

21:55

Speaker 5: And And also, like uh it's not the end of that after finding vulnerability. The next step is to responsibly reporting the vulnerability to the maintainer, and then you have there another link uh with the use of information about it. Um but there are also tools. We don't need to do this like by hand. There are like tools like bandit in CodeQL that help us to analyze the code and find some common vulnerabilities. But these tools that I know like uh they're not always enough or accurate I was so we also like that's why's that's why it's important to read the code and honestly it's also like more more fun to read the code. Um let me check there's something else that I did

22:41

Speaker 5: say Okay. Um in conclusion, if we want to make sure to still say like the open source is more secure because we can see the code. Let's make it more secure without actually reading the code of the things of the packages that we use. Yeah, so that is the QR code for this talk if you want to check the links. And yeah, I guess that's it. Thank you.

23:21

Speaker 6: Okay, uh hi everyone. Um my name is Sangita and this is my second Giant Con ever, so nice to see everyone and I'm really enjoying it. Um yeah, you can Sure. I'm gonna say no. Um so yeah, uh today I'm gonna talk about Django stickers. This is a project that my friend Adam and I started together, and this is really our offering to the Django community. We both love Django and Let me take a breath. Kind of nervous. We both love Django and this is just our way of showing our appreciation to Django. So this was us last year at DjangoCon giving out our first edition of sticker packs. And these are the sticker

24:07

Speaker 6: packs that we created. A little bit about us. We both love using Django. We use Django for both work and side projects. And you might know Adam from his many side projects, Django Unicorn and a bunch of other ones. And our goal is really simple, just to spread more joy among the Jango community. Okay. So this year we are back with more sticker packs and more stickers. We wanted to make them even more fun and exciting and bold. And this is a little behind the scenes preview of the making of one of these stickers. So it's really an iterative process. It's much like building software, I think. You know, sometimes I think I'm done with a sticker and then I realize the hair isn't crazy enough

24:55

Speaker 6: or the hair is a little bit too crazy. So it's a really fun process for me and I hope that they are fun for you all as well. Okay, so we have uh some plans of making these sticker packs, which they look like these right now, um available for purchase on DjangoStickers. com and also donating some of those proceeds to the DSF. So if you think you want to support that, feel free to join our mailing list on DjangoStickers. com. Okay And we just want to give a huge shout out to Django London and Django Denmark for already supporting Django stickers. These ponies are already traveling across the world to these countries. So they're going to be available at some of the Django UK meetups and as well as the Django

25:44

Speaker 6: Copenhagen conference next month. So thank you again to these groups. We really appreciate it. Okay, so another shameless plug. Adam and I also have a podcast called the Django Brew Podcast, and I'm gonna be talking about my experience in this lightning talk in one of those episodes. So we started the podcast last year after leaving DjangoCon and feeling really inspired and motivated. So we decided to combine two things that we love, coffee and Django, because why not? Um so in the podcast we talk about Django, we talk a lot about coffee and my love of Caffey Bostello. Um and We usually have a bunch of bloopers at the end of every episode. So you can check it out if you want. We think it's fun and for us it's really a great outlet to continue learning about Django and being active in the Django community.

26:36

Speaker 6: So Visit DjangoBrew. com or you can find us wherever you get your podcasts. Okay, and that's it. These are all of the QR codes you can find us. And You can connect with us on Mastodon if you want. So yeah, we love that. And I'll be sitting over there if you want to pick up a free sticker pack on your way out. We do have limited quantities, so May the odds be ever in your favor. So thank you all. Thank you very much.

27:09

Speaker 7: Hello folks, my name is Megan Boss. Uh fun fact, Megan is an Irish name. It means I burn in the shade. So I uh I'm going to talk to you today about how we got stuck with the QWERTY keyboard layout because we really did. A little bit about me. I am a member of the Wagtail Core team. I am also the community manager. I write a uh newsletter called This Week in Wagtail. If you want to learn more about Wagtail and just get some weird trivia every once in a while, definitely sign up. Wagtail. org slash newsletter. And you can also find me on Fostadon these days. I've pretty much marched out of X. Anyway, um another thing about me, I the 2024 is the year that repetitive stress injury came for me.

27:58

Speaker 7: Yes It was not fun, y'all. Um, and if you have not had those joys yet, uh, you should be prepared for the possibility I learned so much about keyboards and keyboard layouts that I had to share just a little bit with you, especially when I found out how QWERTY came to be. So first thing, QWERTY is not ergonomic at all. There's this project called the Carpal X project that has looked at um compared a number of different layouts on keyboards. They've also like developed the most optimized keyboard, which is this weird one all the way to the right, like QG. MLWB, and they've also figured out the worst one possible as well. Their website is a treasure trove of keyboard nerdiness.

28:45

Speaker 7: You should check it out. But you can see that When you compare the stroke path, the bass path, like basically the amount of ways that your fingers have to travel across the keyboard QWERTY is pretty awful compared to a lot of the other layouts that are available out there. So how did we wind up with QWERTY? Well the kind of um typical legend is that it came up as a result of like the way the typewriter uh like pieces would like to avoid hitting each other or the way the shift comes up. That's actually not true. So there was actually this journalist, Jimmy Stamp, at the Smithsonian Magazine, dug into the history and found out that that is an apocryphal story.

29:32

Speaker 7: It was actually a business it was a business decision. uh to use QWERTI versus this other layout that was originally chosen for the key for the typewriters. And you know who we have to thank for QWERTY? A gun company. Remington, it was responsible for manufacturing for most of the early typewriters, and somebody somewhere at Remington decided that they liked QuERTY better than the other one that they were going to use ahead of time. And so they actually Jimmy dug into this and found like, you know, some changes in the patents and when QERTY was patented and things like that. And that is how we wound up with QWERTY. It was a product decision, y'all.

30:17

Speaker 7: There was no research or science that went into it at all. So um about the outcome for myself. Uh so I have uh since Switch to a keyboard from ZSA called the Voyager. It has saved my shoulders like crazy. I even use it. The one thing I love about it is that I can take it on the train and I can take it wherever I want to go. A lot of these things are just not all that portable. And I'm just, and it also comes in pride colors. I just absolutely adore this keyboard. And it is so worth the amount of money I paid for it, which was not an insignificant amount. But I highly uh I also will be transitioning to the Colback

31:04

Speaker 7: keyboard layout uh over time. And there is actually a transitional um opportunity to transition called tarmac So you can switch from QWERTE to Colmac pretty easily over a period about two months. So I will share the link to that transition as well. So that's that's I'm I I'm at the point where I'm just learning the thumb keys. Like I sent so many bad messages, slack messages unintentionally with those things. It's crazy. My coworkers probably think I'm nuts All right, so here's a list of resources and where to find the slides. Please check out all this stuff. Uh even if you don't, even if you think your fingers are made of tough line.

31:49

Speaker 7: Have this just in case you never ever know when you're gonna need it.

31:59

Speaker 8: I guess they don't want me to move the microphone even though I'm really short. And it's kind of cool that I get to uh follow that talk about keyboards because one she did not mention is the stenographer's keyboard. My name is Norma. That's my contact information. Who wants to hear about captioning? Yeah. So these slides are a little dusty. I I took them out of a the last time I used them in a talk was uh at a venue. We're in Rotterdam on a boat, so you all have to kind of work on uh, you know, upping your game on the venues after that. It's like uh we'll never be able to do that. But there were lots of um Boat puns and sea shanties, which I'll try to, you know, hopefully they don't show up too much in this thing.

32:46

Speaker 8: But the captioning is done here by me and my company. Amanda's sitting over there. working away at her um on her keyboard which is a stenographer's keyboard I'll talk a little bit more about that thanks Amanda she 's also the one who volunt me to do this talk so thanks also for that Amanda Um, I've been doing this for a really, really long time. I've got the word antique up there, but I don't like to think of myself as an antique, but when I first started This is what I was writing on. I was writing on a much earlier version of the stenography machines that we use, and we were actually writing on paper, then we would translate them later and type them out. Things are much better now. Thank you developers.

33:32

Speaker 8: What we're doing now, we're still writing the same code. It looks exactly like this, but uh the computer is translating it, matching our uh outs the strokes that we output. This is what the machine looks like nowadays. I don't know if I have a picture of the old one. I don't think I do. But here it is. And this is what Amanda's working on now. This is what the actual keyboard looks like Doesn't look anything like a QWERDI keyboard and it doesn't work anything like a QWERDI keyboard. It is a chorded keyboard. We stroke chords, much more like playing a piano. than typing. So generally we write one word or one syllable at one time. We can also program it to do we call them brief forms, but they're sort of like um

34:21

Speaker 8: Chords that will give us a whole phrase if we wish, a phrase that comes up often, or something like that Here's an example, a really simple example of a real word that you can actually see how it looks on our keyboard. You can see the S-T-A-R-T looks like a real word. How and however, because we have very few keys on our keyboard, we have to press multiple keys and read them in our brains, and and now the computer reads them as Other letters. So the T and the K on the left, if we press it together, we still see T and K on the computer, but our brain and our computer reads it as a D. The vowels are in the middle, so we use our thumbs for those.

35:08

Speaker 8: And then the final RB stands for the ush sound. So that's how we get the word, for example, the word dash. So here's an example. This is my late great Mr. Jeffries. This is Mr. Jeffries. That's how it's written in Steno. You can see it on the keyboard and there's the translation on the side. My adorable Yorkie. Now the thing is this is my Steno. It may not look exactly like Amanda's Steno. because we we all learn a base language, but we modify it over time as we're learning and as we're practicing to the way our individual brains work. Not exactly scalable, a word that you guys all love to use.

35:56

Speaker 8: My new life is I am a grandma, but I'm way too young and cool to be called grandma, so my grandma name is Noma. This is Davey who's waiting for me to come home after this epic work trip that I'm doing at the moment. He's my boy. This is an old, this is I I wrote yesterday I wrote 51 single space pages with 41,000 words, blah blah and and uh at 99. 9. 4 % accuracy. This is not my actual yesterday, although we we flew from Portland, Oregon, where we just captioned WordCamp US. I know I can just say that my last speaker had a really strong accent and he spoke at around 300 words per minute for the whole talk.

36:41

Speaker 8: So I was kind of dead by the end of it. How are we so accurate? Because we specialize in my company. We we do tech conferences, we do medical school, veterinary school, dental school, et cetera, like that. um social justice events. We we do a lot of we we caption for a lot of social justice publishers and talks and speakers and that's That comprises our life. I don't know how I'm doing with time, but I'm gonna keep on going. How can you, as a speaker Uh help the captioner do a great job. You can share your slides when the organizers say please share your slides. Please share your slides We never know, for example, uh we're we're, you know, we do tech all the time, right?

37:28

Speaker 8: We're in and out of tech, but all of a sudden the tech um talk is really about yoga And Sanskrit and whatever. So please help us in that regard. And try to slow down. I'm not very good at this. Poor Amanda. I don't even know how she's managing with me but um i'm i'm my own worst enemy but for you all please speak at a reasonable pace because the thing is if uh we captioners who are trained and certified at 240 to 270 words per minute. If we can't get it, you're losing your audience, most likely, right? If you have any questions, please approach us. We love talking about what we do. We are keyboard nerds as well.

38:13

Speaker 8: We love our keyboard and some of my team have just amazing keyboard collections. I think we we we have the coolest job nobody knows exists. So that's the end of my time.

Questions this talk answers

What does Scaff do when creating a new Django project?

Scaff downloads a containerized project template, asks about optional components, initializes Git, creates the first commit, and leaves the project ready to push. It also sets up a local Kubernetes environment with Django, PostgreSQL, Redis, MailHog, and other tools.

Discussed at 1:05

Can the same Scaff setup be used for local development and deployments?

Yes. Scaff generates Kubernetes manifests intended for local development, remote debugging, sandbox releases, and production, so the environments can follow the same structure.

Discussed at 2:37

What is Python PEP 750?

PEP 750 proposes a new Python template-string type that can be passed to a function and transformed into a domain-specific language such as HTML, CSS, Markdown, or SQL.

Discussed at 7:43

How do PEP 750 template strings work?

A template function can inspect the literal parts and interpolated values, while Python expressions remain usable inside the template. Tooling can then treat the result as a specific language, such as HTML, and provide related editing and type-checking support.

Discussed at 8:43

What is Pyromania for Python virtual environments?

Pyromania is a command-line package for managing virtual environments, inspired by virtualenvwrapper. It creates environments, upgrades pip and wheel, shows existing environments, switches between them, and can return you to each environment’s working directory.

Discussed at 12:15

How do you use Pyromania to create and switch virtual environments?

Running `pyro` lists environments, while `pyro <name>` creates a missing environment or activates an existing one. It can also move you to the associated project directory and supports selecting different installed Python versions.

Discussed at 13:47

How can developers find security vulnerabilities in the open-source Python packages they use?

Start by learning the common Python vulnerabilities, choose a dependency—especially a less-active or lightly maintained one—and read its source code. Tools such as Bandit and CodeQL can help, but they do not replace manual review.

Discussed at 21:02

What should you do after finding a vulnerability in an open-source project?

Report it responsibly to the project maintainer using the project’s security-reporting process rather than simply making the issue public.

Discussed at 21:55

Where can I get Django stickers?

The Django Stickers project plans to sell sticker packs through DjangoStickers.com and donate some proceeds to the Django Software Foundation. Some stickers are also distributed through Django community groups and meetups, with free limited packs available from the presenters.

Discussed at 24:55

Why is the QWERTY keyboard layout so common?

QWERTY became dominant because of a business decision by Remington, the typewriter manufacturer, rather than because research showed it was ergonomic or efficient. The familiar story that it was chosen primarily to prevent typewriter jams is described as apocryphal.

Discussed at 29:32

What are some alternatives to QWERTY for reducing repetitive strain?

The speaker uses a split ZSA Voyager keyboard and plans to transition to the Colemak layout. The Tarmak program provides a gradual transition from QWERTY to Colemak over about two months.

Discussed at 30:17

How does a stenographer’s keyboard work?

It is a chorded keyboard, so users press combinations of keys—more like playing a piano than typing individual letters. A chord can represent a word or syllable, and customized brief forms can represent frequently used phrases.

Discussed at 33:32

How can speakers help live captioners produce better captions?

Share presentation slides and terminology in advance, and speak at a reasonable pace. Even trained captioners working around 240–270 words per minute can lose information when a speaker talks too quickly.

Discussed at 37:28

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