List of videos

Víctor Terrón - Kung Fu at Dawn with Itertools

Víctor Terrón - Kung Fu at Dawn with Itertools [EuroPython 2016] [18 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/kung-fu-at-dawn-with-itertools) The itertools module is one of the cornerstones of advanced programming in Python. This talk offers practical advice about iterator algebra that can be put into practice immediately. Discovering the itertools module means taking the veil from our eyes, and once we use functions such as repeat(), takewhile(), dropwhile() or product(), there is no return — it is impossible to come back to the world of the mere mortals, where solutions are more complex and need more memory. ----- The itertools module is one of the cornerstones of advanced programming in Python. Part of the standard library, it provides an iterator algebra that allows us to elegantly chain abstractions, enabling solutions that are both simpler and more memory efficient. The goal of this talk is to offer practical advice and clear lessons that can be immediately put into practice. Illustrating it with numerous examples, attendees will leave having assimilated at least several concepts that will improve their code undeniably and irremediably. Emphasis will be on showing specific cases where a traditional solution can be overhauled over and over with functions from the itertools module. Let’s say, for example, that we want to alternate indefinitely between two values: -1 and 1. The novice would use a variable, updating its value at each step, and the average user would maybe opt for an endless generator. Both are worthy and honorable solutions, but they pale before the mastery of the martial artist who only needs itertools.cycle(). Because that is the nature of the itertools module: once the veil falls from our eyes and we come across functions such as repeat(), takewhile(), dropwhile() or product(), there is no return. In this talk we will learn to identify when they can be used, accomplishing with a single line of code what for the mere mortals takes much more effort.

Watch
Maciej Dziergwa - The Journey from Python Developer to Python Company Owner

Maciej Dziergwa - The Journey from Python Developer to Python Company Owner [EuroPython 2016] [18 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/the-journey-from-python-developer-to-python-company-owner) I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path. How to create employee-friendly work environment for Python developers? Which business model gives a chance to attract and keep more than 100 Python enthusiast? I will also gladly share some lessons learned working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers. ----- Ten years ago I became a big Python fan, but at the time there were no jobs for Python developers in Poland. So, I decided to start my own Python company. Today, ten years later, this company employs more than 100 Python Developers in four cities. There are a lot of Python enthusiasts in the world, many of them more skilled than I was at that time, but clearly not anyone can become a „Python Business Developer”. In this talk I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path. My goal is to answear these questions: How to create employee-friendly work environment for Python developers? Which business model gives a chance to attract and keep more than 100 Python enthusiast? I will also gladly share some lessons learned while working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers.

Watch
Manuel Miranda - Where is the bottleneck?

Manuel Miranda - Where is the bottleneck? [EuroPython 2016] [18 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/where-is-the-bottleneck) We all know Python strength does not rely on its performance and speed when running programs. This plus the flexibility of it, can lead to build real slow and bad quality software. In this talk you will discover a set of useful tools for diagnosing where the bottleneck is in your programs along with trips for quickly realizing which is the most needed resource. ----- Have you ever felt like your software is eating your resources and you have no clue why? Have you reviewed all the lines, debugged and printed everything but you still don't know what's wrong? In this talk I will conduct a fast intro of a basic set of tools you can use to diagnose your software's performance and then we will go through a simple piece of code to show how those tools work and what you can expect from them This set of tools will include basic ones given by the OS itself like `htop`, `lsof`, `ps` and more advanced ones that let you plot the memory usage for given functions like `memory_profiler`, check CPU usage and the call graph between functions like `cprofile` and `kcachegrind` and others. By the end of the talk, you should have an idea of which are the most typical causes that can make your program slow and you will have a list of tools to search for and identify the source of the problems.

Watch
Facundo Batista - It's not magic: descriptors exposed

Facundo Batista - It's not magic: descriptors exposed [EuroPython 2016] [18 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/its-not-magic-descriptors-exposed) This talk shows the Python Descriptors, detailing their behaviour with a detailed practical example, so we can understand the power and flexibility they give. As a bonus track, class decorators are explained. ----- This talk presents, using a detailed practical example, the Python Descriptos. The behaviour of descriptors mechanisms is detailed, showing their power and flexibility. Finally, as a bonus track and to complete the used practical example, class descriptors are explained.

Watch
Stefan Behnel - Fast Async Code with Cython and AsyncIO

Stefan Behnel - Fast Async Code with Cython and AsyncIO [EuroPython 2016] [18 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/fast-async-code-with-cython-and-asyncio) Learn how to use the new async/await language feature to write asynchronous code in Python and [Cython][1]. See how to benefit from the excellent low-level features that Cython provides to speed up or parallelise your code, interface natively with external C/C++ code, and achieve better responsiveness and lower latency also in mostly I/O bound applications. [1]: http://cython.org/ ----- Python has recently seen a fresh development boost around asynchronous applications, triggered by the addition of the asyncio library and the new async/await language features in Python 3.5, but coming from a world of well established tools like [Twisted][2] and [Tornado][3]. The [Cython][1] compiler, which compiles Python code to C, has accompanied and influenced this development. It provides full language support for async/await under all Python versions starting from 2.6, as well as native interoperability with existing Python code and the new Python coroutines in Python 3.5. Benchmarks show that, while fully compatible, Cython compiled coroutines perform about 2-3x better than the same code executed in Python, but they additionally allow to interface natively with external C/C++ code, release the GIL, do parallel computation, and much more. All of this extends the applicable zone for asynchronous applications dramatically and can lead to better responsiveness and lower latency also for mostly I/O bound applications. This joined talk by an async I/O expert and one of the Cython core developers explains how to write code with async/await in Python and Cython, and shows how to benefit from the excellent low-level features that Cython provides on top of Python. [1]: http://cython.org/ [2]: https://twistedmatrix.com/ [3]: http://www.tornadoweb.org/

Watch
Facundo Batista - Entendiendo Unicode

Facundo Batista - Entendiendo Unicode [EuroPython 2016] [19 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/entendiendo-unicode) Charla que explica qué es Unicode y otros conceptos relacionados para poder usar esta tecnología ----- La charla muestra de forma teórica/práctica qué son Unicode, las planillas de códigos, los caracteres, y las codificaciones, entra en detalle en las distintas codificaciones, para saber cómo usarlas, ejemplifica las reglas de oro para utilizar Unicode en nuestros programa, y termina mostrando algunas funciones útiles para el manejo de esa tecnología.

Watch
Marc-André Lemburg - So you think your Python startup is worth $10 million...

Marc-André Lemburg - So you think your Python startup is worth $10 million... [EuroPython 2016] [19 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/so-you-think-your-startup-is-worth-10-million) This talk is based on a recent consulting project the speaker ran to support the valuation of a Python startup company in the due diligence phase. By following some of the advice from this talk, you should be possible to improve the valuation of your Python startup or consulting business in preparation for investment rounds or an acquisition. ----- This talk is based on the speaker's experience running a Python focused software company for more than 15 years and a recent consulting project to support the valuation of a Python startup company in the due diligence phase. For the valuation we had to come up with metrics, a catalog of criteria analyzing risks, potential and benefits of the startup's solution, as well as an estimate for how much effort it would take to reimplement the solution from scratch. In the talk, I am going to show the metrics we used, how they can be applied to Python code, the importance of addressing risk factors, well designed code and data(base) structures. By following some of the advice from this talk, you should be able to improve the valuation of your startup or consulting business in preparation for investment rounds or an acquisition.

Watch
Vinicius Pacheco - APIs and Microservices With Go

Vinicius Pacheco - APIs and Microservices With Go [EuroPython 2016] [19 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/apis-and-microservices-with-go) In this talk we show how the Go language helped us get a high performance in a concise and simple API. Everything will be exemplified using the backdrop of a real case of Globo.com: API registrations. We will see how we went from 200 to 19,000 records per second to the impacts of this rapid growth and the consequences of Go of use. We also show how our microservices architecture was used in the project. ----- This talk is about Go, software architecture and parallelism. How we went from legacy, complex and slow software to new, speed, resilient and maintainable software. I'll start the talk showing the problemas and the challenges that my team had received. After that, I'll show the tests, tests of performance and the options that we did considering technologies and strategies of development. The difficulties and problems also will be show. Also I talk about: - Goroutines - Resilient patterns - Go tools - Architecture - Web performance How we leave of the Java ecosystem to new free ecosystem with microservices and how Go help us.

Watch
Yury Selivanov - High Performance Networking in Python

Yury Selivanov - High Performance Networking in Python [EuroPython 2016] [19 July 2016] [Bilbao, Euskadi, Spain] (https://ep2016.europython.eu//conference/talks/high-performance-networking-in-python) The talk will cover new async/await syntax in Python, asyncio library and ecosystem around it, and ways to use them for creating high performance servers. It will explain how to build custom event loops for asyncio, with an example of using the libuv library with Cython to achieve 2-3x performance boost over vanilla asyncio. ----- The talk will start with an overview of async/await syntax introduced with PEP 492 in Python 3.5. We'll go through asynchronous context managers and iteration protocols it introduces. I'll briefly explain how the feature is implemented in CPython core. Then we'll explore asyncio design. I'll briefly cover event loop, policies, transports, protocols and streams abstractions. I'll explain that event loops are pluggable, which really makes asyncio a universal framework. We'll cover libuv - a high performance networking library that drives NodeJS. I'll highlight where it's similar to asyncio and how it's different. In the final part of the talk I'll explain how to make an asyncio compatible event loop on top of libuv. I'll showcase Cython, which is an amazing tool for tasks like this. Finally, I'll share some ideas on how we can further improve the performance of asyncio and networking in Python, and what are the challenges that we will face. **Objectives:** 1. Deeper understanding of async/await in Python and why it's important. 2. Deeper understanding of asyncio architecture and protocols. 3. How to improve asyncio performance by implementing custom event loops. 4. Show that it's easy to integrate existing complex & low level libraries with Cython. 5. Some perspective on how Python may evolve wrt networking.

Watch