Talks

Discover the Talks at PyCon Colombia 2026 ✨

Browse every accepted session—titles, tracks, levels, and speakers—before you plan your days in Medellín.

Search talks
Core Python

High-Performance Video Ingestion with Async Python

How do you process multiple video sources in real time without saturating the CPU or losing frames along the way? In this session, we will explore how to break the limitations of traditional workflows through asynchronous architectures. We will analyze how to design an efficient pipeline in Python that achieves concurrent ingestion, processing through AI models, and persistent video storage, all in a decoupled and scalable way. We will share the technical challenges and architecture strategies to move from blocking systems to a robust, high-performance data flow. If you want to take your computer vision projects to the next level and master the power of asyncio, this session is for you.

View talk
Artificial IntelligenceMachine LearningCore PythonWeb

From Voice to Action: Building an AI Assistant with Python and Google Workspace

Jumping between Gmail, Calendar, Drive, and Jira tabs for repetitive tasks is exhausting. That's why we built Attento, an assistant that lets you execute real actions in Google Workspace using natural language. In this talk we build Attento, an end-to-end voice assistant that turns natural language into real actions across Google Workspace. We'll cover architecture with FastAPI, OAuth 2.0 authentication with PKCE, function calling with Gemini, streaming with NDJSON, best practices with uv and Pydantic Settings, and the path from demo to production with Postgres and automated morning briefings.

View talk
Core PythonScientific Computing

Leverage your Python skill using the Python interpreter

In this talk, I'll challenge the audience's mindset about Python. Python is not an interpreter, and in fact, there are multiple Python interpreters—each with its own architecture and purpose. I'll walk through Python's core internals and show how programming languages interact beneath the surface. We'll explore how to write better Python by understanding the garbage collector, what you can build using the AST, how to read and leverage the disassembler, and the practical implications of Python's transition from its old LL(1) parser to the current PEG parser. We'll also dive into lesser-known features of Python interpreters, what a PEP really is and how it shapes the language, and conclude with a deep look at Python without the GIL—what changes, what breaks, and how the core team removed it. Throughout the talk, I'll share personal stories, including battles caused by identical ASTs and the moment I believed I had discovered a way to speed up the Python interpreter itself but...

View talk
Artificial IntelligenceCore Python

Building Your First AI Tool Server: Creating a Pokédex with FastMCP and Python

Do you want your AI applications to do more than answer questions? The Model Context Protocol (MCP) is becoming the standard for connecting language models with tools, APIs, and external systems. In this workshop you will learn to build your first MCP server using FastMCP and Python. Through a completely hands-on experience, we will explore the fundamental concepts of the protocol, how to expose tools, and how to integrate them with compatible clients such as Claude. As the main project, we will build an interactive Pokédex connected to the PokéAPI. Participants will develop real tools to query Pokémon information, expose them through an MCP server, and allow a language model to use them autonomously. Upon completion, you will have developed your own FastMCP server, understand the fundamentals of MCP, and have a solid foundation for creating AI-native applications connected to real data and services. Spots are limited... Gotta catch 'em all!

View talk
Artificial IntelligenceData ScienceCore Python

From S3 to AI Agent: Your First Queryable Lakehouse

AI agents are only as good as the data they can query. The problem is that most agents built today are connected to outdated CSVs, unstructured databases, or simply nothing. What if your agent could query a real lakehouse — with versioning, schema evolution, and time travel — using natural language? In this workshop we will build exactly that, from scratch, using only open source tools that run on your laptop. What we will build together: Starting from a fully local stack based on Docker Compose, we will set up a functional lakehouse architecture using MinIO as S3-compatible storage, Apache Iceberg as the table format, Project Nessie as a Git-like versioned catalog, and Trino as the SQL query engine. On top of that, we will build an MCP server in Python that exposes our Iceberg tables as tools queryable by an AI agent — and we will finish by connecting Claude so it can query our lakehouse in natural language. What you will learn: How a modern lakehouse really works under the hood — without managed services hiding the magic How Apache Iceberg enables schema evolution, time travel, and row-level deletes on object storage How to build an MCP server in Python that turns SQL queries into tools for AI agents Why this open source architecture mirrors exactly what companies like Netflix, Airbnb, and modern data teams use in production Why open source? We deliberately replace AWS S3 with MinIO, AWS Athena with Trino, and AWS Glue with Project Nessie — not because AWS is bad, but because understanding the real components makes you a better engineer, and because this workshop should be accessible to everyone, regardless of whether you have an AWS account or not. At the end of the workshop you will have a functional lakehouse running on your machine, a working MCP server, and an architecture you can take directly to your next project.

View talk
Artificial IntelligenceCore PythonDevOpsCommunityOpen Source

Provenance by Default: AI Media Pipelines in Python

A model can now generate a video that looks indistinguishable from one your camera recorded. The same is true for an image, a voice, or a song. As Python developers, we are building those pipelines — and we are also the ones who will be asked, very soon, to prove what came out of them. This talk is about building generative media pipelines in Python in a way that answers that question by default. We'll walk through Genblaze, an open-source SDK (github.com/backblaze-labs/genblaze, MIT licensed) that I work on at Backblaze, and use it as a vehicle to talk about the design problems any team faces when wiring AI generation into a real product. We will cover, with live code: 1. The Pipeline pattern. A fluent Pipeline → Step → Run → Manifest API built on Pydantic v2 and Runnable[In, Out] ABCs. Sync, async, and streaming runners share a single mental model. We'll see how chain=True propagates assets, how input_from=[0, 1] enables fan-in for AV compositing with FFmpeg, and how fallback_models=[...] retries automatically when a provider drifts. 2. One API, eleven providers. OpenAI Sora, Google Veo, Runway, Luma, Decart, Replicate, ElevenLabs, Stability Audio, LMNT, GMICloud, NVIDIA NIM — all behind the same submit / poll / fetch_output lifecycle. We'll see how a thin provider ABC plus a runtime-extensible ModelRegistry lets you adopt a model the same week it's released, without waiting for a library update. 3. Provenance that survives the file. Every run produces a canonical, SHA-256-verified manifest (deterministic JSON, sorted keys, NFC unicode, normalized floats) that gets embedded into the media itself PNG iTXt, JPEG/WebP XMP, MP4 UUID box, MP3 ID3v2, WAV LIST/INFO. We'll extract and verify a manifest from a real .mp4. We'll talk about what the hash does prove (integrity) and what it doesn't (authentication), and why that distinction is the entire point. 4. Privacy and policy. EmbedPolicy lets pipelines redact prompts, strip parameters, or swap to pointer-mode sidecars. SSRF protection on webhook and asset transfers. Trust modes for adversarial verification. 5. Storage and replay. Durable B2 / S3-compatible URLs, content-addressable layouts, and a CLI (genblaze extract / verify / replay / index) that turns any manifest back into an executable pipeline. 6. Agent loops with lineage. AgentLoop composes a pipeline factory with an evaluator; every iteration is linked via parent_run_id, so refinement chains are first-class in provenance — not a side note in your logs. By the end, attendees will have a clear, opinionated reference for how to architect generative-AI features in Python so that "what did this system actually produce, and can I prove it?" is a one-line answer instead of a ticket.

View talk
Machine LearningData ScienceCore PythonDevOps

NLP Without Labels: How to Cluster N Legal Processes of the Colombian State and Turn Chaos into a Production Classifier

What do you do when you have 600,000 legal complaints, zero labeled data, and a government entity waiting for results? This talk walks through the full process of building an unsupervised NLP classification system for the Procuraduría General de la Nación. Starting from raw administrative text—noisy, full of abbreviations and institutional jargon—I'll show how TF-IDF, truncated SVD, and KMeans combined to organize more than half a million records into 64 semantically coherent groups, without a single manual label. But clustering is only the starting point. I'll cover how clusters were validated, how a Logistic Regression classifier was trained on them to make the system deployable, and how the final pipeline was packaged in a .pkl that non-technical colleagues use in production today. Along the way we'll face real problems: elbow curves that don't behave, 1:20 size imbalances between clusters, and the tension between mathematical elegance and institutional usability. Because in the public sector, a model nobody uses isn't a model—it's a PDF gathering dust.

View talk
Core PythonWeb

Python in the Browser: Powered by WebAssembly

What if the browser could run Python as a first-class language? In this talk, I'll show how PyScript makes it possible to execute real Python directly in the browser, powered by WebAssembly. Through a series of exciting, live examples, you'll see Python manipulating the DOM, calling browser APIs, and building interactive experiences, all without a traditional JavaScript codebase. I will also show a couple of examples of how you can embed both JavaScript and Python on PyScript to make even more exciting tools. I will also discuss what WebAssembly is, why it exists, and how it enables languages like Python to run safely and efficiently on the web platform. Finally, I'll discuss when tools like PyScript make sense, and compare it with similar tools. Whether you're a Python developer curious about the frontend, an engineer interested in WebAssembly, or simply someone who enjoys seeing the boundaries of Python pushed, this talk will change how you think about what can run in a browser.

View talk
Artificial IntelligenceCore PythonDevOps

Elevate your code quality in Python with modern, ultra-fast tooling

AI coding assistants have changed how we build software. We can now generate features, refactors, and entire services in minutes — but speed without strong engineering practices quickly becomes technical debt. In this talk, I'll show how modern Python teams can build fast and reliable development workflows using tools like Astral's Ruff, Ty, and uv. We'll explore how traditional slow and noisy quality pipelines are being replaced by a new generation of tooling that provides near-instant feedback while improving code quality and developer experience. Topics include: Why AI-generated code makes automated quality gates more important than ever Using Ruff for formatting, linting, and fast feedback loops Using Ty for modern static typing and safer large-scale development Structuring formatter → linter → type-checker workflows Pre-commit hooks and CI pipelines developers actually enjoy using Reducing friction between local development and CI/CD The session is practical, opinionated, and based on real-world engineering experience building production systems with AI-assisted workflows. Whether you are a backend engineer, tech lead, or AI-native developer, this talk will give you a modern blueprint for building Python systems that move fast without sacrificing quality.

View talk
Artificial IntelligenceMachine LearningCore Python

Clean Code in the Era of LLMs: Do Good Practices Still Matter?

Instead, research from METR, CodeRabbit, and GitClear is converging on an uncomfortable truth: code duplication has quadrupled, copy-pasted code now exceeds moved code, bugs have risen 70%, and security issues have nearly tripled. AI didn't break our codebases. It amplified what was already broken. So what do we actually do about it? Do decades of hard-won engineering wisdom still apply when a model writes half the code, or do we need a new playbook entirely? Are clean code, SOLID, DDD, TDD, and the design patterns we've spent decades arguing about dead weight in the age of Claude Code and Copilot, or do they matter more than ever? This talk makes the case for the second answer. Your codebase is now a prompt: clean code leads to better AI suggestions, which make it easier to stay clean. Messy code leads to worse suggestions, which make it harder to recover. We'll walk through which practices now matter more (SOLID, DDD, TDD), which ones have quietly turned against you (hello, aggressive DRY and Abstract Factories), and how to collaborate with an LLM without becoming a rubber stamp for its output. You'll leave with a concrete framework, Adversarial Collaboration, that you can apply the next morning: generate, critique, refactor, verify. Not vibe coding. Not perfectionist prompting. Real engineering, just faster.

View talk
Artificial IntelligenceCore Python

From Prompts to Agents: Intelligent Systems with Python

Prompts are only the beginning. The real power of modern artificial intelligence lies in transforming those instructions into structured systems capable of reasoning, applying rules, and generating consistent decisions. In this hands-on workshop, participants will go beyond basic prompt usage and learn to design and build intelligent agents using Python. Starting from a simple prompt, we will progressively evolve it into a functional agent that processes information, applies context, and generates structured responses. Through a practical approach, we will learn to: Design effective prompts with clear context, objectives, and constraints Structure responses in reliable formats (such as JSON) Build a simple agent in Python that transforms questions into decisions Incorporate context and memory to improve results Evaluate the quality and consistency of responses At the end of the workshop, each participant will have their own agent-style system, capable of converting inputs into useful recommendations, along with a reusable framework to apply to real problems. This workshop is aimed at developers, data professionals, and curious people who want to move from using AI tools to designing intelligent systems. No prior AI experience is required, only basic Python knowledge and a desire to learn. More than a technical session, this workshop proposes a new way of understanding AI: not only as a tool that responds, but as a system we can design.

View talk
Core Python

Understanding Cognitive Complexity in Python

Modern Python makes it incredibly easy to write code quickly, but much harder to keep it understandable as projects grow. This talk explores cognitive complexity: a metric focused not on what code does, but on how difficult it is for humans to read, reason about, and maintain. Through real Python examples, we will analyze how nested conditionals, branching logic, async flows, exceptions, and growing business rules silently increase the mental load required to work with a codebase. We will also discuss why traditional metrics such as cyclomatic complexity often fail to reflect actual readability, and how cognitive complexity provides a more human-centered perspective on maintainability. The talk includes practical refactoring techniques, common anti-patterns found in production Python projects, and lessons learned while building complexipy, an open source cognitive complexity analyzer for Python written in Rust, designed to provide fast local feedback and CI integration.

View talk
Artificial IntelligenceMachine LearningData ScienceCore Python

Your AI Eval Is Lying To You

When you set temperature=0 and run your AI eval, you expect the same input to give the same output. It doesn't. Recent measurements on Qwen3-235B at temperature=0 produced 80 unique completions on a single prompt. So when your eval reports "92% pass rate," what does that actually mean? Is it 92% capable, 92% reliable, or 92% lucky on a small sample? This talk is about the gap between how the AI eval ecosystem talks about scores and what those scores can actually support. We walk through five specific tools that fix the gap, all anchored to published methods: 1. Pass@k versus pass^k: capability versus reliability, two different questions that one number obscures (Chen et al. 2021, OpenAI Codex paper). 2. Wilson confidence intervals with proper boundary handling, so your "92%" comes with an honest range (Brown et al. 2001). 3. Bayesian pass@k with Beta-Binomial conjugacy, when you want a posterior rather than a point estimate (Hariri et al., ICLR 2026). 4. Sequential drift detection with EWMA, CUSUM, and OLS, to catch eval regression while it's small instead of after a customer reports it (Lucas-Saccucci 1990, Page 1954, Montgomery 2012). 5. Family-wise error control via Benjamini-Hochberg, Benjamini-Yekutieli, and e-BH FDR procedures, for when you're running multiple correlated drift checks in parallel and don't want false alarms (Benjamini-Hochberg 1995, Wang-Ramdas 2022). Each method gets a short demo in pure Python with no framework dependency. The audience leaves with reference implementations they can paste into an existing pytest setup tonight. The talk also previews an open-core pytest plugin shipping in July 2026 that packages these methods into a single eval pipeline with SARIF reporting and a baseline-regression workflow. The talk shows the open primitives and the methodology that drives them. The production AI-eval ecosystem (LangSmith, Arize Phoenix, Evidently, DeepEval, Promptfoo, and others) mostly uses absolute thresholds and simple averages. None of the ten platforms I surveyed combine sequential testing with FDR control on bounded scoring scales. The framing here isn't competitive; it's a methodological gap every team shipping production AI evals will hit eventually.

View talk
Artificial IntelligenceCore Python

Beyond Vibe Coding: Spec Driven Development with Code Graphs

Artificial intelligence is changing the way we build software, but writing prompts and accepting code suggestions is not enough to work on real systems. In applications with multiple layers, dependencies, and business rules, the real challenge is not just generating code, but understanding where to change it, how it impacts the system, and how to validate it correctly. In this workshop you will explore an evolution of Spec Driven Development using Code Graphs as a structured context source. Starting from a web application built with FastAPI, you will work on a specific feature following a guided flow: requirement, specification, graph context, planning, tasks, implementation, and validation. During the session you will learn the Spec Driven Development flow, from defining the requirement to creating the specification, planning, generating tasks, implementation, and validation. You will also see how a code graph can represent files, functions, classes, relationships, and dependencies, allowing AI not to depend solely on textual context or isolated prompts. This will help you reduce common errors such as duplicating logic, modifying incorrect layers, or ignoring affected tests. Upon completion, you will understand how to move from improvised use of AI in development to a more structured, traceable, and reliable process. You will learn to combine specifications, real code context, and AI assistance to build software with greater technical clarity, better impact validation, and logic applicable to real projects.

View talk
Core PythonWeb

Stop mocking, start containerizing

“Write tests. Not too many. Mostly integration.” Kent C. Dods While unit tests have their place, integration tests validate how your systems behave under real-world conditions. Yet too often, developers fall back on mocks that simulate dependencies rather than testing with the actual services their code interacts with. In this workshop, we’ll explore a better approach: Testcontainers is a powerful Python library that enables you to run real Docker containers as part of your test suite. Whether you're testing against PostgreSQL, Redis, or HTTP APIs, you’ll learn how to spin up disposable, isolated environments that bring realism and confidence to your testing practice. Whether you're testing microservices, monolithic backends, or data pipelines, this workshop will show you how to build tests that don’t just pass but prove your system works. Bring your laptop and a running Docker engine, we’re going to get our hands dirty!

View talk
Artificial IntelligenceCore Python

Use it or lose it! Token diet with TOON to fatten your wallet and help AI understand more

What if we told you that every time you send JSON to an LLM you are paying an invisible "tax"? In the Generative AI era tokens are the new gold, and with standard JSON (with its redundant braces and repeated keys) you are burning them. In this session we will review the history of data notation to understand why current tools are not optimized for LLMs and we will present TOON (Token-Oriented Object Notation), a notation that combines the best of two worlds: the readability of YAML and the density of CSV. But we will not only talk theory, we will also work with real data and see how TOON manages to reduce token consumption compared to JSON. We will also demonstrate something important: spending less does not mean understanding less! Because just by using TOON many benchmarks show improvements in their metrics. It is time to put your data on a diet!

View talk