EuroPython 2015
2015
List of videos

Guido van Rossum - Keynote: Python now and in the future
Guido van Rossum - Keynote: Python now and in the future [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] This is *your* keynote! I will have some prepared remarks on the state of the Python community and Python's future directions, but first and foremost this will be an interactive Q&A session.
Watch
James Robinson - Pycon - A teacher's perspective
James Robinson - Pycon - A teacher's perspective [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] A perspective of the impact of the PyconUK education track from the point of view of teachers and educators. Having attended the education track at Pycon UK 2014 as a teacher, my talk will share both my experiences and those of other teachers attending. The education track bought educators and developers together in a way that allowed the teachers to get support and advice whilst developers get to support teachers in developing exciting & real applications for teaching computing. The talk will focus on two aspects of the education track. The workshops delivered for teachers by python developers and how this helps build teachers confidence. But also the breakout sessions where educators and developers with common interests can work together to develop something. This might be a program / library or a teaching resource, some developers gave a hands on and bespoke training session to a group of teachers. If we are to get more young people programming or at least having a positive experience of programming then we need to minimize obstacles to that experience. By having educators and developers working together we can identify those obstacles and eliminate them! https://goo.gl/nt05hC
Watch
Andrey Syschikov - Practical usage of advanced Python constructs
Andrey Syschikov - Practical usage of advanced Python constructs [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Python is a language of choice for developers with wide range of experience, for some it is a first programming language, others switch to Python after years of experience. Python provides friendly syntax and smooth learning curve. This sometimes leads to developers lacking comprehension of some more advanced constructs. It happens that experienced developers jump into using Python and sometimes miss less known Python language constructs. On the other hands people who purposefully learned Python sometimes lack practical ideas for how to apply those constructs. This talk will be specifically focused on the practical usages of advanced Python constructs like iterators, generators, decorators and context managers. Goal of the talk is to share ideas about how those constructs can be used for practical purposes in real projects. Prior knowledge is not required, there will be a brief introduction to every construct being presented.
Watch
Fabio Pliger/Marc-André Lemburg - EuroPython 2016: Help us build the next edition!
Fabio Pliger/Marc-André Lemburg - EuroPython 2016: Help us build the next edition! [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] We need help with organizing and running EuroPython 2016. In this session, we will explain how the EuroPython workgroup model works and where you could help.
Watch
James Robinson - Raspberry Pi Weather Station
James Robinson - Raspberry Pi Weather Station [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] The Raspberry Pi weather station project introduces young people to using python programming to solve real and technical problems. The weather station consists of a range of sensors including: Anemometer Rain gauge Wind Vane Temperature Probe Barometer Air Quality Sensor Hygrometer 1000 kits are being given away to schools to take part in the project by following our schemes of work which will involve. Programming basic interrupt based sensors Advanced Sensors using ADC chips Create a pygame based UI Logging data to MySQL and Oracle Apex Presenting data to a web app Deploying the weather station Integrating Apex database We would love feedback on the project from Python Developers and support in updating some libraries from python 2 to 3.
Watch
Raúl Cumplido - Metaprogramación en Python
Raúl Cumplido - Metaprogramación en Python [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [En Español] Según wikipedia: "La metaprogramación consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código." En esta charla veremos diferentes mecanismos que Python proporciona como: - Decoradores - Metaclasses - Descriptors A través de varios ejemplos veremos como reutilizar código en varias funciones y clases, como modificar como nuestras clases se generan, como se genera una clase (que funciones se llaman cuando una clase se crea) o como se genera una instancia. Veremos también que fácilmente se nos puede ir de las manos y como utilizar con cuidado las herramientas que Python nos proporciona.
Watch
Jesús Espino - Todo es una trampa
Jesús Espino - Todo es una trampa [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [En Español] A día de hoy usamos un enorme conjunto de bibliotecas y frameworks, además los usamos con cierta libertad dentro de nuestro código, y pasado el tiempo nos damos cuenta de que esa biblioteca, no cubre mis necesidades, o tiene algún fallo, o no escala bien en proyectos más grandes... en resumen, hemos caído en una trampa. No se puede evitar caer en estas trampas, porque depende de nuestras necesidades y las bibliotecas que utilizamos, por lo tanto, solo podemos estar lo mejor preparados posibles para salir de ellas tan pronto como nos demos cuenta. Como solución a esto, plantearé varias vías (nada innovadoras, pero menos usadas de lo que deberían). Unit testing (TDD idealmente), arquitectura hexagonal, y algunas reglas básicas de clean code.
Watch
Ana Balica - Demystifying Mixins with Django
Ana Balica - Demystifying Mixins with Django [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Mixins are a great way to keep an application decoupled. This talk is about building mixins and dissecting what's behing the mixin "magic" and that, in fact, there is no magic involved at all. The main focus will be on Django framework while digging into mixins. When using Django class-based views, mixins feel very natural. **Goal**: by the end of this talk, every developer should be confident about creating his or her own custom mixins. **Prerequisites:** - basic understanding of OOP principles and their application in Python - Django web framework Generally mixins in Python are pretty straight-forward, easy to create and use. Nevertheless a lot of developers stay away from them. I think attendees of this talk will be interested to learn that mixins are not that complex and their benefit is tremendous.
Watch
Sam Thursfield - Introduction to Baserock
Sam Thursfield - Introduction to Baserock [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] The Baserock project is about creating system images from source code in a clean, reproducible way. All of the tooling is written in Python. In this talk I'll explain a bit about the core idea of Baserock: declarative system definitions (expressed in YAML) that can be built and deployed in various ways. Then I'll go into more detail about the tools available, and some of the cool things that they can do: distributed building, atomic system updates, creating custom container images, and more. Find out more about the Baserock project at http://www.baserock.org/
Watch
Alessandro Molina - Why storing files for the web is not as straightforward as you might think.
Alessandro Molina - Why storing files for the web is not as straightforward as you might think. [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] DEPOT ( http://depot.readthedocs.org/en/latest/ ) is a file storage framework born from the experience on a project that saved a lot of files on disk, until the day it went online and the customer system engineering team decided to switch to Heroku, which doesn't support storing files on disk. The talk will cover the facets of a feature "saving files" which has always been considered straightforward but that can become complex in the era of cloud deployment and when infrastructure migration happens. After exposing the major drawbacks and issues that big projects might face on short and long terms with file storage the talk will introduce DEPOT and how it tried to solve most of the issues while providing a super-easy-to-use interface for developers. We will see how to use DEPOT to provide attachments on SQLAlchemy or MongoDB and how to handle problems like migration to a different storage backend and long term evolution. Like SQLAlchemy makes possible to switch your storage on the fly without touching code, DEPOT aims at making so possible for files and even use multiple different storages together.
Watch
Bhaumik Shukla - Python for Cloud Services and Infrastructure Management
Bhaumik Shukla - Python for Cloud Services and Infrastructure Management [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] This talk is about how python is used in cloud computing as well as used while configuring cloud infrastructure. It also gives brief about tools and technologies/libraries can be used for number of tasks while cloud development/execution. Developers and all python lovers are the perfect audience for this talk. They will get the brief about reliable stack of python based tools used in cloud development and also will be sharing the experience with python. Summary: Python in cloud. Kind of services can be build with python. Python based tools used in deployment and configuration management for the cloud. For every python lovers - How to create a python friendly cloud infrastructure with great reliable combination of many stable tools. Stability. Experience sharing.
Watch
Stephan Jaensch - Building mobile APIs with services at Yelp
Stephan Jaensch - Building mobile APIs with services at Yelp [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] At Yelp, we ship code multiple times a day and have maintained this pace as our team has grown to 300+ and our codebase to several million lines of Python code. This talk explores the pain points we experienced along the ways, how our service-oriented architecture alleviates them, and the infrastructure we built to develop, test, and deploy in this highly-distributed environment. As a case study, we’ll be looking at the backend powering the new Yelp Business Owner Android and iOS apps. At the start, most of the development at Yelp occurred in a single, monolithic web application, creatively named “yelp-main” (naming is hard!). As the company grew, our developers were spending increasing amounts of time trying to ship code. After recognizing this pain point, we started experimenting with a service oriented architecture to scale the development process, and so far it’s been a resounding success. Over the course of the last three years, we’ve gone from writing our first service to having over seventy production services. Along the way, we’ve dabbled with Docker containers, Pyramid, SQLAlchemy, uWSGI, gevent, and virtualenv in an effort to build the next-generation service platform for our engineers.
Watch
Jan Pazdziora - External authentication for Django projects
Jan Pazdziora - External authentication for Django projects [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] When applications get deployed in enterprise environment or in large organizations, they need to support user accounts and groups that are managed externally, in existing directory services like FreeIPA or Active Directory, or federated via protocols like SAML. While it is possible to add support for these individual setups and protocols directly to application code or to Web frameworks or libraries, often it is better to delegate the authentication and identity operations to a frontend server and just assume that the application has to be able to consume results of the external authentication and identity lookups. In this talk, we will look at Django Web framework and how with few small changes to the framework and to the application we can extend the functionality of existing RemoteUserMiddleware and RemoteUserBackend to consume users coming from enterprise identity management systems. We will focus on using proven OS-level components such as SSSD for Web applications, but will also show setup using federation.
Watch
Alessio Siniscalchi - Citizen Science: Tracking Aliens with Python!
Alessio Siniscalchi - Citizen Science: Tracking Aliens with Python! [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] The talk discusses the challenges of implementing a Citizen Science Paradigm in a Python-centric platform, and the solutions devised for the System for observation and monitoring of Marine Alien Species, currently used by the italian Institute for Environmental Protection and Research (ISPRA). "Alien" Species means species introduced into a natural environment where they are not normally found. Topics includes strategies for crowd-friendly forms, work-flow definition for collected data, choice of the best technologies for its components: app for android devices, web application for citizens and experts, webGIS for data browsing and web services for data exporting.
Watch
oier etxaniz - Karakate magaletik EuroPythoneko tontorrera
oier etxaniz - Karakate magaletik EuroPythoneko tontorrera [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [Euskara] Orain dela urte batzuk asi genuen bidea azalduko dut, Python San Sebastian elkartea nola sotu genuen eta hortik pixkanaka pixkanaka nola sortzen joan den EuroPython sortzeko grina. Gendeari nahi izan eskero eta lan egin eskero EuroPython bezelako kongresu bat antolatzea posible dela erakustea du helburu hitzaldi honek.
Watch
Getting started with Bokeh / Let's build an interactive data visualization for the web..in Python!
Sarah Bird - Getting started with Bokeh / Let's build an interactive data visualization for the web..in Python! [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Slides: [birdsarah.github.io/europython-2015-bokeh][1] As a web developer, I find myself being asked to make increasing numbers of data visualizations, interactive infographics, and more. d3.js is great, as are many other javascript toolkits that are out there. But if I can write more Python and less JavaScript... well, that makes me happy! Bokeh is a new Python library for interactive visualization. Its origins are in the data science community, but it has a lot to offer web developers. In this mini-tutorial, I'll run through how to build a data visualization in Bokeh and how to hook it into your web application. This will be a real-world example, that was previously built in d3.js. Along the way, I'll provide tips and tricks that I've discovered in my experience including how Bokeh works wonderfully with the iPython notebook which I use to prototype my visualizations, and many data science people use as their native way to explore data. For those of you who already know a little Bokeh, I'll be covering the new "actions framework" that lets you write JS callbacks in your python code so you can do lots of interactions all on the client side. [1]: http://birdsarah.github.io/europython-2015-bokeh/
Watch
Hitul Mistry - Python Multithreading and Multiprocessing: Concurrency and Parallelism
Hitul Mistry - Python Multithreading and Multiprocessing: Concurrency and Parallelism [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] In this talk, people will get introduced to python threading and multiprocessing packages. This talk will cover multiprocessing/threaded development best practices, problems occurs in development, things to know before multiprocessing/multi-threading. After this talk attendees will be able to develop multiprocessing/threaded applications. This talk will cover threads, global interpreter lock, thread pool, processes, process pool, synchronization locks - Lock & RLock , semaphores, events, condition, timer, pipes, queue, shared memory. This talk will also cover best practices and problems in multiprocessing and threaded application development.
Watch
Tibor Arpas - Mashing up py.test, coverage.py and ast.py to take TDD to a new level
Tibor Arpas - Mashing up py.test, coverage.py and ast.py to take TDD to a new level [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Users and developers especially, hate waiting. Computing has adapted and we almost never wait for the computer for more then 10 seconds. One big exception is runnig a test suite which takes MINUTES on many projects. That is incredibly distracting, frustrating and dragging the whole concept of automated tests down. I present a technique and a tool (py.test plugin called "testmon") which automatically selects only tests affected by recent changes. Does it sound too good to be true? Python developers rightfully have a suspecting attitude towards any tool which tries to be too clever about their source code. Code completion and symbol searching doesn't need to be 100% reliable but messing with the test suite execution? I show that we can cut test suite execution time significantly but maintain it's reliability.
Watch
João Santos - Using Git Hooks to Help Your Engineering Teams Work Autonomously
João Santos - Using Git Hooks to Help Your Engineering Teams Work Autonomously [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] In this talk, Software Engineer Joao Santos will describe how the engineering team at Zalando has been migrating to local Git hooks to ensure that engineers can work autonomously and flexibly. Zalando--- Europe’s leading online fashion platform for men, women and children-- began shifting from SVN to Git in late 2013. Santos and his colleagues used Python to create a Git update hook that enabled the team to reject changes to a branch while still allowing changes to other branches. He’ll explain why his team chose Python for this job instead of a bash script, point out mistakes made during the process (and solutions his team used to fix them), and the benefits generated by this migration. He’ll also talk about turnstile: a set of open-source, configurable, optional local Git hooks, created by the Zalando team, that enables engineers to abide by internal rules for committing code while following their own coding style and workflow preferences.
Watch
Timo Stollenwerk - The Butler and the Snake - Continuous Integration for Python
Timo Stollenwerk - The Butler and the Snake - Continuous Integration for Python [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Continuous Integration is a software development practice where members of a team integrate their work frequently, leading to multiple integrations per day. Each integration is verified by an automated process (including tests) to detect integration errors as quickly as possible. This talk will introduce the basic principles for building an effective Continuous Integration system for Python-based projects. It will present the lessons learned from building a Jenkins-based CI system for an Open Source project with a distributed team of more than 340 core developers that ranks among the top 2% of all open source projects worldwide (Plone).
Watch
Sever Banesiu - Distributed Workflows with Flowy
Sever Banesiu - Distributed Workflows with Flowy [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] This presentation introduces Flowy, a library for building and running distributed, asynchronous workflows built on top of different backends (such as Amazon’s SWF). Flowy deals away with the spaghetti code that often crops up from orchestrating complex workflows. It is ideal for applications that do multi-phased batch processing, media encoding, long-running tasks, and/or background processing. We'll start by discussing Flowy's unique execution model and see how different execution topologies can be implemented on top of it. During the talk we'll run and visualize workflows using a local backend. We'll then take a look at what it takes to scale beyond a single machine by using an external service like SWF.
Watch
Anders Lehmann - Online Education: challenges and opportunities for Staff and Students
Anders Lehmann - Online Education: challenges and opportunities for Staff and Students [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] From september 2015 Aarhus School of Engineering will offer the education Bachelor of Electronic Engineering, as a combined online and on campus education. In the talk I will describe the technical and pedagogical setup, we are working at to meet the challenges of having both on-site and remote students. I will also touch on how IPython Notebook, will be part of the technical setup, and how it can be incorporated into the teaching.
Watch
Alessandro Amici - Solving the web most popular code shortening competition in Python.
Alessandro Amici - Solving the web most popular code shortening competition in Python. [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] “Code shortening” is the “sport” where participants strive to achieve the shortest possible source code that solves a programming problem by exploiting all the tricks and quirks of the language. The [SIZECON on SPOJ][1] is one of the oldest and most popular code shortening problems on the web with a bizarre twist, only character above ASCII value 32 are counted for the penalty. During the talk we will take a journey into some frightening depths of the Python language in order to write shorter and shorter solutions to SIZECON until, exploiting a number of truly mind-blowing tricks, we will reach the current record solution of 28 characters (above ASCII 32!). I promise I’ll show you the most obfuscated, contrived and sick python code you have ever seen and (hopefully!) will ever see. I invite participants to give [SIZECON][1] a try and check their score against the [Python2][2] and [Python3][3] SPOJ rankings. *Slides:* [http://slides.com/alessandroamici/solving-the-web-most- popular-shortening-contest-with-python][4] [1]: http://www.spoj.com/problems/SIZECON/ [2]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%202.7 [3]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%203.2.3 [4]: http://slides.com/alessandroamici/solving-the-web-most-popular-shortening-contest-with-python
Watch
Kyle Knapp - It Works on My Machine: Writing Python Code for Any Environment
Kyle Knapp - It Works on My Machine: Writing Python Code for Any Environment [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Have you ever developed a nice, well-working python program on one environment, only to have it blow up with exceptions and tracebacks when you run it on a different environment? Have no fear! This talk will show you how to write and maintain python code that is compatible across environments that may differ by python versions and/or operating systems. Techniques and tips will be drawn from lessons and experiences gained from making the AWS CLI, a python-based command line tool to manage AWS resources, compatible across a wide range of environments. In a case-study-like format, real-life compatibility issues encountered while developing the AWS CLI will be presented along with how we resolved each of them. These real-life examples will encompass, but will not be limited to, the following topics: • How to use functions and classes that may differ across python versions and/or operating systems • How to handle version-specific bugs • How to handle strings, bytes, and Unicode across python versions • How to handle differing locale settings • How to handle file operations across operating systems • How and when to vendor dependencies • How to write tests that are compatible across python versions and operating systems • How to create a testing environment that monitors compatibility of code across various environments Ultimately, the goal of these examples is introduce to you some effective, real-world programming practices to overcome your current or next compatibility issue.
Watch
Alejandro Castillo - Deja de pegarte con tus servicios; import lymph
Alejandro Castillo - Deja de pegarte con tus servicios; import lymph [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [En Español] ¿Y si pudieras centrarte en la funcionalidad de tus servicios en lugar de programar la integración entre ellos? lymph es un framework con personalidad propia para escribir servicios en Python que te permite hacer justo eso. Incluye descubrimiento de servicios extensible, comunicación vía petición-respuesta, comunicación vía publicación-subscripción extensible y gestión de procesos. A medida que crecen nuestros equipos de desarrollo, nos alejamos cada vez más de una arquitectura monolítica. Queremos empezar a escribir servicios sin tener que preocuparnos de los requisitos de infraestructura. Queremos desarrollar de forma rápida, centrándonos en nuestro trabajo. En esta charla os enseñaremos lo fácil que es desarrollar y ejecutar servicios con lymph. Echad un ojo a http://lymph.io. Esperamos vuestros pull requests.
Watch
Mikel Larreategi - Python gure etxean: (r)eboluzioa atzo, gaur eta bihar
Mikel Larreategi - Python gure etxean: (r)eboluzioa atzo, gaur eta bihar [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [Euskara] 2000 urtean CodeSyntax sortu zenetik Python erabili dugu gure lan ia guztiak egiteko. Lan horiek egitean izandako (r)eboluzioa azalduko dugu hitzaldi honetan: python script arruntetatik, Zope aplikazioen zerbitzarian nabigatzaile baten programatzetik, fitxategi sisteman programatzera pasatu gara, Turbogears ere ikutu dugu eta orain Plone, Django eta Pyramid darabilgu. Since the beginning of our company in year 2000 we have been using Python to do our work. We will explain the (r)evolution we faced working with python during this 15 years: small python scripts, browser-based-development using Zope Application Server, we touched Turbogears and now Plone, Django and Pyramid applications. [Aurkezpena Slidesharen dago][1]. [1]: http://www.slideshare.net/erral/python-gure-etxean-reboluzioa-atzo-gaur-eta-bihar
Watch
Francisco Fernández Castaño - Knowing your garbage collector
Francisco Fernández Castaño - Knowing your garbage collector [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] As Python programmers we're used to program without taking care about allocating memory for our objects and later on freeing them, Python garbage collector takes care of this task automatically for us. Garbage collection is one of the most challenging topics in computer science, there are a lot of research around the topic and different ways to tackle the problem. Knowing how our language does this process give us a better understanding of underlying interpreter and allow us to know why problems like cycles can happen in CPython interpreters. So, this talk aims to be and introduction to the topic and a walkaround through different approaches followed in CPython and PyPy: * Generational Reference counting with cycles detector on CPython. * Incremental version of the MiniMark GC on PyPy.
Watch
Yamila Moreno - Lecciones aprendidas en un proyecto grande de Django
Yamila Moreno - Lecciones aprendidas en un proyecto grande de Django [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [En Español] Un proyecto hecho en Django durante dos años da para muchas anécdotas y mucho aprendizaje. Esta charla es un repaso por las decisiones sobre lo humano y lo técnico que fuimos tomando durante el desarrollo del proyecto. Señalaré las buenas decisiones que tomamos en el equipo, y también las que no nos salieron bien y nos hicieron aprender por las malas. Tanto las buenas como las malas decisiones nos enseñaron muchísimo y aquí las compilo junto con unos cuantos tips que pueden divertir y, ojalá, inspirar a la audiencia, especialmente a aquellas personas que se enfrentan por primera vez a un proyecto grande.
Watch
Waits - Incorporando administrado repositorios de información para generar documentación on-demand
Todd Waits - Incorporando administrado repositorios de información para generar documentación on-demand [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [En Español] Generar documentación de forma dinámica es relevante para los ingenieros de software porque ellos interactúan con la data en el mismo donde está localizada. Es también relevante para los clientes porque la documentación se puede presentar en un formato organizado y claro. En esta presentación, hablaremos de cómo usar un proceso unificado para generar dinámicamente la documentación de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. Idealmente, nosotros como ingenieros deberíamos interactuar solamente con una Fuente de información que nos dara como resultado una documentación vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualización dando una incorrecta impresión del estado vigente de un Sistema. Usando un proceso unificado para generar documentación de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentación se enfocara en cómo lograr este Sistema. Idealmente, nosotros como ingenieros deberíamos interactuar solamente con una Fuente de información que nos dara como resultado una documentación vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualización dando una incorrecta impresión del estado vigente de un Sistema. Usando un proceso unificado para generar documentación de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentación se enfocara en cómo lograr este Sistema.
Watch
Lynn Root - Diversity: We are not done yet
Lynn Root - Diversity: We are not done yet [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] The past few years, we have made large strides to welcome more diverse people into our community. You see better gender ratios in attendance numbers at Python conferences, the billed speakers, the amount of women-centric programs. We can see the benefits of outreach. But we're not done yet. While a lot of the Python community embraces the importance of being diverse, we haven't taken that mindset to our workplace. From recruiting, we still hear, "sure, we wanted to recruit women, but we couldn't find them" and "we only focus on quality here, not gender!" Within company cultures, we hear "gender equality isn't a problem here!" or "women don't ask for a higher salary" and to "just lean in!" This talk will recount the diversity efforts of the past few years and quantify the effects on the Python community. But this talk will also address the not-so-low-hanging fruit; the deeper-rooted problems that still plague the community from inside where we work. And it will talk the audience through actionable items to improve one's work place that welcomes more diversity.
Watch
Ben Nuttall - Physical computing with Python and Raspberry Pi
Ben Nuttall - Physical computing with Python and Raspberry Pi [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] With the Raspberry Pi, it's easy to do physical computing directly from Python code - rather than usual embedded hardware engineering in C or Assembler. In this talk I'll show examples of physical computing projects that use Python on Raspberry Pi and demonstrate the sort of code used in such projects. Physical computing with Python is very popular in education - as it's so engaging, and more interesting than printing to the screen. This will be an informative session with learning possibilities to give those new to physical computing a change to get started.
Watch
Roberto Polli - Scaling MySQL with Python
Roberto Polli - Scaling MySQL with Python [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Python is the language of choice for the orchestration part of MySQL 5.6. After a brief introduction of MySQL replication architecture, the talk [Slides here][1] presents the python utilities released by MySQL: - a set of drivers in pure-python - mysql-utilites for replication, management and failover - fabric, a tool for scaling, sharding and provisioning new servers You will see how to: - create resilient configurations in minutes - use mysql-fabric to create high available infrastructures As a plus, we'll show how we: - implemented a fabric provider for provisioning new databases via docker # Prerequisites Basic database knowledge, transactions, replication. MySQL specific concepts (eg: binary logs) are briefly introduced in the talk. [1]: http://www.slideshare.net/ioggstream/scaling-mysql-with-python
Watch
Michael Foord - To the Clouds: Why you should deploy to the cloud even if you don't want to
Michael Foord - To the Clouds: Why you should deploy to the cloud even if you don't want to [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Do you deploy your Python services to Amazon EC2, or to Openstack, or even to HP cloud, joyent or Azure? Do you want to - without being tied into any one of them? What about local full stack deployments with lxc or kvm containers? Even if you're convinced you don't need "the cloud" because you manage your own servers, amazing technologies like Private clouds and MaaS, for dynamic server management on bare metal, may change your mind. Fed up with the cloud hype? Let us rehabilitate the buzzword! (A bit anyway.) A fully automated cloud deployment system is essential for rapid scaling, but it's also invaluable for full stack testing on continuous integration systems. Even better, your service deployment and infrastructure can be managed with Python code? (Devops distilled) Treat your servers as cattle not as pets, for service oriented repeatable deployments on your choice of back-end. Learn how service orchestration is a powerful new approach to deployment management, and do it with Python! If any of this sounds interesting then Juju maybe for you! In this talk we'll see a demo deployment for a Django application and related infrastructure. We'll be looking at the key benefits of cloud deployments and how service orchestration is different from the "machine provisioning" approach of most existing cloud deployment solutions.
Watch
Dougal Matthews - MkDocs: Documenting projects with Markdown
Dougal Matthews - MkDocs: Documenting projects with Markdown [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] MkDocs is a Python library for creating documentation with Markdown. The primary goal of the project is to lower the barrier for documentation writers and to help enable high quality prose based documentation. The primary maintainer of MkDocs will cover the following topics: - An introduction to MkDocs and the project goals. - How and why did the project start? - Who uses MkDocs today? - Discuss what we need to do to create great documentation and how MkDocs can help. - A tour of the key features currently in MkDocs - Adding MkDocs to your project. - Using themes in the documentation and making customisations - Publishing your documentation with ReadTheDocs and GitHub pages. - A look at the up and coming features in MkDocs and how you can help make these happen. - A comparison with Sphinx and why you should consider MkDocs.
Watch
Teodor Dima - Use Python to process 12mil events per minute and still keep it simple (Talk)
Teodor Dima - Use Python to process 12mil events per minute and still keep it simple (Talk) [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Creating a large-scale event processing system can be a daunting task. Especially if you want it “stupid simple” and wrapped around each client’s needs. We built a straightforward solution for this using Python 3 and other open-source tools. Main issues to solve for a system that needs to be both performant and scalable: - handling a throughput of 1 million events per minute in a 4 cores AWS instance; - following the principle of least astonishment; - data aggregation and how Python's standard libraries and data structures can help; - failsafe and profiling mechanisms that can be applied to any Linux service in production; - addressing unexpected behaviors of Python’s Standard Library; like reading from a file while it is written; - tackling a sudden spectacular cloud instance failure; The alternative to this system would be to adopt existing technology stacks that might be too general, add more complexity, bloat, costs and which need extensive work to solve your specific problem. Moreover, our approach resulted in over 85% drop on hardware utilisation. [Context: Production Software – II (where good coding reduces the client’s bill)][1] [1]: https://eastvisionsystems.com/production-software-part-ii-good-coding-reduces-clients-bill/
Watch
Adam Forsyth - Python Not Recommended
Adam Forsyth - Python Not Recommended [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Braintree is a Ruby shop. By default, we use Ruby and Rails for projects. We also use Ruby-based projects for much of our tooling, including puppet, capistrano, and rake. However, we strongly believe in using the right tool for the job. What that means has evolved over ti me, and I'll discuss what solutions we chose in the past as well as our current choices. So what's it like doing Python at a Ruby shop? You get lots of jokes about language features Ruby has but Python lacks and lots of disbelief that Python will survive the 2/3 split. People also tend to apply the best practices and conventions of Ruby to Python code as if t hey were the same. Python's major inroad at Braintree has been, surprisingly enough, as a platform for high-concurrency situations. This is a direct result of the power of Tornado as a platform for asynchronous I/O. It also helps that many Python is very approachable and many developers have at least some experience with it. Braintree has three pieces of our infrastructure using Python and Tornado -- an incoming request proxy; an outgoing request proxy; and a webook delivery service. They've served us well for 3+ years but all suffer from a number of problems. The outdated concurrency feature s of CPython / Python 2 as well as our lack of experience with and commitment to Tornado have always been an issue. As the meat of the talk, I'll speak in depth about the other issues we've encountered with each of the three applications and our short- and long- term solu tions to the problems. The state as of the end of 2014 appeared dire for Python at Braintree. All the old Python code in our stack is on the way out, and Python has been specifically recommended agaist for new projects. Our Python client library is used by some of our largest merchants, and is ready for the future by supporting Python 2.6+ and Python 3.3+ in a single codebase. We also have a vibrant Python community at Venmo, our sister company. Both Braintree and Venmo support Python by attending, hosting, sponsoring, and speaking at meetups, conferences, and other events in Chicago, New York, and elsewhere. At Braintree, our Data Science team uses Python almost exclusively and they're becoming a bigger part of our business every day. We also use custom tooling written in Python to manage our infrastructure.
Watch
Using Scikit-Learn's interface for turning Spaghetti Data Science into Maintainable Software
Holger Peters - Using Scikit-Learn's interface for turning Spaghetti Data Science into Maintainable Software [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Finding a good structure for number-crunching code can be a problem, this especially applies to routines preceding the core algorithms: transformations such as data processing and cleanup, as well as feature construction. With such code, the programmer faces the problem, that their code easily turns into a sequence of highly interdependent operations, which are hard to separate. It can be challenging to test, maintain and reuse such "Data Science Spaghetti code". Scikit-Learn offers a simple yet powerful interface for data science algorithms: the estimator and composite classes (called meta- estimators). By example, I show how clever usage of meta-estimators can encapsulate elaborate machine learning models into a maintainable tree of objects that is both handy to use and simple to test. Looking at examples, I will show how this approach simplifies model development, testing and validation and how this brings together best practices from software engineering as well as data science. _Knowledge of Scikit-Learn is handy but not necessary to follow this talk._
Watch
Francesc Alted - New Trends In Storing Large Data Silos With Python
Francesc Alted - New Trends In Storing Large Data Silos With Python [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] My talk is meant to provide an overview of our current set of tools for storing data and how we arrived to these. Then, in the light of the current bottlenecks, and how hardware and software are evolving, provide a brief overview of the emerging technologies that will be important for handling Big Data within Python. Although I expect my talk to be a bit prospective, I won't certainly be trying to predict the future, but rather showing a glimpse on what I expect we would be doing in the next couple of years for properly leveraging modern architectures (bar unexpected revolutions ;). As an example of library adapting to recent trends in hardware, I will be showing bcolz (https://github.com/Blosc/bcolz), which implements a couple of data containers (and specially a chunked, columnar 'ctable') meant for storing large datasets efficiently.
Watch
Anton Caceres - Better asynchronous code with Tornado and Python 3
Anton Caceres - Better asynchronous code with Tornado and Python 3 [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] The asyncio module introduced in Python 3.4 is a game-changer for I/O management and event-driven network programming in Python. Aiming to be a lower-level implementation of an asynchronous event loop, it intends that higher level frameworks like Tornado, Twisted or Gevent will build on top of it, taking advantage of the shared interface for writing concurrent event-driven code across different Python frameworks. This talk connects theory with practice, presenting how Tornado can run in the asyncio event loop and take advantage of the subgenerator delegation syntax (yield from) to provide a high degree of concurrency while keeping the simplicity of sequential code. It explains the concept of coroutines, futures and ioloop, exposing Python 3 code for sample web tasks. The talk completes with a basic demo of running this code on Tornado, comparing its syntax and performance with popular asynchronous frameworks from other languages.
Watch
Christian Trebing - Building a multi-purpose platform for bulk data using sqlalchemy
Christian Trebing - Building a multi-purpose platform for bulk data using sqlalchemy [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] At Blue Yonder, we've built a platform that can accept and process bulk amounts of data for multiple business domains (e.g. handling retail store location and sales data) using SQLAlchemy as a database abstraction layer. We wanted to use as much of SQLAlchemy as possible, but we quickly found that the ORM (Object Relational Mapper) is not suitable for handling large amounts of data at once. At the same time, we did not want each team of developers working on individual business domains to have to handcraft their own SQL statements. To solve this problem, we built an application configuration that closely resembles an SQLAlchemy model, but also contains application-specific logic settings. In this talk I will demonstrate: - an application architecture for multiple business domains - the structure of the domain configuration utilized in the generation of the SQLAlchemy model, SQLAlchemy core statements, and other application functionality - how the domain configuration is used throughout the application (consuming and parsing incoming data, storing it in a database and ensuring data quality)
Watch
Xavier Fernandez - PIP Internals
Xavier Fernandez - PIP Internals [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] pip is certainly one of the most used package in the Python ecosystem, but what actually happens when you pip install foo ? The talk will mainly focus on two aspects: - how does it perform an installation and resolve dependencies ? - how does pip find installation candidates and select the 'best' ?
Watch
Núria Pujol/Ignasi Fosch - What dojos are and how we run them at pyBCN
Núria Pujol/Ignasi Fosch - What dojos are and how we run them at pyBCN [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Coding dojos are a very good way to share coding knowledge among members in a community, and, at the same time, introduce people into the language and community. Sometimes, though, the typical approach to set coding dojos may prevent expert coders to join the session. This is the story of the pyBCN's dojos, so far.
Watch
Dmitry Trofimov - Can Rust make Python shine?
Dmitry Trofimov - Can Rust make Python shine? [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Rust is a new programming language from Mozilla. It is fast, safe and beautiful. It is also a very good option when needing performance. In this talk we're going to look at Rust and see what it offers and how we can leverage it as Python developers. And we'll do it with a case study: a statistical profiler for Python.
Watch
Stephan Erb - Release Management with Devpi
Stephan Erb - Release Management with Devpi [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Devpi is an open source PyPi-compatible package server. Its versatile features make it the Swiss Army knife of Python package and release management, enabling anyone to shape a custom release workflow. In this talk, I will detail how we use our company-wide Devpi installation in order to share a large set of packages across teams, deploy binary packages to our application servers, and mix and mash open source packages with our own. With Devpi being a critical part of our release and deployment infrastructure, I will also cover our high- availability setup and how we perform major version updates with minimal downtime. While this talk is not meant to be an exhaustive introduction of all available Devpi features, it can offer insights on how Devpi can be used at a larger scale.
Watch
Anders Lehmann - How to GIS with Python
Anders Lehmann - How to GIS with Python [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] In this talk I will present some tools for working with Geographic Information Systems in Python. Geographic information Systems are widely used for managing geographic (map) data. As an example I will present how to use Open Street Map data (http://openstreetmap.org/), in routing, traffic planning and estimation of pollution emission. For the purpose of the project EcoSense (http://ecosense.au.dk), GPS data from users smartphones are mapped to OSM roads. The map matching algorithm is written in Python and uses data from the database PostgreSQL, with the PostGIS extension. One of the goals of the EcoSense project is to devise methods to improve the estimation of air quality in urban environments.
Watch
Nazzaro - Image recognition and camera positioning with OpenCV. A tourist guide application.
Francesco Nazzaro - Image recognition and camera positioning with OpenCV. A tourist guide application. [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] OpenCV Python bindings provide several ready to use tools for camera calibration, image recognition and camera position estimation. This talk will show how to recognize a picture, from a library of known paintings, and compute the camera position with respect to the recognized picture using OpenCV and numpy. This is applied to a tourist guide application for Google Glass through the recognition of the paintings exposed in the museum.
Watch
Thomas Ballinger - Terminal Whispering
Thomas Ballinger - Terminal Whispering [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] The terminal emulators we run so many of our programming tools in are more powerful than we remember to give them credit for, and the key to that power is understanding the interface. This talk will cover terminal colors and styles, writing to arbitrary portions of the screen, handling signals from the terminal, determining the terminal's dimensions and scrollback buffer behavior. Terminal programming can get hairy; along the way we'll deal with encoding issues, consider cross platform concerns, acknowledge 4 decades' worth of standards for terminal communication, and consider that humans at interactive terminals may not be the only users of our interfaces. By gaining an understanding of these issues, we'll be able choose from the abstractions over them offered by Python libraries Urwid, Blessings, and Python Prompt Toolkit. This talk requires minimal Python knowledge, but does assume familiarity with command line tools in a unix environment. An abbreviated version of this talk was presented at PyCon 2015 in Montréal: https://www.youtube.com/watch?v=WAitSilLDUA With the additional time I'd hope to present more code examples, a more in- depth tour of existing libraries and more practical advice about writing programs that use the terminal, and an additional example of a difficult terminal details: dealing with reflowing of text in modern terminal emulators like GNOME Terminal and iTerm.
Watch
Yamila Moreno - Learnt lessons in a big Django Project
Yamila Moreno - Learnt lessons in a big Django Project [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] A Django project, developed for 2 years is a valuable source of anecdotes and wisdom. This talk is a review on the decissions, about human and tech, that my team took during the project. I'll point out the good decissions as well as the bad ones, those which made us learn "the hard way". Both good and bad decissions taught us a lot, and here I compile them, together with a handful of tips which can amuse and, hopefully, inspire the audience, specially those who are facing for the first time a big project.
Watch
Brianna Laugher - The realities of open source testing: lessons learned from “Adopt pytest month”
Brianna Laugher - The realities of open source testing: lessons learned from “Adopt pytest month” [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Ever feel like your open source project could be better tested? Lack of tests holding you back from contributors but you don’t know where to start? You’re not alone. [“Adopt pytest month”][1] was held in April 2015. [Pytest][2] volunteers were paired with open source software projects, to find a path to better testing with pytest. Projects varied from libraries/command line utilities, to a browser, to a complex Django app. In some cases converting existing tests was necessary, in others writing the first tests in existence for non-trivial amounts of code. Two projects were open sourced specifically to take part in “adopt pytest month”. What began as an experiment in increasing software audience proved to be an interesting exercise in strengthening community and most valuable of all, provided a newcomer’s perspective to veteran contributors. This talk will discuss what worked well with “adopt pytest month”, what didn’t, what we learned about pytest and what you could take away for your open source project, be it an improved testing environment or an improved contributor community. A basic knowledge of testing and pytest will be useful. [1]: http://pytest.org/latest/adopt.html [2]: http://pytest.org/latest/
Watch
Andreas Kaiser - Standing on the Shoulders of Giants: The Kotti Web Application Framework
Andreas Kaiser - Standing on the Shoulders of Giants: The Kotti Web Application Framework [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Kotti is a high-level, Pythonic web application framework based on Pyramid, SQLAlchemy and Bootstrap 3. It includes an extensible Content Management System called the Kotti CMS. Kotti is particularly well suited for building custom applications with object level security. It comes with complete user and group management and supports the concepts of global and local roles providing management views for each of those. The talk will give an overview on Kotti, its philosophy, history and future. Target audience are people who want to learn what it is and can be used for. Because Kotti is just a rather small layer on top of its foundations, the talk might also give some interesting insights on how to build a solid (web) framework that suits your personal preferences. References: - http://kotti.pylonsproject.org/ - http://kotti.readthedocs.org/en/latest/
Watch
Michael Kuehne - TDD for APIs
Michael Kuehne - TDD for APIs [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] It is always tough to test a complex API comprehensively. The additional level of complexity brings us to the question "How can we validate that our API is working as intended?" In this talk I will explain how to use test driven development for APIs to solve this problem and even further how TDD can drive an API Design towards a more usable design. I will outline my practical approach with an implementation example based on django. And finally I will give you a brief summary of my lessons learned using this approach in customer projects.
Watch
Jose Ortega - Python Security & Cryptography
Jose Ortega - Python Security & Cryptography [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] The talk would aim to introduce cryptography and security from the developer point of view, showing ways to encrypt information with Python scripts and more sensitive information in web applications using django. I will introduce to security in python ,showing some libraries that allow encryption and decryption like PyCrypto or M2Crypto,comparing theses libraries with the cryptography module.At the same time,I will show the main ciphers and hashing algorithms used in these libraries like AES,DES,RSA and some examples illustrating each case.I wil show other techniques like steganography for hiding information in files(images,documents,programs) with some libraries like Stepic or ezPyCrypto. Finally,I will comment OWASP Python Security Project where we can find some useful practices and secure coding guidelines for detecting potential security vulnerabilities in our applications like SQL injection or Cross-site scripting. **Slides** [https://speakerdeck.com/jmortega/python-cryptography-and-security][1] [1]: https://speakerdeck.com/jmortega/python-cryptography-and-security
Watch
Haikel Guemar - The Lightweight Cloud Servers War Begins
Haikel Guemar - The Lightweight Cloud Servers War Begins [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Docker has introduced a new model of deployment solving the infamous "Deployment Matrix from Hell" by using containers. But this also brought the spotlight back on the Operating System side, and following the trails of CoreOS and Atomic Host, a new generation of Cloud Servers are born by using containers instead of traditional RPM/DPKG/tarball/whaterver packages model to deploy services. CoreOS/Atomic Host/Snappy Ubuntu and now VMWare Photon also provides transactional image-based OS focusing on security and built-in cluster management. During this talk, we'll present these next-gen OS, and their components and how they fit in.
Watch
Petr Viktorin - Import Deep Dive
Petr Viktorin - Import Deep Dive [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Whatever you need to do with Python, you can probably import a library for it. But what exactly happens when you use that import statement? How does a source file that you've installed or written become a Python module object, providing functions or classes for you to play with? While the import mechanism is relatively well-documented in the reference and dozens of PEPs, sometimes even Python veterans are caught by surprise. And some details are little-known: did you know you can import from zip archives? Write CPython modules in C, or even a dialect of Lisp? Or import from URLs (which might not be a good idea)? This talk explains exactly what can happen when you use the import statement – from the mundane machinery of searching PYTHONPATH through subtle details of packages and import loops, to deep internals of custom importers and C extension loading.
Watch
Rafał Nowicki - BDD: You’re doing it wrong!
Rafał Nowicki - BDD: You’re doing it wrong! [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Talk about mistakes we made and best practises we have elaborated while implementation Behave Driven Development into one of the projects. Great idea to coverage whole application with functional tests fall down in development chaos and reborn on new better foundations. Project referred is web-based big data management which main features are transcoding and file sharing. Thanks to Django and many Python frameworks we have web interface for it and we are able to run automation tests with Selenium.
Watch
Roy Simkes - Preparing Apps for Dynamic Scaling
Roy Simkes - Preparing Apps for Dynamic Scaling [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Scalability is a big problem for everyone who wants to grow. In order to handle the demand, appropriate infrastructure both in terms of software and hardware should be met. What if hardware was as dynamic as a service where CPU and RAM could have been acquired when only it's needed. Is there such an environment? How can you work with it? What you should be careful of? How your applications should evolve?
Watch
Radosław Jan Ganczarek - Code Quality in Python - tools and reasons
Radosław Jan Ganczarek - Code Quality in Python - tools and reasons [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Beginner's guide to Python code quality. I'll talk about the tools for code analysis, differences between them, extending them with new features and ways to running them automatically. In the end, I'll talk about reasons behind all of these tools and try to convince you to using them in your projects (but if you are against it - I'll gladly listen to your arguments).
Watch
Fernando Masanori Ashikaga - Data Structures with Python
Fernando Masanori Ashikaga - Data Structures with Python [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] Data Structures is traditionally a “bogeyman” discipline in Computer Science courses and has a high degree of failure. In FATEC São José dos Campos we are adopting a hybrid approach, with C and Python languages. The failure rate decreased from 85% (2008) to 12% (2014). The talk will be extensively illustrated with code in C and Python, addressing the various concepts taught in this course: recursion, linked lists, queues, stacks, sorting algorithms.
Watch
Maciej Kula - Speeding up search with locality sensitive hashing
Maciej Kula - Speeding up search with locality sensitive hashing [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Locality sensitive hashing (LSH) is a technique for reducing complex data down to a simple hash code. If two hash codes are similar than the original data is similar. Typically, they are used for speeding up search and other similarity comparisons. In this presentation I will discuss two ways of implementing LSH in python; the first method is completely stateless but only works on certain forms of data; the second is stateful but does not make any assumptions about the distribution of the underlying data. I will conclude the presentation by describing how we apply LSH to search at Lyst.
Watch
Josef Heinen - Getting more out of Matplotlib with GR
Josef Heinen - Getting more out of Matplotlib with GR [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Python is well established in software development departments of research and industry, not least because of the proliferation of libraries such as _SciPy_ and _Matplotlib_. However, when processing large amounts of data, in particular in combination with GUI toolkits (_Qt_) or three-dimensional visualizations (_OpenGL_), Python as an interpretative programming language seems to be reaching its limits. In particular, large amounts of data or the visualization of three- dimensional scenes may overwhelm the system. This presentation shows how visualization applications with special performance requirements can be designed on the basis of _Matplotlib_ and _GR_, a high-performance visualization library for Linux, OS X and Windows. The lecture focuses on the development of a new graphics backend for _Matplotlib_ based on the _GR_ framework. By combining the power of those libraries the responsiveness of animated visualization applications and their resulting frame rates can be improved significantly. This in turn allows the use of _Matplotlib_ in real- time environments, for example in the area of signal processing. Using concrete examples, the presentation will demonstrate the benefits of the [GR framework][1] as a companion module for _Matplotlib_, both in _Python_ and _Julia_. Based on selected applications, the suitability of the _GR framework_ will be highlighted especially in environments where time is critical. The system’s performance capabilities will be illustrated using demanding live applications. In addition, the special abilities of the _GR framework_ are emphasized in terms of interoperability with graphical user interfaces (_Qt/PySide_) and _OpenGL_, which opens up new possibilities for existing _Matplotlib_ applications. [1]: http://gr-framework.org
Watch
Wilhelm - "It's about time to take your medication!" or how to write a friendly reminder bot ;-)
Florian Wilhelm - "It's about time to take your medication!" or how to write a friendly reminder bot ;-) [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] The author shows how to use the [SleekXMPP][1] library in order to write a small chatbot that connects to Google Hangouts and reminds you or someone else to take medication for instance. The secure and recommended OAuth2 protocol is used to authorize the bot application in the [Google Developers Console][2] in order to access the Google+ Hangouts API. The author will elaborate then on how to use an event- driven library to write a bot that sends scheduled messages, waits for a proper reply and repeats the question if need be. Thereby, a primer on event-driven architectures will be given. [1]: http://sleekxmpp.readthedocs.org/ [2]: https://console.developers.google.com/
Watch
Antoine Pitrou - Numba, a JIT compiler for fast numerical code
Antoine Pitrou - Numba, a JIT compiler for fast numerical code [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] This talk will be a general introduction to Numba. Numba is an open source just-in-time Python compiler that allows you to speed up numerical algorithms for which fast linear algebra (i.e. Numpy array operations) is not enough. It has backends for the CPU and for NVidia GPUs. After the talk, the audience should be able to understand for which use cases Numba is adequate, what level of performance to expect, and have a general notion of its inner working. A bit of familiarity with scientific computing and/or Numpy is recommended for optimal understanding, but the talk should otherwise be accessible to the average Python programmer. It should also be of interest to people who are curious about attempts at high-performance Python. [View slides online][1] [1]: http://pitrou.net/ep2015/_build/slides/#1
Watch
Radosław Jankiewicz - Writing quality code
Radosław Jankiewicz - Writing quality code [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] The quality of written code is an important factor in a final success of a software project. Perhaps there is no universal definition of high quality code, however usually it's characterized as clear and readable, well-designed, well tested and documented, easier to debug, maintain and extend, etc. Python was designed to be a highly readable language that would make it easier to develop high quality code. Nevertheless, programming language is only a tool in a software development process and in the end the quality of code depends mostly on its author's concept and decisions he make. In this talk I would like to present some of ideas, techniques and tools for improving the quality of written code, tried out with a good result in everyday work on developing software in Python.
Watch
Eugene Amirov - Sustainable way of testing your code
Eugene Amirov - Sustainable way of testing your code [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] How to write a test so you would remember what it does in a year from now? How to write selective tests with different inputs? What is test? How to subclass tests cases and yet maintain control on which tests would run? How to extend or to filter inputs used in parent classes? Are you a tiny bit intrigued now? :) This is not another talk about how to test, but how to organize your tests so they were maintainable. I will be using nose framework as an example, however main ideas should be applicable to any other framework you choose. Explaining how some parts of code works I would have to briefly touch some advanced python topics, although I will provide need-to-know basics there, so people with any level of python knowledge could enjoy the ride.
Watch
Honza Král - Beyond the basics with Elasticsearch
Honza Král - Beyond the basics with Elasticsearch [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Elasticsearch has many use cases, some of them fairly obvious and widely used, like plain searching through documents or analytics. In this talk I would like to go through some of the more advanced scenarios we have seen in the wild. Some examples of what we will cover: Trend detection - how you can use the aggregation framework to go beyond simple "counting" and make use of the full-text properties of Elasticsearch. Percolator - percolator is reversed search and many people use it as such to drive alerts or "stored search" functionality for their website, let's look at how we can use it to detect languages, geo locations or drive live search. If we end up with some time to spare we can explore some other ideas about how we can utilize the features of a search engine to drive non- trivial data analysis including Geo-enabled search with relevancy.
Watch
Lynn Root - Metrics-driven development
Lynn Root - Metrics-driven development [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] At Spotify, my team struggled to be awesome. We had a very loose understanding of what product/service our squad was responsible for, and even less so of the expectations our internal and external customers had for those services. Other than “does our Facebook login work?”, we had no understanding of how our services we’re responsible for were doing. How many users actually sign up or log in with Facebook? How many users have connected their Spotify account with their Uber account? Do folks even use Spotify with Uber? With a 2-month challenge period, my squad and I focused inward to establish those unanswered questions and to establish feedback loops and always-on dashboards. This talk will tell the story of how we chose which metrics are important for us to focus on, what technologies we have used and are using, and how we’ve iterated over our feedback loops to fine-tune what metrics we care about.
Watch
Larry Hastings - Python's Infamous GIL
Larry Hastings - Python's Infamous GIL [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] You've heard about Python's GIL. But what is it really? What does it do, both good and bad? Come learn all about the Python GIL. You'll learn about its history, all the problems it solves, all the problems it causes (that we know about!), and what it would take to remove the GIL. Attendees should be familiar with the terrors inherent in multithreaded programming, and be comfortable with a little C code in the slides.
Watch
Lesuisse - Odoo the underdog python killer app. A python framework for web based business apps.
Antony Lesuisse - Odoo the underdog python killer app. A python framework for web based business apps. [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Odoo is used by 2 millions of users, although relatively unknown in the python community, it has a vibrant community and is one of the most active python open source project. I will present you the Odoo framework and how it can help to be more productive when building web based business apps. I will highlight its advantages compared to more popular framework such as django.
Watch
Guido van Rossum - Type Hints for Python 3.5
Guido van Rossum - Type Hints for Python 3.5 [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] PEP 484, "Type Hints", was accepted in time for inclusion in Python 3.5 beta 1. This introduces an optional standard for specifying types in function signatures. This concept was previously discussed as "optional static typing" and I similar to the way TypeScript adds optional type declarations to JavaScript. In this talk I will discuss the motivation for this work and show the key elements of the DSL for describing types (which, by the way is backward compatible with Python 3.2, 3.3 and 3.4). Note: *Python will remain a dynamically typed language, and I have no desire to ever make type hints mandatory, even by convention!*
Watch
Holger Krekel - Keynote: Towards a more effective, decentralized web
Holger Krekel - Keynote: Towards a more effective, decentralized web [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Many would like to see more decentralization but what does it mean, really? In this talk, I'll discuss the recent rise of immutable state concepts in languages and network protocols. And how the advent of hash-based data structures and replication strategies are shaking the client/server web service paradigm which rests on managing mutable state through http. By contrast, building on git, bittorrent and other content addressed data structures provides for a more secure, efficient decentralized communication topology. There are projects, thoughts and talk to create new web standards to bring such technologies to mass deployment and fuel a new wave of decentralization. What can Python bring to the table?
Watch
Juan Manuel Santos - Salting things up in the sysadmin's world
Juan Manuel Santos - Salting things up in the sysadmin's world [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] SaltStack is a thriving configuration management system written in Python that leverages YAML and Jinja2 which, by now, probably needs no introduction. This talk will cover a brief summary of why we need configuration management tools, followed by a full dive into SaltStack, its features, pros and cons, how to use it and how to extend it. By the end of this talk you will have gone from knowing little or nothing about SaltStack, to being able to deploy your own setup. This talk will be targeted to either seasoned Python developers who are taking their first steps in the system administration world, or established system administrators who secretly love Python and prefer to stay away of configuration management systems based on other languages. Its advisable that attendees have some familiarity with Python as well as with system administration concepts. Also, this presentation will be focused on GNU/Linux systems, so it is expected that attendees are comfortable with some of its concepts.
Watch
Michal Hořejšek - Testing web apps with Selenium
Michal Hořejšek - Testing web apps with Selenium [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] „Selenium automates browser.“ Selenium can be used as tool for testing web applications. At first it can be pretty hard to start testing with Selenium, but later on it can be even harder. I want to show you that it doesn't have to be true. That it can be easy, actually. But you have to know few things which you have to be careful about and that there is tool webdriverwrapper which can make it easy for you. I will speak about handling pages with JavaScript and which common problem can you have, how to run Selenium on servers without X server, how to deal with tabs, how to test with UnitTest or pytest, and how can webdriverwrapper make things easier for you and more.
Watch
Max Brauer - Stop trying to glue your services together; import lymph
Max Brauer - Stop trying to glue your services together; import lymph [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] What if you could focus on functionality rather than the glue code between services? Lymph is an opinionated framework for writing services in Python. It features pluggable service discovery, request-reply messaging and pluggable pub-sub messaging. As our development teams are growing, we're moving away from our monolithic architecture. We want to write services and not worry about the infrastructure's needs. We want development to be fast, quick and simply work. In this talk we will show you how easy it is to write and run services with lymph. Go check http://lymph.io - we are accepting pull requests. http://import-lymph.link/
Watch
Juan Riaza - Dive into Scrapy
Juan Riaza - Dive into Scrapy [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing. In this talk some advanced techniques will be shown based on how Scrapy is used at Scrapinghub. Goals: - Understand why its necessary to _Scrapy-ify_ early on. - Anatomy of a Scrapy Spider. - Using the interactive shell. - What are items and how to use item loaders. - Examples of pipelines and middlewares. - Techniques to avoid getting banned. - How to deploy Scrapy projects.
Watch
Vaidik Kapoor - Understanding Non-blocking IO
Vaidik Kapoor - Understanding Non-blocking IO [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] As an engineer working on any web stack, you may have heard about Blocking and Non-Blocking IO. You may as well have used any framework or library that supports Non-Blocking IO. After all, they are very useful as you don't want to block execution of other tasks while one task is waiting to complete a network call to another service (like HTTP call to an API or may be a TCP call to your database). Non- Blocking IO while doing tasks and not wait for IO. This also helps us handle a lot many connections than we possibly could with Blocking IO. Python supports Non-Blocking IO, but we always use some existing 3rd party library that hides all the gory details and makes it all look like black magic to the uninitiated. But there is nothing like black magic. This presentation will be an introductory talk focused at explaining how Non-Blocking IO works, which is the basis of libraries like Gevent, Tornado and Twisted. We will learn about how Non-Blocking IO can be implemented using the most basic modules that form the base for the above mentioned libraries. Hopefully after this talk, Non-Blocking IO will not be an unsolved mystery for you anymore.
Watch
Alexander Hendorf - Data Analysis and Map-Reduce with mongoDB and pymongo
Alexander Hendorf - Data Analysis and Map-Reduce with mongoDB and pymongo [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] The MongoDB aggregation framework provides a means to calculate aggregated values without having to use map-reduce. While map-reduce is powerful, it is often more difficult than necessary for many simple aggregation tasks, such as totaling or averaging field values. See how to use the build-in data-aggregation-pipelines for averages, summation, grouping, reshaping. See how to work with documents, sub- documents, grouping by year, month, day, etc. This talk will give many (live) examples how to make the most of your data with pymongo with a few lines of code. added 28/07/15: iPython notebook & sample data can be found in [this git][1] [1]: https://bitbucket.org/alanderex/ep2015-dataanalysis-with-mongodb
Watch
Matt Bennett - Nameko for Microservices
Matt Bennett - Nameko for Microservices [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Microservices are popping up everywhere. This talk will explain what this fashionable new architecture is, including the pros and cons of adopting it, and then discuss an open-source framework that can help you do so -- [https://nameko.readthedocs.org][1]. Nameko assists you in writing services with well-defined boundaries that are easy to test. By leveraging some neat design patterns and providing test helpers, it also encourages good service structure and clean code. [1]: https://nameko.readthedocs.org
Watch
Marc-André Lemburg - Python idioms to help you write good code
Marc-André Lemburg - Python idioms to help you write good code [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Python focuses a lot on writing readable code and also tries to make solutions obvious, but this doesn't necessarily mean that you cannot write unreadable code or design your code in ways which makes it hard to extend or maintain. This talk will show some useful idioms to apply when writing Python code, how to structure your modules and also goes into details on which techniques to use and which to think about twice, based on 20 years of experience writing Python.
Watch
Shane Evans - Web Scraping Best Practises
Shane Evans - Web Scraping Best Practises [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Python is a fantastic language for writing web scrapers. There is a large ecosystem of useful projects and a great developer community. However, it can be confusing once you go beyond the simpler scrapers typically covered in tutorials. In this talk, we will explore some common real-world scraping tasks. You will learn best practises and get a deeper understanding of what tools and techniques can be used and how to deal with the most challenging of web scraping projects! We will cover crawling and extracting data at different scales - from small websites to large focussed crawls. This will include an overview of automated extraction techniques. We'll touch on common difficulties like rendering pages in browsers, proxy management, and crawl architecture. **Slides**: [https://speakerdeck.com/shaneaevans/web-scraping-best- practises][1] [1]: https://speakerdeck.com/shaneaevans/web-scraping-best-practises
Watch
Carrie Anne Philbin - Keynote: Designed for Education: A Python Solution
Carrie Anne Philbin - Keynote: Designed for Education: A Python Solution [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] The problem of introducing children to programming and computer science has seen growing attention in the past few years. Initiatives like Raspberry Pi, Code Club, code.org, (and many more) have been created to help solve this problem. With the introduction of a national computing curriculum in the UK, teachers have been searching for a text based programming language to help teach computational thinking as a follow on from visual languages like Scratch. The educational community has been served well by Python, benefiting from its straight-forward syntax, large selection of libraries, and supportive community. Education-focused summits are now a major part of most major Python Conferences. Assistance in terms of documentation and training is invaluable, but perhaps there are technical means of improving the experience of those using Python in education. Clearly the needs of teachers and their students are different to those of the seasoned programmer. Children are unlikely to come to their teachers with frustrations about the Global Interpreter Lock! But issues such as usability of IDEs or comprehensibility of error messages are of utmost importance. In this keynote, Carrie Anne will discuss existing barriers to Python becoming the premier language of choice for teaching computer science, and how learning Python could be helped immensely through tooling and further support from the Python developer community.
Watch
Mandy Waite - Keynote: So, I have all these Docker containers, now what?
Mandy Waite - Keynote: So, I have all these Docker containers, now what? [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] You've solved the issue of process-level reproducibility by packaging up your apps and execution environments into a number of Docker containers. But once you have a lot of containers running, you'll probably need to coordinate them across a cluster of machines while keeping them healthy and making sure they can find each other. Trying to do this imperatively can quickly turn into an unmanageable mess! Wouldn't it be helpful if you could declare to your cluster what you want it to do, and then have the cluster assign the resources to get it done and to recover from failures and scale on demand? Kubernetes (http://kubernetes.io) is an open source, cross platform cluster management and container orchestration platform that simplifies the complex tasks of deploying and managing your applications in Docker containers. You declare a desired state, and Kubernetes does all the work needed to create and maintain it. In this talk, we’ll look at the basics of Kubernetes and at how to map common applications to these concepts. This will include a hands-on demonstration and visualization of the steps involved in getting an application up and running on Kubernetes.
Watch
Various speakers - Recruiting sponsors presentation
Various speakers - Recruiting sponsors presentation [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Recruiting sponsors presentation.
Watch
Various speakers - Lightning Talks, conference closing
Various speakers - Lightning Talks, conference closing [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Lightning talks, presented by Harry Percival
Watch
Iwan Vosloo - Reahl: The Python-only web framework
Iwan Vosloo - Reahl: The Python-only web framework [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Reahl is a full-featured web framework with a twist: with Reahl you write a web application purely in Python. HTML, JavaScript, CSS and all those cumbersome web technologies (and a few other lower level concerns) are hidden away from you. As far as web frameworks go this is truly a paradigm shift: away from the cobwebs of all the different web technologies, template languages and low-level details -- towards being able to focus on the goals at hand instead, using a single language. In this talk I will give you a brief idea of what Reahl is all about: why it is worthwhile doing, how it works, where we are and what still needs to be done. I hope to convince you that this is an important direction for web frameworks, and of how unique Reahl is. Developing such an abstract framework is an ambitious goal. I'd like to convey the message that what we have achieved so far, and the strategy lessons learnt along the way demonstrate this goal to be realistic and practical.
Watch
Stefan Behnel - Get native with Cython
Stefan Behnel - Get native with Cython [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] [Cython][1] is not only an excellent and widely used tool to speed up computational Python code, it's also a very comfortable way to talk to native code and libraries. The Cython compiler translates Python code to C or C++ code, and supports static type annotations to allow direct use of C/C++ data types and functions. The tight integration of all three languages makes it possible to freely mix Python features like generators and comprehensions with C/C++ features like native data types, pointer arithmetic or manually tuned memory management in the same code. This talk by a core developer introduces the Cython compiler by interactive code examples and presents recent enhancements in the language that continue to make Cython the best choice for the development of fast and portable Python extensions. **Update:** Examples used in presentation as **[IPython/Jupyter][3]** or **[HTML][2]** [1]: http://cython.org/ [2]: http://consulting.behnel.de/ep/2015/ep15-cython.ipynb [3]: http://consulting.behnel.de/ep/2015/ep15-cython.html
Watch
Adriano Petrich - Yak shaving a good place to eat using non negative matrix factorization
Adriano Petrich - Yak shaving a good place to eat using non negative matrix factorization [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Trying to find a good place to eat has become much easier and democratic with online reviews, but on the other hand, that creates new problems. Can you trust that 5 star review of fast food chain as much as the 1 star of a fancy restaurant because "Toast arrived far too early, and too thin"? We all like enjoy things differently. Starting of on the assumption that the "best pizza" is not the same for everyone. Can we group users into people that has similar tastes? Can we identify reviews and restaurants to make sense of it? Can that lead us to a better way to find restaurants that you like? Using some data handling techniques I walk you through my process and results that I've got from that idea. There are no requisites for this talk except basic python and math knowledge (matrices exist)
Watch
Filipe Ximenes - What is wrong with API wrappers and how can we do better
Filipe Ximenes - What is wrong with API wrappers and how can we do better [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Wrappers are an essential tool for interacting with web APIs. They reduce the amount of work needed to make requests and sometimes, only sometimes prevent the developer from dealing with extensive documentations. It’s common to encounter libs that require not only the study of their own documentation, but also the APIs one, duplicating the needed work. This is caused because wrappers do not follow a design pattern, each developer creates it’s own design, coding style and use their preferred tools. [Tapioca][1] is what can be called: "a wrapper generator”. Creating API wrappers with Tapioca is extremely easy and fast. For example, it took 1 hour to write the full wrapper for the [Parse.com][2] REST API. But this is not the more important thing, Tapioca libs have a similar interface so once understood how they work, developers can work with any other without the need to learn a new interface. Tapioca is also thought to comply with REST features and takes HATEOAS (Hypermedia as the engine of application state) seriously, so “following” links and pagination are natively supported. Explorability is also a key concept and developers are encouraged to play with Tapioca packages and find their way through APIs before writing their final code. Although there are some production ready [Tapioca wrappers][3], it is a work in progress, there are still many features to be explored. [1]: https://github.com/vintasoftware/tapioca-wrapper [2]: http://parse.com [3]: https://github.com/vintasoftware/tapioca-wrapper#tapioca-comes-in-many-flavours
Watch
Cosmin Poieana - Argus - the omniscient CI
Cosmin Poieana - Argus - the omniscient CI [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Bring the continuous integration to a new level, through a platform/project independent framework able to give you unittest-like reports. Argus is a scenario-based application written in Python, driven by custom recipes under configurable environments, that can be used for testing a wide variety of small and big projects, with the ability of querying live data from the in-test application. Until now, it's successfully used with [cloudbase-init][1] (a robust cloud initialization service for instances) under OpenStack and not only, due to its extensiveness and the ability to mimic different infrastructures. More details can be found on the package page: https://github.com/PCManticore/argus-ci. The goals of this talk are to show its generic scalability, how simple is to create such kind of recipes, the relationship between scenarios, introspection and tests and, but not last, the unlimited freedom of creating very custom aspects of these entities which lead to relevant and in-depth ready for analysis logs. There are no major prerequisites to understand it, just to be familiar with Python and optionally have a focus on cloud infrastructures. [1]: https://github.com/stackforge/cloudbase-init
Watch
Stefan Baerisch - A Deep Look at Logging
Stefan Baerisch - A Deep Look at Logging [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Do you know what your application did last night? Python logging can help you. This talk you will show you how to implement a systematic logging approach without boilerplate code and how to set up the Python logging module for different needs in production systems. We will see how to work with log files and other logging endpoints. We will address the data protection concerns that come up when logging from application with personal information. We will also look at the performance implications of logging. We will then cover best practices - how to structure logging, what to include in a log message, and how to configure logging for different use cases. We will use the Python standard logging module to implement logging. This talk is useful to beginners with some experience. An understanding of decorators is useful, but not required. Some experience in web programming is a plus.
Watch
Antonin Lacombe - From basic distance search to a complex multi criteria search
Antonin Lacombe - From basic distance search to a complex multi criteria search [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] This case study show how to start from a simple distance search on elasticsearch and haystack and implement a production ready search like airbnb. The talk will explain decay functions works with the different curves (linear, exponential, gauss) and how to send them with query scores to elasticsearch. With that you will be able to mix the distance, the price, the user activity, the number of picture and whatever you want. Additionally I will show how to write a custom ElasticsearchSearchQuery and ElasticsearchSearchBackend because this is not yet supported by haybtacksearch. All the code is available here https://github.com/JeLoueMonCampingCar /haystack-function-score-backend.git
Watch
Floris Bruynooghe - The hook-based plugin architecture of py.test
Floris Bruynooghe - The hook-based plugin architecture of py.test [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] The hook-based plugin system used by py.test and being made available as a stand alone package allows easy extensibility based on defined extension points which can be implemented using hook functions in the plugins. Plugins can themselves call these hooks as well as define future extension points allowing for a very flexible design. py.test itself uses this plugin system from the ground up with the entire application being implemented by built-in plugins. This architecture has proven powerful and flexible over the years, on both command line tools as well as long running daemons. This talks will describe how the plugin system works and how it deals with passing arguments and return values 1:N hook calls. It will also describe how to design an application consisting entirely of plugins. While not specifically talking about py.test it will also give a solid understanding on how plugins work in py.test. Slides: http://devork.be/talks/pluggy/pluggy.html Org-mode source: http://devork.be/talks/pluggy/pluggy.org
Watch
Pablo Enfedaque - Decorators demystified
Pablo Enfedaque - Decorators demystified [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Do you know what happens every time you use the **@** symbol in Python? In this talk we will see the magic behind the _syntactic sugar_ of the decorators. To understand how they internally work we will see in detail Python's **scopes**, **namespaces** and **closures**, and finally we will manually apply our own handcrafted decorator. This talk is an improved version (in English) of the talk I delivered at PyConES 2013 (the feedback was pretty positive): [https://www.youtube.com/watch?v=d9-yTnJgcg4 ][1] Level: Intermediate. Attendees must have previous knowledge of Python and should be somehow familiar with the **'@'** notation to decorate a function. The **slides** of the talk can be downloaded from here: [https://speakerdeck.com/pablito56/europython-2015-decorators- demystified][2] [1]: https://www.youtube.com/watch?v=d9-yTnJgcg4 [2]: https://speakerdeck.com/pablito56/europython-2015-decorators-demystified
Watch
Alvaro Aguirre - Easy FullStack Deployments
Alvaro Aguirre - Easy FullStack Deployments [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] During this talk we will discuss how to manage your full stack development life cycle using python technologies plus Docker. We will cover from, the project creation (using Pyramid web framework), to maintaining a consistent deployment infrastructure using buildout and docker containers.
Watch
Valerio Maggio - Machine Learning Under Test
Valerio Maggio - Machine Learning Under Test [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] One point usually underestimated or omitted when dealing with machine learning algorithms is how to write *good quality* code. The obvious way to face this issue is to apply automated testing, which aims at implementing (likely) less-buggy and higher quality code. However, testing machine learning code introduces additional concerns that has to be considered. On the one hand, some constraints are imposed by the domain, and the risks intrinsically related to machine learning methods, such as handling unstable data, or avoid under/overfitting. On the other hand, testing scientific code requires additional testing tools (e.g., `numpy.testing`), specifically suited to handle numerical data. In this talk, some of the most famous machine learning techniques will be discudded and analysed from the `testing` point of view, emphasizing that testing would also allow for a better understanding of how the whole learning model works under the hood. The talk is intended for an *intermediate* audience. The content of the talk is intended to be mostly practical, and code oriented. Thus a good proficiency with the Python language is **required**. Conversely, **no prior knowledge** about testing nor Machine Learning algorithms is necessary to attend this talk. **Slides**: [https://speakerdeck.com/valeriomaggio/machine-learning- under-test-at-europython2015]()
Watch
Pablo Seminario - The Salt Route
Pablo Seminario - The Salt Route [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] An introduction to the devops culture by sharing our experience at PeopleDoc Inc. a successfully French start-up. The salt route talk presents some best practices and common mistakes that arise in everyday teamwork between developers and sysadmins using SaltStack for configuration management, server provisioning, orchestration and Django web applications deployment. As an introductory talk there is no prerequisites required.
Watch
David Arcos - Python in the Sky: In-Flight Entertainment with Python
David Arcos - Python in the Sky: In-Flight Entertainment with Python [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Case study of [Immfly][1]'s Wireless In-Flight Entertainment system, built using Python. This talk will show the basic requirements for the system and the architecture decisions we took. Besides, running software at 10.000 meters implies new unexpected challenges, different from the ones we encounter day-to-day. We'll focus on how we solved them. Slides: [https://www.slideshare.net/DZPM/python-in-the-sky/][2] [1]: http://immfly.com [2]: https://www.slideshare.net/DZPM/python-in-the-sky/
Watch
Fabio Pliger/Oier Beneitez - Welcome
Fabio Pliger/Oier Beneitez - Welcome [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Welcome to EuroPython 2015
Watch
Ola Sitarska/Ola Sendecka - Keynote: It's Dangerous To Go Alone, Take This: The Power of a Community
Ola Sitarska/Ola Sendecka - Keynote: It's Dangerous To Go Alone, Take This: The Power of a Community [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] In this keynote, Ola and Ola will take you on a fantastic journey to the magical world of little Liz, who is totally enchanted by technology. The story of Liz will show that with a little bit of magic, curiosity, courage and hard work, you can defeat all the obstacles standing in your way. You'll discover with her that making big and scary things is easier when you're not doing them alone. Because sometimes, one magical spell, the helpful hand of a friend or this shiny sparkle is all it takes to make a dent in one's universe.
Watch
Sebastian Buczyński - Distributed locks with Python and Redis
Sebastian Buczyński - Distributed locks with Python and Redis [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Traditional methods of coping with concurrent programming problems are well-known and described in literature. Many programming languages, including Python, contain in their standard libraries tools and primitives such as semaphores and can spawn threads or subprocesses. However, in the face of increasing interest in service oriented architecture and building distributed systems, that span across many independent server nodes, emerges a need to adapt traditional solutions, so they can be applied in the new environment. In this talk I will share my experiences gathered during building a modern contact center - highly concurrent system, which requires certain resources to be accessed exclusively by several self-contained components.
Watch
Max Tepkeev - Big Data with Python & Hadoop
Max Tepkeev - Big Data with Python & Hadoop [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Big Data - these two words are heard so often nowadays. But what exactly is Big Data ? Can we, Pythonistas, enter the wonder world of Big Data ? The answer is definitely "Yes". This talk is an introduction to the big data processing using Apache Hadoop and Python. We'll talk about Apache Hadoop, it's concepts, infrastructure and how one can use Python with it. We'll compare the speed of Python jobs under different Python implementations, including CPython, PyPy and Jython and also discuss what Python libraries are available out there to work with Apache Hadoop. This talk is intended for beginners who want to know about Hadoop and Python or those who are already working with Hadoop but are wondering how to use it with Python or how to speed up their Python jobs. Slides for this talk are available [here][1] and code used for benchmarks can be found [here][2]. [1]: http://www.slideshare.net/maxtepkeev/europython-2015-big-data-with-python-and-hadoop [2]: https://github.com/maxtepkeev/talks/tree/master/big-data-with-hadoop-and-python
Watch
Igor Davydenko - Asyncio Stack & React.js or Development on the Edge
Igor Davydenko - Asyncio Stack & React.js or Development on the Edge [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Times changed, with introducing asyncio to Python standard library many and many developers think about switching from previous solutions to aio stack. Talk will introduce aiohttp, aioredis & aiopg - cornerstones for building modern Python backends and show common problems & solutions while switching to aio stack. But not only Python changed. In second part, I'll talk about what new happened in frontend development, how new ES6 features modified JavaScript, and what React.js & Flux means for Python developers. Talk will cover real-world web application, which used aio stack on backend and React.js & Flux approach on frontend and provide useful observations for other developers interested in these topics.
Watch
Mikey Ariel - FOSS DOCS 101 (keep it simple, present!)
Mikey Ariel - FOSS DOCS 101 (keep it simple, present!) [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Does your open source project need better documentation? Do you wish that new users could get started with your software more easily? Do you feel that your code contribution workflow isn't documented well enough, or that contributors are discouraged from documenting their code? How can you give your project docs the love they deserve? This high-level talk aims to introduce the main principles of technical communication in the context of FOSS projects. It is intended for anyone who interacts with docs, whether your project is fresh off the dev environment or has been around since the dawn of Git. Topics include tone, style, process management, structure, and contribution workflow.
Watch
Takayuki Shimizukawa - Sphinx autodoc: automated API documentation
Takayuki Shimizukawa - Sphinx autodoc: automated API documentation [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Abstract: Using the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program. You just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats. In this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions. Description: Sphinx provides autodoc feature that generate document from docstring in your python sources. The docstring that contains description and example of the use of function written near the program, makes doc easy to update. In addition, the output of the Sphinx will make you understand what to write in docstring. As a result, this will improve your motivation of doc writing. To use the autodoc, you must specify python modules to automodule directive one by one. This is a tedious task, hoswever autosummary extension automate this task. In most cases, once developers have developed the API, you only need to run the make html of Sphinx, you get a nicely formatted document. Sphinx also has coverage and doctest extentions. These support writing the documentation to work with autodoc. This allow you to check the APIs that have not been documented or you can verify each doctest part is correct or not. If you use such autodoc-related extensions, you can create a Sphinx API documentation in the following procedure. 1. make coverage; you can get the APIs that have not been documented. 2. Write docstrings that includes the doctest format how to use the API. 3. make doctest; you can verify each doctest part is correct or not. 4. make html; you can generate the HTML or your favorite format. In this session, I'll explain a documentation procedure that uses with sphinx autodoc, autosummary, coverage and doctest extensions. Target: - Python programmer who is struggling with documentation. - Python library author who want to generate API docs automatically. - Python library author who want to create a clear documentation which contains python snippets. Outline: * Self introduction (2 min) * Sphinx introduction (2 min) * What is Sphinx? * Sphinx examples * Have you written API docs for your code? (2 min) * I don't know what/where should I write. * Docstrings is needed? Are there some specific format? * Getting start Sphinx (2 min) * How to install Sphinx * How to start a Sphinx project * Generate API docs from your python code (5 min) * setup autodoc extension * write docstrings for yuor python module * "automodule & make html" will generate API docs from python code * autodoc pros & cons: docs for many modules * Listing APIs automatically (5 mins) * setup autosummary extension * how to use autosummary directive * no more autodoc directive * Discovering undocumented APIs (5 min) * setup coverage extension * make coverage * Detect deviations of the impl and doc (5 min) * setup doctest extension * make doctest * Overall picture, tips, Q&A (10 min) * Overall picture of the process * Options for autodoc * translate them into other langs
Watch
Vlad Temian - gitfs - building a filesystem in Python
Vlad Temian - gitfs - building a filesystem in Python [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] gitfs is an open-source[1] filesystem which was designed to bring the full powers of Git to everyone, no matter how little they know about versioning. A user can mount any repository and all the his changes will be automatically converted into commits. gitfs will also expose the history of the branch you’re currently working on by simulating snapshots of every commit. gitfs is useful in places where you want to keep track of all your files, but at the same time you don’t have the possibility of organizing everything into commits yourself. A FUSE filesystem for git repositories, with local cache. In this talk we will take a look at some of the crucial aspects involved in building a reliable FUSE filesystem, the steps that we took in building gitfs, especially in handling the git objects (http ://git-scm.com/book/en/v2/Git-Internals-Git-Objects), what testing methods we have used for it and also we will share the most important lessons learned while building it. The prerequisites for this talk are: A good understanding of how Git works Basic understaning of Operating Systems concepts [1] You can get the source here - https://github.com/PressLabs/gitfs; you cand find more details here - http://www.presslabs.com/gitfs/.
Watch
Fabian Kreutz - TDD - the why, the how and the when not
Fabian Kreutz - TDD - the why, the how and the when not [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] TDD is great, we all know that. But why is it so, and under which circumstances is it ineffective or even harmful? In this talk I want to delve into the deeper meaning of testing to derive how to do it best. All of this from the point of view of somebody who has profited but also struggled with testing and TDD. For every experience level from beginner to advanced there is something to learn or ponder.
Watch
Paul Hallett - What it's really like building RESTful APIs with Django
Paul Hallett - What it's really like building RESTful APIs with Django [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] At the beginning of this year I started working at Lyst and I was tasked with helping to replace their old and outdated web API with a modern RESTful replacement. Along the way we encountered some interesting design decisions and now I’m going to share what we learned about building a real RESTful API with Django and Django REST framework. I've been talking about how to build great RESTful APIs for the past year at various Python and Django conferences in Europe. Now I'd like to take some real world experiences from creating Lyst's new web API and share what I've learned along the way.
Watch
Claudiu Popa - 12 years of Pylint (or How I learned to stop worrying about bugs)
Claudiu Popa - 12 years of Pylint (or How I learned to stop worrying about bugs) [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Given the dynamic nature of Python, some bugs tend to creep in our codebases. Innocents NameErrors or hard-to-find bugs with variables used in a closure, but defined in a loop, they all stand no chance in front of Pylint (http://pylint.org/). In this talk, I'll present one of the oldest static analysis tools for Python, with emphasis on what it can do to understand your Python code. Pylint is both a style checker, enforcing PEP 8 rules, as well as a code checker in the vein of pyflakes and the likes, but its true power isn't always obvious to the eye of beholder. It can detect simple bugs such as unused variables and imports, but it can also detect more complicated cases such as invalid arguments passed to functions, it understands the method resolution order of your classes and what special methods aren't implemented correctly. Starting from abstract syntax trees, we'll go through its inference engine and we'll see how Pylint understands the logical flow of your program and what sort of type hinting techniques are used to improve its inference, including PEP 484 type hints. As a bonus, I'll show how it can be used to help you port your long-forgotten library to Python 3, using its new --py3k mode. Link to presentation: http://pcmanticore.github.io/pylint-talks/#slide:1
Watch
Armin Rigo - The GIL is dead: PyPy-STM
Armin Rigo - The GIL is dead: PyPy-STM [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Take a big, non-multithreaded program, and run in on multiple cores! PyPy, the Python implementation written in Python, experimentally supports Software Transactional Memory (STM). It runs without the Global Interpreter Lock (GIL). The strength of STM is not only to remove the GIL, but to also enable a novel use of multithreading, inheritently safe, and more useful in the general case than other approaches like OpenMP. The main news from last year's presentation is that there is now a way to get reports about the "STM conflicts", which is essential to go past toy examples. With it, you can incrementally remove conflicts from large code bases until you see a benefit from PyPy-STM. The goal of the talk is to give several concrete examples of doing that.
Watch
Jyrki Pulliainen - How-To: Build a local Python community
Jyrki Pulliainen - How-To: Build a local Python community [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Do you like visiting Python conferences like the EuroPython? Does it make you to want something similar where you live too? This talk looks into the effort, practical things and some good tips on how to bootstrap your own Python community where you live! If you already run a local Python community, join this talk to share your views and give your comments to those interested in building their first Python community. After the talk you have a good idea of what it takes to run your local Python community (spoiler: not much!) and how can you take it even further!
Watch
Ignacio Elola - Everyone can do Data Science in Python
Ignacio Elola - Everyone can do Data Science in Python [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Data Science is a hot topic, and most data scientist use either Python or R to do their jobs as main scripting language. Being import.io data scientist for the last 2 years, all of them using Python, I've come across many different problems and needs on how to wrangle data, clean data, report on it and make predictions. In this talk I will cover all main analytics and data science needs of a start-up using Python, numpy, pandas, and sklearn. For every use case I will show snippets of code using IPython notebooks and run some of them as live demos.
Watch
Peter Hoffmann - PySpark - Data processing in Python on top of Apache Spark.
Peter Hoffmann - PySpark - Data processing in Python on top of Apache Spark. [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] [Apache Spark][1] is a computational engine for large-scale data processing. It is responsible for scheduling, distribution and monitoring applications which consist of many computational task across many worker machines on a computing cluster. This Talk will give an overview of PySpark with a focus on Resilient Distributed Datasets and the DataFrame API. While Spark Core itself is written in Scala and runs on the JVM, PySpark exposes the Spark programming model to Python. It defines an API for Resilient Distributed Datasets (RDDs). RDDs are a distributed memory abstraction that lets programmers perform in-memory computations on large clusters in a fault-tolerant manner. RDDs are immutable, partitioned collections of objects. Transformations construct a new RDD from a previous one. Actions compute a result based on an RDD. Multiple computation steps are expressed as directed acyclic graph (DAG). The DAG execution model is a generalization of the Hadoop MapReduce computation model. The Spark DataFrame API was introduced in Spark 1.3. DataFrames envolve Spark's RDD model and are inspired by Pandas and R data frames. The API provides simplified operators for filtering, aggregating, and projecting over large datasets. The DataFrame API supports diffferent data sources like JSON datasources, Parquet files, Hive tables and JDBC database connections. Resources: - [An Architecture for Fast and General Data Processing on Large Clusters][2] Matei Zaharia - [Spark][6] Cluster Computing with Working Sets - Matei Zaharia et al. - [Resilient Distributed Datasets][5] A Fault-Tolerant Abstraction for In-Memory Cluster Computing -Matei Zaharia et al. - [Learning Spark][3] Lightning Fast Big Data Analysis - Oreilly - [Advanced Analytics with Spark][4] Patterns for Learning from Data at Scale - Oreilly [1]: https://spark.apache.org [2]: http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.pdf [3]: http://shop.oreilly.com/product/0636920028512.do [4]: http://shop.oreilly.com/product/0636920035091.do [5]: https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf [6]: http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf
Watch
Brecht Machiels - RinohType, a document processor inspired by LaTeX
Brecht Machiels - RinohType, a document processor inspired by LaTeX [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] RinohType is a document processor inspired by [LaTeX][1] and written in Python. It renders [reStructuredText][2] and [Sphinx][3] documents to PDF based on a document template and a style sheet. RinohType already implements many of the features that make LaTeX so great. Not stopping there, RinohType also tries to fix LaTeX's weaknesses; it should not only be easy to use, but easy to _customize_ and _extend_ as well. To minimize frustration when things go wrong, care is taken to provide descriptive warning and error messages. The powerful layout engine makes it easy to define custom page layouts. And the CSS- inspired stylesheets simplify the styling of document elements. At a lower level, Python makes the writing of extensions much more accessible when compared to TeX's rather arcane macro language. In the talk, I would like to introduce RinohType to the Python community. No special prerequisite knowledge is required. I will start off by discussing my motivation for starting RinohType development, its design goals and the currently available features. This will be followed by an example of how you can use RinohType to render a reStructuredText document to a neat PDF document, highlighting some of the features along the way. Next, we'll explore some of RinohType's internals such as the page layout engine and the style sheet system. We will explore how these can be used in a Python application to create a document from scratch. A first RinohType release was recently created. While this preview release is of alpha quality, it should be able to render most reStructuredText documents. It also includes a preliminary Sphinx builder. Please find more details in the package's description at [PyPI][4]. [1]: http://en.wikipedia.org/wiki/LaTeX [2]: http://docutils.sourceforge.net/rst.html [3]: http://sphinx-doc.org [4]: https://pypi.python.org/pypi/RinohType
Watch
Raphael Pierzina - Come to the Dark Side! We have a whole bunch of Cookiecutters!
Raphael Pierzina - Come to the Dark Side! We have a whole bunch of Cookiecutters! [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] *(This talk is intended for intermediate-level participants who have a basic understanding of the Python language and contains quotes from Darth Vader that some attendees may find hilarious)* Writing a Python script from scratch is fairly easy and you get on with very little boilerplate code in general. However starting a new Python project can be tiring if you decide to stick to best practices and plan on submitting it to PyPI. It requires great diligence and occasionally gets pretty cumbersome if you start new tools on a regular basis. You underestimate the power of a good template ---------------------------------------------- Why not just use a template for it? Cookiecutter is a CLI tool written in pure Python that enables you to do so. Not only is it working for Python code, but also markdown formats and even other programming languages. We will talk about the ideas behind Cookiecutter and go over how you can create your very own template, so you and others can benefit from your experience. I would like to briefly go into the technologies used and how you can get involved in the Cookiecutter GitHub project. There are already plenty of Cookiecutter templates, or Cookiecutters as we call them, available online. Most of them target Python projects, but others can be used to create C++, LaTeX or Javascript projects. The ability to destroy a planet is insignificant next to the power of Cookiecutter. ---------------------------------------------------------------------- ------------- I will show you how to use Cookiecutter and highlight some of the amazing templates created by the community. More importantly we will create a Cookiecutter template from scratch using the example of a simple Kivy app and make use of advanced features such as post-gen hooks, copy-without-render and templates in context values. Finally I will recommend resources on how to follow up on this talk and how to get in touch in case of any queries. GitHub: [https://github.com/hackebrot][1] Twitter: [https://twitter.com/hackebrot][2] Blog: [http://www.hackebrot.de/][3] [1]: https://github.com/hackebrot [2]: https://twitter.com/hackebrot [3]: http://www.hackebrot.de/
Watch
Patrick Mühlbauer - Building nice command line interfaces - a look beyond the stdlib
Patrick Mühlbauer - Building nice command line interfaces - a look beyond the stdlib [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] One of the problems programmers are most often faced with is the parsing and validation of command-line arguments. If you're new to Python or programming in general, you might start by parsing sys.argv. Or perhaps you might've already come across standard library solutions such as getopt, optparse or argparse in the official documentation. While these modules are probably preferable to parsing sys.argv yourself, you might wonder if there are more satisfactory solutions outside of the standard library. Well, yes there are! This talk will give you an overview of some popular alternatives to the standard library solutions (e.g. click, docopt and cliff), explain their basic concepts and differences and show how you can test your CLIs.
Watch
Ekaterina Tuzova - NumPy: vectorize your brain
Ekaterina Tuzova - NumPy: vectorize your brain [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] NumPy is the fundamental Python package for scientific computing. However, being efficient with NumPy might require slightly changing how you write Python code. I’m going to show you the basic idioms essential for fast numerical computations in Python with NumPy. We'll see why Python loops are slow and why vectorizing these operations with NumPy can often be good. Topics covered in this talk will be array creation, broadcasting, universal functions, aggregations, slicing and indexing. Even if you're not using NumPy you'll benefit from this talk.
Watch
Jean-Philippe Caissy - Static type-checking is dead, long live static type-checking in Python!
Jean-Philippe Caissy - Static type-checking is dead, long live static type-checking in Python! [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] A few months ago, Guido unfolded PEP 484, which was highlighted at PyCon 2015 as a keynote presentation. This proposal would introduce type hints for Python 3.5. While the debate is still roaring and without taking a side, I believe that there is much to learn from static type-checking systems. The purpose of this talk is to introduce ways that could be used to fully take over the amazing power that comes with static types, inside a dynamic type language such as Python. The talk will go over what exactly a static type system is, and what kind of problem it tries to solve. We will also review Guido's proposal of type hinting, and what it could mean to you. Finally, I will present a few libraries that are available, such as Hypothesis or various QuickCheck-inspired library that tries to build more robust tests, how they achieve it and their limitations. Throughout the talk, a lot of examples will used to fully illustrate the ideas being explained. At the end of this talk, you should have a better understanding of the wonderful world of type systems, and what it really means to you. It should help you decide wether using type hints will be helpful to you and also if an external library trying to fuzz your tests has its place inside your project
Watch
Alejandro Garcia - Python Gamedev MLG
Alejandro Garcia - Python Gamedev MLG [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] An overview of the currently available Python game development libraries and frameworks and how is Python currently being used in the videogame industry. Presentation of Kobra, a modern open source Python game development framework with ECS (Entity Component System) architecture and C++ bindings.
Watch
Fabrizio Romano - TDD is not about tests!
Fabrizio Romano - TDD is not about tests! [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] TDD is not about tests! Well, actually, it’s not a about writing tests, or writing them before the code. This talk will show you how to use tests to really drive development by transforming business requirements into tests, and allowing your code to come as their natural consequence. Too often this key aspect is neglected and the result is that tests and code are somehow “disconnected”. The code is not as short and efficient as it could be, and the tests are not as effective. Refactoring is not always easy, and over time all sorts of issues start to come out of the surface. However, we will show that when TDD is done properly, tests and code merge beautifully into an organic whole that fulfills the business requirements, and provides all sorts of advantages: your code is minimal, easy to amend and extend, readable, clean. Your tests will be effective, short and focused, and allow for light-hearted refactoring and excellent coverage. We will provide enough information and examples to spark the curiosity of the novice, and satisfy the need of a deeper insight for the intermediate, and help you immediately benefit from this transformative technique that is still often underestimated and misunderstood. Slides: [http://slides.com/gianchub/ep2015-tdd#/][1] [1]: http://slides.com/gianchub/ep2015-tdd#/
Watch
Vincent Warmerdam - PySpark and Warcraft Data
Vincent Warmerdam - PySpark and Warcraft Data [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] In this talk I will describe how to use Apache Spark (PySpark) with some data from the World of Warcraft API from an iPython notebook. Spark is interesting because it speeds up iterative processes on your hadoop cluster as well as your local machine. I will give basic benchmarks (comparing it to numpy/pandas/scikit), explain the architecture/performance behind the technology and will give a live demo on how I used Spark to analyse an interesting dataset. I'll explain why you might want to use Spark and I'll also go in and explain when you don't want to use it. The dataset I will be using is a 22Gb json blob containing auction house data from all world of warcraft servers over a period of time. The goal of the analysis will be to determine when and if basic economics still applies in a massively online game. I will assume that the everyone knows what the ipython notebook is and I will assume a basic knowledge of numpy/pandas but nothing fancy. The dataset has been chosen such that people who are less interested in Spark can still enjoy the analysis part of the talk. If you know very little about data science but if you love video games then you should like this talk.
Watch
Alejandro Guirao Rodríguez - Extending and embedding Ansible with Python
Alejandro Guirao Rodríguez - Extending and embedding Ansible with Python [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Slides here][1] :-) [Ansible ][2] is the _new cool kid in town_ in the configuration management world. It is easy to learn, fast to setup and works great! In the first part of the talk, I will do a super-fast introduction to Ansible for the newcomers. If you are a Pythonista, you can hack and leverage Ansible in many ways. In the second part of the talk, I will describe some options to extend and embed Ansible with Python: - Embedding Ansible with the Python API - Extending Ansible: creating modules, dynamic inventory scripts and plugins Previous experience with Ansible is advised in order to get the most of this talk, but beginners to the tool will also get an overview of the capabilities of this kind of integration. [1]: http://slides.com/alejandroguiraorodriguez/ee-ansible-with-python#/ [2]: http://www.ansible.com/home
Watch
Romain Guillebert - PyPy and the future of the Python ecosystem
Romain Guillebert - PyPy and the future of the Python ecosystem [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Python has a great versatile ecosystem but the competition is getting better, this talk is about how Python can keep up with these new languages and where PyPy fits into this. Recently we've seen the rise of new technologies like Go, Node.js and Julia, those have the ability to build an ecosystem on a clean slate and thus be better than Python in some aspects. What would it take to be as good as those technologies on those aspects without loosing all the things we love about Python ? This talk will describe my perfect future where Python keeps getting better, gets to keep it's great set of libraries and where PyPy fits in that future.
Watch
Wojciech Lichota - Continuous Deployment for webapps based on Django
Wojciech Lichota - Continuous Deployment for webapps based on Django [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] When you see users starting to use your feature, you feel very proud and fulfilled. So why feel this only once every few weeks, why not feel it every day? In this talk I will show how we changed our workflow to automate deployment of code changes to production every time a feature is ready - sometimes even few times per day. I will present how to successfully combine open-source tools like Git, Jenkins, Buildout, Fabric, uWSGI, and South, in order to simplify the process and make it more reliable. I will discuss challenges that we faced implementing this workflow in a real project based on Django and how we resolved them. During this talk you will gain the knowledge required to implement Continuous Deployment in your own project.
Watch
Piotr Dyba - with modern_peripherals: Python and Flask
Piotr Dyba - with modern_peripherals: Python and Flask [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] with modern_peripherals: Python and Flask Auto-scrolling sites, glance-following ads, and gesture friendly web pages are coming! Over the last few years three products emerged that enable interaction with computer in a new way: Myo Armband, Leap Motion Controller and EyeTribe. The Myo Armband is a device that uses the electrical activity in your muscles to wirelessly control your computer, phone, and tablet, which is especially useful when your hands are "tied" or dirty. This device will be used to navigate through the presentation. The Leap Motion Controller tracks both hands in front of the screen. From a web developer’s perspective, both devices allows us to use gestures, previously restricted to touch devices, on desktops. EyeTribe is an affordable eye-tracking device. The talk will briefly cover setting up SDKs and python wrappers, and then focus on possible uses in daily life, business and, of course, web app development. Code examples will be included. In addition, the trade-offs between processing this new type of input data in the client versus processing input on the server will be discussed.
Watch
Philipp Mack - Python in the world of retail and mail order
Philipp Mack - Python in the world of retail and mail order [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] At Blue Yonder a lot of different python packages, provided by the community, as well as our own self-written packages, are used in order to provide flexible solutions to our problems. In this talk I'll present a walkthrough of a generic python application example for demand and purchase order quantity calculations, putting together those packages in an orderly way. The example will feature real world problems derived from hands-on experience with our retail and mail order customers. Additionally the talk addresses the subjects of testing, configuring, parallelising and deploying the code. Packages used in this talk are : - pytest http://pytest.org/latest/ - voluptuous https://github.com/alecthomas/voluptuous - redis https://pypi.python.org/pypi/redis/ - SciPy http://www.scipy.org/ - scikit-learn http://scikit-learn.org/stable/ - pandas http://pandas.pydata.org/
Watch
Marco Buttu - Lessons learned about testing and TDD
Marco Buttu - Lessons learned about testing and TDD [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] One day our software will go in production, and so shortly we will pay dearly for our youthful mistakes. Without regression tests, we will be in deep trouble. If we have regression tests, but we did not have performed TDD, we should probably increase the effort in bug fixing and maintenance, since we do not have enough code coverage and our tests come out complex. By retracing the author youthful mistakes, we will see a complete development workflow, from the user story to the low-level tests, in order to highlight the differences between functional, integration and unit tests, the best practices, and the lessons learned by the author during the development of the [Sardinia Radio Telescope][1] control software. [Slides available here][2]. [1]: https://www.youtube.com/watch?v=zCL_tSMqsRg [2]: http://marco-buttu.github.io/pycon_testing/
Watch
Alexander Sibiryakov - Frontera: open source large-scale web crawling framework
Alexander Sibiryakov - Frontera: open source large-scale web crawling framework [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] In this talk I'm going to introduce Scrapinghub's new open source framework [Frontera][1]. Frontera allows to build real-time distributed web crawlers and website focused ones. Offering: - customizable URL metadata storage (RDBMS or Key-Value based), - crawling strategies management, - transport layer abstraction. - fetcher abstraction. Along with framework description I'll demonstrate how to build a distributed crawler using [Scrapy][2], Kafka and HBase, and hopefully present some statistics of Spanish internet collected with newly built crawler. Happy EuroPythoning! [1]: https://github.com/scrapinghub/frontera [2]: http://scrapy.org/
Watch
Benoît Calvez - Python and elasticsearch 101
Benoît Calvez - Python and elasticsearch 101 [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Before its first major version, Elasticsearch was only used as a "secondary" database, and search engine. The releases added a snapshort/restore feature, making it a great full featured database This talk will focus on how we integrate Elasticsearch into our stack, and the multiple usage we make of it: from storing business events to IOT devices metrics.
Watch
Sebastian Neubauer - A Pythonic Approach to Continuous Delivery
Sebastian Neubauer - A Pythonic Approach to Continuous Delivery [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Software development is all about writing code that delivers additional value to a customer. Following the agile and lean approach this value created by code changes should be continuously delivered as fast, as early and as often as possible without any compromise on the quality. Remarkably, there is a huge gap between the development of the application code and the reliable and scalable operation of the application. As an example, most of the tutorials about web development with Flask or Django end by starting a local “dummy” server, missing out all the steps needed for production ready operation of the web service. Furthermore, as there is no “rocket science” in-between, many proposals to bridge that gap from both sides, operations and developers start with sentences like: “you just have to...”, a clear indication that it will cause problems later on and also a symptom of a cultural gap between developers and operations staff. In this talk I will go through the complete delivery pipeline from application development to the industrial grade operation, clearly biased towards the “DevOps” mindset. Instead of presenting a sophisticated enterprise solution, I will outline the necessary building blocks for continuous delivery and fill them up with simple but working poor man's solutions, so that it is equally useful for professional and non-professional developers and operations engineers. After the talk you will know how to build such a continuous delivery pipeline with open-source tools like “Ansible”, “Devpi” and “Jenkins” and I will share some of my day-to-day experiences with automation in general. Although many of the concepts are language agnostic I will focus on the ins and outs in a python universe and outline the pythonic way of “get this thing running”.
Watch
Giuseppe Cammarota - Activity Map from space: supporting mine clearance with Python
Giuseppe Cammarota - Activity Map from space: supporting mine clearance with Python [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Removing UneXploded Ordnance (UXO) from minefields at the end of a conflict is a very time-consuming and expensive operation. Advanced satellite image processing can detect changes and activities on the ground and represent them on a map that can be used by operators to classify more dangerous zones and safer areas, potentially reducing the time spent on field surveys. We exploit space-borne radar Earth images together with thematic data for mapping activities on the ground using numpy, scipy and gdal. The Activity Map generation process to be shown will be implemented using IPython Notebook.
Watch
Naomi Ceder - Antipatterns for Diversity
Naomi Ceder - Antipatterns for Diversity [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] **Stop doing the same thing but expecting different results** As developers we put considerable effort into optimisation. We are always tinkering, trying to make things better, and striving to remove antipatterns from our code and our development processes. Yet for some reason we have not been as good at applying this spirit of optimisation to the problem of increasing diversity, even though most people these days agree that, like good tests, agile methodologies, and virtual environments, diversity is a "good thing". My position is that just as there is no single easy way to write good code there is no single easy way to increasing diversity. There are, however, several things that companies and organisations do which actually work against diversity. This talk will explore these antipatterns for diversity, including uncritical belief in meritocracy, lack of understanding of the realities of marginalisation, null processes, misunderstanding of "culture fit", and an unwillingness to change, as well as some ways that teams, companies, and organisations might work to combat them.
Watch
Georges Dubus - Through the lens of Haskell: exploring new ideas for library design
Georges Dubus - Through the lens of Haskell: exploring new ideas for library design [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Haskell is very different from Python, and provide different tools to library and framework designers. As a result, its ecosystem is filled with libraries and frameworks that solve the same problems we try to solve in our favorite programming languages, but with a very different approach. This talk is an exploration of the Haskell ecosystem, from the point of view of a Python developer. We will review various popular Haskell libraries and frameworks, focusing on the library design. The goal is to provide the audience a sneak peak of some different ways to tackle problems, and hopefully to inspire library authors to explore some design space that we don't usually explore in Python. This talk should be interesting to any intermediate Python programmer who is curious about other ways to solve problems. No Haskell knowledge is required from the audience.
Watch
Nicholas Tollervey - Lessons learned with asyncio ("Look ma, I wrote a distributed hash table!")
Nicholas Tollervey - Lessons learned with asyncio ("Look ma, I wrote a distributed hash table!") [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] This talk introduces the asyncio module. I'll cover what it's for, how it works and describe how I used it to write a real-world networked application (a distributed hash table). We'll explore the event loop, coroutines, futures and networking with examples from my code. This won't be an exhaustive exposition. Rather, attendees will grasp enough of asyncio to continue with their own studies. By the end of this introductory talk I hope attendees will want to learn more about asyncio and perhaps give it a try in their own projects.
Watch
Victor Stinner - asyncio community, one year later
Victor Stinner - asyncio community, one year later [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] The asyncio project was officially launched with the release of Python 3.4 in March 2014. The project was public before that under the name "tulip". asyncio is just a core network library, it requires third party library to be usable for common protocols. One year later, asyncio has a strong community writing libraries on top of it. The most advanced library is aiohttp which includes a complete HTTP client but also a HTTP server. There are also libraries to access asynchronously the file system, resolve names with DNS, have variables local to tasks, read-write locks, etc. There are clients for AMQP, Asterisk, ElasticSearch, IRC, XMPP (Jabber), etc. (and even an IRC server!). There are asynchronous drivers for all common databases, and even for some ORMs. As expected, there are tons of new web frameworks based on asyncio. It's also possible to plug asyncio into Gtk, Qt, gevent, eventlet, gunicorn, tornado, etc. I will also discuss use cases of asyncio in production and benchmarks. Spoiler: asyncio is not slow. The asyncio library also evolved to become more usable: it has a better documentation, is easier to debug and has a few new functions. There is also a port to Python 2: trollius.
Watch
Ravi Vagadia - Python & Internet of Things
Ravi Vagadia - Python & Internet of Things [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] There is a lot buzz about the Internet of things and how it's going to be the next big thing in computing. Python can power "things" and is used extensively in network applications, however there isn't much information out there about where Python can be used to build end-to- end IoT products. Goals : To put into perspective the usefulness of Python in building IoT products. Spread awareness on possibilities of using Python on embedded hardware.
Watch
Andrey Vlasovskikh - How you can benefit from type hints
Andrey Vlasovskikh - How you can benefit from type hints [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] PEP 484 introduces type hints for Python 3. Type hints can increase readability of our code for both humans and tools and lead to better and safer outcomes. And we'll prove it in this talk! We're going to take a closer look at type hints, see practical examples of where they can be used and the value they provide. We'll see that simple class types and built-in collection types are often enough for our public API's. We'll also discuss how you can benefit from type hinting stubs for third-party libraries and briefly cover more advanced scenarios like generic types.
Watch
Richard Wall - Faking It - The Art of Testing Using Verified Fakes
Richard Wall - Faking It - The Art of Testing Using Verified Fakes [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Have you ever worried that your tests aren't as good because they're running against a fake or mock instead of the real thing? Verified fakes solve this problem. Verified fakes allow for simplified testing using fakes while still providing the assurance that code tested using a fake implementation will behave the same way when used with a real implementation. The talk will begin with a case-study, demonstrating what it means to write a "verified fake" implementation of a public API. I will show how to write tests that verify a fake implementation of a well defined API and I will show how those same tests can be re-used to verify and test real implementations of the same API. The talk will end with a proposal that more libraries should include verified fakes. I will show, with real-world examples, how verified fakes can be used by integrators and discuss how they are superior to ad-hoc, unverified, mocking. During the talk I will refer to various real world, Open Source examples. Including: * Flocker's Pluggable "Block Device Backend" [1] This API allows Flocker to manipulate file systems on OpenStack Cinder Blocks and AWS EBS devices. It also makes it easy for third parties to implement their own Flocker block device backends. * Eliot's Memory Logger - and its use in testing and verifying logged messages. * LibCloud's DummyNodeDriver - and its limitations. * Boto - as an example of a library that could benefit from a verified, introspectable fake. * Docker-py - as an example of a library for which we have written a verified fake. There will be at least 5 minutes for discussion at the end of the talk. [1] Flocker is an Open Source Docker orchestration system written in Python by ClusterHQ
Watch
Michał Bultrowicz - Python microservices on PaaS done right
Michał Bultrowicz - Python microservices on PaaS done right [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Lately, there's a lot of talk about microservices but not enough concrete examples and case studies. I want to change that by showing: - how thinking in PaaS terms can lead to robust and scalable designs; - what infrastructure and automation you need to set up to go along smoothly; - how to get real time metrics of your apps; - what makes Python good for microservices; - what is Python's performance relative to some alternatives. **Prerequisites for the talk:** - some experience with web development in Python; - basic knowledge of RESTful web services.
Watch
Matthieu Rigal - Bringing PostgreSQL towards zero downtime migration with Python
Matthieu Rigal - Bringing PostgreSQL towards zero downtime migration with Python [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Using an SQL database offers a bunch of advantages; first of all its maturity and that it is understood by almost every software developer. But it has at least one main disadvantage. As the data is structured, if you want to modify the structure, for example on a long-running project, you need a migration and therefore almost for sure, a downtime. When you have to make a migration, to modify the structure of data for a small amount of records, it is so fast that it never gets problematic. But if you think to modify the structure of tables containing millions or billions of records, the time required to simply apply the structural change is problematic. Here are some changes we are working on at orderbird to go towards zero downtime migrations using some of the latest improvements of PostgreSQL 9.4, mainly logical replication and mixing in a little magic of some python scripting with psycopg.
Watch
Shahriar Tajbakhsh - Parallelism Shootout: threads vs asyncio vs multiple processes
Shahriar Tajbakhsh - Parallelism Shootout: threads vs asyncio vs multiple processes [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] You need to download data from lots and lots of URLs stored in a text file and then save them on your machine. Sure, you could write a loop and get each URL in sequence, but imagine that there are so many URLs that the sun may burn out before that loop is finished; or, you're just too impatient. For the sake of making this instructive, pretend you can only use one box. So, what do you do? Here are some typical solutions: Use a single process that creates lots of threads. Use many processes. Use a single process and a library like asyncio, gevent or eventlet to yield between coroutines when the OS blocks on IO. The talk will walk through the mechanics of each approach, and then show benchmarks of the three different approaches.
Watch
Vasilij Litvinov - Tuning Python applications can dramatically increase performance
Vasilij Litvinov - Tuning Python applications can dramatically increase performance [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Traditional Python profiling tools have limitations. Standard tools like **cProfile** and most all third party tools (like **Python Tools** plugin for Microsoft Visual Studio) suffer from common flaws. First, the profiling overhead is high (up to 50%). Second, the information provided is “function-level” i.e. the tool shows how much time was spent within a function, but not actionable “line-level” information to show which exact lines are _the bottleneck_ in a function. Adding “line-level” information to most tools causes the application to run even slower. Third, some tools require modification of the application source code to enable profiling thus disrupting development. This talk presents an experimental Python profiler. It typically has less than 15% overhead, shows line-level information and does not require modification of application source code. Experiments using it resulted in performance gains of 2x and more. Of course results vary by application, but in a typical application there may be quick optimizations easily identified by this type of profiler. The talk will briefly describe the basics of what, why and how to profile. The profiler‘s use and results will be shown in the presentation with examples based on real-life applications. Previous experience of working with profilers and trying to optimize an application is a plus, but not required, to gain a better appreciation of the work presented.
Watch
Julian Berman - Just Because You Can, Doesn't Mean You Should
Julian Berman - Just Because You Can, Doesn't Mean You Should [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Python is a powerful language that provides many tools for creating highly dynamic programs. It offers tools all across the complexity spectrum that library authors can use to make their libraries seem convenient to use for users. While it's true that there are a wealth of techniques with huge positive benefits, there are a number of common antipatterns which can deceptively cause a net-loss in flexibility, readability, and predictability for users. We'll explore a few specific commonalities in this area of library and object API design, and talk about the ramifications they have on each of these programmer concerns.
Watch
Rob Collins - DumbDev -- eight rules for dumb development
Rob Collins - DumbDev -- eight rules for dumb development [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] So often, we've been encouraged to be smart in our development. "Work smarter not harder!" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused. In this talk, I'm proposing an alternative to being smart: **_DumbDev_**. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers. **So what do I mean by _dumb_?** Well, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak. Instead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account. So, I'm a **_DumbDev_**, which means I can't hold in my mind the infamous [Plone Site class hierarchy][1] (see [Michele Simionato's article][2]). Rather than beat myself up about this, I can say, "Hold on, maybe deep inheritance is a bad idea..." There is some debate about the number of things we can think about simultaneously: it may be 7, 9, 5, 4 or even only 3. We can learn some tricks to appear to cope with more, but most of us can't easily do 38. Here's the first **_DumbDev_** rule, putting a sensible limit on complexity: > **1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**. > _One central class/concept and up to eight things linked. Larger structures need to be subdivided._ There are seven further rules for me to explain in this talk. I will demonstrate the benefits of the **_DumbDev_** approach, with good and bad examples. At the end of the presentation, I hope you will realise that you're a better developer than you thought at the start. The next time it takes you two hours to debug a simple exception, you'll know that it's not you. It's because the system wasn't written using **_DumbDev_** rules. Let's free our brains for more interesting things, like having ideas and solving problems. Let's do **_DumbDev_**. [1]: http://www.phyast.pitt.edu/~micheles/python/plone-hierarchy.png [2]: http://www.artima.com/weblogs/viewpost.jsp?thread=246341
Watch
Arrested Development - surviving the awkward adolescence of a microservices-based application
Scott Triglia - Arrested Development - surviving the awkward adolescence of a microservices-based application [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] The potential upside of microservices is significant and exciting. So much so that Yelp's Transaction Platform committed from the start to an architecture of small, cooperative microservices. This talk explores the inevitable complications that arise for Python developers in as the services grow larger and stretch both their own architecture and the developers responsible for them. Come hear tales of terror (tight coupling! low test coverage!), stories which will warm your heart (agility! strong interfaces!), and everything in between as we follow the adventures of our plucky team. The talk will be focused on the functional, cultural, and reliability challenges which occur as a microservices-based project evolves and expands over time. Particular attention will be paid to where these diverge from the utopian way microservices are often described, and to the particular difficulties faced by Python developers trying to implement such systems. My goal is to share with attendees some mistakes we've made, some successful methods for growing gracefully, and Python-specific tools/libraries which can help with these problems. To enjoy this talk, you should be aware of the basic vocabulary and concepts of HTTP-based services. Any additional awareness of distributed systems (and their failure modes) will be helpful.
Watch
Andrii Chaichenko - Building a RESTful real-time analytics system with Pyramid
Andrii Chaichenko - Building a RESTful real-time analytics system with Pyramid [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] CeleraOne tries to bring its vision to Big Data by developing a unique platform for real-time Big Data processing. The platform is capable of personalizing multi-channel user flows, right-in time targeting and analytics while seamlessly scaling to billions of page impression. It is currently tailored to the needs of content providers, but of course not limited to. - The platform’s architecture is based on four main layers: - Proxy/Distribution -- OpenResty/LUA for dynamic request forwarding - RESTful API -- several Python applications written using Pyramid web framework running under uWSGI server, which serve as an integration point for third party systems; - Analytics -- Python API for Big Data querying and distributed workers performing heavy data collection. - In-memory Engine -- CeleraOne’s NoSql database which provides both data storage and fast business logic. In the talk I would like to give insights on how we use Python in the architecture, which tools and technologies were chosen, and share experiences deploying and running the system in production.
Watch
Alex Willmer - Taking the pain out of passwords and authentication
Alex Willmer - Taking the pain out of passwords and authentication [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] Passwords are a pain for us all - programmers, users and admins alike. How can we reduce that pain, or eliminate it entirely? This talk will - Review research into techniques that improve the usability of password systems, and mitigate shortcomings - Introduce the new standards Universal Authentication Framework (UAF) & Universal Second Factor (U2F) - Describe how they streamline authentication, even eliminate passwords entirely - Show how to integrate UAF/U2F in Django and other Python frameworks - Summarize the state of support for UAF & U2F in browsers, devices, and the wider world - <del>Introduce Sonipass - a project to replace passwords, even on existing websites</del> [Slides][1] [1]: https://moreati.github.io/passwordspain/
Watch
Panel Discussion: Code Review Tools
Gautier Hayoun (org) - Panel Discussion: Code Review Tools [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] This was a last minute replacement for a cancelled talk.
Watch
Moritz Gronbach - What's the fuzz all about? Randomized data generation for robust unit testing
Moritz Gronbach - What's the fuzz all about? Randomized data generation for robust unit testing [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] In static unit testing, the output of a function is compared to a precomputed result. Even though such unit tests may apparently cover all the code in a function, they might cover only a small subset of behaviours of the function. This potentially allows bugs such as heartbleed to stay undetected. Dynamic unit tests using fuzzing, which allows you to specify a data generation template, can make your test suite more robust. In this talk, we demonstrate fuzzing using the hypothesis library. Hypothesis is a Python library to automatically generate test data based on a template. Data is generated using a strategy. A strategy specifies how data is generated, and how falsifying examples can be simplified. Hypothesis provides strategies for Python's built-in data types, and is easily customizable.Since test data is generated automatically, we can not compare against pre-computed results. Instead, tests are usually done on invariants of functions. We give an overview of such invariants. Finally, we demonstrate how we use fuzzing to test machine learning algorithms at Blue Yonder.
Watch
Tom Viner - Testing with two failure seeking missiles: fuzzing and property based testing
Tom Viner - Testing with two failure seeking missiles: fuzzing and property based testing [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] **[Full Video of Talk][0]** Testing with purely random data on it's own doesn't get you very far. But two approaches that have been around for a while have new libraries that help you generate random input, that homes in on failing testcases. First **[Hypothesis][1]**, a Python implementation and update of the Haskell library QuickCheck. Known as property based testing, you specify a property of your code that must hold, and Hypothesis does its best to find a counterexample. It then shrinks this to find the minimal input that contradicts your property. Video: https://www.youtube.com/watch?v=YGim-BL_ebE#t=53m17s Second, **[American fuzzy lop][2]** (AFL), is a young fuzzing library that's already achieved an impressive trophy case of bug discoveries. Using instrumentation and genetic algorithms, it generates test input that carefully searches out as many code paths as it can find, seeking greater functional coverage and ultimately locating crashes and hangs that no other method has found. I'll be showing how with **[Python-AFL][3]** we can apply this tool to our Python code. [0]: https://youtu.be/YGim-BL_ebE?t=53m17s [1]: https://hypothesis.readthedocs.org/en/latest/ [2]: http://lcamtuf.coredump.cx/afl/ [3]: http://jwilk.net/software/python-afl
Watch
Architecture of a cloud hosting service using python technologies: django, ansible and celery
Abraham Martin - Architecture of a cloud hosting service using python technologies: django, ansible and celery [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] The talk will show the architecture and inners of a cloud hosting service we are developing in the University of Cambridge based on python technologies, mainly django, ansible, and celery. The users manage their hosts using a web panel, developed in django, with common options: ability to create a vhost, associate domain names to vhosts, install packages, recover from backups, make snapshots, etc. Interaction between the panel and the hosts are made using ansible playbooks launched asynchronously by celery tasks. The VM architecture has been designed to be VM platform agnostic and to provide disk replication and high availability. The University of Cambridge central IT services (http://www.ucs.cam.ac.uk/) also provides other services to the rest of the university like domain name registration, authentication, authorisation, TLS certificates, etc. We link all these other services with the hosting service by using APIs while keeping a microservices architecture approach. Thus, enabling the use/link of other services within the same hosting service web application.
Watch
Harry Percival - How to build a spreadsheet with Python
Harry Percival - How to build a spreadsheet with Python [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Do you know how a spreadsheet works? Can you imagine building one, from scratch, in Python? This talk will be a whirlwind overview of how to do just that. Based on the source code of Dirigible, a short- lived experiment in building a cloud-based Pythonic spreadsheet (now [open-sourced](https://github.com/pythonanywhere/dirigible- spreadsheet), for the curious). We'll start from scratch, with a simple data representation for a two- by-two grid, and then gradually build up the functionality of our spreadsheet: - Cell objects, and the formula/value distinction - Evaluating cells, from simple arithmetic up to an Excel-like dialect - Building up the dependency graph, and the ensuing fun times with recursion (arg!) - Integrating custom functions and user-defined code. Showing and explaining code examples, and alternating with live demos (don't worry, I've done this before!) And it's all in Python! You'll be surprised at how easy it turns out to be, when you go step-by-step, each building on the last... And I promise you'll be at least a couple of moderately mind-blowing moments :)
Watch
Alexys Jacob - Designing a scalable and distributed application
Alexys Jacob - Designing a scalable and distributed application [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] One of the key aspect to keep in mind when developing a scalable application is its faculty to grow easily. But while we're used to take advantage of scalable backend technologies such as mongodb or couchbase, **scaling automatically our own application** core is usually another story. In this talk I will **explain and showcase** a distributed web application design based on **consul** and **uWSGI** and its consul plugin. This design will cover the key components of a distributed and scalable application: - **Automatic service registration and discovery** will allow your application to grow itself automatically. - **Health checking and service unregistration** will allow your application to be fault tolerant, highly available and to shrink itself automatically. - A **distributed Key/Value storage** will allow you to (re)configure your distributed application nodes at once. - **Multi-Datacenter awareness** will allow your application to scale around the world easily. [Slides of this talk are available here][1] ! [1]: https://docs.google.com/presentation/d/1bZ30UculKOM4IQ4ic5X2fLpz1Fe1QQPVqJLtshIO0pg/edit?usp=sharing
Watch
Jesús Espino - Playing with CPython Objects Internals
Jesús Espino - Playing with CPython Objects Internals [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] I will explain how CPython objects are built, from simple objects like int or None to complex ones like dict. To make it funnier, I will play to change instance data directly using ctypes and do "really bad things" like truncating tuples.
Watch
Ramon Navarro Bosch - Plone 5 and how to use machine learning with it.
Ramon Navarro Bosch - Plone 5 and how to use machine learning with it. [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] Plone is a Document Management System and Content Management System that has been in the Python scope for more than 10 years. Plone 5’s features allow us to manage content, define various kinds of content and provide a nice useful UI to work on semantic web technologies. In this talk we are going to explain our approach for using Plone with the Python machine learning toolkit sklearn (http ://scikit-learn.org/stable/) to enable clusterization and classification of content using a scalable content management system. We will also add some sophisticated front-end gloss using the new functionalities on frontend development added on Plone 5 and some real use cases of CMS/DMS with machine learning using sklean and solr.
Watch
Carles Bruguera - MAX: Realtime messaging and activity stream engine
Carles Bruguera - MAX: Realtime messaging and activity stream engine [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] What if I told you that we’ve built an open source “WhatsApp”-like RESTful API on the top of Pyramid? We've developed MAX: a real-time messaging service and activity stream that has become the key feature for a social intranet at the BarcelonaTech University We will show how we designed and built MAX with performance in mind using state of the art Python technologies like Gevent, WSGI, and multi-threaded queue processing. We will also show you how we've managed to design a simple architecture guaranteeing both high scalability and performance, achieving connecting ratios over 30.000 students, teachers, and university staff. The API is secured using oAuth 2.0 resource owner password credentials flow powered by our own oAuth server implementation (Osiris) also Pyramid-based. We are using MongoDB as general storage backend and RabbitMQ over websockets to support realtime and messaging.
Watch
Lluís Esquerda - CityBikes: bike sharing networks around the world
Lluís Esquerda - CityBikes: bike sharing networks around the world [EuroPython 2015] [22 July 2015] [Bilbao, Euskadi, Spain] CityBikes [1] started on 2010 as a FOSS alternative endpoint (and Android client) to gather information for Barcelona's Bicing bike sharing service. Later evolved as an open API [2] providing bike sharing data of any (mostly) service worldwide. Fast forward today and after some C&D letters, there's support for more than 200 cities, more than 170M historical entries have been gathered for analysis (in approx. a year) and the CityBikes API is the main source for open bike share data worldwide. This talk will tour about how we got there with the help of python and the community [3]. PS: We have a realtime map, it is awesome [4]. [1]: http://citybik.es [2]: http://api.citybik.es [3]: http://github.com/eskerda/pybikes [4]: http://upcoming.citybik.es
Watch
Mike Müller - Functional Python with Mochi
Mike Müller - Functional Python with Mochi [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] [Slides][1] While Python supports procedural, object-oriented, and functional programming, its functional features are not fully developed. Mochi is a Python-like functional language that compiles to Python 3 and PyPy 3 bytecode. It can use Python libraries and can be used from Python. Mochi adds functional features such as tail recursion optimization, no re-assignments in function definitions, persistent data structures, pattern matching, algebraic data types, a pipeline operator, better anonymous functions, Erlang-style actors, Lisp-style macros as well as many useful builtin functions. This talk presents what Mochi is, how it works, and what you can do with it. Functional programming can help to solve certain kind of problems elegantly. Done right, functional programs can be easily tested and provide more confidence that you program is really doing what you want. Mochi could be another tool in your toolbox. Functional programming can expand your horizon and can be a lot of fun. Mochi offers easy access to this new world because you can leverage your existing Python knowledge and libraries whenever needed. [Slides][1] [1]: http://www.python-academy.com/talks/europython2015/Functional%20Python%20with%20Mochi.slides.html#/
Watch
Antonio Cuni - Python and PyPy performance (not) for dummies
Antonio Cuni - Python and PyPy performance (not) for dummies [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] In this talk we would like to have a short introduction on how Python programs are compiled and executed, with a special attention towards just in time compilation done by PyPy. PyPy is the most advanced Python interpreter around and while it should generally just speed up your programs there is a wide range of performance that you can get out of PyPy, ranging from slightly faster than CPython to C speeds, depending on how you write your programs. We will split the talk in two parts. In the first part we will explain how things work and what can and what cannot be optimized as well as describe the basic heuristics of JIT compiler and optimizer. In the next part we will do a survey of existing tools for looking at performance of Python programs with specific focus on PyPy. As a result of this talk, an audience member should be better equipped with tools how to write new software and improve existing software with performance in mind. The talk will be given by Antonio Cuni and Maciej Fijalkowski, both long time PyPy core developers and expert in the area of Python performance.
Watch
Dale - Data-visualisation with Python and Javascript: crafting a data-viz toolchain for the web
Kyran Dale - Data-visualisation with Python and Javascript: crafting a data-viz toolchain for the web [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] To accompany an upcoming O'Reilly book 'Data-visualisation with Python and Javascript: crafting a dataviz toolchain for the web' (see [here][1]) this talk aims to sketch out the toolchain by transforming some dry Wikipedia data (Nobel prize-winners) into a far more engaging and insightful web-visualisation. This transformative cycle uses Python big-hitters such as Scrapy, Pandas and Flask, the latter delivering data to Javascript's D3. While Python is fast becoming the goto language for data- processing/science, the visual fruits of that labour hit the wall of the web, where there is only one first-class language, Javascript. To develop a data-viz toolchain for the modern world, where web- presentation is increasingly mandated, making Python and Javascript play nicely is fundamental. This talk aims to show that the perceived wall between the two languages is actually a thin, permeable membrane and that, with a bare minimum of web-dev, one can get on with programming seamlessly in both. [1]: http://kyrandale.com/blog/data-visualization-python-javascript/
Watch
Christine Doig - Scale your data, not your process: Welcome to the Blaze ecosystem
Christine Doig - Scale your data, not your process: Welcome to the Blaze ecosystem [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] NumPy and Pandas have revolutionized data processing and munging in the Python ecosystem. As data and systems grow more complex, moving and querying becomes more difficult. Python already has excellent tools for in-memory datasets, but we inevitably want to scale this processing and take advantage of additional hardware. This is where Blaze comes in handy by providing a uniform interface to a variety of technologies and abstractions for migrating and analyzing data. Supported backends include databases like Postgres or MongoDB, disk storage systems like PyTables, BColz, and HDF5, or distributed systems like Hadoop and Spark. This talk will introduce the Blaze ecosystem, which includes: - Blaze (data querying): [http://blaze.pydata.org/en/latest/][1] - Odo (data migration): [http://odo.readthedocs.org/en/latest/][2] - Dask (task scheduler): [http://dask.pydata.org/en/latest/][3] - DyND (dynamic, multidimensional arrays): [https://github.com/libdynd /dynd-python][4] - Datashape (data description): [http://datashape.pydata.org/][5] Attendees will get the most out of this talk if they are familiar with NumPy and Pandas, have intermediate Python programming skills, and/or experience with large datasets. [1]: http://blaze.pydata.org/en/latest/ [2]: http://odo.readthedocs.org/en/latest/ [3]: http://dask.pydata.org/en/latest/ [4]: https://github.com/libdynd/dynd-python [5]: http://datashape.pydata.org/
Watch
Andreas Dewes - Code is not text! How graph technologies can help us to understand our code better.
Andreas Dewes - Code is not text! How graph technologies can help us to understand our code better. [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that "code is text" is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code. In my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development. Finally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future. More information about me: - Github: https://github.com/adewes - Twitter: https://twitter.com/japh44 - Website: http://www.andreas-dewes.de/en
Watch
Andreas Klostermann - Brainwaves for Hackers 2.0
Andreas Klostermann - Brainwaves for Hackers 2.0 [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] This talk is a sequel to "Brainwaves for Hackers" and illustrates some experiments you can do with a Neurosky Mindwave headset, a bluetooth enabled EEG device. I'll also talk some more about how to integrate the device with the IPython Notebook for real time viewing and how to use the Mindwave with the Raspberry Pi.
Watch
Fabio Pliger - Big data beautiful visualization on the browser with Bokeh
Fabio Pliger - Big data beautiful visualization on the browser with Bokeh [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] Bokeh is a Python interactive visualization library for large datasets that natively uses the latest web technologies. Its goal is to provide elegant, concise construction of novel graphics in the style of Protovis/D3, while delivering high-performance interactivity over large data to thin clients. The talk will go through it’s design providing details of the different API layers (bottom to top) concluding with a comprehensive showcase of examples to expose many of the features that make Bokeh so powerful and easy.
Watch
Kay Hayen - The Python Compiler
Kay Hayen - The Python Compiler [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] The Python compiler Nuitka has evolved from an absurdly compatible Python to C++ translator into a **statically optimizing Python compiler**. The mere peephole optimization is now accompanied by full function/module level optimization, with more to come, and only increased compatibility. Witness local and module **variable value propagation**, **function in-lining** with suitable code, and graceful degradation with code that uses the full Python power. (This is considered kind of the break through for Nuitka, to be finished for EP.) No compromises need to be made, full language support, all modules work, including extension modules, e.g. PyQt just works. Also new is a plugin framework that allows the user to provide workarounds for the standalone mode (create self contained distributions), do his own type hinting to Nuitka based on e.g. coding conventions, provide his own optimization based on specific knowledge. Ultimately, Nuitka is intended to grow the Python base into fields, where performance is an issue, it will need your help. Scientific Python could largely benefit from future Nuitka. Join us now.
Watch
Ionel Cristian Mărieș - Less known packaging features and tricks
Ionel Cristian Mărieș - Less known packaging features and tricks [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] You've been making packages for a while now. Everything works almost fine, however, lots of new features and tools have been developed recently. Some are really obscure. And there's a chance they can save you time and help you avoid _packaging-induced-pain_. I'm willing to bet couple of beers you haven't seen these features and/or tools before. This talk is going to show you: - Patterns and tricks you can use in your `setup.py`. - Obscure pip/setuptools/virtualenv/python features you can use to improve your packaging experience (be it as a user of packages or a package author). - Fledgeling alternative tools. [Slides (HTML with notes)][1] [1]: http://blog.ionelmc.ro/presentations/packaging/
Watch
Gianluca Nieri - Python for IT specialists' tasks automation
Gianluca Nieri - Python for IT specialists' tasks automation [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] This talks is about automation and the use of Python scripts to speed up repetitive tasks. It's for developers, sysops, devops, but also any kind of user that want improve his daily routine. I will talk about the use of Python with different tools for different platforms: Keyboard Maestro/Alfred/Hazel on OsX and Synapse/Kupfer/AutoKey on Linux. There will be presented some sample script to give an idea of the potentiality of Python mixed with great tools, and these are some of the topics that I will cover: - text manipulation; - document template management; - clipboard management; - stuff internet activities (url shortening, web scraping, etc.); - list management. - etc.
Watch
Oliver Braun - Multibody Simulation using sympy, scipy and vpython
Oliver Braun - Multibody Simulation using sympy, scipy and vpython [EuroPython 2015] [20 July 2015] [Bilbao, Euskadi, Spain] The talk is about the implementation of multibody simulation in the scientific python world on the way to a stage usefull for engineering and educational purposes. Multibody simulation (MBS) requires two major steps: first the formulation of the specific mechanical problem. Second step is the integration of the resulting equations. For the first step we use the package sympy which is on a very advanced level to perform symbolic calculation and which supports already Lagrange's and Kane's formalism. The extensions we made are such that a complex mechanical setup can be formulated easily with several lines of python code. The functionality is analogous to well known MBS-tools, with that you can assemble bodies, joints, forces and constraints. Also external forces even in a cosimulation model can be added on top. The second step, the integration is done via ode- integrators implemented in scipy. Finally for visual validation the results are visualized with the vpython package and for further analytics with matplotlib. Conclusion: not only highly constrained pendulums with many rods and springs but also driving simulation of passenger cars an be performed with our new extension using python packages off the shelf.
Watch
Daniel Pope - Writing Domain Specific Languages with Python
Daniel Pope - Writing Domain Specific Languages with Python [EuroPython 2015] [24 July 2015] [Bilbao, Euskadi, Spain] Python is an expressive general purpose programming language. Its syntax provides many ways to represent structure and minimise code repetition and boilerplate. But Python not always expressible enough. Perhaps when you've built a complicated enough system with hard-to-express inter-relationships, the code required to construct or operate on it can become complicated, repetitive and unreadable. Or perhaps you have users unfamiliar with Python who need to understand or edit a system. In cases like these, stepping beyond the syntax and semantics of basic Python can be an advantage. Daniel will describe various ways you can implement your own Domain Specific Languages, languages perhaps completely unlike Python that can succinctly describe more complicated Python systems. This talk will cover: * What and why of DSLs * Metaprogramming tricks * Writing simple parsers * The libraries PLY and PyParsing * Building tooling around your new DSLs
Watch
Hynek Schlawack - Beyond grep: Practical Logging and Metrics
Hynek Schlawack - Beyond grep: Practical Logging and Metrics [EuroPython 2015] [21 July 2015] [Bilbao, Euskadi, Spain] Knowing that your application is up and running is great. However in order to make informed decisions about the future, you also need to know in what state your application currently is and how its state is developing over time. This talk combines two topics that are usually discussed separately. However I do believe that they have a lot of overlap and ultimately a similar goal: giving you vital insights about your system in production. We'll have a look at their commonalities, differences, popular tools, and how to apply everything in your own systems while avoiding some common pitfalls. **Slides & Notes**: [https://hynek.me/talks/beyond- grep/](https://hynek.me/talks/beyond-grep/)
Watch
Harry Percival - PythonAnywhere and Education
Harry Percival - PythonAnywhere and Education [EuroPython 2015] [23 July 2015] [Bilbao, Euskadi, Spain] [Education Summit] Python may be the ideal language for teaching because of its simplicity and readability, but actually getting a working and consistent development environment installed on a diverse set of student (or school) computers can be less than straightforward. And then there's pip, numpy, scipy, windows vs unix command lines... As a result, we've had lots of teachers coming to PythonAnywhere over the years, to skip all these problems. We've recently started adding some extra features to help teachers and students which we're keen to share with the EuroPython audience.
Watch