We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

EuroPython 2020 - Lightning Talks 07/24

00:00

Formal Metadata

Title
EuroPython 2020 - Lightning Talks 07/24
Title of Series
Number of Parts
130
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
61
Thumbnail
26:38
95
106
TouchscreenSlide rulePoint (geometry)Multiplication signShared memoryMeeting/Interview
Form (programming)Slide ruleMultiplication signOrder (biology)CountingThermal conductivityRandomizationGoogolCASE <Informatik>BitCodeLaptopElectronic mailing listColor confinementSet (mathematics)Computer animationMeeting/Interview
EmailMaxima and minimaMultiplication signBitQuicksortLevel (video gaming)Maxima and minimaCodeDegree (graph theory)Table (information)Point (geometry)Structural loadSubject indexingGame theoryStatement (computer science)Chaos (cosmogony)2 (number)Group actionLaptopMereologyFrame problemType theoryDisk read-and-write headResultantExterior algebraProduct (business)Physical systemFunctional (mathematics)ImplementationInjektivitätControl flowMessage passingSet (mathematics)Computer animation
Message passingRevision controlConfiguration spaceInformationElectric currentTape driveCodeSoftware testingFile formatPhysical systemDemosceneInstallation artExecution unitMathematicsContrast (vision)MaizeEmulatorSheaf (mathematics)Link (knot theory)Patch (Unix)UsabilityCone penetration testException handlingFunction (mathematics)Mechanism designError messageCodierung <Programmierung>FlagSoftware bugSoftware testingMathematicsDefault (computer science)Logic gateType theoryLattice (group)Projective planeComputer fileAdditionMessage passingRow (database)Level (video gaming)Revision controlSpring (hydrology)File formatContinuous integrationUser interfaceLetterpress printingBranch (computer science)TouchscreenTelecommunicationRadical (chemistry)Functional (mathematics)Demo (music)Multiplication signLine (geometry)Data conversionWritingSlide ruleDirection (geometry)Patch (Unix)Point (geometry)Commitment schemeRule of inferenceRight angleStudent's t-testForm (programming)Absolute valueSource code
Line (geometry)TrailSlide ruleMultiplication signXML
InternetworkingRange (statistics)Computer-generated imagerySource codeSineTransformation (genetics)Complex (psychology)Time evolutionProgrammable read-only memoryChemical equationMeta elementDatabase normalizationInternetworkingMedical imagingMultiplication signArithmetic meanPoint (geometry)Source codeRevision controlControl flowComputer-assisted translationDistortion (mathematics)Type theoryProduct (business)Video gameCoefficient of determinationGreen's functionLevel (video gaming)1 (number)EvoluteTouchscreenChaos (cosmogony)Transformation (genetics)YouTubeThermal conductivityCategory of beingComputer animation
Zoom lensShared memoryEvoluteEntire functionSlide ruleElectronic mailing listTouchscreenComputer architectureCartesian coordinate systemMultiplication signAbsolute valueBranch (computer science)Software engineeringRight angleSpecial unitary groupZoom lensPhysical systemWindowOnline helpDigital photographyComputer animation
Process (computing)ImplementationArchitectureSoftware maintenancePhysical systemTelecommunicationData modelFormal grammarBinary fileFile formatDiagramMathematicsComputer-generated imageryGraph (mathematics)Java appletElectric generatorCodeSoftware engineeringMedical imagingDiagramTelecommunicationCodeFormal languageGoodness of fitClass diagramComputer architecture1 (number)Level (video gaming)Computer fileWritingSoftwareGraph (mathematics)Binary fileSet (mathematics)Different (Kate Ryan album)File formatJava appletMereologyRight angleBitSocial classGame theoryTemplate (C++)Instance (computer science)Variety (linguistics)Formal grammarMultiplication signType theoryProcess (computing)Expert systemEndliche ModelltheorieDomain nameDifferenz <Mathematik>Electric generatorWave packetStandard errorParsingPersonal identification number2 (number)TrailDigitale VideotechnikInstant Messaging
SoftwareVariety (linguistics)Bridging (networking)Goodness of fitSoftware engineeringSoftwareStandard errorQuicksortSource codeProjective planeMoment (mathematics)Event horizonTouch typingSeries (mathematics)Multiplication signEmailCodeFunctional (mathematics)Line (geometry)Group actionMereologyComputer animation
Series (mathematics)Field (computer science)Event horizon2 (number)Message passingUniform resource locatorMereologyStandard errorComputer animation
Observational studySoftware maintenanceAerodynamicsScale (map)WikiLoginCellular automatonMoore's lawNeighbourhood (graph theory)Revision controlDemo (music)Projective planeMultiplication signVotingPresentation of a groupFitness functionMoore's lawQuicksortRight angleMobile appSlide ruleSpacetimeProcess (computing)CollaborationismShape (magazine)Observational studyLine (geometry)Perfect group
CASE <Informatik>Line (geometry)Right angleSpacetimeShared memoryTime zoneServer (computing)WebsiteSquare numberComputer animation
SequenceAlgorithmResource allocationCellular automatonCollaborationismSoftware frameworkScale (map)InformationText editorCross-correlationLine (geometry)Vertical directionFraktale DimensionIterationMathematical analysisContext awarenessPresentation of a groupDemo (music)WhiteboardSlide ruleMultiplication signSquare numberFitness functionElement (mathematics)Process (computing)TrailMereologyPattern languageObservational studyRevision controlMotif (narrative)WaveVideo gameMoment (mathematics)Function (mathematics)Vector spaceSocket-SchnittstelleTorusWeb 2.0
Slide ruleWeb pageBitTrailMultiplication signPressureComputer animation
Human migrationDifferenz <Mathematik>Video trackingSoftware repositoryParallel portHuman migrationRight angleQuicksortBranch (computer science)Pattern languageMultiplication sign2 (number)Repository (publishing)Projective planeOrder (biology)CodeCASE <Informatik>Software testingArithmetic progressionBitSet (mathematics)Position operatorComplex (psychology)Software frameworkNumberOpen setData structureDatabaseDefault (computer science)HoaxParameter (computer programming)GradientMental calculationLink (knot theory)Point (geometry)Data managementComputer animation
TowerHacker (term)Modul <Datentyp>Latent heatMultiplication signDaylight saving timeStandard deviationSlide ruleBitSocial classVector spaceScripting languageSynchronizationCodeResultantNoise (electronics)Operator (mathematics)Goodness of fitType theoryFormal languageTupleBuildingGame theoryOperator overloadingMusical ensembleFinite differenceZoom lensExtension (kinesiology)Wrapper (data mining)Software frameworkTouchscreenLibrary (computing)Revision controlPiCommunications protocolCapability Maturity ModelComputer animationXML
Communications protocolImplementationStatistical hypothesis testingPiObject (grammar)Social classPairwise comparisonBitVector spaceCodeAsynchronous Transfer ModeGame theoryPhysical lawSource code
Game theory2 (number)Zoom lensInternetworkingInformationSlide ruleMultiplication signAddressing modeMeeting/Interview
InternetworkingDisk read-and-write headPresentation of a groupPoint (geometry)NeuroinformatikControl flowMeeting/Interview
Transcript: English(auto-generated)
So it is time for lightning talks round two So here's basically how this works a lightning talk is a five-minute talk that anybody can present and
You have exactly five minutes, but if you do less you can do less As soon as you hear this sound Your time's up and you have to stop immediately. You're completely done at that point. You're finished So no time for Q&A or any of that. You just you have five minutes
You can use slides if you want to you can use screen share or you can just you know freestyle it with your camera Whatever you like to do we can do it that way You can talk about whatever you like like for those five minutes Within code of conduct confines, of course We only have to listen to you for five minutes. So if we don't like it, yeah, that's alright. No big deal
So I Have the I do have the list here and then I'm going to be going basically in the order that I have on the form right now and then If we have more time after this then we'll see if anyone else wants to do this
In the worst case scenario if there's Nobody else who wants to give a lightning talk then we can also do something else that I've been introduced to recently called Slide karaoke where I find a random set of slides on
Google and then Somebody can just you know, try to make up a talk with those slides five minutes It's a it's a real kick to watch Nicholas did Nicholas today yesterday So, but that's only if we have the time but we've got some awesome
lightning talks coming up which we'll start with so So it looks like Elias is first up and Elias Can you hear us? Okay Yeah, can you hear me? Okay. Yes, absolutely Do you have any slides or anything you want to use? Yeah, I've got a Python notebook
It's probably a bit of a squeeze for the five minutes But I'll true try my very best to get through it and not lose too many people Alright, well if you want to go ahead and bring that up now that way I won't count it against your time Yeah, there we go. Alright cool. So your time starts now
okay, so this is a bit inspired by Jason's talk yesterday about Pythons in and I just wanted to show something Tie it to a comment that I sort of isolated out of the the talk I want to show how how I recommend doing things better without further ado
Let's get into it Simple rather simple example. We want to load some invoices here into Python Calculate a maximum spend per a supplier of invoices So we're on the buying side here And then we want to just bring that back on to the invoices itself to compare them to a monthly spend
I'm just gonna run through it and this code is entire is Intentionally not great because I want to show us some bits So we've loaded some invoices now. I'm sub selecting a few columns of that
I'm tossing them as the types have a look looks kind of great. We have suppliers We have amounts issue dates all good so far now. We want to calculate some maxima So I'm first gonna Set an index of an issue date Then I'm gonna group this whole thing
regroup it in a monthly way and Aggregate the gross amount per month and per supplier. So what I'm getting is sort of this kind of table Then I'm picking the maximum of those so now we're back to a supplier level and per supplier. I've got the maximum monthly spend
So just a bit of housekeeping to have it a neat data frame and now I want to Bring this back together with the invoices that I started from so I'm saying I'm merging this together And here's my result I've still got the invoices gross amount but also the maximum monthly spend of the suppliers and
I probably want something like the relative size here as well So I'm just gonna put this gross amount into relation with the monthly spend and I get sort of this percentage this invoice is 5% of this monthly The monthly spend of this supplier but oh wait, what's that? Why is the issue date my index?
I because I set it up here somewhere. Oh, I did a mistake I didn't copy my invoices data frame. I did everything in place Wait, let me let me try and fix that. Let me rerun it. It doesn't work anymore
I changed everything in place my notebook is a chaos so What went wrong? Well, like I said, it was this thing. I didn't I did everything in place now There's no way of going back Mutability can be surprising. That's Jason's statement from yesterday and surprises are bad and
Also the other point that I want to make implementation comments are failures to a degree I have to comment everything here because it's not clear from the code My alternative is all the headings. I just turn them into pure functions. So I've got a function that loads invoices I've got one that aggregates
Data monthly by supplier, I've got a Function that combines invoices and those aggregates and I define those isolated Everything I do in there is an in an immutable way I'm not changing anything in place and then I've got this really nice thing down here I just say load invoices combine those invoices with what you aggregate from those
So everything that runs is in here. I can run pieces of that as I see fit as well Everything's really neat. I can jump around in my notebook as much as I want because everything I do is immutable I will not get confused I won't break things and everything I do here can be copied out right into a production system because it's nicely encapsulated
It's self documenting It's small pure functions that are super reusable. It's named precisely It's everything you want everything ready for a production and it's actually not much harder to write Than all this messing about that we had in the beginning, but you will thank me later
If you try this out it makes your code much neater makes it much much much easier to go back to your code to understand it and To have a clean result That's it probably rushed it even more than I was thinking
You're on mute Jason Yeah, anyway, yeah you finish actually with 21 seconds to go. It's a kind of a pity. There's no points in this game You know for the most seconds left
Just for kicks. I'll actually write it down. But yeah anyway, but you know what the important part is it was a great talk Thanks. Just two more seconds then that I'll use if you have any questions I want to discuss this find me in any channel. Send me a direct message. I'm very happy to discuss about this. Oh Absolutely. Yes, please do actually this whole conversation started over in talk writings in like Python which is off my talk yesterday
So if you want to see some of the conversation that led up to this student definitely check that out All right, so um next in line we have Way is am I pronouncing that right way Lee? Yeah, that's correct
Cool. I got it, right. Yay. All right, so and Do you have any slides or anything you need to bring up? Oh, yeah, I'll have to show my screen I'll let you do that first Okay, all right and Yep, we can see it. We're good. So if you're ready your time starts now, okay
Committances and tools is a tool for team to build a commit message rule and now I'll live demos on Functionality of committances tomorrow. We'll have a spring about committances. So let's see very terminal
First we check the status now, there's no new. Oh, it's not matter But anyway, we'll create another new branch As you roll your own Python 2020 and Will create a new file your own Python 2020 and after that we added to our
sketch file it will It's a new file your own Python 2020 then we use the command of committances if you type CZ you will show the Health message of it and then we can use committances to do committances and commits
By default we use conventional commit and it will show you a user interface Which you can stack which type of command at which type of change this is so maybe it's assuming this is a Continuous integration and it's Jenkins file and just for test and
Yes, and you can see we we can have a Form formatted commit message and if you're not because we in some matching version if you change
Continuous integration stuff. You don't need to bump version. So after you run Bump it won't bump anything Yeah, because the original version is one point 23.1 and now if we create another one You roll your own Python 2021 and we add it again and
Command it as a bug fix and another test and We can bump it because because we already have a
Because we already have a bug fix commit and in semantic versioning if you have a bug this come in in your get log You will have to bump a minor patch version So which is why the version is bumped from one point twenty two three point one to one point twenty three two point two
In addition to that, let's see what we have now in our change log You know that is it's for it's one point two three point one and if we run Commencing change log and incremental
Incremental incremental I kind of forget it and you'll see in a get log. We add a bug fix test here so Yeah, oh, yeah, we forget to create the git tag for this version
hmm, that's weird, but Yes So we can use commit send to format our common message and use it to bump our project version and generate The change log strongly. So if you are interested in this project
Spring tomorrow in spring commit isn't to us. Oh, that's will be all That was an actually you finish it off with with with a minute with a minute 11
That was that I just added that to my bullet to my bullet journal that is I Want to use that that is a that is a really great looking tool Thanks, so
Thank You way and Yeah, if anyone wants to ask him any questions or whatever. Yeah pop into the Microsoft track and I Definitely join that's join that sprint tomorrow if that looks interesting. There's a lot of really cool spreads alright, so
next in line we have Sangha Shannon, I believe hey you are Hey Hey, so do you have any slides anything you want to yeah All right. Let me make sure I restart this thing. Okay, cool. So
If you are ready to go, yeah, I am your time starts now okay, so this talk is going to be really short and really weird and Since I've looked at all the other talk it feels like I'm gonna paste a lot of time So Lightnings so why is this called a lightning talk, you know, because lightnings can't talk right? So let's you know explore that for
With a short history of memes memes 101 So what are memes like so memes are essentially just images that are scattered across the internet whose meaning can range from? Incredibly profound to incredibly tough. So memes can be a source of joy
Confusion and sometimes it can give you an uncontrollable migrate and memes have evolved over time You know, we are now at mean three point two point two view semantic versioning. So Memes have evolved from 2010 to what it is right now So the types of memes and of course, I have attached some examples
So we have cat memes which have cats So this cat needs his charge We have dog memes which have dogs We have happy memes which you know, make us feel happy and we have sad memes which you know, make us feel sad
We have weird memes that are just super weird. They don't make sense and Then we have the intellectual means which you know, we have to be intellectual to understand it We have the offensive memes which I'm not going to show for secret reasons that rhyme with road of product and
Transformation techniques so the memes which you saw before you can transform them to create an entirely new genre of memes Let's look at how you do that deep frying. So deep frying is a technique They you deep fry you mean with a filter and that creates an entirely new genre of needs which are the deep fried leaves
You have distortion where you can distort a face of a character in a meme and create distortion memes And then you have the green screen memes, which is just a green screen The evolution so memes have evolved from you know, the early 2000s
Of sending this cat pictures online to now where they have stopped making sense So this is something which you know It's really weird it shows you the timeline of these memes There it evolved from proto Ironic stages to most ironic stages and it has to stop being simple and started being complex
Does this not make sense to you? I'm sorry. It's not supposed to and it's really weird actually and the purpose of this is Absolutely, nothing sometimes it's all chaos and you got to live with it
Thank you very much. That's it. I hope I did not waste a lot of time Wow, wow, that was that's that one's like yeah, I'm watching that again later on YouTube. That's
That was fantastic, thank you You you only used you only used three minutes of my life that I do not want back that is that that was well invested Thank you Absolutely. I feel I feel very educated. You know memes had a timeline
I mean, I think I think the Sun has invented an entire new branch of academics or where we Look at the evolution of memes over time. I mean is it I believe you were the first professional Memologist. Thank you. Thank you. I I prefer meme connoisseur. Oh, okay. There we go Well, there's something new every day and that is knowledge. I will use daily. Thank you so much
So, um Next and next on our list If that if that has not set the bar so high that everyone else is scared off is Terry Terry fori Hi, I don't know how I'm gonna follow that. I
Don't know how anyone's gonna follow that. Who are we? Okay, I'm just gonna attempt to share my screen and apparently I have so many windows open I can't tell which one it is that I want to share Yeah, that's right cuz Sun finished with a minute 58 so it's not like we're under the gun here, okay
I just need to open my system preferences and change a few things. I'll be all right back Okay, I have to quit zoom apparently and be open So, all right So I'm gonna actually then go to Marius and come back to you if that's alright so that you have time to work All that out. Thank you. We will come back to Terry then if Marius is ready to go
If you can hear me, I think I am I'm just gonna activate my screen share I Hope you can see something. Absolutely. We can see a starry starry night. Well, not the painting But it should know now show slides though, absolutely, yeah, okay, so your time starts now
So yeah, thanks. I'm Marius I'm working as a software engineer researcher in Germany at Sonoma I'm currently trying to figure out so this kind of a cry for help how to document the architecture of my applications because I have Problems with the last step of it, which is to document
Or to actually generate your mel diagrams from my Python code So to take a step back Why am I going to do all this because having an architecture documentation is great allows me to simplify a few existing processes such as Improving my software or maintaining it better because I can just look and analyze my architecture rather than looking at all of my code
And it will also make on your communication easier with my other teams That I might have and of course it also helps me to maybe check if the nice architecture I built is actually also the one I also Implemented and it helps getting new people on the team much quicker because I can let them look at this as kind of a
training material and There are of course different ways of doing the documentation So there's for example semi-formal or formal ones I don't really like or want to use the formal ones such as Archimede or like difficult your mel type diagrams
Because even though they are quite complete and verbose it does take a lot of time to learn them especially when creating them, but sometimes even to consume them so you're kind of just Shrinking the set of users who can work with this artificially like a domain expert might not want to learn UML just to understand if
If you're doing a good job as an engineer and the semi-formal ones, I like better So for instance in Germany, there's this arc 42. It's just a document template really something I would like to use and see for model which is essentially a set of diagrams and For those who just read this it should be possible without any learning efforts
Those who create it need to learn a little bit but not so much So then for the data format, I want to do everything with text Not with any kind of proprietary binary formats Because text has the advantage of it can live forever. You don't need any software to open it or to look at it
It is human readable right away And of course you can diff it which is great because for some reason with all these diagramming tools Diffing is not part of the solution. They forgot to implement it. I don't know. It's actually very hard problem It only exists a few research papers about this and what I do not want to do is play this game where I have
When I want to understand the difference of an architecture have to look at the before and after image And then find the differences to understand how say the class model changed I want to look at text rather in a diff that I know as a dev engineer anyway So if I want to use vcs I can well put my documentation into vcs have readable formats generated in ci
There are different text decks on how to do this. This is just an example But essentially you have some set of clear text documents markdown restructured text, whatever you have text-based diagrams
And these diagrams have different levels because the idea is you start high level and then then you zoom in And the high level ones you make yourself using whatever Diagram language you want to use but the lowest ones I do not want to Make myself because they change very frequently and I want to have them generated And plantium l's the one that I found to be most widely used or be quite nice essentially you write clear text
diagrams using a java like syntax Plantium l converts this to dot Files which graph with then converts to images And you can do a lot more than just uml or class diagrams. You can do a lot of other kinds of diagrams
Check out this resource if you are interested, the hitchhiker is going to plantium And now my problem that I have is I found quite a few good generators for other languages But nothing good for python when you use type hints Which is great because type hints make should make the job easier for these kinds of puzzles
There are a few tools I tried but they are not actually good So this is my question. Why does nobody care about this? Does nobody use class diagrams or are people using only untyped code for the generation spine? Or maybe i'm on the wrong track to begin with
So if you have any opinions, let me know and maybe let's discuss this in the architecture docs Discord channel. Thank you Excellent, uh, 13 seconds to spare too. And that was uh, I think it's a very salient issue. I uh,
Actually just private message you on discord because i'm interested in this one this I want to see where this goes I do love a good uml. Thank you marius All right, so terry are you uh ready to roll do you have that uh, I'm back things are looking much better. Oh, excellent. Yeah, there's that pesky little thing with with mac, isn't there?
There is yeah. Yeah. All right, so you are spotlighted and you are ready to go. So your time starts now Okay. So hi everyone. Um, it's good to be here. This is my first ever year of python. So hello Um, so i'm talking about research software engineers or rse for short and who what and why um, so who are these people?
They are Oh, there we are. Um, they are people in a variety of roles who understand and care About both good software and good research Okay, so so what are they doing? Well, they kind of live and they bridge two worlds. So they live in this middle ground
somewhere between software engineering as most people in this conference know it and academic or scientific research Okay, and it's all about bringing these two things together Um, and you might not be called an rse but you might do something similar to this. Okay, and and why well
Researchers and research needs good software, um good software helps produce good research And there's not enough of it. Okay. There's a lot of bad software in research at the moment in academia Um, I have seen some some quite surprising things if anybody ever wants to see an 8000 line python function
I can show you one um people who Will only only start a project in python 2 still Um people who like to share their code by email or pdfs pdfs only Okay, there's a lot of bad things happening in research and it needs good people with good software engineering skills to go in and do things
And if at all this sounds familiar to what you do, um to um Colleagues of yours or friends of yours then then get in touch because we are quite a good community and we're growing And we have some events coming up. So, um As as everybody knows a lot of national conferences have been cancelled
So for the very first time we've formed a sort of international rse group and we are putting on a series of online research software events or source Um get in touch if you're interested in participating or just watching it's going to be Hopefully one event a week maybe like an hour a week from now until we're back in the same room together
So we're thinking this is going to go on until the beginning part of next year Uh, we're hoping to kick off with our first event in the next couple of weeks fingers crossed there's our website Url if you want to find out more And yeah, we're kind of flying by our seats of our pants because we've never done this before We've never worked as an international committee before but so yeah
Come and come and check us out Series of research events and that's all for rse's or anybody who's just interested in what we're doing Thank you. Excellent terry. Thank you so much. I actually have a couple of friends in in in that field that maybe
They use python and academics that may be rather interested in that so i'll pass that on Uh, and uh, by the way, uh, you finished with uh, two minutes and seven seconds So that was that was really lightning. That was great. I speak too fast. Oh, no, that's all right I hey, you know, they never apologize for being succinct. That's
Absolutely, okay, uh next up we have griffith, uh griffith reese Hey Did I get that right reese or reese reese reese will do yeah. All right Uh, okay. I'm gonna really try to stick under five. So we'll see how this goes
You got your slides. Uh, I do have some slides. Uh, and yeah. Yeah, i'll give it a shot Um, cool bring those up first before I start the talk to make sure that before I start the time Don't lose your five minutes to technical issues because that's never fun. Okay, so
I hope Is that visible to you? Perfect. All right, you are good to go your time starts now right, okay, so, uh this I Initially thought this wouldn't fit this conference, but given there are two presentations on creativity so far which are awesome
That's what got me the courage to do this. So thank you for both of those and we'll see how this goes Um, so, uh back in 2010, I was at a place called the santa fe institute summer school And we were supposed to do our own projects over the three weeks And me and two friends, uh ended up trying to make a collaborative design project
Which ended up being a jango app? Um, and then I ended up running a museum called the ashmolean a couple times But never could find a department who was up for actually like pursuing that project Um, and it's sort of left on one side But I keep wanting to come back to it and especially with the release of jango 3 and async Maybe there's a way that I could do it in a big way that could scale up
so, uh There we initially were having trouble finding ways to study aesthetics We've seen some questions on problem solving and completely missed all of this literature that i've now since found on neuro aesthetics Which is really interesting Those are some people worth looking up if anyone else is interested in that um, but the
Kind of the question was we were sort of looking at it as people could only see their neighbors and you'll see that in a second And then how sort of motivic aspects of their design seemed to respond to their neighbors designs Um, and you know, is that cool? Does it look good? Do we like that? That's what we wanted to research Um, obviously people may be aware of another project that came some years later
Uh, this is not the final version, but people may recognize it just obviously worth mentioning that but crucially everyone in this can see The whole canvas whereas in the way we did it. You can only see your local neighbors You're more as neighbors if that rings any bells Um, so, uh, the other crucial thing was that it was for designing a t-shirt Um, and uh, so that was an extra incentive people actually getting a t-shirt that came out of it
Um, and so and then there was a vote we won the vote Um, so I have a t-shirt of it, which I now can't find because it's been so long Um, so i'm going to give you a really quick demo in processing Because that was the easiest thing I could get set up for this so fingers crossed this works
So this There was a version in processing js and now there's p5 js. Those would be ways to do it But crucially I press space I can see my neighbors There's the north neighbor and my northwest neighbor of the middle and top left and then I can click and draw a shape
Uh crucially I can also edit that one line that I share with my neighbors And then I press space and it zooms out and you see where you fit on the canvas right here in this particular case This is how we ran in the museum. So um the last thing uh uh How we so there was how we ran it actually as uh
A website we then had um, so I won't go into the details of that. It's too hard to show that right now We had some hilarious problems with time zones. Uh There where someone hadn't changed their time zone We were taking the user's time zone rather than the server time zone. So people started overwriting. There was a dude named shiva who uh,
Figured out how the javascript worked and then tried to algorithmically create a random square which ended up overwriting a whole bunch Which you'll see in a second Um, but we thought it looked really cool at the end. So let's see if I can get this to work um
That was the uh overwriting moment
It's also worth mentioning that this is a torus so that everyone on the right Saw the left edge as their neighbors and everyone on the bottom edge saw the top as their neighbors And that's a piece by julius he'sman who's a really important composer who actually ended up homeless towards the end of his life
Um, so yeah, that's a final version of it as a you know Uh, just a vector again Each person just got their square and they could see their eight more neighbors around them for their edits But they never saw the final canvas until we printed the t-shirt at the end Um, we'd like to move it forward. Django 3
Using channels and web sockets seems like a great way if we were to scale it outside just you know, 64 people um And we thought of trying to study elder elements of creativity like sound if you can only hear like four bars before your four bars And then the four bars after how much could motifs also play in that sense? um, and then could we then analyze that and
maybe ways in which those patterns could play out and also ways in which I Ai might replicate human behavior in the creative context So last slide is when we were running it what times of day people tended to come over All right, so you you you were really close there though
But that was I mean, yeah, you got to the last slide of bravo for packing all that i'd like to hear that music demo That would be interesting. Let me let me know when you do that because I I want to be part of that Oh, that would be awesome Uh, so thank you very much griffith, uh, that was uh, uh fascinating
Um presentation and uh, like I said great job fitting that into five minutes Okay, so we got two more uh left on the sheet. Uh, and it looks like we actually have time for uh, several more talks too. So Uh, here's the deal if anyone else wants in on this uh, you can add your name to the sheet because i'm watching that or
you can also go ahead and uh, just uh, You know wave your hand to be it over in microsoft track ping me ping me in microsoft track and um and uh, then we can uh, we can uh, Anders is running the room so he can keep an eye on that. He can uh, he can drag you in
um And uh, you can present on whatever you like and and by the way, you don't have to have slides I did this yesterday. I didn't have slides Uh, I just pulled up a web page related to what I was doing and I gave a little lightning talk on something It's it's a lot of fun. Um It's not hard to it's not hard to make up something. Um,
uh, you can even just riff for five minutes like uh, uh, So, um, yeah, if you want if you want to in on this just, you know, let us know over on the microsoft track All right. So next up we have uh, lorenzo pena Pena pena pena There we go, I can speak spanish a little bit so I was just trying to see if I could fake it
Okay, try um uh, uh now that and as soon as you said that it went all the All went all out my brain so we're just gonna go with jason can't speak spanish under pressure All right, so you're ready to go and are you ready I am all right so your time starts now
Okay, my name is lorenzo and I want to quickly show you how to switch branches without too much worry in jango or Django on migrate So we have jango which is a great framework with database migrations, which are a way to mutate the database structure
And data from code now in a project that is at least of medium complexity You've probably found yourself in a position where you have a number of branches each one of those probably mapping to a cool new feature That is work in progress and probably many of those features have migrations
So every time you have to switch from one branch into another you have to be Unapplying the migration from one branch and then probably applying migrations in the other branch, etc This was happening to me a lot of times. Well, it was an ongoing pattern so the the way I used to be dealing with the problem is
I used to be different against the master branch and then filtering by migrations Then doing some sort of mental calculation of the migration name to be unapplying because you know in jango If you want to unapply some migrations, you have to target the migration that comes right before the the migrations you want to unapply And finally once I had found the migration name, I wanted to actually unapply then I would just unapply it
So this was going on for a while So I thought is there maybe a way in which git and jango can become friends in this regard and that is how I created Django on migrate which you can find in piping in that link So the new way for doing this is you pretty much install the package you add it to your installed apps
So that the management command becomes available and you pretty much just run the command and you target any point in your In your git migration history if you don't pass any argument at all It's it is going to use master by default You have also some parameters like dry run fake and there's an open pull request currently for cleaning the migrations after
On applying them in case you're no longer using the master as a name for your main branch you can totally configure that in your jango settings and I want to brag a little bit about how I was how I got to get to a hundred percent coverage in testing this project
Since it was using git It was kind of complex to make automated tests that use git in order to make sure that it was working as expected So what I did was that I created a number of intentional commits in the repository history itself And i'm running the test against the repository itself So, uh, please check it out in case you find it interesting
And if you think this is a useful, uh repository and you can contribute back please visit there Uh is a joke that for every star you send i'll send you two stars back to you. So that's all thank you very much
Fantastic and with uh, two minutes and 15 seconds to spare So for anybody who cares about timing you're in the lead Fantastic, um uh, so next up we have Daniel um And actually so far he's last up
So before you start daniel again anybody else who wants in on this? Hey, uh, we still got some time Um, we're gonna be wrapping this up at eight about eight fifty Eight fifty five somewhere in that ballpark in preparation for widows talk At uh nine my time, excuse me. I'm see i'm talking in pacific
Uh standard tires pacific daylight time. Okay, so that would be we'd be wrapping up at 1755 Um cest for the 1800 keynote. So if you want to if you want to do a talk, let me know Also, i'm totally willing to do uh keynote Uh, my key uh slides karaoke chuke if you want to do this
Uh, let me know anyway, all right, so i'm gonna stop blabbering and turn it over to daniel you're ready to go Hi. Yeah, can you stick my screen? Yes, we can and your time starts now, um, so Um, I one of my hobbies is programming games in python. Um, and which is which is perfectly possible
Uh, I run a competition called pie week.org Uh where which is a game jam for writing games in python Um, but if you want to write in games in python, you will be aware that python is not the fastest language Um, and uh, you know, you have to be conscious of performance Um, so i've been recently writing a game framework called wasabi 2d
And I was looking at vector classes in uh in available in python I could use in wasabi 2d um And I was of course interested in the performance of the vector classes because i'm going to be doing a lot of vector operations Um, so I wrote a benchmark script. The script is here. Uh
Where's that? That's how I do it um, so I just use tynet, um, and i'm just trying out some uh different operations with uh, Larry hastings's vector class size version of that and so on
Um, and these are the the results so, uh pure python we're in many milliseconds Uh pygame has this vector class and it's at 0.1 microseconds um per operation NumPy is a bit slower, but it gets faster as you Start to operate on more vectors at the same time, of course
tuples surprisingly fast um, so Uh the but I mean the code for tuples is worse, I guess so you're actually having split The the tuple out and do the operations individually uh, so the vector class for pygame is a pretty good candidate, but it's mutable and uh, that is
a huge problem for my apis because if you mutate something that uh, i'm not keeping a watch on uh, then I you know things will go out of sync Uh, so I explored scythe in a bit yesterday It was just uh hacking around with scythe and icing larry hastings's vector class And there's a lot of yellow here and there's a lot of work to make it go white
And so you get the speed up. So, uh, I wasn't getting a big speed up from that um, so I turned to uh rust and um I there is a library called, uh pyo3 Uh, which actually turns out to be pretty easy to use so it has um, ah get it
Tied up in the zoom stuff um So it has great documentation, um, I started by copying and pasting this um, and there is a Uh cool tool called mature in uh, which does all of the the complicated stuff for you
So, uh, if you have done any rust you know that there there is a tool called cargo Which is your kind of build tool for rust? mature in is your kind of python wrapper for the build tool, um, and it just hands you a python extension um So this is my code, uh, eventually for for a vector. Um, and I was surprised how much
this feels like rust not like Uh python, you know, i'm not doing very much to interface with python. So i'm kind of mainly just writing rust code I'm dealing with rust types here um
and um Then for because the main thing I want to do is overload operators Uh, then you have to implement these protocols and this is where things got a bit hairier. Uh, so I have uh, Uh, I need to implement the py object protocol to be able to implement repra and comparison
And comparison because I want to return not implemented or other things Whereas, uh, if i'm returning one thing py03 will convert for me uh Because i'm returning many things I have to use uh, a pi object and therefore I have to construct things myself Uh, but i'm reasonably happy with that
I'm reasonably happy with the code, uh, the workflow that I set myself up is that i'm running mature and develop And pi tests and i've got hypothesis tests Um, so they all pass i've got uh a benchmark Uh that I can run so I run that in release mode Um, and after all that, uh, it's it's half as fast as as uh pygames vector class. So, um
Maybe i'm happy with that. I it's uh I may be willing to trade a little bit of performance, uh, and then I can push more things into rust I'm looking forward to doing that And my code for that if you're interested is on github
Uh in law of move w back Thank you very much. Uh, daniel pope. Um, and uh, So, you know, yeah, you had seven seconds to spare great, uh, great talk. Um,
I want to check out that uh, check out that uh, That game engine later. Uh, by the way, also your camera is now gone. We don't see you anymore. Oh, okay Well, uh, that was me fighting with zoom's interface during which is in front of my tab bar
Okay All right. So, um, I am checking here and we don't have uh, anyone else signed up No one else is uh, no one else is uh volunteering. Um, so it looks like this is the um It looks like this will probably conclude the lightning talks today Unless anyone is putting anyone who's already presented this wanted to do this slide karaoke madness
Um Um So if you want to speak now or forever hold your peas and carrots say that I I signed up, um An hour ago with no preparation, uh, and I did that yesterday as well. So, um it uh You don't need to have put a lot of preparation into giving a lightning talk
Um, it's a great way to to get Some information across just one piece of information that you want to share with the the community Uh, I recommend it Excellent. Yeah. Um, and uh, someone said wasn't there a missed talk, uh, that was going to get 10 minutes originally
Yes But ironically the person who is going to do that who had missed the talk the first time because of internet issues had to Back out of this again because of internet issues Which is weird because we've seen her at several other conferences and she was fine, but we've been helping her debug uh for this conference for um, Um, uh for the last couple of weeks and uh, yeah, uh, it does not the
Computers have suddenly decided that they do not like the idea of her presenting Uh at this conference, so dang it. I was really hoping anyway That's um, yeah Weird technology can be weird. Am I right? so
At this point then I think we're gonna go ahead and head to break for a few minutes while we get everything set up Uh for we have an awesome, uh, keynote where we'll be answering the questions that were submitted, um for the uh conference Uh, so that'll be exciting stick around for that. Um, Awesome. Once again, awesome talks from all our our our presenters for the lightning talks. You all did
Thank you so much