Lightning Talks Day 3 by Kojo Idrissa
Published October 25, 2019
This video features Adam Fast, Andrew Godwin, Andrew Pinkham, Dr. Russell Keith-Magee, Josh Schneier, Katie McLaughlin, Kojo Idrissa and Simon Willison at DjangoCon US 2017 in Spokane, Washington, USA.
DjangoCon US 2017 - Lightning Talks Day 1 by Various Speakers
00:00 Andrew Godwin
04:14 Simon WIllison
09:16 Katie McLaughlin
13:21 Dr. Russell Keith-Magee
18:00 Andrew Pinkham
20:27 Adam Fast
25:13 Josh Schneier
30:09 Kojo Idrissa
This talk was presented at: https://2017.djangocon.us/talks/
LINKS:
Follow DjangCon US 👇
https://twitter.com/djangocon
Follow DEFNA 👇
https://twitter.com/defnado
https://www.defna.org/
The speakers present a collection of practical and playful Django ideas. Adam Fast demonstrates a YAML-backed Django ORM that loads version-controlled text files into an in-memory SQLite database, while Andrew Pinkham introduces a reusable improved user model built around email authentication, names, forms, admin, and testing. Other speakers explain how to test applications when cloud services fail, outline the history and maintenance needs of django-storages, and encourage treating localization as a community task—including Katie McLaughlin’s emoji translation of Django. The session also includes a firsthand account of making a custom artificial eye, Russell Keith-Magee’s comic history of emoticons and emoji, and Kojo Idrissa’s argument that software teams should train and organize developers more like K-pop groups than rely on lone “rock stars.”
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: One, two, there we go. Right, so this is about something I was thinking up on the plane ride from PyCon Australia to here, which was last week. Um I like content in text files, it's great. You can have things formatted nicely. They can be in Git, you can do pull requests on them, it's all fantastic. But I also like things in CMSs. In particular, I'm a big fan of Wagtail. And so I'm redoing my personal site in Wagtail. And I'm, well, I mostly like it. But there is content I want to have in static files. I have things like lists of national parks and lists of my talks that don't really change. They're append-only. They're more suited to Git. And so I thought, why not have both? How can I combine these two into one site? In particular, I didn't want to have to re-rewrite a custom thing that parsed YAML files for every page loaded in the review.
Speaker 1: was really slow. I wanted to use the ORM in Django because it's great because it's Django. And so I have made a thing called I haven't pronounced this yet on stage. Let's go with YAML , which is an ORM for accessing data in text files. So in particular, it lets you have structures like this where you have files in a tree. under different model names. So here for example I have all my talks from this year in one YAML file. They look a little bit like this, sort of nicely formatted. You can go through. I can do edits on these easily on the plane. And then what it lets you do is use the Django RRM to query them like this. So you can say, oh, I actually just want to talk to these normally, like normal Django models, and do sorting and filtering and even gets and stuff like that. So how does it work? Well it's kind of really simple and awful simultaneously.
Speaker 1: So what you do is it reads the YAML files that you saw previously into uh memory, sort of like normal Django fixtures. It then makes an in-memory SQL like database. It then uses Django's internal migrations code to make tables in that database. It then writes the models into that database and saves them. And then it then routes queries for them using a database router to that database. all on every startup of your s piece of software, because that's a great idea. So in particular a couple of things, um it is just normal YAML. Django's load data, which does fixtures, is very similar. If you look inside load data, it's just kind of reading YAML and JSON and just Does make a model instance, model. save, make another one dot save. That's all this does too. Um obviously the AML, if you don't know this, use safe load, because normal load can do code execution.
Speaker 1: Very bad. I use the schema editor for the database. It's this amazing piece of software written by some guy, I'm sure you all know. But what it lets you do is you can take just the bit that makes tables and say, hey, I want to pass this model. And make a table for it outside of migrations. It's a kind of a simple way of doing it. It's like three lines. So if you're curious, just an interesting thing to look at. And it also uses a thing in Python 3. 4, which is new, which is uh SQLite 's database memory URIs. So SQLite used to have a thing called colon memory colon, which was just, hey, I want an in-memory database and it was thread local and every connection was a brand new one. You couldn't share it very easily. SQLite 's come along since then. It lets you do shared databases like this is shared across all my threads. It has caching and local stuff in it.
Speaker 1: And unfortunately you need URIs to do this. And Python 3. 4 is the first version that supports SQLite URIs. So it's not great, but hey, there you go. And so the result is I have my website redesign almost done. Pages like this are powered entirely off of this. fake YAML-based RM, it's pretty great. You can just go in there and say I want to have all the places grouped by the different section and then ordered by name. It just works and I can edit these in my git repository very easily. If you want to go and download it, it's on GitHub right now. I pushed it up about 10 minutes ago. It has a README, it has some documentation. I don't promise it'll work, but it works for me. Standard disclaimer. And then finally, uh one last plug. Uh I and some other people are helping run a community conference in the North Bay, the Bay Area called North Bay Python.
Speaker 1: If you are curious, please come and talk to me. Or follow us on Twitter or go to the website. We have a CFP going up soon. Thank you very much.
Speaker 2: So I have a mild content warning here. I've tried to make sure there's nothing too horrible in here, but if you are squeamish, there will be artificial eyes in this presentation. in a in large numbers. Um but yeah uh so just over a year ago my wife were involved my wife and I were involved in a pretty nasty car accident. over in Yellowstone Park. And I ended up down one eye, which sucks, you know, but I did get to learn what it takes to get a new one made. So I'm now I you can come and come and see me in the corridor later and see if you can tell which of my eyes Actually you'll know because I'm about to show you. One of my eyes is n is is no longer real. It's an artificial eye. And I'm going to talk about what it takes to make one of them. those because an unexpected highlight of this otherwise pretty awful experience is I got to learn all about iMaking.
Speaker 2: Um so if you need a new iMade, and I have got a very good recommendation, so talk to me. if if i if if you need a lead. Um the first thing you have to do is pick your iMaker and iMakers are called ocularists. Um there are about 300 of them in the United States. It's a very niche profession. Uh it turns out there's not an enormous amount of demand for this But just enough to mind to to keep a professional association going. Um and fascinating, I I I I there this is a family profession. If you want to make eyes, there aren't that many places to learn to do it. You basically have to apprentice with someone. And it turns out that ocularists are almost all related to to each other and they they for they have these uh apprenticeship family relationships. And I think it's a fascinating thing because it's both an art, a craft and medicine all rolled into one. So I talked to four ocularists in the San Francisco Bay Area, which is basically all of them, because why would you miss out on an excuse to meet people who make eyes?
Speaker 2: And one of the things I showed them obviously was was Show me, show me, show me what you got, show me your eyes. So these are some of the eyes that I was shown by various ocularis that I didn't pick. And then I met this guy who had this beautiful Beautiful box of eyes. This is the guy I ended up picking. Um these are the eyes that he showed me. This is his collection of blue eyes. He has a separate box for all of the brown eyes. Um And his name's William Dams. He's been doing this for 45 years. And he is a fifth generation ocularist. His grandfather, his great-grandfather, all the way back to like I think the 18th century in Germany, his family have been been making eyes originally out of glass and um these days out of acrylic plastic and oil paints. And uh his son is apprenticing under him so I got to meet his son who will be a sixth generation ocularist as well.
Speaker 2: So it turns out it's a three-day process essentially. You go in for three consecutive days. Because all of the these things are made custom to fit you. They have to, you know, match up to your other eye because otherwise it's going to look a bit weird. So day one is the mold. I decided to cut the photograph of this because this is the Probably the most distressing part of it all. But essentially this is the same stuff they use for dent taking dental impressions and they sort of squirt it in, get a mold of the the the gap that the artificial eye is going into and um and take that away and use that. to create the eye. Day two is where it gets really fun, because that's the fitting. So he's got a mold, he makes the eye out of acrylic plastic, just the shape, but he needs to figure out where the pupil is going to to go. And so he draws it on with a felt tip pen. This is a
Speaker 2: this this is my actual eye, but at an earlier stage when it was When you were still trying to work out where things going. And then I have a video which if you're if you're screaming, you might want to look away, but I don't think it's too bad. Uh is that animating There we go. Yeah, so he pops it in and uses that to make sure that he's getting it in the right place. Um Then based on that, the exciting day is day three. Day three is the pain Painting. And you'd expect that painting an eye would be done mainly from photographs. But that doesn't work because a photo might not have the exact colours that that are going to match your real eye. So you have to go in and actually sit for the painting. So here he is holding up his this eye that he's been working on, comparing it to my my real eye and making adjustments and just making sure that he gets that painting exactly right.
Speaker 2: And because we expressed great enthusiasm at learning more, he took us back into his laboratory and showed us where the magic happens. This is straight, it's just regular oil paints on plastic. That right there is the eye mold. So this is the mold that he made from that impression. And that's my eye being in the process of being painted. And the veins on it are pieces of red silk thread because this is the best possible that this is he found this is the best way to get um get the illusion of veins is to tear little bits of threads thr um tear tear the threads apart and then tweezer them on. Um so you add all of that together. Um this is a video of the moment that I got my new eye. So in it goes, and there it is.
Speaker 2: The reason it can move is I've got a permanent implant in the socket. That's wired into the muscles, and then the um artificial eye just sits on top of that. So I've actually got quite a good amount of um of movement from it. And this is the finished eye. Um and that's how you make an eye. Come and uh ask me questions later if you want to know. No more. Thank you.
Speaker 3: Hi, I'm Katie. My Twitter handle is hidden somewhere on this slide if you want to live tweet about my talk. So, hi. I've been thinking, um, I don't speak your language. I don't speak American. What I speak is Aussie. Get A. Australian is not American. There are some slight differences. This is how I spell colour. This is how I spell center. This makes CSS really fun. This is how I spell localization. And I like to be able to use languages, uh, programs, computers, applications in my own language.
Speaker 3: So localization is important. So I've been thinking, there's this Django thing, you might have heard of it. There's this wonderful welcome page, and you get an administration area, and if you speak American, you can read this But what about everyone else? So by default, you get American. There is a partial translation for Australian. However, I don't only speak Australian. I speak emoji. So today I am announcing this translation. I have translated the entire Django one point eleven framework into emoji. You're welcome
Speaker 3: So this is the Hello World app. I specifically chose not to translate the Python in into emoji because that wouldn't actually work. This is the main site admin page. So you've got uh Django admin site admin And then you've got your groups and your users, and you can go in and you can add new users. You cannot add a user that is just an emoji character, sadly. Um but you can edit users and it's all there and uh that's really great because it's really hard to try to uh translate hashing algorithms into just emoji. You can also add your passwords and all that, but the the wonderful little listing of what you have to do for your passwords, I did translate that exactly. So for those playing at home, your password cannot be too similar to any other personal information.
Speaker 3: Your password must contain at least eight characters or your custom setting. Um your password cannot be a commonly used password, and your password cannot be entirely numeric. That's great. Um and if you notice very uh closely there is still some English, American in there. Uh these are strings that as far as I can tell you can't actually translate and they stick out really badly And you can create groups that are single emoji. So there is a group in this particular setup that is just a unicorn emoji. Um and then you can delete your groups again and stuff. So um that is EMJI, a new translation. I had this all up on my GitHub under the repo millennial. You're welcome.
Speaker 3: Uh Django has a bunch of actual languages that people act people actually fluently speak. We have Welsh. Um we also have a whole bunch of other translations, but there's so many, so many, so many incomplete translations that if you happen to speak any of these languages, please help out. It would be really great. And there is this one that is partial and does anyone know what this particular code is? Yell it out. It's Klingon. There is a partial translation already there. This is not me, I swear. Of the Django admin already in Klingon. Yeah. And that is an actual real emoji as well. But if you are seriously interested in translating and know any language other than American, go into the documentation.
Speaker 3: It's really great. It's really easy to sign up to the translation service and please help out. it'd be really great if other people can use Django in your language. Thanks.
Speaker 4: Good afternoon, class. I'm Dr. Russell Keith McGee, this is Emoji Archaeology 101. If you're looking for Dr. Bennett's class on making the most of your Django Illuminati membership, that's just down the hall. In 1963, the human emotion of happiness was created. It was created by the American Harvey Ross Ball, who was employed to create an image of a happy face to raise the morale of employees at an insurance company. But once people realized that it was possible to express emotions, they wanted to express emotions of their own. In a New York Times interview in April 1969, Vladimir Nabokov said, I often think there should exist a special Typographical sign for a smile, some kind of concave mark, a supine round bracket. And then in 1982, Scott Farlman had a breakthrough when he proposed the composition of three ASCII
Speaker 4: characters as a trigraph to express an emotion. Happiness. Although these code points don't in themselves represent any emotional context, if composed horizontally, they combine to provide a powerful expression which the user can comprehend simply by turning one's head 90 degrees to the left. While happiness does have significant utility as an emotion, users felt it was not meeting all of their needs. However, by replacing the third code point, the much more functional emotion of unhappiness could be expressed. This ironically led to much higher levels of happiness because users were now able to voice displeasure at everyone that disagreed with them. Thus began a Precambrian explosion in the expression of emotion as users realized the hidden potential of the US ASCII code point set. The first changes were simple issues of ergonomics. By reversing the code
Speaker 4: point order, it was possible to evenly spread the physical exertion required to express emotion. More sophisticated extensions were then added, such as adornments, wearing glasses, and an optical tiredness from staring deep into the ASCII code chart looking for emotional inspiration. There was also a move to represent more extreme emotions such as extreme happiness. Some expressions of extremists couldn't be embedded in a simple three-glyph. They required the introduction of a fourth glyph to demonstrate scorn or to embody a simple tear rolling down the face. Some purists felt that the three code point limit should be retained, and so they compressed complex emotions, losing the fidelity of nasal expression. Others freed themselves of innery constraints, allowing for the rendition of, say, the absurdist philosopher
Speaker 4: Homer Simpson, or beneficent midwinter courier Santa Claus. Others revisited the premise that emoticons had to be expressed horizontally and looked to the perpendicular as a presentation style. However, the US ASCII code set was reaching its limit at this point. This led to the introduction of Unicode, providing vastly more alternatives with which to construct even deeper expressions of emotion. It's not clear in the literature that any of these glyphs are actually used in their languages of origin. The schism between minimalists and maximalists in the expression of emotion reached its zenith in this pair of expressions, the 11 character table flip as the ultimate expression of anger, and a single katakana character as an expression of simple happiness. Unfortunately, pressure was placed upon the Unicode consortium to allow more literal expressions of emotion.
Speaker 4: This started with simple renditions, but over time these expressions became more and more literal, removing all subtlety. and nuance, and indeed beauty from the process of emotional expression, perhaps best demonstrated by the introduction of the pile of poo symbol, allowing scatological references without the need to know what scatological means. This has been accompanied by a loss of agency. In the past, users could simply disruptively innovate and develop their own emotions. But like some sort of big brother, only those emotions approved by the Unicode consortium may be expressed. It doesn't matter if you like banana splits, the consortium, the savage arbiter of the Sapia Wharf hypothesis, has determined that you shall not express those ideas. And no longer may we compose those symbols to create rich new emotions. Only those compositions approved by the consortium are permitted.
Speaker 4: The modern emoji represents a significant loss of our collective culture. The ability to embody happiness in the eight-bit of storage necessary to display a right bracket. This, this is the essence of the human condition. This is who we are. We are not stardust. We are not the champions. We are not a number. We are emotions, trapped in a brittle corporeal manifestation. So what are we to do? Some might call for emoji to be eliminated, to be struck from our collective history, but that is defeat. We should fight for our emotions. So rise up, rise up, my children. Smash the control image, smash the control emoji, smash the control machine. We have nothing to lose but our chains Do not be constrained by the limits placed upon you by the consortium. Compose new emotions and express them. Express them deeply and longingly and outwardly. And before someone asks, yes, this will be on the exam.
Speaker 5: Well, I'm not getting my notes, so let's wing this. Okay, so uh hi, my name is Andrew Pinkham, and I'm here to talk to you about the improved user. So Django has an existing user model. It gives you all of these. The problem is this isn't necessarily what you want out of your user model. Uh so this made a uh a lot of sense when it was shipped, but nowadays you just want to log in with an email, you want a password, and for international reasons, you usually don't want a first name or a last name. That doesn't work in a whole lot of context. countries. So you might think about a short name or a full name, maybe. So if you've read my book, Django Unleashed, you know that I've I sort of go through and I talk about how to build this. And as a consultant at Jambon Software, I was taking that code and just copying and pasting it.
Speaker 5: When working with Russ, Russ pointed out that this was really, really Really, really dumb. Um, this is what he looked like when uh he told me this. This is uh unedited. Um and so uh we went ahead and we created a reusable app called um uh Django Improved User. It's uh fairly Creative. So the Django Improved User goes ahead and it it just does email authentication, it gives you a password, there's a full name and a short name, and you can compose all of these. if you would like to go ahead and do that. And it includes all the stuff that you need to sort of get the ball rolling. Forms, admin, if you're using uh the um factory boy, you can we We have a test factory for you. And all of this is tested in Django 1. 8, 1.
Speaker 5: 10, 1. 11. So if you're starting a new Django project, we hope that you find this really, really useful. Uh a quick note is that right now the version on PyPy is uh actually version 0. 3. Uh version 0. 4 is going to be shipped out very very soon. Um does this mean that it's really in beta? No, we're using this in production unless like four or five places. The only thing that's really that we're waiting for for version one is improved documentation. I'm working on it. I would love some feedback. If if people have done a lot with user models, I would love to hear like are we helping here? Are there any changes that we could we could make to sort of do that? And uh on the document uh documentation side, if uh if anyone feels like writing document Documentation, that sort of thing, we would love some help. So uh thank you very much.
Speaker 5: Thank you, Andrew.
Speaker 6: Yeah, so um what I want to talk about is the fact that the cloud isn't a hundred percent available. All the services that we can use that make our lives easier can and will go down. And the time that that happens is not the time to fix it. You don't really want to be live coding while uh your payment processor is down to make sure that things, that make sure that your site doesn't blow up. And um so we had a client and we had done an MVP on a store, launched it, everything was great, payment processor went down. And so that was when we started to get a flood of 500 emails from places that we hadn't quite planned for this Now what that did is it meant, all right, it's time to buckle down, it's time to harden the application and uh make that work better. So I just want to give you some of my inspiration, some of the things that I've learned so that you can do this.
Speaker 6: It's actually not as hard as I thought. it would be. So the first thing you to do is actually more of a business decision than a technology decision, and that's to think about all the different touch points that you have to outside vendors and think about what you want to do if they fail. If your credit card processor is down, do you want to store information and do authorizations later? Do you want to hard fail? Probably not the great greatest idea, but it's it's a valid idea valid way. And um yeah, so same thing with sales tax. You may use a vendor to to tell you that. Are you going to uh email every customer that made a transaction And say we're actually going to charge you this much more because our sales tax vendor was down.
Speaker 6: Transactional alerting, anything else in the cloud. You're basically going to go through and figure out what do we want to do. With that in mind, you um you can t you can tune and say Hey, are are we going to display a 500? Are we going to have a generic message that pops up and says we couldn't get to a vendor? Or are you just going to adjust the messaging for each instance so that it doesn't Say, you know, this terrible thing happened when all it was is you couldn't send them an email that that their order had gone through. There are multiple levels of failure in the application, ranging all the way from lack of data link, just unplug the network cable. DNS resolution, I'll often uh I keep records in my router at home so that I can override various vendors
Speaker 6: And say, you know, you go to 12701. But then the rest we need software. And so we can do timeouts, connections refused, and anything other than the HTTP response. That it would suspect. So, depending on your vendors, this will be either really easy or not so easy. Braintree is actually kind of nice. They give you the ability to do braintree. environments and um so you can set up this use uh braintree configuration configure and now I'm pointing braintree to a local a local server that I just set up a URL that matches what they would be calling return HTTP. Okay. We'll go in. into more detail. One call out, um
Speaker 6: unless you're running a local proxy with SSL, you're probably gonna have to find some way to turn off SSL because your payment processor wants you to use that. that. If it's not configurable, like Stripe , who just hard codes their API strings in uh in their init module, you can always monkey patch override at runtime. This is not something we're putting into production, it's just something we're using to test production. production. If it's soap, it gets even more challenging because SOAP has WISDLs and WISDLs connect to different URLs URLs for different endpoints. The way that I've found best to do that is I download the WISDL as a save it as a template and then build a view that renders that with URLs.
Speaker 6: This is the view that I use in order to do that. And so I'm able to use the same view for the WISDL and the option. You can see there's a 50-second timeout there. That's usually enough. You may have to tweak it depending on what the vendor's module is set to wait for. And then it just ends. You can also return weird status codes. I just usually Usually leave a bunch of them commented and I'm like, well, I want to time this one out. Oh, I want to do bad request and uh and go from there. And then use your unit tests, Selenium suites if you've got them, spider. You know, just Set something loose that follows all follows all the links on your site. And then lastly, test as a user. Do what they would be doing and see what they're seeing. And then retest often.
Speaker 6: Huh? Yeah? Oh I thought you were coming up to Okay.
Speaker 7: Uh hi, I'm Josh. Um does anyone here use Django storages? Pretty popular. Yeah, and if any of you uses Redux the Django Storage's Redux, please upgrade because I don't maintain that one anymore. We've become Django storages. Cool. So uh yeah. Uh I'm here to talk to you about the Django storages library, which is I th I think the most popular library for plugging into the, you know, you want to host your files in S3, you want to host your files in Azure, Google, Cloud, whatever, not the most interesting library. library but necessary. So I want to talk about uh past, present, and future. So uh Django storage is a super old project. It's actually pre-1. 0. I think Django one point oh is when the storage API is shipped and It basically hasn't changed modules, some minor max length features and and such since then.
Speaker 7: And this project came out, you know, I guess uh Um the guy who wrote it, David Larlett, um, wrote it, saw what 1. 0 was gonna look like, and released it with S3 starting, followed by a bunch of other ones that have since been removed. like mo mogile. Um anyway, it was uh pretty much abandoned uh in 2014, which is when I was working on a project uh that was heavily international, so we decided to do Python 3, which is also when I think Python 3 became obvious it was gonna win. There was like a lot of talk about Python 2. 8 and stuff like that until Guido at one of the PyCons was like, nope, not happening, sorry. Um so I I you know We shipping a Django site, every project was upgraded to Python 3 except this one. So I forked it, uh
Speaker 7: commented on all the bit bucket things like, hey, look at my fork, come use it. Um and as Django Storages Redux, and about a year and a bit later, I became the official successor of Django Storages. So that's where we are today. Um and we're shipping nine back ends. Uh co quality and how much each of them are used across, I'd say varies. Certainly the S3 ones are heavily used and there's also you know a lot of demand. For Google Cloud, which was added because Google's been pushing out of Azure Dropbox. Um man, this is my first time maintaining anything. No one ever told me. It's a complete pain. Like it's really Especially because I didn't write the software. You know, I'm dealing with oh man. Um so I work on it as I have time and motivation.
Speaker 7: Um finally got in the the Google Cloud backend. Um took a while to get Boso 3 and two. But that's what it is. It is what it is. So I have like a a roadmap of this that I'm hoping to um uh go forward with. Here's some ideas. I see I'm About halfway through. Uh so right now the test suite uses mock, which is awesome and is a great idea if you're making web calls. If your whole library is wrapping web web stuff like cloud things, I think this is a terrible idea. Like to I ship a ton of not a ton because I don't ship a lot, but um there's there there have been regressions because you know we mock out the connection call and then the connection doesn't get called and that's basically what the point of the library is. So So um the test suite
Speaker 7: I think should be done live. Um there's a ton I I I'm a big uh believer in the Unix philosophy. I I mean I use Vim for for for Christ's sake, like um and but and this obviously this library completely breaks that, right? Azure is mixed in with Boto and like I've never needed Azure but I Use Boto all the time. Um but I actually think this makes sense in this case. It's not a completely, you know, it's I don't think it's a very hard problem. There's just an API, but there's a ton of different service providers and there's a lot of commonality if if you're a one cloud provider to a next. So I think it makes a lot of sense. Um it's also a lot of legacy stuff. You know, there's this AWS preload metadata setting which every time we break, the same person comes around three months later being like, hey, this is broken. I'll be like, oh, sorry about that. that. Um so
Speaker 7: you know, I I don't even think we really need that. So I I've been thinking a lot like what can I do with this because I get a ton of emails about it. A lot of stress because I'm not responding to the emails about it. Um and so I what I'd like to do is fix this once and for all for everyone and then maybe submit to Jazz Band, which Which if you guys don't know is sort of like an an Aegis project for Django projects that are popular in the community, stable, um, and are maintained by a a group. I I mean I sort of remember the, you know Python standard libraries where libraries go to die, but if it works and it's good enough, you know. So I need some help. You um I I freelance full time. I do not have the one month of work it would take for me to To fix this by myself. So if your company wants to donate time or money or you're interested in sprinting on it, um
Speaker 7: people, lots of people have emailed me. I they join as co-maintainers. They merge in the feat their pet feature, I never see them again. So I've listed out some major uh projects and I'm giving a talk on this and other stuff tomorrow. So Hope to see you there. Thanks.
Speaker 8: All right, so I'm gonna do a lightning talk related to K pop and programming. So do we have any Korean speakers in the room? Yes, no? Yes? Any Chinese speakers? Ma Mandarin Chinese speakers? One. Okay. So I'll uh I'll go into the select let me start my timer. Alright, so I'm gonna I'll go into the Slack, the the DjangoCon Slack, and I'll post uh two videos a little later from YouTube. This is a video By a group called XO, specifically XOK, and this is the Korean version. And so this group performs in Korean and in Mandarin. So uh hence XOK and XOM. The way this, and you're thinking, well
Speaker 8: Okay, that's exciting, Kojo. No, you're not really. But you're wondering probably, well, how does this relate to programming? One of the things as developers that we often hear about programmers who are being hired is that people are looking for rock stars. And a rock star programmer, when we think of a rock star, we tend to think of someone who is a high-performing individual, may or may not work well with a team. Now, if you've actually done any sort of professional software development or if you just contributed to any sort of an open source project, you recognize that software is built-in team. It's not just there's not just the lone genius who goes off onto a mountaintop and then writes the wicked codes and then we all use it and it's wonderful. It's usually software is built by teams. And so if you're looking at hiring, I'm gonna Need that, there we go.
Speaker 8: Well that doesn't work out there. If you're looking at hiring people um to build software for you, uh you want someone who's gonna be a better team player. And so as opposed to a rock star, what you want is you want a k-pop idol. And so the question there is why. K-pop idols are generally very well trained, but as you can see here, they function very well as teams. And this is one of what really one of the defining aspects of K-pop idols. And so it's a little bit humorous, but it's also a billion dollars worth of true. There are at least two billion dollar publicly traded companies who are built around the K-pop industry. This group performing here XO their cur They are currently the flagship mail group for a company called SM Entertainment, which is valued at over a billion dollars in the Korean stock market.
Speaker 8: So what are some of the defining characteristics of the K-pop idols? Uh one, everyone has a specific defined role. So you have vocalists, you have dancers, you have uh rappers. And then you also have visuals who are more trained in acting. Those are the people who show up on television shows, things of that nature. So everyone has a clear role and and they know what they're going to do. But even more important than that, and something that I think is missing in the American programming industry is the aspect of training. So most of these gentlemen you see here have been trainees there for these guys are in their like early to mid-20s now. Many of them have been trainees since they were 12, 13, 14 years old. And so they have been trained to be these vocals, these rappers, these dancers. If you're looking to bring in quality people to help you build quality software,
Speaker 8: Your organization needs to have some sort of way to bring people in and then help them become the DevOps people, the back-end developers, the front-end developers you want them to be. be and so you need to take more of a k-pop idol approach to bringing in people and training them to do to perform the functions you need them to perform for your organization to succeed. succeed instead of hoping to just go get a random rock star who will show up and do his rock star magic and fix everything. So I'll put links to these two videos, one in Chinese, one in Korean, uh in the DjangoCon Slack. But that's just a little something for you to think about. There, there's a lightning talk. Not spectacular, but if I can do it, you can do it too. So keep that in mind. Maybe here, maybe at your next uh local meetup. And with that, we will adjourn and head to lunch. Everyone enjoy, and we will see you tomorrow.
The talk presents YAML, an ORM-like system that loads YAML files into an in-memory SQLite database, creates tables from Django models, and routes Django ORM queries to that database. It supports normal filtering, sorting, and lookups such as `get()`.
Discussed at 0:59It is a custom three-day process: an impression is taken, an acrylic eye is fitted to position the pupil, and the eye is painted by comparing it directly with the person’s real eye. The iris is painted with oil paints and the veins are made from tiny pieces of red silk thread.
Discussed at 6:39A permanent implant in the eye socket is connected to the eye muscles, and the artificial eye sits on top of that implant, allowing it to move with the socket.
Discussed at 8:56Django’s translation system can be used to provide interface translations, including the humorous Django 1.11 emoji translation shown in the talk. People who know an incompletely translated language can sign up for the translation service through Django’s documentation and contribute translations.
Discussed at 10:03The talk traces the progression from the 1963 smiley face and ASCII combinations such as `:-)` through increasingly elaborate emoticons, Unicode, and standardized emoji. It argues that this shift expanded the available symbols while reducing users’ ability to invent their own emotional expressions.
Discussed at 13:23The proposed Django Improved User app supports email authentication and a password, along with short-name and full-name fields that can be composed as needed. It also provides forms, admin integration, and a Factory Boy test factory, with support for Django 1.8 through 1.11.
Discussed at 18:53First decide what the application should do for each external dependency when it fails, such as queueing an authorization, showing a generic message, or handling the case-specific failure gracefully. Then simulate failures including network loss, DNS problems, timeouts, refused connections, and unusual HTTP responses, and exercise the results with unit tests, Selenium, link crawlers, and user-style testing.
Discussed at 21:17Use a vendor’s test environment or point its configurable endpoint at a local server; for services without configurable endpoints, temporarily monkey-patch the API URL during tests. For SOAP services, save the WSDL as a template and render it with local endpoint URLs so the client exercises the local implementation.
Discussed at 22:49Django Storages began as a pre-1.0 project for S3 and was later revived and made Python 3 compatible after being abandoned. Its future plans include replacing mocked cloud calls with live integration tests, reducing legacy behavior, and potentially moving the project under Jazzband for shared maintenance.
Discussed at 25:15Instead of looking for lone “rock star” programmers, teams should value people who work well together, have clearly defined roles, and receive deliberate training. Organizations should develop people into the developers and operations specialists they need rather than expecting an individual hire to solve everything through “rock star” magic.
Discussed at 31:43Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published October 25, 2019
Published November 3, 2022
Published September 30, 2020
Published October 25, 2019
Published November 17, 2018
Published November 3, 2017
Published November 3, 2017
Published November 3, 2022
Published September 30, 2020
Published October 25, 2019
Published September 7, 2017
Published November 3, 2022
Published October 14, 2022
Published October 20, 2021
Published October 23, 2025
Published December 6, 2024
Published November 22, 2023
Published December 6, 2024
Published November 3, 2022
Published November 10, 2018
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 14, 2026