 Hello, everyone. Welcome. So these are the last learning talks of this year. I hope you're going to enjoy that We have a bunch of users. I want to say that someone that was signing So Sene or Sine or Sene? I don't know what to pronounce the name You are not applying to me. So you are not going to be here in the learning talks. So please do I'm going to add Everyone to a stream so you can say hello. Hello, Antonis. Hello, Dina. Hello, Mio. Hello Thank you for signing for the learning talks You know, this is why the part of I enjoy the most in the conference. I think the learning talks are great If for some reason you were just not in this conference I don't know staying all the time in some random room in matrix lost there And you don't know what's a learning talk and let's explain that so Aligning don't is a super short talk of five minutes I want to have a timer here in my phone and you have five minutes to talk about anything you want to talk, right? That's a happy fight and you can talk about, you know, archery forever Good good things is that you have five minutes and you can talk five minutes about something And good for us is that it's only five minutes, right? So if you are talking about flags and That kind of boring stuff we can just wait for five minutes and then and then you are you are off When you reach the five minutes are going to play this Hello, James That's one person more for anything. So in the real in the conference in real life What we do is everyone started clapping, right? So that then we interrupt you And that's a way to to finish you talk, right? So the order is first is Anthony's them Meera slap, sorry Meera, maybe it's China Santiago and Jens Senna is not here. So You lose No, you're right. So that means I'm going to remove The rest and I'm going to keep Anthony's So by Santiago by Gina I'm going to put your screen In a second I have my timer here. So you have five minutes starting now Okay Thanks a lot. So I'm going straight to the first silly thing of the two. I'm going to show you It's how you quickly go to the dogs. All right, so I'm programming and at some point I need to see the Reference for time delta so to speak. So what do you do? I don't know what do you or what you do, but I'm showing you what I'm doing so first I click out tab in order to bring up my browser window and Then I type in this sequence of characters Control T P3 which stands for Python 3 date time and enter So I'm going to show it to you. I have my browser here. So I type control T I get a new tab and then I type P3 date time and I get the reference for date time, okay So I need of course to remember the module names But generally I remember the module names of the standard Python library. So the how this works So this works because I have a bookmark All right, and the bookmark has the keyword P3 and it has a placeholder in the URL So what the browser does is replace what I typed Unit test for example or pathly board date time. It replaces that thing in the URL So that's that is how I can go quickly there and I don't do it only with the Python standard library I do it for example with Wikipedia. I Do it with JavaScript Although with JavaScript it works in a slightly different way. It takes some time now because streaming takes a lot of my network So and Another thing it does So I have lots of such Shortcuts so for example tad stands for date and time So if I type tad delhi, it shows me time zone information for delhi So I was wondering how everyone else is doing this. Am I the only one doing this? I have no idea So I'd like to ask you The second silly thing The second silly thing is copying unit test names. All right, so I'm going to show you I have this Python program here and It has some unit tests. So I type this and it runs the unit tests There are 57 unit tests and one of them is failing Alright, so this is very slow So one test failed so what I'm going to do is I'm going to go to my code and Make a change and then run the unit test again and then make another Change maybe add a break point and then run my unit test again But I only want to run this unit test I I don't want the other unit test to interfere. I want to run only this one So what I do is set up P test Suit equals and now is the interesting thing I copy this I paste I type a dot and I copy this and I paste and I present her and then it runs only this unit test so my question is Why is the unit test module giving me the output in a way that requires me to copy and paste and type a dot and Copy and paste again Why doesn't it give it to me in a format where I can make a single Copy and paste So this is a mystery to me and I've been wondering this for many years, but I never got to ask about it so I'm asking you and So I invite you to break out one Optiver whenever there's time maybe after the unit the lightning talks or maybe after the keynote if there's no time and maybe we can gitchy and Learn from each other about these silly things That's all Thank you, Anthony. Thank you. So you have a still a still a minute. So that was good Okay, next one Sunny's here So we have everyone for the line talks So next one is me no so goodbye, Anthony. Hello, Miro Hi We're doing Great great. It's a little bit hot here, but that's probably hot everywhere in that Europe item now How are you doing? Where where are you streaming from Miro? Now? I am in Vienna in Austria. Okay, cool You know, it was sunny day in Amsterdam, but you can see they super dark now, you know, like we went from sunny to Winter that I local things change here. So I can see your screen. I can see So you can also see here the 32 degrees and approaching storms. So Oh, okay, that's true Yeah, it's only 17 here. Okay. Okay, so I would love it So I mean, okay, you cannot see that but go Thank you. So Python, let's go home quickly My name is Miroslav Shadyvi and I'm working at Strayport. It is one of the organizers of A lot of organizers, but one of the sponsors at Europe Python and every day I'm writing Python to make the sunshine the wind blow and the gas flow Our company is Located now here at the southern suburbs of Vienna But in the next few months, we are going to move somewhere to the closer to the center of Vienna And now on my commute with bicycle I have already found the best way to go there But when we move then I will have to discover a new way how to get to work And there are different navigators That are better or worse, but they don't adapt exactly to my style of riding a bicycle And that's why what I want to do is Like every time I try a different route and then I track it like on my phone I always store the gpx tracks and then maybe I can do something with that As an example what I'm going to show you. I have here something from Karlsruhe This is the city where bicycle was born and where I lived for many years And here as an example, I just tried to find the best way to get from the castle Here to Ginterklauze am Lage And you see I didn't always take one route But sometimes I went from A to B sometimes from C to D A to I and so on so always a different route and then I've wrote a program That is called pygo home and that's a python software running in a binder or in the jupyta notebook That allows you to take all your tracks or your gpx tracks Then add a few points some points of interest like homework Friends shops and so on and also to add some intersections and then it analyzes all your tracks And tries to find optimal way between A and B So if you go to GitHub your mirror pygo home or download pygo home from pip Then you can launch the binder and I'm going to see okay the binder is already running And what I have to do is here start My jupygo home And when it runs I will upload here my My tracks there are some gpx tracks and some waypoints I open it I load them Then it's done and then what I do is I get want to get for example from the schloss to Winter clothes and lage and then it is the way it is My decision on whether I want to find the possible fastest way or to make sure because every time you go individually or you ride a bicycle individually Sometimes you are a little bit faster. You are a little bit slower You behave differently on crossroads on on some types of roads So whether there is too much traffic or not and then here I say okay I'm feeling lucky So I want to find the fastest route that I ever made between A and B and it will give me one and tell me Okay on this route. I needed the fastest was nine minutes 37 seconds The slowest was 40 and 33 and then then I want to make sure I just move it to the other Direction and then it tells me okay if you go like this The fastest you were on this route was 11 minutes, but the slowest was 12 minutes 44 So it is safer to take this route because you won't probably need more than 13 minutes to get from A and B So now this code works I am looking forward to use it at our new place of Worker for for treport But I would like to see but other people have some experience Who would like to share them with me and have a look at the code and then maybe we can do something together And that's all. Thank you very much Okay. Thank you. Thank you. So Okay, everyone is under four minutes. I really like it when I can interview someone Let's see what's happening with the next person. So thank you very much Miro Thank you. Hope I see you later in the social event or maybe next year in Dublin Cheers. Hope so. Yeah. Thank you Gina is the next one. What are you doing? Fine. Thank you. Okay, where where where's your talk about Gina is Time monotonic time perv counter. Yeah, that's actually so Miroslav who we just saw gave a talk on Tuesday On Wednesday about should we go back to python 2 and that also included The recommendation to switch time dot time to time dot perv counter and that I didn't know the difference between monotonic and perv counter and he didn't either so that wanted me to investigate and here I am sharing my findings Cool. That sounds amazing. So you have five minutes to start in now Perfect. Okay. So I just already gave the motivation for this talk away So we have these two functions time monotonic and time perv counter and I was wondering what Is the difference between the two so first of all I went to the docs and took a look at what they say and for time monotonic The python docs say that it returns the value in fractional seconds of a monotonic clock I hear a clock that cannot go backwards. The clock is not affected by system clock updates The reference point of the return value is undefined so that only the difference between the results of two calls is valid And on time perv counter which also returns float. It also says returns the value in fractional seconds So in that regard they are identical of a performance counter not a monotonic clock Ie a clock with the highest available resolution to measure a short duration It does include time elapsed during sleep and is system-wide the reference point of the return value is once again Undefined so that only the difference between the results of two calls is valid So that first of all sounds like monotonic is always monotonic and perv counter is I mean It doesn't say anything about monotonic here But it will always have the highest available resolution so Next I took a look at what time get clock info says about the two And for and I looked precisely at the tick rate So how many ticks per second I get on each of the both of the two clocks and I also looked across Windows and linux to take a look if there was any difference there and it turns out that time monotonic on windows Only has a 60 64 hertz tick rate Whereas on linux it has something like a billion hertz and time perv counter has 10 000 hertz 10 million hertz on windows and also a billion on linux The implementation of both also differs Under on the windows they are differently implemented under linux. They both just use clock get time clock monotonic And they are also both marked as monotonic So even so it doesn't strictly say monotonic on the on the perv counter docs. It is monotonic. We can depend on that Okay, so what does this tick rate difference mean in practice? So, yeah, I took a closer look at the resolution. I coded up a little loop that runs a billion cycles And just looks at how often the clock value changes during this number of during this during each iterate during the lifetime of the whole loop And on time monotonic under windows. I only saw 6,811 or they're about changes. I did this a number of times um So that was a very very small number especially compared to perv counter under windows which caught every single cycle of the loop And under linux both of them were behaving identically identically again. So I wondered If there is this much of a difference under windows between monotonic and perv counter is there maybe also a performance difference And so I ran time it against it And there is actually a performance difference. So while monotonic gives us a lower Significantly lower resolution under windows. It is also quite fast in comparison So 30 nanoseconds faster than perv counter on average 54 versus 84 nanoseconds on linux once again There is not really a difference which is not that surprising considering that they are using the exact same implementation So summary time monotonic and time perv counter are both monotonic check and Under windows and under windows only time monotonic has a lower resolution But a higher performance than time perv counter and the linux. They are both identical If you also want to maybe test this under Under mac os because I do not have access to this then I put the scripts that are used on my repo there You can also find a link to the slides there and I also found this interesting article that I linked there Which goes a bit further into further difference between clock implementations under linux that under python that I found Interesting that that motivated me to dig a bit deeper into things And that's it already Okay Thank you. Sheena. I really like when the lightning torque is about something that was last yesterday or this morning Because that's I think one of the reasons why we have these points So thank you very much. Um now we are going to have Santiago Just just a message as as yesterday. I'm going to do some ruffles So we have a bunch of boat chairs to to give so I recommend you to already go to wonder me because we are going to maybe use wonder move to To the raffle. So hola santi hola nico How are you? What are you doing? So we can do this in spanish like ispacona or something. So yeah No, um Yeah, we're streaming from Amsterdam There was a huge cloud Going your way. So I think it's raining as crazy now because it was raining as crazy like two minutes ago here so We should arrange for drinks tonight or something But that that's probably not a good idea. Um Okay, so I can see your screen. Santiago is going to talk about commit send Or commit send, I don't know for you commit to send. Okay. So five minutes from now Okay, perfect. Um, well, I'm gonna try to run this in the terminal Let's see how it goes. I wrote a nice script that I only have to type enter. So it shouldn't fail um So I'm gonna show you a bit about the commitment, which is a open source project I've been maintaining for a couple of years. I started I think around 2017 or 2016 And it has grown quite a lot and there are many contributors. I'm quite happy and it's Really nice to see many people requesting new features and and stuff for me. I at this moment I don't even have time for So many features, but I like that people contribute and the whole idea is to automate the The the tag creation and the changelo creation and It's pretty simple. So we have a git We initialize git in our in any project and then we install commit send like you can see here Um Once we initialize it in this case with the tumble file with the version This is the the cut of the file then we only need to start adding things to git The git files for example in this case We have the users We add to git And what is gonna happen now is that I'm gonna Follow a structure Instead of a free text in my commit message. This is the trade-off of using commit design We are gonna add a bit of information So later we don't have to go through all the commits in order to To think oh, what what happened here? What's the version that I should tag my repo and also We we are gonna automatically create the changelo So I would say you also have to think a bit that your commit message may end up in the In the changelo if you don't follow the structure, which is a conventional commits For example, we start with fit from feature and then the message Committees will ignore it. So you can still write your commits and only tag some We are gonna Add employees another feature and then we just say bump Yes, because it's the first time and we say changelo. So also add the changelo And in here it detected that they has to go from zero zero one to zero one zero The increment is minor. We can see that it created the changelo And the changelo is in Markdown, you can also add some text on top of it like your changelo the format you follow That's the no problem And then for example, we remove the employees A file and then this is a breaking change. So we write the multiline Message where we add the breaking change And then we make a bump again And it detected that was a breaking change and went to 1.0. It's a measure And you can see here also is listing the 1.0 includes a feature and the breaking change for In that message you are supposed to describe what are the Steps to to move to this And That's it. It's quite a simple also that was created Here is a link you can take a picture of the Of the repo and visit check the documentation say any request is more than welcome and it's a I think it's a really A nice project to start if you want to contribute to open source This is the link to the presentation And here You can find me matrix. I don't know why my last name is We had a bug at some point And my thank you very much Okay. Thank you, Santi It's nice to see commits in moving. So See you later and we are going to Okay jens you are going to be the next one I'm going to skip a senate to see if He or she Yeah, you you I can see you and let me see are you going to share a screen or I try to share a screen. So I have a notebook over here So this one. Yes So, yeah, thank you very much for the like we talked today. So yeah, okay Yeah, I'd like to show one of my it's a project. It's named the dairy dairy It's a logbook for grazing cows. So the first of all is I'd like to show you just a picture of a few nicely cows there just grazing On the pasture as one might think So why do I need this kind of diary dairy dairy? So as a farmer, I'm supposed to note on the kind of book on the kind of axle sheet Where my cows grazed on the pasture and when they grazed on a given day So for example, I As a farmer, I can take place in a special program. So the german word right of milk program It means that if the cows are outside and grazing and you sell the milk to the dairies You can get some extra money. The problem is to write these Logbook the diary is a more tedious task One has to do it for every herd of on the farm every day And the problem is it costs Money in terms of times and if you don't have the time you have to someone ask you to do for it for you So and that's where Python will come into play and also one of those devices. So this is just a color you can put it on the Neck on a cow it's with equipped with a gps system and this system just Sends signals one can take from a lower server and those Signals I can process in a way. I have in the end The name of the piece of land and the day where the cow cows grazed on so I can just run the notebook So first of all, we have to import two libraries. It's pandas and geopandas I also note down the versions and in case someone of you wants to try again so Now I'd like to show how the data look like the data is just a common GPS tracking data with the longitude and latitude and also some information about the battery and the Yeah time stamp and also string And of course we have to pre-process those data in order to get use of it For example, first of all, I have to remove some lines this the word time in the column line I just need time stamps and not strings And then I also have to remove the first thing as one can see here They are nance and I don't need nance, but instead I need those floats And those I have to convert those numbers into real now with the Python Next thing is if I want to have Point in the polygon I need of course the polygons the areas and of course the fields as well Those fields we can I can show you here. I look like full if there's a just Identification number even also the year where this Object has been created also the polygon the position of those To make a bit clear view, I just removed a few of the areas I know where the cows do not have to go on and then I can first of all plot those number the numbers And here for the polygon at first. So these are the Land shape of my farm. So you can see all of those polygon is just a grazing piece of land Piece of land where the cows can graze and those are the coordinates Recorded by the symbol and now I have to align it in the way together to overlay them and this overlaying is now Named spatial join. So first of all, I have to ensure that the CRS the coordinate reference system Is in both case same And this is what the statement here just why it's two. So both are same. I am good to go on Now I perform the spatial join It just takes a bit longer because spatial joins a bit more calculation expensive And then we can see the following. This is the date and I know this piece of land the german flag number It's just the number of those land. I know of each Date or at least each time stamp on the specific date How often the cow has been on the specific area? Gladly, I just have to take the maximum the highest value to prove the diary that the Cow has been Grazed on the area and this I can do with this statement And this is just last by statement And then we can see from of every day the Maximum number of grazing position. They are at least recorded grazing positions. It's just this number of land So the cow has been Sorry time out. That's the rules Thank you very much Um Okay, perfect. Okay. Thank you. See you later. So we have the last line in talk Um, let me see. Yeah, I don't know if it's always working Hi Yeah, we can hear you Thank you And I'm going to start your five minutes Right now Okay Sorry time out Um, that was the first time I seen a lightning talk this only text So thank you. It was something new today Um, maybe people can go and ask you how to how to finish what you were doing Um, okay. So that was the last lightning talk today um Now I'm going to do something different We have to Do some prices right some ruffles So yesterday I have a lot of fun. So we started doing like the old way right like just doing them Saying the name of the person if the person is in the room And in real life, that's quite fast, right because everyone say yeah, I'm here and and but then I'm learning that it's not a good idea to do that in the chat and I was sending names to the chat and doing the flute in the in the In the chat. So I decided to do something different. So I said, okay, if you can catch me in wonder me I will give you a price. So I have For three different sponsors. So one sponsor is Manning and we have three Bolchers for the book microservice apis in python I have two vouchers for 50 dollars five zero discount for no starch press and I have five books from Packet, right? So what I'm going to do is that here is my wonder me, right? And I'm somewhere there And theoretically this audio so if you can reach me and talk to me Hello, you son. You have to say hello to your camera on Hey Uh, please type type your name And then no, no, it's not going to be so easy. Why? Why? Why? Why? It's not going to be so easy, you know, right? So you have to catch me. That's it's going to take a bit more. So Do some please send me a message on matrix Uh, I I want to so I have your username I'm going to put your name here Oh, something you want to look something. I was the second one I I think it's really nice. Good to see I I want to see your people joining, right? So because there is only a small group running So I will I will wait to see more Oh, what's happening? I think this is the best part of Europe by 2021. Sorry if if I'm worried you it's going to be kind of a line It will take less than five minutes But uh, I still have like a seven or that number to So So Um, bm you already want to get a price. So I need to the last one Um, by the way, uh, wonder me the idea we wonder means uh, we can talk to each other we can Uh, no new New persons, right? So we can Basically have the interaction that we are missing in the real life conference, right? Because Something that really means is this is like you can just walk to one person say hey, I'm in the beginners corner And you can say hello, how are you doing? No, no way. Let's go to the stack readers Or they go to the optiverse post Gil you already won. I won a book. Stop stop running behind me Okay, I'm going to stop here in optiver and see what happened I I still have four right Nicholas you just made a huge mess and then run away every time You you already want something Santiago, you also you Rodrigo, what who else is here? Okay, martin I'm trying to see the order right um Oh I captioned it Um Who's the last one? Okay. I don't know who's the last one. So I'm going to run one more time I love it Okay, only only one no two. Sorry next two So let's go to the science corner and see what happened I hope someone is having fun because I'm having fun here Rodrigo is trying to cheat. Rodrigo, you already won Stop cheating Okay, Rodrigo and Cevas are really fast, but they already won so I'm not going to give anything to them Um Oh, why don't you won yesterday? Come on Dean I think you also won yesterday uh Okay Clemen Clemen, I miss pronunciation that and the last one who is the next one here Julian Okay So I did his live. So now everyone knows who I did the prizes. So it it was kind of legal, I hope um And I hope it was it was funny So Okay, so we are two minutes to finish the and The lightning talks now. So I'm going to remove this because yes, I'm listening to two computers at the same time um Last comment I want to do today is that we have the sprints Tomorrow and sunday. So saturday and sunday Is the sprints time in aero python The sprints are really really good to learn are really good to contribute to open source Maybe for the first time So but we also need projects to work on right? So if you are if you have open source project Or if you want to start a new one and maybe in two days we can do a lot Uh, go to the website find there is a wiki that you can sign to host a sprint and join us, right? And for the ones that are new or maybe you don't have any experience doing a Sprint In saturday tomorrow, I'm going to be hosting like a table a visual table There is a beginners room For people that is contributing for the first time in open source And in sunday chuk is going to be doing that. So sunday is going to be a lot better Uh, so if you are new if you have experience, please stay and and join the beginners table and and we can Help you a bit to get you started with the And With the sprints, right? So that was all I hope It was it was nice and yeah See you in a few minutes for the keynote Cheers