Submind YouTube summaries
Thumbnail for Kiwi PyCon 2025 Lightning talks

Kiwi PyCon 2025 Lightning talks

Watch on YouTube

Video summary

The Kiwi PyCon 2025 lightning talks offered a diverse array of insights ranging from neuroscience-inspired computing concepts to practical software engineering challenges. Angus Fisk opened by describing sleep as the brain's essential garbage collection routine, explaining how neurons strengthen connections through synchronized firing while sleep renormalizes synaptic strengths to preserve learning potential without erasing acquired knowledge. This biological metaphor set the stage for technical discussions on state synchronization and data management, such as Dominic's presentation of "Gears," a bidirectional programming paradigm inspired by quantum computing that allows models and views to sync efficiently without copying data, proving useful in high-performance fields like rocket engineering. Similarly, Andy Zoo demonstrated AnyWidget, which bridges Python backends and JavaScript front-ends using traits for state synchronization, enabling seamless integration between Jupyter notebooks and modern UI frameworks like React Flow without third-party dependencies. Beyond theoretical paradigms, the speakers shared personal journeys and humorous anecdotes that highlighted the human side of technology development. Jay recounted his transition from creating DIY jewelry during lockdowns to crafting gifts, including a snake ring mistaken for an official Python symbol at PyCon Adelaide, while Sam Wolf humorously detailed his attempt to scan GitHub using fifty dollars in Google BigQuery credits to analyze food preferences at previous events—a query that remains running after sixty-three days due to its complexity. Josh Wolf's story of becoming one of Germany's first fully remote employees involved living out of tents and distributing food globally before settling in Taranaki, illustrating the adaptability required in modern work environments. These personal narratives were complemented by Richard Wesley's historical overview of aircraft speed limits post-World War II, which explained how swept wings solved sonic boom issues to enable faster jets like the Sabre until rockets eventually surpassed them. The session also delved into critical lessons regarding software complexity and project management strategies that often defy initial expectations. Richard emphasized "Rule Zero," noting that simple UI changes can mask deep underlying complexities, as evidenced by his experience where a two-day task expanded over a month due to overlooked database constraints; he advised using concrete examples like Gherkin for behavior-driven development and breaking problems into iterative steps to catch edge cases early. Beno Rice added levity with an analysis of art choices in olive paintings, arguing that both artistic representation and gender definitions rely on arbitrary decisions rather than inherent truths. Charlotte rounded out the technical discussions by introducing Project Slippy, a system designed to collect Super Smash Bros. Melee replays at scale using homebrew software to extract data from GameCube consoles via FTP or Wi-Fi, which has evolved from a basic HTML proof-of-concept into a robust tool supporting live streaming and spectator modes for tournament organizers in New Zealand and beyond.
Read the full video transcript
Welcome to lightning talks. >> Yeah. Uh so us and some 13 14 presenters are the only thing standing between you and there being no more conference. >> So there'd better be 13 really good talks. Um, these all go for fiveish minutes. Uh, we'll strictly enforce that. So, if you hit five minutes, we will applaud you off the stage very, very loudly. >> Should we do a practice? >> Let's do a practice. >> Okay. >> Stop. >> I think they can do better. The the applause was great, but we do need you to stop. >> They stopped much quicker than the Australians did the first time. >> That's true. But we could still we could still improve it. >> Hey. >> All right. Applause. >> Thanks, Chelsea. >> Okay. Uh, shall we get this all started? >> Do we have a timer first? >> That's a bit to set up. >> Where's Tom? >> Okay. Somebody else have a laptop that can >> Wait, no. Ben, >> Simon, >> great. >> Okay. >> The conference, Simon, as opposed to doing a lightning talk. Simon, you're the you're the timer. >> No. Yeah. I can vote for this one and then take >> Oh, great. Well, that works just fine. Okay. Uh, so Angus, uh, you're up first. >> Thank you very much. >> Stop. >> Hello. >> Uh, excellent. This is starting. Cool. Wonderful. So, hello. My name's Angus Fisk. I'm from the University of Sydney, and I thought this would be an excellent opportunity to talk to you about my favorite topic, which is sleep, which is what I did my PhD on. Uh, and because I still have enough of an academic ego, I have to tell you the institutions I was a part of. I did my PhD at University of Oxford and I now work at the University of Sydney and I'm really enjoying being here at Kiwi Pyon. So with no further ado, sleep your brain's garbage collection routine. Your brain is made up of neurons and you have billions and billions of neurons. The thing is it is not just about the number of neurons which you've got. So the neurons are the individual cells which make up your brain. Humans, as I've got here with the what I like to call the guys, gals, and non binary powers representation, have about 80 billion 80 billion neurons in their brain. It is not uh they are not spread evenly though. This big chunky bit at the top, which is where we do all of our thinking, only has about 10 billion brains. And we are absolutely not 10 billion neurons. We are absolutely not the ring leader in terms of the number of neurons that we've got. Elephants here actually have 257 billion neurons. So we do not have the most number of neurons in our brain but we do have the most number of interactions. We have about 100 trillion individual sinapses which are the things which connect the two different brain cells. Now neurons talk through synapses. So so we've got a neuron on the left here, a neuron on the right here and then this in the middle is a diagram of what happens at the two when they meet. that what we've got here is we've got a uh a a diagram of the electrical potential the electrical signal which the brain cell is firing along. It comes to the signups between the two releases a whole bunch of chemicals and then that causes another electrical potential in the secondary cell which then moves on and does all of its programming and whatever it does. But this so this is this is a very basic idea of of what they do. But how do different brain cells learn to talk together? Right? So we've got 80 billion 80 billion neurons and 100 100 trillion interactions and those did not come about by chance. Those those are being adapted every single day as we are learning and we are doing things with the world around us. The mechanism behind that is what I've illustrated here and it's called spike timing dependent pli plasticity which is a fun thing to go and Google if you want to. Essentially neurons that fire together wire together. So if you have one neuron that fires and then a second neuron that fires, if the second neuron fires after the first neuron, then they get stronger. So that's what I've illustrated here on the left. The neuron one at the bottom fires, the neuron two on at the top, then fires a little bit afterwards, that that connection gets stronger. The opposite is also true. If neuron one fires, but neuron two fires just before neuron one did, that connection gets weaker. Now, that is the very basic idea about long-term potentiation and it's fascinating to read and please ask me more about this and how they figured all this out in Squid, which is how they did it. But if you have a look at the arrows I've got here, you'll see that they are not even. So, the arrow for strengthen is about twice the size of the arrow for weaken because the time window to strengthens to strengthen the connection between two brain cells is about twice the size of the time window to weaken them. Now, I'm sure you can imagine the network effects of this. If you let this run rampant and then you have billions and billions and trillions and trillions of these going on over time, they will gradually get stronger. And this is what sleep is here to fix. None of you are neuroscientists. I hope so. You cannot tell me that I'm wrong because this is hypothesis and vague, you know, vague, you know, people are still figuring all this out. But on the left here, we've got, you know, a neuron with a bunch of sinapses on it that all start off at 100. During the day, you go around, you do things, you learn things, you figure things out, and most of them on average, they'll get stronger. You know, some will get a little bit weaker, but overall on the left here, we start at 300 as a total. We've got like 360 here in the middle. What sleep is doing, it is renormalizing the strength of all these sinapses. So, it is not removing any differences. It's maintaining the differences you have learned during the day, but it is bring them back to a normalized baseline. So you've still got potential to learn from there. So this is what I've got here on the right is they've turned them all the way back down so they they've got the same relative differences but they but but they but they are back to a more normal baseline that you can then use. This is what is happening happening during your sleep which I think is fascinating but just to give you a little bit of an idea how can you use this in your everyday work. This is why med you can sleep during meditation. You can do this process whilst you're meditating. It is not just sleep that you do this. Whilst you are uh whilst you are meditating, you do it as well as when you are bored. So this is why you should take a break and have a nap whenever you're stuck on something. Thank you very much. That is the end of my Thank you so much, Angus. Uh up next, we all love it when things have APIs that we can pull data off. >> Mention J. >> Oh, thank you. Up next, Jay on this side. and the thing that I just said about APIs, but you don't need an API. Please make Simon feel welcome. >> Hello. And this is a power grab. Um, I have Home Assistant at home. A lot of you probably do. Um, assistant has an awesome awesome electricity dashboard and I have powershop and 20 years ago or something, no maybe 10, 10 years ago, uh, I was with Wshop and they had an API which may be reopened to the public in the future, but there are no firm plans at this stage. Fine, I have a smart meter. Smart meter I can plug in into their RJ11 port. Uh, and um, okay. Um, you won't let me. Fine. Fine. You know what? I'll look on your website. Hey, what's that? Okay. The detailed consumption file. H. In that detailed consumption file, uh, is halfhourly data. H, what does that do? A quick inspector shows that it just does a simple HTTP get request. Nice. But to get the data for myself, I obviously need a cookie. Cool. remember user token. Ha, I can use that. Easy enough. Um, I grab me some Python uh requests, build up my request parameters and add my cookie in the par parameters and um that leads to uh ICSV. Um, this is my consumption for the 23rd of October. Uh, half hourly. Nice. shove that into pandas. Um, tell it to parse the date nicely and uh, warning. So, um, let's see. I just loop all that uh, CSV data and um, add it up because Home Assistant will every will have everything double uh, will have uh, sorry, not double summed. Uh so if it is an odd hour, I just add it to the uh to the previous hour and write everything. Um on uh what was it? Daylight savings time. Everything broke. So I worked my way through that and uh I write it into a different CSV. Now why do I write it into a different CSV? Well, go back to the presentation and there um I have this nice CSV where I have for each hour well this is just one but I can do it for every hour a state and a sum because that I can use in Home Assistant. Home Assistant handily uh has an import statistics. Um this import statistics tool is a bit weird. So that's why I needed to translate all that um all that data that I got from uh PowerShop. But um >> I got my daily usage. Um could I have sniffed uh my Android app? Sure I did. Guess what it does? It does the exact same thing. It pulls in the CSV and then translates it in your Android app. Thank you. >> I uh I just love seeing what people can do with Home Assistant. Uh you've given me some ideas for making my solar array work a bit better. Thank you for that. Um up next, uh we had some real difficulty getting uh Jay's microphone here attached uh because it got tangled up with some of the stuff they're about to talk about. >> Oh yeah. Uh, Dominic, you're over here. Um, but first, Jay. Hello. I'm here to tell you a bit of a story about me. Uh, way back in the early days of CO, I bought a pair of pliers, some side cutters, and a handful of bits of aluminium and copper. This wasn't ever really intended to be a lockdown project, but about a week after I bought those pliers, no one was allowed to go anywhere. So, while everyone else was learning how to make sourdough starters, I watched a lot of YouTube, set about creating my first few bracelets, and turning a whole bunch of my dice into wearable jewelry. I don't actually know when I took any of these photos because for about the first year or so, I wasn't confident enough in my work to take any photos. Uh, but these were all some of the very first things that I ever made when I set about making some jewelry. Uh, over time, two pairs of pliers wasn't enough. I uh ended up buying more pliers, some hammers, uh a jewelry saw, a few more pliers, some files, um other bits and pieces, and slowly expanded what I could do into more interesting things. I started experimenting with silver around I think this was 200 uh 22 uh and turning some of the things that I made into gifts for the first time. Uh, a whole bunch of these ended up going away to friends. Uh, the only one that I still own is the labradorite pendant on the ends there. Uh, which you'll probably see me wearing at other conferences. I didn't bring it with me to this one. Um, but the rest of these ones all turned into gifts. And then for uh Christmas last year, I started playing with some gold wire. Uh, some blue opals, some white opals, uh, lab created sapphires. Uh, some of those pendants haven't been taken off since I gave them to my family at Christmas. Uh, massively outlasted the durability I expected them to have. Um, I started buying more stainless steel for a lot of the chain stuff and getting into much larger, more elaborate pieces. Uh, they all took way, way longer than I expected. They all proved to prevent new interesting challenges I hadn't expected. Like, if the front is too heavy, none of them sit properly, so you need to balance the weight with the back of it as well. I've been getting into playing with different shapes and textures as well. Uh, the spiky one on the side there. I've made three of those now because every time I make one, someone wants it. And the just the color, I don't know what that's for or where that gets worn to, but I'm thinking maybe I find a way to make it part of my outfit for a wedding I'm off to next year. Um, funny story about that sneaker ring. Uh the first conference I wore it to was Pyon in Adelaide and I wore it because I had made a cool snake ring. Uh an attendee at the conference looked at the ring and said, "Ah, that's quite a proper." And I went, "What do you mean? It it it's a piece of jewelry that I made." Oh, but it it's a snake at the Python conference. Oh, yeah. Yeah. Okay. Yeah. No, I intended that. That was deliberate. Um uh but these are all the pieces that generally end up in my day-to-day wear these days. Uh I used to think my favorite thing to do was make jewelry and then I worked out my actual favorite thing to do was to see other people wearing my jewelry and then worked out that my favorite favorite thing to do is um talk about my jewelry. The easiest way to do that, wear it. Um, so I said I was going to tell a story, and stories usually have an ending, and this one doesn't yet. Uh, stories should also have a point, and this one doesn't really, either. Um, except make shiny things. Show your shiny things off. Maybe come and talk to us about your shiny things. Put more lightning talks in. >> Oh, yes. And chicken. Thank you so much, Jay. Um, Jay, I I was looking at some of Jay's jewelry last night at dinner and it genuinely made me want to get back into making things and also like commission a few pieces from them as well. Um, but for now, let's go from chains to gears and then back and forth and back and forth with with some Oh, I I was so proud of myself. be like Chris forgot as well and I'm going to remember this time. Thanks Katie for reminding me. Um on this side is Sam Bishop and we'll see at the end of this talk if Chris remembers to to do that bit the second time. This is going so well. >> But up next we have Dominic with Gears birectional programming. Please make him feel welcome. >> Thank you. So I have a background in uh uh quantum computing and I now work at a rocket company and that makes for some spicy combinations and this is uh the result of me thinking about how to solve a problem that others have had and solving it in a maybe a different way. So if you want to build a rocket this is not real rocket data but just a screenshot of Desmos but often when you have rocket data you want to look at hey this thing looks weird can this other engineer please look at that uh too. So you want to give them the minimal amount of data to have a look at it. Say you zoom in and say you only want to grab this amount of data and then you want to share it. But when you're building your own thing, it has to be high performance. You have a bunch of customer requirements because you're doing new things. Um so you have to write your own thing to some extent and all software is written under some amount of time pressure. So it's okay uh you know that there are some changes needed. For example, uh you might need to separate the model and the view controller because the way this was uh used to be done is that when you change things here, then it actually modifies the like specific text box over there uh so that it goes into the model instead of uh actually when you have access to the graph here, you just uh modify the graph and then it uh syncs to that. So one way of architecting this would be you know you define your model you have some bounds for your requests and your view and in the new architecture uh with gears you define your state as hey you have a gear of this graph state and uh then you derive things where hey I don't want to have the whole state I just want to have access to the uh x range of the request And uh you make a gear that is connected and this lambda function will get uh called whenever things change. And you also want to have things go in a reverse so that the graph gets updated when uh the bounds change in the text box. And then you compo can compose together your UI by saying hey both the request editor and the graph display have mutable access to this little bit of the overall uh state of our application. And uh we can give the output of our request editor when the user presses the button to the graph display. So that's another gear as well. Um so this thing here is the most complicated thing, but you can use Python magic uh to uh make things a lot simpler. So you can use a literal literal magic mock and pass it into this function and see what properties they access and then generate uh the inverse thing so that uh you uh can go the other way automatically. Uh this is a new paradigm. You can view it uh in different ways. Uh one way to view at it is hey it's just the observer pattern and you found a way to compose your uh observers. Uh good job. Another way of looking at it is, hey, this is ReactJS, but you've left out the HTML stuff, but you know, you can use your own UI thing and it's not tied into like this one framework, which I find kind of cool. Another way of looking at it is it's actually uh birectional programming in the sense of you can travel back in uh time between like cause and effect. And this is kind of where I think I got the inspiration for this from. So introducing quantum computing in 30 seconds. Quantum computers can only do operations that can be reversed. So you can't sort a list because that would destroy information because uh at the bottom of the program you can't get the unsorted list back. So uh with gears and with quantum computing what you can do is you can transform the information such that you keep the uh ordering information on how to get back. And with gears that would allow you to mutate specific items while still having all of your state consistent. All righty. Sorry that was a bit quick but only had five minutes. So thank you. >> So to summarize, things are about to get simple. Then you show a lambda expression and then you talk about quantum computing. Uh five five minute talks. Um Josh Wolf is on deck. I did it. Uh but first uh Sam is about to tell us about what they did with $50. >> Okay. So uh for anyone who was there for the battle decks yesterday, there was much fun had and uh it got stuck in my mind that it would be fun to find out people had a lot of interesting things on the chicken, pickle, and snack. And uh as the battle decks were fun, everyone loved the snack, everyone loved the pickle, and everyone loved the chicken. >> But which one was loved the most? I actually wanted to find this out with data by scanning all of GitHub. So I wrote a test query. It was 300 lines. It was short. >> Yep. Yep. And uh the first query ran really quick. It but it only actually had a one emoji show up in the test results here. Uh just the one buried about 300 lines down there. But um yeah, the uh first result only had the one emoji. Sad. So uh while it was just a subset of the full query, which was 500 5,63 lines, very big. Look at that sidebar. Yeah. So, that got fired up and it's been running for a while now and I can't yet answer who wins between these three yet because it's still going and may if that number is uh to be believed possibly taken a lot longer than I thought it might. I don't use Google Big Query very often, so I literally don't know if it's telling me that's a 63-day query or it's just telling me something else. So, I'm going to find that out later. because yeah, I have no idea if this $50 silly idea is now a $500 silly idea or worse. So, if anyone actually knows Big Query, feel free to talk to me later. And that was it. Thank you so much, Sam. This next talk is about >> Amber. >> At least Amber is paying slightly less attention than I am. So that's nice. So this next talk is about working remotely from a tent. Are we actually ready? Because the last talk ran a little short. >> Lovely. Okay. So, please welcome Josh Wolf. >> Okay. So, um how many people here have read this book, The 4Hour Work Week? So, I read it. It's an old school book now. Um I read it. The first step in there is that you make your job fully remote so that you don't get you're not locked into a location. I read it a long time ago. It took me a long time to execute on it, but I did it in 2018. I was living in Brisbane, Australia. Beautiful city. Um kind of reminds me of Wellington. They have we have the river in Brisbane and we got the you know the sea here in Wellington. Um that's a co-working space in Brisbane I was working from and I got a job working for a company in Germany and I was their first full fully remote um employee and they wanted to become a fully remote company and co came along and then they had to do it overnight but I was the first one. Um this is in Berlin. Uh it has the highest number of vegetarian restaurants of any city in in uh in Europe for some reason. I don't know why. This is the vegetarian butcher. Um, some signs around Berlin here up with the around diggerory. Please make you know around stands and I make me nothing out good before sentences. Um, another vegetarian restaurant. And there's heaps of Sudin um restaurants for some reason there. Vegetarian Sudin restaurants. There's two of them in that in that um little town. I bought these glasses at the market there. Get my Berlin kind of vibe on. Um, heaps of bikes around there and it's a really interesting place. It's not at all what I expected. I didn't know what I expected when I went to Germany. Um, man, you'll love it. These guys are like anti-establishment to the max. Uber, go home. They want to pay for everything in cash. They don't want to People don't take cards there in Berlin. Um, that's kind of what it looks like. It's crazy. Um, I actually realized my expectation of Berlin came from playing Call of Duty. And I was like, if the furer could see this place, he would be spinning in his bunker. Um, heaps of bikes there. I got around on bikes and scooters. Um, it's a great place. So funky. Um, really bohemian. Um, and then I went to, uh, Paris and, um, that's me looking at the Eiffel Tower, eating a quason with my Berlin glasses on. And I entered into a hackathon there. I did heaps of hackathons. Hackathons are a really good way to make connections and get skills. Um, did the whole hackathon over the weekend in French. Stayed up for the whole weekend and then we won an award there. That's me looking absolutely wasted. And there's the team that I did the hackathon with. Then I flew back to uh Brisbane from there after that and went into a Haskell workshop and I was using the D'vorak keyboard and I was so exhausted I was like I'm going back to WER. Changed my keyboard layout back and discovered that I could no longer touch type inwerty. Um this is in Thailand in the in the airport. This is um Lord Vishnu dancing on um the snake uh Vasuki. The the demigods and the demons are churning the milk ocean. Um, that was back in Berlin. I went back there. I've been there a few times. It's quite cool. Um, this is in Sweden. I wasn't sure what that building was. I think it's a Stockholm. Yeah, it's a it's a um something. I know. That's the city hall. Okay. Graveyard. Um, ABBA the museum. Um, that's word lens. You know, it's translating live in my camera. I went to Mojang because I programmed in Minecraft and um uh they did a video about the some of the work I did for type 1 diabetes in Minecraft and so I went to visit them. That's my first wife, Pum. Um shout outs to Dwayne. Actually, it's the fourth anniversary of her passing away. She passed away in 21 four years ago today. Um so I changed from D'vorak to Hellmac, which is a genetically it's designed by an AI. It's the ultimate keyboard layout. Just a shout out for that one there. Uh this is my son Prolad. Um this was here in in uh parliament. So this was um during the co lockdowns. There's that big protest there. Side note, I'm a Hari Krishna. We came down did the chanting thing here. Um stayed there for 3 weeks in a tent. That's when I first started living in a tent and we um we put a food kitchen together and we distributed 3,000 plates of food free to people there every day for three weeks. And I was working the whole time out of the tent. um great cross-section of New Zealand community. I think enough time has gone past that it's a historical event now. Um and I got this petrol generator which is how I because it was co-working before now it's petrol generators and um that's me doing my Hari Krishna thing and um some of the artwork from around there. Then from there I met uh my now wife uh Donna and then we moved to Tatanaki to a community there and then we moved onto this land and lived with some cows and chickens in a tent for a year. I kind of got used to it underneath the shadow of the mountain which is beautiful. We don't eat eggs. We trade them with the neighbors. We get milk and food from them. Cows have grown up uh quite a lot now. So I worked out of that tent for one year and then I get the company to pay for me to go to speak at conferences and then I stay there for an extended period of work. This is India. Thank you. >> Yeah, if if you're wondering how I know that was City Hall, it was where uh a certain big blue tech company started brainwashing me by ABBA. Uh I can tell you that story later. We >> have questions. >> Yeah. Yeah. Yeah. I'm getting there. Uh Richard Wesley, you're on this side. Um, so we've gone from one set of holiday pics to I think Amber is also going to present uh her holiday pick. >> Uh, wait, no, no, sorry. Um, sorry. This is not about chickens. I am stealing Veno's uh intellectual property though. So, um, talk about to KL Marx about that. Anyway, um, I'm using Linux, so therefore I can't actually see my notes. So, um, so, uh, between 1936 and 1945, some bad things happened. Yeah, a little. Um, so, uh, I'm not going to talk about those, but I am going to talk about some of the stuff that happened afterwards. Now, aviation in, uh, the Second World War commonly didn't get past 0.5 mark. Now you can define the sound barrier or mark 1 as uh 1100 km/h at sea level um or for the Americans some uh more custom units. So uh in 19 so if we look at the state-of-the-art at least in America in 1932 there was the uh P26 the peashooter which I would not want to be flying a combat plane called the peashooter. Um it was 380 km/h and it was very quickly replaced. Uh in by 38 the Ara Cobra was going 626 km/h. In 41 the P47 Thunderbolt hit about 680. Uh by the end of the war they had started making jet fighters which could go much faster but they were kind of stuck around this 800 uh 880 sort of uh speed until uh they just added more force which worked um or they came up with something better which was the uh angled wing the swept wing. So what happened? Operation paperclipip happened which is basically uh imagine AI training except it's scientists and you go to Germany and you get you go to like von brawn and you being co-pilot are just like hi uh would you like to come work for me and also I have a gun um and uh we now need to fight the true enemy of public healthare I mean communism. So the Germans during the Second World War did have some information. They did some tests and they discovered that when you're go your wing is going really fast. If you have point 8 mark speed uh at parts of the wing uh it will be going faster than the sound barrier. This causes sonic booms, tiny sonic booms which increases the drag and cause things as to shake and fall apart. Now because of the pre pressure differentials it's closer on the lower side than the upside. Yeah. Uh, this also is what causes Mac tuck, which is where if you start going at that speed, you start to pitch down and some planes that were not made to deal with this would just become uncontrollable. So, there's some math and math is for nerds, but thankfully I'm a nerd. Um so the line when you have the air going across it because it's swept uh there's some cosine sign something but essentially the wing is thinner than you would expect uh perpendicular to the wind. So you ended up with the Saber which it went quite a lot faster. Um and it was uh able to do that much lower drag and then and uh then 1950 happened, the Korean War happened and uh the Mig 15 happened and uh everyone in America went oh no. So that was much faster. So the Americans just kept putting more force on it. Uh and it sort of worked. Um, they made something called the Saber Dog, which is cool. Um, but then, uh, we came up with something, uh, well, the Canadians came up with something better, but we came up with something better after that. Um, the Commonwealth Aircraft Corporation, they made a bunch of, uh, trainer aircraft and that sort of thing, and they decided, you know, we can we can make a jet aircraft. So, they ended up making this. Uh so it's it was the most powerful uh saber that was made and they basically decided, yeah, we're just going to cut out all the front bit, put an engine in, put some better guns in, just put some rockets on there. Yeah, cool. Um it never fired a shot in anger, weirdly enough. Um it did fly around a lot during I think the uh Indonesian emergency. Um but no one really cared. Uh and that was because while we were making our good thing at transic aircraft and it was super good uh the Americans then just went supersonic and uh then they made that supersonic launch out of a rocket. So that's cool. Uh there's a lesson to be had here about building technology and making the best technology and then just being completely made irrelevant. So, >> thanks. >> I just said >> Katie's up next. I I said it before they even turned my microphone on this time. I was ready. >> Yes. Thank you so much for uh more propaganda from Big Bird, I guess. Slash Big Melbourne. So, up next we have Katie. Um, but now for something else that flies. This is about time or birds. It It works either way. Please, please make Richard feel welcome. >> Thank you all. So, you may be wondering why I uh am wandering around the world talking about time and uh waterfall and the reason is that I'm one of the developers at duck db. Uh, I work on time and uh, this is going to be a chopped up version of a talk I gave about two months ago and so hopefully I haven't chopped too much out of it. Uh, I can't stick around afterwards. So if you want to get a hold of me, I'm on Discord at Hawkfish and that's my email and stuff. So what is DuckDv? Well, here's a whole pile of gibberish explaining supposedly what it does. And there's the original Duck, Wilbur, with our CEO, Hannis. Uh, and I wasn't going to put these slides in there, but someone came up to me the other day and had seen them before and thought they were great. So, what is duct DB? And if you go, you've seen these these various databases mentioned around uh in the last couple of days. And where ductb fits in is in that hole. It's an analytic inprocess database. So, why am I talking about a database at a Python conference? It's because duct DB was originally developed as a Python module. It is very easy to install. Just pip install duct db. It has no dependencies. So you don't have to worry about all of that. You don't have to set up a server and it works straight out of the box without any configuration. And it's all about performance. We have state-of-the-art construction. We're all database research nerds. We use columner storage, a vectorzed execution engine. We do everything deeply in parallel. We have a query optimizer just like most databases. And one thing we can do uh that's we continue to work on and keep getting better at is we can work on data that's larger than your memory. So we will spill things to disk and come back and get it as we need it. So that's duct DB itself. But what about me? Well, I uh I'm only part-time because I tried to retire and failed. And what I work on is time. And there's sort of three big things. The first one is what's called temporal joins. And if you've ever hung around with database people, they're always talking about joins. But they're always talking about joins where you have two tables and they are matched on equal keys. So you make a wider table. Problem is that for time generally you don't want that. You want something with inequalities and nobody does any research on that. I'm trying to work on that. So first example uh suppose you are uh in Battlestar Galactica and you want to work out combat pay for all of the pilots. You have two tables. One of which is the uh times the pilots are out on patrol and the other one is the time the asylons came and tried to kill you all. And so you make what you can do with this is create what's called a joint state table which is when someone was in the air and fighting the sylons. And to do this you need to do a join which has two inequalities in it. We have a great algorithm for doing this and uh I actually have it's not as fast as I would like it and my project for the next release is to make this even faster but I did a a little benchmark the other day and did 10 million rows so against itself and it was able to run this in three and a half seconds on my little laptop here. So another type of temporal join we have implemented uh this was brought up also with the Polish talk is is an as of join and this is just where you you like have a set of uh trading data and you want to know what your portfolio was worth at a particular point in time or you have time of use tariffs for electricity or something and you just join these two time series together so that you can figure out what the value of your portfolio or what your electricity bill is. And uh we have this in fact we have three different ways of doing it. And one of the advantages of SQL is that you just tell us what you want and we go and figure it out. Uh the last one here is called a positional join. And this came because we are part of you know the Python ecosystem and we work with dataf frames. And unlike dataf frames, SQL has unordered data. But everybody working over in dataf frame land has ordered data. And they were surprised that you couldn't just slap things together. So we created this thing called a positional join. And this also brings up a little point which is one of the things about being embedded is that we can read data frames directly without copying them. So there's no there's no copying involved which is great for performance but the big thing I work on is the windowing system. And what is windowing? Well, you can think of it as being like moving averages and things like that. And where it came from in the SQL world was originally in the days of COD, you had single row. >> All right. Sorry. >> All right. Never mind. Okay, we're we are going to have to do another rehearsal. So, when the timer starts counting down, we do this finger applause only so that doesn't drown out the presenter. And then we applaud. >> Chris, I don't think we actually told them how to do that the first time. >> Oh, >> I'm so sure we didn't. >> We're going so well this afternoon, aren't we? Canad >> um who do we want to be next on this side? I think uh Andy Andy's on on this side. Um AV people, uh please keep me miked through this um for reasons that will become clear later. Um >> there was no reaction over here whatsoever. >> It's fine. >> Hey. Anyway, uh here's Katie. Hey, hey, hey. >> Chicken dopie chicken. VM chicken source. Chicken chicken in saw. Chicken chicken >> chicken. Chick chicken >> chicken. github.com entol/chicken chicken chicken chicken chicken chicken imports this as chicken chicken chicken chicken egg chicken chicken return chicken egg chicken chicken oh chicken chicken done chicken stole Chicken documentation. Chicken chicken community. Pull request. Chicken play request chicken. Chicken. Chicken. Plet. Chicken. Egg. Chicken. Chicken. French chicken. Chicken. Chicken. Chicken. Make file. Chicken. Chicken. Chicken. Chicken. Chicken. Chicken. Chicken. Plet. Chicken. Chicken. Chicken. French. Chicken. Chicken. Get text. Chicken. Chicken. Chicken. International. Chicken. Chicken. Chicken. CHICKEN. >> You know, I'm not done. >> Now. >> Wait. There's more. I want to apologize for battle decks yesterday. I may have submitted chicken, but I didn't create chicken. This guy created chicken. That's Nicholas Tovy. Um he created chickenpie but contrary to popular belief he did not invent chicken. This is chicken. This is a fully correct um formatted scientific paper where everything is chicken. However, there was also a presentation of chicken. I apologize to those people in the room who will remember what version of PowerPoint this comes from. Chicken chicken Dr. Chicken University of Chicken. Now chicken chicken database chicken chicken mat lab chicken medium chicken chicken database. Chicken chickens chicken binary chicken chicken. >> Uh, stop. >> Chicken. Chicken. >> Chicken. Chicken. Chicken. Chicken. Chicken. Chicken. Chicken. Chicken. Sum of chicken. Chicken. Chicken. >> Thank you. Is it actually like for real this time? >> Yes. >> Chicken chicken >> chicken. >> On deck we have Richard Foreshaw. I remembered this time. >> Yay. >> And uh before then, please welcome Andy Zoo. >> Is it connected? Oh, sorry. >> Okay. Um, >> sorry, I realized I messed up my talk, so I need to do a little bit of work first. Okay. Uh, so a little bit about me. I've spent the past 12 years working on Python and C++ in finance. Um about in that time I spent about two weeks uh doing JavaScript. So I feel very qualified to waste the last five or so minutes of your conference speaking about JavaScript. Um obviously all of us in the room here are really good at loading cool stuff in Python. Uh but to present that to nontechnical users, we'll probably have to uh the usual medium for that is the web browser. Um and so we'll have to drop down into another language like JavaScript. A common place for that u for us to start with is Jupyter notebooks. So Jupiter provides this mechanism called extensions where you can bundle uh your Python data um with a JavaScript library and publish an extension and it provides a cookie cutter to build such projects and it's curated lists of all these cool extensions. But if we take a closer look at this, um, so this is a list of the best Jupyter extensions. Um, and sadly a lot of them are dead, have no activity. And a big reason for that is that, uh, under the hood, a lot of things change. Jupiter versions migrate, um, JavaScript dependencies migrate, and us as Python developers, it's really hard for us to keep up with all these changes on the JavaScript side of things. And not only that, once you have your widget, if you want to make it useful in other uh locations, like if you want to make it available on a Python web framework, um there's so many frameworks out there, uh Streamlit, Nice Guy, so forth. Um and it's just impossible for widget owners. On the flip side, if you uh have a UI framework, uh in order to get traction, you need to uh provide users with all the extensions they might want to use. Um, and you get the idea. There's tens of UI libraries, hundreds of widgets, thousands of dead extensions. So, what where any widget comes in here is any widget says, "Look, what we as UI frameworks care about or need to know how to do is how do you synchronize state between your Python uh data and your front end." So, a model here is just some typed data class. Um, and the UI frameworks, they're good at doing things like handling communications over websockets, how to debounce callbacks and so forth. Uh, and so if you're writing a widget, now all you need to do is if the user clicks on something in JavaScript, uh, you can then set up what callback you want to run in Python using dot traits. On the flip side, if you've changed some data in Python, then you can register a call back in JavaScript using any any model.on on. And so now, of course, I have a quick little demo of that. Uh, so the only thing I want to highlight here is that there's no third party dependencies here. If I want to use uh this cool financial plotting library called lightweight charts, um, this is just pure Python code with a JavaScript string embedded. Now I have some code to generate random time series data. And then bam, it works in my browser. And uh if I want to iterate it on it like uh if I want to change the background to green just like you would in northern notebook I just change that code run it again. Now it turns green. Or maybe I want to update the data. So I do data and the data changes. uh a slightly cooler example that my uh intern Sophia has helped work on here. Uh so I won't run this again, but you can see here um we manage a lot of different types of data and we want to look at the dependencies between that data. So we can use a graph to visualize that. Um and in Python, if I want to understand um what all this data was, it's kind of really difficult. But with a JavaScript uh application like react flow, it becomes easy. I can select data. Um, and then I can use traitlets to link it. Um, and you can see now I've used uh link to uh get some tags here. I can clear those and then they will unselect and so forth. Thanks guys. That's it. >> Thanks. Thanks. Thanks Andy. Thanks Andy. Okay. Um, uh, regrettably, Beno's up on this side. >> Yeah. Uh, and, uh, please thank Richard for sure. Oh, wait. That was a shortcut. I shouldn't have done that. >> Good segue. I love it. Um, we're we're all here at Pyon to learn things, I hope. Uh but I've I've learned that uh best way of learning things is often from doing things wrong and I'm hoping to share one thing that I did wrong and some lessons so that uh you don't make the same mistake. Uh I work for a on demand delivery company called Instatra. They like to deliver all kinds of stuff whenever you want it. And one of the things we do at the end of a job is we uh show an invoice for the customer. Uh we had this um horrible old old invoice from the original and we wanted to make it nice and sparkly. Um and give me a woo whoever says it's just who whoever's heard it's just a UI change. It's just a UI change. Right. There is a little bit more to it. We wanted to add some more line items just to you know give um customers some more clarity but we've recently done some database updates to uh that I thought uh it it will support this easily. So it's just a UI change, right? Uh we use BDD. Um which is great. I love it. Uh but um given the simplicity of this task and uh my 20 years of experience, my ego stepped in and said we don't need to do this. We can just go from uh what we thought to straight to coding. What could possibly go wrong? Here's what here's a short list of wet run. Uh yeah, so we our our thing that we done to support this in the database didn't support it at all to different use cases. Uh we wanted to show GST outbreaks um breakdowns to the customer and our GST storage and data was just all over the place. We wanted to do other rules and say this is your weekend charge and those ends up being super super complicated. We forgot we email invoices to customers. I don't know how we did this. Uh and then that was like well now we have to support all of these all these email clients. In short uh something that I thought would take a couple of days uh was in progress for over a month. So what did we learn? What did I learn? And what can I share with you? Uh I'm calling this rule zero. We live in a complex world and we work on software which is in itself complex. So nothing is ever as simple as it seems. Uh I have to remind myself of this every day and it always turns out to be true. Um discuss everything. discussing things I think uh is like a little lubricant for your brain and it really kind of unlocks hidden problems that your subconscious is trying to tell you. Uh so discussion works. My tips for discussion of have worked for me is uh talk to other people, talk to AI. Who's ever done uh rubber ducking? Yeah, talk to rubber duck. Uh or you can try talking to yourself. Uh I've done all of all these things. I would recommend though uh it's not usually wise to talk to yourself when there are other people in the room. Uh you do get some strange looks. Uh use examples. Uh because we use BDD, we use Girkin. Uh just like uh discussing with with people who kind of unlocks things in your brain. I also think that writing things down tends to slow your brain down and makes you think more about what's happening. And usually you're halfway through writing an example and your brain goes, "Hey, you might have forgotten this case or that case." So using examples, uh, definitely recommend that. And break things down. Very simple. Just iterate. We're all taught to iterate and it works. You know, looking back on the that that invoice, there are at least four things that I could have broken that down into and make the problem simpler. Um, I wrote a thing about iterating on my blog a few weeks ago and it's not only good for your business and your software. I think it's also good for your mental health and your sanity. Uh, QR code incoming if anyone wants to check out what I wrote about iterating. But those are my tips. Uh, I hope they are useful and thank you very much. >> Thank you so much, Richard. >> And so because this is my like fourth or fifth iteration of doing this little interstitial bit, uh, I now know without Katie pointing, uh, that I need to let you all know that Charlotte is up next on this side. Um but like one of the great things about these conferences in this community is that there is a lot of uh sort of gender expansiveness and and and gender exploration. And it means that we get to especially in these lightning talks uh hear people talk about gender uh from a bunch of different perspectives which is what No, hang on. This is a cisgender heterosexual man. I can't be right. Unfortunately, Beno Rice. >> Um, so yeah, I'm not here to talk about gender. I'm here to talk about art. Um, I am, as everyone knows, a noted art scholar. Um, I from my extensive and deeply researched understanding of art, I know that art is all about choices. And uh one of the choices that my esteemed art colleague Chris uh made uh both of us made, we staying at the same hotel, which is by accident. We didn't choose to do that as a coordinated thing, but we ended up there and we ran into each other at breakfast and we saw some art. Um the hotel chose this piece. They also chose to print it with the watermark. Um they also chose this piece and it was studying this piece that really led us into a very deep and you know scholarly discussion um about the choices in this work. Um let's look at some. So first talk about perspective because it took me ages to work out those ones are playing limbo. Um but then we can talk about light art. You know light and shadow are very important things in art. From these ones here we can tell that the light's coming from kind of over there. But then what's this? That's coming from over there. Uh if if those lights are there, then what are these shadows? Why are these shadows? Um and and looking further, what's this? Is that a ring light? But back down here. Um so the these these two olives are wearing clothes. Um this one is wearing heels. This one appears to have removed part of a bikini. From this we can assume two things neither of which are good. Uh the first is that all the female coated olives are native naked. And the second is that the gender of an olive appears to be determined by whether their garnish faces up or down. Um, so this led us into a deep rabbit hole as to who this artist here. So let's learn about the self-proclaimed rock star of the art world, Michael Godard. Um, so in order to do deep research into art, you clearly started their website. Um, he's got some photos here. Let's have a look at some of those. You can hear this. Um I he you'll also be shocked to find out he lives in Las Vegas. Um celebrity. I don't know. I feel like I should know who this is, but I don't. But what I do know is he left a time stamp on it. Um that's Oussie Osborne. Um and it's nice to see that, you know, X the everything app is still around somewhere. He chose all of those photos to put on his website. Um but back to the primary source material. We look at his paintings menu and what's the what's that? Respect the olives, I guess. Uh but what's this undercarriage? I don't understand it. But back to gender. Um so we've established the rigorous analysis that olives have gender apparently. Um religion is also here. Um and here is the eternal struggle between the feminine and the masculine, I guess. But even artists, you know, artists grow and they discover new things about themselves and the world. And at some point, Michael discovered that there are multiple ways to depict gender in art. Apparently, girl can also be strawberry. Um, I'm also starting to get a bit of an idea of what his worldview is like. Um, but here's an interesting one. This is a tptic, uh, which I think depicts a a search for sort of selfidentity and self-improvement, um, followed by a realization that they're already awesome and who cares. I I think that's what it means. Anyway, um but you know, it's also important in art to acknowledge uh influences and other great historical works. No, but seriously, and sometimes you need more than one go at it. Uh and given that, you know, we've we've established that olives and strawberries are genders, this must be the 13 genders. Um, but again, like could I own a piece of this art? The answer is sort of. Um, um, or maybe you could meet it. No, I guess not. Um, but surely his worth works are worth a bit. I mean, that's some stuff. But then Reddit said, "Oh, I uh found it at a thrift shop." Um, and whoever owned this definitely wore their hair in a greasy ponytail or they're a Vegas or worked in a bar. I mean, this thing My cousin's ex had this painting. He was a bartender and had a greasy ponytail and apparently it went for the grand total of $8. Um, but if all else fails, you could buy this book of the man. Oh, or in conclusion, both art and gender are about choices. And I might may not know much about either, but I think I know more than he does. >> Thank you. Thank you, Beno, for summarizing uh my pain from this morning much more eloquently than I possibly could have. Uh time for our last lightning talk. >> No, it's Charlotte. It's amazing. Let's go. >> Oh, that is a small window. Let's see if Mac OS will let me. Oh gosh, there is a lot of input delay on a capture card. Uh, >> hey. Okay, great. I'm going to be talking about collecting video game replays at scale. So, in the beginning, the universe in the beginning, the universe was created. That was a little boring. We'll get to 2001 where Super Smash Brothers Melee for the Gamecube was released. And this is way more interesting. Let's catch up on about 17 years of Super Smash Brothers Melee. Wow. >> Yo. Oh no. >> Woo. We're all experts now in Super Smash Brothers mainly. So in 2018, Fizzy 36 came up with this project called Project Slippy. Uh this is to collect um and replay, you know, replays of a game that was never supposed to have replays. So it's actually quite a technical achievement. So awesome. We're all caught up now. And so, you know, we get these replays off tournament consoles. How do we get them off the consoles? USBs, of course. But hang on. Melee was released for the Gamecube and that looks an awful lot like a Wii. But unfortunately, Nintendo pulled a sneaky and released the Gamecube again, but it's a Wii now and we all fell for it. And we run Gamecube games on the Wii with a homebrew app called Nintendo by uh Fix Fix94 and a whole bunch of other people. Um, and then Slippy Project forked by the Fizzy by Fizzy and all the Project Slippy people. And then I forked it again uh to add FTP functionality. What is the FTP functionality? Well, the Wii has a revolutionary new thing called Wi-Fi to connect to the internet. Yeah. Or with or Ethernet with a compatible adapter. Um, yeah. So, this allows the console to connect to the server. Uh, that's a game capture down the bottom. And we can see here it connects to the server. You can't really see it, but it's writing live the file live. And, you know, it's pretty cool, right? Um, so, you know, you can click the replays from all the consoles at your tournament. Um, and you can if someone hits a set clip, they can go back and watch it later. Um, yeah. So, the initial version is, uh, looks kind of like this. This is the web UI. It's very ugly. Uh, and it just shows, you know, it's being uploaded. And later on, I added some fun stuff to like be like, oh, you know, you can see, you can filter it, you know, by the character and stuff. You can, you know, you'll be able to find it a little easier. But like, why wait until the replay is finished? Um, so, you know, we can actually just pipe the data directly into the slippy, uh, replay viewer. Uh so you know we could see so now you could watch a game remotely uh from you know uh a million miles away if you wanted. Uh and you know that might actually suck to hit your server that much. So you could uh you could use a relay like Slippy TV which is again not something made by me but it looks a little bit like this. Um and you know there's an extra about 300 mills of delay because we know we're going back to America but it doesn't really matter. There's about 2 seconds of delay inherently anyway because the Wii is not great. Um, and then you know, all the stuff to get it back into the replay viewer, which is a forked version of Dolphin, which is a Wii and Gamecube emulator. Um, yeah. And then there's some other stuff too that I also didn't make, like spectator mode, which is a fork, of Slippy L, which is a fork of um, yeah, and, um, this allows you to view the game in a browser, which is pretty cool, too. There's a bit of lag and jitter because for reasons. Uh, I mean, the reason is that it's not play, it's not emulating the game. It's just showing the state of the replay because you know it's uh the replay is more than just the inputs. Um yeah it's yeah there's no like interpolation and stuff like that cuz in emulator you can just play forward and reync when you get out of touch. So you saw the ugly web UI version at the start. It was a proof of concept. It's about 500 lines including the HTML in the file. It's just a blob and you know I've sort of bolted on stuff and stuff and stuff and stuff and now it's you know it's big and it's ugly but it's it's a proof of concept. It's agnostic to the client, which is um you know because it's just FTP at the end of the day. Um yeah, so hopefully someone wants to sees this, thinks it's really cool, and comes along and writes a way better server than I can and has, you know, actual design skills, um you can follow me on all of the places, but more importantly, if you are a tournament organizer watching this either now or in the future and this seems really cool to you, please uh contact me. Uh this is only used in one local and one tiny city in one tiny country. Speaking of which, go to your locals. Uh and if you're in Wellington, they're at Respawn Esports Center, 9 Minute Street. Uh I'm on the team that helped run those. Wednesday nights and Sundays, there's CS and Christ Church at Oakland Hamilton. If you Google New Zealand Smash Discord, you'll probably find it. And obviously in Australia and all over the world, there are scenes. Uh and special thanks to all of these people, the Slippy contributors. And a special shout out to Nichollet who helped me with various questions about C programming because again I'm not a C programmer. Python. All right. Thank you.