 Nevertheless We're gonna have another 90 minutes of Lightning talks and it's gonna be packed. I want you to stay after the lightning talks though There is something the organizers want You to be here for and I'm not allowed to say anything more except that Having more people is better Mysterious. Anyway, let's get started with the lightning talks. The first one is Stefan Nothausen And he's gonna talk about net adder Yeah Hi, everybody. My name is Stefan Nothausen and I will give you a quick introduction to net other Which is a library that helps you to handle IP addresses Mac addresses and more I'm one of the main contributors and you can find the code on github and also on pi PI But first of all, I would like to show you a new built-in that was added in Python 3.3 You can now do from IP address import IP address and IP network And then you can do stuff with IP addresses and IP networks because there's no objects for that So you can check if an IP address is in a certain network and there's more goodies You can do iterating slicing. You can get the broadcast addresses netmasks. You can even do IP arithmetic Net other provides the same for you We also have an IP address object an IP network object and you can do pretty much the same thing as with the IP address built-in of Python 3.3 So why would you install net other? Well, first of all it supports Python 2.4 and Python 3.0 because not everybody has Python 3.3 yet And there's no further dependencies. No see magic nothing second of all. There's more than just IP addresses and IP networks For example, there's IP ranges net other provides you with an IP range network Object and you can just say I have an range that starts here ends there And then you can do operations like is the IP address in the cluster You can iterate over the hosts in your range stuff like that There's also an object for handling MAC addresses called the EOI Because that's your official name of MAC addresses extended unique identifier and the funny thing about these is that there are so Many different formats uppercase lowercase different kinds of separators some people leave out the leading zeros But as you see in the example below, it's all the same for the EOI object. They all get parsed the same That's the input. How about the output? Maybe you want your MAC address to look in a certain way That's why net other provides So-called dialects for you one is the max Cisco dialect and you can just instantiate your MAC address Set the dialect to Cisco and then stringify it and it will look like a MAC address that the Cisco systems are using More such dialects are available customization is of course possible There's OUI organizationally unique identifiers, which are basically the first three bytes of a MAC address and You can ask a MAC address for its OUI and the interesting part about the OUI is the registration information So in the example you see on the screen the registration says it's the Intel company from Malaysia always good to know stuff like this and By the way, this works without internet access the database is built in Then there's sets of IP addresses. Wait a minute set as a Python built in. Why would you bother? Well, there's stuff like 10 0 0 slash 8 and FE 80 slash 64 Which are just really big networks and you don't want to add two to the 64 objects to a Python set That's not really fun. Here IP set comes to the rescue you import the IP set you instantiated and then you can add IP networks you can add IP ranges you can add Individual IP addresses and you can mix IPv6 and IPv4 as you please and then do the usual set operations check for membership for example or in the second part remove and Address from the IP set and even though that splits the IP range that was inserted in two pieces Let IP set take care of it. You don't have to One disclaimer though your distribution may ship net other already, but please use version 9 0.7 point 11 or higher. Otherwise, you will have a bad time So to reiterate the code is on GitHub But also on PI PI PI PI also has a link to the documentation and to a very nice tutorial And that's it. Thanks for your attention The next speaker is Alex Aleksa Polsky about antifragile and after that Josie you're next then. Okay, so I wonder how many of you have read Any books or articles by Nassim Taleb like the blacks one or antifragile? Okay, I see some hands in the audience and I'm going to give a talk a kind of more philosophical approach to Python Well, Nassim Taleb is a kind of Intellectual intellectual thinker who Speaks about probability theory about risk management and how we can game from instability from in unstable world so The first book of his of him was blacks one it's about rare events that occur in our life and can change it completely and That these events are not predictable, but we somehow should prepare for such events and The second book of him is Antifragile is specifically about algorithm how to deal with things that we cannot predict there must be some way how to survive in unpredictable future and In programming we can speak about Some Problems that can occur to our code to our system and to our product in general so Three terms that he uses are fragile antifragile and robust So fragile is a system that can break or and if it does not break now it will break Later and will cause a lot of it will cause a lot of problems. So there must be a way to prepare and he We can think about What what properties of such systems could be at the level of code at the level of say Python module at the level of a? application at all so for instance Orm porting is fragile because if you for example change ORM you have to redo all the application If you deliver product in a non agile way, it's a problem to suddenly customer X asks you to do something and You cannot deliver the product instantly. So and if you write some code and Do not keep in mind that There is some context of Product stability like you need login you need error tracing. It's not fragile. So So please use some Login etc So what is robust robust is logging the robust is transactions Robust robust is when your application falls back gracefully for example Nice error displays or if a part of your applications go away still some front page will be Working and your customer will be notified and Anti-fragile application is something that's not totally robust, but is kind of good enough So what I'm speaking about is in Alex Martelli's terms good enough, but I have Ported into nice and tell ups concept of French fragile anti fragile and Robust so he one of the main strategies that he uses is the straight the strategy of What's this heavy weight instrument is called I forgot Barbell yes the barbell strategy Basically, this means that you have to do very robust things and do not to do some new things At all if they can break this system, but if something new and something cool does not break the system You should exercise it and add it to your system for instance Do not run for new things do something that looks very simple very stable and very understandable But if new changes and cool changes do not cost too much well feel free to do them, especially if they do not Effect big parts of the system. So extra exercise new stuff in limited contexts and do Very stable and simple things in general So this metaphor especially good for new programmers if they come to a company. I used it to explain to Middle and junior programmers how they can fit various ways of thinking about the system they build together in terms of Fragile anti fragile and robust All right after Josie talked about pixie dust to us there will be agosha boho coverage All right. I see you Yes If you look at that screen you can see that that everything is fine, and they just need to switch Hello, everybody, my name is just feeling it as it's and I'm 13 years old I come from Zagreb Croatia. I got a scholarship from the Django girls. So this is how I'm here Um, this is my group from the Django girls project on the first day and What is pixie dust it is my idea to Help girls from 13 to 18 Start from being consumers to becoming producers of technology So I think the big problem with technology for girls and Teenagers my age is that we love it so much that we overuse it and we do not try to produce so the consuming and producing would be 90 10% and not 50 50 which should be I Um, I Sometimes have this problem. I can be on Multiple screens at one time and get lost in it for hours And then at the end of the day I feel so guilty that I didn't spend my weekend or day very well My mom knows to call me a technology zombie because I Can't get my eyes off of the screen. I'm just like, oh Where am I? What am I doing here? So my solution would be Bringing these girls from smaller countries because I'd like to start small than to big places Because a lot of these companies and have great ideas But start very big they want to add big details big, you know get press and everything And then they lose the money and go bankrupt, which I don't think anyone wants So it's better to start small and grow level up So the resources that I need would be teachers slash experts Sponsors and of course hope hosts Yes, so this is my story and Anyone can be a part of it Thank you Dima Tishne. Are you there? excellent For everybody who just joined the organizers would like to stay you after the lightning talks They want to do something and they need you to be here the more the better Okay. Hi everybody. I'm here to invite you to webcam. It's a conference in Zagreb, Croatia it's organized by local user communities and It's pretty awesome so At this point Everybody asked me where is Zagreb? So it's in Europe It's not far away and it's generally good enough connections to get there So what's going on there? So in October we will have for a third year in a row webcam conference There is no specific topic but all local user groups like Python, JavaScript, PHP, Ruby is involved and I would like to suggest to you to submit your talk because it ends next week and It's a great environment Last year we had around 600 people this year. We are expecting around 800 people So there are two parts of webcam conference the first part is week of webcam where local user groups have their meet-ups smaller conferences and talks and It's generally really relaxed and I think everybody would enjoy it there and Main event is the webcam conference which is like Something that everybody wants you can expect talks about Elixir, Erlang, Go, Clojure, Python, JavaScript It's really everybody can find somebody something interesting So once once again Call for papers ends next next week. So if you want to come submit it There are two places Where we have this thing first smaller for around 150 people is in the first picture and The main event is like in a congress center similar to this one And you can expect an audience about 800 people this year So just to confirm that it's a cool event you can expect any kind of stuff to happen and Please consider coming it's one of those small communities that are building a non-profit conference and it's really cool. So See you in October That's it. The next one after that will be tossed marine. Are you around? Oh there? Okay. Hello everyone My name is Dimitrisnik and I hate testing. I know it's not a popular thing to say, but I'm here courtesy of Ignite We are pretty cool way stage startup We are hiring both in Mountain View and Poznan if you're interested and I live in Poznan now Which is really close to Berlin. We've got awesome Developer Python club stuff. Please check us out. So now to the actual thing So I had I seen but I'll leave that for later because I've got a lot to cover first of all, let's see some code So that's it's a real code all names were changed to protect the innocent and As you can see it has 100% code coverage and first I have to say that coverage.py is awesome It's at least five years old and it survived a lot. It is still being maintained Now let's see what was what was the unit test that actually created this hundred percent code coverage? It looks like this in other words Only the function signature is tested at all So what can we do about this? There is a formal thing called mutation testing Unfortunately, it's not that great in Python, but it exists. There are two packages pi mu tester and mute pi I hope I pronounce them right by mu tester is dead. It's for to Python to only and it doesn't work for me at all Mu tester on the other hand is workable. It does work. It does work. It's only for Python 3 it produces results in very unintelligible format and It requires unit test test case which nobody should use anymore So let's see how it works first. Let's have some simple test Let's say this is code. We are testing it somewhere. We've got a decorator. We've got a context manager We've got some logical operations. We've got a branch and Then let's run it. We give a magic command Get a lot of output. What does it say? It says that it tried 15 combinations of how to change my code and Tested if my unit test still pass 14 of them were killed by this unit tester rather so this Changes were invalid one of them survived which means that there is an alternative bit of code that still passes my test And that is a problem Let's see how it looks like so apparently Removing this decorator doesn't change anything Which I sort of expected on the other hand this walk is not tested anywhere either, but he didn't find it So this tool is not perfect, but it exists Moving on In an ideal world, let's build a system that connects to a github takes your code And if all your unit tests pass or in fact all of your tests pass it changes the code It could do it in any way. It could be exhaustive search It could be artificial intelligence mechanical Turk whatever but if your code is simpler and the test pass Let's just issue a pull request right away And let the developer figure out whether the simplified code is actually better or maybe they need better tests So I hate testing now for some fun I'm a zombie you've seen this image at a keynote talk. I'm not a corporate drone I'm a different kind of zombie. I'm a zombie for a reason. I like brains In fact, I believe that programs have brains and people their work ways have brains and they're actually smart enough and We should not be constrained to some ridiculous systems. We chose a dynamic language for a reason So while on the subject of keynotes both with polito's push for type annotation is completely misguided Nobody said anything, but whatever Okay, if you want to get in touch with me just remember my nick. It's demo qq Gmail github whatever it searches the gogos. That's it. Thank you After Torsten there will be a Harut Harut, are you right? Okay. Hi everyone So by now people get annoyed when you use taglines that end in four humans. So there are fixed it But I really want to talk about config management There are a lot of config management tools out there. The most popular ones are probably chef puppet and Ansible and They're really great They're really the workhorses of DevOps and have made config management in general Somewhat popular But I wanted a pony A pony that is a tool rather than a solution if that makes any sense for example I didn't know I didn't want to maintain the server component Also having to install an agent on each note before you can start to bring that under management It's kind of a pain especially when dealing with legacy systems And the same goes for SSH I really want to use that as a transport and authentication mechanism because it's already there Beyond that I was also wishing for an interactive mode and a nicer command line UI That allows me to carefully review and pick each change that I make to an existing Important critical system and I really wish that Python was the only language I needed to know in order to use it Last but not least there's item level parallelism This is a big one actually What that means is I wanted to Continue working on small things like config files while it's Installing for example a system package on the same note. I don't think any system currently does this They all just work out a linear order and then go step by step so about two years ago, I started hacking on this just for fun and Roughly 12 or 13 months ago. I threw it all away and started from scratch so For the past year a friend and I have been working on this and we're really trying to design a config management system this that is extremely minimal and Probably dangerously on dynamic Here goes What we see here is Just a file that has a dictionary in it that tells us there is a note called TARDIS and it has the MOTD bundle easy Within that bundle we have a file called Etsy MOTD with some inline content. You can also use templates, of course Now this is all just Python which makes it very easy perhaps too easy to import and inject any data you like It also makes for an interesting learning curve because you start out as a command line tool with a sort of JSON-ish configuration But it quite fluidly Transitions to feel more like a framework once you start to build these dictionaries dynamically This is interactive mode. You get a nice color diff for this change in a file and Can carefully review what you're doing There's so much more features and bells and whistles to this that I can't show you right now But just a few days ago I tagged 1.0 of our tool called bundle wrap After about 16, I think alpha and beta releases You can find out all about it on bundle wrap.org. There's more information a quick start tutorial And just generally everything you want to know If any of this is even vaguely interesting to any of you Please come talk to me if you just want to yell at me for reinventing some parts of Ansible. That's cool, too I'm here until Friday You can find me as Tirain on GitHub and Twitter Thank you very much Simon Piazki, are you around is it accept you ready? Yes so I Want to talk about a trick that helps us to keep code more clean so sometimes we want to have to write such strange classes that if you see they are quite similar and The code is almost identical So what we can do with that actually this is a SQL alchemy classes and SQL alchemy allows us to write this code by inheritance using declared utter utter Decorator, but I don't like this because it is too verbose. So let's revert and Okay, so let's revert and let's See what we can do with that. So as we know Python classes execute when Python class is created its body is executed and the result of that execution is passed to type and The main difference between the function and class bodies is that function body can be executed many times and So we can just move body from function a from class to function and call Type in decorator, so So Here it is this decorator do some trivial stuff it just calls constructor and and Passes its value to type in the returns the class, but there are some Things that I don't like the for example return locals and I won't just to remove it. Can I do this? Yes, I can so Here is And it's working. I just create two classes by decorator These functions looks like class They behave like class. Probably they are class. So How I done this I Never met this before it is a decorator that actually Executes a function and extracts Local variables at the end of execution so it I don't Want to tell about how it works So and we use it in real life like Like that Here where we have models and we register to create similar models for different languages with Distinction So here it is after Simon Richard It's your turn Okay, so I would just like to tell you about some design flow that is with Gadot with the Gadot with The default argument and also has that and why you shouldn't rely on these functions too much we created a nice base class, which is called character and we Created a function that is called get quote. It Nicely formats Some quote of this character. We also subclassed it and we we can see that It works here very well. We also think about ourselves. We are so so smart because we We can handle the situations where Where there is no quote we know that sir Olympine isn't very talkative for some reasons and Here we handle this sir Olympine won't say anything So it's okay. Then we Can add another characters It also works very well and we are very happy but then we want to do something more We just Think that there are too many good Quotes by Tyrion Lannister that we don't want to choose one of them So we use the random module and we use random choice to Select one of this quotes We are doing this and What happened? Okay? Who can who saw this coming who saw that this would behave like this exactly? Not a lot of you Okay, who can tell me now what what really happened here? Yes, there is a typo, but Can we see? From the behavior of this program that there was a typo We can't This typo here would raise attribute error this attribute error would be silence it would be called by these get that and we got our Error silence. This is something completely against Against Zen of Python and this is something that makes it very hard to Very hard to debug this example here is Super simple that you could have this error raised some 10 Frames deeper and you could spend two hours on debugging sometimes it happened to me So this is not a not a good way to do it Now let's see if we change this just a little bit Here we don't rely on get that we just set quote in our base class to none And we check if it is still none or if it was a change in the inherited class and Now we can see oh Oh snap. I made the typo. There is choice not just and if we This is a thing that we can Fix in two seconds and It works now So if you don't have really really good reasons Just don't rely on get that and has that because it can produce This kind of very very hard to debug Problems. Thank you. Antonio Ogni. Oh, are you right? All right, Richard was it okay that I did not write your talk for you Wow Now I have to oh Wrong way Got it. All right, so much for changing the plan at the last minute Okay, that was a great idea. All right, everyone can see that. Is that big enough? Yeah. All right good so That's the wrong one So what I was gonna start with was this oh you want to think cheers So I was going to start with this golden rules of lightning talks thing Which was going to be really like ironic because like the first rule We all know don't go over five minutes the second rule don't do live demos, but then everyone's been doing live demos, so Well, I'm gonna do my live demo now Don't forget a piece of paper. That's rule three. Okay, so I'm going to show you a couple of Just a few little things however much I can fit in the five minutes The first one is a module called II who's heard of the module called II Okay, you don't count you wrote part of it. Okay So pip install II all right off we go. So II is a rather funny little module. It's designed For the minus M command so Python dash me It's got some basic functionality. It can do evaluation of whatever you pass. What the? This is why you don't do live demos. Hey, all right, let's try that again keeping still II All right, there we go. So it evaluates of expressions you pass on the command line It can do all sorts of stuff like import this and and and things like that So that's really neat One of the other things that can do which is kind of nice is so we've got we say we're doing some flask development and Often when you're doing something like flask development or whatever You get a bit lost in the documentation you have to kind of poke inside flask to figure out how things are good working So one of the things that the e-module will do is tell you where flask is so Dash me and a module name and it gives you the location of that module And so we ask for the flask.config for example, it'll tell us where that is you can also then say less and It'll fire up less with the module so you can then have a look at it or if you say Vim You know, it's in an editor, which is kind of nice Very handy if you then need to like inserts and debugging into flask to find out what the hell is going on to your program So that's really neat now who noticed some funniness when I was doing the pip installs there Didn't anybody see how I don't know blazingly fast that went for a computer that's not even online Co so that the magic there is a thing called DevPy. Who went to Holger's talk today? Yeah, a few of you for the rest of you. You should have gone to Holger's talk DevPy is really cool So you pip install DevPy and it's spelled pip install DevPy All right. It's already there. So it's gonna say whatever Okay, that installs Okay, so then you run DevPy server Actually, I think it's already running So yeah, it's already running because I'm using it. So I'm gonna stop it Okay, when you start it up It says cool running and there's a URL You then run a command which is oh, sorry flip thing DevPy use Set config. This is all in the very basic startup help. You don't need to remember this And that URL let's grab that Okay, and that sets all of the configuration things that need to be set so that your pip commands and everything else will now start Using your local DevPy server. What that means is it's a Proxying cache which basically means every pip command you do anything you install will be cached by DevPy locally So subs we can install commands use the local version really really really fast and it's trivial to use like I just showed I've got 48 seconds. I'm gonna show one more thing all right this All right So one of the other things that I do is I volunteer running the Python events calendar and Python use a group calendar And what I thought would be interesting yesterday was I grabbed all the calendar entries Because I realized we were getting kind of busy lately I grabbed all the calendar entries and I grabbed the locations and I plotted them on a map. That's all the pycoms That's the they're in the calendar. I chucked the user groups on there as well. Just for laugh There's a few of us now and that's my time Danilo bargain. Are you around? Okay Hello, my name is Antonio I've come all the way from Peru South America to this conference. I'm very happy to be here and I want to talk about rest of microservices with Python So we need to ask first. What is res anyway? Not everybody knows that answer very well What is a microservices architecture and what is it a good idea to write or build this kind of thing with Python? So what is res res stands for representational state traffic that doesn't tell us very much in practice What raises is a way of taking full advantage of the existing web related protocols and technologies I mean something like web proxies Application firewall client libraries and stuff like that in order to manipulate objects remotely. That's what it is in practice a Taking consideration that res was not invented It was reverse engineer after the existing weapon knowledge in 2000 by Roy Fielding one of the original authors of the HTTP 101 Specification it requires for you to include links so your API is browsable and most importantly It requires you to respect the actual semantic of each birth Like for example, you can never use get in order to make a change in the server side If you are thinking that res is only mapping the crude actions to to an HTTP ever you're wrong It's more than that. Please educate yourself a little bit. There's a lot of information on Google about this So for example, there are more than 15 status codes that you should regularly be returning not just 200 or 404 In order to know if you're doing this right you For each resource which is for each unique entity in your problem domain. You should be having only one URL No, for example, you should be including a home document a home document with links to all the other available resources And many rules like that including hyper links for example, if you make a search and you don't find the Data in your searching for you should not return 404 you should return 2200 with our resources playing in that there are no available Results so for learning more about these status codes. This is a website that really is help helps a lot HTTP status that is Please grab your copy of Roy Fielding's dissertation. It's a PDF is a PDF It's very very easy to read actually and I really like it because it compares this architectural style to others as you Takes many chapters to justify why res is a good idea I I also have a talk about this in English rest for the rest of us Just please Google it if you're interested and these two books that other speakers have been mentioning during this conference are really good So microservices Basically microservice says is building a larger system or larger service piecing together smaller services Very much like doing a match up using API from Twitter Facebook and the light the morning The most important thing about this is that they have to be highly reusable Self-contained conceptual conceptually simple and easy to maintain instead of making a big And a monolithic system and having different Skill people with different skills to agree on a system You basically build cross-functional teams like for each department each department builds its own Web service and you just use them together and each one can have it's all Agile development cycle Independently So even when you deploy that in instead of having one huge process with all this functionality You can have each functionality in a different process, which is far better for for reliability Issues so what are the advantages of microservices? The most important thing is that once that you have defined an API You can build the internals you can reveal the actual implementation without breaking any No other than that one only one developer can Maintain the code because it's it's really simple Martin Fowler the very famous Martin Fowler has been written about this There's also a conference coming this November in London, which is very interesting about this and why type well The most important thing about Python is productivity. You really have to prototype these these web services Camille are you around excellent you're next And again a reminder at 530 There's small surprise happening here one note would be to keep some battery life in your computers That would be that would be nice I'm from Switzerland, and I'm actually not here to show you something but to ask something from you so we recently founded a new hacker space in my town and One of our goals was to improve education and to like get children into technology and One way to do that is in Switzerland many Primary and secondary schools offer something like a vacation program for children So they get get a vacation pass where they have many activities to choose from during the vacations and we want to offer one of these Programs and I want to offer a programming workshop. So we thought about how to do this so Probably most of you know Minecraft and probably even more children know Minecraft than you so There's actually something called Minecraft pie edition and it's free and if you have a Raspberry Pi You can just download the binary and run it and one of the good things is Is it's actually scriptable so we can program the the tiles you can create a new block at a specific position and The good thing is if you give a give one of the kids a Raspberry Pi and install that down there He can actually go home take the Raspberry Pi with him and continue programming it so my question is if you have any An experience with this kind of workshop if you have good ideas if you want to know more then please contact me and Basically, that's it. Thank you Fernando Masanori, are you around you'll be up the one after that You ready? Yeah. Hi, I would like to tell you about Tool dev tool for developers which I created this tool records requests of web services Basic idea of this tool is that all the time we we call web services. We have to XMLs like request and reply and to record them to use them or record them we can use XSLT transformation the web service If we work with web service there can be Many time inaccessible in they not especially if you work with developer web services, so This is can be really helpful if you use it in death mode How it works when you use web services One it's already working its record to the saved samples based on the config files and when there is problem with web service you can Use service serve emote to to use web service without noticing that it's not there Right now. I will show you short demo and here Here is three calls to the web services This web service is really simple. It's just changing requests to the reply and I will call here It creates This file, which is a recorded sample Here is this response thought for this service in the configuration for this Message we need to configure Based on which parameters we want to create reply which car parameters will be used in will be used in creating reply based on request and All of them Sorry are all of them are used in this other sequence conditions if you call more request This this file enlarge it and there are other There are other parts of it if to Prove that it's already Serving from this Hope if we call web service again, it serves with changed file So as well if you want if web service has some errors you can fix it in in this Sampled files Okay, come back. There are many they created few configuration modes Mostly it's mix of recording and serving and there's also transparent mode when it looks like there is no Recording at all. So what I'm already working on Is implementing it more Implementing x path to functions, which are not present in Alex ML are but they can be very helpful when if you create configuration file with With this nose Right, but it's it's just a library to only for the functions not for it And also to not use whole blocks of XMLs. You can use nested mouse It's could be more complicated configuration file in the future. It would be nice to Create some support for rest and Jason, but unfortunately Jason and Dress don't have such matter standards for expat Like for expat or XSLT Yeah, that's it. Oh Peter coppets Are you here? Mm-hmm. Somebody's missing Peter. Ah, so if Peter isn't here then the next one would be Philip classic That's you excellent Hi, I mean from Brazil For the first time by come Brazil it will be on the beach Porto de Galinhas was the Porto de Galinhas was voted by magazine best beach in Brazil for ten times consecutive This is the venue of Conference The other thought This is the Python community some speakers and Are you invited to submit color for papers are open beach dot UL slash pi beach? Thank you Jim Baker Okay, I see I notice that I'm getting a little tired sitting and just for as a recommendation for you just everybody Stand up once please stand up once stretch a little bit. We've been sitting for an hour consecutively. I Don't I don't want the other speakers to think we've all fallen asleep. All right, some yawning. Oh Okay, thank you Okay, hi I'm Philip Kwemczyk. I come from Poland and I wanted to talk about Python PL So another Python a little bit of history, but very fast because we don't have much time So mostly photos it started in my home city We already had on the first edition over 100 attendees then we move it into remote locations like mountains where Whether in October is different Depending on the year. We had a lot of attendees. Well, no people like from projects like pi pi There's a very good atmosphere on the conference We have a lot three days of talks currently even for We have different the well-known speakers on the conference. We also have anniversaries We do a barbecues in things like that Yeah, I brothers And now we scaled up up to three a few hundred attendees We also have all the meals together because they are included in the price of conference So let's talk about the current edition So it has three to four days depending which option will you choose? It has three tracks one full English truck up to we are ready for up to 500 attendees We have parties and discussions all the time because all the attendees are in one place in one hotel Which is awesome and the prices are very low. I would say And that includes accommodation and meals So where the hell is shirk? We always choose places that have difficult names because we love tongue twisters when people from us say It's shirk So it's in the center of Europe look on this map Near the border of Czech Republic and Slovakia It's actually best kitty mountains in southern Poland How to reach so there are nearest airports are Katowice Krakow and Ostrava in Czech Republic Ostrava is the closest one, but has only flights to London and Paris There are also Euro city your night trains. You can also take a bus if you prefer buses with Wi-Fi on board We will have over 50 talks and workshops And at least half of them will be in English Here you will have some of the speakers, but the screen is too small to Have them all on one slide We don't have call for proposals because we've ended it two weeks ago, but we have call for workshops proposals so you can still Send as a workshop proposal and if you will be accepted you will get a free ticket There will be also communities from other countries on Picon PL some from Czech Republic Slovakia Ukraine and Belarus I would I want to add that Picon Belarus is the first Picon in Belarus So I Recommend to support ladies that are organizing the Picon Belarus So We have an offer if you are organizer of Picon You can get the one free ticket. It doesn't matter if it's Picon Brazil Finland or Whatever or Picon Germany you can get a free ticket with Accommodations and meals so please contact us at Picon PL at Python org and Follow us on on the web so on Facebook Google Twitter YouTube so on the social services That's all I'm being totally naughty if you are an organizer of a Picon Please send the details of your conference to the Python events calendar so that can be in the calendar and everyone can know about it Agata are you around? Oh Well, all right. Hi, so I'm Jim Baker and I'm gonna be talking about the state of jay-thon and I have 22 slides and less than five minutes. So Because we've been doing so much work. It's under extremely active development right now as we're trying to close to get to final release by Q4 So I found in this development along with all the other core devs and committers that The language changes were pretty easy. It's the runtime and libraries that we've definitely spent our work on and Ecosystem is our current focus such as some stuff. I'll be talking about around PIP You need to use Java 7 We now have some interesting new functionality so you can for instance mix Python and Java types in the base of the class when using the meta class Why would you want that when you're doing some very specialized things like one example? I will present in a moment support for buffer and memory view which will allow for Interesting efficiencies so on and so forth There's this new work called socket reboot Which re-implements the standard? Python socket module as well as adding support for SSL and real support for select using net e4 which is Quite a is a really good event loop package for Java and I would hope we would eventually use it for a sync IO support as well So here's a good example of what we're using to actually provide socket support today. You can see it's actually just Python code Binding to this net e package It actually is able in a very small function, which is slightly cut off here to handle all differences between Non-blocking and blocking with any timeouts for a given socket This enables requests so you can now use with the latest version of Jython Certainly, what's in trunk the this popular client and since it's used by PIP. This is really good It PIP used to work, but because of this change to using request and also the support for PS SSL That is now required when working with PYPI This was important for us to do we almost have this complete and it should be in the next release of PIP Regular expressions used had used to have some problems and were slow. I heard someone talking about a potential cherry pie performance I don't know about your specific case, but this might actually fix it for you. It was really cool to see this great commit by Someone who contributed this intertoll up We are now also developing stuff outside the usual release schedule and In Jython, so for instance, I'll talk a little bit about clamp and Jiffy. There's also this new fireside whiskey bridge to work with Several containers we've of course had that in the past, but this knows about site packages and it's PIP compatible and it's really nice in that fashion Clamp allows you to Directly import Python classes into Java. What does that look like? Well, let's say I had this Python class that extends some Java interfaces really simple. It's really implementing the callable interface You add two lines here in terms of being able to say from clamp import this clamp base Meta-class factory use that meta-class factory function to generate your bar base and then you add it this bar base to your List of bases for that Class and now with just one more step in terms of in your setup tools using clamp You can go and this is now Java code. Sorry to show this to all of you here that Here you are Directly importing a Python class Into your Java code without any additional work just one line. How's that? And Darius and I he did a great job working out this with you know, it's fun So Jiffy we're planning to provide CFFI support There's this interesting patois Jaini is a or genie is a project to allows C extension API support There's gonna be a sprint on this in auction on Monday We're also having a sprint on Saturday about clamp Again, we're planning to get a beta 4 out release. Canada's is native mostly this is about going and There's obviously if you for what we want to do Java integration is key Java 9 is gonna add some additional support and what about jack on 3a.exe? I'll let you guys read this as my time runs out Anton Blomberg, are you here accent you next? Peter Coppats. Did you arrive here by accident or on purpose in between? Doesn't look like it Plug-in, right? It was just a matter of time and that's code of conduct Okay, hello guys. I'm Agatha and I just want to have a short talk about How to make Python more sexy the idea is pretty simple. We just have to improve Python To be more sexy. So let's start from the beginning We can just simply improve packaging just guys use Python gems and of course improve parallelism like replace the Jill with V8 and use more callbacks What about the style of Python? adopt an explicit Java like naming convention because readability counts and Of course guys is really simple. Just use more globals no imports use file includes and Just built-in carrying And after all this stuff, I just want to say you one more thing. I Was just kidding Python is as sexy as it is can be and it cannot be more sexy guys And I want to thank you so much to inviting us for our Europe Python conference And we just love you and I hope to see you next year And of course, I hope to see you in a shirt because Python Poland is waiting for you. Thank you very much Thomas you're after that and again, there will be something at 5 30 Where you need your computers so save battery or plug-in. I hope you've got the mobile phone and a tablet with you We get we'll put these to some good use later You're ready. Yep. All right Hey guys, my name is Anton Bloomberg and my Swedish distributed systems geek and I want to talk about Parallel execution. Well, everybody knows there's a gel in Python and therefore as Pythonists, we're not very used to dealing with this concept and Well, if you actually could do parallel execution, why would you? Well, of course Increase the speed of your program and reduce the latency and Maybe why would you not single thread programs? They're easy Multipele threads. It's really hard. And why is this? It's because you introduce concurrency into your programs. It leads to race conditions that locks and All sorts of nasty problems are really hard to debug. So what you do you add locking synchronizing and then your code base is So hard to understand But there is an alternative to program Systems that's running concurrently. It's the actor model, which is a very old way has been around for ages Where you do parallel concurrency without locks So this is not your regular threaded model where you acquire a lock and do your stuff release the lock Everything is done in independent share nothing tasks This is a bit similar to all the G event tasklet libraries. No JS, blah, blah But this is more a way to organize your code to make it easier not to lead you into callback help So what you do is you come communicate by passing messages between these actors and Every actor in it is in itself like a process It's a shared nothings with all the other actors the only way to communicate is to send a message and all messages are sent a synchronously and Put on the cues for incoming messages for you all the other actors Since each actor can only execute one piece of code at once you cannot Go into race conditions because everything is in itself atomic an Actor can only we receive must one message at once and process it So what you get with this is executes in transparency network transparency as a coder you don't need to know Where your code is executing in how many parallel threads it executes or if it actually executes on a Nother system in another machine So what you actually simply get this distributed systems for free So if you want to if you like Python then maybe this is bad news for you But the pipe a SDM it actually has potential to bring this into Python What is that what it adds is parallel execution if there are no conflicts and in an actor system There is a shared nothing architecture, which means no conflicts. This means you can run Python code fully parallel on all course So what I did yesterday after having a couple of beers Was actually tried to implement this in an only Python only implementation to make use of an actor system in a fully Distributed parallel environments on pi pi SDM and well it kind of worked so It's not a library. It's a proof of concept What they basically did was implement actress a multi-threaded fully parallel event loop a lot of buzzwords, but it's not your G event event loop that you execute in Synchronicity, but sharing a time between tasks you actually execute fully in parallel Since actors share nothing you can process the cues of the received messages in parallel and do all the actors On all course So what it it was basically give the application developer a generator statement and receive a new message with a yield and built into the language you can now receive a message in a Synchronous manner and execute fully in parallel. So it works in CPython. It's a totally regular Python code And it shines on pi pi SDM. Well, kind of the overhead is still bits high on a SDM But it actually improves the more course you add So as a fun exercise, I also implemented the pure Python efficient immutable data structures like an immutable dictionary Which gives copy and write semantics, but doesn't actually copy anything. So you can find this If you go to deadlock.se Where there's a link to the github so you don't need to remember it And if you like distributed systems and see the potential for Python to actually run stuff in parallel in the future Donate huge amount of cash cash to the pi pi SDM guys and give these guys a round of applause HDMI Christoph Neumann, are you around? Can you make it in four minutes? All right, that's excellent. I have two announcements to make it's both related to having private email and To begin with we'll make a GPG PGP key signing. It's right after the lightning talks and Surprise thing so we meet at a 1745 in the basement In the lounge area where those sofas and that stuff is and just look for me and for Arnold Krille we'll kind of lead this and If you need another motivation after the first keynote and if you still think you have nothing to hide This is the slide for you so what Can we do if you don't use any TPG yet? Maybe in reality you don't have private email yet because they are reading your email It's not because they are especially interested in you, but just because they are reading all email. That's not encrypted It's easier than you think if you want to start right here at Europe Python We will have another event and it will be in the bar camp and we will have a small crypto party You just come there with your laptop have Thunderbird installed and we'll help you to get GPG going and to Create your keys and so on Just meet us there. We'll try to make a session about this You can also use another email client. Just make sure there is some sort of GPG support for it So for the key signing for the event today at 1745 what do you need? You need a PGP key, of course. It's a key signing You need your name email and key ID and fingerprint for example on such paper strips or on your business card Alternatively, you can also have this data just on your laptop screen if you don't have any paper with you And you need a valid passport or ID card So the procedure will be about like this We will just row up in a kind of circle, but it will be a flattened circle So everybody is facing somebody else and then one guy will just verify the passport of the other guy And we will compare the identities on the paper strip and if everything is okay You just take the paper strip and You can sign the keys later at home. You don't need to do it here Then we just rotate right by one and the next verification step happens and we repeat this until we all have checked everybody else If you have no paper strips, you need this Either you have a mobile client maybe on your Android phone or whatever you can just show the key info page of the GPG Implementation usually the info page shows your Key fingerprint and then the other one can just make a photo of it. So you don't need to exchange any paper Also, if you have a laptop you can just enter that command to print your key IDs your email addresses your name and also your fingerprint Then just copy and paste it into a world processor and make it full screen. So it's easy to photograph it And then the other guy will just make a photo of it instead of taking the paper strip What you need later is a tool called calf CA FF if you run Debian or Ubuntu it's in the package called signing party and If you have a lot of keys to sign that will save you a lot of work It's a bit of work to set up that tool once because you need a local email server or at least some sort of relay agent But it will save you a lot of work if you have done it once Alternatively, you can also do it manually, but then you have more manual work And the tool is rather easy. You just say calf and key ID Then he downloads the other guy's key from the server It shows the fingerprint so you can compare with the paper or the photo you have taken Then you can sign each of his email and the tool will automatically create multiple emails for all the email Addresses you wanted to sign and sends each signal to the corresponding email Yeah, this is the final slide for everybody who has maybe not have seen it yet It's from Germany So see you there. Thank you So I'd like to get an overview of how many computers we have in here who has at least one computer with him All right, that's a fair standard. You don't have to show me the computer Who's got two and computers anything that has a CPU in it Who has three Okay, now that's the computer a smartphone in a tablet who's got four So the fourth one does that have? network connectivity Who has forward network James you are awesome. We need you you're gonna be a workhorse here in a minute Ready ready. Let's go My name is Christoph. I'm co-founder of quantified code And what we do is we do data-driven code quality management. So we develop software Data-driven software that helps you monitor and improve your source code And we are lucky we got a funding from the German government and so we can For the next year spend our time without a lot of business pressure to build a great product And I'm here today to ask you to help us to give us feedback and to check out our first alpha version Because we want to build something that really matters and that really is going to be used by the community So what we are striving for is basically we want you to check in your repository on our website then we will offer you continuous check and monitoring of your of your code quality and Finally, we want to not only check the code, of course, but we want to display results We want to give you suggestions and in the final state also offer you automatic improvements to the code How do we do that? Basically we apply machine learning algorithms to a lot of source code Basically to most of the source code you can find open source on github Where are we right now so? As I said we introduced an alpha version so we can already check the source code of Open source public Python repositories on github and you will already get commit by commit a report of what has changed Did you add bugs or did you fix bugs? so Let me show you The website so this is basically our alpha version So what you see here if you visit our website is basically you get a list of all those projects. We already Crawled on github so you can let's go into one of them There is by the way. No sign up needed. You don't need to do anything. It's all all the projects Can be used right away and now you get an analysis of the mistakes and errors in your code How did we do this as I said again? It's a it's an alpha version It is the first step. So what we did is we used common linters pyflakes pep8 and so on we checked if the if the messages they give you are relevant we categorize these messages and Here you can filter Whether the message or the the error is a critical one a potential back, etc Let's zoom into one so you click here and then you go directly to the to the piece of code where this issue occurred So now what I'm what I really love to to Get from you or anyone who's interested in static code analysis code management co quality management or any programmer is Now this is a simple alpha version It has functionality it gives you know a few of your code But I would like to know what are the features you really need what does what do you need in terms of workflows? Where do we need to integrate into? Jenkins or any other Systems What are the common mistakes you get from other linters, which you would like to see solved? Yeah, just just reach out to us. We want to develop the product with you All this is here free and will ever stay free for for open source And also as I said, we got a government funding. We have free slots there So if you're interested in working with us for the next few months on the cool product Then get in touch with me Thanks Was that a good set of lightning talks today? Was it? Thank you