 And something on the other corner of the program breaks. So Meet Cooper, it's a library that I made to try to make this problem easier. And that I released during the Euro Python 2015. So the way this library works, it's a decorator's library. And it also has a meta class that is injected here by inheriting from Cooperative. And when we use the Cooperate decorator, this makes sure that the method is going to cooperate properly. So it's actually going to call super for guarding all the keyword arguments. And it's also going to do checks, like, for example, make sure that our signature is only based on keyword arguments. Also then, if another class overrides this method, you will get an error. It also supports abstract methods and so forth. So this is an example where we can see the forwarding of arguments working. So I have a text class now with border class that adds, it will be like a mixing that could add border to a text. When I multiply inherit from it, I could pass explicitly naming the arguments to the right classes of the here game. Actually, this mixing pattern is very useful. And there is this function that is provided by the library that allows you to create actually this class that combines the other two classes dynamically in the context where you need it. So you don't need to explode your hierarchies. There are more features that are not so important. So I'm going to go look at the project here. Thank you very much. OK, thank you, Hoppe. So Tudo Fabathel. Fantastic. Sorry, it's a company. So just while we wait for a second, what was the which? Tell us a story. Wow. Anything? Do you think I might have run out of stories? Do you think I could have some more? Tell it what? We could do that. Anyway, to go, we might have a little bit more. All right, then let me just say very quickly. I know you've heard a lot about it. But I've worked with the Django Girls Project, and it's made a huge difference in my personal life. It might make life easier for women trying to get into programming, which is a wonderful thing. But I'll tell you what being involved with that organization has changed the way that I think about programming and that I interact with programmers around me. So that whole diversity thing, it doesn't necessarily just be about helping out one group to become part of a larger group, but it actually does benefit individuals in that group as well. So they've made a huge difference to my life to the way I think about programming. And so I just hope that some of that rubs off on everybody in this room. So if you don't mind too much, let's just give them a wonderful round of applause because they're brilliant. So you're not forced to use emoji everywhere, but now you feel like you have the option, you know? So this guy walks into a bar, and the bar is empty apart from the barman and a man with an orange for a head. So what do you have to tell us? Tudor. So I'm here to talk to you about APIs and why are they bad? So. Speak into the mic. I should start by with the definition of an API, which is an application programming interface, which can be considered a set of routines, protocols, and tools for building software applications, which is kind of vague because everything a programmer interacts with is an API. So the purpose of an API would be making things talking to each other. In 2011, Programmable Web did a survey, and some of the big names got it wrong. What can go wrong with your API? Firstly, your documentation can be very, very wrong, and the signs of a bad documentation are missing inaccurate, out-of-date, incomplete, unprofessional, difficult to browse, and the worst, boring. How can you fix this? By using two simple principles, keeping it short and thinking long-term. My two cents about an API would be offering a structured overview for simple access to different components of your documentation, easy access to find something on your documentation, clear description, very simple, but enlightening in-out examples, standardize the communication between your clients and the entire API. Number two reason would be bad communication. And where can this occur? Well, between developers, between developers and management, between developers and QA. How can you fix this? Well, you can implement good communication channels like Jira HipChat. You can have application change logs like GitHub and Jenkins. You can keep a project roadmap, a change list, and the blog or knowledge base. Reason number three would be a bad beginner experience. How can you fix this? Well, copy-paste examples are always good at defining a sufficiently small and comprehensive SDKs better. Quick start guide for the API in developer and client. Also good in offering a sandbox test environment would be the best option. Reason number four would be that your API is unreliable and a sense of an unreliable API would be outages and announced API changes, throttling, or bugs. The big don'ts of an API is serving raw server errors. It's not elegant or helpful or serving stack traces which is a security problem. How can you fix all of this? You could have build automation, continuous integration, continuous monitoring of your systems. You should inform your customers of outages and you should implement user-friendly error designs. And you may ask, what are these error messages in their design? Well, you should keep your error messages simple and clear. They should have error codes. They should be rapid data structures give as much information as possible to your client but still don't be verbose and use HTTP's built-in capabilities. After implement all of this, this is the expected client's behavior. Reason number five would be that everything is too complicated within your API. And the symptoms for over-complicating your API would be a complex API workflow, arguably all of it. Or not using JSON data representation and ignoring all HTTP rules within an addressful API. My suggestion for fixing all of this is principles, being practical, and as much as you can, avoid XML. Thank you all for listening. All right, if we still don't have the author of the entry number seven, a good course in Python. Nope. Then we would like, please, Webcam 2015 with Denny Bertovic. Amongst yourselves, everyone. Are you ready to go? Yeah. So hi, my name is Denny. I'm one of the organizers of a conference in Croatia in the city of Zagreb. It's called Webcam. This is the fourth year that we're doing it. And it's organized by the local communities, the local meetup communities, that is. And it's a sort of a polly conference in the sense that we have talks in different technologies. So it's not just Python, it's Python, PHP, JavaScript, some functional programming languages. And we also have designer talks. Last year we had around 800 people. And you should visit to get a possible different perspective about how your colleagues in different programming languages are using web technologies. The CFP is closed, but you should submit a talk anyway. If it's very good, we'll be sure to squeeze it in. Tickets are available on the website listed above. I also have five tickets that we are giving out. So just tweet at this little handle. And the first five who tweet to me, I'll send you a code so you can get a free ticket. Thanks. Okay, up next we'll have one more talk. Let's have Cesar de Salis for Life Hacks with Python. Welcome, Cesar. Look, we're not gonna have the joke about the man with an orange for a head. That one takes forever and it's wonderful. But the only way that it would happen is that I would tell you half the joke and then you would have to wait a year to hear the punchline. So we can't have that. So let me tell you a different joke, which is very short that somebody else told me yesterday, which is in a different style. This is about a man who's, well, let's say it's a woman who's walking down the street. You should choose women as your default examples in documentation or in jokes I heard recently if the jokes are about programmers. So it's a programmer lady who's walking down the road and she spots a horseshoe on the ground. And she's like, oh, I wonder what's on the other side of that horseshoe. So she bends over and picks it up on the other side. There's a horse. Don't clap the jokes. No, come on. Just like laugh and go, ha, ha, ha. Oh yeah, that wasn't too bad. Gosh, that was sure better than the extractor fan one. Are you ready to say that? Hello, everyone. My name is Cesar. So I just want to share a couple of thoughts with you. Maybe helpful for life. In Python, of course. The first thing is you should get enough sleep. Oh yeah. There is actually no bar that can take a good sleep. Maybe sometimes you are really like focused on thinking about a problem and then you got bed. And the day after, it just happens that the solution comes to your mind. So you get six to eight hours of sleep. But then you soon cheat. Yeah, I have a live demo for this. So I'm going to sleep for 10 hours. So yeah, it's a synchronous sleeping. Next one is find out about your biggest instructions and get rid of them. This is mine, which one is yours. Also, for instance, in my team, I tried to get morning of nominings. It's a nice rule. But again, I have a live demo. Basically, it doesn't work out all the time. So not all batteries are included. Sometimes it's good to get out of the computer. There are things that are more important than others. So get your priorities high. This is also a call for all Swiss Pythonistas. Get in touch with me. Maybe we can organize the Swiss PyCon. Otherwise, I welcome, but rain cash. How do you say that? Fabio, are you ready? You want some more time? Yeah, here we go. The more Fabio tries to prepare his final presentation, the more lightning talks we can have. So that's a huge win. Take your time, mate, take your time. There you go. What have we got next? We've got an announcement about something called PYSS15 by someone called Alex Savio. And I don't know how that's pronounced. But I suggest that it should be pronounced pi SS. Just gonna put that out there as a possibility. I want a joke. Are you plugging in? Good. Maybe he's just ready? No joke? Yeah. Well, I'm a mouse who couldn't play. Well, I'm here to present the on-site team who helped the EPS organizing this conference. We had a, well, Fabio, I'm also here to present the conference we are organizing in October this year. So who we are, who are we? We are the Association of Python and Sebastian. Some people say pi SS, we like calling it piss. Sorry, no puns intended. So the members, some people, you have seen with a green T-shirt. Some people you haven't seen here. So and some helpers, very nice people. So, oh, sorry. So where are we? We are in San Sebastian, which is a small town on the coast, one hour from here. So what? Okay, let me Google it for you. So this is San Sebastian, it's on the beach, has the most, has concentration of Michelin stars. Yeah, in October, the weather is good. Yeah, no rain at all. So what are we doing? We are mostly organizing meetings and conferences. Last year we organized a piss, 14, the first piss. We invited very nice Pythonistas, Gael, Ben Nothal from Raspberry Pi who's here, and Luis Pedro, mostly scientific Pythonistas. We had a lot of pinches, but the good ones, yeah. Yeah, we cannot make those for so many people. So they had a lot of fun. Yeah, we are also organizing software carpentries. We are trying to do that every year in the University of the Basque country. We are also doing education meetings, bringing schools to talk about robotics, training them on drone flying. Was fun, and then we organized this conference, very big conference for us, very short time. And now I'm announcing P-15. So, yeah, I'm sorry, this was a satellite event. So yeah, it's going to be in the end of October. Follow us on Twitter, and this is our website. Thank you. Alex Savio there, a man whose smile only gets wider the more nervous and stressed he is, which inside he might be feeling terrible, but everyone around him is like, ah, look at that, he's smiling, and it helps them relax, so it's good for other people. All right, so up next is Fabio, and the next round is not a lightning talk. We're gonna have a little round maybe to talk about this conference, and it's organized and say thanks. So I'm gonna be expecting some sort of overwhelming applause from you guys, but like, you know, let's see how the presentation flows out before we give it. And maybe we can have like one more verse of a man with an orange for a head story. Wrong. So we're gonna be hurting our hands anyway during this thing, so would you like to like start with some gentle applause for Fabio and all the other organizers? So, welcome everybody to this closing note. This is going to be a sort of extended lightning talk. It's going to be without much pictures, so probably boring. We'll try to make it not boring. It'll probably end in 2015, is anything. So we hope you had a good time. We had a very difficult year, really difficult. We, the future of Europe Python was very uncertain. Many different opinions. It's always very hard to build a community. It's always very hard to deal with tension, but like this year I think it's the proof that if everyone is very committed, if we try to not look into other mistakes or things that they did wrong, but look at their skills and how they would like to help the community, we can actually manage to have a growing and very welcoming and good community. So I would like to give some stats about this year. So first, number of attendees. This is part of us trying to be more open, be more transparent, make understand what means, to make such an event and try to get the community involved. So those are the numbers for countries, attendees. So Germany, Spain, Great Britain, Basque country, sorry. So friends actually had quite a few people from outside from the US. Then I have one list all those. This is the second slice of that table. The curious is we actually had people from very far, Pakistan, Mexico, Japan, many codes that I forgot. I promise that I swear I searched for all those I remembered, but I know I'm forgetting. We had officially 1094 attendees, which is around 9, 8, 9% less than last year. But I wanted to search for the number of flights and connections to get here and compare to Berlin, which would be a good ratio about how hard it is. I know that Bilbao is the center of the world, sorry, but it's harder to get here. This is a chart about the number of tickets sold during the time. We are very late this year and we started selling, the website was in March. So it's quite nice to see the first week where we actually sold around 300 and something tickets. Sorry. Then we have a constant growing. Here we released the schedule. So we actually see a big curve. And around here we started to, we changed the rate to online, on desk tickets. And this is the social event selling. Also, it's just to give an idea from the organizer point of view. It's quite hard to predict the number of attendees you are having, especially if you see here. At some point things start to get a bit depressing. And you have a lot of requests for financial aid. We really wanted to have low price tickets, especially for students. And we actually took a big risk on this because the venue is very nice. And we had the catering and many things, but all those nice discounts with the price. So that's that. We spent around nearly 20,000 euros, sorry, on financial aid. And we really hope that this can increase a lot in the next years. This, we aim to do that by, well, hopefully we get some money from this year to have on the budget. And also, we started much, much earlier and communicated things earlier, talking with sponsors. We hope that that will help as well. Unfortunately, we had two cases of code of conduct. This is something that can happen on a big conference like this. I would like to remember that code of conduct is there for a reason. It's not only about gender. It, I would like to invite everyone that doesn't feel comfortable with something to come to the code of conduct team, try to explain the code of conduct team. We'll try to get to the person that did something. We try to talk and speak with people. Many times, most of the times, those things that do not happen by intention. So this is very difficult task and very difficult for everyone that are involved. And again, I invite everyone to not feel afraid to speak because we really want a welcome community. We really want everybody to be to feel that they are safe, they are having good time. So to everyone, just remember that you are with other 1093 people, person here, everybody they have their own feelings, their own culture. So that's the message I would like to pass by. Everything was prepared in six months. Around October last year, we still didn't know anything, we still didn't know if we would have a conference this year. And we did a really, did your part of the society, did a really hard job looking for teams to try to organize in like in many things in life, this came just by out of nowhere, by friends, shared friends, sending a message on a night out with other friends saying, on the cider house actually, saying, so what about having your Python in San Sebastian? And like after one and a half second, yes, let's do it. We actually didn't manage to have it in San Sebastian because of prices, especially for the hotels. In January, we started preparation, started working on many things. In the meanwhile, the Europe Python Society started working on the workgroup's concept to try and remove some of the efforts of some of the weight on the local organizers' shoulders. It didn't work as we expected, but we also managed to do some work. In March, we launched the website and with many difficulties, in June we released the schedule which is quite late. The conference, five days plus two days of sprints. We had 117 talks. 25 trainings, poster sessions, open sessions, lightning talks. And now, some more, last year's statistics. We had 1,500 liters of coffee. 3,000 cheese croquettes. At 24,000 breakfast pastries. Actually, we had too much food. 400 liters of beer here. We tried to have a number for the party, but it didn't work, sorry. Actually, we also tried... Before that, we actually tried also to have a function for the best memories of the party, but it raised the memory leak. We had 300 missing badges during the registration. We actually, who here saw the long queue at the registration and was... The organiser raised two hands. We had around 150 unassigned tickets, so we actually more or less didn't know who was, who were them assigned. But it's also because it means that the website was not clear, so we had tried to fix that for the next year. I'm not involved in this one, so... Yeah, well, this is for the Polish guys. Not in general. Polish friends. Yeah, sorry. Polish people. We had zero soups, zero potato match. But the infinite pimples. Okay, so I don't know if it's last year's or more serious, so we had six organisers and 33 volunteers at the beginning, but only around 10 really active. And from those 10, the core team was full, so out of 33 volunteers, just four active, really active. So, again, all the help is really appreciated. This is a call for volunteers from the work groups. Back to statistics, we had around... Those 10 people did around 11,200 hours working on the conference in six months. It's around a lot of time that they are taking from their spare time, from their friends, their family. So if we... In the future, we can really split that on 100 volunteers. That would be awesome. This is through statistics. One of us had a distance counter, and we measured, like, from Sunday, he walked around 130 kilometers. The big question, where will be EuroPython next year? It will be Mimbao. So I just want to close saying really, really thank you to all the volunteers, the people that really, really, really push themselves so hard organizing this. Thank the sponsors. Thank you for being here, for understanding the problems. The very, very good and nice atmosphere. I hope you enjoyed as much as we did. And thank you for coming. See you at the sprints, or see you next year. And thanks again to everyone. Fabio, Fabio, Fabio, Fabio. Wait, wait, wait, wait, wait, wait. Guys, Fabio, should we have all the organizers and any volunteers up on stage? Come on, we want to give them a big round of applause. Yeah, we want to see them. Come on, guys, the green t-shirts. Let's see you. Come on, come on, come on, come on, come on. If you're wearing a green t-shirt, come on. If you're wearing a yellow t-shirt, you can come on stage as well. Anybody that's involved in volunteering, all right, guys, you can come up on stage. If you can't get up to the stage, just stand up and have people clap you. Here they all are. Everyone in this conference can't happen without them. Thank you to each and everyone. Come on up, you deserve it. You're a volunteer. Even if you haven't got the t-shirt right now, do come up, look at them. Come forward, you're in the dark here, you're not going to be on video. There you go, run around. At this point, you should run off stage and then come back on stage for the second bow. Bravo. That's embarrassing. Mercy me, guys. Thank you very much. All right, thank you, guys. If you want, we're going to finish up a little bit of lightning talks. We've got this room until about 10 to 7, but if you would like to go home or if it's time for going for a beer, this is a good time to leave the room. Otherwise, we're going to try and have four, five, six more lightning talks just to finish off the day. And of course, it doesn't finish off the conference. We've got the sprints tomorrow. We've got the sprints the day after that. We've got IRC and email and mailing lists and GitHub and BitBucket and other excellent code sharing websites that we all use just as much as the main one. Ah, there you go. Look at them. Wonderful. Look at them. All organized, all organized, all voluntary. No, no, no, no.