Aleksandr Koshkin, Positive TechnologiesVideo & Slides →
Alexander Sibiryakov, ScrapinghubVideo & Slides →
Raymond Hettinger, Python core developer
- Preview: use of property() for computed fields
- Overview: How descriptors work
- Project: Develop descriptor based data validators
- Preview: Output redirection with print()
- Most common context managers: files and locks
- Three paths through a content manager
- Project base case: family() help() dis()
- Redirection the hard way
- Redirection the better way
- Function and class decorators
- Project: Name fix-up for the data validators
Dmitry Kukushkin, WargamingVideo & Slides →
Jackie Kazil, Capital One
Open-source projects often struggle with finding contributors and getting off of the ground. Communities, such as Github and PyPi, are host to redundant projects and libraries. In the development space, how do you distinguish your project from others, get people excited to contribute to it, and ultimately create a successful open source project? The answer is to apply user-centered design techniques to the development of your project. User-centered design is usually applied to web applications and products on the front-end of a website, but these techniques can be applied to open source libraries. In user-centered open source projects, your users are those who type
pip install $your_library.
In this talk, Jackie will illustrate some user-centered techniques that have been used on her own project — Mesa (https://github.com/projectmesa/mesa), along with other successful open source projects. This talk will include a survey of interviews with a focus on successful techniques, along with additional user-centered design techniques that could be leveraged to inspire increased community engagement into your project.Video & Slides →
Ekaterina Tuzova, PyCharmVideo & Slides →
Andrii Soldatenko, Toptal
Social phenomena is coming. We have lot’s of social applications that we are using every day, let’s say Facebook, twitter, Instagram. Lot’s of such kind apps based on social graph and graph theory. I would like to share my knowledge and expertise about how to work with graphs and build large social graph as engine for Social network using python and Graph databases. We'll compare SQL and NoSQL approaches for friends relationships.Video & Slides →
Armin Ronacher, Flask framework
A deep dive into the internals of the CPython interpreter and how some of its design decisions have shaped the language.Video & Slides →
Raymond Hettinger, Python core developer
Walk through two examples of threading and multiprocessing to illustrate rules and best practices for taking advantage of concurrency.
- Processes versus threads
- Fear and respect. Methodology and Confidence
- Role of testing and fuzzing
- Race conditions and sequencing issues
- Locks versus flags
- Resource isolation and atomic message queues
- Sequencing by placing tasks in one thread
- Barriers that wait for parallel threads to complete
- Monitoring progress of daemon threads
- Thread local variables versus global state
- Advantages and disadvantages of processes
- Parallelizable tasks versus intrinsically sequential tasks
- Performance killers, the three most common mistakes
Martin Gorner, Google
Preparation instructions: make sure you come with the necessary software installed.
Pavel Petlynsky, Rambler&CoVideo & Slides →
Kirill Borisov, YandexVideo & Slides →
Anton Egorov, ostrovok.ruVideo & Slides →
David MacIver, Hypothesis
Hypothesis is a library for writing smarter tests.
Instead of hand-writing every example in your tests, you describe what sorts of examples you need and let it fill in the blanks. It uses this to actively go looking for bugs in your code.
It’s proven very effective, and is being used by an ever growing number of open source projects (including pypy, cryptography, and mercurial), but people sometimes struggle to get started.
In this session we’ll help you overcome that by going through a number of illustrative examples that will help you understand this style of testing better.
The first two hours will be spent on these, start with a discussion of the problem, a sample test to start you off, and then people will work through it at their own pace, with me there to answer questions and help people when they get stuck. After people have had some time on a given problem, I’ll go over some possible tests for the example and why they are useful, and give people time to try anything they like out before moving on to the next problem.
For the final hour, people will work on testing some more substantial code. You should feel free to bring your own, but I will provide some interesting projects for people to work on for anyone who doesn’t have anything specific.
At the end of this you should feel much more comfortable with the general concepts of property based testing, and be able to use Hypothesis effectively to test your own code.Video & Slides →
Artem Malyshev, Positive TechnologiesVideo & Slides →
Andrew Svetlov, Python Core DeveloperVideo & Slides →
Nathaniel Manista, Google
Large codebases need not be tragedies of the commons so riddled with complexity and technical debt, but so many are. How does that happen? By what mechanisms and pathologies do a large number of locally reasonable decisions by intelligent authors add up to unmaintainable software? How can it be that the end result of everyone doing everything right is a system “too dangerous to touch” that can’t be modified without likely breaking something?
I’ve written that software, I’ve maintained that software and brought it back from the brink, and I’ve trained others in what is required to avoid trouble. I’ll share what practices work, and why and how they do. I’ll dive into the designs of classes, functions, modules, and packages. I’ll evaluate the tradeoffs of global state and other dark magic. I’ll even dig into and get personal about naming.
The first obligation of code is to run correctly. The second obligation of code usually is to run efficiently. The third obligation of code is to play well with other code and other programmers. Come learn how to write code that makes friends without sacrificing function or performance!Video & Slides →
Andrey Sumin, HeadHunter GroupVideo & Slides →
Andrey Vlasovskich, JetBrainsVideo & Slides →
Ben Nuttall, Raspberry Pi
The Raspberry Pi Foundation is a UK charity which creates low-cost, high-performance computers that people use to learn, solve problems and have fun. Through our educational programmes we work to put the power of digital making into the hands of people all over the world.
With Python on the Raspberry Pi, it's easy to start creating physical computing projects, and to experiment and tinker with add-ons and accessories from lights and buzzers to environmental sensors and robotics. This ease of access was accelerated with the creation of a new minimal boilerplate library called GPIO Zero, of which I am the primary author. In this talk I'll talk about the Foundation's work in education, share some great Pi projects, give a taster of how to get started in physical computing and dive into the technical innards of the GPIO Zero library. As well as a learning tool, the Pi is commonly used in home automation projects and industrial applications.Video & Slides →
David MacIver, Hypothesis
Software is everywhere, and it's full of bugs. In order to fix bugs you need to find them. In order to find bugs in software, you need to test it. But there are so many bugs. How are we going to test for them all? Hypothesis is a modern software testing library that is here to help you out. You focus on the behaviour you want to test and let Hypothesis probe the boundary conditions of your software, automatically finding where those behaviours are violated. This is a talk by David R. MacIver, the primary author of Hypothesis. He'll talk about the challenges of good testing, and how Hypothesis can help you future-proof your software.
Konstantin Lopuhin, ScrapinghubVideo & Slides →
Dmitry Kiselev, Endpoint.comVideo & Slides →
Ivan Tsyganov, Positive TechnologiesVideo & Slides →
Martin Gorner, Google
Google has recently open-sourced its framework for machine learning and neural networks called Tensorflow. With this new tool, deep machine learning transitions from an area of research into mainstream software engineering. In this session, we will teach you how to choose the right neural network for your problem and how to make it behave. Familiarity with differential equations is no longer required. Instead, a couple of lines ofTensorflow Python, and a bag of "tricks of the trade" will do the job. No previous Python knowledge required.Video & Slides →