PyConES 2017Complejo Cultural San Francisco, Cáceres2017-09-222017-09-24300:302017-09-22T15:00:00+010015:0002:30Sala I5Vigilante de WallapopConstruye una simple web para ser ¡el más rápido en Wallapop! Programaremos una aplicación sencilla en Flask para automatizar búsquedas. Cuando un nuevo artículo se ponga a la venta, con los filtros que nos interesan, nos llegará de forma automática un email con toda la información. E incluso con ¡un botón para comprarlo! Ahora ya sabes porque no encuentras buenas ofertas. ¡¡¡Las pillé yo!!!En el taller se trabajará con Flask y una serie de plugins que nos ayudarán en el proceso.- Flask.- Flask-SQLAlchemy.- Flask-WTF.- Flask-Migrate.- Flask-Script.- Flask-Mail- SQLite.- Urllib3.Nuestro objetivo será lograr un sencillo Login con unas funcionalidades básicas como toma de contacto:- Login.- Realizar una búsqueda en la API Rest de Wallapop.- Guardar contenido en SQLite.- Tareas automatizadas.- Envío de un email.- Creación de formularios y validaciones.- Renderizado de Templates.Para seguir el taller se necesitará:- Conocimientos en HTML5, CSS3 y Bootstrap3.- Algo de Jinja2.- Virtualenv.- Python 3.4 o superior.- SQLite.- Un editor de texto.- Una conexión a internet.- Ganas de aprender y preguntar.2017-09-22T18:00:00+010018:0002:00Sala I5Crea tu web con django CMSDjango CMS nace con el lema: “A CMS built for developers and content editors” es considerado por muchos como el gestor de contenidos referencia para Django. En este taller aprenderemos desde la instalación y los conceptos más básicos del CMS hasta los más profundos como son la extensión del toolbar, integración de Third party apps o extender el modelo de página para ello nos crearemos nuestra propia web corporativa o freelancer formada por una landing page, blog y formulario de contacto.# Descripción**Django CMS** es considerado por muchos como el gestor de contenidos referencia para **Django**, recientemente se ha liberado su versión 3.4 la primera Long Term Support (LTS) release lo que significa que continuará con actualizaciones críticas y de seguridad durante 24 meses.Nace con el lema:“A CMS built for developers and content editors”y es que a lo amigable e intuitivo que resulta la edición de contenidos mediante su interfaz drag and drop hay que sumarle lo fácil que resulta extender las funcionalidades de este gestor de contenidos así como la rapidez de integración de aplicaciones de Django ya existentes.# ObjetivoEn este taller aprenderemos desde la instalación y los conceptos más básicos del CMS hasta los más profundos como son la extensión del toolbar, integración de Third party apps o extender el modelo de página para ello nos crearemos nuestra propia web corporativa o freelancer formada por una landing page, blog y formulario de contacto.# ÍndiceA lo largo del taller intentaremos hacer un repaso de las principales características del CMS, llegaremos hasta donde nos de tiempo dependiendo del ritmo:* Instalación con djangocms-installer* Páginas: * Estructura y contenido * Borrador & público * Internacionalización* Permisos* Templates & Placeholders* Menús* Plugins* Third party aplications & Apphooks: Integración de aplicaciones Django en Django-CMS* Páginas tipo para facilitar a los editores de contenido la creación de páginas a partir de tipos predefinidos.* Extender el modelo de Página: * Page (campos con los mismos valores en todos los idiomas) * Title (campos con valores distintos por idioma)* Extender el Toolbar* Extender el menú de navegación del Django-CMS* Content creation wizard* Cache en Django-CMS### Conocimientos previos:* Conocimientos básicos de HTML, CSS.* Se presupone conocimientos básicos de django para el seguimiento del taller aunque se intentará que no suponga un impedimento.### Se recomienda traer instalado:* Para facilitar el seguimiento del taller sería ideal contar una versión de linux en tú portátil (puede ser virtualizada con virtualbox o similar)* Virtualenv & virtualenvwrapper: * https://virtualenv.pypa.io/en/stable/ * https://virtualenvwrapper.readthedocs.io/en/latest/* Python 2.7 o 3.4 o superior.* Editor de textos o IDE con el que te sientas cómodo.2017-09-22T15:00:00+010015:0002:30Sala Norba¿Qué tiene en común Donald Trump con los tacones en las oficinas de Reino Unido?Es tan sólo una de las muchas preguntas que podemos responder mediante el análisis de datos aumentados con información geográfica.En este taller analizaremos algunos conjuntos de datos con información geográfica para intentar responder a este tipo de preguntas con unas pocas líneas de Python.Python se está posicionando claramente como uno de los mejores lenguajes para el ámbito del Data Science. Con [Jupyper notebook](https://ipython.org/notebook.html) y [pandas](http://pandas.pydata.org/) como base, se ha construido un ecosistema de librerías para el análisis interactivo de datos.En este taller haremos un breve recorrido por las librerías disponibles para el análisis y visualización de datosgeográficos, como ejemplo [PySAL](http://pysal.readthedocs.io/en/latest/), [GeoPandas](http://geopandas.org/) o [CartoFrames](https://github.com/CartoDB/cartoframes).En conjunto, estas herramientas permiten crear preciosos mapas que además transmiten información sobre losdatos que estamos analizando, como por ejemplo este mapa sobre la pobreza en Brooklyn:![Brooklyn poverty](https://camo.githubusercontent.com/42aba604163bcdbfc91e89999611174b4f9be305/68747470733a2f2f657363686261636865722e636172746f2e636f6d2f6170692f76312f6d61702f7374617469632f6e616d65642f636172746f6672616d65735f76657232303137303430365f6c6179657273315f74696d65305f626173656964315f6c6162656c73305f7a6f6f6d302f3830302f3430302e706e673f636f6e6669673d253742253232626173656d61705f75726c2532322533412b2532326874747073253341253246253246636172746f64622d626173656d6170732d253742732537442e676c6f62616c2e73736c2e666173746c792e6e65742532466461726b5f616c6c2532462537427a25374425324625374278253744253246253742792537442e706e672532322532432b253232636172746f6373735f302532322533412b2532322532336c617965722535422532376d61706e696b25334125334167656f6d657472795f74797065253237253344312535442b2537422b2b6d61726b65722d77696474682533412b31302533422b6d61726b65722d66696c6c2533412b72616d70253238253542706f76657274795f7065725f706f702535442532432b636172746f636f6c6f7225323853756e7365742532392532432b7175616e74696c6573253238372532392532392533422b6d61726b65722d66696c6c2d6f7061636974792533412b312533422b6d61726b65722d616c6c6f772d6f7665726c61702533412b747275652533422b6d61726b65722d6c696e652d77696474682533412b302e352533422b6d61726b65722d6c696e652d636f6c6f722533412b2532333030302533422b6d61726b65722d6c696e652d6f7061636974792533412b312533422537442b2532336c617965722535422532376d61706e696b25334125334167656f6d657472795f74797065253237253344322535442b2537422b2b6c696e652d77696474682533412b312e352533422b6c696e652d636f6c6f722533412b72616d70253238253542706f76657274795f7065725f706f702535442532432b636172746f636f6c6f7225323853756e7365742532392532432b7175616e74696c6573253238372532392532392533422537442b2532336c617965722535422532376d61706e696b25334125334167656f6d657472795f74797065253237253344332535442b2537422b2b706f6c79676f6e2d66696c6c2533412b72616d70253238253542706f76657274795f7065725f706f702535442532432b636172746f636f6c6f7225323853756e7365742532392532432b7175616e74696c6573253238372532392532392533422b706f6c79676f6e2d6f7061636974792533412b302e392533422b706f6c79676f6e2d67616d6d612533412b302e352533422b6c696e652d636f6c6f722533412b2532334646462533422b6c696e652d77696474682533412b302e352533422b6c696e652d6f7061636974792533412b302e32352533422b6c696e652d636f6d702d6f702533412b686172642d6c696768742533422537442b2532322532432b25323273716c5f302532322533412b25323253454c4543542b2532412b46524f4d2b62726f6f6b6c796e5f706f766572747925323225374426616e74695f63616368653d302e3133393639363830393538353033303036)Deberías traer de casa:- Una instalación funcional de Python y [Jupyper notebook](https://ipython.org/notebook.html).También puedes traer:- Una cuenta gratuita de [CARTO](https://carto.com). Si no te apetece crear una cuenta, ¡no te preocupes! Proporcionaremos cuentas temporales en el taller.- Conjuntos de datos con información geográfica que quieras analizarDurante el taller:- Instalaremos las librerías a utilizar- Desarrollaremos un ejemplo para intentar responder a la pregunta que da título al taller- Intentaremos echar una mano a analizar los conjuntos de datos que traigas de casa2017-09-22T18:00:00+010018:0002:00Sala NorbaCodelab: ¿Podemos predecir quién muere en Juego de Tronos con TensorFlow?En este taller daremos un enfoque práctico al Deep Learning yexploraremos TensorFlow, un framework originalmente liberado porGoogle para construir modelos computacionales sobre grafos.Daremos un ejemplo, sobre el conjunto de datos de Juego de Tronosrecopilado originalmente por la Universidad Politécnica de Munich,para, con los pequeños datos sociodemográficos que tenemos de lospersonajes, decidir cuánta vida puede quedarles a manos del escritor.Este taller pretende de forma amena explicar conceptos de DeepLearning con TensorFlow y el modelo de red wide+deep.Para ello utilizaremos varias herramientas de visualización, como elTensorFlow Playground y TensorBoard.Pasaremos por conceptos como la no-linealidad, optimizadores y otroshiperparámetros relativos a la arquitectura de redes neuronales.Además, a partir del código del codelab permitiremos a los asistentesexperimentar con diferentes modelos de red e hiperparámetros de formapráctica.Para el taller sería fantástico traerse TensorFlow instalado con pip(para ahorrar tiempo).Aprovecharemos el taller también para generar un poco deinteractividad entre los asistentes y resolver dudas relativas a estosconceptos.2017-09-22T15:00:00+010015:0002:30Sala NovellParallel and non parallel stuff¡Oh no: otro tutorial de programación paralela y asíncrona en Python! ¿Cúando dejarán de insistir en el mismo asunto una y otra vez? Si alguna vez te has preguntado esto, este NO es tu taller. En cambio, si quieres volver a oir lo mismo de siempre acerca de hilos, procesos, el GIL, asyncio y demás amigos...¡Este es el taller de tus sueños! En este tutorial haremos un viaje através de todos estos conceptos desde la base, entendiendo en detalle los conceptos, los problemas y las soluciones.El objetivo de este taller es realizar un viaje a través del mundo de la programación paralela y asíncrona en Python. El foco fundamental será en entender lo máximo posible los conceptos, los problemas y las soluciones más que las librerías en si. Comenzaremos hablando de programación paralela brevemente, explicando las diferencias entre las distintas opciones disponibles. Aprenderemos a implementar programas multi-proceso y multi-hilo con Python y analizaremos juntos las diferencias. Esto nos llevará naturalmente a hablar sobre el GIL: qué es, donde está definido, que podemos hacer al respecto....etc. Tras repasar el concepto de generador y haciendo un uso constructivista de los conocimientos adquiridos, implementaremos nuestra pequeña versión de asyncio, entendiendo las ideas fundamentales detrás del paradigma de la programación asíncrona. Finalmente analizaremos las diferencias entre todas las ideas adquiridas y hablaremos sobre distintos casos de uso.Conocimientos recomendados para asistir al taller:* Conocimientos básicos de Python.2017-09-22T18:00:00+010018:0002:00Sala NovellAngular, Ionic y Django: amigos con derecho a roceCada día son más usuales tener apps y webs más independientes e inteligentes así como teniendo un backend robusto.¿Qué tal si construimos un backend robusto en Django y hacemos una web angular y, a su vez, reutilizamos GRAN parte del código y estilos?Esta es la idea de standlone UI (o también llamadas UI inteligentes), donde una gran lógica reside en ella y, otra, en el backend. YEn la charla veremos cómo desarrollar una mini app en Django, exponer sus servicios REST así como su interconexión con Angular e Ionic.También cubriremos la arquitectura básica así como los tips que hay que tener siempre en cuenta para no equivocarnos en los primeros pasos.Veremos el stack tecnológico necesario así como los primeros pasos necesarios para, sin miedo, ser capaces de hacerlo por nuestra cuenta.La idea principal será salir de la charla con las nociones claras y los fundamentos así como las herramientas para poder construir nuestra web y app.2017-09-22T18:00:00+010018:0002:00Salon de GradosBloomberg - Como aumentar mis posibilidades de conseguir un trabajo en compañías de primer nivelIngenieros de Bloomberg te mostrarán que tipos de trabajos ofrece la industria nivel internacional, te ayudarán a preparar tu currículum y resolverán un problema de entrevista real en Python. Regístrate [aqui](http://tinyurl.com/ybr3cq9n)Ingenieros de Bloomberg te mostrarán que tipos de trabajos ofrece la industria nivel internacional, te ayudarán a preparar tu currículum y resolverán un problema de entrevista real en Python. Regístrate [aqui](http://tinyurl.com/ybr3cq9n)Juan AragónDavid Saltares2017-09-23T09:00:00+010009:0000:30Sala Bloomberg**Apertura** Presentación <a href="https://hackathon.kernel-analytics.com/" style="color: #fff; text-decoration: underline;">PythonHack 2017</a>2017-09-23T10:30:00+010010:3000:30Sala BloombergHigh-impact refactors while keeping the lights onReemplazar, cambiar o incluso evolucionar una plataforma de software con años de desarrollo ya aplicados nunca es tarea fácil, pero existen técnicas y patrones de diseño para facilitar evoluciones sin modificaciones significativas de los flujos de negocio actuales. En esta charla trataremos patrones como parallel change, event bus, o event sourcing, y principios como el de hacer software simple, el desarrollo evolutivo y la automatización.Reemplazar, cambiar o incluso evolucionar una plataforma de software con años de desarrollo ya aplicados nunca es tarea fácil. A su vez, el software tiende a crecer y cambiar como si de un ser vivo se tratara, haciendo cada desarrollo un poco más complejo que el anterior, forzando a llevar documentaciones, wikis, seguir procesos, y ralentizando nuevos proyectos.En esta charla hablaremos de cómo en [Ticketea](https://www.ticketea.com/), que lleva 7 años funcionando con éxito, estamos acometiendo importantes cambios internos, tanto reescrituras de componentes existentes como nuevas piezas intentando modificar lo menos posible los flujos de negocio actuales, aplicando patrones de diseño como parallel change, event bus, o event sourcing. Pondremos como ejemplo el desarrollo de nuestra nueva API de compras (usando Python 3), la cual escucha determinados sucesos o eventos que suceden en la plataforma principal (construida con PHP y Python 2), gestiona todo el flujo de compra y emite de vuelta los datos para reincorporarlos a dicha plataforma, permitiendo pensar un sistema diferente, tiene las mismas restricciones.También estamos intentando implantar como objetivos o metas para todo proyecto las siguientes ideas y principios:- Hacer software simple- Iterar, iterar, iterar- Paridad Desarrollo-Producción- Automatización de operaciones (Docker y AWS)2017-09-23T11:00:00+010011:0000:30Sala BloombergLogueando como un pro: porque llenar un script con prints sigue siendo cutreA menudo necesitamos un cierto nivel de comunicación desde nuestros scripts y el candidato preferido por todos es `print()` para sacar mensajes en el intérprete... ¡hasta que conozcas `logging`!Vamos a conocer el módulo `logging` de la biblioteca estándar: ¿Para qué es útil? ¿Cuáles son sus componentes principales? ¿Cómo puedo aprovecharlo? Y veremos muchos ejemplos: entre ellos, entenderemos por fin el `LOGGING` de los ajustes de Django.# ObjetivoEsta charla pretende ser una primera toma de contacto y presentación del módulo `logging` de la biblioteca estándar apta para principiantes que nunca hayan oído hablar de él y usuarios intermedios que por pereza o desconocimiento de sus posibilidades siguen usando prints -lo que no significa que esto se tenga que convertir en una saga personal de venganza contra `print`-# Descripción detalladaSe dará una visión de su utilidad y versatilidad por encima del uso de sentencias `print()`, se presentarán sus componentes básicos y cómo conjugarlos en la configuración y se acompañará de ejemplos de uso, finalizando con el uso de logging en Django.# Estructura de la charla1. Módulo logging: - ¿Para qué es útil? Permitiendo a nuestro script comunicarse y crear registros. - ¿Cuáles son sus componentes principales? Niveles, Manejadores, Formatos y Filtros. - ¿Cómo puedo aprovecharlo? Ejemplos de uso: niveles de información, diferentes destinos para cada mensaje, formatos específicos para cada necesidad. - Configuraciones: Tipos de configuración disponibles una vez conocemos las bases.2. Usando logging en Django. - El ajuste LOGGING de Django, ese gran desconocido. - Configuración. - Ejemplos de uso: Modificar logging de apps de terceros, Personalizar formatos de salida, Integrar manejadores de terceros.2017-09-23T12:00:00+010012:0000:30Sala BloombergFactories, what the hell?¿Cuantas veces has tenido la base de datos de tu proyecto vacía y has necesitado poblarla para desarrollar?... 1... 2... 3... 4..... Seguro que miles de veces y esto es un problema porque necesitas poder poblar tu bd para así empezar a desarrollar cuanto antes. El objetivo de la charla será mostrar como poblar de forma genérica rápidamente nuestra base de datos para así conseguir replicar esto en todas las máquinas que necesitemos en menos de 1 minuto.¿Cuantas veces has tenido la base de datos de tu proyecto vacía y has necesitado poblarla para desarrollar?... 1... 2... 3... 4.....Si te dedicas al desarrollo seguro que esto te ha ocurrido miles de veces y esto es un **problema** porque necesitas conseguir **poblar tu base de datos** para así empezar a desarrollar cuanto antes. Siempre tenemos opciones rudimentarias para realizar esto, pero estás opciones suelen ser bastante tediosas y lentas. El **objetivo** de la charla será mostrar como **poblar de forma genérica rápidamente nuestra base de datos** para así poder replicar esto en todas las máquinas que necesitemos en menos de 1 minuto y dotar a todo nuestro equipo de una base de datos con la que ponerse manos a la obra.### ¿Qué veremos en esta charla?1. Que son las factorías.2. Ejemplo de creación de factorías sobre un caso real para solucionar este problema.3. Generalización de la creación de factorías con un script.Nos basaremos en un ejemplo realizado con Django para explicarlo pero esto podría ser extrapolado a otras tecnologías.2017-09-23T12:30:00+010012:3000:30Sala Bloomberg¿Dónde está mi ñ?Se hará un repaso histórico sobre como se ha ido afrontando el problema de la representación de caracteres por de medios electrónicos a lo largo de la historia desde el telégrafo hasta el estándar actual. Seguidamente describiremos como se manejaba en Python 2 y qué cambios se produjeron con la llegada de Python 3.La representación o codificación de caracteres para su transmisión y almacenamiento ha sido un reto al que se han enfrentado los ingenieros desde hace casi doscientos años. A lo largo del tiempo se ha ido afrontando en función de las limitaciones técnicas, económicas y políticas de la época.Con la generalización de las informática gracias a los ordenadores personales y a de las comunicaciones gracias a Internet, la interoperabilidad y la necesidad de dar cabida a más lenguajes y sensibilidades se hizo patente. La creación del consorcio Unicode supuso un paso hacia la solución definitiva.Los lenguajes de programación tuvieron que adaptarse. En el caso de Python, el soporte Unicode se introdujo en Python 2. Con Python 3 se rehizo la implementación provocando un gran problema de incompatibilidad. En la actualidad, con Python 3 como versión estándar, el binomio Unicode/UTF-8 se ha convertido en el estándar pero aún así, a veces, el infame `UnicodeError` vuelve a aparecer.2017-09-23T13:00:00+010013:0000:30Sala BloombergPatrones de diseño: Python boloñesaCómo pasar de escribir código espaghetti a código claro, explícito reutilizable y mantenible, echando un vistazo a algunos patrones de diseño para sacar buen partido de las características más pythónicas del lenguaje.Patrones de diseño: Python boloñesa-----------------------------------¿A quién no le han hecho en una entre vista la famosa pregunta: "qué patrones de diseño conoces"? En principio pareciera que con una mera enumeración podríamos tener una respuesta muy atractiva para un entrevistador, pero... ¿Tienen sentido todos los patrones de diseño independientemente del lenguaje?Dando un repaso al algunos de los patrones de diseño más conocidos y utilizados en Python y en otros lenguajes, veremos cómo encajan en el marco Python, con ejemplos (y jocosos y sorprendentes contraejemplos) que ilustren por qué a veces es una buena idea (o mala) conceptualizar nuestra solución software siguiendo las pautas de algún patrón de diseño.Algunos de los patrones que vamos a revisar son los archiconocidos Factory, en alguna de sus variantes, Decorador, Pub/Sub, Delegation, Chain...Y como postre...*¿Cumplirá nuestro plato de pasta con el Zen de Python?*2017-09-23T15:00:00+010015:0000:30Sala BloombergAnsibleAnsible es un sistema de gestión de la configuración del software desarrollado en python que permite automatizar la configuración e instalación de software en ordenadores. Con este sistema es posible, a traves de ssh, instalar, configurar, cambiar ficheros, reiniciar servicios. Y al estar desarrollado en python permite a los programadores extenderlo y embeberlo con relativa facilidad.Ansible=======Ansible es un sistema de gestión de la configuración del software desarrollado en python que permite automatizar la configuración e instalación de software en ordenadores. Esta charla pretende introducir a un amante de python en el mundo de la gestión de sus servidores mas allá de los python/bash scripts y además enseñarle a jugar con ello desde python. Para ello esta charla pretende abordar los siguientes temas:* Introducción a Ansible* ¿Que es un inventory?* ¿Que es un playbook?* ¿Como se gestionan los templates de ficheros? ¿variables?* ¿Como se gestionan múltiples servidores?* ¿Cómo y cuales son los recursos que provee ansible? * Instalar software * Modificar ficheros * Reiniciar servicios * Gestionar información del servidor* Como se puede jugar con python + ansible * Extender ansible * Usar ansible en un script2017-09-23T15:30:00+010015:3000:30Sala BloombergDiccionarios, una mirada a fondoAunque muchas veces no los veamos o no seamos conscientes de ellos, los diccionarios están presentes en cualquier código Python que desarrollemos. Están por todas partes, donde menos los esperas, y no les prestamos toda la atención que merecen. En esta charla veremos cómo funcionan y cómo podemos sacarles el máximo partido.Los diccionarios son parte intrínseca de todos los objetos de Python, y cuanto mejor los conozcamos, más beneficios podremos sacarles. Empezaremos viendo el código C de Python 3.6 donde se implementan y explicaremos las principales razones que justifican su elevado rendimiento. Este código ha sido optimizado a lo largo de muchos años porque suponía la mejora en la ejecución de cualquier programa.En la segunda parte de la charla, veremos algunos trucos y consejos que serán útiles tanto para los que empiezan como para los que ya lleven algún tiempo desarrollando.2017-09-23T16:30:00+010016:3000:30Sala BloombergRetos de Programación y Estructuras de datos de Python¿Os gustan los concursos de programación como Google Jam o el Advent Of Code?Enfrentarse a estos retos es una buena manera de poner a punto nuestro "músculo developer" y aprender a usar estructuras de datos y utilidades de la librería estándar de Python que nos ayudarán a escribir código mucho más conciso y expresivoEn esta charla resolveremos en vivo varios de estos retos intentando encontrar la solución más pythónica y expresiva: tuplas, collections, itertools... serán nuestros aliadosEn esta charla usarlos la resolución de varios retos de programación para ilustrar cómo las herramientas de Python nos ayudan a escribir código correcto, conciso y expresivo:- asserts, para verificar que el código se comporta como esperamos- tuplas, namedtuples, objetos, para representar los datos de forma compacta y manejable- iteradores, comprensiones, zip, enumerate, para visitar o manipular colecciones de datos- collections: Counter, defaultdict, deque, para guardar los datos de forma más inteligente- itertools: cycle, takewhile- algoritmos BFS- regex, para analizar cadenas2017-09-23T17:00:00+010017:0000:30Sala BloombergMetaclases: exactamente qué y (sobre todo) por quéTarde o temprano, si llevamos el tiempo suficiente en el mundo de Python es inevitable que oigamos hablar de _metaclases_. Y, también de forma inevitable, parece que se trata de algo imposible de llegar a comprender. ¿Que són las metaclases? ¿De verdad existen? Y aún más importante: curiosidades aparte, ¿sirven realmente para algo? ¿Tienen aplicaciones prácticas para alguien con un nivel normal de Python, y que no involucren invocar a varios Primigeneos en el proceso?El objetivo de estar charla es abordar un problema que parece ser desafortunadamente común entre el material disponible sobre las metaclases: por más que nos lo expliquen nos sigue sin quedar claro qué son las metaclases… o lo olvidamos a los diez minutos. Los ejemplos que se usan para ilustrar esa cosa tan arcana son casi inevitablemente crípticos, solucionando de forma compleja problemas demasiado rebuscados y que no nos hemos encontrado jamás en nuestro día a día. ¿Tienen realmente alguna utilidad práctica, o son sólo una excusa usada por ponentes para parecer [r/iamverysmart](https://www.reddit.com/r/iamverysmart/top/?sort=top&t=all)? ¿Por qué deberían importarme a mí, con mi nivel medio de Python? Lo que vamos a hacer en esta charla es empezar describiendo un problema: queremos implementar el mismo comportamiento (por ejemplo, logging) en todos los métodos de mi clase. Para ello tenemos varias opciones, en creciente orden de complejidad: (a) copiar y pegar la misma línea de código en todos los métodos, (b) usar un decorador en cada método y (c) usar un decorador de clase. Pero ninguna solución es ideal, y la falta de elegancia provoca lamentos y lágrimas. Es ante un problema así cuando las metaclases tienen una función, y agradeceremos que se encuentren en nuestro repertorio de habilidades de Python.Entendiendo por qué nos hacen falta, procedereremos a explicar cómo crear una: primero repasando brevemente la función de `__new__()` e `__init__()` para clases normales, y a continuación mostrando cómo hacer lo mismo con las metaclases. Ilustraremos esto con varios ejemplos, usando metaclases para añadir funcionalidad de auto-logging o compilación just-in-time, como hace Numba, a nuestro código. Por último, y a modo de curiosidad, continuaremos hacia mayores niveles de abstracción, aprendiendo qué son los _hooks_ de metaclases y para qué son útiles los ficheros `.pth`.2017-09-23T17:30:00+010017:3000:30Sala BloombergHerramienta para lograr ser un experto en PythonHemos realizado una recopilación de una gran cantidad de "idioms" e implementado una herramienta web que analiza los proyectos de un usuario, indica su nivel de Pythonista y muestra algunos recursos para pueder continuar aprendiendo y mejorando sus resultados.Los lenguajes de programación tienden a seguir unos convenios, o unas guías de estilo, que en el caso de Python es PEP8 y se han diseñado herramientas para comprobarlo y evaluarlo (Pylint, pep8, ...)Por otro lado, cada lenguaje de programación tiene unos determinados "idioms", es decir, unas determinadas palabras reservadas y expresiones que son propias de cada lenguaje.Aprender en profundidad un lenguaje de programación, y dichos "idioms", puede llevar meses o incluso años. Dicho aprendizaje se adquiere con la práctica, colaborando con expertos en el ámbito y documentándose a partir de libros y otros recursos.Existen muchos programadores, que aun teniendo experiencia, utilizan Python como si estuvieran programando en otro lenguaje, es decir, sin la utilización de los "idioms" que se hacen necesarios. Por todo ello, hemos creado una herramienta que analiza los proyectos de los usuarios, detecta la utilización de determinados "idioms", y de este modo, muestra el nivel de Pythonista y proporciona recursos que ayudan a perfeccionar los conocimientos en Python.2017-09-23T18:00:00+010018:0001:00Sala BloombergCharlas Rapidas2017-09-23T10:30:00+010010:3000:30Sala SkyscannerCity attractiveness seen through TwitterHow long would information originating from a given city require to reach any other city if were to pass from person to person only through face to face conversations? Or, what is the likelihood that information reaches a certain distance away after a given time period. We introduce a method to assess the attractiveness of cities using geolocated tweets as a proxy for human mobility.Introduction----------------Research on mobility has traditionally relied on surveys and economic datasets, generally composed of small samples with a low spatio-temporal resolution. However, with the increasing availability of large databases generated by the use of geolocated information and communication technologies (ICT) devices such as mobile phones, credit or transport cards, the situation is now changing. This is the reason why we focus here on geolocated tweets, which have already proven to be an useful tool to analyse world wide mobility and provide the ideal framework for our analysis. We use these geolocated data in two different contexts, relevant in both scientific and economic worlds.Human diffusion and city influence----------------------------------------------The study of competition and interactions between cities has a long history in fields such as Geography, Spatial Economics and Urbanism. This research has traditionally taken as basis information on finance exchanges, sharing of firm headquarters, number of passengers transported by air or tons of cargo dispatched from one city to another.We have used Twitter data to track users and classify cities according to the mobility patterns of their visitors. Top cities as mobility sources or attraction points are identified as central places at a global scale for cultural and information interchanges. More specifically and assuming data reliability, we consider both the users’ displacements after visiting each city and the origins of each user within each city. Differences in the mobility for local residents and external visitors are taken into account, in such a way that cities can be ranked according to the extension covered by the diffusion of visitors and residents, taken both together and separately, and by the attractiveness they exhibit towards visitors.Finally, we also consider the interaction between cities, forming a network that provide a framework to study urban communities and the role cities play within their own community (regional) versus a global perspective.Touristic site attractiveness------------------------------------Traveling is getting more accessible in the present era of progressive globalization. Over the last fifty years, geographers and economists have attempted to understand the contribution of tourism to global and regional economy and to assess the impact of tourism on local people.We propose a ranking of touristic sites worldwide based on their attractiveness measured with geolocated data as a proxy for human mobility. Instead of studying the most visited places, the focus of the analysis was set on the sites attracting visitors from different parts of the world.In particular, we propose three rankings of the touristic sites’ attractiveness based on the spatial distribution of the visitors’ place of residence. Then, we study the touristic site’s visiting figures by country of residence. And finally, we focus on users detected in more than one site and explore the relationships between the 20 touristic sites by building a network of undirected trips between them.Discussion---------------We have introduced a new method to measure the influence of cities based on the Twitter user displacements as proxies for the mobility flows. The method, despite some possible biases due to the population using online social media, allows for a direct measurement of a place influence in the world. We proposed three types of rankings capturing different perspectives: rankings based on “city-to-world” and “world-to-city” interactions and rankings based on “city-to-city” interaction.Using a similar approach, we have analysed the influence and the attractiveness of a touristic site. Many different rankings of the most visited touristic sites exist, they are often based on the number of visitors, which does not tell us much about their attractiveness at a global scale.In summary, we have illustrated the power of geolocated data to provide world wide information regarding mobility.Bibliography-----------------Lenormand, M; Gonçalves, B; Tugores, A; Ramasco, JJ. Human diffusion and city influence. Journal of the Royal Society Interface 12, 20150473 (2015)Bassolas, A; Lenormand, M; Tugores, A; Goncalves, B; Ramasco, JJEPJ Data Science 5, 12 (2016)2017-09-23T11:00:00+010011:0000:30Sala SkyscannerMachine Learning for developersSiempre has escuchado el termino Machine learning y pones caras raras? En esta sesión explicaremos de una manera muy sencilla los principales conceptos. También veremos cómo Azure Machine Learning Studio nos ayudará a crear nuestros experimentos de una manera fácil y sencilla. Además veremos cómo Python nos puede echar una mano a la hora de ejecutar algunos scripts que puedan ser necesarios para pre-procesar nuestros datos.Siempre has escuchado el termino Machine learning y pones caras raras? En esta sesión explicaremos de una manera muy sencilla los principales conceptos. También veremos cómo Azure Machine Learning Studio nos ayudará a crear nuestros experimentos de una manera fácil y sencilla. Además veremos cómo Python nos puede echar una mano a la hora de ejecutar algunos scripts que puedan ser necesarios para pre-procesar nuestros datos.Introducción a Machine Learning ¿Qué es?• Principales conceptos:• Aprendizaje supervisado y no supervisado• Aprendizaje supervisado• Clasificación• Regresión• Detección de anomalías.• Algoritmos de aprendizaje automático• Tipos de algoritmos• ¿Cómo puedo elegir el algoritmo adecuado?• Python tools visual studio (¡Soporte para Python en VS!)• Probar nuestros scripts de python• Azure Machine Learning Studio• Obtener los datos• Preprocesar los datos• Definir las características• Elegir y aplicar un algoritmos de aprendizaje• Probar nuestro experimento y publicarlo• Ejemplos adicionales de experimentosPor último, veremos una aplicación desarrollada en Flask que realizará el proceso de cuantización de imágenes haciendo uso de los Web services creados con Azure Machine Learning.2017-09-23T12:00:00+010012:0000:30Sala SkyscannerMi coche ya es mayor de edad, creo que puede conducir él solito.Siempre que oigo hablar de coches autónomos me cuentan cosas complicadas como fusión de sensores, planificación, localización en mapas... ¿no sería más fácil que yo echara a conducir y que aprendiera el coche solito lo que tiene que hacer, unicamente viéndome? Como el típico adolescente de las películas al que su padre le va enseñando lo que tiene que hacer y, lo más importante, lo que no. Usando Keras, Tensorflow y Pandas vamos a enseñar a nuestro jovencísimo padawan a conducir sin estrellarse.El contenido de esta charla se enfocará en todos los pasos necesarios para hacer que un coche sea capaz de aprender nuestro estilo de conducción en un simulador.El esquema aproximado de la charla es el siguiente (aunque puede haber ligeros cambios):1. Haremos una introducción a las 2 tendencias existentes en los coches autónomos: la perspectiva de la robótica y la perspectiva de la IA.2. Tras esa introduccion entraremos de lleno en el problema viendo como es el simulador que vamos a utilizar, los datos que genera y como es la problemática que queremos afrontar.3. Pasaremos a describir como usaremos Pandas y Matplotlib para hacer una exploración de los datos generados.4. Dado que los datos generados no van a ser suficientes ni vamos a tenerlos distribuidos como queremos, aplicaremos técnicas de aumento de datos con Numpy y OpenCV para solucionar esto.5. Una vez que ya tenemos todo a punto, es el momento de pasar a Keras (con el Backend de Tensorflow) para crear nuestro modelo de Deep Learning.6. ¿Como testeamos el resultado? Veremos que a veces las métricas no lo son todo y es el momento de probar otras cosas.7. Por último aprenderemos la importancia de la calidad de los datos y se expondrán algunas de las problemáticas que pueden surgir a lo largo del proyecto.2017-09-23T12:30:00+010012:3000:30Sala SkyscannerModelo de Redes Neuronales Recurrentes para el Análisis y Predicción de Series TemporalesEn está propuesta se introduce el uso de Redes Neuronales de tipo LSTM como nuevo enfoque para tratar el problema del análisis y predicción de series temporales. Como casos de estudio aplicamos esta metodología al estudio del consumo eléctrico en la población de Sóller (Mallorca) y en el estudio del consumo eléctrico en la isla de Tenerife. El objetivo es mostrar cómo, con este enfoque se puede predecir el consumo eléctrico de las poblaciones con un grado de precisión que ronda el 93%.<h1 style="text-align:center"> Modelo de Redes Neuronales Recurrentes para el Análisis y Predicción de Series Temporales.</h1><h1 style="text-align:center"> J. M. Tuduri, G. Rul·lan and J.C. González-Avella </h1><h1 style="text-align:center">APSL. </h1>Debido a la versatilidad y a la capacidad adaptativa que presentan las Redes Neuronales artificiales (RNs), en los últimos años su uso en la automatización para la resolución de distintas tareas tales como las de clasificación y predicción entre otras, han experimentado un rápido crecimiento en distintos campos de conocimiento, hasta el punto de incorporarlas como herramienta indispensable en distintos contextos para la toma de decisión a tiempo real, como por ejemplo, en el uso de las RNs en coches autónomos. Este auge del uso de las RNs es debido en parte a que recientemente se han desarrollado distintas herramientas computacionales que permiten que su diseño e implementación sea bastante fácil sin reducir su eficiencia.Dentro de éste contexto, ** *en está propuesta se introduce el uso de RNs como nuevo enfoque para tratar el problema del análisis y predicción de series temporales* **. En contraste con las técnicas tradicionales usadas para este fin, como los son los modelos de predicción auto-regresivos, entre otros; este enfoque no sólo incorpora como parámetro de análisis los datos de la evolución de su propia historia, sino que incluye también como parámetro de entrada para el análisis de la serie, ** *el efecto de agentes o variables externas que tienen influencia en el comportamiento de la serie en estudio* **. Estas variables externas y sus efectos muchas veces no son consideradas en métodos tradicionales debido a la dificultad para incorporarlas al análisis. En particular, ** *proponemos el uso de un tipo de red neuronal recurrente, conocida como “Long Short-Term Memory Network” (LSTM)* **. A diferencia de las RNs tradicionales, en lugar poseer neuronas de manera clásica, las redes LSTM tienen como neuronas bloques de memoria que están conectados a través de capas. Estos bloques de memoria facilitan la tarea de recordar valores para largos o cortos períodos de tiempo, por lo tanto, el valor almacenado no es reemplazado (al menos a corto plazo) de forma iterativa en el tiempo, y el término de gradiente no tiende a desaparecer cuando se aplica la retro-propagación (método de aprendizaje) durante el proceso de entrenamiento, tal y como acontece en e uso de las RNs clásicas.Finalmente, como casos de estudio y para demostrar el grado de éxito del método, aplicamos este enfoque al estudio del consumo eléctrico en la población de Sóller, (Mallorca), y el estudio del consumo eléctrico en la isla de Tenerife. El objetivo es mostrar cómo, con esta metodología se puede predecir el consumo eléctrico de las poblaciones con un grado de precisión que ronda el 93%. Para ambos casos, para el entrenamiento de la LSTM hemos introducido como parámetros de entrada la serie histórica de consumo eléctrico para un periodo de tiempo determinado y la serie histórica del valor de la temperatura, como variable externa para el mismo periodo de tiempo.2017-09-23T13:00:00+010013:0000:30Sala SkyscannerUtilizando BreakOut Detection de Twitter para detección de anomalías en series de datosEn esta charla hablaré sobre cómo utilizar en Python la librería "BreakOut Detection" que desarrollo Twitter en el lenguaje R, Esta librería sirve para la detección de anomalías en series de datos respecto al tiempo.La librería "BreakOut Detection" está desarrollada en R por lo que aprendemos a llamarla desde python y a utilizar correctamente los parámetros que condicionan el algoritmo y nos ayudan a tener una correcta detección de anomalías dependiendo del caso que se presente.El BreakOut Detection es muy útil para obtener una detección de anomalías en una serie de datos respecto al tiempo, está fue desarrollada por el equipo de Twitter y funciona correctamente sin necesidad de una gran complejidad o muchos recursos.2017-09-23T15:00:00+010015:0000:30Sala SkyscannerThe AI War Is HereEn esta charla haremos un repaso al estado del arte de la inteligencia artificial aplicada y veremos en práctica los servicios de IA que los grandes proveedores cloud están ofreciendo. Comentaremos casos de uso y ejecutaremos alguna demo en tiempo realHaremos un repaso a la historia de la inteligencia artificial, parándonos en los hitos más relevantes. Analizaremos el porqué de su auge en los últimos tiempos y pondremos orden en las diferentes técnicas o algoritmos que existen dentro de esta disciplina, construiremos un mapa del estado del arte de la inteligencia artificial. Detallaremos que soluciones de inteligencia como servicio ofrecen los principales proveedores cloud comparándolas entre ellas. Haremos una pequeña demo del uso de estas técnicas en la nube, basándonos en tecnologías cloud para terminar proponiendo algunos casos de uso interesantes.2017-09-23T15:30:00+010015:3000:30Sala SkyscannerSistemas Expertos en Python con PyKnowPresentación de PyKnow, una librería para Python con la que es posible escribir nuestros propios sistemas expertos con Python de forma nativa.Presentación de PyKnow, una librería para Python con la que es posible escribir nuestros propios sistemas expertos con Python de forma nativa. Iniciaremos la sesión con una introducción a las bases de la inteligencia artificial, en concreto en el área de los sistemas expertos con un breve repaso histórico, terminando con el estado actual general y particularmente en el ecosistema de Python. En esta sesión presentaré varios ejemplos para ilustrar en que tipo de problemas tiene sentido utilizar un sistema experto y en cuáles no. Veremos código real que se utiliza en producción donde PyKnow permite a los usuarios de la aplicación alterar el comportamiento de la misma sin tocar una sola línea de código. Para finalizar repasaremos el roadmap para próximas versiones y tendremos una ronda de preguntas y respuestas.2017-09-23T16:30:00+010016:3000:30Sala SkyscannerIntroducción a GraphQLEn la actualidad, la mayoría de las APIs que usamos a diario son REST o SOAP. La necesidad de ofrecer productos más complejos que simples aplicaciones CRUD donde creamos, borramos, listamos y modificamos recursos ha empujado a cambiar la forma en la que interactuamos con las APIs. En 2012, Facebook desarrolló GraphQL y lo lanzó al público en 2015 como proyecto open source. GraphQL nace para solucionar la mayoría de los problemas que nos encontramos cuando interactuamos con una API REST.En la actualidad, la mayoría de las APIs que usamos a diario son REST o SOAP. La necesidad de ofrecer productos más complejos que simples aplicaciones CRUD donde creamos, borramos, listamos y modificamos recursos ha empujado a cambiar la forma en la que interactuamos con las APIs. En 2012, Facebook desarrolló GraphQL y lo lanzó al público en 2015 como proyecto open source. GraphQL nace para solucionar la mayoría de los problemas que nos encontramos cuando interactuamos con una API REST. GraphQL permite elegir exactamente la información que necesitamos en una única petición a diferencia de una API REST donde tenemos que hacer varias peticiones. Además de Facebook, GraphQL es usado por GitHub, Pinterest o Shopify.2017-09-23T17:00:00+010017:0000:30Sala SkyscannerTu web está lista, ¿lo sabe Google?Llevas meses peleándote con el código, luchando con bugs… Y por fin terminas el proyecto y lo haces público. Pero no entra nadie...¿Se te olvida algo? ¿Estás seguro de que has hecho todo lo posible en cada fase del desarrollo para que la web se posicione en Google? ¿Has elegido las URLs correctas o los títulos adecuados? ¿Te acordaste de bloquear la indexación de los entornos de prueba?Llevas meses peleándote con el código, luchando con bugs… Y por fin terminas el proyecto y lo haces público. Pero no entra nadie...¿Se te olvida algo? ¿Estás seguro de que has hecho todo lo posible en cada fase del desarrollo para que la web se posicione en Google? ¿Has elegido las URLs correctas o los títulos adecuados? ¿Te acordaste de bloquear la indexación de los entornos de prueba?Esta charla tiene como objetivo que conozcas el checklist SEO que todo drupalero debe tener en cuenta a la hora de empezar un proyecto. Si crees que el SEO es algo que viene después del desarrollo o que no tiene nada que ver contigo… ¡esta es tu sesión!2017-09-23T17:30:00+010017:3000:30Sala SkyscannerAmpliando la documentación de APIs con drf-swagger-customizationPresentación del paquete drf-swagger-customization, una extensión de django-swagger que nos permitirá añadir documentación adicional a la generada de forma automática por el django-swagger.Además, se hablará de la necesidad que llevó a su desarrollo y como se planteó la solución. Se mencionarán frameworks de desarrollo de APIs como djangorest-framework y swagger.# ResumenEl objetivo de esta charla es presentar ```drf-swagger-customization```, un paquete de mucha utilidad para todo aquel que trabaja con APIs y tenga que implementar una documentacion, la cual, al generarse de manera automática, venga incompleta. Con esta extensión de ```django-swagger``` podremos introducir, de forma muy sencilla, contenido a esa documentación y sin necesidad de tirar una línea de código.# Contenido- Durante esta charla, se hablará de la importancia de la documentación en APIs.- Comentaremos algunos frameworks para el desarrollo de APIs como *Django Rest Framework* y *Swagger*.- Veremos cómo surgió la necesidad de implementar este paquete.- Explicaremos cómo instalarla, la estructura de nuestros ficheros JSON y cuándo nos aportará valor.- Se expondrá un rápido ejemplo de su funcionamiento.2017-09-23T10:30:00+010010:3000:30Sala IntelygenzUsando Python y SocketIO para aplicaciones en tiempo realLa idea de esta charla es demostrar que se pueden implementar aplicaciones en tiempo real de manera muy fácil y escalable.Usando JavaScript (SocketIO) como lenguaje en el lado del cliente y en el lado del servidor aplicaciones basadas en Python (Flask-SocketIO), obteniendo resultados alucinantes tanto por la sencillez como por el rendimiento de las soluciones.La presentación se basa en explicar de forma sencilla y muy visual una aplicación basada en eventos e interacciones en tiempo real creada para la ocasión.Estructura de la presentación: * Vista preliminar de la aplicación en tiempo real y explicación de las partes principales. * Introducción a Socket.IO explicando los aspecto más importantes. * Explicar las partes de la aplicación que usan Socket.IO tanto en el lado del cliente como en el del servidor. * Explicación de como testear y desplegar este tipo de soluciones en entornos de producción. * Ejemplo en vivo de carga de usuarios para valorar el rendimiento de estas soluciones.2017-09-23T11:00:00+010011:0000:30Sala IntelygenzCómo complicar innecesariamente tu vida programando una shell asíncrona en Python¿Harto de escribir siempre los mismos comandos en tu shell? ¿No estaría bien que los comandos fueran asíncronos? ¿Te gusta complicarte la vida innecesariamente?Si la respuesta a estas preguntas es sí, escribir tu propia shell puede ser la solución a tus "problemas".En esta charla hablaremos de cómo se puede utilizar Python, junto con prompt_toolkit, asyncio y ply paraescribir tu propio intérprete de comandos avanzado, con interfaz gráfica en modo texto y ejecución asíncrona de tareas.Hace unos meses me encontré repitiendo pequeñas variaciones de los mismos comandos día tras día. Un script tradicional no era suficiente para mis propósitos, dado que parte del comando debía ejecutarse remotamente a través de SSH, dejando la sesión de SSH abierta.Así que decidí liarme la manta a la cabeza y crear una aplicación de consola que permitiera automatizar estos procesos, y ya puestos, aprender algo nuevo de Python. El resultado final es una aplicación de modo texto, con funcionalidades tan diversas como: - Múltiples sesiones simultáneas, a lo tmux - Ejecución remota de comandos via SSH, permitiendo pasar a sesiones interactivas - Autocompletado de comandos - Inesperadamente, soporte para ratón en la propia consola - Temas gráficos personalizables (¿por qué no?)Y como muestra, un pantallazo:![screenshot](http://i.imgur.com/P1LfnK4.png)El objetivo de la charla es dar a conocer un poco de las librerías utilizadas, así como de su integración: - `ply` para el parseo de sintaxis (lexer y parser) - `prompt_toolkit` para la interfaz gráfica - `asyncio` para la ejecución asíncrona de tareas - `asyncssh` para la conexión a servidores por SSH2017-09-23T12:00:00+010012:0000:30Sala IntelygenzMachine Learning en producciónUna vez tenemos el modelo diseñado por los data scientist hay que ponerlo en pro, pero ninguna de las herramientas que han usado son viables en producción y tienen problemas de escalabilidad ¿Que hacemos ahora?. En esta charla veremos arquitecturas aplicadas a 2 casos de uso típicos: arquitectura de ejecución única reutilizable y arquitectura de uso contínuo con bucle de feedback.Una vez tenemos el modelo diseñado por los data scientist hay que ponerlo en pro, pero ninguna de las herramientas que han usado son viables en producción y tienen problemas de escalabilidad ¿Que hacemos ahora?. En esta charla veremos arquitecturas aplicadas a 2 casos de uso típicos: arquitectura de ejecución única reutilizable y arquitectura de uso contínuo con bucle de feedback.Luis Mesas2017-09-23T12:30:00+010012:3000:30Sala IntelygenzNASAL-Geom: Salvando vidas con PythonNASAL-Geom es un reconstructor de geometrías 3D de cavidades nasales llamado a ayudar a reducir la nada despreciable tasa de fracaso del 25% al 30% que se da en cirugías en el contexto de la rinología. Durante la charla veremos como funciona este software de procesado de imágenes tomográficas.NASAL-Geom es un software libre (o al menos lo será en el mismo instante en que se publique el paper en revisión) capaz de reconstruir geometrías 3D de cavidades nasales a partir de un TAC.La relevancia del software radica en las tasas de incidencia y fracaso que envuelven a la rinología en general, y a las cirugías en particular. Concretamente, un 5% de la población mundial sufre Rinosinusitis crónica, una enfermedad que requiere de una intervención quirúrgica con unas tasas de fracaso del 25%-30%.Durante la charla daremos un paseo por el software, viendo como se preprocesan, procesan y postprocesan imágenes DICOM para producir una geometría 3D con la mayor calidad posible.2017-09-23T13:00:00+010013:0000:30Sala IntelygenzPython+TensorFlow: Cómo Ganar Dinero en Bolsa aplicando Deep LearningLas dos tecnologías más disruptivas actualmente en AI son el Deep Learning y el Reinforcement Learning. ¿Podemos hacernos ricos aplicando estas tecnologías al mundo de las finanzas? En esta charla daremos algunas claves sobre cómo usar Tensorflow para crear redes neuronales que aprenden a invertir en los mercados, y una introducción al Deep Q Learning, un algoritmo de aprendizaje con refuerzo que aprende el “juego” de la Bolsa como cualquier otro robot sometido a ciclos de acción + recompensa.Las dos tecnologías más disruptivas actualmente en Inteligencia Artificial son el *Deep Learning* y el *Reinforcement Learning*. El *deep learning* se basa en redes neuronales profundas con distintas arquitecturas en función del tipo de datos de entrada (convolucionales en el caso de imágenes, recurrentes en el caso de texto, etc). El acceso a las tecnologías *deep learning* se ha democratizado gracias a librerías como Theano, Keras o TensorFlow. En esta charla nos centramos en la versión para Python de esta última, desarrollada por Google y que cuenta con amplia documentación que permite, mediante *notebooks* interactivos, desplegar redes neuronales desde cero para clasificación de caracteres o procesado de textos.En la charla nos centraremos en aplicaciones financieras del *deep learning* y daremos algunas claves sobre cómo usar Tensorflow para crear algoritmos basados en redes densas o recurrentes que aprenden a invertir en los mercados. También haremos una introducción al *Deep Q Learning*, un algoritmo de aprendizaje con refuerzo que aprende a “jugar” en los mercados con mecanismos de acción (orden de compra o venta) y recompensa (rentabilidad). La función *Q* (aquella que predice la recompensa a partir de un determinado estado del mercado y una acción en ese estado) es estimada mediante una red neuronal profunda.2017-09-23T15:00:00+010015:0000:30Sala IntelygenzCome learn about the Python Software Foundation!The PSF plays a key role in fostering the Python community around the world. Come find out what the PSF does (and doesn't do), how it works, how the PSF can support your community, and how you can be part of the PSF. We'll describe the membership model and how everyone can be a member, and many people can be voting members. We will also talk about the PSF Grants program, and answer any questions you might have. Everyone is welcome, both non-members and members! PSF stickers will also be availablThe PSF plays a key role in fostering the Python community around the world. Come find out what the PSF does (and doesn't do), how it works, how the PSF can support your community, and how you can be part of the PSF. We'll describe the membership model and how everyone can be a member, and many people can be voting members. We will also talk about the PSF Grants program, and answer any questions you might have. Everyone is welcome, both non-members and members! PSF stickers will also be available!2017-09-23T15:30:00+010015:3000:30Sala Intelygenz¡Atrapa ese asteroide con poliastro!poliastro es una biblioteca de código abierto escrita en Python puro utilizada para hacer cálculos orbitales. Este año participó en el Summer of Code de la Agencia Espacial Europea (SOCIS), un programa parecido al de Google que otorga becas a estudiantes para desarrollar código abierto en verano. En esta charla hablaremos de la API que se ha desarrollado durante el verano para descargar datos de asteroides, cometas y otros objetos ¡incluyendo alguna demo!poliastro es una biblioteca de código abierto escrita en Python puro utilizada para hacer cálculos orbitales. Este año participó en el Summer of Code de la Agencia Espacial Europea (SOCIS), un programa parecido al de Google que otorga becas a estudiantes para desarrollar código abierto en verano.En esta charla introduciremos qué es poliastro y hablaremos de la API que se ha desarrollado durante el verano para descargar datos de asteroides, cometas y otros objetos, ¡incluyendo alguna demo!De paso, comentaremos qué impacto ha tenido SOCIS en el proyecto y daremos algunos trucos para atraer gente nueva para que colaboren en tu proyecto.Antonio Hidalgo2017-09-23T16:30:00+010016:3000:30Sala IntelygenzCorrigiendo 1000 exámenes con un pelín de OpenCVPuede parecer una tarea difícil, ¡pero autocorregir un montón de exámenes tipo test con Python puede ser muy fácil! Con ese objetivo en mente, aprenderemos cómo se guarda una imagen en un ordenador, cómo trabajar con arrays en Numpy, cómo dibujar gráficas fácilmente con Matplotlib y un par de funciones útiles de visión artificial con OpenCV.El objetivo de la charla es hacer una pequeña demostración del uso de algunas de las bibliotecas más icónicas, hiladas a través del objetivo final de analizar fácilmente un examen tipo test.**Numpy** y **Matplotlib** son dos de las bibliotecas más importantes en el Python científico, usadas para trabajar con arrays y representaciones gráficas respectivamente.Como una imagen en escala de grises en el fondo no es más que una matriz, usaremos unas pocas manipulaciones básicas con imágenes para mostrar cómo trabajar con funciones de **Numpy**, hacer slicings, etc.La interfaz de **Matplotlib** más sencilla, **Pyplot**, es muy útil para realizar muchos gráficos sin hacer un gran esfuerzo. Podemos mostrar un ejemplo sencillo de estas capacidades representando los contornos que detectemos sobre la imagen original.También se presentarán algunas de las funciones más básicas de **OpenCV**, uno de los paquetes de software más importantes de visión artificial. Usaremos las funciones de desenfoque, umbral y detección de contornos.Si el tiempo fuera suficiente, echaremos también un vistazo a la librería **openpyxl**, que nos permitirá importar y exportar datos de tablas de Excel.Puede ser importante resaltar explícitamente que debido a las limitaciones de tiempo, las librerías no pueden ser mostradas en profundidad, y que probablemente no habrá nada o casi nada de live coding. Sin embargo, todo el código usado, incluso para las imágenes intermedias, será publicado en forma de Notebook de Jupyter a través de **Github**.2017-09-23T17:00:00+010017:0000:30Sala IntelygenzCómo diseñar un programa CLI fácil de lanzar, con un ClickEstás construyendo un script o un pequeño frontend para probar tu biblioteca. ¿Como probar sus distintas opciones?Podrías usar argparse, pero cada vez los CLI tienen más parámetros que dependen del modo o del subcomando, así que necesitas algo modular. Esta charla presentará Click, una biblioteca diseñada para hacer sencillo exponer programas CLI, que incluso te permite interoperar argumentos con variables de entorno. Ejecuta tus scripts tanto en local como en un cluster sin ningún esfuerzo.Bibliotecas como argparse u optparse están muy bien para diseñarpequeñas líneas de comando. Pero llega un momento en el que se vuelvecada vez más insostenible, cuando tu comando empieza a teneropciones. Piensa por ejemplo en docker, que tiene distintos parámetrossegún sea `docker run`, o `docker log`.Si quieres aprovechar un sistema modular que te permita tener estetipo de flexibilidad en tus líneas de comandos, tienes Click.Se espera del público que tengan conocimientos de Python y del uso de decoradores, poco más.Haremos alguna demo para comprobar el funcionamiento y todo estará orientado a la práctica en esta charla.2017-09-23T17:30:00+010017:3000:30Sala IntelygenzDiscovering python search engineIntroducción a los principales motores de búsqueda que podemos encontrar en python comentando las principales características de cada uno de ellos.Se comentarán los principales motores de búsqueda que podemos integrar en nuestras aplicaciones como elasticsearch,Whoosh y PostGres Full text para aplicaciones web con django.Los puntos a tratar podrían ser:- Introducción a los motores de búsqueda en general,comentando conceptos de indexación y creación de contenidos y otros mas avanzados como el optimización de las búsquedas.- Motores de búsqueda en pythonLos principales motores que podemos integrar en nuestras aplicaciones son elasticSearch, PostGres Full text Search que permite añadir capacidades de búsqueda en aplicaciones web con django,whoosh como módulo que permite añadir funcionalidades de búsqueda e indexado de contenidos en aplicaciones y sitios web.- Cómo introducir estos motores en nuestras aplicacionesSe mostrará un ejemplo práctico con cada motor de búsqueda.Por ejemplo se podría crear una aplicación que leyera comentaríos de de twitter y almacenara la información más relevante en alguno de los motores de búsqueda para acceder a estos datos desde otras aplicaciones2017-09-24T09:15:00+010009:1500:15Sala BloombergApertura2017-09-24T09:30:00+010009:3000:30Sala BloombergLoad test your backend with locust.ioWhat is your capacity? Does your backend scale? Are you on the edge of an outage? Find out with locust.io, a Python based load testing tool. [Locust.io](http://locust.io/) is open source, battle-tested, extensible and can help you sleep better at night ahead of a big product release.What is your capacity? Does your backend scale? Are you on the edge of an outage? Find out with locust.io, a Python based load testing tool. [Locust.io](http://locust.io/) is open source, battle-tested, extensible and can help you sleep better at night ahead of a big product release.David SaltaresAndy Almonte2017-09-24T10:00:00+010010:0000:30Sala BloombergDesplegando Python continuamente sin esfuerzoLos términos "despliegue continuo" e "integración continua" están cada vez más presentes en el léxico del programador. Si bien Python es un lenguaje tremendamente apropiado para aplicar estas prácticas, la cantidad de herramientas, opciones o, simplemente, de conceptos hace que el recién llegado alcance un nivel de confusión tal que la tarea parezca imposible. Usando herramientas habituales en Python mostraremos que construir un sistema de despliegue continuo es cómodo y sencillo.De una forma eminentemente práctica, crearemos un sistema de despliegue continuo totalmente funcional, desde cero. Usando técnicas y herramientas completamente estándar para cualquier desarrollador de Python, como pytest, tox o pylint, avanzaremos etapa por etapa, desde controles básicos como linting hasta las etapas de despliegue, para lograr un sistema totalmente automatizado que verifique y ponga en servicio nuestro código con tan solo un commit. El resultado final (que publicaremos en GitHub) será un servicio completo, que integrará todas las etapas y mostrará en todo momento el estado de salud de nuestro código de forma cómoda y accesible, integrando Jenkins, SonarQube y Hygieia con nuestras herramientas habituales.2017-09-24T10:30:00+010010:3000:30Sala BloombergCrea, empaqueta y distribuye tu propia aplicación¡Distribuye tu aplicación! Una guía sobre cómo usar las herramientas para empaquetado y distribución de Python. Entre otros aspectos se cubrirá la generación de una estructura básica para aplicaciones, cómo crear un fichero setup.py básico y algunas construcciones más avanzadas, y por último cómo registrar y subir tu aplicación a PyPI.Guía para crear una aplicación de la nada, configurarla y distribuirla a través de PyPI. La charla está estructurada en cinco bloques, siendo el primero de ellos una _introducción_ para familiarizarse con los conceptos y nociones más importantes. A continuación se desarrolla el proceso de _creación_ del proyecto. Tras éste se detallan el _empaquetado_ así como la _distribución_ para, por último, repasar a modo de _conclusiones_ el flujo completo.### Introducción1. ¿Por qué debería distribuir mi aplicación?2. Versionado.3. Herramientas y Servicios.### Creación1. Almacenar el proyecto.2. Crear el esqueleto del proyecto.3. Jerarquía del proyecto.4. Enlazar servicios.### Empaquetado1. Testear la aplicación.2. Crear el paquete.### Distribución1. Registrar la aplicación.2. Subir una nueva versión.### Conclusiones1. Proceso completo.2. Proceso simplificado.2017-09-24T11:30:00+010011:3000:30Sala BloombergHaskell es mi pastor y Python, mi profeta.En esta charla se explicará el paradigma de programación funcional. Para ello, se utilizará como ejemplo el lenguaje puramente funcional Haskell y se explicará cómo hacer programación funcional en Python. Por último, se comparará la eficiencia y la elegancia del paradigma de programación funcional frente al imperativo.Índice de contenidos:* Explicación del paradigma de la programación funcional.* Ejemplos breves y sencillos en Haskell, que introducen de forma sencilla el concepto de programación funcional, y los equivalentes en Python usando las funciones `map`, `reduce`, funciones `lambda`.* Uso de las funciones `lambda` en nuestro código Python.* Comparación entre el paradigma funcional e imperativo en Python, enseñando trozos de código escritos siguiendo ambos paradigmas, que muestren cómo el código se hace más legible con programación funcional, y breve comparación de eficiencia.2017-09-24T12:00:00+010012:0000:30Sala Bloombergpytest: más allá de la documentaciónpytest es un framework de testing a la vez sencillo e increíblemente avanzado. Si bien las técnicas básicas son accesibles y están bien documentadas, dentro de pytest existe toda una familia de herramientas que nos permiten realizar operaciones tan exóticas como útiles con nuestras suites de tests.Partiendo de ejemplos simples, introduciremos conceptos que nos permitirán mejorar y extender nuestras suites de tests de forma simple y eficaz. Usaremos técnicas como generación de tests, hooks, plugins o runners personalizados, mostraremos ejemplos prácticos de cómo usarlas y combinarlas para lograr resultados sorprendentemente limpios, reduciendo drásticamente la cantidad de código de test que tenemos que escribir, así como el tiempo de mantenimiento requerido. Como ejemplo final, ilustraremos cómo crear una suite de tests basada en un conjunto de ficheros de datos, de forma totalmente automática y con una cantidad de código minúscula.2017-09-24T12:30:00+010012:3000:30Sala BloombergPytest: recomendaciones, paquetes básicos para testing en Python y DjangoDurante el desarrollo de software es vital el uso de test, bien sean unitarios, funcionales o de integración. Uno de los frameworks de testing disponibles de Python es pytest el cual es considerado prácticamente un estándar en la comunidad de Python debido a su sencillez y su extenso uso en la mayoría de proyectos de software de Python. Esta charla no trata sobre buenas prácticas de testing sino de la presentación y consejos de uso sobre una selección “curada” de plugins de pytest.Esta charla no trata sobre buenas prácticas de testing sino de la presentación y consejos de uso sobre una selección “curada” de plugins de pytest., dentro del gran ecosistema, que hemos ido encontrando durante el desarrollo de proyectos, sobretodo de proyectos con Django. Esta charla está pensada para introducir a los desarrolladores una serie de paquetes para usar conjuntamente con pytest para tareas de testing, bien sea para tests unitarios, funcionales o de integración, y sobretodo, aplicado a proyectos Django. Se explicará brevemente los conceptos básicos de pytest, tales como fixtures, parametrización, ejecución de tests concurrentes, etc. Algunos de los paquetes que se comentaran serán: pytest-django, pytest-watch, pytest-testmon, model-mommy, pytest-flake8.. Está dirigida a un nivel básico/intermedio.2017-09-24T14:00:00+010014:0000:30Sala BloombergOpenCV el ojo de la serpiente que todo lo veEn esta charla vamos a ver las nociones básicas de OpenCV, conectaremos una webcam y veremos como en tiempo real se puede obtener información del entorno que nos rodea.Se explicará un poco de código sencillo con resultados sorprendentes y se mostrarán algunos ejemplos mas elaborados.A día de hoy la visión artificial está abriendo un campo de investigación muy amplio para permitir que los dispositivos puedan captar la información de nuestro entorno de una forma visual. La extracción de características mediante una webcam puede tener interesantes y curiosos usos. Aunque todavía nos parece un poco de ciencia ficción, si sabes el camino, no es tan difícil.En esta charla vamos a ver las nociones básicas de OpenCV, conectaremos una webcam y veremos como en tiempo real se puede obtener información del entorno que nos rodea.Se explicará un poco de código sencillo con resultados sorprendentes y se mostrarán algunos ejemplos mas elaborados.Seria muy recomendable tener algún mínimo de conocimiento de Numpy, para que la charla te resulte fácil y disfrutes al máximo.2017-09-24T14:30:00+010014:3000:30Sala BloombergHow to hug PandasUna breve introducción al tratamiento de datos con Pandas. Hablaremos de: Cómo cargar datos para su procesado, tipos de datos básicos (DataFrame, Series...), información estadística sobre los datos, indexación de los datos, consulta a los datos: Slicing y filtering, operaciones vectoriales, agrupación y agregación de datos.Este charla será para la gente que nunca ha trabajado con Pandas. Puede interesar a la gente que tiene poco conocimiento también o los que quieran empezar a trabajar con datos.Será una breve introducción al tratamiento de datos con Pandas. Hablaremos de las siguientes funcionalidades:- Cómo cargar datos para su procesado (listas, csv, sql, excel...).- Tipos de datos básicos (DataFrame, Series...).- Información estadística sobre los datos. Medias, sumas, acumulados...- Indexación de los datos: Cambiar y tratar el index y tipos de indexes disponibles.- Consulta a los datos: Slicing y filtering.- Operaciones vectoriales: añadir nuevas columnas, aplicar operaciones a columnas completas...- Agrupación y agregación de datos.2017-09-24T15:30:00+010015:3001:00Sala BloombergKeynote - Juan Luis Cano2017-09-24T16:30:00+010016:3000:30Sala Bloomberg**Clausura** Entrega de premios <a href="https://hackathon.kernel-analytics.com/" style="color: #fff; text-decoration: underline;">PythonHack 2017</a>2017-09-24T09:30:00+010009:3000:30Sala SkyscannerSysadmin vs DjangoRelataremos la historia de un brujo Sysdadmin que vivía en el Reino del lejano Backend, triste y enclaustrado entre terminales, conjurando hechizos en Perl y awk, hasta que un buen día (¿o malo quizás?) se le encomendó la noble misión de pregonar en los Siete Reinos HTML los datos que emanaban de las mazmorras SQL. Solo una gran magia podría satisfacer tan alta causa: Python._Basado en una historia real_ xP … se mostrará como es posible desarrollar una _webapp_ con `Python` afrontando un _deadline_ ajustado y sin experiencia previa en desarrollo frontend.Este proyecto se convirtió en una experiencia altamente gratificante aunque no exenta de escollos, solventados con mayor o menor fortuna. Precisamente estos **tips** prácticos serán los que protagonicen la charla con un _objetivo claro_, intentar facilitar el transito del novato al mundo Django. Alguno de los puntos que trataremos:- La elección del *framework* con Django como opción natural.- ¿Cómo me monto mi *entorno de desarrollo*? (`docker-compose`)- ¿Qué motor de *BBDD* elijo?- *Estructuración* del proyecto- *settings.py* y *.env*- Esquema de `urls`- Autenticación / Registro- Modelos y Vistas ... tal para cual- *D*jango *R*est *F*ramework o el Santo Grial de nuestro *Backend*- Como diseñar nuestro *Frontend*, el mundo de los *templates*- Gestión de *permisos* .. cada oveja con su pareja- `JS`, `Bootstrap` , ¿eso que es lo es?- Ya tengo mi web ¿ahora qué? Estrategias de *despliegue*Nos iremos con una app en el portátil y con suerte quedareis tan enganchados como yo al universo *Django*.2017-09-24T10:00:00+010010:0000:30Sala Skyscanner¡Python a los 17 y en 3 meses!¿Para qué quiero yo saber Python en la adolescencia? ¿A qué retos me he enfrentado en esta aventura? ¿Con qué me quedo? Estas preguntas y otras resueltas por una chica de 17 años que se lanzó a aprender Pyhon para hacer su monografía.Hablaré de cómo me he instruido, qué trucos he aprendido, que tips o recomendaciones me hubiera sido de gran utilidad haberlas conocido de antes... Un resumen y consejos del aprendizaje en un periodo no muy largo de tiempo (2/3 meses) de Python, así como qué aplicaciones he utilizado.Luego explicaré, a tavés de mi ejemplo, cómo lo he aplicado a Big Data en una dicotomía Literaria. Hasta dónde he podido llegar, y hasta donde pretendía hacerlo. Metas plausibles con Python para recién inciados.Una charla amena sobre el auto aprendizaje de Python desde la experiencia de una adolescente de 17 años.2017-09-24T10:30:00+010010:3000:30Sala SkyscannerDesplegando apliaciones Django en SwarmEn esta charla pretendo explorar cómo deberíamos afrontar el desarrollo de una aplicación Django que necesita estar en alta disponibilidad y escalar rápidamente con Swarm.Hablaré de contenedores, de microservicios y de orquestadores: el hype está servido.El mundo de los orquestadores está en un momento de auge; cada vez en más sitios reclaman conocimientos de *devops*, para atender a los nuevos retos, de escala global, a los que se enfrentan nuestros servicios.Junto al conocimiento de todo el ecosistema de nuevas herramientas (Docker, Kubernetes, Swarm...), hace falta también revisitar la forma que damos a nuestras aplicaciones, para que puedan ser fácilmente desplegables. La filosofía de los microservicios, con sus luces y sombras, ayuda a que hagamos aplicaciones bien encapsuladas y que se pueden poner en producción de forma más ágil y limpia.2017-09-24T11:30:00+010011:3000:30Sala SkyscannerAplicaciones Geográficas con Django - No sólo de Javascript viven los mapasLa 'ubicación' es una de las variables más importantes en cualquier problema, y es una de las más complicadas de manejar.Django - sin ser un servidor geográfico de primera clase - proporciona una buena plataforma para incorporar el "dónde" en nuestras aplicaciones.Presentaremos - de forma práctica - las capacidades geográficas de Django (acceso a BB.DD espaciales, consultas geográficas) y sus limitaciones, indicando herramientas complementarias (p.ej. Leaflet) o stacks alternativos.Introducción a GeoDjango:- bases de datos espaciales: por qué son necesarias, qué aportan, cómo instalar y configurar una base de datos espacial para trabajar con GeoDjango (spatialite o PostGIS)- obtención y gestión de datos geográficos: formatos habituales, cómo buscar, descargar y tratar datos geográficos para poderlos incorporar en nuestras apps- consultas geográficas: ¿cómo incorporar operaciones o predicados geográficos (p.ej. está-dentro-de, está cerca, está lejos) en el ORM de Django? Herramientas complementarias- representación de mapas en la web con Leaflet Otros Stacks Geográficos- GeoServer, OpenLayers- Carto- ArcGIS2017-09-24T12:00:00+010012:0000:30Sala SkyscannerExprimiendo el ORM de Django¿No consigues expresar tus consultas con el ORM de Django? Si ves la necesidad de usar el método extra() casi cada vez que tienes que expresar una query, si aún no tienes claro para qué sirven Q() y F() o si, una vez te has desesperado, acabas escribiendo tus consultas en SQL plano y usando cursores, es probable que esto te interese.# Exprimiendo el ORM de DjangoMuchas veces nos resulta mucho más fácil escribir una consulta a base de datos en SQL plano que lidiar con las limitaciones del ORM de Django, perdiendo así la gran potencia y limpieza que este nos ofrece.Los operadores *Q()* y *F()* son, muchas veces, algo que copiamos de la documentación sin entender completamente. Hacer joins simples puede no ser posible, y no hablemos de joins con claves foráneas de más de una columna.Acabamos abusando del método *extra()* y la clase *RawSQL* cuando, en realidad, pueden no ser necesarios.La experiencia nos ha enseñado a sacar el máximo partido de esta funcionalidad y exprimir al máximo sus posiblidades, limitando al máximo la escritura de código SQL plano. Explicaremos cómo, mediante la definición de algunos elementos básicos e intermedios para manipular querysets y la presentación de algunos trucos útiles.Puede que te ahorre un par de consultas a la documentación y que descubras alguna cosa nueva, o simplemente que vuelvas a apreciar el ORM de Django.2017-09-24T12:30:00+010012:3000:30Sala SkyscannerFullstack Single Page Applications con Django (Django + REST Framework + webpack + Vue.js)En la época actual de aplicaciones SPA, toda la lógica de la aplicación debe ir al cliente, debe escribirse en Javascript y no hay sitio para usar un backend como Django... ¿seguro?Django ha evolucionado de ser un gestor de sitios web multipágina, a dar el soporte perfecto a las modernas SPAs combinando sesiones, ORM, templates y REST endpoints con frameworks JS (Vue.js / React / Angular), bundlers (webpack) y hot module reloading.El 'nuevo' Django sigue siendo una de las mejores plataformasVeremos cómo montar una app fullstack usando Django y Vue.js con todos los ingredientes necesarios:- cómo integrar webpack para empaquetar la parte de cliente (Javascript, CSS y otros recursos) a partir de los fuentes- cómo configurar el entorno de desarrollo para disfrutar de la super productividad que aporta hot-module-reloading en el flujo de trabajo normal- cómo crear REST endpoints en Django- cómo gestionar la autenticación de usuarios y las sesiones con DjangoLa charla será una demo de cómo crear una app de este estilo de principio a fin.2017-09-24T14:00:00+010014:0000:30Sala SkyscannerDeveloping in a black hole"La productividad depende del dominio que tengamos de las herramientas utilizadas".¿Sientes que las herramientas de desarrollo que utilizas son pesadas?, ¿piensas que te hacen ser menos productivo?, ¿quieres tener la máxima productividad sin levantar las manos del teclado?. Si es así, esta charla es para tí."La productividad depende del dominio que tengamos de las herramientas utilizadas".¿Sientes que las herramientas de desarrollo que utilizas son pesadas?, ¿piensas que te hacen ser menos productivo?, ¿quieres tener la máxima productividad sin levantar las manos del teclado?. Si es así, esta charla es para tí.En esta charla mostraré cuales son las herramientas que utilizo día a día en el desarrollo de software, y como, integrando - el editor de texto, vim - el multiplexador de terminal, tmux - el cliente de HTTP, httpie - el procesador de json, jq Conseguimos un entorno de desarrollo muy productivo, todo ello corriendo sobre un simple terminal.Javier Aceituno Lapido2017-09-24T14:30:00+010014:3000:30Sala SkyscannerIniciación Open edXEn esta charla expondremos qué es Open edX, el potencial que tiene, se explicará su arquitectura - montada en Python / Django - y las posibilidades de extensión que presenta (XBlocks).En esta charla expondremos qué es Open edX, el potencial que tiene, se explicará su arquitectura - montada en Python / Django - y las posibilidades de extensión que presenta (XBlocks).Explicaremos como montar un Open edX desde cero, haciendo uso de una máquina Full Stack de la versión más reciente y mostraremos cuales son los parámetros de configuración básicos para la personalización de la plataforma. Explicaremos a su vez la posibilidad de crear e instalar un tema que personalice los estilos de la plataforma a nuestro gusto, y de qué forma se crean e incorporan XBlocks a una plataforma Open edX.Esta charla va destinada a personas con cualquier nivel de Python / Django.2017-09-24T09:30:00+010009:3000:30Sala IntelygenzKillo.io el Google Español creado en PythonKillo.io es un motor de búsqueda que rankea los resultados de una búsqueda por el nivel de seguridad de la web. Realiza una función que ningún otro buscador ha desarrollado. Auditorias de seguridad de forma automatizada.Killo.io es un proyecto open source creado por la empresa QuantiKa14 y tiene el objetivo de concienciar a los creadores, administradores y dueños de páginas webs en la seguridad. Además de proporcionar a los usuarios una herramienta de confianza que les ayuda saber si es seguro insertar los datos como por ejemplo la tarjeta visa o incluso llegar a poder entrar en una web.Es un motor de búsqueda que funciona con crawlers que están auditando miles de páginas webs diariamente creado todo en Python y MongoDB.En la charla explicaremos como se desarrollo la aplicación, las dificultades que nos encontramos, funcionamiento, trucos y lo más importante concienciaremos en la necesidad de una buena programación segura.2017-09-24T10:00:00+010010:0000:30Sala IntelygenzOpen Sourceando en OrangeIvan Robles2017-09-24T10:30:00+010010:3000:30Sala IntelygenzWhy lazy developers write beautiful code?There has been a lot of discussion during the last 50 years about the nature of programming: Is it an art like poetry? Is it craftsmanship like pottery? Is it an exact science like physics? Or a non exact science like medicine? Is it engineering like bridge building?Whatever the nature of software development is: during this time, a lot of tools and techniques have appeared to make your lazy-developer life more difficult: Coding conventions, OOP, FP, SOLID, Design Patterns, Tests, TDD, UML, Use-cases, CASE tools, Refactoring, RUP, Agile, SCRUM, Continuous Integration, Code Complexity Metrics, Emergent Architecture, DevOps, SCM... and whatnot!But, sometimes, being a lazy developer makes you do things that seemed counterintuitive, in order to pursue your main objective: WORK LESS.There has been a lot of discussion during the last 50 years about the nature of programming: Is it an art like poetry? Is it craftsmanship like pottery? Is it an exact science like physics? Or a non exact science like medicine? Is it engineering like bridge building?Whatever the nature of software development is: during this time, a lot of tools and techniques have appeared to make your lazy-developer life more difficult: Coding conventions, OOP, FP, SOLID, Design Patterns, Tests, TDD, UML, Use-cases, CASE tools, Refactoring, RUP, Agile, SCRUM, Continuous Integration, Code Complexity Metrics, Emergent Architecture, DevOps, SCM... and whatnot!But, sometimes, being a lazy developer makes you do things that seemed counterintuitive, in order to pursue your main objective: WORK LESS.Javier Arias2017-09-24T11:30:00+010011:3000:30Sala IntelygenzMás allá del 10%: analizando la diversidad de géneroWomen represent half of the population. The technological industry claims that around 30% of their work force are women. And that percentage decreases down to 20% when focusing on the tech. teams.If we analyze open source communities, those hardly reach 10% of the population as this is the case of the OpenStack Foundation or the Linux Kernel.This talk will show previous analysis and data publicly available with this respect, and an analysis of the Python community to compare to.Aún cuando las mujeres representan la mitad de la población mundial, las grandes empresas tecnológicas declaran que alrededor de un 30% de sus trabajadores son mujeres. Y en los equipos técnicos este porcentaje no llega ni al 20% en muchos casos.En el caso de algunos proyectos de software libre estos porcentajes apenas sobrepasan del 10% como es el caso de la fundación OpenStack o del kernel de linux.Esta charla mostrará en primer lugar datos ya existentes de diversos proyectos, así como un análisis de la comunidad de Python que nos permitirá comparar.Además se mostrará cómo se ha llevado a cabo el análisis, el proceso de recogida, limpieza, masajeo y visualización de datos con Python. Específicamente se ha usado para este proceso Perceval [1], una herramienta enfocada en la descarga de datos de las fuentes más usuales en software libre. Y Ceres [2], una pequeña biblioteca que maneja datos de Perceval que junto con los Notebooks nos permitirá visualizar la diversidad de género de las contribuciones técnicas al proyecto de Python [3] (Y si da tiempo se agregará alguno más!)[1] https://github.com/grimoirelab/perceval[2] https://github.com/dicortazar/ceres[3] https://github.com/python2017-09-24T12:00:00+010012:0000:30Sala IntelygenzDeep Learning models in Python without gibberishIn this talk, we are going to explore a deep path that academics have filled it with gibberish, and together we will untangle it to understand how to make work some of the latest models.Briefly, we will overlook the Python landscape of deep learning techniques for classifying if a movie is going to pass the Bechtel test. So, as a bonus track, you would learn what the Bechtel test is.Nowadays, a bunch of companies has become aware of all the information they can gather from what we write in social media. They can learn whether we liked or not their products, which are the demographic features of their users, etc. Except we write tons of things in social media, most of them have no value whatsoever, and they will need an army of people reading nonstop. But, do not despair, *machine learning* is here to help you automatize all these tasks. Recently, we have seen a huge breakthrough in image processing [using deep learning techniques] [(https://www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf]), and we computer linguistic begrudge what colleges can do in images. So, if you want to use deep learning algorithms to predict the outcome of your system but you don't know exactly how to do it this is your talk. If you are curious about machine learning and deep learning techniques in Python, this is your talk. This talk will have three parts. The first part will be mostly theoretical, and no background knowledge is required. However, some familiarity with machine learning slang will be helpful.This part will teach you about the algorithms used in deep learning, the more you understand the algorithms, the better you will apply them. The second part will be purely practical. You will see in action some of the deep learning methods for a classification task such as the prediction if a movie is going to pass the Bechtel test or not. Later, I would explain why I chose the toolkit I use in my daily life and my insights of some mainstreams toolkits so you can pick whichever suits you best. 1. A gentle introduction to deep learning. (2')2. Deep learning algorithms. (6')3. Word-embeddings for deep learning. (4')4. Predicting the Bechtel test. (8')4. Deep learning toolkits (Keras, Theano & Tensorflow) and their applications. (5')2017-09-24T12:30:00+010012:3000:30Sala IntelygenzDeveloping a scalable asynchronous applicationIn this talk I’ll try to convince you that apart from prototyping and writing quick scripts Python is also a great choice for developing extensible but still lightweight systems which need to serve the high traffic. We will see that asynchronous I/O is the key to design the powerful services, and what benefits but also drawbacks it brings.I would like to explain rather basics of asyncio so talk is still suitable for beginners. I will go through principals of this library, show what gain it brings and that it's not so scary ;) More details to come later.I would like to explain rather basics of asyncio so talk is still suitable for beginners. I will go through principals of this library, show what gain it brings and that it's not so scary ;) More details to come later.2017-09-24T14:00:00+010014:0000:30Sala IntelygenzFlask vs DjangoFlask or Django? Which one is better? We know the answer: it depends!In RavenPack, we use both frameworks in big projects and for that, we have been dealing with its strengths and weaknesses in a real world environment.Flask or Django? Which one is better? We know the answer: it depends!In RavenPack, we use both frameworks in big projects and for that, we have been dealing with its strengths and weaknesses in a real world environment.In this talk, we will speak about Flask and Django, we will show the best and worst things of each one, we will compare the different features of both frameworks and we will tell you when you should use one or the other.We will show how they deal with:* ORM* User management* Administration* REST API* Assets management* Real-time communication* TemplatingAlso, we will show you a quick demo about some project done with one of these awesome frameworks!Dario Varotto2017-09-24T14:30:00+010014:3000:30Sala IntelygenzServerless with Python*Serverless* es una innovadora manera de desarrollar aplicaciones que consiste en funciones que son invocadas puntualmente. A partir de ahora, olvídate de administrar servidores. Tan sólo concéntrate en tu código. En esta charla explicaré cómo comenzar a desarrollar aplicaciones *serverless* con Python en la plataforma más popular para ello ([AWS - Lambda](https://aws.amazon.com/es/lambda/)) así como en una alternativa *open source* ([IronFunctions](https://github.com/iron-io/functions)).The possibility of executing functions as a service allows designing scalable and highly parallel applications, but on the other hand, this kind of applications require a particular programming style. For example, bundling dependencies and managing state is not trivial.However, there are plenty of tools and frameworks to help you code serverless applications with Python, and once you get started it is not complicated. In this talk I will cover AWS Lambda and other alternatives as IronFunctions, OpenFaaS, Fission...