Maintaining code quality can be challenging, no matter the size of your project or number of contributors. Different team members may have different opinions on code styling and preferences for code structure, while solo contributors might find themselves spending a considerable amount of time making sure the code conforms to accepted conventions. However, manually inspecting and fixing issues in files is both tedious and error-prone. As such, computers are much more suited to this task than humans. Pre-commit hooks are a great way to have a computer handle this for you.
Pre-commit hooks are code checks that run whenever you attempt to commit your changes with Git. They can detect and, in some cases, automatically correct code-quality issues before they make it to your codebase. In this tutorial, you will learn how to install and configure pre-commit hooks for your repository to ensure that only code that passes your checks makes it into your codebase. We will also explore how to build custom pre-commit hooks for novel use cases.
¿Eres un ingeniero de IA buscando como mejorar tu sistema RAG? ¿Te gusta la tecnología Open-Source? ¿Estas interesado en aprender como las grandes organizaciones corren sus sistemas RAG en producción de la mano de expertos en la materia? En esta workshop te enseñaremos todo lo que hay que saber sobre Docling "El pandas de la IA para documentos" y juntos implementaremos un RAG con Docling e IA multimodal.
Hasta hace no mucho, para programar microcontroladores requeríamos utilizar variantes de lenguajes como C/C++, quedando fuera de nuestro alcance lenguajes populares y sencillos como Python. No obstante, los nuevos microcontroladores como ESP32 o Raspberry Pi Pico, más potentes y con mayores recursos, han abierto la puerta a variantes de estos lenguajes, como es el caso de Micropython. Veremos los primeros pasos, ejemplos prácticos como control de leds, formas de comunicación, instalación de paquetes, limitaciones y más. Se recomienda disponer de conocimientos previos de Python, aunque no es esencial. Si no conoces el mundo de los microcontroladores, ¡este es tu taller! Micropython es una de las formas más fáciles, cómodas, rápidas y divertidas de adentrarse.
Primero emularemos todos juntos los circuitos usando Wokwi, una plataforma online para diseñar y programar microcontroladores, y finalmente haremos pruebas reales con los componentes y microcontroladores que distribuiremos. Para la programación utilizaremos Viper-ide, un editor online de Micropython, por lo que no será necesario instalar nada. Es esencial traer un portátil para seguir el taller.
Working with data goes far beyond simply generating it. It involves tracking its origin, maintaining its integrity, and selecting the right tools for each stage of your workflow. With the rapid evolution of data tools, staying current can be challenging. Fortunately, Python offers a robust and accessible collection of tools, libraries, frameworks that can make your life easier.
In this workshop, we’ll introduce Dagster, a Python-based orchestration framework designed specifically to help manage data assets. Dagster provides native support for metadata, lineage, versioning, and also includes a powerful UI that brings clarity and structure to your workflows. We’ll also explore how you can integrate orchestration workflows with other popular Python libraries -- such as pandas, Pandera, and Soda-core -- to create efficient, end-to-end pipelines.
Whether you're experienced in data pipelining or are simply curious about learning more, this session will cover how to:
- Manage orchestration and asset definitions within a unified repository
- Use pandas to define and transform data assets
- Apply Pandera to enforce data contracts and catch schema issues early
- Integrate automated Quality Control for ongoing data quality monitoring and management
By the end of our session, you’ll walk away with a practical understanding of how these open source tools can be used together to help you build more maintainable data pipelines within a Python-native environment.
El taller está orientado a entender las bases del por qué y el cómo del mundo asincrónico. Comienza con una pequeña parte teórica que apunta a hacer entender las bases de esta tecnología, y luego continúa con una exploración y aprendizaje prácticos.
Puntos principales de la parte teórica:
- Razón de la búsqueda
- Paralelismo
- Concurrencia
- Cambios de contexto
- Hilos
- Memoria compartida
- Asincronismo
- Event loops
- Callbacks
Luego se trabajarán conjuntamente ejemplos progresivamente más complejos utilizando dos sistemas asincrónicos canónicos: una interfaz gráfica, y la librería estándar asyncio.
Finalmente se discutirán las distintas conclusiones.
¿Alguna vez has necesitado datos realistas para testear, entrenar modelos o hacer una demo… y te has quedado bloqueado porque los datos reales son confidenciales, sensibles o simplemente no existen?
En este taller descubrirás cómo usar el Synthetic Data SDK, una librería open source en Python, para generar datos sintéticos realistas, seguros y listos para usar. Veremos cómo este enfoque permite trabajar con datasets que conservan el valor estadístico del original, pero sin comprometer la privacidad de las personas.
Aprenderás a generar datos sintéticos desde cero, controlar el resultado con filtros y condiciones específicas, y crear conjuntos multitabla con relaciones entre entidades. También exploraremos conceptos como privacidad diferencial (de forma práctica, sin teoría pesada) y la generación de datos justos para ayudar a reducir sesgos en IA.
Todo se hará en notebooks de Colab, sin instalaciones ni prerequisitos complejos. El foco estará en experimentar, aprender y llevarte algo útil para tus propios proyectos: datasets sintéticos, ejemplos de código y acceso directo al repo en GitHub para seguir explorando… o contribuir.
Este taller está dirigido a personas desarrolladoras, data scientists y curiosos/as de Python que quieran trabajar con datos de calidad sin saltarse normativas ni comprometer la privacidad.
CI/CD (Continuous Integration and Continuous Deployment) has become a fundamental part of DevOps, helping teams deliver code quickly and catch potential problems before they turn into costly production issues. Without a solid CI/CD process, developers often struggle with manual deployments, inconsistent environments, and unexpected bugs that slip through the cracks, causing frustration and unplanned downtime.
In this session, we will walk you step by step through setting up a dependable CI/CD pipeline using Python, Jenkins, TestContainers AWS, and Kubernetes. Starting with basic configurations, we’ll automate everything from running tests to building containers and deploying them on a scalable Kubernetes cluster. By writing simple Python scripts, you will learn how to streamline repetitive tasks and create a smooth release workflow. We’ll also take time to discuss common pitfalls and show how to troubleshoot them, so you feel equipped to handle real-world challenges.
Whether you’re new to CI/CD or looking to refine your existing DevOps skills, this tutorial aims to make complex workflows easier to grasp. Expect hands-on practice, clear explanations, and practical takeaways that you can apply in your own projects right away. By the end, you’ll see how using Python at each stage not only automates time-consuming tasks but also brings a new level of reliability to the entire deployment process.
Our goal is to help you build confidence in creating a pipeline that brings predictability to your releases, saves your team time, and keeps your applications running smoothly in production. If you’ve ever wanted to see how a proper CI/CD setup can transform the way you ship software, this is your chance to dive in and see it come to life step by step.
(30 min. teoría, 60 min. práctica)
Python es conocido por su legibilidad, su sintaxis clara y su enorme comunidad. Sin embargo, pocas personas saben que pueden modificar el propio lenguaje. CPython, su implementación principal, está escrita en C y expone una puerta de entrada fascinante para quienes quieran ir más allá de “usar Python”: aprender cómo funciona desde dentro.
En este taller práctico, partiremos de la pregunta: ¿y si Python entendiera español? A través de este ejercicio, exploraremos cómo funciona la gramática y el parser de CPython cambiando las keywords del lenguaje (como if
, while
o pass
) por equivalentes en español (si
, mientras
, pasar
, etc.).
Este taller nace de una inquietud personal: aunque Python es open source, es difícil encontrar recursos sobre cómo adentrarse en el mismo lenguaje (más allá de la documentación oficial). Ni siquiera en la universidad se aborda este tema. Sin embargo, entender cómo se define y cambia un lenguaje como Python nos da herramientas valiosas: mejorar nuestra capacidad para leer errores, experimentar con nuevos features del lenguaje, crear extensiones o dialectos personalizados, o incluso empezar a contribuir al propio CPython.
En el taller veremos:
Tiempo | Tema |
---|---|
10 min | ¿Qué es CPython? |
10 min | Breve introducción a C |
10 min | Compilando y ejecutando tu propia versión de CPython |
5 min | La estructura del código fuente de CPython |
5 min | ¿Qué es el grammar file y cómo entenderlo? |
25 min | Tu primera modificación a Python: pass a pasar |
25 min | Convirtiendo Python al español: condicionales, bucles y funciones. |
Este taller está pensado para personas con conocimiento intermedio de Python que tengan curiosidad por entender cómo funciona su implementación. No se requieren conocimientos previos de C, compiladores ni teoría de lenguajes —sólo ganas de aprender algo nuevo :)
Imagina que pudieras aprender los ingredientes clave en FastAPI, Typer, SQLModel, etc., para aplicarlos a tu producto y tu código. ✨
(Déjame saber después si el clickbait funcionó. 👆️)
Ya puedes aprender cómo usar FastAPI y amigos en la documentación, así que no te enseñaré eso.
Pero ¿sabes qué no verías en otros lugares? La historia detrás de mis herramientas de código abierto, incluyendo mi peculiar experiencia, puntos de vista y objetivos. Las ideas clave que considero al construir cosas. 🤓
Tal vez solo los principios filosóficos serían aburridos, así que también te daré consejos muy específicos que puedes aplicar a tu producto.
También compartiré algunas de las cosas que podrías aprender al construir proyectos de código abierto usados por mucha gente, incluyendo las ideas contraintuitivas que no esperarías.
Como postre, una mezcla aleatoria de consejos extra que consideraría. 🍪
Imagina que te sentaras conmigo por 1 hora, para darte todos los consejos aleatorios que se me ocurran que podrían ser útiles. Eso es básicamente esta charla.
Los "años de experiencia" en FastAPI que tengo, empaquetados en una sola charla, como una gran verborrea.
Todo hecho de mis opiniones muy subjetivas (las mismas que mis proyectos de código abierto), así que toma todo con un grano de sal, y mucho café. ☕️
El 29 de agosto de 2022 hubo una colisión entre dos barcos en la costa de Gibraltar provocando la rotura del casco del buque OS 35 que transportaba unas 460 toneladas de productos como diésel, fuel-oil pesado y lubricante.
En esta charla queremos analizar esa colisión y para ello analizaremos la posición de los barcos gracias a millones de registros de AIS (Automatic Identification System) y así poder reconstruir los hechos a partir de los datos.
Para ello, utilizamos PySpark y la biblioteca ArcGIS GeoAnalytics Engine para el procesamiento en paralelo de los datos, aplicando transformaciones sobre velocidades y rumbos, así como para la obtención de las rutas de los barcos: antes, durante y después de la colisión.
Durante la charla veremos:
* Cómo estructuramos un pipeline de análisis geoespacial.
* Manejo de los datos con resolución temporal variable y eventos simultáneos.
* Visualización y validación de las trayectorias en mapas.
El objetivo final de esta charla es ver un ejemplo real donde la variable espacial es clave para un análisis completo de los datos.
El auge de los modelos de lenguaje ha transformado la forma en que interactuamos con la tecnología, pero aún existe una gran brecha entre "conversar con una IA" y "ponerla a trabajar en sistemas reales". Esta charla te enseña cómo encapsular una IA que no solo entiende lo que dices, sino que ejecuta acciones, escribe código, gestiona issues, consulta APIs, modifica archivos, automatiza flujos… y todo desde un contenedor.
Verás cómo levantar un MCP en segundos con Docker y Github, conectarlo a un LLM, y exponerlo como servicio conversacional con capacidades de acción. Además, entenderás cómo estos MCPs funcionan como microservicios inteligentes que puedes versionar, compartir y desplegar donde quieras: local, cloud, o CI/CD empleando Python.
La marcha de un cliente a la competencia, el fallo de una pieza o el abandono estudiantil son situaciones donde predecir cuánto tiempo queda para que ocurra un evento crítico es crucial para la toma de decisiones estratégicas. Analizar el tiempo hasta que suceda un evento de interés, así como las causas asociadas, nos permite anticipar y reaccionar adecuadamente, comprendiendo mejor el ciclo de vida de estos acontecimientos y mejorando nuestra capacidad de respuesta.
En este escenario surge el Análisis de Supervivencia, el cual comprende tanto un conjunto de técnicas estadísticas clásicas como de aprendizaje automático donde se trata de estimar el tiempo hasta que ocurre un determinado evento. Este puede abarcar problemas como la entrada en default de una línea de crédito, la fuga de un cliente, la compra de una vivienda o la aparición de un síntoma tras un tratamiento, entre otros. Gracias a este análisis podemos conocer mejor las probabilidades y tiempos para eventos de interés, lo que ayuda a tomar decisiones más informadas y efectivas.
Durante la charla se detallarán las ventajas de usar esta modelización tan común en el mundo académico, pero menos recurrente en el empresarial. Demostraremos que su uso en distintos casos reales aporta un gran valor en comparación con las técnicas más comunes utilzando Python y algunas de sus librerías open-source.
Esta charla está diseñada para un público con conocimientos básicos de estadística y programación básica en Python. No se requiere experiencia previa en análisis de supervivencia.
¿En qué se parecen el veneno para ratas y el Sintrom? No es una pregunta retórica ni el enunciado de un chiste, sino una duda genuina: ¿Cuál es el grado de similitud entre ambas sustancias?
La quimioinformática es una rama del saber que une el mundo de los algoritmos y estructuras de datos con el de las moléculas y los fármacos para dar respuesta a esta y otras muchas preguntas.
En esta charla daremos un paseo interdisciplinar por los pasos necesarios para el desarrollo de nuevos fármacos: desde el "drug discovery" hasta su venta al público general.
Veremos distintas formas de codificar la información de una molécula según nuestras necesidades y algoritmos interesantes que nos permiten predecir sus propiedades.
Y para todo ello, como no, tendremos a Python acompañándonos por todo el camino.
Event-sourced architecture stores all changes to an application’s state as a sequence of immutable events instead of storing a single mutable status. In this talk, we will explore how this approach can help eliminate race conditions, increase visibility into the system and decouple use cases, making changing business requirements easier to handle. Let’s dive deeper into it by studying a case of the transition from state machine to event-sourced architecture in a real-world FinTech service processing customer payments.
In an event-driven landscape where high-traffic systems usually grab the spotlight, we highlight how event architectures benefit scenarios with less traffic too. We will dig deep into states and events and address the common confusion around events and commands, which are sometimes used interchangeably. The talk will discuss both the benefits and challenges of event sourcing.
After this talk, I want you to feel confident adding event sourcing to your set of programming tools and deciding when to apply it.
Target Audience: This presentation is aimed at medior programmers with an understanding of system design and architecture. Concepts will be explained clearly, making the session beneficial for junior programmers as well.
La accesibilidad es un requisito legal, social y moral en el desarrollo de software y Python no puede quedar fuera de esta necesidad de interfaces para todas las personas.
¿Cuáles son los requisitos mínimos de accesibilidad para la UI y qué herramientas nos proporcionan los frameworks de Python para cumplir con la accesibilidad?
En esta charla, exploraremos cómo la integración de PydanticAI y Logfire crea una base poderosa para aplicaciones de inteligencia artificial generativa. Demostraremos cómo estas herramientas se combinan para formar flujos de trabajo de IA sofisticados y brindarte una supervisión integral.
La sesión ilustra cómo PydanticAI permite respuestas de agentes más confiables, mientras que Logfire proporciona información en tiempo real para una resolución eficiente de problemas.
A través de ejemplos prácticos, aprenderás técnicas de implementación que ayudarán a tu equipo a construir sistemas de IA con capacidad de observación, transformando la manera en que desarrollas y mantienes proyectos de inteligencia artificial generativa. 🚀
Actualmente en la industria del videojuego existen muchas herramientas para desarrolladores: Unreal Engine y Unity son las más famosas. La curva de aprendizaje de Unreal Engine es lo suficientemente escalonada como para que la gente busque alternativas más sencillas y Unity ha tomado decisiones controvertidas y ha generado descontento entre las comunidades de desarrolladores. Por estas razones, Godot, que permite usar Python para hacer juegos profesionales, es cada vez más utilizado desde 2023. Las ventajas de este motor son: es de código abierto, ocupa pocos megas, viene con un editor y documentación integrados y utiliza una arquitectura de escenas basada en los principios SOLID. En esta charla, veremos cómo crear paso a paso un juego básico para mostrar las capacidades de Godot, junto con la interfaz sencilla y fácil de usar que proporciona el módulo. Usaremos Python para potenciar el desarrollo. Hacer juegos es muy divertido, y Godot+Python es una muy buena opción para hacer prototipos o juegos completos.
Investigamos cómo se consumen los distintos servicios móviles a escala nacional, estudiando los datos recogidos en una red móvil 3G/4G desplegada en un importante país europeo. Mediante análisis de correlación y agrupación, desvelamos una fuerte heterogeneidad en la demanda de distintos servicios móviles, tanto en el tiempo como en el espacio. En concreto, demostramos que (i) de alguna manera sorprendente, casi todos los servicios considerados presentan patrones de uso temporal bastante diferentes; (ii) en contraste con dicho comportamiento temporal, los patrones espaciales son bastante uniformes en todos los servicios; (iii) cuando se analizan los patrones de uso en diferentes ubicaciones, el volumen medio de tráfico por usuario depende del nivel de urbanización, sin embargo, su dinámica temporal no. Nuestras conclusiones no sólo tienen implicaciones sociológicas, sino que también son relevantes para la orquestación de los recursos de red en las futuras redes 5G/6G con virtualización.
Esta charla es una charla divulgativa apta para todo el mundo (adolescentes incluidos).
En el proceso, aprendí cómo trabajar con los datos de todo un país de forma eficiente (mediante Python, con algoritmos de clasificación, correlaciones, etc.) así como las implicaciones que la tecnología tiene en los comportamientos y formas de vida de las personas (y viceversa).
Plantearse dejar de ser asalariado y montar tu propia empresa es un pensamiento recurrente en nuestro sector, y más ahora donde algunos gurús nos bombardean con que con la IA se puede montar una empresa de una sola persona y forrarse por el camino. Montar una empresa tiene riesgos, alegrías y una tasa de supervivencia mínima.
En esta charla trataré de explicar mi visión, como co-fundador hace 16 años de una empresa que pasó de 2 a 125 personas en ese tiempo. Qué aprendimos en el camino, qué tuvimos en cuenta y qué no. Destinado a la personas que quieren emprender y puede que no sepan lo que les espera.
Contexto
El andaluz es la lengua natural de millones de personas, pero históricamente ha carecido de una representación escrita unificada y de herramientas tecnológicas que lo apoyen. Desde la comunidad de desarrollo de software libre AndaluGeeks hemos apostado por Python para construir un ecosistema que permita usar el andaluz en la web, apps de mensajería, navegadores y dispositivos móviles.
Definición del problema
La ausencia de recursos lingüísticos y tecnológicos ha impedido que el andaluz escrito se normalice y se use con facilidad. Esto limita su presencia digital y su desarrollo futuro como lengua viva y tecnológica.
Cómo contribuye tu propuesta a solucionarlo
Mostraremos cómo Python ha sido el lenguaje clave para abordar este problema. Presentaremos:
andaluh-py
: la librería de transcripción castellano → andaluz.andaluh-api
: un servicio web para integrar la transcripción desde cualquier app.- Bots de Telegram y Discord (
andaluh-telegram
,andaluh-discord
).
Adicionalmente otras herramientas desarrolladas en otros lenguajes:
* Teclado virtual para móviles con autotranscripción.
* Plugins de navegador que traducen cualquier web a andaluz.
Además, hablaremos de los próximos retos técnicos: la transcripción inversa, un diccionario colaborativo y un sistema de text-to-speech andaluz.
Qué has aprendido en el proceso
Python puede ser un vehículo para proyectos con impacto social y lingüístico. El ecosistema ha sido posible gracias a la accesibilidad del lenguaje, su comunidad y la facilidad para construir APIs, integraciones y automatizaciones.
Público objetivo
Desarrolladores/as Python con interés en proyectos sociales, procesamiento de lenguaje natural, bots y APIs. También miembros de comunidades lingüísticas o culturales que quieran crear sus propias herramientas tecnológicas.
Antes de que un avión despegue es necesario tener en cuenta una cantidad abrumadora de variables: la meteorología, la distancia del viaje, peso de despegue, el combustible que necesita, la cantidad de pasajeros y tripulantes en cabina… Y la lista sigue. Emplear todos estos datos para planificar y garantizar un vuelo seguro es trabajo de los conocidos como despachadores de vuelo. A todo esto hay que añadirle que muchos vuelos tienen cambios de última hora, lo que complica enormemente el trabajo de un despachador. El caso más recurrente consiste en la llegada inesperada de un mayor número de pasajeros del que se tenía previsto inicialmente. Esto se traduce en más peso y más necesidad de combustible: un error en la previsión puede significar dejar pasajeros y carga en tierra, con todos los daños y costes que eso supone. A día de hoy esto es un trabajo que, en cierta medida, se realiza de manera manual. Sin embargo, las tecnologías de análisis de datos están avanzando a pasos agigantados, y esto es algo de lo que podemos tomar ventaja.
En esta charla se verá cómo se pueden aplicar estas tecnologías a los casos concretos de un despachador de vuelo en su trabajo, así como las herramientas usadas actualmente en este ámbito. Se mostrará también una propuesta de aplicación en Python que procese los datos de repuntes de pasajeros de los últimos 12 meses y proporcione estimaciones de aumento de pasajeros según la fecha, la hora y el trayecto, con el objetivo de ayudar a prever cambios de última hora. Esta charla permitirá acercar a los asistentes al mundo de la operativa aérea y mostrar el margen de mejora que existe en un sector que no para de crecer.
Los modelos de lenguaje generativos y los modelos clásicos de procesamiento de lenguaje natural basan su aprendizaje, funcionamiento y evaluación en estructuras y principios lingüísticos. Aprenden a generar sintaxis válida, a mapear significados en espacios vectoriales y a responder de forma pragmáticamente coherente. Y sin embargo, la lingüística rara vez se menciona como parte del stack.
En plena era de la IA generativa, esta relación se ha afianzado todavía más, llegando a no poder entenderse el uno sin el otro. En Python, usamos librerías como huggingface, openai, langchain, scikit-learn, etc., para entrenar y disponibilizar modelos que procesan, entienden y generan lenguaje, pero ese lenguaje no es solo texto: contiene una estructura, significado y contexto. Hablamos incluso de que modelos generativos se evalúan según su capacidad de razonamiento, pero ¿no es acaso el razonamiento un principio lingüístico-cognitivo?
Esta charla ofrece una lectura crítica y técnica desde dentro del modelo: ¿cómo emergen estructuras gramaticales? ¿Qué tipo de significado codifican realmente los embeddings? ¿Por qué un buen prompt funciona como acto de habla? ¿Por qué la forma de evaluar ha ido evolucionando hacia métricas cada vez menos cuantitativas? Con ejemplos en Python, exploraremos cómo categorías como la sintaxis, la semántica o la pragmática están en el núcleo de la IA generativa, aunque el discurso técnico lo oculte tras capas de tokens y atención. Esta charla despliega herramientas conceptuales (sintaxis, semántica, pragmática) para entender por qué los modelos hacen lo que hacen y ayudar a sacar todo el potencial que pueden ofrecernos.
Making impossible states unrepresentable es un principio de diseño que suele usarse en lenguajes con tipado de datos fuerte, pero que puede aplicarse igualmente a cualquier lenguaje, estructura de datos o base de datos. La idea es reducir los estados en los que pueden estar nuestros datos, idealmente haciendo imposible representar estados inválidos.
Si conseguimos esto, no solo reducimos el número de estados (Lo que ya de por si es beneficioso), también reducimos o eliminamos los estados conflictivos, lo que es aun mejor. El sistema no tiene que ocuparse de manejar estos estados, porque nunca se los va a encontrar. Hemos hecho literalmente imposible que estos errores se presenten en el sistema.
Veremos varios ejemplos de código Python que inicialmente permiten la representación de estados imposibles, y lo modificaremos para eliminarlos. Estos ejemplos pretenden mostrar como una mejora
relativamente simple puede traducirse en una simplificación drástica del sistema.
En resumen, veremos la importancia de realizar un análisis de los estados de nuestros datos, para determinar si permiten representar estados imposibles. Si es el caso, estudiar la posibilidad de usar
representaciones alternativas que los eliminen. Esto presenta ventajas como la reducción de la complejidad del sistema, del código, de las pruebas y del tratamiento de excepciones, entre otras.
Implementing a deep learning model often feels like working in a chaotic kitchen—a frantic scramble of complex code, unpredictable performance, and seeds that must be 42.
But what if we have a "mise en place" system for implementing AI, where every function is a perfectly prepared ingredient, ready to be combined with precision and speed. It’s the disciplined approach that JAX leverages to unlock its incredible performance.
In this session, we'll put on our aprons to cook an image diffusion model from scratch. You'll learn how the @jax.jit
decorator acts as the "Fire!" command that executes our entire recipe at incredible speed, and how @jax.vmap
lets us shout "Corner!" to serve a whole batch of images in parallel, without a single messy collision.
This talk is for any Python developer who wants to roll up their sleeves and truly understand how Denoise Diffusion Models (a.k.a. a Score-Based Generative Model), the backbone of the popular text-to-image and text-to-video work. This will be a step by step recipe dissecting the ingredients that make these models.
No prior culinary or JAX expertise is required, but you will leave the session wanting to say "Yes, Chef!" to home cook your next model, or at least to understand how it has been cooked.
Vivimos en un mundo donde existen cada vez más delitos, desde estafas hasta casos de violencia, que suelen dejar algún rastro en soportes digitales, como celulares, computadoras o redes sociales, estos generan grandes volúmenes de información y los encargados judiciales (peritos, fiscales o investigadores) que deben analizarlos se les hace muy difícil poder interpretar la información generada. ¿Cómo se podría detectar patrones de comportamiento criminal como amenazas, estafas, extorsiones u otros tipos de indicios que puedan sugerir un crimen y convertirse en la evidencia clave de una investigación?
Los agentes de IA pueden utilizarse para solucionar el rápido análisis, interpretación y generación de una hipótesis concluyente.
LangGraph, es un framework de flujos de trabajo orientado a grafos en Python, ideal para el diseño de agentes modulares, colaborativos y explicables que tienen capacidades de diseñar condicionales y rutas dinámicas. Si se combinan con el uso de los LLMs para generar respuestas lo más humanas posibles, transformaría la forma en la que interactuamos con la evidencia digital.
En esta charla mostraré como construir agentes de IA con LangGraph en Python, desde los fundamentos hasta la aplicación práctica para el análisis de conversaciones claves para la investigación criminal.
El uso de LangGraph me pareció muy poderoso para diseñar flujos que no son lineales, pero lo más importante fue entender que se pueden construir herramientas para temas sensibles y que son necesarias para contribuir a favor de la verdad y la justicia.
Los asistentes podrán replicar estos conocimientos para diseñar y desarrollar sus propios agentes de IA en cualquier área de aplicación y desarrollar soluciones significativas con Python.
Público objetivo
• Desarrolladores de Python con interés en IA aplicada, LangGraph y agentes conversacionales.
• Profesionales de seguridad informática y cibercrimen que busquen automatizar análisis de evidencia.
• Investigadores y peritos que analizan contenido textual en investigaciones judiciales.
Infectious diseases are a major global health challenge, claiming over 13 million lives every year. Despite the availability of interventions – such as vaccination, testing and treatment – determining the most effective strategy can be challenging, as this depends on complex factors like outbreak severity, funding limitations and sociopolitical influences. Computational modelling offers a powerful tool to assess the potential outcomes of different public health responses, but the difficulty of building epidemiological models from the ground up is a barrier to widespread use.
Atomica, a Python-based open source simulation package, addresses this challenge by simplifying the development of epidemiological models. It allows users to create highly configurable data-driven simulations that incorporate disease transmission, intervention strategies and budget constraints. With its user-friendly design and robust capabilities, Atomica allows us to forecast the potential consequences of public health strategies in specific settings. This insight enables policymakers and health organisations to make evidence-based choices, ultimately improving intervention effectiveness and saving lives.
Has any of your Python applications become unresponsive? Has it deadlocked or is it busy doing something? How can you know? When troubleshooting some Python applications you often don’t have time to analyze the source code and to understand how exactly it is working. Instead, you have to act fast and treat the application as a black box. In this talk, I will introduce useful Linux performance and observability tools that can be used to understand which files, connections, and OS system calls your application is performing. I will also share real-world mysteries that this approach has helped to solve.
Software today is slower than hardware improvements over the decades afford us. Ideally after listening to me speak for a bit about performance, how to measure it and how we can improve upon it when using Python, attendees will dedicate some time to making our software faster
La comunicación es esencial para el desarrollo e inclusión de los niños, especialmente para aquellos con TEA o Síndrome de Down. Las herramientas de comunicación alternativa, como los pictogramas, son vitales. Sin embargo, a menudo, trabajar con ellos es un proceso manual y lento, que consume mucho tiempo.
En esta charla, veremos cómo implementar PictoMaker, una aplicación en Python para automatizar la traducción de texto a pictogramas. Veremos cómo funcionan los pictogramas y cómo se usan en entornos educativos para facilitar la comprensión y la expresión. PictoMaker reducirá drásticamente el tiempo necesario para generar y trabajar con estos materiales, permitiendo que la comunicación sea mucho más accesible para familias, educadores y terapeutas.
Compartiremos la motivación tras este proyecto, los retos técnicos y el impacto positivo que ha tenido en la comunidad educativa. Asimismo, hablaremos de cómo desarrollar aplicaciones para entornos educativos, demostrando que Python es una poderosa herramienta para favorecer la inclusión y la accesibilidad.
El 4% de los recién nacidos porta una enfermedad genética. El uso de métodos de diagnóstico prenatal es fundamental para saber llevar y controlar estas gestaciones. Esto es posible hoy en día gracias al auge de las tecnologías de secuenciación genética, pero su output no es tan sencillo de gestionar. Aquí es donde el uso de la programación puede ayudarnos, automatizando y facilitando todo el proceso de análisis. Eso es exactamente lo que haremos en esta charla: usar Python para dilucidar, como ejemplo, la presencia de mutaciones asociadas a la epidermólisis bullosa (piel de mariposa) en el ADN de un embrión o un feto a partir de una muestra de la persona gestante. También revisaremos asuntos esenciales de la regulación y control de calidad de estas herramientas clínicas, así como otras aplicaciones sanitarias y responsabilidades asociadas a estas tecnologías (para no caer, por ejemplo, en la eugenesia).
If you have ever developed a Django application you have most likely used Models, have you ever questioned yourself how they work? How do they validate Meta options?
The answer is, meta classes!
In this talk we will make a quick introduction to meta classes, see how Django uses them and build our own Models from scratch!
AI and dynamic pricing are transforming traditional pricing strategies and expanding rapidly. In a subtle and clever game, algorithms analyze your behavior and preferences to determine the exact price you are willing to pay. It's no longer just the big companies controlling the board; now, the power lies in a complex network of data that watches your every click. Are you ready to challenge the established rules and uncover the secrets of the powerful game of dynamic pricing?
In this keynote, we will analyze how different machine learning algorithms meticulously analyze your behavior, preferences, and personal data to infer the exact price you are willing to pay to maximize business profits. Should I make an offer to my customer to prevent them from canceling their subscription, or should I keep increasing the price because they will never cancel it? Should I sell this product at a higher price or discount it because, otherwise, they wouldn't buy it?
Different approaches to dynamic pricing will be addressed, ranging from traditional techniques based on elasticity calculations through classical Machine Learning algorithms to less known but equally useful techniques such as Bayesian approaches or reinforcement learning systems through contextual bandits.
Automatiza el despliegue y gestión de tu infraestructura con Python usando el proyecto de IaC OSS (de verdad) de Pulumi.
Con infraestructura como código puedes automatizar el despligue, gestión y eliminación de tus recursos, aplicaciones y servidores en la nube, Kubernetes, contenedores, y miles de entornos y proveedores.
En lugar de usar pseudo lenguajes de configuración más que de programación, utiliza tu lenguaje preferido como Python, Java, TS, etc., con todas sus librerías e integraciones disponibles, usando Pulumi, un proyecto OSS Apache 2.0 alternativa a Terraform y OpenTofu.
En esta charla tendremos una demo sobre cómo desplegar, administrar, evolucionar y eliminar los recursos para desplegar una webapp en Python desplegada en un clúster de Kubernetes en Google Cloud, usando Python como lenguaje de IaC para Pulumi.
De hecho, veremos cómo podemos usar IaC, Python y Pulumi para automatizar la creación de entornos en la nube para organizar talleres, con una plantilla OSS para Pulumi+Python.
Lithops is a Python multi-cloud distributed computing framework.
It allows you to run unmodified local python code at massive scale in the main serverless computing platforms.
Lithops delivers the user’s code into the cloud without requiring knowledge of how it is deployed and run.
Moreover, its multicloud-agnostic architecture ensures portability across cloud providers and on-premise deployments.
In particular, Lithops offers compute and storage backends for most public Clouds (AWS, Google, Azure, IBM, Oracle,
Alibaba), HPC Supercomputers (LithopsHPC), and on-premise deployments (OpenShift, OpenNebula, k8s).
Lithops is well suited for highly-parallel programs (parallel map) with little or no need for communication between
processes (i.e. Monte Carlo simulations). However, Lithops is especially useful for parallel data processing
where many functions read or write in parallel from Object Storage.
In this talk, you will learn how to run parallel python code over different Cloud backends with minimum effort and zero changes in code.
The magic of lithops is the burstability and elasticity of Cloud resources, enabling to launch 1000 processes in parallel in less than 100ms.
¿Puede un edificio aprender a autoregular su temperatura de forma inteligente, reduciendo
el consumo energético sin comprometer el confort?
En esta charla exploraremos cómo aplicar Deep Reinforcement Learning (DRL), una
técnica de inteligencia artificial que combina redes neuronales profundas con aprendizaje por
refuerzo para tomar decisiones óptimas mediante prueba y error en entornos complejos. Para
lograrlo, a través de un caso real de investigación y transferencia tecnológica desarrollado entre
Georg Fischer Building Flow Solutions y la Universidad de Granada.
Utilizando la herramienta open-source Sinergym, basada en Python y acoplada al simulador
EnergyPlus, mostraremos cómo entrenar agentes inteligentes que aprendan políticas de
climatización sostenibles. Pero vamos más allá del modelo: enseñamos la arquitectura completa
que permite lanzar experimentos en paralelo, evaluar resultados y desplegar automáticamente los
mejores modelos en producción mediante CI/CD.
Mostramos no solo cómo funciona este enfoque, sino también como puede integrarse de
forma práctica en sistemas reales, abriendo la puerta a edificios más sostenibles e inteligentes.
Aprenderás:
• Cómo diseñar recompensas multiobjetivo que equilibran confort térmico y eficiencia
energética.
• Qué retos plantea entrenar agentes estables y generalizables en ambientes complejos.
• Cómo llevar un modelo desde la simulación hasta su integración en edificios reales, con
todas las consideraciones de latencia, fallos y datos ruidosos.
Una charla pensada para quienes quieren llevar la IA aplicada a sostenibilidad un paso más allá:
desde el laboratorio hasta el mundo real.
LLMs are great at taking on a specific perspective and automating tedious tasks. In this session, we'll explore how we can use these capabilities for testing.
With the right context, LLMs can take on the user's (or at least the user story writer's) perspective. They can use the expected functionality as a starting point for tests, instead of the implementation.
And of course, they can crank out a huge amount of code: test functions, helpers, fixtures, mocks, or even realistic-looking test data.
¿Te gustaría transformar esos scripts difíciles de entender en aplicaciones web con una interfaz bonita, funcional y mobile-friendly? Únete a esta charla para descubrir cómo Streamlit convierte tu código en herramientas que cualquiera puede usar: desde tu jefe hasta tu pareja.
Con Streamlit no necesitas saber HTML, CSS ni JavaScript. Podrás crear formularios, paneles interactivos y hasta chats para probar los últimos modelos de inteligencia artificial. Su componente de chat te permitirá interactuar fácilmente con tus agentes de IA y sacarles el máximo provecho.
Si trabajas con datos, aquí te sentirás como en casa. Streamlit se integra perfectamente con bibliotecas como Pandas, Matplotlib, Plotly, Bokeh o Folium, y hasta puedes mostrar mapas interactivos con Mapbox. Explora tus dataframes, ordénalos, búscalos e interactúa con ellos sin complicaciones.
Si ya sabes Python y quieres empezar a construir sin enredarte con el frontend, esta charla te dará una visión clara, práctica e inspiradora de todo lo que puedes lograr con Streamlit.
Diferentes medios repiten continuamente que la masificación de la Inteligencia Artificial Generativa está cambiando la educación tal y como la conocemos. Sin embargo, cuando profundizas un poco, descubres que lo único que se está aplicando son plantillas de prompts en herramientas propietarias como ChatGPT o Gemini. En los centros educativos se presenta un conflicto cotidiano: alumnado que utiliza estas herramientas únicamente para resolver sus tareas y profesorado preocupado por un uso descontextualizado, al mismo tiempo que también las utiliza para crear enunciados, exámenes y hasta correcciones. Creo que tenemos que cambiar el enfoque hacia un escenario más optimista.
Si queremos evitar los errores del pasado con la introducción de nuevas tecnologías, tendremos que dejar de aplicar estas herramientas al paradigma que teníamos hasta ahora y pensar cómo podríamos beneficiarnos de la existencia de la IA para transformar cómo abordamos la educación.
Con esta preocupación en mente, comencé a desarrollar un ecosistema open source que comenzó con LearnMCP-xAPI. Esta aplicación es un servidor MCP (Model Context Protocol) que permite a un sistema agéntico consultar y registrar interacciones de aprendizaje en un LRS (Learning Record System, un sistema de registro del aprendizaje). Además, su diseño interoperable facilita la integración con otras herramientas y hace posible aplicar en el aula principios de psicología cognitiva que antes resultaban complejos, como la retroalimentación inmediata y la adaptación al conocimiento previo del alumnado.
En esta charla explicaré cómo funciona, por qué me está resultando útil como docente, qué desafíos tenemos entre manos y cómo he creado un ecosistema de herramientas usando Python y Gradio, un paquete orientado al prototipado rápido de aplicaciones que usan IA, que además sirve directamente para ponerlas en producción con una triple interfaz: una para humanos, otra para los demás programas y una tercera para los sistemas agénticos.
¿Puede un LLM jugar al póker?
En esta charla veremos varios LLMs compitiendo entre sí en una partida de poker. Mediante un servidor MCP permitiremos que los LLMs elijan sus acciones en base a sus cartas, fichas y estado de la mesa.
Para rematar veremos una partida en directo con vuestras mejores estrategias.
Incluir inteligencia artificial es un objetivo prioritario en cualquier proyecto hoy en día. La tecnología cambia con una velocidad asombrosa, y es todo un reto estar al día de los últimos avances. Esto provoca que no tengamos tiempo de volvernos expertos en todos los problemas que puede ocasionar, quizás solo dándonos cuenta cuando los proyectos están ya en funcionamiento.
En esta charla, Vicente Herrera y Alberto Rodriguez demostrarán algunos problemas de seguridad, fiabilidad y sesgos de proyectos que emplan Modelos Grandes de Lenguaje (LLM), cómo medirlos, y cómo mitigarlos, combinando su experiencia en proyectos fintech, colaboración en elaboración de estandards como AI Governance Framework de la FINOS Foundation, y bug hunting para Anthropic.
Nos enseñarán cómo realizar mediciones que nos permitan establecer la situación de estos LLM, utilizando datasets como real-toxicity-prompts o herramientas como Garak. Veremos la diferencia de las métricas publicadas con la medición de los modelos una vez desplegados en producción. Luego mostrarán cómo mejorar la seguridad de los modelos como patrones como "LLM as a judge" utilizando LLM Guard.
Los asistentes aprenderán posibles riesgos en proyectos de IA a tener en cuenta durante la planficación, y cómo emplear herramientas para evitarlos. Todas las herramientas y procedimientos demostrados serán open source.
State-of-the-art machine learning models can give unparalleled accuracy and still be useless. Why?
Explainability. If your model is a black box, you won’t be able to explain its predictions to business stakeholders, regardless of how accurate they are. And business stakeholders won’t use a model they don’t understand.
But what if you could show them what happens inside the black box?
With SHAP values you can do it. SHAP values are model agnostic, so you won’t even need to change your machine learning pipelines to make them interpretable. All you need are a few lines of code and understanding what those lines do.
Because even the best explainability tool is useless if you don’t understand the explainability tool.
That’s why in this talk we’ll walk through both the math and the intuition behind SHAP values.
Where do they come from?
Why do they work?
How are they computed?
How do you interpret them?
What are their limitations?
Imagine you could explain the predictions of even the most complex machine learning models to your business stakeholders.
That’s what understanding SHAP values will allow you to do.
The growing complexity of machine learning operations has introduced significant challenges for data science teams, particularly as large language models become central to production systems. This talk introduces MLOPTIFLOW, an open-source Python framework designed to address critical MLOps pain points through automated project inception, real-time monitoring, and adaptive deployment strategies.
The session will include code demonstrations highlighting how these components work together to reduce operational complexity while improving reliability. We'll discuss implementation patterns that enhance reproducibility, observability, and adaptation to shifting data distributions - challenges particularly acute when deploying and monitoring LLMs. Attendees will leave with practical insights on streamlining their ML/LLM workflows using a unified, Python-native approach to model lifecycle management.
¿Sabías que desde el año pasado existe un curso oficial de Python especialmente pensado para jóvenes de formación profesional? El Institut TIC de Barcelona es uno de los pioneros a nivel estatal en impartirlo y el único centro público de Barcelona que lo ofrece.
En esta charla presentaremos el contenido, la metodología y los objetivos del curso, y sobre todo exploraremos las librerías y herramientas que motivan a esta generación, acostumbrada a la inmediatez y a obtener resultados rápidos, a aprender Python. Frameworks y librerías como FastAPI, Streamlit, uv o Marimo permiten a los desarrolladores pasar de la idea a la aplicación real en muy poco tiempo, creando proyectos interactivos, visuales y listos para producción con poco esfuerzo.
Gracias a estas nuevas maneras de trabajar, el proceso de aprender y crear aplicaciones encaja perfectamente con el ritmo, los intereses y el estilo de la Generación Z.
¿Te está pesando Django REST Framework? A nosotros también.
En esta charla te cuento cómo Django Ninja se convirtió en el clavo perfecto para sacar a DRF y abrirnos la puerta al mundo moderno de FastAPI, sin tener que tirar nuestro proyecto a la basura.
Hicimos una transición progresiva: primero cambiamos, componente a component, la API a Ninja, aprovechando su tipado, su simplicidad y su cercanía a FastAPI. Eso nos permitió luego migrar partes del sistema a FastAPI con mucha más facilidad.
Hablaremos de diferencias clave entre DRF y Ninja, las ventajas y desventajas que ofrece, el por qué de nuestra decisión, y cómo esa transición facilitó el paso posterior a FastAPI.
La computación cuántica promete revolucionar las ciencias de la computación. Los algoritmos cuánticos usan fenómenos microscópicos como la coherencia cuántica para buscar soluciones eficientes a problemas irresolubles para los superordenadores actuales. Las unidades de procesamiento cuántico, y otras aceleradores hardware, se están instalando en centros de supercomputación públicos. Para hacer un uso correcto de estos recursos, es necesario el desarrollo de nuevos paradigmas de arquitecturas software que integren sistemas de computación de alto rendimiento heterogéneos.
En esta charla, daremos una introducción al diseño de sistemas de computación de alto rendimiento híbridos cuántico-clásicos. Analizaremos los casos de uso de Python en sistemas de supercomputación heterogéneos. Revisaremos las limitaciones actuales de Python en computación de alto rendimiento en sistemas multi-CPU con multi-threading y GPUs. Analizaremos los casos de uso prácticos presentando resultados numéricos obtenidos con la librería de Google QSim en el cluster Proteus de la Universidad de Granada. Dicha aplicación hace un uso eficiente de recursos para problemas de simulación de circuitos cuánticos combinando librerías optimizadas en C/C++ con OpenMP integradas en Python mediante Pythong bindings. Comentaremos limitaciones de métodos purely-Pythonic como Numba y PyOMP, así cómo limitaciones actuales de pure Python para el uso de FPGAs y sistemas multi-threading. Desarrollaremos los casos de uso dónde Python destaca actualmente para el diseño de arquitecturas software híbridas clásico-cuánticas como el diseño de interfaces ágiles en sistemas de alto rendimiento de alta complejidad integradas con librerías optimizadas en otros lenguajes como C/C++.
En esta charla exploraremos el mundo de las pruebas unitarias en Python utilizando Pytest, uno de los frameworks más populares y potentes. Comenzaremos por entender la importancia de las pruebas unitarias en el desarrollo de software moderno y cómo contribuyen a la creación de código más robusto y mantenible.
Introduciremos tres metodologías clave: Data-Driven Testing (DDT), Test-Driven Development (TDD) y Behavior-Driven Development (BDD). Veremos cómo cada una de ellas aborda las pruebas desde una perspectiva diferente, y cómo Pytest nos facilita su implementación.
A través de ejemplos prácticos y concisos, los asistentes descubrirán cómo escribir sus primeras pruebas con Pytest, ejecutar tests, interpretar los resultados y aprovechar algunas de las funcionalidades básicas del framework. Esta charla es ideal para desarrolladores que se inician en el testing con Python o que desean conocer las ventajas de Pytest.
En los últimos años estamos asistiendo a una carrera obsesiva para la mejora de nuestros modelos de IA y no hacemos más que meter más y más. Ya sabéis: Bigger is Better. Más neuronas. Más unidades de cómputo. Más GPUs. Más memoria. Más servidores. Más refrigeración. Más cores. Más todo. Lo que haga falta para tener más accuracy que el estado del arte.
Fantástico, nuestro modelo ahora tiene un 1% de mejora respecto al de la competencia...
... pero consume 50 veces más energía.
En esta charla presentaremos el problema de la huella de carbono que producen los modelos de IA (incluyendo el elevadísimo consumo de agua de los centros de datos) y discutiremos la necesidad de añadir una nueva métrica a nuestros resultados: la energía consumida. Veremos cómo medir el consumo energético de manera realmente sencilla utilizando la librería CodeCarbon, que permite acceder a los registros energéticos RAPL del procesador y los de la GPU y permite obtener tanto la energía como el C02 emitido a la atmósfera. También veremos otras técnicas que deberíamos tener en cuenta a la hora de hacer nuestro software un poco más verde.
Las arquitecturas serverless escalan con facilidad, pero no se caracterizan precisamente por su velocidad. En entornos de ejecución efímeros con Python como AWS Lambda o plataformas serverless basadas en contenedores, la latencia de arranque, el uso de memoria y el coste de la serialización pueden convertirse rápidamente en respuestas más lentas y facturas de infraestructura más altas.
Nos vimos ante estas limitaciones al construir una API web que procesa miles de ofertas de vuelo por petición —deserializar, enriquecer, transformar, responder— y necesitábamos recortar cada milisegundo innecesario. No esperábamos que el garbage collector (GC) de Python fuera un problema en funciones tan breves… hasta que vimos que consumía cientos de milisegundos por invocación. Este hallazgo cambió por completo nuestra forma de afinar el rendimiento.
Compartiremos las optimizaciones de bajo nivel que nos permitieron hacer ese sistema más rápido, ligero y predecible. Veremos cómo "desactivamos" el garbage collector (gc) durante los puntos críticos, migramos de Pydantic a TypedDict para reducir la sobrecarga en la serialización y reestructuramos partes del código para reducir la presión de memoria. En una de las funciones clave, pasamos de 1,2 segundos a solo 300 milisegundos —una mejora de 4×. Mostraremos pruebas de rendimiento reales, decisiones de diseño y compromiso técnico que cuestionaron nuestras propias suposiciones sobre las "mejores prácticas".
A lo largo de la charla, profundizaremos en el modelo de memoria de Python, el ciclo de vida de los objetos y el comportamiento en tiempo de ejecución, aplicando estos conceptos a sistemas reales. Aunque nuestro caso se ejecuta en AWS Lambda, las lecciones se aplican a cualquier carga de trabajo Python crítica en rendimiento y de corta duración, ya sea serverless, en contenedores o ejecutándose en entornos edge.
Si trabajas con web APIs y quieres exprimir todo el potencial de Python, esta charla es para ti.
¿Cómo se enseña programación hoy cuando la IA ya sugiere código antes de que el alumnado entienda el problema? Esta charla propone una reflexión práctica, desde el aula, sobre la importancia del pensamiento computacional en estudiantes de ESO y cómo se ha transformado la enseñanza de la programación en ciclos formativos con la irrupción de herramientas de inteligencia artificial. A través de casos reales y experiencias docentes, se analizará el papel de Python como vehículo educativo y cómo adaptar la enseñanza a este nuevo paradigma sin perder el enfoque formativo y crítico.
Contexto
Durante años como docente de informática en distintos niveles educativos —desde 1º de ESO hasta ciclos formativos de grado superior— he utilizado Python como herramienta para introducir a mi alumnado en la lógica de la programación y el pensamiento computacional. En los últimos años, la aparición de herramientas de inteligencia artificial ha provocado un cambio en la forma en que los estudiantes abordan la resolución de problemas y la programación.
Definición del problema
Nos enfrentamos a un dilema: ¿cómo fomentamos el desarrollo del pensamiento computacional cuando la inteligencia artificial puede escribir gran parte del código? ¿Está el alumnado preparado para aprovechar estas herramientas con criterio, o corremos el riesgo de sustituir comprensión por dependencia?
Contribución de la charla
Proporcionaré un análisis desde la experiencia real en el aula sobre:
- Cómo se puede seguir fomentando el pensamiento computacional en ESO con Python.
- Qué retos y oportunidades plantea la IA en la enseñanza de programación en FP.
- Ejemplos concretos de actividades, errores comunes y aprendizajes significativos.
- Propuestas metodológicas para integrar la IA sin dejar de lado la comprensión profunda.
Nivel
Básico / Intermedio
(Enfocado a docentes, educadores/as, o personas interesadas en la enseñanza de Python y la integración educativa de la IA).
¿Cuánto cuesta iniciarte en robótica con Python? ¿Miles de euros? ¿Años de estudio? Resulta que con 100 € y un patito de goma, puedes hacer cosas realmente interesantes.
En esta charla veremos cómo usar Python para controlar un robot, con una demostración en vivo asistida por un sujeto de pruebas muy especial: nuestro patito de goma de debugging. Nuestro robot es el SOARM100, un brazo robótico de código abierto que puedes replicar por menos de 100 € con piezas de impresión 3D y componentes de Aliexpress.
Empezaremos por lo más básico: mover los servomotores con unas línes de código. Con un poco más de esfuerzo podemos hacer cosas realmente interesantes, y la buena noticia es que hay herramientas para todo que facilitan mucho la tarea: ¿Percepción del entorno? ¡Si! ¿Control avanzado de las trayectorias? ¡Si! ¿Simulación, para poder probar sin romper nada? ¡También!
Y acabaremos con una nueva forma de hacer robótica utilizando inteligencia artificial para que sea mucho más accesible todavía. Vamos a "llevar de la mano" para entrenarlo y que aprenda a reconocer objetos y a ejecutar tareas nuevas de forma muy robusta y capaz de adaptarse en tiempo real a cambios en las condiciones. Todo con Python y recursos de código abierto.
Este proyecto mezcla lo educativo, lo técnico y lo divertido.
El objetivo es picar tu curiosidad sobre este mundo fascinante y mucho más accesible de lo que te piensas. No vas a salir convertido en un experto en robótica, pero si con ganas de construir, programar, y quizá adoptar tu primer patito de goma.
Ningún animal de goma fue dañado -mucho- durante la preparación de esta presentación.
Los modelos de Procesamiento de Lenguaje Natural (PLN) son cada vez más críticos en aplicaciones como chatbots, análisis de sentimientos y traducción automática. Sin embargo, su exposición a ataques adversarios —modificaciones sutiles en los inputs diseñadas para engañar al modelo— revela vulnerabilidades de seguridad y robustez.
En esta charla, exploraremos cómo TextAttack, un framework de código abierto, permite simular estos ataques para evaluar y mejorar la resistencia de los modelos de PLN. A través de ejemplos prácticos, demostraremos técnicas comunes de ataque, su impacto en modelos preentrenados (como BERT o GPT), y estrategias para mitigarlos.
Contexto:
En entornos científicos, académicos o de análisis de datos, muchas personas comienzan sus proyectos en notebooks por comodidad. Sin embargo, esa práctica, aunque válida para exploración, suele extenderse demasiado en el tiempo y termina impactando negativamente en la calidad del código, la colaboración en equipo y la posibilidad de escalar a producción. Existe una necesidad urgente de formar a la comunidad en buenas prácticas de desarrollo desde el principio, incluso en contextos no “puramente ingenieriles”.
Definición del problema:
El uso excesivo y desestructurado de notebooks genera varios problemas:
- Ausencia de diseño modular y reutilizable.
- Dificultad para testear el código o integrarlo en flujos automatizados.
- Proyectos que no escalan y se vuelven imposibles de mantener.
- Poca claridad entre etapas de exploración, desarrollo y entrega.
Cómo contribuye mi propuesta:
Esta charla se centra en enseñar buenas prácticas para organizar proyectos, ayudando a quienes vienen del mundo notebook o del scripting informal a adoptar una mentalidad más sólida. Se cubren:
- Estructura de carpetas y archivos
- Separación de lógica, parámetros, datos y resultados.
- Modularización del código: funciones reutilizables...
- Introducción al testing como práctica habitual
- Uso del debugger sin depender solo del “print debugging”.
- Principios básicos de CI/CD: Ventajas en la implementación de CI/CD de tu código.
Más que presentar herramientas, la charla propone una cultura de trabajo sólida, con ejemplos sencillos y aplicables a cualquier persona que esté comenzando o quiera profesionalizar sus prácticas.
He aprendido que:
- Enseñar estructuras claras desde el inicio evita migraciones traumáticas.
- Las buenas prácticas no deben reservarse para “proyectos grandes”.
- Es posible enseñar modularidad, testing y documentación sin tecnicismos excesivos.
- Una estructura clara facilita el onboarding, la colaboración y la entrega del trabajo.
Nivel de dificultad: Intermedio
Público objetivo:
Cualquier usuario de Python que quiera subir a producción sus desarrollos.
Cada vez que ejecutamos una suite de tests estamos generando información valiosa: qué tests fallan, cuánto duran, si hay patrones, si cambian con el tiempo… Sin embargo, esta valiosa información suele perderse entre los logs o simplemente no se recolecta.
En general, no tenemos una visión clara del comportamiento histórico de nuestros tests. Esto impide detectar flaky tests, cuellos de botella, degradaciones en la duración o áreas del código que no se prueban. Sin visibilidad, se pierde capacidad de diagnóstico y mejora.
En esta charla usaremos Python para construir un sistema sencillo que recolecte los resultados de cada ejecución de Pytest, los almacene en una base de datos y nos permita visualizarlos. A partir de ahí, veremos cómo:
- Visualizar tendencias de fallos en los tests, así como cambios en su duración.
-
Detectar flaky tests de forma pasiva, observando variabilidad entre ejecuciones.
-
Identificar nuevos tests que comienzan a fallar y patrones de inestabilidad.
-
Priorizar mejoras en la calidad a partir de datos reales.
Todo usando herramientas in-house, sin depender de SaaS externos, y con ejemplos prácticos para replicar fácilmente.
Muchas veces los problemas de calidad están delante nuestro, pero el árbol no nos deja ver el bosque. Con una infraestructura mínima y bien enfocada se pueden detectar y resolver patrones que de otra forma pasarían desapercibidos.
¿Cómo conseguir que los adolescentes se interesen por el mar, la ciencia y la tecnología sin morir en el intento? En un mundo dominado por TikToks, retos virales y bulos, puede parecer una misión imposible. Sin embargo, la iniciativa SECOSTA es una herramienta muy útil para que l@s profesor@s de secundaria lo logren.
En SECOSTA, los estudiantes construyen sus propios dispositivos oceanográficos, utilizando tecnología de bajo coste y código abierto basada en Arduino. Con estos aparatos realizan campañas de campo donde recopilan datos sobre perfiles de playa, temperatura, nivel del mar o imágenes del fondo marino. Toda la información recopilada se envía a grupos de investigación para su análisis en profundidad. Al mismo tiempo, los estudiantes aprenden a trabajar con cuadernos de Google Colab con scripts de Python personalizados para procesar, analizar y visualizar sus datos. Con ello, generan resultados interpretables que pueden usar en los proyectos de investigación marina propuestos por SECOSTA.
En esta charla, compartiremos nuestra experiencia como parte del equipo. Nuestro compromiso con la colaboración interdisciplinaria, combinado con el potencial de la tecnología de bajo coste junto al procesado de datos y la IA impulsados por Python, ofrece un modelo replicable para afrontar los grandes desafíos ambientales, uniendo educación, ciencia y tecnología de forma innovadora y motivadora.
En esta charla exploraremos cómo sacarle todo el partido a nuestro código en Python usando FastAPI, con el objetivo de que nuestras especificaciones API sean claras, inequívocas y nos ayuden a eliminar la fricción comunicativa con distintos tipos de integradores. Abordaremos preguntas comunes como: ¿OpenAPI y Swagger son lo mismo? ¿Cómo le explico al cliente que hay que pedir un token antes de hacer peticiones? ¿Cómo documento mi servicio sin estar 5 horas escribiendo en un Markdown?
Desglosaremos conceptos, técnicas y mejores prácticas que puedes emplear en el desarrollo de tu API para que documentar no sea un dolor de cabeza para nadie. Veremos con estos trucos cómo tu API puede evolucionar sin límites y sin romper integraciones, y cómo puede comunicar de manera efectiva las cosas verdaderamente importantes a los desarrolladores que las utilizan.
We propose a disaster-thinking exercise applied to remote work in Spain: what would happen if Godzilla, embodying a cataclysm, devastated Murcia? Using real data on population, remote work adoption, and the electrical and digital networks, we build a multimodal graph where the nodes represent teleworkers, companies, and infrastructure hubs. The monster is modeled as a "mobile shock" that removes nodes and triggers cascading failures of first order (Murcia), second order (neighboring regions), and third order (the rest of the country).
Current figures are presented: 15.4% of employed people in Spain work remotely, and 37.5% of companies allow it—but only 9.4% do so in Murcia, compared to the much higher prevalence of remote work in other eastern Spanish cities like Valencia or Barcelona. Using networkx and statsmodels, we simulate productivity losses, recovery times, and elasticity with respect to electrical and telecommunications redundancy. A brief predator-prey model illustrates how infrastructural inactivity “devours” active man-hours.
The second part subjects Valencia and Barcelona to the same scaled-up shock, demonstrating that national impact does not depend solely on city size. Instead, the density of teleworkers and the interdependence of external firms amplify the damage. We complement the analysis with results from a self-conducted survey on corporate protocols and individual willingness to work during a disaster. These results are used to calibrate assumptions about human behavior.
Si trabajas con servicios web, es muy posible que trabajes con contenedores. Pero, ¿estás seguro de que están bien construidos? Los síntomas de tener imágenes subóptimas pueden ser difíciles de detectar, y esto suele ser un punto ciego para muchos equipos de ingeniería.
En esta charla, vamos a explorar estrategias y consejos para construir mejores imágenes. En lugar de reiterar consejos habituales y documentación conocida sobre temas siempre presentes respecto a contenedores (como, por ejemplo, las capas de la caché o el multi-staging), intentaremos proporcionar datos, perspectivas y opiniones que no sean tan comunes y que no estén presentes en otras charlas y artículos sobre este mismo tema (la utilidad del bytecode en la imagen final, alternativas a Docker, etc).
Tener métricas, trazas y logs ya no es opcional, pero… ¿realmente los usamos bien? La mayoría de los equipos ponen herramientas de observabilidad en producción porque “hay que tenerlas”, pero no siempre saben qué están viendo, ni cómo usarlas para tomar decisiones técnicas.
En esta charla hablaremos de algo menos técnico pero igual de importante: cómo integrar la observabilidad en la cultura del equipo. No como un dashboard más que nadie mira, sino como una forma de entender nuestros sistemas, prevenir errores y empoderar a cada dev (sí, también a quienes no son SREs).
Compartiré experiencias reales de equipos Python que pasaron de ver la observabilidad como una “checklist” a convertirla en una herramienta viva, útil y compartida. Con ejemplos, buenas prácticas y algún que otro fail del que se aprende mucho.
El lenguaje de signos es un idioma completo, visual y espacial, que millones de personas utilizan diariamente. Sin embargo, su integración con tecnologías de reconocimiento automático sigue siendo limitada.
Exploraremos cómo abordar este desafío desde cero: desde la captura de datos con vídeo hasta la extracción de características relevantes y la interpretación temporal del gesto. Abordaremos también los desafíos lingüísticos y técnicos particulares del lenguaje de signos, como la simultaneidad de manos, la necesidad de contexto, y la variación regional.
Para abordar los distintos componentes del sistema, exploraremos el uso de tecnologías que facilitan el seguimiento de manos y cuerpo como MediaPipe y OpenCV. Esto ofrece un camino práctico para quienes deseen desarrollar soluciones similares.
Finalizaremos con una demo del prototipo funcionando en vivo, destacando tanto los avances como las limitaciones actuales, y discutiendo cómo este tipo de proyectos puede contribuir a una tecnología más accesible e inclusiva.
¿Alguna vez has necesitado depurar una aplicación de Python en producción sin detenerla? Aunque herramientas como GDB facilitan esta tarea en C/C++, los desarrolladores de Python enfrentan desafíos únicos al conectar debuggers a procesos en ejecución. Esta charla presenta la PEP 768, una nueva propuesta para Python 3.14 que añade una interfaz de depuración segura y sin sobrecarga al intérprete de CPython.
Exploraremos cómo el panorama actual obliga a las herramientas de depuración a utilizar métodos inseguros que pueden provocar fallos en el intérprete y corrupción de memoria. Luego, detallaremos cómo la PEP 768 resuelve estos problemas mediante la introducción de un protocolo de depuración cooperativo que trabaja junto con el intérprete, en lugar de en su contra.
Aprenderás por qué conectar debuggers a procesos de Python es especialmente desafiante, cómo la PEP 768 permite una depuración segura gracias a la cooperación con el intérprete, los detalles técnicos de su implementación sin sobrecarga, aplicaciones en el mundo real —incluyendo la conexión en vivo para pdb
— y todo sobre las consideraciones de seguridad y los mecanismos de protección.
Esta charla será especialmente valiosa para desarrolladores de herramientas, administradores de sistemas y cualquier persona interesada en las entrañas de Python o en técnicas de depuración. Saldrás con una comprensión profunda de los desafíos de la depuración en procesos en vivo y cómo la PEP 768 los resuelve de forma elegante.
Tu aplicación funciona, pero ¿qué pasa cuando la demanda se dispara? ¿Tu infraestructura realmente escala "al infinito" como prometen las tecnologías Cloud que utilizas? Esta charla va más allá de la superficie y te invita a desafiar tus sistemas con Load Testing.
Utilizando un enfoque práctico con una situación simulada, desglosaremos la necesidad de someter nuestras aplicaciones a estrés controlado para detectar problemas antes de que estos ocurran en producción. Analizaremos escenarios comunes donde una falta de Load Testing lleva a caídas inesperadas, problemas para los usuarios y daño reputacional. Te mostraremos cómo planificar, ejecutar y analizar pruebas de carga para revelar la capacidad real de tu arquitectura y sus dependencias.
Al final de esta sesión, tendrás las herramientas para anticipar el caos, optimizar el rendimiento y asegurar que tu aplicación no solo funcione, sino que prospere bajo presión. Prepárate para descubrir los verdaderos límites de tu sistema.
En muchas plataformas de datos, es habitual tener batch y en streaming para el procesamiento, lo cual plantea desafíos importantes en cuanto a consistencia, mantenimiento y reutilización de código. Spark Structured Streaming es una solución robusta y versátil que permite utilizar la misma API para abordar los dos escenarios de forma coherente.
A lo largo de esta sesión, exploraremos las principales características de Structured Streaming y cómo utilizarlo para construir pipelines de datos en PySpark. Veremos cómo su enfoque basado en micro-batches y checkpoints permite implementar flujos de datos tanto en real time como en batch, manteniendo un diseño unificado.
Aunque Structured Streaming es una funcionalidad open source de Spark, en esta charla lo vamos a implementar sobre la plataforma Databricks, aprovechando su integración con herramientas como Auto Loader o limpieza de la landing zone. Veremos cómo estas capacidades facilitan el desarrollo de pipelines consistentes, escalables y reutilizables, independientemente de la frecuencia o el volumen de los datos.
Instagram registra cada interacción: likes, mensajes, stories vistas, búsquedas y cambios en seguidores. Aunque no publiques nada, tu actividad deja un rastro.
En esta charla, exploraremos cómo acceder y analizar los datos que Instagram recopila sobre ti. Utilizaremos Python, con bibliotecas como pandas o polars, para limpiar y estructurar la información descargada desde el portal de privacidad de la plataforma.
Construiremos un dashboard interactivo con Dash para visualizar patrones de comportamiento a lo largo del tiempo. Aplicaremos técnicas de detección de anomalías en series temporales (como z-score móvil, IsolationForest o DBSCAN) y clasificadores supervisados (RandomForestClassifier, LogisticRegression) para identificar posibles cambios significativos en tu actividad digital.
Finalmente, reflexionaremos sobre el valor económico de estos datos y las posibles inferencias que plataformas como Instagram podrían hacer sobre nuestra vida personal. Discutiremos brevemente el contexto del Reglamento Europeo de Inteligencia Artificial (AI Act) y su relevancia en la protección de la privacidad.
Actualizar el toolchain de un sistema operativo no es solo cuestión de versiones: es una operación de alto riesgo que puede alterar sutil pero profundamente el comportamiento de software ya integrado. Este es el caso que analizamos, donde el salto a Python 3.12 en Ubuntu Oracular (24.10) introdujo cambios que afectaron silenciosamente al agente de Azure para Linux (WALinuxAgent). En particular, una modificación en el manejo de errores en el que precedía onexc sobre onerror hizo que una excepción crítica nunca llegara a lanzarse ni registrarse, enmascarando un fallo real durante la ejecución.
Aunque el error emergió como un test que fallaba, su origen, más complejo, pasó desapercibido para el equipo de desarrollo original. Fue un ingeniero de distribución —el mantenedor de Ubuntu encargado de integrar WALinuxAgent en el sistema— quien, desde una perspectiva distinta, desentrañó el problema al revisar cómo el agente interactuaba con las librerías del sistema y cómo estas habían cambiado con la nueva versión de Python. Este caso subraya cómo un mismo error puede pasar completamente desapercibido si se analiza desde un único rol o etapa del ciclo de vida del software.
Durante la sesión abordaremos:
- Qué cambió en Python 3.12 y cómo afecta al comportamiento de llamadas al sistema operativo.
- Cómo el error viaja desde una excepción silenciosa en Python hasta un fallo no diagnosticado en producción.
- El papel fundamental del ingeniero de distribución, puente entre el upstream y el sistema operativo.
- Prácticas de testing e integración más robustas para detectar este tipo de regresiones antes de llegar al usuario final.
Este caso real pone de manifiesto la necesidad de una comunicación fluida entre desarrolladores, empaquetadores y distribuidores, así como de entender cómo los cambios en el entorno (toolchains, runtimes, dependencias) afectan incluso a las piezas más estables del software.
Todos hemos presenciado el asombroso poder de los Grandes Modelos de Lenguaje (LLMs). Desde redactar poesía hasta depurar código, su versatilidad es innegable. Sin embargo, como todo poder, conlleva una gran responsabilidad... y también, a veces, una tendencia a la "alucinación". No, no hablamos de experiencias psicodélicas, sino de esa peculiar capacidad de los LLMs para inventar datos, hechos o citas de forma convincente, pero completamente errónea.
En esta comunicación, nos sumergiremos en las profundidades de este intrigante fenómeno. ¿Por qué los LLMs "ven cosas" que no existen en sus datos de entrenamiento? Exploraremos las causas subyacentes de estas invenciones, desde sesgos en los datos hasta la intrínseca naturaleza probabilística de estos modelos. Entender el porqué es el primer paso para evitar que tu chatbot te cite un libro imaginario.
Pero no todo son malas noticias. Lo bueno es que no estamos indefensos. Presentaremos un arsenal de estrategias y herramientas prácticas en Python para detectar y mitigar estas alucinaciones. Nos centraremos en técnicas como la validación de fuentes, la generación asistida por recuperación (RAG) y la implementación de mecanismos de verificación cruzada, todo ello con ejemplos de código que podrás aplicar directamente en tus proyectos.
Prepárate para equipar a tus LLMs con gafas de la verdad, transformándolos de soñadores incorregibles en asistentes confiables y precisos. Porque, al final del día, queremos que nuestros modelos nos solucionen los problemas, no que los generen.
pip install numpy pandas
. El primer comando que se ejecuta en cualquier proyecto de ciencia de datos que se precie, el que monta las bases de todo entorno de experimentación (y muchas veces, producción). Y que cómodo es tener librerías potentes, eficientes, versátiles, y sobre todo, libres. El FOSS (Free Open Source Software) es uno de los pilares centrales de nuestra industria. Pero generalmente, las cosas gratis no pagan las facturas.
Por muy bonito que sea ceder tu trabajo a la comunidad para que ésta lo use y construya cada vez mejores programas, todo esfuerzo bonito y altruista tiene gente que se aprovecha. Y cuando las grandes empresas se dedican a usar y ampliar los proyectos de Open Source sin aportar de vuelta, ese esfuerzo se desmorona.
Esta charla pretende hacer un recorrido por las distintas ramas en las que ha evolucionado la comunidad de Open Source e inevitablemente se ha ido acercando al software comercial tradicional. Desde el grupo de irreductibles programadores que siguen liberando todo su esfuerzo, hasta las empresas que dictan el rumbo de proyectos gigantescos de Open Source, pasando por el reciente "Open Core" que representa un compromiso más intermedio.
MLFlow nos va a servir de apoyo y caso práctico: como librería Open Core, el núcleo de características principales se encuentra en GitHub para que todo el mundo lo pueda utilizar. Pero las promesas de "en un clic puedes seguir todo el ciclo de vida de tu modelo" que aparecen en su página principal tienen varias luces y sombras si tienes pensado implementar a rajatabla su paquete Open Source sin pasar por su plataforma...
El eterno debate: ¿Usamos un Monolito o Microservicios? Explicaremos por qué nos interesa elegir el patrón que se adapte mejor a nuestros requisitos. Estudiaremos las fortalezas y debilidades de cada uno. Hablaremos de los problemas que se encuentran las empresas al usar un patrón u otro en proyectos software al escalar, sobre rendimiento y monitorización. Veremos qué es eso de la Monolithization y por qué son tan útiles los Monolitos modulares. Analizaremos cómo conseguir migrar de una arquitectura a otra sin morir en el intento y de estrategias que podemos emplear y de errores cometidos por otros a evitar. También veremos qué podemos hacer cuándo nos damos cuenta de que no hemos elegido la mejor opción y del papel de la IA en la toma de decisiones a la hora de usar un determinado patrón de diseño.
En el mundo del desarrollo, a menudo nos centramos en la lógica de negocio y los modelos de datos, dejando la presentación de resultados o la creación de interfaces interactivas para otras tecnologías. Pero, ¿y si pudiéramos llevar nuestros proyectos Python un paso más allá y convertirlos en aplicaciones web o de escritorio completas, e incluso empaquetarlas para dispositivos móviles, todo desde el mismo lenguaje que amamos?
En esta charla, exploraremos Flet, un framework de Python que nos permite construir interfaces de usuario interactivas con facilidad, aprovechando nuestra experiencia en Python. Basándome en la experiencia de mi TFM (Trabajo de Fin de Máster), donde he desarrollado una aplicación web con Flet, mostraré cómo esta herramienta es ideal para:
Prototipar y presentar proyectos: Conviertiendo scripts o análisis en interfaces de usuario que tus clientes o colegas puedan usar.
Desarrollar aplicaciones web: Creando interfaces interactivas que se ejecutan en cualquier navegador.
Generar aplicaciones de escritorio: Exportando tus proyectos a ejecutables multiplataforma.
Explorar la creación de APKs: Aunque sea un terreno más reciente, Flet ofrece la capacidad de generar versiones de tu aplicación para Android, abriendo un abanico de posibilidades para la distribución móvil.
Demostraré, a través de ejemplos prácticos, la 'bondad' de Flet y cómo Python se posiciona como una herramienta versátil no solo para el backend o la ciencia de datos, sino también para el desarrollo de frontends completos y aplicaciones multiplataforma. Al finalizar la charla, los asistentes tendrán una visión clara de cómo Flet puede empoderarlos para transformar sus ideas y modelos en productos interactivos y accesibles.
A batched approach to building tokenization vocabularies safely achieves a 2-3 order of magnitude speed improvement, depending on the target vocabulary size. This safe batching makes it possible to process billions of tokens and generate new token vocabularies in minutes on a basic laptop without changing the end tokenization result.
When building a tokenization vocabulary for an LLM or a compression algorithm, the standard approach is to count all consecutive token pairs, merge the most common pair into a new token, then repeat the process until you reach the desired vocabulary size. With a large dataset, that is an enormous amount of work for a single token merge. I outline the three key insights that let you safely process larger and larger batches of token merges.
Building a tokenization vocabulary is not typically done very often. However, my open source and pure-python solution aims to make it easier for anyone to try out new tokenization ideas. The tokenization step of LLM training is often derided as an annoyance that AI researchers only put up with because no other data representation works as well. Because of this, there are still lots of overlooked "easy wins" in this foundational step to LLM training. I conclude my talk by showing how a batched approach to tokenization vocabulary building can be combined with other tokenization research and reduced training runs to empirically improve LLM performance through tokenization changes alone.