PyConES 2015Universidad Politécnica de Valencia2015-11-202015-11-22300:402015-11-20T17:30:00+010017:3000:30Hall</event></room><room name="Aula 1"><event id="33"><date>2015-11-20T15:00:00+0100</date><start>15:00</start><duration>02:30</duration><room>Aula 1</room><title>Usando contenedores para Big DataEn la actualidad existe una variedad bastante grande de contenedores de datos para almacenar grandes cantidades de datos en Python, tanto en memoria como en disco. En mi taller pasaremos revista a unos cuantos de los más útiles, empezando por los más básicos y generales (listas, diccionarios, NumPy/ndarray, pandas/DataFrames) a los más especializados (RDBMS, PyTables/Table/HDF5, bcolz/carray/ctable). Durante el camino se darán pistas de cuando usar unos u otros dependiendo del caso de uso.Los asistentes deben asistir con un portatil y con los requisitos listados en [https://github.com/FrancescAlted/PyConES2015](https://github.com/FrancescAlted/PyConES2015) debidamente instalados.Francesc Alted2015-11-20T18:00:00+010018:0002:30Aula 1Introducción a visualizaciones interactivas con BokehBokeh ( http://bokeh.pydata.org/en/latest/ ) es una librería de visualización de datos con una interfaz concisa y elegante que permite la construcción de gráficos preparados para la web y con interactividad out-of-the-box y sencilla.Diseña avanzados dashboards en Python para un navegador web sin escribir ni una línea de código de Javascript (pero si quieres puedes ;P)Interactividad cliente-side, cliente-servidor, streaming, big data... Simplemente Bokeh! :)Alejandro Vidal2015-11-20T15:00:00+010015:0002:30Aula 2Python en gvSIG, el Sistema de Información Geográfica LibreTaller orientado a los que quieran iniciarse en el uso de python para desarrollar funcionalidades en gvSIG, un Sistema de Información Geográfica libre.La idea seria dividir el taller en tres bloques:1.-Una introducción, de nivel básico. Veremos como manipular datos espaciales y generar nuevas capas a partir de algunas ya existentes.2.-Un ejemplo de manipulación de mapas, de nivel intermedio. 3.-Un ejemplo de creación de interfaces de usuario desde scripting, de un nivel avanzado.Joaquín del Cerro2015-11-20T18:00:00+010018:0002:30Aula 2Simplifica tu vida con sistemas complejos y algoritmos genéticos¿Qué es un algoritmo genético? ¿Qué es un sistema complejo? ¿Cómo puedo usarlos para resolver problemas complicados? En este taller abordaremos estos temas y aprenderemos a diseñar y usar algoritmos de este tipo con Python.Carlos DoradoSiro Moreno2015-11-20T15:00:00+010015:0002:30Aula 3Single-Page Applications con Django y BackboneEn este taller llevaremos a cabo un caso práctico. La construcción de una Single-Page Application usando Backbone como herramienta front-end. Ahora que cada día aparece una docena de frameworks de JavaScript, suena sensato buscar algo de estabilidad en un framework de trayectoria ya constatada, como es Backbone. Por otra parte, tener un framework como Django en el back-end proporciona robustez, facilidad de uso y muchísima extensibilidad -gracias al increíble ecosistema pythónico-.https://github.com/MiguelSR/pycones_projectMiguel Sánchez RodríguezMiguel González Nieto2015-11-20T18:00:00+010018:0002:30Aula 3Better async code with Python 3Learn async web development hands-on by using asyncio event loop in combination with subgenerator delegation syntax (yield from), creating beautiful concurrent code without writing a single callback.This workshop connects theory with practice, focusing on the common event loop in combination with subgenerator delegation syntax (yield from), which provides a high degree of concurrency while keeping the simplicity of sequential code. It explains the concept of coroutines, futures and ioloop, implementing sample asynchronous web tasks in Python without callbacks. The goal is to train syntax best practices together with production-ready tools. The workshop completes with a benchmark of running async tasks on Tornado, comparing its syntax and performance with popular frameworks from other languages.Anton Caceres2015-11-21T09:00:00+010009:0001:00ParaninfoKeynote2015-11-21T10:00:00+010010:0000:401G-0.5 (Avanzado)DSLs: Can't parse that!♫Se introducirá brevemente qué es un DSL, tipos y cuándo resultan interesantes, mostrando algunos ejemplos. Para pasar a describir un caso práctico, creando un DSL real desde cero para procesamiento de textos, viendo como parsearlo, interpretarlo y resolver un problema de una forma distinta a la que estamos acostumbrados, dándole una nueva perspectiva.Miguel Araujo2015-11-21T10:40:00+010010:4000:401G-0.5 (Avanzado)Escalando una web con pythonConstruir una web y soportar su crecimiento en tráfico tiene su intríngulis. Unaarquitectura sencilla se irá complicando poco a poco a medida que crece enfuncionalidad y en número de usuarios. Veremos un proyecto simplón, como podríaempezar cualquier web que hiciésemos nosotros mismos y la iremos evolucionando yampliando, descubriendo y solucionando los problemas típicos que surgen a lahora de hacer escalar una web.Jose Ignacio Galarza2015-11-21T11:50:00+010011:5000:401G-0.5 (Avanzado)Syntactic Macros in PythonSyntactic Macros enable the programmer to manipulate the shape of the program before executing it allowing to extend the features of the language. Inspired by macropy, in this talk I explain how to get syntactic macros working with Python 3 at import time giving a couple of interesting examples.Syntactic Macros enable the programmer to manipulate the shape of the program before executing it allowing to extend the features of the language. Inspired by macropy, in this talk I explain how to get syntactic macros working with Python 3 at import time giving a couple of interesting examples.The talk covers several advanced topics in Python, including [PEP 302: New Import Hooks](http://www.python.org/dev/peps/pep-0302/) which is the core feature to support macro-expansion at import time and the [AST insterface](https://docs.python.org/3.5/library/ast.html) to produce the syntactic macro-expansion.In the tradition of exposing the magic behind scenes, the talk introduces a minimalistic version of [macropy](https://github.com/lihaoyi/macropy) and explain two macros, one for custom literals and another illustrating how to extend the language.Salvador de la Puente González2015-11-21T12:30:00+010012:3000:401G-0.5 (Avanzado)"Embedding" de Python en otras aplicacionesEs común ampliar las funcionalidades de Python mediante extensiones y módulos externos. Tecnologías como Cython y todo el entorno numpy son posibles mediante la integración de código C compilado en un programa Python en ejecución. Pero es muy interesante, también, el poder incluir un intérprete Python en un programa independiente para poder ampliar sus funcionalidades escribiendo código Python en vez programando en C.Jesús Cea2015-11-21T13:10:00+010013:1000:401G-0.5 (Avanzado)Python tips, tricks and dark magicPython tiene una gran cantidad de funcionalidades ocultas, pero a la vez a la vista de todos. Esta charla descubrir algunas de ellas explicando como funcionan, cuando tiene sentido usarlas y dando casos prácticos de como usarlas con ejemplos de código que las usan.https://github.com/jsoucheiron/pycones-pttdmJordi Soucheiron Estruch2015-11-21T15:00:00+010015:0000:401G-0.5 (Avanzado)SQJobs: Sencillo sistema de tareas en segundo planoMuchos son los sistemas de tareas en segundo plano en Python, como por ejemplo Celery.Sí, en Ticketea hemos creado uno más, pero intentando hacerlo diferente.Simple Queue Jobs intenta ser una cola de tareas sencilla y fiable que simplemente funcione y cuyo código no intimide a aquellos que busquen familiarizarse con él.http://gnufede.github.io/sqjobs-talk/A pesar de su temprana edad, SQJobs cuenta ya con soporte multi broker, beating multizona horaria (definida en la tarea), beating distribuido sin un punto único de fallo y un sencillo API.Veremos un poco cómo definir las tareas, cómo se encolan las tareas, cómo ejecutar workers, las diferencias con las tareas periódica, incluyendo cómo crear varios beats que pueden correr simultáneamente. También mostraremos cómo usar el backend de resultados que permite almacenar en base de datos los resultados de la ejecución de las tareas.Disclaimer:Esta es una charla técnica dada por empleados del equipo técnico de Ticketea. Es posible que finalmente los ponentes cambien.Federico Mon2015-11-21T15:40:00+010015:4000:401G-0.5 (Avanzado)Learning by TrollingExplicación de diferentes conceptos y caracteristicas de python a traves de formas de trollear a compañeros. (monkeypatching, cache de enteros, excepciones...)Jesús Espino2015-11-21T16:50:00+010016:5000:401G-0.5 (Avanzado)Django request-response: Un viaje de ida y vueltaTodos sabemos que cuando tenemos una aplicación hecha en Django ejecutándose en un servidor, y le llega una petición, tarde o temprano nuestro código se ejecutará y le devolveremos una respuesta al usuario, pero... ¿Qué ocurre antes y después de la ejecución de nuestro código?, ¿qué tareas hace Django por nosotros sin ni siquiera ser conscientes de ello?, ¿es posible modificar este comportamiento?, y lo más importante: ¿cómo?Imanol Cea2015-11-21T17:30:00+010017:3000:401G-0.5 (Avanzado)Integrando Apache Storm como servidor de aplicaciones PythonApache Storm es un sistema de procesamiento en tiempo real diseñado para escalar horizontalmente de forma simple y rápida con garantía de procesamiento. Está basado en Java, no obstante, permite utilizar multiples lenguajes de programación, incluido Python, de forma que no necesites usar Java para nada. En esta charla explicaré el caso de uso de Server Density para el procesamiento de "payloads" para la monitorización de servidores.Carlos Perelló Marín2015-11-21T10:00:00+010010:0000:401G-0.6 (Científico)Navigating the Data Science Python EcosystemDo you feel lost with all the libraries being developed in the Python ecosystem for Data Science? Have you heard of scikit-learn, theano, dask, xray, blaze, gensim, bokeh, pymc3, numba, jupyter..., but don't know where to start or what each library is for? Do you ask yourself, what is Data Science anyway? Deep learning vs Machine learning? Then, this talk is for you! We'll learn what Data Science is, as well as, existing libraries, functionality and applications in the ecosystem.The talk will be structured in the following four sections:- What is Data Science?- Why Python for Data Science? - What does the ecosystem look like?- What can you do with them (e.g. applications)?## Data ScienceIn october 2012, the Harvard Business Review released the article: "Data Scientist: The sexiest job of the 21st century". Three years later, job postings for data literates keeps growing, students are demanding more courses, universities are putting together new syllabuses and academics are making career moves towards the data industry. But, what is Data Science? Is it really a new field, or just a rebranding from an already existing one?## Why Python?In the last couple of years the development and usage of Python packages for Data Science has proliferated. This has placed Python in the vanguard of languages for Data Science together with R, which had been dominating the field for a long time. Good foundational numerical and scientific libraries, a strong and growing community, and passionate and dedicated individuals have enabled Python to become a top player in the field.## The ecosystemThe Data Science Python ecosystem is composed of many packages built on top of each other, e.g. numpy, scipy, numba, pandas, xray, dask, seaborn, bokeh... Knowing what each one does, how they integrate, what functionality is available... can help you put together your own custom stack to fulfill your needs and know how to get started without feeling overwhelmed.## ApplicationsOnce you have your stack of Data Science packages, what can you do with them? What kind of problems are you going to be able to solve? Have you heard of recommender systems? Fraud detection? Customer segmentation? We'll present some examples of applications built on top of the Python Data Science Stack.Christine Doig2015-11-21T10:40:00+010010:4000:401G-0.6 (Científico)Autosubmit: investigando el clima con Python¿Cómo investigar aquello con lo que no puedes experimentar? Utilizando modelos. El problema es que simular algo tan complejo como el clima requiere programas que utilizan cientos de procesadores y generan teras de resultados. En esta charla te contaremos como [Autosubmit](https://pypi.python.org/pypi/autosubmit) es capaz de manejar estos gigantescos experimentos para que los climatólogos puedan dedicarse a la ciencia sin problemasJavier Vegas Regidor2015-11-21T11:50:00+010011:5000:401G-0.6 (Científico)SocialLearning: encontrando materiales formativos de manera colaborativaSocial learning es una plataforma de gestión documental orientada al descubrimiento y clasificación de recursos formativos (videos, documentos, páginas web, etc) a partir de búsquedas en redes sociales de forma masiva y automatizada.Es un proyecto libre (https://github.com/alabarga/SocialLearning) desarrollado en Python y utiliza librerías como Django, REST framework, NTLTK, Celery/Redis, etc.http://www.slideshare.net/alabarga/sociallearning-descubriendo-contenidos-educativos-de-manera-colaborativaAlberto Labarga2015-11-21T12:30:00+010012:3000:401G-0.6 (Científico)Introducción a visualizaciones interactivas con BokehBokeh ( http://bokeh.pydata.org/en/latest/ ) es una librería de visualización de datos con una interfaz concisa y elegante que permite la construcción de gráficos preparados para la web y con interactividad out-of-the-box y sencilla.Diseña avanzados dashboards en Python para un navegador web sin escribir ni una línea de código de Javascript (pero si quieres puedes ;P)Interactividad cliente-side, cliente-servidor, streaming, big data... Simplemente Bokeh! :)Alejandro Vidal2015-11-21T13:10:00+010013:1000:401G-0.6 (Científico)Python en la industria: el problema de optimización (matemática) La optimización matemática es utilizada en la industria para la resolución de diferentes problemas, que van desde la selección óptima de equipos y recursos a la gestión logística de una empresa. En esta charla, estudiantes de ingeniería química de la Universidad de Alicante realizarán una introducción visual a conceptos de optimización, presentarán Pyomo y mostrarán la resolución de casos de estudio de diferentes industrias mediante este lenguaje de modelado algebraico desarrollado en Python.Daniel DomeneCarlos Planelles2015-11-21T15:00:00+010015:0000:401G-0.6 (Científico)Know your models - Statsmodels!Scikit-learn has become the best known and most used package to perform it-just-works Machine Learning in Python. But what happens when you want to look into what is going on within your models to inspect and improve them? In this talk we will present the not-so-well-known packages statsmodels and patsy that can help us to achieve a better undestanding of your models and your data.https://github.com/dukebody/pycones-statsmodelsIsrael Saeta PérezMiquel Camprodon2015-11-21T15:40:00+010015:4000:401G-0.6 (Científico)Data structures beyond dicts and listsAs a python backend engineer you might end up using (or abusing) lot's of dicts and lists, iterating on them. This is mainly due their easy usage and might be also because libraries like pandas or numpy fall down in the domain of data science.We will see a real example where an old implementation is refactored to have better use of pandas and constantly comparing the performance increase.A data model of hotels will be analysed using a document structured indexed by the hotel id in a dict. Common use cases like filtering, sorting and statistics of prices are obtained iterating over and over this data structure. Using a panda's DataFrame instead of this document structure open a huge potential of new use cases and a huge perfomance improvement. The main point of this talk is to inspire better usage of current available data structures in data science librare that perhaps are unknown to a non data scientist developerSergi Sorribas2015-11-21T16:50:00+010016:5000:401G-0.6 (Científico)Seguridad y criptografía en PythonLa charla tendrá como objetivo introducir la criptografía y la seguridad desde el punto de vista del desarrollador, mostrando maneras de cifrar la información con scripts de Python y la información más sensible en aplicaciones web usando Django,comentando la principales vulnerabilidades que podemos encontrar en un sitio web(SQL injection,XSS, CSRF) y cómo Django nos puede ayudar a evitar ataques que se aprovechen de estas vulnerabilidades.José Manuel Ortega2015-11-21T17:30:00+010017:3000:401G-0.6 (Científico)PhaseSpace un programa para analizar sistemas dinámicosPhaseSpace es un programa diseñado para analizar sistemas dinámicos de un modo sencillo. Para ello dibuja el mapa de fases de dicho sistema y además permite dibujar los puntos críticos y las curvas de pendiente 0 e infinito, tanto explícitas como implícitas, así como el campo vectorial y las soluciones del sistema que queremos estudiar. También permite seleccionar el método numérico para realizar los cálculos y cambiar los ejes y el paso de integración.Anton Ferré Pujol2015-11-21T10:00:00+010010:0000:401G-0.4 (Básico)#!/usr/bin/python (Python para Sysadmins)En esta charla se presenta la experiencia de un Sysadmin utilizando Python como lenguaje de scripting avanzado.Se introducirán funcionalidades básicas del lenguajes así como una serie de módulos y trucos que facilitarán la vida de cualquier administrador de sistemas que quiera ir más allá de bash.Esta es la charla que me hubiera gustado escuchar cuando empecé a escriptar mis primeras tareas para gestionar servidores y servicios y que me hubiera ahorrado tiempo y facilitado la vida.https://github.com/andreub/pycones2015Andreu Belmonte Peña2015-11-21T10:40:00+010010:4000:401G-0.4 (Básico)Click: Como hacer interfaces de comandos con PythonClick es un paquete de Python que permite la creación rápida y bonita de interfaces de linea de comandos, utilizando pocas lineas de código, de una manera bastante estructurada y componible. Click resuelve las típicas situaciones en las que el programador se ve obligado a hacer un interfaz de comandos y termina por hacerse uno propio.http://telemaco.github.io/python-click/#/Roberto Majadas Lopez2015-11-21T11:50:00+010011:5000:401G-0.4 (Básico)let's Twisted again!Haz que tus programas sean reactivos a determinados eventos de red. Para ello podemos contar con el framework conocido como Twisted, durante la charla aprenderás lo básico para usarla.Twisted es un motor orientado a eventos de redes y tiene licencia de código libre (MIT).Israel D. Aguilar2015-11-21T12:30:00+010012:3000:401G-0.4 (Básico)La maquinaria de import, ese mágico desconocidoimportar módulos y librerías en python es una de las cosas más mágicas que existen. Básicamente funciona pero no sabemos como ni porque. En la charla se explicará como funciona y porque puede ser útil saber como funciona.https://github.com/raulcd/import_magicimportar módulos y librerías en python es una de las cosas más mágicas que existen. Básicamente funciona pero no sabemos como ni porque. En la charla se explicará como funciona y porque puede ser útil saber como funciona.Qué es sys.path, sys.path_hooks, sys.modules, para que sirve? Como cambiarlos?,Qué es un Loader y un Finder y como funcionan para crear tus propios mecanismos de importación.Con esta charla se intentará explicar a la gente como funciona import y que vean que tiene más por dentro de lo que realmente parece para poder customizarlo y algún posible ejemplo de como se podría utilizar.Raúl Cumplido2015-11-21T13:10:00+010013:1000:401G-0.4 (Básico)Python FuncionalImplementacion de varios de los elementos que componen la programacion funcional mediante Python.Guillermo Vayá Pérez2015-11-21T15:00:00+010015:0000:401G-0.4 (Básico)Objetos mutable e inmutables y errores típicosEn esta charla veremos varios errores típicos hechos al usar objetos mutables de Python, revisaremos 5 conceptos clave para entender lo que estaba sucediendo en cada caso y, finalmente, la forma de resolver o evitar esos errores.Nivel requerido: Básico / Intermedio. Los asistentes deben saber algunos conceptos de Python como declaración de clases y funciones, la herencia, atributos de clase...https://speakerdeck.com/pablito56/mutable-vs-immutable-objectsPablo Enfedaque2015-11-21T15:40:00+010015:4000:401G-0.4 (Básico)Revisión de código en PythonEl objetivo de esta charla es dar a conocer los beneficios de la revisión de código, detallando los aspectos prácticos para llevar a cabo esta técnica de manera exitosa en proyectos colaborativos de desarrollo de software escritos en Python.La revisión de código es una técnica que puede ser de gran utilidad para cualquier proyecto de desarrollo de software, ya que su utilización suele contribuir a mejorar la calidad del código que se produce. Sus aspectos técnicos y psicológicos influyen positivamente en el equipo de desarrollo, estimulando el intercambio de ideas y conocimiento entre programadores con una gran variedad de niveles de experiencia. La detección temprana de errores es acaso el más atractivo de sus beneficios, ayudando a reducir el esfuerzo de mantenimiento.La charla tiene como destinatarios a programadores interesados en implementar la técnica en cuestión en proyectos colaborativos de desarrollo de software.En esta charla cubriré los siguientes tópicos:- ¿Qué es una revisión de código?- ¿Cuales son los beneficios de esta técnica?- ¿Cómo se lleva a cabo una revisión de código? - ¿Que aspectos se deben considerar al realizar una revisión sobre una base de código escrita en Python?Cesar Cardenas Desales2015-11-21T16:50:00+010016:5000:401G-0.4 (Básico)Python descriptors al detalleEn esta charla repasaremos el protocolo de los descriptores, casos de uso y sus aplicaciones más directas en la librería estándar, como son properties y slots.La audiencia debería tener un conocimiento medio / alto de Python y entender el data model de los objetos de Python (los magic methods).https://speakerdeck.com/pablito56/python-descriptors-in-detailPablo Enfedaque2015-11-21T17:30:00+010017:3000:401G-0.4 (Básico)Extending PythonPython is a great language, but there are occasions where we need access to lowlevel operations or connect with some database driver written in C or we need toovercome to some speed boottleneck in Python due to some limitation in thelanguage, like NumPy or Scikit-learn do, using extensions.With the FFI(Foreign function interface) we can connect Python with otherlanguages like C, C++ and even Rust or Fortran.Francisco Fernández Castaño2015-11-21T11:20:00+010011:2000:30HallCoffee Break2015-11-21T13:50:00+010013:5001:10HallLunch2015-11-21T16:20:00+010016:2000:30HallCoffe Break2015-11-21T18:10:00+010018:1001:00Aula 1Lightning Talks2015-11-22T16:50:00+010016:5001:00ParaninfoKeynote2015-11-22T09:20:00+010009:2000:401G-0.5 (Avanzado)Sirviendo 1M de tickets en 50 idiomas y 35 divisasEl crecimiento exponencial de Ticketbis nos exige una arquitectura que pueda escalar horizontalmente. Teniendo en cuenta que servimos casi 1M de tickets en 50 idiomas y 35 divisas diferentes, la desnormalización de los datos y su correspondiente cacheo eran necesarios. ¿Queréis saber cómo lo hacemos sin un solo hit a la base de datos? Os doy una pista: demonios pythónicos + Redis + Elasticsearch.Jose Gargallo2015-11-22T10:00:00+010010:0000:401G-0.5 (Avanzado)asyncIO: póngase a la cola por favorEn esta charla veremos como usar python3 con asyncio, websockets y redis paraconstruir un servicio distribuido de colas virtuales con los que controlar deforma ordenada el acceso a un servicio con elevada carga pico.Se comenzará explicando el problema de la cola virtual, qué requisitos debe cumplir y cómo debe cumplirlos. Así los clientes tendrán información actualizada de qué puesto ocupan en la cola y recibirán un token que les dé paso al servicio llegado su turno. Aunque un conocimiento básico de qué es asyncio y qué resuelve se dará por hecho, se explicará la solución paso por paso, desglosando el código del sevidor de colas virtuales y mostrando un ejemplo real de uso de asyncio. Así se introducirán las diferentes corutinas y el uso de aiohttp para manejar el inicio de conexiones por websockets y la actualización de clientes. También se desarrollará un pequeño frontal para mostrar la información suministrada por el servidor de colas virtuales.Miguel AraujoJose Ignacio Galarza2015-11-22T10:40:00+010010:4000:401G-0.5 (Avanzado)Un python nuevo para ti: decoratorsPython es un lenguaje de programación con muchas funcionalidades interesantes. Sin embargo, existen ciertas features habituales en otros lenguajes de programación que no tienen cabida en este: sobrecarga de métodos, un operador para la composición de funciones, comprobación de tipos...En esta charla veremos cómo podemos conseguir estas funcionalidades utilizando decorators e inspeccionando los objectos que representan a las funciones.Braulio Valdivielso2015-11-22T11:50:00+010011:5000:401G-0.5 (Avanzado)El módulo "tracemalloc"El módulo "tracemalloc", añadido a la librería estándar en Python 3.4, permite monitorizar el uso de memoria y nos ayuda a diagnosticar y solucionar "Memory Leaks". Su utilidad es indudable, pero su uso está poco difundido.Jesús Cea2015-11-22T12:30:00+010012:3000:401G-0.5 (Avanzado)Comparing Python ORMEl objetivo de la charla es mostrar algunos de los sistemas ORM que podemos encontrar dentro del ecosistema de Python como Sqlalchemy, Storm, Sqlobject, Django ORM,realizando una comparativa entre ellos,mostrando ventajas y desventajas de cada uno.Algunas de las características a comparar son performance, eficiencia, tratamiento de caché, consultas.Por ultimo, se comentarán las ventajas que aportan estos sistemas para la seguridad de la aplicaciones web con Django.José Manuel Ortega2015-11-22T13:10:00+010013:1000:401G-0.5 (Avanzado)Metaprogramación en PythonSegú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.https://github.com/raulcd/metaprogrammingSegú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. 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 proporcionaRaúl Cumplido2015-11-22T15:00:00+010015:0000:401G-0.5 (Avanzado)Hacking the TaigaTaiga es una herramienta de gestión ágil de proyectos donde prima ante todo la experiencia de usuario. En esta charla trataré de mostrar cómo puedes desarrollar nuevas funcionalidades para ti, tu organización o comunidad, sin necesidad de modificar el core de Taiga.David Barragán Merino2015-11-22T15:40:00+010015:4000:401G-0.5 (Avanzado)Amqp from Python, advanced design patternsAMQP as standard application layer protocol is widely used to design backends where business logic is spread around different processes using a broker to link them, usually RabbitMQ. AMQP allows us to use different design patterns than the traditional monolithic backends, where part of your business logic is designed as entities of the AMQP topology. In this talk we will talk about the Python drivers such as Celery, Pika and others, and how they can be used to get the full power of the AMQP.Pau and Arnau work as Backend Enginners at M2M Cloud Factory designing and coding a M2M Framework called MIIMETIQ along with the other members of the development team. MIIMETIQ uses AMQP to drive all information as messages between the different components that belong to MIIMETIQ, and allows our customers to glue their logical business to the AMQP topology deployed by MIMETIQ. We split the talk in four sections. First of all we will give a tour for several scenarios where some not-basic AMQP patterns can be used to get a better approach looking for a good tradeoff between cost and performance. These scenarios will give use the opportunity to talk in the second part of our talk about the main Python AMQP implementations and how can be used to finally code the previous scenarios. Celery is in definitive one AMQP client and it can be used in raw, without the upper layers that hides the internals, to get benefit of its multiprocessing implementation and others characteristics. We will use it to figure out some of the previous scenarios and which are the advantages and disadvantages.PIka is other AMQP implementation that comes without many of those Celery features that are not really necessary in most of our backends. It implements different adapters such as Syncronous, Asyncronous or Tornado. We wil use it to design and implement one AMQP topology to consume messages from remote clients getting the maximum throughput and bandwidth throttling.At last, the final section we will talk about other Python AMQP implementations and how their can be used to overcome some of the major issues with Pythonic infrastructures, the memory hole. Pau Freixes, Arnau Orriols2015-11-22T09:20:00+010009:2000:401G-0.6 (Científico)Es posible hacer una tesis doctoral en turbulencia con PythonLa simulación numérica directa de flujos turbulentos es una disciplina particularmente exigente en lo que respecta a manejo de datos a gran escala. Las simulaciones que llevamos a cabo en el grupo de investigación guardan del orden de centenares de terabytes de datos, y su proceso suele generar entre dos y tres veces esta cantidad. Después del primer año de tesis doctoral decidí ponerme de conejillo de indias para comprobar si Python es en la práctica tan bueno como se dice en teoría.http://torroja.dmt.upm.es/~guillem/slidesGuillem Borrell Nogueras2015-11-22T10:00:00+010010:0000:401G-0.6 (Científico)Thumbor, el servidor de imágenes libre e inteligenteThumbor es un servidor de imágenes escrito en python. Es capaz de procesar imágenes bajo demanda e incluye funcionalidad de procesado (con opencv) para adaptar las redimensiones de manera inteligente. En esta charla introduciré su utilización y entresijos con el despliegue. http://talks.apsl.net/thumbor/#slide1Edu Herraiz2015-11-22T10:40:00+010010:4000:401G-0.6 (Científico)Machine Learning in the Cloud with PythonLa charla mostará cómo introducir el aprendizaje automático en cualquier proyecto usando plataformas de SAAS accesibles via API. En particular, nos centraremos en el caso de los servicios disponibles en BigML. Veremos como acceder a ellos a distintos niveles: usando los bindings para Python y también mediante un DSL en línea de comandos.La charla mostará cómo introducir el aprendizaje automático en cualquier proyecto usando plataformas de SAAS accesibles via API. En particular, nos centraremos en el caso de los servicios disponibles en BigML. Veremos como acceder a ellos a distintos niveles: usando los bindings para Python y también mediante un DSL en línea de comandos.Mercè Martin2015-11-22T11:50:00+010011:5000:401G-0.6 (Científico)Trolling Detection with Scikit-learn and NLTKLa inmensa mayoría del contenido que se crea diariamente en Internet es desestructurado. Aproximadamente el 90% del mismo es texto. En la era de la web colaborativa, usamos el lenguaje constantemente, por ejemplo, para escribir una crítica de un producto, comentar una foto o escribir un tweet. Esta información es tremendamente valiosa en muchos sentidos. En esta charla veremos algunas de las herramientas que ofrece el ecosistema Python para comprender, estructurar y extraer valor de un texto.https://github.com/rafaharo/trolling_detectionRafa Haro2015-11-22T12:30:00+010012:3000:401G-0.6 (Científico)Tratando datos más allá de los límites de la memoriaEn la era del 'Big Data' se necesitan cantidades cada vez más grandes de memoria (RAM) para tratar y analizar estos datos. Pero tarde o temprano se llega a unos límites por encima de los cuales no se puede (o es muy caro) pasar.El compresor Blosc (blosc.org) y el contenedor de datos bcolz (bcolz.blosc.org), usan las capacidades de los ordenadores modernos (caches, procesadores multihilo y SSDs) para permitir tratar datos más allá los límites de la memoria.Motivación=========Cuando se habla de tratamiento de 'Big Data' aprovechar los recursos de los ordenadores disponibles es fundamental. La evolución de la arquitectura de los sistemas informáticos ha hecho que haya una [diferencia enorme entre la velocidad de las CPUs y la memoria RAM](http://www.blosc.org/docs/StarvingCPUs-CISE-2010.pdf) (a favor de las primeras).Existen diversas técnicas que permiten que esta diferencia de velocidades juegue a nuestro favor. Unos ejemplos:Compresión------------------Usando compresores ultra-rápidos (como [Blosc](www.blosc.org)) y haciendo un uso racional de la jerarquía de las cachés, se puede llegar a transmitir datos desde la memoria a las caches de manera mucho más efectiva, haciendo que nuestros análisis no sólo requieran menos memoria, sino que puedan ser más rápidos que usando la forma tradicional sin comprimir.Datos columnares--------------------------Organizar los datos de las tablas de manera que las columnas se almacenen de manera continua en memoria tiene implicaciones beneficiosas que se entienden enseguida cuando se conoce el funcionamiento de las caches.Contenedores 'trozeados' (chunked)-----------------------------------------------------Si en lugar de guardar los datos correspondientes a una tabla en una única gran área contigua de memoria se usa un conjunto de pequeños trozos de memoria entonces se tienen varias ventajas, como mejor velocidad en añadir datos a nuestra tabla y mejor tolerancia a la [fragmentación de memoria] (http://stackoverflow.com/questions/3770457/what-is-memory-fragmentation).bcolz: un contenedor de datos que se adapta a las arquitecturas modernas------------------------------------------------------------------------------------------------------------[bcolz](bcolz.blosc.org) usa todas las técnicas referidas más arriba con dos objetivos básicos:1) Poder procesar más datos usando los mismos recursos de hardware2) Procesar los datos de manera más rápida (en algunas situaciones)En la charla se demostrarán los principios arquitecturales que explican porqué todas estas técnicas funcionan y se mostrarán las mejoras sobre [datos reales](https://github.com/Blosc/movielens-bench).Francesc Alted2015-11-22T13:10:00+010013:1000:401G-0.6 (Científico)Dive into ScrapyScrapy 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.Juan Riaza2015-11-22T15:00:00+010015:0000:401G-0.6 (Científico)Fiona y Shapely, la punta del iceberg del análisis de datos geográficos con PythonFiona y Shapely son la puerta de entrada al análisis de datos geográficos con Python. En la charla haremos una introducción básica a su uso y realizaremos un pequeño mapa de dmostación.Geoinquietos Valencia2015-11-22T15:40:00+010015:4000:401G-0.6 (Científico)Agujeros negros y optimización de código en pythonEn esta charla atenderemos a la construcción de un raytracer relativista en Python. Nuestro objetivo será conseguir imágenes similares a las observadas en la película Interestellar, mediante la creación de imágenes sintéticas en un entorno de gravedad extrema, como es un agujero negro. Utilizando esto como excusa, analizaremos distintos enfoques para optimizar nuestro código al máximo y conseguir programas eficientes y profesionales a la altura de cualquier otro lenguaje de programación.Pablo Galindo Salgado2015-11-22T09:20:00+010009:2000:401G-0.4 (Básico)Implantación de ElasticSearch: problemas y solucionesEn esta charla se presentará de manera resumida un caso real: el proceso de implantación de ElasticSearch en una aplicación de Django. Partiendo de la motivación de implementar un buscador, veremos los problemas encontrados por nuestro equipo (¡y sus soluciones!). A saber: instalación, definición de los documentos, modo de conexión, indexado, particionado y sincronía con nuestra base de datos.http://slides.com/migueles/deck/live#/Miguel Sánchez RodríguezMiguel González Nieto2015-11-22T10:00:00+010010:0000:401G-0.4 (Básico)Como crear un bot para TelegramEn esta charla veremos como es posible crear un bot para Telegram utilizando la libreria pyTelegramBotAPI y Telegram Bot API. Se mostraran los pasos a seguir para crear un bot sencillo que pueda aceptar interacción del usuarioUrtzi Odriozola Lizaso2015-11-22T10:40:00+010010:4000:401G-0.4 (Básico)Plone 5: el CMS del futuro, en el presente.Plone es un gestor de documental y contenidos con más de 10 años de recorrido. Creado inicialmente como una "cara bonita" del Content Management Framework ha evolucionado hasta nuestros días para traer una experiencia de uso y funcionalidades del más alto nivel.Con las últimas modificaciones realizadas durante el desarrollo, está a punto de publicarse la versión 5 de este CMS, íntegramente escrito en Python, y que presentaremos en esta charla.Mikel Larreategi2015-11-22T11:50:00+010011:5000:401G-0.4 (Básico)Funcional para trollearUsar lo que nos ofrece python para volver scripts imperativos en funcionales* y trollear a los colegas*Ciertas restricciones aplicanhttps://drive.google.com/file/d/0BzU0iGppzndGODFBV0IxZzdCRTg/view?usp=sharingUsando como ejemplos scripts utilitarios, se mostrara como usar las herramientas de python comprehensions, generators, itertools, functools, closures para tener un codigo mas orientado a manipular datos como streams. Con lo cual a veces se puede ir de la mano y terminar haciendo codigo troll :-)Conocimientos previos, muy pocos, saber encender un ordenador, saber editar ficheros de texto (no cuenta usar herramientas ofimaticas), ganas y gusto por el buen rock.Quizas ya sepas todo esto y hasta mejor. No digas que no te adverti :-)Alejandro Brito Monedero2015-11-22T12:30:00+010012:3000:401G-0.4 (Básico)Having it All: Distributed services with Django, Boto, and SQS queuesHow do you let untrained people in your company run sensitive processes on different remote servers? Processes that must run asynchronously and sequentially while accessing different common resources? And how do you do it quickly and make it robust? I will show how we used Django, SQS and Boto to create a distributed and decoupled solution that let users invoke services asynchronously, which is secure, scalable and ensures that processes using common resources ran in sequence.How do you let untrained people in your company run sensitive processes on different remote servers? Processes that must run asynchronously and sequentially while accessing different common resources? And how do you do it quickly and make it robust?After two years working on our e-commerce website and its ecosystem, we ended up having most of our teams needing to run different processes on our servers. Some of those processes accessed *common resources* so we had to ensure that they ran *sequentially* and also *asynchronously*, since users could not wait for them to be finished. At the same time, some sort of *authentication* and *authorization* was required, but we did *not* like the idea of *granting users access to our servers*.I will show how we used Django, SQS and Boto to create a distributed and decoupled solution that let users invoke services asynchronously, which is secure, scalable and ensures that processes using common resources ran in sequence.I will also present the different alternatives that we considered and the process that led us to choose the solution we finally implemented.Our *AWS* infrastructure included:* *EC2** *S3** *RDS** *SQS*Julio Vicente Trigo Guijarro2015-11-22T13:10:00+010013:1000:401G-0.4 (Básico)Introducción a los DSL (Domain Specific Languages) en PythonLos lenguajes específicos de dominio son lenguajes especializados, simplificados y limitados a la resolución de problemas de un dominio concreto. Usados correctamente mejoran la productividad de los desarrolladores, así como la comunicación con los usuarios o expertos de otros dominios, entre otras ventajas. En esta charla introductoria veremos qué son, para qué sirven, en qué casos usarlos y algunas librerías de Python que nos facilitarán crear nuestros propios lenguajes específicos de dominio.Juan Ignacio Rodríguez de León2015-11-22T15:00:00+010015:0000:401G-0.4 (Básico)Life of a Python programSometimes is good to know what's happening under the hood, this talk will explain how CPython works internally since we type `python myprogram.py` until our code is finally executedexplaining the process that CPython does to run our programs.The goal of this talk is explain people how to explore the codeof the interpreter itself using some common tools and let regularPython developers that aren't used to work with C lose the fearabout looking under the hood.Francisco Fernández Castaño2015-11-22T15:40:00+010015:4000:401G-0.4 (Básico)Python in the SkyCase study of Immfly’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:- How does it work?- What kind of services do we offer to the end-user?- How do we manage connectivity?- What kind of hardware do we use?- How do we orchestrate the operations?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 those specific perks of working with airplanes.David Arcos2015-11-22T11:20:00+010011:2000:30HallCoffe Break2015-11-22T13:50:00+010013:5001:10HallLunch2015-11-22T16:20:00+010016:2000:30HallCoffe Break