List of videos

Nicola Iarocci - Python on Windows, Like a Boss

"Python on Windows, Like a Boss [EuroPython 2017 - Talk - 2017-07-10 - Arengo] [Rimini, Italy] Historically, Python coding on Windows has been kind of troublesome, but not anymore. Since a couple of years ago it is possible write awesome quality Python code with Visual Studio. This is good news for Python developers of all levels, because Visual Studio offers and incredible set of tools to enhance all the stages of product development: from managing virtual environments and handling package management, to writing and refactoring code, up to testing & debugging - all of that for free. In this talk I will demo how you can use Visual Studio to boost your Python development on Windows. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Frankie Dintino - 2 + 2 = 5: Monkey-patching CPython with ctypes to conform to Party doctrine

"2 + 2 = 5: Monkey-patching CPython with ctypes to conform to Party doctrine [EuroPython 2017 - Talk - 2017-07-10 - PyCharm Room] [Rimini, Italy] A few weeks into your tenure as a software engineer at the Ministry of Truth you are assigned your first real feature request: write a context manager that can make “2 + 2” equal 5 at runtime. Your solution should be written only in Python (for maximum portability). Absurd? Perhaps, but you know better than to ask questions. You are no thought-criminal. In this talk I walk through the steps I took to modify the value of two plus two in CPython at runtime—using only Python and the ctypes module. What began for me as a silly and frivolous side project became an education in how the python data model works behind the scenes and how CPython compiles, optimizes, and executes python code. The goal of this talk is to provide an introduction to CPython internals while walking through the steps needed to monkeypatch integer addition to make “2 + 2” equal 5. The audience should come away with a better understanding of how python objects and types are represented in memory, how references are counted, and how python scripts are transformed into abstract syntax trees, compiled into code objects, and then executed by the CPython virtual stack machine. And because I’ve limited myself to using ctypes, these topics can be explored without familiarity with C as a prerequisite. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Leblond Emmanuel - Bringing Python to Godot game engine

"Bringing Python to Godot game engine [EuroPython 2017 - Talk - 2017-07-10 - PyCharm Room] [Rimini, Italy] https://godotengine.org/ Godot is an advanced, feature-packed, multi-platform 2D and 3D open source game engine. The project has joined the Software Freedom Conservancy project and it growing community makes it hopes to become a real alternative to Unity&GameMaker. This talk cover a year long journey of the port of Python as a scripting language for the engine, starting from a rant against Godot's Python-like proprietary language. We will have a look at Godot's internal architecture as is it itself a real interpreter with it garbage collector, dynamic typing, introspection and even builtin custom scripting language. All of this having to work next to our Python interpreter and communicate back and forth with it. Finally we will see the different approaches that have been tried to bind Python to Godot each with there own pros&cons: Using Micropython interpreter instead of CPython Using PyBind11 to statically bind to Godot C++ API Using CFFI and rely on a 3rd party C API The audience should have some basic knowledge of C level computing (static vs dynamic language, compilation & linking). License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Alex Martelli - Testing in Layers

"Testing in Layers [EuroPython 2017 - Talk - 2017-07-10 - PythonAnywhere Room] [Rimini, Italy] The role of automated testing at the heart of modern development and operations is a given. However, the traditional approach to testing, separating too-developer-focused unit testing and (often only semi-automated) end-to-end integration testing—is not optimal in the modern, fluid world of DevOps. Nothing short of full automation is suitable for continuous integration; any “testing” requiring humans has a drastically different place in the continuum of development and deployment and should best be called by a completely different name like quality assurance. Within the realm of fully automated testing, the best approach, just as for other kinds of software, is modular and layered. This talk highlights the proper design of components for testing purposes and explains how such a design lets you compose multiple, layered testing suites that span the gamut from fast, light-weight unit tests meant to run all the time during development, to full-fledged end-to-end tests of whole systems—and, crucially, the often-neglected intermediate layers, bridging the thoroughness of end-to-end tests with unit tests’ speed and ability to pinpoint the location of any problems that emerge, enabling rapid fixes of most such problems. The talk also discusses the use of modular, layered testing components to validate software refactoring, and (when deployed in a load-testing arrangement) identify and validate software (and architectural) optimizations. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Adam Dangoor - But how do you know your mock is valid? Verified fakes of web services

"But how do you know your mock is valid? Verified fakes of web services [EuroPython 2017 - Talk - 2017-07-10 - Arengo] [Rimini, Italy] If your code calls a third party service then you may want to test that your code works but you don't want to call the service in your tests. It may be expensive, slow or impossible to call that service. For example, if you are making a Slack bot, you want to create tests which don't make calls across the network to Slack. One approach is to create a mock of that service. Our tests can now run quickly, cheaply and reliably. But if we copy the service incorrectly, or if the service changes, our tests will pass while our code does not work. Verified fakes solve this problem. You can write tests which confirm that your mock is an accurate representation of the service being mocked. Those tests can be a small subset of your test suite and they can be run periodically, to verify the validity of the many tests which use the mock. This talk will follow the example of VWS-Python, a verified fake for a proprietary web service. It will discuss the practicalities of creating such a fake and it will focus on the trade-offs, tooling and approaches involved. By the end of this talk the audience will understand how to tie together pytest, Travis CI, requests and Responses to create a verified fake. The talk is aimed at people who have an interest in writing correct software. It is assumed that the audience is familiar with basic testing techniques. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Jakub Wasielak - Python Packaging - current state and overview

"Python Packaging - current state and overview [EuroPython 2017 - Talk - 2017-07-10 - PythonAnywhere Room] [Rimini, Italy] Historically, Python packaging has been a source of significant pain for even the most devoted Python enthusiasts. I've found myself in the situation, where I did know the basic concepts behind the tools, but despite that only thing I could do was following tutorials. That was the time to change it and that's the reason this presentation was written. In this talk, I'll provide a quick overview of the current state of Python packaging tools. I'll mostly focus on setuptools, pip and wheels, putting an emphasis on their superiority over their precursors. I'll also list down the honorable mentions of tools worth knowing. Then I'll share examples of how you can use the features of the Setuptools library - those well known and those we use when pip-installing packages, but most of us can't name them. The point of this presentation is to explain how to use tools which are all there, just waiting to make developing, testing, and distributing our Python packages easier. Doesn't matter if you're a Python expert or a beginner - the knowledge covered by this presentation will be useful despite your level. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Alessandro Molina - Kajiki, the fast and validated template engine you were looking for

"Kajiki, the fast and validated template engine you were looking for [EuroPython 2017 - Talk - 2017-07-10 - PyCharm Room] [Rimini, Italy] Being dissatisfied with some of the constraints and complex usage of Genshi, the TurboGears2 team started working on an alternative that could solve Genshi speed issues, complex inheritance system and be backward compatible with genshi templates. This is a talk about what lead to the creation of the Kajiki template engine and what's particular about it. The talk will cover: - Comparison on the major template engines available in python to showcase what's special in Kajiki (validated, xml based) what was special in Genshi (also lazy evaluated) - What's a validated template engine and why it's good to have one. - How Kajiki works, showcase kajiki syntax, it's performances and how to use it in any python project. - Why Kajiki is fast, code generation applied and how to write a code generation template engine like Kajiki and Jinja2 (showcase a simple 50 lines of code template engine that uses code generation). License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Ki-Hwan Kim - GPU Acceleration of a Global Atmospheric Model using Python based Multi-platform

"GPU Acceleration of a Global Atmospheric Model using Python based Multi-platform [EuroPython 2017 - Talk - 2017-07-10 - PyCharm Room] [Rimini, Italy] A global atmospheric model play an important role in short-term weather forecasting and long-term climate prediction. The model requires enormous computing resources because the all atmospheric states must be calculated every time step (usually a tens of seconds to several minutes). However, since the most atmospheric models run only on CPU machines, they are not able to use the modern microprocessors with high performance and low power such as NVIDIA GPU and Intel MIC. It often costs a lot to convert codes from one machine to the other machine. Although it can be accelerated on GPU and MIC using OpenMP and OpenACC directives, it is not easy to achieve peak performance. I developed a new Python module named PyMIP (Python based Machine Independent Platform) to integrate C, Fortran, CUDA and OpenCL codes with a simple user interface. The main code includes configuration, flow control, IO and MPI parallel is written by Python. Only hotspots include huge number crunching code are written by compile language as C, Fortran, CUDA and OpenCL. The hotspot codes are compiled and imported using PyMIP in runtime. PyMIP enables that a user can switch machines with simple flag. I am developing a new global atmospheric model based on PyMIP to make it easy to utilize various modern microprocessors. In this presentation, I will introduce PyMIP and show the computational performance result in NVIDIA GPU of the dynamical core of the model developed based on PyMIP. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch
Will Foster - Skynet your Infrastructure with QUADS

"Skynet your Infrastructure with QUADS [EuroPython 2017 - Talk - 2017-07-11 - Anfiteatro 1] [Rimini, Italy] The very small 2-person DevOps team within Red Hat Performance/Scale Engineering has developed a set of Open Source Python-based systems and network automation provisioning tools designed to end-to-end automate the provisioning of large-scale systems and network switches using tools like Foreman, Ansible, and other Open Source bits. QUADS – or “quick and dirty scheduler” allows a normally overburdened DevOps warrior to fully automate large swaths of systems and network devices based on a schedule, even set systems provisioning to fire off in the future so they can focus on important things like Netflix and popcorn or not reading your emails while your datacenter burns in an inferno of rapid, automated skynet provisioning. QUADS will also auto-generate up-to-date infrastructure documentation, track scheduling, systems assignments and more. In this talk we’ll show you how we’re using QUADS (backed by Foreman) to empower rapid, meaningful performance and scale testing of Red Hat products and technologies. While QUADS is a new project and under constant development, the design approach to handling large-scale systems provisioning as well as the current codebase is consumable for others interested in improving the efficiency and level of automation within their infrastructure. License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/by-nc-sa/3.0/ Please see our speaker release agreement for details: https://ep2017.europython.eu/en/speaker-release-agreement/

Watch