Auf Wiedersehen
Published May 25, 2018
This video features DjangoCon Europe Crew at DjangoCon Europe 2018 in Heidelberg, Germany.
The lightning talks covered practical lessons from Django development and conference work. Cheryl and Andrew explained how stenographers use chorded shorthand machines and translation software to provide live captions, while Anna Paula Gómez introduced Pytest Pickett, a plugin that runs tests associated with uncommitted changes. Other speakers described safe treehouse construction, argued for cleaning up Git history with rebase, led a short body-scan exercise for mental health, demonstrated JetBrains MPS and projectional editing, and showed how preloading Django before forking uWSGI workers can reduce memory use and request latency.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: We have more lightning talks. Do you remember how lightning talks work? Who needs a refresher? Great, lightning talks of five minutes. Five minutes of lightning talks. There is a timer down here that will countdown when the timer starts. When there are 10 seconds remaining, the gong person, who is our gong person? Lacey will be my wonderful demonstrator. The gong will start slowly making sound. Until right when it goes three, two, one! And then we all start clapping and then they have to stop talking because they can't hear themselves think and then we change over and then all the laptops will definitely work and everything will be great
Speaker 2: I'm not sure that I have anything to add. I'm gonna summed it up.
Speaker 1: You talk for a bit. I'm gonna check.
Speaker 2: Okay. So I prepared a little activity for um for between these sessions here. I am not nearly as good a storyteller as Russell is. I don't really have stories. I like to play games. Um, has anyone ever played the game Never Have I Ever? Okay, so if you haven't played the game, the way that it works is that I'll say, never have I ever done a particular thing, and if you have done that thing, you raise your hand. So if I were to say, never have I ever been to DjangoCon, what would all of you do? Yes, everyone's hand should be up because we're at DjangoCon right now. Now this is Never Have I Ever programmer Edition, so let's let's start. Never have I ever crashed a client's website. I've done that. Keep your hand up if you've done that for more than an hour We don't have more than a day.
Speaker 2: Yeah. Sometimes we've had some kind of a bad day. Um, bad days here, so that's fun. Never have I ever taken a video chat with a client or my boss while wearing pajamas That's definitely me. I remote. I work from home. I know we have a talk about that today, so pajamas are a big part of that. Um we ready? Not quite, we're blinking. Okay. Um never have I ever gotten myself caught in an infinite loop. Incident loops are fun, yeah. And I I feel like this is a really reassuring game because I think we've all made kind of a lot of the same mistakes Um all right, never have I ever spent more than an hour debugging something when all I needed to do was restart my server. That's like literally everyone in this room, right? Yeah, we have We have all been there.
Speaker 2: Yes. And it's so annoying too, right? Because finally you're like, all right, I'm just gonna turn it off and on again. I swear I've done this before. And then suddenly it works just fine and it just sucks All right. Never have I ever forgotten to update to master before I submitted my pull request and gotten caught in merge conflict hell. Yeah. Yeah. Gets hard. Gets hard. We're still blinking.
Speaker 1: Never have I ever made a projector work first time.
Speaker 2: Oh gosh, yeah. Oof.
Speaker 1: Lies.
Speaker 2: I know. We have we have a a few liars here. Yeah. All right. Never have I ever committed my secret key to GitHub. In a public repo. Then you get to learn how to change your secret key. It's really a learning experience for everybody. It's awesome. Whoa. Um are we here? Almost. Okay. Um do ba doo doo.
Speaker 1: Never have I ever been able to say words and they immediately appear on the screen in front of me.
Speaker 2: Woo! This is magic!
Speaker 1: Well, first up, we have one of our wonderful stenographers, Cheryl, who is going to share with us her magic piano.
Speaker 3: I never realized how short I was until I've stood by here First of all I'd just like to say thanks to DVO who sponsored us to come and it's an absolute privilege and this is my fourth year and it's just been great to come. So right, we'll start with the introductions. So I'm Cheryl and I'm from Wales. And for today, my colleague captioner Andrew will be my Siri. Andrew, would you like to introduce yourself?
Speaker 3: Thank you, Andrew. This is why your captions are delivered by humans. Okay, Andrew, can you really introduce yourself? Okay, I'll tell you more about Steno. So we type on shorthand machines, which have been for around for about a hundred years now. So the originally they were they weren't electric. It was uh very much like your QR -typewriter. Uh and then they slowly evolved to the machines that we have now.
Speaker 3: So that's the machine we type on. So it's been um evolved over time and so now it's connected to computers and allows us to provide these subtitles. So you play it like a piano, so you press chords of letters all at the same time, and then they come up into the words. So typically, as I know a lot of you are fascinated by numbers I thought we'd let you know how many words are spoken on an average day at DjangoCon. Andrew, can you tell us the totals for Wednesday at DjangoCon, please?
Speaker 3: Okay. And that would take you about seven hours. Okay, can you give me the figures for today, Zuri? Isn't karma sweet? So I'll tell you about the software and how it works. So you can see on the screen here, this is modern
Speaker 3: stenographic software. And you see if you see the bar on the left contains the letters that Andrew is pressing sorry, on the right So on yes, on the right is because I'm backwards. Okay, on the right is the notebar. And as Andrew presses the letters, you can see the letters popping up there. And So what it does, it puts the words up and it does this by searching the database dictionary for the longest match of the group of letters and prints it to the screen and then adds a space ready for the next word. This process happens in the space of one second before the translation of the outline is thrown to screen. So Andrew will input a word and within a second it's thrown to the plasma screens on the left and right of the stage.
Speaker 3: So if you look at the main screen and then look at the plasmas and see the connection. So how fast do people talk Traditional speed is anything from 180 words a minute up to and in excess of 250 words a minute, ranging far beyond 300 words a minute on occasion. I'm saying nothing. So for us working as captioners, our preference is that the best talks are always from those speakers whose delivery is steady and not at jet engine pace. With thinking time. Less is definitely more. So we experience lots of different words. We experience philosophers' names, Latin words, Greek words.
Speaker 3: Double underscores, which reminds me, any chance of taking the double underscores out of Django codebase would make our lives so much easier. Thank you.
Speaker 2: Thank you so much, Cheryl and Andrew. It's so nice to have a peek behind the curtain.
Speaker 1: That was so cool. I don't have fun people
Speaker 3: , but am I allowed it? Am I allowed to carry on just a minute or two? Would that be alright or not? What do you reckon?
Speaker 2: I kind of feel like she's worked really really hard this week. Okay. We will make an exception. We will make a 60-second exception
Speaker 3: Thank you. Right, okay. So we experience foreign languages such as German and Greek, as I've already stated. So we also have Welsh. So, how do we cope with that? Kreuzhoi Heidelberg Now As you will see, Andrew's Welsh is about as good as my Scottish Gaelic So you'll note that the email went out to speakers before the conference to ask for a preview of presentations and speaker notes. So I've primed Andrew with the Welsh. Should we try it again
Speaker 3: Printhound Which is good afternoon. Sitoe, how are you? Kroisui Heidelberg, welcome to Heidelberg. So for us as captioners, the pre-information makes our lives a whole lot easier. It enables us to be accurate and not to make rude mistakes. We're a human after all.
Speaker 2: All right. I think we're gonna take a break from Never Have I Ever and Katie's gonna tell us a story.
Speaker 1: I have a story.
Speaker 2: Yes. It's storytime.
Speaker 1: Oh we don't have the stenographer up anymore. Okay, I'm gonna make sure I can see it because this is a good one. Um have you heard the one about the monk? It's this old monk, he's he's trying magic and stuff, but you know, as monks do, he's up in his monastery, he doesn't have any shoes, he he needs to brush his teeth You know, a little bit, you know, he's the supercallist vagile mystic hex with halitosis I got a lowercase applause, not a uppercase applause.
Speaker 2: I don't know what to tell you about that. It does look like we're just about ready though. This is like the the fastest um setup that we've ever had. I'm sorry that you're you know
Speaker 1: , it was it was the fastest shaggy dog story. It's fun. So up
Speaker 2: all right without further ado we have Anna Paula Gomez with Pi Test Picked.
Speaker 4: So uh hi everyone, my name is Zanna. And uh today I will talk about with you about PyTest Pickett. So basically I have two goals in this Lightning talk. The first one is Make you understand me so it can be quite challenge. And the second one is get you to know about PyTest Picking Uh according with one of my co-workers, uh even if this this presentation goes wrong, uh maybe you like the this small plugin that I developed during the last weekend. So uh let's say uh that you you were asking for developer a new feature. So basically you wrote the test and then you change
Speaker 4: a few files And you are ready for your first commit for this feature. So basically we have uh a bunch of files modified so and few tests to run before commit. So after all you don't want to execute all the tests available in your code test. Just hypothetically speaking, maybe you have some code base that will take a few hours to run all the tests So basically you decide to run the tests related to the the modified files. So then you decide to use PyTouch for for it. So then you copy and paste the name of the files And then you go through this process. Executing git status and then copying the name of the
Speaker 4: module and then Pythagore spacing stuff and then repeating over and over again. So I don't like to do repetitive work, do you? Ladies and gentlemen, I'd like to introduce you Pythas Pickett. So I was expecting somebody. Yeah, that's it. So basically here uh a small demonstration of five seconds So basically let's say uh we changed uh few tests and probably we will execute the git status just to check the name of the tests. In this project I have two test modules. Basically, I execute PyTest, uh
Speaker 4: Picket, and then it will filter uh just the tests related to the changed files, the tests that weren't committed yet. So here you can say the test files that weren't committed before So uh PyTest collected 33 ether items, I mean tests, but just one module was executed. So basically uh that is a small plugin but looking for the future I I'm planning to Execute test is related to the branch. So instead of execute the tests that were changed, uh would be nice to execute all the the tests modified
Speaker 4: in uh branch and also to get the test from on a specific module that maybe you changed but didn't add any tests for it So uh the plugin of course is open source and I'm looking forward to hear your ideas and feedback about it So that's it. Thank you.
Speaker 2: Thank you so much, Anna. So
Speaker 1: who's next?
Speaker 2: So right, well Harry will be next.
Speaker 1: Harry?
Speaker 2: Harry, yes. Harry. So Harry, come on out and get set up.
Speaker 1: Come on, Harry.
Speaker 2: So are we are we storytelling or are we game playing in the interim
Speaker 1: Um, well, who wants another story?
Speaker 2: Stories are good.
Speaker 1: Who wants a game? Yeah, games.
Speaker 2: I win. Just give me a-story time.
Speaker 1: That was
Speaker 2: okay. Never have I ever deleted a production database Yeah, there we go. Those are the real errors. Yeah, those are the most fun. Those are really good days, aren't they? Yeah. Um never have I ever and some of these by the way are taken from some of the talks that I've seen this week, so they should sound familiar. So I 'm from mine? Sorry?
Speaker 1: Are they from mine?
Speaker 2: Guess we'll have to find out. I don't know. Um so never have I ever run a very important and crucial command in the very exact wrong environment. Yeah, that one's fun too.
Speaker 1: Lacey, Lacey.
Speaker 2: Oh, are we ready? Yeah, there's a tree house. Oh my goodness. Okay. Well, I'm gonna stop playing this game now and I'm gonna introduce you to Harry, who's going to teach us all how to build a tree house
Speaker 5: Hello. Cool. Hey everyone. Welcome to my talk about tree houses, which is moving on automatically. Stop, stop, stop, stop, start again. Okay, cool. Yeah, uh so I think this is a fitting uh image to start with. Uh there's something really kind of childlike about being in a treehouse. has a kind of fun and uh kind of escapism to being in the treehouse with your dog. Um on the other end of the spectrum we have a slide which won't go on. No. I'm just gonna do it like this. Uh so the other end of the spectrum uh we have something like this. This is uh Horace's Cathedral in Tennessee. It was built by one man. uh over a period of something like fifteen years.
Speaker 5: It's 10 stories high and uh 30 meters high. Uh in uh 2012 it was shut down too due to fire. um fire regulations. This is another really big favorite of mine. It's a hotel called the Woodpecker Hotel in Sweden. And I really love it because it's basically just a house that you've just plunked in a tree. You can stay here uh as a guest. Um you have to access it via a rope and uh your fed food via the rope. I don't know if you're allowed to leave during the stay. But that's a really cool one. This is uh on one of the crazier ends of the spectrum Uh this is a tree house called Sam's Tree House. Um and the guy built the house and then thought, hey, one day he thought what what I what this house really needs is a plane. Uh so we stuck a plane in the side, uh and there's a boat on the other side and uh around on the right there's a
Speaker 5: a uh some kind of Apache helicopter as well and the picture here of the dog uh you can see. Um and then this treehouse wins the award for the most inventive way to access the treehouse. Uh you just get on the bike pedal and Up you go. Um I could show you pictures of beautiful treehouses and there are a lot. I could show you them all day, but I wanted to give you some practical trips uh tick on building a treehouse. Uh when you think about building a treehouse, uh the thing you might think of doing first is getting a bunch of pieces of wood, getting lots of little nails and hammering them in. This is a really bad idea because the tree actually lives in a layer underneath the bark. So if you hammer in loads of little tiny nails, what can happen is the tree gets um a kind of compartment syndrome like you get in muscles and it can die. Another bad idea is to think, hey, I can get away without with making it
Speaker 5: no holes whatsoever, um, just by having some kind of a collar or some kind of cladding. This is even worse because it makes a bigger cut in the bark and can completely cut off all the nutrients to the top of the tree. So if you want a happy tree and you want your tree house to last uh the best thing to do is to take advantage of uh this modern invention uh which is called the Ghania limb. It was invented in the World Treehouse conf conference which I've always wanted to go to in 1997 um and it's basically a huge bolt. You you put one in uh and it looks kind of destructive but the actual hole you're making in the tree is only a small circle. Most of it's living inside the dead heartwood. And that piece of hardware can hold l like three and a half metric tons. It's it's really really crazy The tree you're building on is is a living thing, so you've got to take account of a few pieces of movement.
Speaker 5: The first uh thing you have to take account of is growth. Um a lot of people will think I'll put my my bolt in here and over time it'll move. But actually the bolt stays exactly where it is because a tree goes from the tips of the branches. and it goes outwards in layers. So all that happens really is that your bolt gets kind of enveloped by the bark. So if you're building a treehouse, make sure that your beam is paste uh spaced away from the bark The tree also moves in the wind. It acts as a kind of lever. So when the wind is on the top, the amount of force on the base is absolutely huge and can brick the tree out in two. So what people do here on the left is called a treat house attachment bolt. Allows the uh the the bolt to slide up and down Or or you can use cables. If you use too many cables, then you end up with a tree swing, not a tree house.
Speaker 5: But uh normally what you do is you attach uh you fix yourself to one of the trees and then when the other trees sway um Your tree house is safe. Cool. Thank you for my talk. This is a picture of me in my treehouse. It's more of a tree platform, but hopefully one day I'll be living in a big house with balls. And uh if you want to uh be inspired or know more about trees and climbing trees, I can recommend this book, The Man Who Climbs Trees, by James Aldred. It's just a really awesome collection of stories of climbing and rainforests and all that kind of stuff. Uh great, thank you very much.
Speaker 1: That was cool.
Speaker 2: That was really cool. Now I want to like stay in a treehouse hotel.
Speaker 1: Um our next lightning talk speaker. Can we get like hi, you you gotta go around and make sure you're ready. We're trying to make sure that people are going around and stuff. Yeah. People are missing. I don't know how Russell does it so well. I don't know.
Speaker 2: I know. Russell has this down Pat. Looks like we might have a do you have a quick story?
Speaker 1: Oh. Do I do I tell a story? No.
Speaker 2: Maybe not.
Speaker 1: Maybe not.
Speaker 2: Okay, not to not not write the second. Next we have Martin who's going to tell us about Django Rest Frameworks renderers and parsers.
Speaker 6: So hey, uh I'm Martin from Bulgaria and this is my first Django con ever, so I'm really glad to be here Today I'm going to tell you about the jungle race surrenderers and parsers, but before we start I want to tell you more about the project I'm working in. In the beginning we just had Django. We used its uh views and uh templates and just a simple HTML with the Ginger tool. Um Template language. But after that the project became a little bit more complicated. So we decided to use uh React as a front-end view layer in order to have some components you know
Speaker 6: this stuff so we migrate our views to APIs using Django Rest. We actually built something, it started working and we the system actually started uh to be used by the by our clients but Its design became a little bit more complicated. So we decided to move it to a uh single page application with uh React, start using Redux, it's sagas, router, and so on and so on So this actually started up like two or three weeks ago. So we're actually here. We're mainly Working with Django and ReactNow. And
Speaker 6: to be honest, it was my first uh time using JavaScript. And I can't say it's like Python, you know it's not that good. So we are currently use you we are current currently have two frontlades front ends like one which is only for React and the other one we are just migrating it to you know the the A schema. So I I'm pretty sure it's a pretty common architecture so I don't have enough time to tell you more about it. Um as I said The Python is not like JavaScript. Um
Speaker 6: there are different uh common principles established and so on. And the one that really bored me is that Python and as a Python developer we are using snake case for mainly snake case. I mean for the functions for the variables and so on. And uh JavaScript it's only camo case. So The one thing that really really bores me is the is that in the last system uh the previous front end that we are working at it's we kinda have uh because the jungle rest returns um The fields on snake case, you know. So we had like uh object point uh field name in snake case, point some function in camo case, which is awful.
Speaker 6: I I hate it. So We went through a couple of solutions of that. The first one, of course, is to use JavaScript tools to use JavaScript tools. We write some uh deep c deep came on case snake case transformations. So when the data comes, we transform it to camo case and when we post something to the backend we transform it to snake case. If you want to uh actually the JavaScript knows that you uh the JavaScript expects expects uh the backend to return it a snake case which the language does doesn't like it.
Speaker 6: Uh second thing I did is that when I become a little bit uh better in React I the actually in Redux the it's redux middleware. So redux schema has middleware in it, like the junk ones, but not that good Uh we moved the get and post uh transformations to the middleware. So it kinda happened uh in the back of the developer coding. But you know, as I told you, it wasn't that good as Django, so it it was a lot of bugs with it, so we decided to remove it Um yeah it kind of worked but I still didn't like it. So the next thing I found is that Jung
Speaker 6: Resk has renders and parsers. You and you can write your own custom one So that's the last thing we have. Now the logic that uh transforms camo case to snake case and vice versa is in the back end Uh this is how a custom camo case renderer look. You just uh encase from the JSON renderer from the renders and Just sorry
Speaker 2: Thank you so much. Five minutes goes by really really fast. I definitely Understand that. Um next we will have Shy who's going to talk to us about Git menorahs and why they're harmful. And while Shy gets set up, Uh. Whoa, hello. Here we go.
Speaker 1: So s so Kemetha Frog goes into a bank. He and Piggy, they want to start a patisserie, they want to start making Stroop Well And he goes up to the teller and the teller goes, hello, good morning. I'm Patricia. I want to help you with your thing. What can I help you with today? And so Kim and goes, Well, I want alone And Patricia's like, Oh okay, well blitz get you set up. Um how did you know about our bank? Oh yeah, my my godfather, uh you know, the um You you may have heard him, he's a bit famous, uh, you know, Mick Jagger. Oh I love him, oh he's so wonderful, okay, we'll get you all set up and stuff. And and Kermit 's like sitting there and and Patricia's just saying, Okay, well we're gonna need some collateral for your loan. And so Kermit gets his rucksack and rustles it around and then puts up this little tiny ceramic unicorn onto the counter.
Speaker 1: And Patricia goes, hmm, okay. Um one second, let me go get the manager. Are we set up? Yes? No? Great. Well I'm going to continue that story after this wonderful talk about Git the Norse.
Speaker 7: So um hello, I'm Shai. Um uh I've taken uh Lacey's advice, thank you, from yesterday and uh picked uh subject where I have a strong opinion. So um what I'm going to talk about here is my opinion. It's not really a consensus. But yeah your mileage may vary. And this is a menorah. You might be wondering what git minoras are, but first I'm going to talk about actual menorahs Um actually there's two kinds of menorahs. This is a bit of Jewish trivia. the temple menorah with seven branches, which used to be in the temple when it existed in Jerusalem 2000 years ago.
Speaker 7: But this is not something that we use today in Jewish practice And there's the nine-branch menorah, or the Hanukkah menorah, which we use every year in the holiday of Hanukkah. Actually, that's this is the um terminology of the English-speaking Jewish world. And in Israel we call the uh the seven-branch menorah menorah. and the uh nine branch menorah chanukiya for chanuka. Um but anyway these are the non-git menorahs and this is the git minora Um yeah, I I s uh assume this means that you this is clear enough.
Speaker 7: Um the this is the the um repository of a project I was involved with uh anonymized to protect the innocent and guilty. Um And basically some of you might be wondering what is wrong in this picture. So um to answer this question we first need to go through something more basic. Um and that is what do we uh use version control for at all And um I think that we use it for two uh main goals. One is to coordinate collaborative work so that we can work together on a common code base
Speaker 7: without stepping on each other's feet. And the other is to keep a record of history. But then this begs the question why do we need the history? And there uh again this is my opinion, there's uh two main issues. Um Not too, sorry. There's well basically we need the history to fix mistakes. We need to find when something broke so we can fix it. And we need to uh Sometimes reconsider decisions because the conditions or requirements have changed. And sometimes some change was simply wrong and and we need to revert it Another thing we
Speaker 7: should uh consider when thinking about why we need the history is what we don't need in the history. And that is the exact details of work being done. So um we don't need all the typo and typo corrections. We don't need the I fixed the white space because of review comments. All that is is really noise and not interesting history. So now we can answer the question, what is wrong with this picture? Well, for one thing, git bisect gets severely limited when you have this um picture. Um and reverting a merge commit just is
Speaker 7: is pure damage. It undoes the individual commits in non-obvious ways. Hard to find out exactly why the thing you committed and pushed like weeks ago suddenly isn't there. And um usually when you see something like this it means someone just worked on a branch and finished the work and just pushed it and uh without uh any consideration. So in summary Uh if there's one thing you're taking from this talk, uh this is what I want you to take. Code history should be kept in a way which serves the project going forward and not to serve pure academic historical research, not code archaeology. So use Git rebase to reshape the history of your work before pushing.
Speaker 7: And follow the example of the Django repository, which looks like this. And that's all I have today. Thank you.
Speaker 2: Very, very perfect timing too. Thank you, Shot. Alright, our next speaker is going to be Ducky. She's going to talk about um taking five minutes for your mental health. Um while she gets set up, I do have or Ducky, do you have anything to set up?
Speaker 1: Oh Ducky, can't I finish my story? Woo. If if I insist. Okay, so Kermit 's just put up this little ceramic unicorn onto the counter and and Patricia's just going, Well what is that? So Kermit Excuse me, what was your name? Oh my name is Ms. Wack. Ms. Wack, can you please go get your manager? So the manager comes out and goes, Okay, what's the problem? And Kermit goes there with his Kermit voice that I can't do and says, Excuse me, I would like a loan And Patricia just goes, No, no, he he has only this little ceramic thing for collateral. What am I supposed to do? And the manager knows who Kermit is, everyone knows who Kermit is, and so he just quietly pulls Patricia aside and goes It's a knick-knack, Paddywack. Give the frog alone.
Speaker 1: His old man's a rolling stone. And now Ducky, who's less terrible than me. Oh, thanks. Hello. Oh
Speaker 2: hi everyone. Uh I'm Ducky. I'm gonna stand over here because I'm short. Um how are you all doing? This is an interactive talk, so please actually like speak back. Uh I hope you're all doing well, maybe. Yeah. Yeah, yeah. Anyone feeling a bit tired like this week is just no, no? Wow. You have way more energy than I do. I I am really ready to nap. And uh this talk is definitely not an excuse to do that at all. But you know, while we're here, you know what's really important for your mental health? Sleep. Sleep is really important for you. So I'm gonna get to that in a second. Uh but first uh Exercise, also really important for your mental and physical well-being. So thank you to the organizers
Speaker 2: of Jagocon for bringing out those excellent people teaching us how to do exercises at our desk. That was really awesome. Um also I'm gonna try and slow down a bit uh for the stenographers because I'm Australian and apparently we're very good at speaking fast. I've known Russell for a little while now. Um and on on Russell and him talking about time, I'm gonna try and slow down not time itself, I'm not that cool yet, uh, but we're gonna try and slow down your perception of time Uh so I'm just gonna run us through a few kind of body scans. Uh these are just kind of little exercises you can do if you're you're feeling a lot of feelings or if you're not feeling anything at all, and you can just kind of
Speaker 2: Run through your body and feel your feelings as weird as that sounds. Just kind of be with yourself. And so if you're feeling angry, you're just kind of like, oh. Hey there anger. What up? You're just you're just doing your thing. If you're feeling stressed or anxious, you can just kind of visualize that and feel it inside you rather than fighting it which will only make you more anxious. Um so I'm gonna get you all hopefully this doesn't make you feel uncomfortable, but uh if it does feel free to opt out. It's okay. I'm not gonna force you. But uh I'd love you all if you could to close your eyes and now just take some deep and slow breaths. In And
Speaker 2: out in and out Now I want you to take your mind to your extremities, your fingertips or your toes, doesn't matter which Just feel the ends of your body. You might be able to feel them touching the floor or just feel the air around them. Now explore further up either your hands or your feet. Very slowly just feeling your feet on the ground or your hands in your lap
Speaker 2: And then just slowly bring that up through your arms or through your legs, up into your body. Still breathing in out Now, you might be able to like, if you're having any emotions at the moment, I hear that's a common thing people do, uh, you might be able to visualize kind of what sort of shape that feeling is. It might have a color or a texture. Just kind of explore it. Be with it.
Speaker 2: Now I want you to explore back down very slowly through your arms or legs, maybe even shake it up and go to the other limbs. Now back to your extremities, and you can open your eyes So that is a very quick demonstration of what a body scan is. And you can do these as many times as you like. any way you want. Like some people like to start at the head, go to their feet. Some people like to go up and down. It's it's up to you. Uh it's a really good thing to just practice every day for like However much time you feel like you want to spend on it. And if the more you practice it, the more kind of you can be with your feelings and yourself
Speaker 2: Uh I don't have time, but I really wanted to play a game with you called Sleeping Ponies. Maybe we can catch up later and we can play that. Or you can play it for five seconds where you all close your eyes really fast and just fall asleep And then you wake up at the gong.
Speaker 8: I feel so relaxed now.
Speaker 1: Sleeping ponies is the best game.
Speaker 8: Yeah. So next we'll have Ilya talking with to us about meta programming. But while Ilya gets set up, I wonder, Katie, do you have any never have I ever I haven't ever have I ever.
Speaker 1: Never have I ever forgotten to rerun migrations.
Speaker 8: Yeah.
Speaker 1: Yes.
Speaker 8: Ooh, I have one. Never have I ever written a custom migration that just totally did not work and screwed everything up.
Speaker 1: Never have I ever tried to run make migrations on an older version of Django and wondered why it didn't work because I was running it when South was a thing before make migrations was a thing and I'm wondering what's wrong and ah.
Speaker 8: Those were the days, weren't they? Thank you, Andrew. Alright, I think we're ready to go.
Speaker 1: Woo! Go So
Speaker 6: hi, my name is Ilja and I want to show you the Meta
Speaker 8: programming system. Who of you heard of the Meta programming system? Yeah, a few hands up. I'm pretty sure that you heard of the company which builds this system, JetBrains. And JetBrains is building who saf, right? So what is MPS? MPS is a language workbench, so you can create new languages, domain-specific languages, or new programming languages, and it has a projective editor. So what is a projective editor? A projective editor is something different than the traditional editor. So the traditional editor you have a file, your Python file, it's a text file, it's stored in the file system. If you open this file It gets parsed and converted to an abstract syntax tree, so a tree representation. If you added this file, this tree is regenerated.
Speaker 8: This tree is needed for code completion, for syntax highlighting, and so on. A projectional editor uh takes this abstract syntax tree as the core element, as a single source of truth, and stores it
Speaker 7: on the file
Speaker 8: system. And what you can do now is define multiple editors which uh can be used for editing this tree. So these are projections and I want to show this in a demo So I hope it's not not too small. It's a proj uh okay, I hope you see it. Um so this is uh a Java based programming language is a port for MPS and we are the DjangoCon, right? So I want to show you what What it means to have a projection, not a real text. So I can say here I'm a Python developer, please remove all the braces And the left code will be converted in a more Pythonic representation.
Speaker 8: And it's still working, so if I go here and say I want to return something else like example. Pattern it's still working. And the cool thing is that now I don't like this name of this class And I can rename the class without using a r uh rename refactoring because I'm actually referencing a note in their AC. It's not text anymore. So I can type something like configuration helper provider impuls so it looks more like Java right and you see all references are uh renamed on the fly Uh in the top of the code we have this new keyword.
Speaker 8: Maybe you knew it from Java, and I don't like this, I forgot to remove it. And down here we have the editor component for this statement. And it's just a templating language, so I can just remove remove this new canver uh new
Speaker 7: new keyword.
Speaker 8: And if I find the button, rebuild the project
Speaker 7: and it's gone.
Speaker 8: So and we can look at the generated uh source code
Speaker 7: so
Speaker 8: we like generate Java code out of it and you see it on the right so it's still normal Java
Speaker 7: So, what I can do with this?
Speaker 8: Actually, I can use uh formulas in my code
Speaker 7: and edit these formulas. I can use diagrams and edit these diagrams and it will be actual valid code. I can put date pickers into my code and maybe a selection for time zones.
Speaker 8: Or I can represent diagrams and do calculation, live calculation like you maybe know from Xcode Playground So
Speaker 7: it's quite a nice tool, download it, try it out. Yeah, thank you.
Speaker 1: Thank you for that. That was cool. We only have one more.
Speaker 8: Yes, this is our last one. Raphael is going to talk to us about saving ponies by reducing the resource consumption of our Django servers.
Speaker 1: Ooh, a Django talk. That seems relevant.
Speaker 8: It does. It does.
Speaker 1: One more never have I ever?
Speaker 8: Never have I ever accidentally CC'd instead of instead of BCC'd more than a hundred people. A few of you, alright. I think I think maybe more of you were lying.
Speaker 1: Never have I ever used the wrong emoji.
Speaker 8: Oh gosh.
Speaker 1: There you go.
Speaker 8: Alright, Raphael take it away. Woo
Speaker 6: Hello. So I tried to speak a bit slower than uh my previous talk at the Jungle Khan. Some people still remember it, I'm sorry. Um I'm going to be talking about about how you could reduce the resource consumptions of your Django project. So why would you be interested in that? So that's
Speaker 8: that came from me for our program in the office. So we are running a car-sharing system in Paris. And well
Speaker 6: it's it's a bit big that project. It's it's now seven years old, we have 300 models. So uh manage. py run server takes 12 SIGMS to complete before accepting any request.
Speaker 8: And we thought, yeah, it's not that good. So we had some some benchmark. The default setting with micro WISG said yeah startup 13 tickets memory consumption 900 megabytes on our production
Speaker 6: servers And when the first query arrives, we still need 3. 7 seconds to answer 200 okay. Just an empty response on our uh warm-up test uh endpoint. Not very good Why why does that happen? How does Django and MicroWhiskey work together? Well first MicroWisky starts in its default configuration and it prepares its uh worker processes and then it starts accepting requests from your load balancer When the first request arrives, the uh work process actually starts, loads an event loads your WISGI. py uh file, which loads Django, Jenga und also
Speaker 6: requests Then you handle more requests and at some point your worker dies because too many requests handled or too much memory construction or whichever settings you have decided to set. It is recycled and we go back to uh step
Speaker 8: Q Um
Speaker 6: and an important thing is the default uh microWisky configuration. It starts in what is called lazy
Speaker 8: mode.
Speaker 6: What does it mean? It's It will load your uh
Speaker 8: WisDip.
Speaker 6: py
Speaker 8: file in each uh worker process instead of the master. It
Speaker 6: does make sense on a custom local deployment where you have lots of small applications, not much load, and so it avoids over uh consuming resources. for uh request what might not come you might get one or two requests per hour.
Speaker 8: Well
Speaker 6: in forecation it's not gonna happen. So I set out an experiment and I decided to disable
Speaker 8: it.
Speaker 6: What happened?
Speaker 8: Well Wow, started time? Yeah, not that good. We saved a bit of memory, not much.
Speaker 6: But the first query handled by our worker went much cl much sooner. Why is that? Well, the main difference is um that now m microWizGi will load W your Whiskey. py file. first thing then forks its uh processes then the worker loads Django and once that worker is said ready MicroWiski accepts the requests. So we've moved some of our loading time in the master MicroWISG uh loading time instead of the worker. And since we recycle worker in our uh standard process lifecycle cy cycle we save time on every uh loading of our requests. But it
Speaker 6: it didn't feel good enough. So
Speaker 8: we decided to make a small change and to actually load the whole Django code base
Speaker 6: before forking processes. I explained why in afterwards So basically we just changed our uh getWhizGee application and called a small function we determed which says warm-up Django. And it what it does is basically create a fake request And just executes it in Django 's uh standard system. Small tip we have to close connections afterwards because here we are not exactly firing the proper Jenga signals, it was a bit of a hack. So And what we wanted. Okay, so global startup time nine seconds, memory usage way lower, and first query same time approximately. Why why that change? Well basically uh
Speaker 6: here at step two we now load the whole WizGee application which means that all the Django code, all your models In memory presentation, your URL comf everything required to handle your query requests is loaded before the processes are are forked and thus the memory is shared between your master process and each child. Even for recycled workers, so you consume suddenly much less memory and your infrastructure team is very happy That's it. Think of the ponies.
They type chords on a shorthand machine, and captioning software looks up the longest matching entry in its dictionary and sends the translated word to the screens in about a second.
Discussed at 5:37Typical speech ranges from about 180 to over 250 words per minute, and can occasionally exceed 300 words per minute. Captioners prefer speakers who talk steadily rather than at a very rapid pace.
Discussed at 7:58Organizers ask speakers for presentation previews and notes in advance, allowing captioners to prepare names, Welsh, and other foreign-language terms and avoid mistakes.
Discussed at 9:26Avoid hammering in many small nails or using a broad collar that cuts into the bark. A specialized treehouse attachment bolt makes a relatively small hole and can support several metric tons.
Discussed at 18:16Keep beams spaced away from the bark because the tree grows outward, and use attachment bolts that allow movement or suitable cables so swaying trees do not tear the structure apart.
Discussed at 19:50Instead of handling conversions in frontend JavaScript or Redux middleware, define custom Django REST Framework renderers and parsers so the backend converts between camelCase and snake_case.
Discussed at 26:32A noisy history makes tools such as git bisect harder to use and makes reverting merge commits confusing and error-prone. The speaker recommends using git rebase to reshape the history before pushing, keeping useful project history rather than every intermediate edit.
Discussed at 32:27A body scan is a short exercise in which you breathe slowly, move attention through your extremities and body, and notice physical sensations and emotions without fighting them. It can be practiced in either direction and for as long as feels useful.
Discussed at 36:15MPS is a language workbench for creating programming or domain-specific languages. Its projectional editor treats the abstract syntax tree as the source of truth and provides different views for editing it, enabling features such as structural renaming, formulas, diagrams, and date pickers in code.
Discussed at 40:48Load the complete Django application and perform a warm-up request before forking worker processes, then close database connections afterward. The forked workers can share the preloaded memory, reducing memory use and avoiding repeated Django loading when workers are recycled.
Discussed at 48:51Note: 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 June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025