{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.1.1"}, "schedule": {"url": "https://programme.europython.eu/europython-2026/schedule/", "version": "0.23", "base_url": "https://programme.europython.eu", "conference": {"acronym": "europython-2026", "title": "EuroPython 2026", "start": "2026-07-13", "end": "2026-07-19", "daysCount": 7, "timeslot_duration": "00:05", "time_zone_name": "Poland", "colors": {"primary": "#141f37"}, "rooms": [{"name": "S1", "slug": "5240-s1", "guid": "69560a5f-0132-5ac8-99b7-5a62a108ff23", "description": "Auditorium Hall - Capacity: 1915", "capacity": 1915}, {"name": "S2", "slug": "5241-s2", "guid": "d3c8c403-7131-5705-ad97-7cd3d40cef9b", "description": "Theatre Hall - Capacity: 594 seats", "capacity": 594}, {"name": "S4", "slug": "5244-s4", "guid": "f458b6fb-5c85-511c-870e-76b00bae6031", "description": "Conference Hall Complex - Capacity: 350 seats", "capacity": 350}, {"name": "S3A", "slug": "5242-s3a", "guid": "81adc7d4-7479-5204-bb50-171fe63c4b34", "description": "Chamber Hall A - This room will be used for talks (chairs):200 and tutorials (chairs + tables): 100", "capacity": 200}, {"name": "S3B", "slug": "5243-s3b", "guid": "8b2a7d87-e211-5bf0-aec1-50733db791b3", "description": "Chamber Hall B  - This room will be used for talks (chairs):200 and tutorials (chairs + tables): 100", "capacity": 200}, {"name": "S4A", "slug": "5246-s4a", "guid": "3494dc59-027c-541c-9364-5779e972567d", "description": "Conference Hall Complex A  - Capacity: 80 tables + seats", "capacity": 80}, {"name": "S4B", "slug": "5247-s4b", "guid": "9c299f12-447d-549f-92be-3d747135683f", "description": "Conference Hall Complex B - Capacity: 80 tables + seats", "capacity": 80}, {"name": "Glass room", "slug": "5249-glass-room", "guid": "a1bb95b4-9783-5d3e-8c40-335f0556a714", "description": "Conference room F0 (Glass room) - Open Space - PYO (Fri), PyLadies (Thu) - 72 chairs or  26 tables", "capacity": 40}, {"name": "2.017/2.018", "slug": "5250-20172018", "guid": "0ea76991-27eb-54e8-a71c-ee5c986ce53c", "description": "Multifunctional room 2 (2.017/2.018) - Open Spaces Room 2 - 72 chairs or 31 tables", "capacity": 100}, {"name": "Fishbowl", "slug": "5248-fishbowl", "guid": "75afb1f2-f364-5661-922b-fcf7cd27727a", "description": "Reception Room F2 - Summits and Open Spaces Room 1 - This room can fit 67 chairs, and the tables are TBD", "capacity": 67}, {"name": "Poster Hall A", "slug": "5252-poster-hall-a", "guid": "e8af958f-628b-5e5d-95e1-a6c40c2b8afa", "description": null, "capacity": null}, {"name": "Poster Hall B", "slug": "5253-poster-hall-b", "guid": "3d4ca438-5ac7-5979-a7a3-20cdbf3dafd1", "description": null, "capacity": null}, {"name": "Poster Hall C", "slug": "5254-poster-hall-c", "guid": "a2ed4948-2605-5bec-8374-42596e7a73a6", "description": null, "capacity": null}], "tracks": [{"name": "Python Core, Internals, Extensions", "slug": "6740-python-core-internals-extensions", "color": "#151f37"}, {"name": "Web Development, Web APIs, Front-End Integration", "slug": "6741-web-development-web-apis-front-end-integration", "color": "#000000"}, {"name": "DevOps, Cloud, Scalable Infrastructure", "slug": "6742-devops-cloud-scalable-infrastructure", "color": "#000000"}, {"name": "IoT, Embedded Systems, Hardware Integration", "slug": "6743-iot-embedded-systems-hardware-integration", "color": "#000000"}, {"name": "Tooling, Packaging, Developer Productivity", "slug": "6744-tooling-packaging-developer-productivity", "color": "#000000"}, {"name": "Testing, Quality Assurance, Security", "slug": "6745-testing-quality-assurance-security", "color": "#000000"}, {"name": "Community Building, Education, Outreach", "slug": "6746-community-building-education-outreach", "color": "#000000"}, {"name": "Ethics, Social Responsibility, Sustainability, Legal", "slug": "6747-ethics-social-responsibility-sustainability-legal", "color": "#000000"}, {"name": "Professional Development, Careers, Leadership", "slug": "6748-professional-development-careers-leadership", "color": "#000000"}, {"name": "Python for Games, Art, Play and Expression", "slug": "6749-python-for-games-art-play-and-expression", "color": "#000000"}, {"name": "Machine Learning: Research & Applications", "slug": "6750-machine-learning-research-applications", "color": "#000000"}, {"name": "Machine Learning, NLP and CV", "slug": "6751-machine-learning-nlp-and-cv", "color": "#000000"}, {"name": "Data preparation and visualisation", "slug": "6752-data-preparation-and-visualisation", "color": "#000000"}, {"name": "Jupyter and Scientific Python", "slug": "6753-jupyter-and-scientific-python", "color": "#000000"}, {"name": "Data Engineering and MLOps", "slug": "6754-data-engineering-and-mlops", "color": "#000000"}, {"name": "~ None of these topics", "slug": "6755-none-of-these-topics", "color": "#000000"}], "days": [{"index": 1, "date": "2026-07-13", "day_start": "2026-07-13T04:00:00+02:00", "day_end": "2026-07-14T03:59:00+02:00", "rooms": {"S3A": [{"guid": "8dd1c270-735d-5cf8-8bfc-110bf82a9a34", "code": "CSDM3D", "id": 97546, "logo": null, "date": "2026-07-13T08:30:00+02:00", "start": "08:30", "duration": "01:00", "room": "S3A", "slug": "europython-2026-97546-monday-registration-welcome-tbd-floor", "url": "https://programme.europython.eu/europython-2026/talk/CSDM3D/", "title": "Monday Registration & Welcome @ TBD Floor", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.\nYou can pick up your badges at any time during the week as long as we are open!\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!\nEnjoy the conference!", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CSDM3D/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CSDM3D/", "attachments": []}, {"guid": "97de00ad-bbdd-5e23-807c-08a16ebab991", "code": "QWEJWT", "id": 89641, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S3A", "slug": "europython-2026-89641-0-crafting-your-own-compiler-from-python-logic-to-high-speed-webassembly", "url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/", "title": "Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Ever wondered how a computer actually understands your logic? While Python interprets code line-by-line, WebAssembly allows us to compile high-performance modules that run at near-native speed in the browser. This tutorial breaks open the black box of language design, showing you how to translate human-readable logic into raw, executable power. We will use Python to build a functional compiler from scratch, translating a simple language into **WebAssembly (Wasm)**: the industry standard for high-performance web and cloud computing.\n\n### Why Build a Compiler? (It\u2019s Not Just for Language Designers)\n\nLearning compiler logic isn\u2019t just about creating the next C++ or Rust; it\u2019s about mastering **data transformation**. The patterns used in compilers (lexing, parsing, and code generation) are the exact same patterns used in:\n\n* **Data Engineering:** Writing custom Extract, Transform, and Load (ETL) tools to transform massive datasets.\n* **Domain Specific Languages (DSLs):** Creating custom internal tools for finance, science, or game logic.\n* **Performance Optimization:** Understanding how code is \u201clowered\u201d into machine instructions to write faster, leaner programs.\n* **Security:** Auditing how code is executed to prevent injection attacks and vulnerabilities.\n\n### The Project: *chiqui_forth* to Wasm\n\nWe will build a compiler for **chiqui_forth**, a tiny, stack-based language inspired by the legendary Forth (1970). Because both *chiqui_forth* and WebAssembly use **Reverse Polish Notation (RPN)**, they are a perfect match for a first-time compiler project. You\u2019ll see exactly how high-level logic is mapped to the \u201cbare metal\u201d of a virtual machine.\n\n### Outcomes\n\nBy the end of this session, you won\u2019t just have a Wasm file; you\u2019ll have a new mental model for software:\n\n* **The Compiler Pipeline:** Implement the full flow from raw text to executable binary.\n* **Wasm Mastery:** Gain a practical understanding of WebAssembly, the technology powering modern browser-based video editors, games, and serverless clouds.\n* **Custom Tooling:** Leave with a working Python-based compiler that you can extend to your own custom syntax.\n\n### Prerequisites\n\n* **Python Proficiency:** Comfort with variables, loops, lists, dictionaries, and file I/O.\n* **Terminal Basics:** Ability to navigate folders and run scripts from a command line.\n\n*No prior knowledge of compiler design, Wasm, or web development is required.*", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QRQDV3", "name": "Ariel Ortiz", "avatar": "https://programme.europython.eu/media/avatars/QRQDV3_lAYdS4a.webp", "biography": "Ariel Ortiz is a programming languages enthusiast. Since 1994, he has been a full-time faculty member at the Tecnol\u00f3gico de Monterrey in Mexico, where he primarily teaches undergraduate computer science courses. His first encounter with Python was in 2001, and since then, he has integrated it into several of his classes, including Advanced Algorithms and Compiler Design. He is an active member of ACM\u2019s Special Interest Group on Computer Science Education (SIGCSE) and has been a speaker at PyCon US, PyCon Latam, Python Brasil, and EuroPython conferences. Additionally, he is the main author of the Spanish-language websites [EduPython](https://edupython.blogspot.com/) and [RIP3](https://arielortiz.info/rip3/).", "public_name": "Ariel Ortiz", "guid": "8ee71ae1-40cc-51ef-bb9c-aefc56ad5a8f", "url": "https://programme.europython.eu/europython-2026/speaker/QRQDV3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/", "attachments": []}, {"guid": "ff9096b6-b976-5023-9daa-54d5d02ab742", "code": "QWEJWT", "id": 89641, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S3A", "slug": "europython-2026-89641-1-crafting-your-own-compiler-from-python-logic-to-high-speed-webassembly", "url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/", "title": "Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Ever wondered how a computer actually understands your logic? While Python interprets code line-by-line, WebAssembly allows us to compile high-performance modules that run at near-native speed in the browser. This tutorial breaks open the black box of language design, showing you how to translate human-readable logic into raw, executable power. We will use Python to build a functional compiler from scratch, translating a simple language into **WebAssembly (Wasm)**: the industry standard for high-performance web and cloud computing.\n\n### Why Build a Compiler? (It\u2019s Not Just for Language Designers)\n\nLearning compiler logic isn\u2019t just about creating the next C++ or Rust; it\u2019s about mastering **data transformation**. The patterns used in compilers (lexing, parsing, and code generation) are the exact same patterns used in:\n\n* **Data Engineering:** Writing custom Extract, Transform, and Load (ETL) tools to transform massive datasets.\n* **Domain Specific Languages (DSLs):** Creating custom internal tools for finance, science, or game logic.\n* **Performance Optimization:** Understanding how code is \u201clowered\u201d into machine instructions to write faster, leaner programs.\n* **Security:** Auditing how code is executed to prevent injection attacks and vulnerabilities.\n\n### The Project: *chiqui_forth* to Wasm\n\nWe will build a compiler for **chiqui_forth**, a tiny, stack-based language inspired by the legendary Forth (1970). Because both *chiqui_forth* and WebAssembly use **Reverse Polish Notation (RPN)**, they are a perfect match for a first-time compiler project. You\u2019ll see exactly how high-level logic is mapped to the \u201cbare metal\u201d of a virtual machine.\n\n### Outcomes\n\nBy the end of this session, you won\u2019t just have a Wasm file; you\u2019ll have a new mental model for software:\n\n* **The Compiler Pipeline:** Implement the full flow from raw text to executable binary.\n* **Wasm Mastery:** Gain a practical understanding of WebAssembly, the technology powering modern browser-based video editors, games, and serverless clouds.\n* **Custom Tooling:** Leave with a working Python-based compiler that you can extend to your own custom syntax.\n\n### Prerequisites\n\n* **Python Proficiency:** Comfort with variables, loops, lists, dictionaries, and file I/O.\n* **Terminal Basics:** Ability to navigate folders and run scripts from a command line.\n\n*No prior knowledge of compiler design, Wasm, or web development is required.*", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QRQDV3", "name": "Ariel Ortiz", "avatar": "https://programme.europython.eu/media/avatars/QRQDV3_lAYdS4a.webp", "biography": "Ariel Ortiz is a programming languages enthusiast. Since 1994, he has been a full-time faculty member at the Tecnol\u00f3gico de Monterrey in Mexico, where he primarily teaches undergraduate computer science courses. His first encounter with Python was in 2001, and since then, he has integrated it into several of his classes, including Advanced Algorithms and Compiler Design. He is an active member of ACM\u2019s Special Interest Group on Computer Science Education (SIGCSE) and has been a speaker at PyCon US, PyCon Latam, Python Brasil, and EuroPython conferences. Additionally, he is the main author of the Spanish-language websites [EduPython](https://edupython.blogspot.com/) and [RIP3](https://arielortiz.info/rip3/).", "public_name": "Ariel Ortiz", "guid": "8ee71ae1-40cc-51ef-bb9c-aefc56ad5a8f", "url": "https://programme.europython.eu/europython-2026/speaker/QRQDV3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QWEJWT/", "attachments": []}, {"guid": "ccb43efc-48cf-5633-860a-31857e9fe1b4", "code": "RARRL7", "id": 91357, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91357-0-fast-python-development-with-uv", "url": "https://programme.europython.eu/europython-2026/talk/RARRL7/", "title": "Fast Python Development with uv", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Tutorial", "language": "en", "abstract": "Learn how to use uv for fast, reliable Python development. Created by Astral (the makers of Ruff), uv is a modern Python package and project manager written in Rust that can replace pip, pip-tools, virtualenv, poetry, pyenv, and more\u2014with dramatic speed improvements.\n\nThis hands-on tutorial teaches you how to use uv for managing Python projects, dependencies, and tools. uv is designed to be a drop-in replacement for pip while offering a complete development workflow: project management, dependency resolution, virtual environments, Python version management, and tool installation.\n\nKey advantages of uv:\n\n* **Speed**: 10-100x faster than pip for most operations\n* **Compatibility**: Works with existing pip workflows and requirements.txt files\n* **Complete workflow**: Replaces multiple tools with a single, unified interface\n* **Reliability**: Deterministic dependency resolution with lock files\n\nYou will learn:\n\n* How to replace pip with uv for faster package installation\n* How to manage Python projects with `pyproject.toml` and `uv.lock`\n* How to handle multiple Python versions without external tools\n* How to manage workspaces for multi-package projects\n* How to use `uvx` for running Python tools without installation\n* How to run single-file scripts with inline dependencies\n* How to build and publish Python packages\n* Best practices for using uv in real-world projects\n\nA brief comparison with Pixi and other dependency management tools is included.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9KSJ3K", "name": "Mike M\u00fcller", "avatar": "https://programme.europython.eu/media/avatars/9KSJ3K_0gV51CH.webp", "biography": "Dr. Mike M\u00fcller has been working with Python since 1999 and teaching it professionally since 2004. As a trainer at Python Academy (https://www.python-academy.com), he has taught over 580 Python courses totaling more than 1,500 teaching days to thousands of participants worldwide.\n\nMike has taught more than 75 tutorials at Python conferences, including 29 tutorials at PyCon US over the years. He is known for his hands-on teaching approach, live coding demonstrations, and comprehensive course materials that participants can use as references long after the tutorial ends. His tutorials blend practical examples with solid theoretical foundations, making complex topics accessible and immediately applicable.\n\nBeyond teaching, Mike is deeply involved in the Python community. He has organized conferences including PyCon DE, EuroSciPy, and numerous BarCamps. His contributions to the community have been recognized with the PSF Community Service Award and PSF Fellow status. He serves as chair of the German Python Software Verband.\n\nMike holds a doctorate in hydrology and brings a scientific perspective to programming education. He believes in learning by doing and creates supportive environments where participants feel comfortable asking questions and experimenting with code.", "public_name": "Mike M\u00fcller", "guid": "83509971-e18d-5ad6-843b-373fc98d3359", "url": "https://programme.europython.eu/europython-2026/speaker/9KSJ3K/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RARRL7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RARRL7/", "attachments": []}, {"guid": "466e689a-3df8-575c-a2bb-653f95f6a8a6", "code": "RARRL7", "id": 91357, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91357-1-fast-python-development-with-uv", "url": "https://programme.europython.eu/europython-2026/talk/RARRL7/", "title": "Fast Python Development with uv", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Tutorial", "language": "en", "abstract": "Learn how to use uv for fast, reliable Python development. Created by Astral (the makers of Ruff), uv is a modern Python package and project manager written in Rust that can replace pip, pip-tools, virtualenv, poetry, pyenv, and more\u2014with dramatic speed improvements.\n\nThis hands-on tutorial teaches you how to use uv for managing Python projects, dependencies, and tools. uv is designed to be a drop-in replacement for pip while offering a complete development workflow: project management, dependency resolution, virtual environments, Python version management, and tool installation.\n\nKey advantages of uv:\n\n* **Speed**: 10-100x faster than pip for most operations\n* **Compatibility**: Works with existing pip workflows and requirements.txt files\n* **Complete workflow**: Replaces multiple tools with a single, unified interface\n* **Reliability**: Deterministic dependency resolution with lock files\n\nYou will learn:\n\n* How to replace pip with uv for faster package installation\n* How to manage Python projects with `pyproject.toml` and `uv.lock`\n* How to handle multiple Python versions without external tools\n* How to manage workspaces for multi-package projects\n* How to use `uvx` for running Python tools without installation\n* How to run single-file scripts with inline dependencies\n* How to build and publish Python packages\n* Best practices for using uv in real-world projects\n\nA brief comparison with Pixi and other dependency management tools is included.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9KSJ3K", "name": "Mike M\u00fcller", "avatar": "https://programme.europython.eu/media/avatars/9KSJ3K_0gV51CH.webp", "biography": "Dr. Mike M\u00fcller has been working with Python since 1999 and teaching it professionally since 2004. As a trainer at Python Academy (https://www.python-academy.com), he has taught over 580 Python courses totaling more than 1,500 teaching days to thousands of participants worldwide.\n\nMike has taught more than 75 tutorials at Python conferences, including 29 tutorials at PyCon US over the years. He is known for his hands-on teaching approach, live coding demonstrations, and comprehensive course materials that participants can use as references long after the tutorial ends. His tutorials blend practical examples with solid theoretical foundations, making complex topics accessible and immediately applicable.\n\nBeyond teaching, Mike is deeply involved in the Python community. He has organized conferences including PyCon DE, EuroSciPy, and numerous BarCamps. His contributions to the community have been recognized with the PSF Community Service Award and PSF Fellow status. He serves as chair of the German Python Software Verband.\n\nMike holds a doctorate in hydrology and brings a scientific perspective to programming education. He believes in learning by doing and creates supportive environments where participants feel comfortable asking questions and experimenting with code.", "public_name": "Mike M\u00fcller", "guid": "83509971-e18d-5ad6-843b-373fc98d3359", "url": "https://programme.europython.eu/europython-2026/speaker/9KSJ3K/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RARRL7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RARRL7/", "attachments": []}], "S3B": [{"guid": "2df021d0-6bd8-50f2-88a8-b0c922f536fc", "code": "WYBHCE", "id": 91785, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S3B", "slug": "europython-2026-91785-0-cooking-with-asyncio-an-introduction-to-asynchronous-programming", "url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/", "title": "Cooking with asyncio: an introduction to asynchronous programming", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Asynchronous programming is infamous for leading to confusing projects with non linear code paths and all sorts of nasty bugs\u2026\n\nBut with the right mental models and a cooking analogy, you will find yourself writing async code with confidence.\n\nCome to this tutorial if you\u2019re prepared to challenge your understanding of how programs run, if you want to create a simple Human-to-Human asynchronous chat application, or ir you want to critique my culinary taste.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BLNV7P", "name": "Rodrigo Gir\u00e3o Serr\u00e3o", "avatar": "https://programme.europython.eu/media/avatars/BLNV7P_wULjbpV.webp", "biography": "Hi, I'm Rodrigo Gir\u00e3o Serr\u00e3o from sunny Portugal \ud83c\uddf5\ud83c\uddf9.\n\nI'm a prolific Python author and speaker, with [multiple books published independently](https://mathspp.com/books) and [dozens of talks and tutorials](https://mathspp.com/talks) given at the largest Python conferences in the world. I also [blog frequently about Python](https://mathspp.com/blog) and publish two Python newsletters: the [weekly mathspp insider \ud83d\udc0d\ud83d\ude80](https://mathspp.com/insider) and the [daily Python drops \ud83d\udc0d\ud83d\udca7](https://mathspp.com/drops).\n\nI have extensive experience teaching people from all walks of life \u2013 from kids in school, to professionals in various industries, to retirees \u2013 and there is a clear consensus that my students enjoy my clear examples, the live-coding during my lessons, and most surprisingly: my quirky sense of humour.", "public_name": "Rodrigo Gir\u00e3o Serr\u00e3o", "guid": "b162400f-4b4a-584b-b4d6-8e9b4c49a8ac", "url": "https://programme.europython.eu/europython-2026/speaker/BLNV7P/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/", "attachments": []}, {"guid": "0e5343b9-497c-5386-92b7-073f52a3826a", "code": "WYBHCE", "id": 91785, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S3B", "slug": "europython-2026-91785-1-cooking-with-asyncio-an-introduction-to-asynchronous-programming", "url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/", "title": "Cooking with asyncio: an introduction to asynchronous programming", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Asynchronous programming is infamous for leading to confusing projects with non linear code paths and all sorts of nasty bugs\u2026\n\nBut with the right mental models and a cooking analogy, you will find yourself writing async code with confidence.\n\nCome to this tutorial if you\u2019re prepared to challenge your understanding of how programs run, if you want to create a simple Human-to-Human asynchronous chat application, or ir you want to critique my culinary taste.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BLNV7P", "name": "Rodrigo Gir\u00e3o Serr\u00e3o", "avatar": "https://programme.europython.eu/media/avatars/BLNV7P_wULjbpV.webp", "biography": "Hi, I'm Rodrigo Gir\u00e3o Serr\u00e3o from sunny Portugal \ud83c\uddf5\ud83c\uddf9.\n\nI'm a prolific Python author and speaker, with [multiple books published independently](https://mathspp.com/books) and [dozens of talks and tutorials](https://mathspp.com/talks) given at the largest Python conferences in the world. I also [blog frequently about Python](https://mathspp.com/blog) and publish two Python newsletters: the [weekly mathspp insider \ud83d\udc0d\ud83d\ude80](https://mathspp.com/insider) and the [daily Python drops \ud83d\udc0d\ud83d\udca7](https://mathspp.com/drops).\n\nI have extensive experience teaching people from all walks of life \u2013 from kids in school, to professionals in various industries, to retirees \u2013 and there is a clear consensus that my students enjoy my clear examples, the live-coding during my lessons, and most surprisingly: my quirky sense of humour.", "public_name": "Rodrigo Gir\u00e3o Serr\u00e3o", "guid": "b162400f-4b4a-584b-b4d6-8e9b4c49a8ac", "url": "https://programme.europython.eu/europython-2026/speaker/BLNV7P/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/WYBHCE/", "attachments": []}, {"guid": "fa0f860b-19c6-593f-8bef-5c13a7b7c78b", "code": "JRMSZT", "id": 91428, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S3B", "slug": "europython-2026-91428-0-code-organization-for-non-engineers", "url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/", "title": "Code organization for non-engineers", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "Have you ever opened a piece of code that seems to break just by looking at it\u2014and noticed that your coworker wrote it? You don\u2019t want to be *that* person. While tangled, hard-to-maintain code can emerge for many reasons, it should never be by accident.\n\nIn this hands-on workshop, you will learn how to make code easier to maintain and to evolve. We will gradually refactor a messy Python web application into a well-organized, testable software. You will develop a mental model for organizing code effectively and understand how its structure impacts code quality. Ultimately, this will inform future decisions on design and code organization.\n\nThis workshop is specifically designed for people who don't identify as software engineers or don't perform typical software engineering tasks as part of their daily work. Participants should be familiar with basic Python programming and the concept of automated (unit) tests.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "A7BNZH", "name": "Michael Seifert", "avatar": "https://programme.europython.eu/media/avatars/A7BNZH_6JZWwf0.webp", "biography": "Michael is a trainer and consulting software engineer who helps product teams develop Python software in the cloud. He enjoys deleting code more than writing it and is constantly looking for new ways to improve developer experience and the maintainability of software.\n\nMichael has been enthusiastic for free and open-source software since his teenage years and published his first project in 2006. Nowadays, he maintains the pytest-asyncio library. In his free time, Michael dances Shuffle or struggles with a hardware project.", "public_name": "Michael Seifert", "guid": "63ac1849-978e-514c-82a1-585a2c7d2e8c", "url": "https://programme.europython.eu/europython-2026/speaker/A7BNZH/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/", "attachments": []}, {"guid": "cca7e9ad-56df-5731-8079-29f99840edd1", "code": "JRMSZT", "id": 91428, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S3B", "slug": "europython-2026-91428-1-code-organization-for-non-engineers", "url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/", "title": "Code organization for non-engineers", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "Have you ever opened a piece of code that seems to break just by looking at it\u2014and noticed that your coworker wrote it? You don\u2019t want to be *that* person. While tangled, hard-to-maintain code can emerge for many reasons, it should never be by accident.\n\nIn this hands-on workshop, you will learn how to make code easier to maintain and to evolve. We will gradually refactor a messy Python web application into a well-organized, testable software. You will develop a mental model for organizing code effectively and understand how its structure impacts code quality. Ultimately, this will inform future decisions on design and code organization.\n\nThis workshop is specifically designed for people who don't identify as software engineers or don't perform typical software engineering tasks as part of their daily work. Participants should be familiar with basic Python programming and the concept of automated (unit) tests.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "A7BNZH", "name": "Michael Seifert", "avatar": "https://programme.europython.eu/media/avatars/A7BNZH_6JZWwf0.webp", "biography": "Michael is a trainer and consulting software engineer who helps product teams develop Python software in the cloud. He enjoys deleting code more than writing it and is constantly looking for new ways to improve developer experience and the maintainability of software.\n\nMichael has been enthusiastic for free and open-source software since his teenage years and published his first project in 2006. Nowadays, he maintains the pytest-asyncio library. In his free time, Michael dances Shuffle or struggles with a hardware project.", "public_name": "Michael Seifert", "guid": "63ac1849-978e-514c-82a1-585a2c7d2e8c", "url": "https://programme.europython.eu/europython-2026/speaker/A7BNZH/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JRMSZT/", "attachments": []}], "S4A": [{"guid": "9b024cfb-7fa9-5710-baec-8cd342ab0769", "code": "NQGSY7", "id": 91591, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91591-0-developing-iot-sensors-with-micropython", "url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/", "title": "Developing IoT sensors with MicroPython", "subtitle": "", "track": "IoT, Embedded Systems, Hardware Integration", "type": "Tutorial", "language": "en", "abstract": "In this workshop, you will create practical internet-connected sensors with MicroPython. We will cover the basics of setting up the development environment, both for developing on PC and deploying/developing on a microcontroller device.\n\nTargeted towards those that are already comfortable programming in Python, but that have little exposure to embedded/hardware/electronics.\n\nWe will provide some MicroPython-capable hardware to develop against, pre-flashed with MicroPython. You may need to sit together in pairs or small groups for the on-device part.\n\n#### Prerequisites\nParticipants must bring:\n\n- Laptop with Linux/MacOS/Windows Subsystem for Linux\n- Have Python 3.12+ with virtualenv support installed\n- USB-C to USB-C cable or USB Type A adapter (our kit only has Type A plug)", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CVFFNV", "name": "Jon Nordby", "avatar": "https://programme.europython.eu/media/avatars/CVFFNV_DB0OXgC.webp", "biography": "Jon is a Machine Learning Engineer specialized in IoT systems.\nHe has a Master in Data Science and a Bachelor in Electronics Engineering,\nand has published several papers on applied Machine Learning.\nHe has been contributing to open-source software since 2010.\n\nThese days Jon is co-founder and Head of Data Science at Soundsensing,\na leading provider of condition monitoring solutions for commercial buildings and HVAC systems.\nHe is also the creator and maintainer of emlearn,\nan open-source Machine Learning library for microcontrollers and embedded systems.", "public_name": "Jon Nordby", "guid": "cba066a6-9301-5981-8b37-222f32db4126", "url": "https://programme.europython.eu/europython-2026/speaker/CVFFNV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/", "attachments": []}, {"guid": "9b6164a1-46ea-5eba-bb9f-a832a2c22f4c", "code": "NQGSY7", "id": 91591, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91591-1-developing-iot-sensors-with-micropython", "url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/", "title": "Developing IoT sensors with MicroPython", "subtitle": "", "track": "IoT, Embedded Systems, Hardware Integration", "type": "Tutorial", "language": "en", "abstract": "In this workshop, you will create practical internet-connected sensors with MicroPython. We will cover the basics of setting up the development environment, both for developing on PC and deploying/developing on a microcontroller device.\n\nTargeted towards those that are already comfortable programming in Python, but that have little exposure to embedded/hardware/electronics.\n\nWe will provide some MicroPython-capable hardware to develop against, pre-flashed with MicroPython. You may need to sit together in pairs or small groups for the on-device part.\n\n#### Prerequisites\nParticipants must bring:\n\n- Laptop with Linux/MacOS/Windows Subsystem for Linux\n- Have Python 3.12+ with virtualenv support installed\n- USB-C to USB-C cable or USB Type A adapter (our kit only has Type A plug)", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CVFFNV", "name": "Jon Nordby", "avatar": "https://programme.europython.eu/media/avatars/CVFFNV_DB0OXgC.webp", "biography": "Jon is a Machine Learning Engineer specialized in IoT systems.\nHe has a Master in Data Science and a Bachelor in Electronics Engineering,\nand has published several papers on applied Machine Learning.\nHe has been contributing to open-source software since 2010.\n\nThese days Jon is co-founder and Head of Data Science at Soundsensing,\na leading provider of condition monitoring solutions for commercial buildings and HVAC systems.\nHe is also the creator and maintainer of emlearn,\nan open-source Machine Learning library for microcontrollers and embedded systems.", "public_name": "Jon Nordby", "guid": "cba066a6-9301-5981-8b37-222f32db4126", "url": "https://programme.europython.eu/europython-2026/speaker/CVFFNV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NQGSY7/", "attachments": []}, {"guid": "5ee29715-7a2b-548c-9de0-22d778567e65", "code": "SNKUW7", "id": 91171, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91171-0-deconstructing-the-tenets-of-planet-scale-systems-with-python", "url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/", "title": "Deconstructing the tenets of Planet Scale Systems with Python", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Tutorial", "language": "en", "abstract": "> *\"There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery\"*\n\nIf this made you curious, this tutorial is the right place to dive deeper into the interesting (sometimes weird) world of Distributed Systems. \n\nWhen you think of constructing systems that can scale to billions of people, you have to think beyond single node programming patterns. This introduces a couple of intriguing challenges like how do you make thousands of nodes agree? Or jargons like *CAP Theorem*.  To make matters even more complicated, most of the material on this subject is highly theoretical & geared towards advanced learners. This quickly discourages a lot of programmers who tend to learn better by doing rather than just reading about things.\n\nPython has always been a great vehicle to learn complex technologies efficiently. It enables a programmer to cut through the weeds to focus on the core concepts. This was recently exemplified when Andrej Karpathy taught a way to train a GPT in pure python with [microgpt.py](https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95). \nSimilarly, it can be an efficient vehicle to deconstruct the fundamentals of large scale systems, which are essential for a holistic view of modern day applications.\n\nIn this tutorial, we will have several hands on exercises to dive deeper into the tenets of reliability, availability & scalability. By simulating a Distributed Cluster with pure python code we'll poke the system, make it fail & closely study the perils of planet scale systems & how to overcome them.\n\nTowards the end of the tutorial, you'll have a clear mental model of some of the most confusing concepts (Consistency, Consensus, Clocks etc) in distributed systems. The ultimate goal is to give you enough knowledge, curiosity & tooling so that you can explore this field on your own & be confident about building the next planet scale system.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZWGLVB", "name": "Abhimanyu Singh Shekhawat", "avatar": "https://programme.europython.eu/media/avatars/ZWGLVB_o9jGaJx.webp", "biography": "Professionally, I've 8 years of experience in making large scale distributed systems.\nPersonally, I am a passionate tinkerer, learner & educator who sees tech as the vehicle for bringing transformative change.\nMy aim is to democratise access to technology to enable each of us to do more.", "public_name": "Abhimanyu Singh Shekhawat", "guid": "2ca59a83-e8ac-52af-a38f-4853cc7f5cfd", "url": "https://programme.europython.eu/europython-2026/speaker/ZWGLVB/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/", "attachments": []}, {"guid": "aa3a5a07-b67a-567c-b618-d066044b4797", "code": "SNKUW7", "id": 91171, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91171-1-deconstructing-the-tenets-of-planet-scale-systems-with-python", "url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/", "title": "Deconstructing the tenets of Planet Scale Systems with Python", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Tutorial", "language": "en", "abstract": "> *\"There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery\"*\n\nIf this made you curious, this tutorial is the right place to dive deeper into the interesting (sometimes weird) world of Distributed Systems. \n\nWhen you think of constructing systems that can scale to billions of people, you have to think beyond single node programming patterns. This introduces a couple of intriguing challenges like how do you make thousands of nodes agree? Or jargons like *CAP Theorem*.  To make matters even more complicated, most of the material on this subject is highly theoretical & geared towards advanced learners. This quickly discourages a lot of programmers who tend to learn better by doing rather than just reading about things.\n\nPython has always been a great vehicle to learn complex technologies efficiently. It enables a programmer to cut through the weeds to focus on the core concepts. This was recently exemplified when Andrej Karpathy taught a way to train a GPT in pure python with [microgpt.py](https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95). \nSimilarly, it can be an efficient vehicle to deconstruct the fundamentals of large scale systems, which are essential for a holistic view of modern day applications.\n\nIn this tutorial, we will have several hands on exercises to dive deeper into the tenets of reliability, availability & scalability. By simulating a Distributed Cluster with pure python code we'll poke the system, make it fail & closely study the perils of planet scale systems & how to overcome them.\n\nTowards the end of the tutorial, you'll have a clear mental model of some of the most confusing concepts (Consistency, Consensus, Clocks etc) in distributed systems. The ultimate goal is to give you enough knowledge, curiosity & tooling so that you can explore this field on your own & be confident about building the next planet scale system.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZWGLVB", "name": "Abhimanyu Singh Shekhawat", "avatar": "https://programme.europython.eu/media/avatars/ZWGLVB_o9jGaJx.webp", "biography": "Professionally, I've 8 years of experience in making large scale distributed systems.\nPersonally, I am a passionate tinkerer, learner & educator who sees tech as the vehicle for bringing transformative change.\nMy aim is to democratise access to technology to enable each of us to do more.", "public_name": "Abhimanyu Singh Shekhawat", "guid": "2ca59a83-e8ac-52af-a38f-4853cc7f5cfd", "url": "https://programme.europython.eu/europython-2026/speaker/ZWGLVB/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SNKUW7/", "attachments": []}], "S4B": [{"guid": "00e2b729-2660-5b83-b324-f33bb1efaa86", "code": "GCWCEU", "id": 89372, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S4B", "slug": "europython-2026-89372-0-getting-out-of-the-testing-hell", "url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/", "title": "Getting out of the testing hell", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "We know we should write automated tests. But too often, it is a real chore: they may be slow, unreliable, difficult to run, to maintain, even to write! Why is it so hard? How to take back control?\n\nFor that, you will work on a realistic project: a Python app with FastAPI backend, a PostgreSQL database, configuration files, third-party APIs, ... and tests that are awful.\n\nYou will review:\n- the quality culture of the project\n- how it is architectured\n- the existing tests\n- and the code quality\n\nThen you will prepare the plan:\n- your own test pyramid / strategy\n- testing tools needed\n- essential scenarios\n- the CI to have your back\n\nAnd start coding:\n- updating the existing tests\n- adding new tests using powerful tooling\n- minimal refactoring to enable testing\n- creating fakes/mocks/simulators to enable testing\n\nYou'll leave able to:\n* diagnose what makes tests slow or convoluted\n* design a pragmatic test strategy for your codebase\n* implement reliable tests, with fakes and testcontainers\n* refactor just enough to make code testable\n\nIt will be around 65% hands-on, and 35% guided analysis. The first two parts will take the first half of the session, so that you have plenty of time to actually implement the strategy during the second half.\nThe code repository will stay available to you after the workshop, along with an example of the end-result.\n\nSetup :\n* [`uv`](https://docs.astral.sh/uv/)\n* (optional) docker or podman, to run TestContainers\n* (optional) a GitHub or GitLab account, to run CI", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FBQ8LL", "name": "Julien Lenormand", "avatar": "https://programme.europython.eu/media/avatars/FBQ8LL_IcZmAEu.webp", "biography": "Tech Lead and Software Engineer for cybersecurity at Kor Labs.\n\nPython programmer convinced by Agile, Software Craft, Accelerate and the antic greek philosophy. Former consultant for big industrial clients (SNCF, EDF, Thales, Schneider Electric).\nRegular meetuper, speaker at different French conferences, technical coach.", "public_name": "Julien Lenormand", "guid": "dcbd6a0c-f361-5669-acbb-f22bb48c2bcf", "url": "https://programme.europython.eu/europython-2026/speaker/FBQ8LL/"}, {"code": "RTRPAJ", "name": "GAFFIOT Jonathan", "avatar": "https://programme.europython.eu/media/avatars/RTRPAJ_dN46QeJ.webp", "biography": "Computer Engineer, mostly in C++ and Python, currently developping AI-based business applications fullstack. Also involved in auditing, training, recruitment, and conference speaking.", "public_name": "GAFFIOT Jonathan", "guid": "9d136e24-63f9-582a-813b-1f6e1a4263ce", "url": "https://programme.europython.eu/europython-2026/speaker/RTRPAJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/", "attachments": []}, {"guid": "331a2e7a-1138-5e05-99dc-e786881df192", "code": "GCWCEU", "id": 89372, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S4B", "slug": "europython-2026-89372-1-getting-out-of-the-testing-hell", "url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/", "title": "Getting out of the testing hell", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "We know we should write automated tests. But too often, it is a real chore: they may be slow, unreliable, difficult to run, to maintain, even to write! Why is it so hard? How to take back control?\n\nFor that, you will work on a realistic project: a Python app with FastAPI backend, a PostgreSQL database, configuration files, third-party APIs, ... and tests that are awful.\n\nYou will review:\n- the quality culture of the project\n- how it is architectured\n- the existing tests\n- and the code quality\n\nThen you will prepare the plan:\n- your own test pyramid / strategy\n- testing tools needed\n- essential scenarios\n- the CI to have your back\n\nAnd start coding:\n- updating the existing tests\n- adding new tests using powerful tooling\n- minimal refactoring to enable testing\n- creating fakes/mocks/simulators to enable testing\n\nYou'll leave able to:\n* diagnose what makes tests slow or convoluted\n* design a pragmatic test strategy for your codebase\n* implement reliable tests, with fakes and testcontainers\n* refactor just enough to make code testable\n\nIt will be around 65% hands-on, and 35% guided analysis. The first two parts will take the first half of the session, so that you have plenty of time to actually implement the strategy during the second half.\nThe code repository will stay available to you after the workshop, along with an example of the end-result.\n\nSetup :\n* [`uv`](https://docs.astral.sh/uv/)\n* (optional) docker or podman, to run TestContainers\n* (optional) a GitHub or GitLab account, to run CI", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FBQ8LL", "name": "Julien Lenormand", "avatar": "https://programme.europython.eu/media/avatars/FBQ8LL_IcZmAEu.webp", "biography": "Tech Lead and Software Engineer for cybersecurity at Kor Labs.\n\nPython programmer convinced by Agile, Software Craft, Accelerate and the antic greek philosophy. Former consultant for big industrial clients (SNCF, EDF, Thales, Schneider Electric).\nRegular meetuper, speaker at different French conferences, technical coach.", "public_name": "Julien Lenormand", "guid": "dcbd6a0c-f361-5669-acbb-f22bb48c2bcf", "url": "https://programme.europython.eu/europython-2026/speaker/FBQ8LL/"}, {"code": "RTRPAJ", "name": "GAFFIOT Jonathan", "avatar": "https://programme.europython.eu/media/avatars/RTRPAJ_dN46QeJ.webp", "biography": "Computer Engineer, mostly in C++ and Python, currently developping AI-based business applications fullstack. Also involved in auditing, training, recruitment, and conference speaking.", "public_name": "GAFFIOT Jonathan", "guid": "9d136e24-63f9-582a-813b-1f6e1a4263ce", "url": "https://programme.europython.eu/europython-2026/speaker/RTRPAJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GCWCEU/", "attachments": []}, {"guid": "3a4b902e-f524-5e1f-bcb3-656a53324e0e", "code": "K7XNTF", "id": 91712, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S4B", "slug": "europython-2026-91712-0-understand-and-expand-python-a-hands-on-experience-on-python-internals", "url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/", "title": "Understand and expand Python: a hands-on experience on Python internals", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "The majority of the new modules that we see out there including the word \"performance\" in their campaigns are Python modules with extensions in other languages. This has been very clear with languages like Rust, and C++, which has been the core of many popular modules in the recent years.\n\nBut how difficult is to extend CPython? and more importantly, what are the steps of doing it with other languages?\n\nThis tutorial aims to be a good starting point for people that wants to familiarize themselves with the CPython internal, and how to do extensions with languages like C, C++, Rust, and Zig, by developing a series of small exercises that will enable you to get more familiar with the processes.\n\nOn this tutorial you will learn to:\n\n- Explore the core of the standard Python implementation\n- Modify the interpreter by adding new functions\n- Extend Python with C, Rust, and Zig.\n\nThe session will be a combination of a theoretical introduction of the topics, followed by a hand-on experience on each step.\n\nSome knowledge with C, C++, Rust or Zig is encouraged, but not required.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8VVS8L", "name": "Cristi\u00e1n Maureira-Fredes", "avatar": "https://programme.europython.eu/media/avatars/8VVS8L_mpxCQ39.webp", "biography": "Cristi\u00e1n is a PSF Fellow and Board Director that is currently working at The Qt Company as Principal R&D Manager, in charge of the Qt Core (Berlin) and Qt for Python teams, from which he has been part of the development team for more than 6 years.\n\nIn his spare time, Cristi\u00e1n is a serial conference and community organizer in many countries, and participates in different initiatives like the translation of the Python documentation into Spanish, PyPI moderation, and others related Python and Qt.", "public_name": "Cristi\u00e1n Maureira-Fredes", "guid": "1f54649f-60d7-5c25-8a40-843a1eab52c2", "url": "https://programme.europython.eu/europython-2026/speaker/8VVS8L/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/", "attachments": []}, {"guid": "0d6449ef-88f1-5545-9e0e-5ebd0e82660c", "code": "K7XNTF", "id": 91712, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S4B", "slug": "europython-2026-91712-1-understand-and-expand-python-a-hands-on-experience-on-python-internals", "url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/", "title": "Understand and expand Python: a hands-on experience on Python internals", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "The majority of the new modules that we see out there including the word \"performance\" in their campaigns are Python modules with extensions in other languages. This has been very clear with languages like Rust, and C++, which has been the core of many popular modules in the recent years.\n\nBut how difficult is to extend CPython? and more importantly, what are the steps of doing it with other languages?\n\nThis tutorial aims to be a good starting point for people that wants to familiarize themselves with the CPython internal, and how to do extensions with languages like C, C++, Rust, and Zig, by developing a series of small exercises that will enable you to get more familiar with the processes.\n\nOn this tutorial you will learn to:\n\n- Explore the core of the standard Python implementation\n- Modify the interpreter by adding new functions\n- Extend Python with C, Rust, and Zig.\n\nThe session will be a combination of a theoretical introduction of the topics, followed by a hand-on experience on each step.\n\nSome knowledge with C, C++, Rust or Zig is encouraged, but not required.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8VVS8L", "name": "Cristi\u00e1n Maureira-Fredes", "avatar": "https://programme.europython.eu/media/avatars/8VVS8L_mpxCQ39.webp", "biography": "Cristi\u00e1n is a PSF Fellow and Board Director that is currently working at The Qt Company as Principal R&D Manager, in charge of the Qt Core (Berlin) and Qt for Python teams, from which he has been part of the development team for more than 6 years.\n\nIn his spare time, Cristi\u00e1n is a serial conference and community organizer in many countries, and participates in different initiatives like the translation of the Python documentation into Spanish, PyPI moderation, and others related Python and Qt.", "public_name": "Cristi\u00e1n Maureira-Fredes", "guid": "1f54649f-60d7-5c25-8a40-843a1eab52c2", "url": "https://programme.europython.eu/europython-2026/speaker/8VVS8L/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/K7XNTF/", "attachments": []}], "2.017/2.018": [{"guid": "f6ecce28-1998-547b-97c8-e0214b1cf056", "code": "SBREFN", "id": 99349, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "2.017/2.018", "slug": "europython-2026-99349-0-packaging-summit", "url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "title": "Packaging Summit", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Summit", "language": "en", "abstract": "## Important links:\n\n- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)\n\n## About the Packaging Summit\n\nCo-Chairs: Pradyun Gedam and Jannis Leidel\n\nFollowing the great success of the Packaging Summit at PyCon US we're looking to bring the same event again to EuroPython.\n\nPython packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:\n\n- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)\n- Maintainers of Python libraries\n- Developers of Python applications\n- Distributors of downstream packages (e.g., Fedora, Debian)\n- Consumers of Python packages (e.g., end-users, corporate developers)\n\nThe goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).\n\n## Request to attend\n\nAre you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you're a great candidate to attend!\n\n### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6\n\n_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&iso=20260629T2359&p1=3399), and selected attendees will be notified by email._\n\nWe will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. \n\n## Propose a topic\n\nDo you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we'll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don't have to be selected to attend to have your topic discussed.\n\n### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\n_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&iso=20260629T2359&p1=3399). We'll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We're looking forward to hearing your ideas!_\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\nNOTE: **The schedule will be published here on July 6, 2026.**\n\n## Code of Conduct\n\nThe [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.\n\nIf you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WV8QSN", "name": "Jannis Leidel", "avatar": "https://programme.europython.eu/media/avatars/MCLJSN_PwGqrbL.webp", "biography": "Working on conda and friends at Anaconda, previously worked on Django, pip and virtualenv, cofounder of PyPA and Jazzband. Current Python Software Foundation Chair and Fellow.", "public_name": "Jannis Leidel", "guid": "a9617a57-ca6e-52bc-ae8b-f028253e04f7", "url": "https://programme.europython.eu/europython-2026/speaker/WV8QSN/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "attachments": []}, {"guid": "43a19d64-60d6-5055-bd0b-84cc497d4981", "code": "SBREFN", "id": 99349, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "2.017/2.018", "slug": "europython-2026-99349-1-packaging-summit", "url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "title": "Packaging Summit", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Summit", "language": "en", "abstract": "## Important links:\n\n- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)\n\n## About the Packaging Summit\n\nCo-Chairs: Pradyun Gedam and Jannis Leidel\n\nFollowing the great success of the Packaging Summit at PyCon US we're looking to bring the same event again to EuroPython.\n\nPython packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:\n\n- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)\n- Maintainers of Python libraries\n- Developers of Python applications\n- Distributors of downstream packages (e.g., Fedora, Debian)\n- Consumers of Python packages (e.g., end-users, corporate developers)\n\nThe goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).\n\n## Request to attend\n\nAre you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you're a great candidate to attend!\n\n### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6\n\n_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&iso=20260629T2359&p1=3399), and selected attendees will be notified by email._\n\nWe will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. \n\n## Propose a topic\n\nDo you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we'll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don't have to be selected to attend to have your topic discussed.\n\n### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\n_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&iso=20260629T2359&p1=3399). We'll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We're looking forward to hearing your ideas!_\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\nNOTE: **The schedule will be published here on July 6, 2026.**\n\n## Code of Conduct\n\nThe [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.\n\nIf you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WV8QSN", "name": "Jannis Leidel", "avatar": "https://programme.europython.eu/media/avatars/MCLJSN_PwGqrbL.webp", "biography": "Working on conda and friends at Anaconda, previously worked on Django, pip and virtualenv, cofounder of PyPA and Jazzband. Current Python Software Foundation Chair and Fellow.", "public_name": "Jannis Leidel", "guid": "a9617a57-ca6e-52bc-ae8b-f028253e04f7", "url": "https://programme.europython.eu/europython-2026/speaker/WV8QSN/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "attachments": []}, {"guid": "751beddc-1bcc-508a-b742-009dfa7dcbde", "code": "SBREFN", "id": 99349, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "2.017/2.018", "slug": "europython-2026-99349-2-packaging-summit", "url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "title": "Packaging Summit", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Summit", "language": "en", "abstract": "## Important links:\n\n- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)\n\n## About the Packaging Summit\n\nCo-Chairs: Pradyun Gedam and Jannis Leidel\n\nFollowing the great success of the Packaging Summit at PyCon US we're looking to bring the same event again to EuroPython.\n\nPython packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:\n\n- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)\n- Maintainers of Python libraries\n- Developers of Python applications\n- Distributors of downstream packages (e.g., Fedora, Debian)\n- Consumers of Python packages (e.g., end-users, corporate developers)\n\nThe goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).\n\n## Request to attend\n\nAre you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you're a great candidate to attend!\n\n### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6\n\n_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&iso=20260629T2359&p1=3399), and selected attendees will be notified by email._\n\nWe will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. \n\n## Propose a topic\n\nDo you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we'll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don't have to be selected to attend to have your topic discussed.\n\n### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\n_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&iso=20260629T2359&p1=3399). We'll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We're looking forward to hearing your ideas!_\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\nNOTE: **The schedule will be published here on July 6, 2026.**\n\n## Code of Conduct\n\nThe [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.\n\nIf you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WV8QSN", "name": "Jannis Leidel", "avatar": "https://programme.europython.eu/media/avatars/MCLJSN_PwGqrbL.webp", "biography": "Working on conda and friends at Anaconda, previously worked on Django, pip and virtualenv, cofounder of PyPA and Jazzband. Current Python Software Foundation Chair and Fellow.", "public_name": "Jannis Leidel", "guid": "a9617a57-ca6e-52bc-ae8b-f028253e04f7", "url": "https://programme.europython.eu/europython-2026/speaker/WV8QSN/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "attachments": []}, {"guid": "2306b653-982f-5d5c-872d-6b9a1fd6a531", "code": "SBREFN", "id": 99349, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "2.017/2.018", "slug": "europython-2026-99349-3-packaging-summit", "url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "title": "Packaging Summit", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Summit", "language": "en", "abstract": "## Important links:\n\n- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)\n\n## About the Packaging Summit\n\nCo-Chairs: Pradyun Gedam and Jannis Leidel\n\nFollowing the great success of the Packaging Summit at PyCon US we're looking to bring the same event again to EuroPython.\n\nPython packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:\n\n- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)\n- Maintainers of Python libraries\n- Developers of Python applications\n- Distributors of downstream packages (e.g., Fedora, Debian)\n- Consumers of Python packages (e.g., end-users, corporate developers)\n\nThe goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).\n\n## Request to attend\n\nAre you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you're a great candidate to attend!\n\n### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6\n\n_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&iso=20260629T2359&p1=3399), and selected attendees will be notified by email._\n\nWe will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. \n\n## Propose a topic\n\nDo you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we'll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don't have to be selected to attend to have your topic discussed.\n\n### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\n_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&iso=20260629T2359&p1=3399). We'll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We're looking forward to hearing your ideas!_\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\nNOTE: **The schedule will be published here on July 6, 2026.**\n\n## Code of Conduct\n\nThe [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.\n\nIf you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WV8QSN", "name": "Jannis Leidel", "avatar": "https://programme.europython.eu/media/avatars/MCLJSN_PwGqrbL.webp", "biography": "Working on conda and friends at Anaconda, previously worked on Django, pip and virtualenv, cofounder of PyPA and Jazzband. Current Python Software Foundation Chair and Fellow.", "public_name": "Jannis Leidel", "guid": "a9617a57-ca6e-52bc-ae8b-f028253e04f7", "url": "https://programme.europython.eu/europython-2026/speaker/WV8QSN/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SBREFN/", "attachments": []}], "Fishbowl": [{"guid": "9c3d40b8-4ae9-5921-9214-7e609bdfbef1", "code": "VYUNHG", "id": 93918, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "Fishbowl", "slug": "europython-2026-93918-0-rust-summit-at-europython", "url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "title": "Rust Summit at EuroPython", "subtitle": "", "track": "~ None of these topics", "type": "Summit", "language": "en", "abstract": "## Rust in Python: Deep Dive and Experience Sharing\n\nThis full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community's collective knowledge.\n\n# Registration and Participation\n\nParticipation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.\n\n1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  \n2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  \n3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  \n4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8EGVC9", "name": "Cheuk Ting Ho", "avatar": "https://programme.europython.eu/media/avatars/8EGVC9_LbezfQb.webp", "biography": "After having a career as a Data Scientist and Developer Advocate, Cheuk dedicated her work to the open-source community. Currently, she is working as a developer advocate for JetBrains. She has co-founded Humble Data, a beginner Python workshop that has been happening around the world. Cheuk also started and hosted a Python podcast, PyPodCats, which highlights the achievements of underrepresented members in the community. She has served the EuroPython Society board for two years and is now a fellow and director of the Python Software Foundation.", "public_name": "Cheuk Ting Ho", "guid": "6acb0b45-07a8-5f1c-a3fa-45ae8f0a9858", "url": "https://programme.europython.eu/europython-2026/speaker/8EGVC9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "attachments": []}, {"guid": "2f753e58-329c-55c0-b3e8-70365eef674e", "code": "VYUNHG", "id": 93918, "logo": null, "date": "2026-07-13T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "Fishbowl", "slug": "europython-2026-93918-1-rust-summit-at-europython", "url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "title": "Rust Summit at EuroPython", "subtitle": "", "track": "~ None of these topics", "type": "Summit", "language": "en", "abstract": "## Rust in Python: Deep Dive and Experience Sharing\n\nThis full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community's collective knowledge.\n\n# Registration and Participation\n\nParticipation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.\n\n1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  \n2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  \n3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  \n4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8EGVC9", "name": "Cheuk Ting Ho", "avatar": "https://programme.europython.eu/media/avatars/8EGVC9_LbezfQb.webp", "biography": "After having a career as a Data Scientist and Developer Advocate, Cheuk dedicated her work to the open-source community. Currently, she is working as a developer advocate for JetBrains. She has co-founded Humble Data, a beginner Python workshop that has been happening around the world. Cheuk also started and hosted a Python podcast, PyPodCats, which highlights the achievements of underrepresented members in the community. She has served the EuroPython Society board for two years and is now a fellow and director of the Python Software Foundation.", "public_name": "Cheuk Ting Ho", "guid": "6acb0b45-07a8-5f1c-a3fa-45ae8f0a9858", "url": "https://programme.europython.eu/europython-2026/speaker/8EGVC9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "attachments": []}, {"guid": "3eedc695-f8bb-52be-9543-b18528adebc8", "code": "VYUNHG", "id": 93918, "logo": null, "date": "2026-07-13T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "Fishbowl", "slug": "europython-2026-93918-2-rust-summit-at-europython", "url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "title": "Rust Summit at EuroPython", "subtitle": "", "track": "~ None of these topics", "type": "Summit", "language": "en", "abstract": "## Rust in Python: Deep Dive and Experience Sharing\n\nThis full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community's collective knowledge.\n\n# Registration and Participation\n\nParticipation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.\n\n1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  \n2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  \n3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  \n4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8EGVC9", "name": "Cheuk Ting Ho", "avatar": "https://programme.europython.eu/media/avatars/8EGVC9_LbezfQb.webp", "biography": "After having a career as a Data Scientist and Developer Advocate, Cheuk dedicated her work to the open-source community. Currently, she is working as a developer advocate for JetBrains. She has co-founded Humble Data, a beginner Python workshop that has been happening around the world. Cheuk also started and hosted a Python podcast, PyPodCats, which highlights the achievements of underrepresented members in the community. She has served the EuroPython Society board for two years and is now a fellow and director of the Python Software Foundation.", "public_name": "Cheuk Ting Ho", "guid": "6acb0b45-07a8-5f1c-a3fa-45ae8f0a9858", "url": "https://programme.europython.eu/europython-2026/speaker/8EGVC9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "attachments": []}, {"guid": "5e483651-789c-565e-9331-a5cd597a933a", "code": "VYUNHG", "id": 93918, "logo": null, "date": "2026-07-13T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "Fishbowl", "slug": "europython-2026-93918-3-rust-summit-at-europython", "url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "title": "Rust Summit at EuroPython", "subtitle": "", "track": "~ None of these topics", "type": "Summit", "language": "en", "abstract": "## Rust in Python: Deep Dive and Experience Sharing\n\nThis full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community's collective knowledge.\n\n# Registration and Participation\n\nParticipation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.\n\n1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  \n2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  \n3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  \n4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8EGVC9", "name": "Cheuk Ting Ho", "avatar": "https://programme.europython.eu/media/avatars/8EGVC9_LbezfQb.webp", "biography": "After having a career as a Data Scientist and Developer Advocate, Cheuk dedicated her work to the open-source community. Currently, she is working as a developer advocate for JetBrains. She has co-founded Humble Data, a beginner Python workshop that has been happening around the world. Cheuk also started and hosted a Python podcast, PyPodCats, which highlights the achievements of underrepresented members in the community. She has served the EuroPython Society board for two years and is now a fellow and director of the Python Software Foundation.", "public_name": "Cheuk Ting Ho", "guid": "6acb0b45-07a8-5f1c-a3fa-45ae8f0a9858", "url": "https://programme.europython.eu/europython-2026/speaker/8EGVC9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VYUNHG/", "attachments": []}]}}, {"index": 2, "date": "2026-07-14", "day_start": "2026-07-14T04:00:00+02:00", "day_end": "2026-07-15T03:59:00+02:00", "rooms": {"S3A": [{"guid": "a93f78cf-3c12-571e-998f-04c3c9776441", "code": "EKE78F", "id": 97547, "logo": null, "date": "2026-07-14T08:30:00+02:00", "start": "08:30", "duration": "01:00", "room": "S3A", "slug": "europython-2026-97547-tuesday-registration-welcome-tbd", "url": "https://programme.europython.eu/europython-2026/talk/EKE78F/", "title": "Tuesday Registration & Welcome @ TBD", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the TBD\nYou can pick up your badges at any time during the week as long as we are open!\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!\nEnjoy the conference!", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/EKE78F/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/EKE78F/", "attachments": []}, {"guid": "ba89283f-4424-5534-bcdb-8e7332d682a2", "code": "3FDLUS", "id": 91791, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91791-0-learn-quantum-computing-with-qilisdk-from-circuits-to-pulse-level-control", "url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "title": "Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control", "subtitle": "", "track": "Jupyter and Scientific Python", "type": "Tutorial", "language": "en", "abstract": "Quantum computing is often introduced either through high-level circuit abstractions or through heavy theoretical formalism. Developers frequently struggle to bridge the gap between textbook concepts, real algorithms, and hardware-aware execution. This tutorial provides a practical, hands-on introduction to quantum computing using QiliSDK, a Python framework designed to support both digital and analog workflows in a unified and modular way.\n\nThe session begins with the foundations: qubits, quantum states, gates, and measurement. Participants will implement basic circuits and understand how quantum programs are constructed, simulated, and executed. From there, we move to algorithmic patterns such as variational circuits and Hamiltonian-based workflows, demonstrating how quantum programs can be expressed in a clean and composable API.\n\nThe core value of the tutorial is depth without unnecessary abstraction. Attendees will not only build and simulate quantum circuits, but also explore time evolution, noise models, and backend selection. We will demonstrate how the same high-level program can target different execution layers, including simulators and hardware-oriented backends. For advanced participants, we will introduce pulse-level programming concepts, showing how quantum operations map to control-level primitives and how pulse-based experiments can be expressed in the SDK.\n\nBy the end of the tutorial, participants will have:\n\n- A clear understanding of core quantum computing concepts.\n- Hands-on experience building and simulating quantum circuits.\n- Exposure to variational and Hamiltonian-based workflows.\n- Insight into noise modeling and realistic execution.\n- An understanding of how circuit-level abstractions connect to pulse-level control.\n\nThis tutorial is designed for developers and researchers who want a practical entry point into quantum computing without sacrificing architectural clarity. Prior experience with Python is required. No prior quantum computing knowledge is assumed, though basic linear algebra familiarity is helpful.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HCHWDW", "name": "Vyron Vasileiadis", "avatar": "https://programme.europython.eu/media/avatars/HCHWDW_nMZadnZ.webp", "biography": "Vyron Vasileiadis is a Technical Lead at Qilimanjaro Quantum Tech, where he designs and develops quantum software infrastructure for superconducting quantum systems. His work focuses on novel abstractions and paradigms that make quantum hardware programmable across the full stack \u2014 from quantum control at the pulse level, through SDKs that expose it to scientific users, to integration with classical HPC.\n\nHe is also pursuing a PhD in quantum control, focused on pulse optimization and gate design for high-fidelity operation of superconducting qubits. Alongside his engineering and research work, he is a regular speaker, trainer, and mentor, and serves on the Advisory Board of DevNetwork.", "public_name": "Vyron Vasileiadis", "guid": "f3a79aef-145d-509a-a921-441a2318163c", "url": "https://programme.europython.eu/europython-2026/speaker/HCHWDW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "attachments": []}, {"guid": "9d375ca1-af58-589a-830f-0ef6078c7f76", "code": "3FDLUS", "id": 91791, "logo": null, "date": "2026-07-14T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91791-1-learn-quantum-computing-with-qilisdk-from-circuits-to-pulse-level-control", "url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "title": "Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control", "subtitle": "", "track": "Jupyter and Scientific Python", "type": "Tutorial", "language": "en", "abstract": "Quantum computing is often introduced either through high-level circuit abstractions or through heavy theoretical formalism. Developers frequently struggle to bridge the gap between textbook concepts, real algorithms, and hardware-aware execution. This tutorial provides a practical, hands-on introduction to quantum computing using QiliSDK, a Python framework designed to support both digital and analog workflows in a unified and modular way.\n\nThe session begins with the foundations: qubits, quantum states, gates, and measurement. Participants will implement basic circuits and understand how quantum programs are constructed, simulated, and executed. From there, we move to algorithmic patterns such as variational circuits and Hamiltonian-based workflows, demonstrating how quantum programs can be expressed in a clean and composable API.\n\nThe core value of the tutorial is depth without unnecessary abstraction. Attendees will not only build and simulate quantum circuits, but also explore time evolution, noise models, and backend selection. We will demonstrate how the same high-level program can target different execution layers, including simulators and hardware-oriented backends. For advanced participants, we will introduce pulse-level programming concepts, showing how quantum operations map to control-level primitives and how pulse-based experiments can be expressed in the SDK.\n\nBy the end of the tutorial, participants will have:\n\n- A clear understanding of core quantum computing concepts.\n- Hands-on experience building and simulating quantum circuits.\n- Exposure to variational and Hamiltonian-based workflows.\n- Insight into noise modeling and realistic execution.\n- An understanding of how circuit-level abstractions connect to pulse-level control.\n\nThis tutorial is designed for developers and researchers who want a practical entry point into quantum computing without sacrificing architectural clarity. Prior experience with Python is required. No prior quantum computing knowledge is assumed, though basic linear algebra familiarity is helpful.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HCHWDW", "name": "Vyron Vasileiadis", "avatar": "https://programme.europython.eu/media/avatars/HCHWDW_nMZadnZ.webp", "biography": "Vyron Vasileiadis is a Technical Lead at Qilimanjaro Quantum Tech, where he designs and develops quantum software infrastructure for superconducting quantum systems. His work focuses on novel abstractions and paradigms that make quantum hardware programmable across the full stack \u2014 from quantum control at the pulse level, through SDKs that expose it to scientific users, to integration with classical HPC.\n\nHe is also pursuing a PhD in quantum control, focused on pulse optimization and gate design for high-fidelity operation of superconducting qubits. Alongside his engineering and research work, he is a regular speaker, trainer, and mentor, and serves on the Advisory Board of DevNetwork.", "public_name": "Vyron Vasileiadis", "guid": "f3a79aef-145d-509a-a921-441a2318163c", "url": "https://programme.europython.eu/europython-2026/speaker/HCHWDW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "attachments": []}, {"guid": "203a771a-77af-5b53-982c-30b5d519a8b2", "code": "3TZHB9", "id": 89760, "logo": null, "date": "2026-07-14T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S3A", "slug": "europython-2026-89760-0-process-analyze-and-transform-python-code-with-asts", "url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/", "title": "Process, Analyze, and Transform Python Code with ASTs", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "You\u2019ve likely used a tool like black, flake8, or ruff to lint or format your code, or a tool like sphinx to document it, but you probably do not know how they accomplish their tasks. These tools and many more use **Abstract Syntax Trees (ASTs)** to analyze and extract information from Python code. An AST is a representation of your code's structure that enables you to access and manipulate its different components, which is what makes it possible to automate tasks like code migrations, linting, and docstring extraction.\n\nIn this workshop, you\u2019ll learn how to use the Python standard library\u2019s ast module to parse and analyze code. Using just the standard library, we will implement a couple of common checks from scratch, which will give you an idea of how these tools work and help you build the skills and confidence to use ASTs in your own projects.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9WJJPL", "name": "Stefanie Molin", "avatar": "https://programme.europython.eu/media/avatars/9WJJPL_CpF0joR.webp", "biography": "[Stefanie Molin](https://stefaniemolin.com) is a software engineer at Bloomberg in New York City, where she tackles tough problems in information security, particularly those revolving around data wrangling/visualization, building tools for gathering data, and knowledge sharing. She is also a core developer of [numpydoc](https://github.com/numpy/numpydoc) and the author of \u201c[Hands-On Data Analysis with Pandas: A Python data science handbook for data collection, wrangling, analysis, and visualization](https://www.amazon.com/Hands-Data-Analysis-Pandas-visualization/dp/1800563450),\u201d which is currently in its second edition and has been translated into Korean and Chinese. She holds a bachelor\u2019s of science degree in operations research from Columbia University's Fu Foundation School of Engineering and Applied Science, as well as a master\u2019s degree in computer science, with a specialization in machine learning, from Georgia Tech. In her free time, she enjoys traveling the world, inventing new recipes, and learning new languages spoken among both people and computers.", "public_name": "Stefanie Molin", "guid": "5bf07136-7050-522e-af80-e59598a668c5", "url": "https://programme.europython.eu/europython-2026/speaker/9WJJPL/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/", "attachments": []}, {"guid": "47f9d86e-8530-58b8-8422-ba7624a25070", "code": "3TZHB9", "id": 89760, "logo": null, "date": "2026-07-14T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S3A", "slug": "europython-2026-89760-1-process-analyze-and-transform-python-code-with-asts", "url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/", "title": "Process, Analyze, and Transform Python Code with ASTs", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "You\u2019ve likely used a tool like black, flake8, or ruff to lint or format your code, or a tool like sphinx to document it, but you probably do not know how they accomplish their tasks. These tools and many more use **Abstract Syntax Trees (ASTs)** to analyze and extract information from Python code. An AST is a representation of your code's structure that enables you to access and manipulate its different components, which is what makes it possible to automate tasks like code migrations, linting, and docstring extraction.\n\nIn this workshop, you\u2019ll learn how to use the Python standard library\u2019s ast module to parse and analyze code. Using just the standard library, we will implement a couple of common checks from scratch, which will give you an idea of how these tools work and help you build the skills and confidence to use ASTs in your own projects.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9WJJPL", "name": "Stefanie Molin", "avatar": "https://programme.europython.eu/media/avatars/9WJJPL_CpF0joR.webp", "biography": "[Stefanie Molin](https://stefaniemolin.com) is a software engineer at Bloomberg in New York City, where she tackles tough problems in information security, particularly those revolving around data wrangling/visualization, building tools for gathering data, and knowledge sharing. She is also a core developer of [numpydoc](https://github.com/numpy/numpydoc) and the author of \u201c[Hands-On Data Analysis with Pandas: A Python data science handbook for data collection, wrangling, analysis, and visualization](https://www.amazon.com/Hands-Data-Analysis-Pandas-visualization/dp/1800563450),\u201d which is currently in its second edition and has been translated into Korean and Chinese. She holds a bachelor\u2019s of science degree in operations research from Columbia University's Fu Foundation School of Engineering and Applied Science, as well as a master\u2019s degree in computer science, with a specialization in machine learning, from Georgia Tech. In her free time, she enjoys traveling the world, inventing new recipes, and learning new languages spoken among both people and computers.", "public_name": "Stefanie Molin", "guid": "5bf07136-7050-522e-af80-e59598a668c5", "url": "https://programme.europython.eu/europython-2026/speaker/9WJJPL/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3TZHB9/", "attachments": []}, {"guid": "64fb0388-6573-59e5-8add-f6ebcf2ea8f1", "code": "3APM9B", "id": 97548, "logo": null, "date": "2026-07-14T17:00:00+02:00", "start": "17:00", "duration": "01:00", "room": "S3A", "slug": "europython-2026-97548-beginner-s-orientation", "url": "https://programme.europython.eu/europython-2026/talk/3APM9B/", "title": "Beginner's Orientation", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Are you new to EuroPython? Or perhaps you're feeling overwhelmed by all the activities, sessions, and networking opportunities happening at EuroPython 2026? Whether you're a first-time attendee or a returning participant looking to make the most of your conference experience, this session is designed for you. Join us to discover essential tips and strategies for navigating the conference smoothly and efficiently. We'll cover everything from understanding the schedule and choosing the right sessions to attend, to making meaningful connections with fellow developers and speakers. You'll learn insider tricks for managing your time effectively, finding the best networking opportunities, and ensuring you don't miss out on the most valuable experiences the conference has to offer. By the end of this session, you'll feel confident and prepared to dive into EuroPython 2026 with a clear plan for maximizing your learning and networking potential.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3APM9B/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3APM9B/", "attachments": []}], "S3B": [{"guid": "06d0feb4-1615-5fe4-8472-a35928efa777", "code": "MENRZG", "id": 90832, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S3B", "slug": "europython-2026-90832-0-let-s-write-some-decorators", "url": "https://programme.europython.eu/europython-2026/talk/MENRZG/", "title": "Let's write some decorators!", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Decorators are one of Python's most powerful features. But for many developers, they remain somewhat mysterious and intimidating, because they combine a number of complex ideas -- among them, functions as objects, and nested function definitions. In this tutorial, you'll learn what decorators are, how they work, how to write them, and when you should use them. Along the way, you'll write a bunch of decorators that will demonstrate their power and practical use cases.\n\nThis is a highly interactive, learn-by-doing tutorial in which you'll be actively encouraged to ask questions, challenge the instructor, and share your code (including code that doesn't work), to maximize everyone's learning.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VZM8L3", "name": "Reuven M. Lerner", "avatar": "https://programme.europython.eu/media/avatars/VZM8L3_hrGE7DW.webp", "biography": "Reuven is a full-time Python trainer, teaching at companies around the world and also via his LernerPython online platform. Reuven publishes both Better Developers (about Python) and Bamboo Weekly (Pandas puzzles based on current events). He wrote both Python Workout and Pandas Workout, published by Manning, and is currently writing AI-Assisted Python for Nonprogrammers for O'Reilly.", "public_name": "Reuven M. Lerner", "guid": "4f613bef-4979-5633-affd-1029757f99b4", "url": "https://programme.europython.eu/europython-2026/speaker/VZM8L3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/MENRZG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/MENRZG/", "attachments": []}, {"guid": "9a46517c-08d9-5ced-a9dc-f3bac3f5ac85", "code": "MENRZG", "id": 90832, "logo": null, "date": "2026-07-14T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S3B", "slug": "europython-2026-90832-1-let-s-write-some-decorators", "url": "https://programme.europython.eu/europython-2026/talk/MENRZG/", "title": "Let's write some decorators!", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Tutorial", "language": "en", "abstract": "Decorators are one of Python's most powerful features. But for many developers, they remain somewhat mysterious and intimidating, because they combine a number of complex ideas -- among them, functions as objects, and nested function definitions. In this tutorial, you'll learn what decorators are, how they work, how to write them, and when you should use them. Along the way, you'll write a bunch of decorators that will demonstrate their power and practical use cases.\n\nThis is a highly interactive, learn-by-doing tutorial in which you'll be actively encouraged to ask questions, challenge the instructor, and share your code (including code that doesn't work), to maximize everyone's learning.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VZM8L3", "name": "Reuven M. Lerner", "avatar": "https://programme.europython.eu/media/avatars/VZM8L3_hrGE7DW.webp", "biography": "Reuven is a full-time Python trainer, teaching at companies around the world and also via his LernerPython online platform. Reuven publishes both Better Developers (about Python) and Bamboo Weekly (Pandas puzzles based on current events). He wrote both Python Workout and Pandas Workout, published by Manning, and is currently writing AI-Assisted Python for Nonprogrammers for O'Reilly.", "public_name": "Reuven M. Lerner", "guid": "4f613bef-4979-5633-affd-1029757f99b4", "url": "https://programme.europython.eu/europython-2026/speaker/VZM8L3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/MENRZG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/MENRZG/", "attachments": []}, {"guid": "092792b3-f452-5a2d-b518-4183ba6a4c43", "code": "NELACW", "id": 89389, "logo": null, "date": "2026-07-14T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S3B", "slug": "europython-2026-89389-0-build-a-synthesizer-with-python", "url": "https://programme.europython.eu/europython-2026/talk/NELACW/", "title": "Build a Synthesizer with Python", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Tutorial", "language": "en", "abstract": "In this tutorial, we'll discuss how to build the basic components that make up a modern digital synth from scratch using Python. In the process, learn some DSP and audio programming concepts. By the end, you\u2019ll be able to define your own synthesizer make music with code!!\n\nThis tutorial aims to break down the abstractions that make up a synthesizer by building one using Python, its scientific computing libraries, & Librosa. We will discuss how to build the basic components that make up a modern digital synth from scratch! In the process, learn some DSP and audio programming concepts! By the end, you\u2019ll be able to make your own tunes with Python! We will start with theory, then work through Jupyter notebooks both individually and as a group.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RTG9TS", "name": "Sangarshanan", "avatar": "https://programme.europython.eu/media/avatars/RTG9TS_QWZuhmL.webp", "biography": "My name is Sangarshanan and I am a Software Engineer from planet Earth. I love making stuff that helps and amuses me in equal measure and standing upside down while holding a banana. When I'm bored you can find me making absurdist memes, yet another spotify playlist or staring straight into the void\n\nI am currently pursuing a masters in Music Technology at Universidad Pompeu Fabra. I am also a livecoder performing regularly at events and helping organize creative coding workshops!", "public_name": "Sangarshanan", "guid": "8a47c18d-a6b9-52d9-bad1-30309a73ab36", "url": "https://programme.europython.eu/europython-2026/speaker/RTG9TS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NELACW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NELACW/", "attachments": []}, {"guid": "6ac8da94-ae91-59d7-8e69-5b976ae3c900", "code": "NELACW", "id": 89389, "logo": null, "date": "2026-07-14T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S3B", "slug": "europython-2026-89389-1-build-a-synthesizer-with-python", "url": "https://programme.europython.eu/europython-2026/talk/NELACW/", "title": "Build a Synthesizer with Python", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Tutorial", "language": "en", "abstract": "In this tutorial, we'll discuss how to build the basic components that make up a modern digital synth from scratch using Python. In the process, learn some DSP and audio programming concepts. By the end, you\u2019ll be able to define your own synthesizer make music with code!!\n\nThis tutorial aims to break down the abstractions that make up a synthesizer by building one using Python, its scientific computing libraries, & Librosa. We will discuss how to build the basic components that make up a modern digital synth from scratch! In the process, learn some DSP and audio programming concepts! By the end, you\u2019ll be able to make your own tunes with Python! We will start with theory, then work through Jupyter notebooks both individually and as a group.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RTG9TS", "name": "Sangarshanan", "avatar": "https://programme.europython.eu/media/avatars/RTG9TS_QWZuhmL.webp", "biography": "My name is Sangarshanan and I am a Software Engineer from planet Earth. I love making stuff that helps and amuses me in equal measure and standing upside down while holding a banana. When I'm bored you can find me making absurdist memes, yet another spotify playlist or staring straight into the void\n\nI am currently pursuing a masters in Music Technology at Universidad Pompeu Fabra. I am also a livecoder performing regularly at events and helping organize creative coding workshops!", "public_name": "Sangarshanan", "guid": "8a47c18d-a6b9-52d9-bad1-30309a73ab36", "url": "https://programme.europython.eu/europython-2026/speaker/RTG9TS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NELACW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NELACW/", "attachments": []}], "S4A": [{"guid": "9e7c1eef-116b-58bc-8871-0751233e665c", "code": "TGGHKC", "id": 91739, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91739-0-grpc-for-beginners", "url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/", "title": "gRPC for Beginners", "subtitle": "", "track": "~ None of these topics", "type": "Tutorial", "language": "en", "abstract": "This hands-on workshop introduces gRPC, a modern RPC framework for building microservices. Learn Protocol Buffers, implement gRPC services from scratch, and explore communication patterns in Python. Discover how gRPC compares to REST APIs and use pre-configured Docker environments to test, benchmark, and monitor your services. By the end, you'll have practical knowledge to build microservices with gRPC. Basic Python knowledge required. All tools and infrastructure provided\u2014bring a laptop with Docker installed.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "G3TLBD", "name": "Kamil Kulig", "avatar": "https://programme.europython.eu/media/avatars/G3TLBD_mx7t4Wb.webp", "biography": "\ud83d\udcbc Building at CTHINGS.CO | \ud83d\udcbb programmer, \ud83c\udf1f\u2728\ud83c\udfc6 leader, \ud83d\udc0d python lover, \ud83c\udfae gamer, \ud83d\udd7a king of disco, \u26bd\ufe0f\ud83c\udfc0\ud83c\udfc8\ud83e\udd4a love sport in every form, \ud83c\uddf5\ud83c\uddf1 from Poland", "public_name": "Kamil Kulig", "guid": "0c62b664-66d9-5c68-a33d-1dbf8cafc0e3", "url": "https://programme.europython.eu/europython-2026/speaker/G3TLBD/"}, {"code": "3FUH7N", "name": "Adam Gorgo\u0144", "avatar": "https://programme.europython.eu/media/avatars/L9DWNE_VOTgwxq.webp", "biography": "I\u2019m a Data Scientist with a strong foundation in Python and machine learning. I have great passion for NLP and statistics.", "public_name": "Adam Gorgo\u0144", "guid": "14d1537e-deb8-5c6f-a751-ea96598dbe41", "url": "https://programme.europython.eu/europython-2026/speaker/3FUH7N/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/", "attachments": []}, {"guid": "5017f43a-515a-5a9c-bca5-be89ef57cdba", "code": "TGGHKC", "id": 91739, "logo": null, "date": "2026-07-14T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S4A", "slug": "europython-2026-91739-1-grpc-for-beginners", "url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/", "title": "gRPC for Beginners", "subtitle": "", "track": "~ None of these topics", "type": "Tutorial", "language": "en", "abstract": "This hands-on workshop introduces gRPC, a modern RPC framework for building microservices. Learn Protocol Buffers, implement gRPC services from scratch, and explore communication patterns in Python. Discover how gRPC compares to REST APIs and use pre-configured Docker environments to test, benchmark, and monitor your services. By the end, you'll have practical knowledge to build microservices with gRPC. Basic Python knowledge required. All tools and infrastructure provided\u2014bring a laptop with Docker installed.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "G3TLBD", "name": "Kamil Kulig", "avatar": "https://programme.europython.eu/media/avatars/G3TLBD_mx7t4Wb.webp", "biography": "\ud83d\udcbc Building at CTHINGS.CO | \ud83d\udcbb programmer, \ud83c\udf1f\u2728\ud83c\udfc6 leader, \ud83d\udc0d python lover, \ud83c\udfae gamer, \ud83d\udd7a king of disco, \u26bd\ufe0f\ud83c\udfc0\ud83c\udfc8\ud83e\udd4a love sport in every form, \ud83c\uddf5\ud83c\uddf1 from Poland", "public_name": "Kamil Kulig", "guid": "0c62b664-66d9-5c68-a33d-1dbf8cafc0e3", "url": "https://programme.europython.eu/europython-2026/speaker/G3TLBD/"}, {"code": "3FUH7N", "name": "Adam Gorgo\u0144", "avatar": "https://programme.europython.eu/media/avatars/L9DWNE_VOTgwxq.webp", "biography": "I\u2019m a Data Scientist with a strong foundation in Python and machine learning. I have great passion for NLP and statistics.", "public_name": "Adam Gorgo\u0144", "guid": "14d1537e-deb8-5c6f-a751-ea96598dbe41", "url": "https://programme.europython.eu/europython-2026/speaker/3FUH7N/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TGGHKC/", "attachments": []}, {"guid": "0fa2cf91-dfdc-5001-8f7a-26142933312b", "code": "N39TFS", "id": 89392, "logo": null, "date": "2026-07-14T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S4A", "slug": "europython-2026-89392-0-load-testing-1-on-1-discovering-the-limits-of-your-system", "url": "https://programme.europython.eu/europython-2026/talk/N39TFS/", "title": "Load testing 1-on-1: discovering the limits of your system", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "Benchmarking is hard. Ever wondered how reliable is your system? How many requests per second can it handle? How about the average response time: what do you do to measure that? How does the system behave during events like black friday, christmas sales, or any other important date that may cause an outage? Have no idea where to start answering these questions? Fear not, because you are in the right place!\n\nIn this tutorial I will introduce you to locust: probably the most awesome pythonic tool to perform load tests against websites, REST APIs, GQL, and many other ways of contacting and using systems. You'll be able to understand how to structure your stress tests projects, and get your hands dirty in creating tests against a REST API, while visually being able to tell where is the threshold point and what happens after that.\n\nThis tutorial is targeted for intermediate Pythonistas. Some recommended requirements (or things that will not be covered in a greater level of details) include: basics of git, simple Docker commands (to get a container up and running), classes in Python, some understanding of REST APIs. Will do my best to make it possible so anyone/any level of knowledge can join. After this presentation, participants will be able to create tests that benchmark applications in the most realistic way: exactly how users would use a system - and with that, answer the initial questions proposed, as well as create reports to display anywhere necessary (such as your job).", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PK8LSS", "name": "Vin\u00edcius Gubiani Ferreira", "avatar": "https://programme.europython.eu/media/avatars/PK8LSS_AnxijVa.webp", "biography": "Love to code, to read other people's code, and to help others achieve what they want with code. Be it directly or by guiding them to find out for themselves.", "public_name": "Vin\u00edcius Gubiani Ferreira", "guid": "6d7b7670-3e6b-5b7c-9bf3-898e415a3a7c", "url": "https://programme.europython.eu/europython-2026/speaker/PK8LSS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/N39TFS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/N39TFS/", "attachments": []}, {"guid": "3f02dbb9-fd3e-5e50-b236-957741bec544", "code": "N39TFS", "id": 89392, "logo": null, "date": "2026-07-14T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S4A", "slug": "europython-2026-89392-1-load-testing-1-on-1-discovering-the-limits-of-your-system", "url": "https://programme.europython.eu/europython-2026/talk/N39TFS/", "title": "Load testing 1-on-1: discovering the limits of your system", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "Benchmarking is hard. Ever wondered how reliable is your system? How many requests per second can it handle? How about the average response time: what do you do to measure that? How does the system behave during events like black friday, christmas sales, or any other important date that may cause an outage? Have no idea where to start answering these questions? Fear not, because you are in the right place!\n\nIn this tutorial I will introduce you to locust: probably the most awesome pythonic tool to perform load tests against websites, REST APIs, GQL, and many other ways of contacting and using systems. You'll be able to understand how to structure your stress tests projects, and get your hands dirty in creating tests against a REST API, while visually being able to tell where is the threshold point and what happens after that.\n\nThis tutorial is targeted for intermediate Pythonistas. Some recommended requirements (or things that will not be covered in a greater level of details) include: basics of git, simple Docker commands (to get a container up and running), classes in Python, some understanding of REST APIs. Will do my best to make it possible so anyone/any level of knowledge can join. After this presentation, participants will be able to create tests that benchmark applications in the most realistic way: exactly how users would use a system - and with that, answer the initial questions proposed, as well as create reports to display anywhere necessary (such as your job).", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PK8LSS", "name": "Vin\u00edcius Gubiani Ferreira", "avatar": "https://programme.europython.eu/media/avatars/PK8LSS_AnxijVa.webp", "biography": "Love to code, to read other people's code, and to help others achieve what they want with code. Be it directly or by guiding them to find out for themselves.", "public_name": "Vin\u00edcius Gubiani Ferreira", "guid": "6d7b7670-3e6b-5b7c-9bf3-898e415a3a7c", "url": "https://programme.europython.eu/europython-2026/speaker/PK8LSS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/N39TFS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/N39TFS/", "attachments": []}], "S4B": [{"guid": "f36e9da1-2842-53b0-af01-179ebbb7a646", "code": "ZPCDKE", "id": 91653, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "duration": "01:30", "room": "S4B", "slug": "europython-2026-91653-0-let-it-rip-a-diffusion-tutorial", "url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/", "title": "Let it rip a diffusion tutorial", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Tutorial", "language": "en", "abstract": "Implementing high-performance deep learning models often feels like a struggle between readable Python code and the low-level optimizations required for modern GPUs and TPUs. JAX bridges this gap by treating neural networks as pure mathematical transformations. In this session, we will move beyond the abstractions of high-level frameworks to build a Denoising Diffusion Probabilistic Model (DDPM) from the ground up.\n\nWe will explore how JAX\u2019s functional programming paradigm is uniquely suited for the stochastic nature of diffusion. You will learn how to:\n\n- Master the JIT (Just-In-Time) compilation: See how @jax.jit transforms Python functions into optimized XLA kernels for massive speedups.\n- Leverage Vectorized Mapping: Use @jax.vmap to handle data parallelism across batches without the overhead of manual loops.\n- Dissect the Diffusion Pipeline: Step through the forward noise process (SDEs) and the reverse denoising process (Score-matching).\n- Manage State and PRNGs: Navigate JAX\u2019s unique, explicit handling of random number generation and stateless transformations.\n\nThis tutorial is designed for Python developers and ML engineers who want to understand the \"how\" and \"why\" behind state-of-the-art text-to-image models. You will leave with a deep understanding of the diffusion objective and the practical skills to deploy high-performance model architectures using the JAX ecosystem.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7T3KC8", "name": "Mai Gim\u00e9nez", "avatar": "https://programme.europython.eu/media/avatars/7T3KC8_I8Ww13f.webp", "biography": "Mai Gim\u00e9nez, PhD. is a staff research engineer working in large language and multimodal language models at Google Deepmind. She is passionate about building the most useful technology for everyone and her main research interest is in language and the sociotechnical impacts of these models in the real world.\n\nMai is a former board member of the Spanish Python Association, helped organise several PyConES conferences and is a proud member of the Pyladies.", "public_name": "Mai Gim\u00e9nez", "guid": "dc9e731f-a6bb-5dff-8153-edb13ea27d12", "url": "https://programme.europython.eu/europython-2026/speaker/7T3KC8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/", "attachments": []}, {"guid": "0e48382f-da4c-56f2-a410-21e69899308f", "code": "ZPCDKE", "id": 91653, "logo": null, "date": "2026-07-14T11:15:00+02:00", "start": "11:15", "duration": "01:30", "room": "S4B", "slug": "europython-2026-91653-1-let-it-rip-a-diffusion-tutorial", "url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/", "title": "Let it rip a diffusion tutorial", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Tutorial", "language": "en", "abstract": "Implementing high-performance deep learning models often feels like a struggle between readable Python code and the low-level optimizations required for modern GPUs and TPUs. JAX bridges this gap by treating neural networks as pure mathematical transformations. In this session, we will move beyond the abstractions of high-level frameworks to build a Denoising Diffusion Probabilistic Model (DDPM) from the ground up.\n\nWe will explore how JAX\u2019s functional programming paradigm is uniquely suited for the stochastic nature of diffusion. You will learn how to:\n\n- Master the JIT (Just-In-Time) compilation: See how @jax.jit transforms Python functions into optimized XLA kernels for massive speedups.\n- Leverage Vectorized Mapping: Use @jax.vmap to handle data parallelism across batches without the overhead of manual loops.\n- Dissect the Diffusion Pipeline: Step through the forward noise process (SDEs) and the reverse denoising process (Score-matching).\n- Manage State and PRNGs: Navigate JAX\u2019s unique, explicit handling of random number generation and stateless transformations.\n\nThis tutorial is designed for Python developers and ML engineers who want to understand the \"how\" and \"why\" behind state-of-the-art text-to-image models. You will leave with a deep understanding of the diffusion objective and the practical skills to deploy high-performance model architectures using the JAX ecosystem.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7T3KC8", "name": "Mai Gim\u00e9nez", "avatar": "https://programme.europython.eu/media/avatars/7T3KC8_I8Ww13f.webp", "biography": "Mai Gim\u00e9nez, PhD. is a staff research engineer working in large language and multimodal language models at Google Deepmind. She is passionate about building the most useful technology for everyone and her main research interest is in language and the sociotechnical impacts of these models in the real world.\n\nMai is a former board member of the Spanish Python Association, helped organise several PyConES conferences and is a proud member of the Pyladies.", "public_name": "Mai Gim\u00e9nez", "guid": "dc9e731f-a6bb-5dff-8153-edb13ea27d12", "url": "https://programme.europython.eu/europython-2026/speaker/7T3KC8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZPCDKE/", "attachments": []}, {"guid": "c0dffe39-3f68-535f-a626-59e6440b25a4", "code": "ZSRZPC", "id": 90395, "logo": null, "date": "2026-07-14T13:45:00+02:00", "start": "13:45", "duration": "01:30", "room": "S4B", "slug": "europython-2026-90395-0-introduction-to-security-research-find-a-cve-with-codeql", "url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/", "title": "Introduction to security research. Find a CVE with CodeQL.", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "This tutorial will introduce fundamentals of security research and CodeQL when looking for security vulnerabilities in software. We'll share how to look for vulnerabilities in code and how to use static analysis to help us find sources, sinks and vulnerabilities.\n\nUsing an example of a vulnerability in an open source project that the speaker has found, CVE-2024-32022, we will walk through how we could detect it manually by reading code, learn how to write CodeQL, and by the end write a CodeQL query to find this vulnerability and its variants.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDSVUM", "name": "Sylwia Budzynska", "avatar": "https://programme.europython.eu/media/avatars/CDSVUM_7GcJQsQ.webp", "biography": "Sylwia \u2018BlazingWind\u2019 Budzynska is a security researcher at GitHub Security Lab, where she hunts for vulnerabilities in open source software, specializing in Python and at-scale static analysis tooling. She has found 80+ CVEs and spoken at a number of conferences and events, including The Hack Summit Warsaw, OrangeCon Amsterdam, CoderGirls Aarhus, 0-day Aarhus and others. \n\nMost of her research is available on https://github.blog/author/sylwiabudzynska/ and most of her advisories on https://securitylab.github.com/advisories/. \n\nIn free time, Sylwia enjoys dance classes, reading fantasy, hiking and gaming.", "public_name": "Sylwia Budzynska", "guid": "e2c94273-d55e-5b1c-8779-f2ef18dff437", "url": "https://programme.europython.eu/europython-2026/speaker/CDSVUM/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/", "attachments": []}, {"guid": "00373ce4-0cff-592d-93c9-f6238761c520", "code": "ZSRZPC", "id": 90395, "logo": null, "date": "2026-07-14T15:30:00+02:00", "start": "15:30", "duration": "01:30", "room": "S4B", "slug": "europython-2026-90395-1-introduction-to-security-research-find-a-cve-with-codeql", "url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/", "title": "Introduction to security research. Find a CVE with CodeQL.", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Tutorial", "language": "en", "abstract": "This tutorial will introduce fundamentals of security research and CodeQL when looking for security vulnerabilities in software. We'll share how to look for vulnerabilities in code and how to use static analysis to help us find sources, sinks and vulnerabilities.\n\nUsing an example of a vulnerability in an open source project that the speaker has found, CVE-2024-32022, we will walk through how we could detect it manually by reading code, learn how to write CodeQL, and by the end write a CodeQL query to find this vulnerability and its variants.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDSVUM", "name": "Sylwia Budzynska", "avatar": "https://programme.europython.eu/media/avatars/CDSVUM_7GcJQsQ.webp", "biography": "Sylwia \u2018BlazingWind\u2019 Budzynska is a security researcher at GitHub Security Lab, where she hunts for vulnerabilities in open source software, specializing in Python and at-scale static analysis tooling. She has found 80+ CVEs and spoken at a number of conferences and events, including The Hack Summit Warsaw, OrangeCon Amsterdam, CoderGirls Aarhus, 0-day Aarhus and others. \n\nMost of her research is available on https://github.blog/author/sylwiabudzynska/ and most of her advisories on https://securitylab.github.com/advisories/. \n\nIn free time, Sylwia enjoys dance classes, reading fantasy, hiking and gaming.", "public_name": "Sylwia Budzynska", "guid": "e2c94273-d55e-5b1c-8779-f2ef18dff437", "url": "https://programme.europython.eu/europython-2026/speaker/CDSVUM/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZSRZPC/", "attachments": []}]}}, {"index": 3, "date": "2026-07-15", "day_start": "2026-07-15T04:00:00+02:00", "day_end": "2026-07-16T03:59:00+02:00", "rooms": {"S1": [{"guid": "18b29163-427b-5641-b37f-de2a938ab879", "code": "9V77RU", "id": 96933, "logo": null, "date": "2026-07-15T08:00:00+02:00", "start": "08:00", "duration": "01:00", "room": "S1", "slug": "europython-2026-96933-wednesday-registration-welcome-tbd", "url": "https://programme.europython.eu/europython-2026/talk/9V77RU/", "title": "Wednesday Registration & Welcome @ TBD", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.\nYou can pick up your badges at any time during the week as long as we are open!\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!\n\nWe hope to see you around!", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/9V77RU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/9V77RU/", "attachments": []}, {"guid": "c99a8544-a99c-5f9f-9bca-1fff8f44bc9a", "code": "R7PTVB", "id": 96935, "logo": null, "date": "2026-07-15T09:00:00+02:00", "start": "09:00", "duration": "00:30", "room": "S1", "slug": "europython-2026-96935-conference-opening", "url": "https://programme.europython.eu/europython-2026/talk/R7PTVB/", "title": "Conference Opening \ud83c\udf89", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026!\n\nJoin us on the opening session, where we will kick-off the conference days, and tell you what's going to happen in the following days.\nYou will have three days filled with Keynotes, talks, panels, and open spaces, lightning talks, and a weekend full of sprints and other events for people attending the conference.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/R7PTVB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/R7PTVB/", "attachments": []}, {"guid": "f0d21ca3-9fdf-53f6-87ec-808b7fde1065", "code": "JZYBA3", "id": 100638, "logo": null, "date": "2026-07-15T09:30:00+02:00", "start": "09:30", "duration": "00:45", "room": "S1", "slug": "europython-2026-100638-how-complex-systems-taught-me-to-fail", "url": "https://programme.europython.eu/europython-2026/talk/JZYBA3/", "title": "How Complex Systems Taught Me To Fail", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Keynote", "language": "en", "abstract": "This talk traces a meandering story of twenty years of invention, triumph and disaster, touching on theoretical physics, cloud computing, viral genetics, pandemic responses, and nearly dying in an NHS A&E queue. You'll pick up four generally applicable laws of complex systems, gain some superpowers for averting an apocalypse, and hopefully laugh a bit along the way. This isn't much of a technical talk and it is neither sanitised nor triumphant \u2014 expect sarcasm, most of all during the rough patches. My hope is that you'll leave seeing your own work differently, especially if it's quiet and unglamorous. Resilience is a property of systems, not their components, and it's the people who notice small changes and tend locally who make the biggest differences of all.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "EMFMGE", "name": "Imogen Wright", "avatar": "https://programme.europython.eu/media/avatars/MK8HCH_EzGapa0.webp", "biography": "Imogen Wright (they/them) is a South African software engineer and bioinformatician who has spent the last two decades trying to make complex systems behave\u2014in theoretical physics, HIV drug resistance and COVID genomics, healthcare communications, cloud technologies and even ad tech. They studied computer science and physics at Rhodes University, completed a masters in theoretical physics at the Perimeter Institute (where Stephen Hawking was guest of honour at their graduation), and earned a PhD in bioinformatics from the University of the Western Cape. Imogen co-founded Hyrax Biosciences, whose Exatype software helps track HIV drug resistance across Africa and assembled the first Omicron variant SARS-CoV-2 genomes. Their work has been recognised by the Innovation Prize for Africa, various publications, two patents, and a long list of disasters that now fuel their favourite stories.", "public_name": "Imogen Wright", "guid": "434a2e2b-43ea-5ee7-a171-86d5b014a355", "url": "https://programme.europython.eu/europython-2026/speaker/EMFMGE/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JZYBA3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JZYBA3/", "attachments": []}, {"guid": "a05be092-d43a-532b-bd2c-9137f2e603b4", "code": "Y8QAUA", "id": 90914, "logo": null, "date": "2026-07-15T10:45:00+02:00", "start": "10:45", "duration": "00:45", "room": "S1", "slug": "europython-2026-90914-free-threaded-python-past-present-and-future", "url": "https://programme.europython.eu/europython-2026/talk/Y8QAUA/", "title": "Free-threaded Python: past, present and future", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk (long session)", "language": "en", "abstract": "Free-threaded Python, the effort to remove the Global Interpreter Lock from CPython, is one of the biggest and most exciting changes to Python in many years. However, It can be hard to follow what that means, what effect it will have on you and your code, and how this isn't yet another Python 2 to 3 migration.\n\nThis overview will explain what free-threading is, why it's a big deal, how it differs from other ways to deal with the GIL, and what the plan is for ensuring a smooth migration. We'll explain the basics of thread safety, data races, and concurrent designs, how those apply to Python code, and how this will and won't change when the GIL is disabled. And yes, we'll show some threads go _brrr_.\n\nAlthough we'll mention some complex, deeply technical problems, this is not a technical deep dive and any experience level is welcome.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VGYSEC", "name": "Thomas Wouters", "avatar": "https://programme.europython.eu/media/avatars/VGYSEC_W9oA4r9.webp", "biography": "Thomas is a long-time Python core developer, Steering Council member, and Software Engineer at Meta who currently works on Python internals and Free-threaded Python tooling. Also, cats.", "public_name": "Thomas Wouters", "guid": "0a3353ae-8542-5b3a-be59-6f5cafa807d7", "url": "https://programme.europython.eu/europython-2026/speaker/VGYSEC/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/Y8QAUA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/Y8QAUA/", "attachments": []}, {"guid": "2d20d3db-6365-568f-900e-e157a8c3a2b4", "code": "KRMBWS", "id": 91364, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "duration": "00:30", "room": "S1", "slug": "europython-2026-91364-inside-python-3-15-s-jit-optimizer", "url": "https://programme.europython.eu/europython-2026/talk/KRMBWS/", "title": "Inside Python 3.15's JIT Optimizer", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Python 3.15's JIT is finally starting to see real speedups on benchmarks. Core to that is a revamped JIT optimizer. *What* the JIT selects to compile and *how* it optimizes code has seen significant improvements thanks to the work of many contributors. In this talk, I will cover in-depth how the Python JIT optimizes your Python code, and how this was an amazing community team effort spanning multiple continents.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7Y9DS3", "name": "Ken Jin", "avatar": "https://programme.europython.eu/media/avatars/7Y9DS3_VCN9LzE.webp", "biography": "Ken Jin is a Python core developer since Aug 2021. He works primarily on the performance of Python's interpreter. He currently works as a contractor for OpenAI.", "public_name": "Ken Jin", "guid": "522aeaa9-c477-5419-b0b4-aa17013aff19", "url": "https://programme.europython.eu/europython-2026/speaker/7Y9DS3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/KRMBWS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/KRMBWS/", "attachments": []}, {"guid": "4e45c9b6-8186-52d3-a8c0-a6570e35fb3a", "code": "W9NLXV", "id": 90696, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "duration": "00:30", "room": "S1", "slug": "europython-2026-90696-update-on-the-cpython-jit-what-to-expect-in-3-15", "url": "https://programme.europython.eu/europython-2026/talk/W9NLXV/", "title": "Update on the CPython JIT: What to expect in 3.15", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "This talk is a follow-up to my EuroPython 2025 session on the foundations of the CPython JIT compiler. It looks at how the JIT has evolved since Python 3.14 and where it stands as Python 3.15 approaches release. We cover the transition of the JIT from an experimental feature towards a supported part of CPython, how it fits into the runtime today, and what that means in practice for users and distributors. The talk also explores how the JIT interacts with free-threaded builds, the current status of integration with external debuggers, and how these constraints shape real-world usage. Finally, we examine how the JIT performs today, where it already delivers substantial speedups, where it does not, and what realistic performance expectations look like for Python 3.15.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NCU7GS", "name": "Diego Russo", "avatar": "https://programme.europython.eu/media/avatars/NCU7GS_zzTxxgX.webp", "biography": "Diego Russo is a CPython core developer and Principal Software Engineer in Arm\u2019s Runtimes team, based in Cambridge, UK. He has been using Python since 2006 and contributing to CPython since 2023, with a focus on interpreter performance, JIT-related work, CI infrastructure, and ensuring CPython and its ecosystem run reliably and efficiently on Arm platforms. His work sits at the intersection of runtime, performance engineering, and large-scale open source collaboration.\nDiego is also a EuroPython organiser and leads the Arm Python Guild, an internal community of more than 1,400 Python developers working across the company.", "public_name": "Diego Russo", "guid": "f59ca2b2-7e74-5503-ae8e-2c1d8eab0630", "url": "https://programme.europython.eu/europython-2026/speaker/NCU7GS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/W9NLXV/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/W9NLXV/", "attachments": []}, {"guid": "13aaaf57-bbd5-5a9c-9f8e-5a246a941afb", "code": "US3W8J", "id": 90690, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "duration": "00:30", "room": "S1", "slug": "europython-2026-90690-rethinking-asyncio-from-scratch-for-free-threaded-python", "url": "https://programme.europython.eu/europython-2026/talk/US3W8J/", "title": "Rethinking AsyncIO from scratch for free-threaded Python", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "AsyncIO was designed with the Global Interpreter Lock (GIL) in mind: the event loop runs all of your async in a single thread, regardless of the GIL presence. Projects like trio focused on better ergonomics, but with a noticeable disadvantage in performance.\nWhat if we can have both?\n\nIn this talk we\u2019ll explore an alternative approach to async code in Python, redesigning the whole thing from the ground up, looking at what it takes \u2013 spoiler: way less than you think \u2013 to have simpler interfaces and multi-threaded support from day zero in a single package: TonIO.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "TMDTKB", "name": "Giovanni Barillari", "avatar": "https://programme.europython.eu/media/avatars/TMDTKB_QjcxgCv.webp", "biography": "Physicist, software developer, SRE, OSS maintainer. Photography passionated. In love with radical honesty.", "public_name": "Giovanni Barillari", "guid": "858610e6-926c-5a54-9f6f-7507e291e7d2", "url": "https://programme.europython.eu/europython-2026/speaker/TMDTKB/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/US3W8J/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/US3W8J/", "attachments": []}, {"guid": "c40e75ed-6aa1-5c20-8b1e-a1f48c6341bc", "code": "ENK9EF", "id": 90643, "logo": null, "date": "2026-07-15T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S1", "slug": "europython-2026-90643-what-every-python-developer-should-know-about-the-cpython-abi", "url": "https://programme.europython.eu/europython-2026/talk/ENK9EF/", "title": "What every Python developer should know about the CPython ABI", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Most developers interact with the CPython interpreter by writing code in the Python language and executing it with the bytecode interpreter. However, any native extensions and any code that runs alongside or embeds the interpreter needs to communicate with CPython via the CPython C API. This API corresponds to an application binary interface (ABI) that native code written in C, C++, Rust, Zig, or any other low-level programming language needs to use to directly interact with the CPython interpreter runtime. Understanding the ABI allows Python developers to make informed trade-offs when they distribute or depend on packages that contain native extensions.\n\nIn this talk, I will explain what the CPython ABI is, how it differs from the CPython C API, and how it determines whether a package from PyPI is installable with a given installation of CPython. I will discuss how CPython's stable ABI and limited C API enable substantially reduced distribution overhead at the cost of some performance overhead. I'll show how maintainers of projects that distribute compiled code in binary wheels can choose to ship wheels using the stable ABI to trade off peak performance with ease of distribution and support for new platforms.\n\nI'll finish by explaining how the ABI is evolving to enable improvements like the free-threaded interpreter. I will share real-world experience of introducing the new free-threaded ABI to the community with the perspective available to a maintainer of open source projects that are core components of the Python ecosystem.\n\nPython 3.15 will enable a new stable ABI that allows distributing one extension per platform for any interpreter newer than Python 3.15. I'll describe work done by myself and others in the community to enable end-to-end testing of the next-generation stable ABI.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XF7NUC", "name": "Nathan Goldbaum", "avatar": "https://programme.europython.eu/media/avatars/XF7NUC_yHM0SI9.webp", "biography": "I am a Staff Software Engineer at Quansight, where I am currently working on community support for free-threaded Python. During the course of this project, I led the effort to support free-threaded Python in NumPy and helped add support for free-threaded Python to foundational community Python projects accross the ecosystem. I am also the author or editor of most of the documentation on the Python free-threading guide, which I hope will be a lasting community resource. I am also a member of the NumPy steering council and am an active PyO3 maintainer.", "public_name": "Nathan Goldbaum", "guid": "79bf8bc3-ee72-5b78-9daa-d9d47b71bddb", "url": "https://programme.europython.eu/europython-2026/speaker/XF7NUC/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ENK9EF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ENK9EF/", "attachments": []}, {"guid": "c4a8c63b-0075-5bb1-a5ae-327dc230f70d", "code": "WKBHZW", "id": 91138, "logo": null, "date": "2026-07-15T15:25:00+02:00", "start": "15:25", "duration": "00:30", "room": "S1", "slug": "europython-2026-91138-rust-for-high-performance-computing-hpc-in-python", "url": "https://programme.europython.eu/europython-2026/talk/WKBHZW/", "title": "Rust for High Performance Computing (HPC) in Python", "subtitle": "", "track": "Jupyter and Scientific Python", "type": "Talk", "language": "en", "abstract": "Python has become the most widely used language in scientific computing and data science due to its approachable syntax, vast ecosystem of libraries, and rapid prototyping capabilities. However, its interpreted nature often poses a performance bottleneck for computationally intensive tasks common in High Performance Computing (HPC) used in scientific and data work, such as large-scale simulations, complex data analysis, and machine learning model training. \n\nEnhancing Python's performance, therefore, is critical for scientific computing: it allows researchers and engineers to maintain the productivity and flexibility of the Python environment while achieving the necessary speed and scalability to tackle demanding, real-world HPC problems without needing to switch to lower-level languages entirely.\n\nIn this talk, we will review the current state of Python in HPC, examine the role of key libraries like NumPy and Dask, and see how to use PyO3 to create robust Rust bindings for Python in a way that simplifies the process of building and distributing packages. We\u2019ll explore how Rust brings specific advantages to HPC, including guaranteed memory safety without garbage collection, zero-cost abstractions, and true parallelism.\n\nAttendees will leave with a clear understanding of the 'why' and 'how' of leveraging Rust in their Python-based HPC workflows, positioning them to develop faster, safer, and more scalable computational code.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8EGVC9", "name": "Cheuk Ting Ho", "avatar": "https://programme.europython.eu/media/avatars/8EGVC9_LbezfQb.webp", "biography": "After having a career as a Data Scientist and Developer Advocate, Cheuk dedicated her work to the open-source community. Currently, she is working as a developer advocate for JetBrains. She has co-founded Humble Data, a beginner Python workshop that has been happening around the world. Cheuk also started and hosted a Python podcast, PyPodCats, which highlights the achievements of underrepresented members in the community. She has served the EuroPython Society board for two years and is now a fellow and director of the Python Software Foundation.", "public_name": "Cheuk Ting Ho", "guid": "6acb0b45-07a8-5f1c-a3fa-45ae8f0a9858", "url": "https://programme.europython.eu/europython-2026/speaker/8EGVC9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/WKBHZW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/WKBHZW/", "attachments": []}, {"guid": "7ab99dad-c714-5626-b19f-4e0ac4ae0be8", "code": "Y3DGWB", "id": 91611, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "duration": "00:30", "room": "S1", "slug": "europython-2026-91611-demystifying-cra-for-the-community", "url": "https://programme.europython.eu/europython-2026/talk/Y3DGWB/", "title": "Demystifying CRA for the community", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk", "language": "en", "abstract": "September 2026, a month after Euro Python, the first wave of legal obligations for the EU Cyber Resilience Act (CRA) will wash over the software world. For us in the open-source community, CRA has been a source of major confusion, dilemma, and anxiety \n- 'Will my hobby project make me liable?'\n- 'Is my Python package \"commercial activity\"?'\n- 'Will PSF be liable for your code?'\n- 'Do I really need an SBOM for a Python library?'\nIn this talk I, a lawyer, engineer, and FOSS alumni, will cut through the legal jargon to explain what the CRA actually is, why it exists, and how it changes the \"manufacturer\" relationship with open-source code. We will walk through the new legal roles\u2014from Manufacturers to the newly defined \"Stewards\"\u2014and provide a clear \"To-Do and Not-To-Do\" list for community maintainers. Whether you are a solo contributor or part of a major foundation, this session will help you navigate the 2026\u20132027 transition period with confidence.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QYF9E3", "name": "Anwesha Das", "avatar": "https://programme.europython.eu/media/avatars/QYF9E3_sUXaHGy.webp", "biography": "Anwesha is a fellow at the Python Software Foundation, Outstanding PyLadies Award winner (2025) and Release Manager of Ansible. She works as a Software Engineer with the Ansible Engineering team at Red Hat. She led PyLadies efforts in India and now is an organizer at PyLadies Stockholm.  You can follow her blog at https://anweshadas.in.", "public_name": "Anwesha Das", "guid": "637b1ae0-8256-5de0-995e-f4bb8c15f1f5", "url": "https://programme.europython.eu/europython-2026/speaker/QYF9E3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/Y3DGWB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/Y3DGWB/", "attachments": []}, {"guid": "aa7bdbde-0261-597a-a771-1a10b9a34cb3", "code": "PKMSSL", "id": 96939, "logo": null, "date": "2026-07-15T16:45:00+02:00", "start": "16:45", "duration": "00:45", "room": "S1", "slug": "europython-2026-96939-keynote-2-placeholder", "url": "https://programme.europython.eu/europython-2026/talk/PKMSSL/", "title": "Keynote 2 - Placeholder", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "\"TBD: Keynote Speaker\"\nDetails coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PKMSSL/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PKMSSL/", "attachments": []}, {"guid": "f7249939-a540-5ef6-af3e-92642f485136", "code": "G9QJBU", "id": 101788, "logo": null, "date": "2026-07-15T17:30:00+02:00", "start": "17:30", "duration": "00:10", "room": "S1", "slug": "europython-2026-101788-europython-25th-anniversary", "url": "https://programme.europython.eu/europython-2026/talk/G9QJBU/", "title": "EuroPython 25th anniversary", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Join us for a special informative session as we celebrate EuroPython's 25th anniversary \u2014 a milestone worth marking together! We have some exciting surprises in store that you won't want to miss, so make sure to stick around after the keynote and be part of this memorable occasion.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/G9QJBU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/G9QJBU/", "attachments": []}, {"guid": "b252e0f1-5ce3-51b2-9786-85aa5dcbb18b", "code": "FMNUSD", "id": 97559, "logo": null, "date": "2026-07-15T17:40:00+02:00", "start": "17:40", "duration": "00:15", "room": "S1", "slug": "europython-2026-97559-python-quiz", "url": "https://programme.europython.eu/europython-2026/talk/FMNUSD/", "title": "Python Quiz \ud83d\udcdd", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Join us for a fast, fun, and brain-twisting quiz all about Python, the tools, and the community.\n\nTest your knowledge, race against the clock, and compete with fellow EuroPython attendees for a shot at some awesome prizes. \n\nWhether you\u2019re a seasoned developer or just love a good challenge, this showdown is your time to shine.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/FMNUSD/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/FMNUSD/", "attachments": []}, {"guid": "3d5ba3a6-02d6-5915-b9bb-04901b2a3fc1", "code": "PRFYJA", "id": 97560, "logo": null, "date": "2026-07-15T17:55:00+02:00", "start": "17:55", "duration": "00:45", "room": "S1", "slug": "europython-2026-97560-lightning-talks-wednesday", "url": "https://programme.europython.eu/europython-2026/talk/PRFYJA/", "title": "Lightning talks \u26a1 Wednesday", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "Enjoy Wednesday's lightning talks! Short talks about everything by everyone. \n\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\nIf that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that's helping and contributing to our conference and community, or something else!\n\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\nThis time limit is strictly enforced!\n\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\nReply to the acceptance email by 3pm to confirm your spot.\n(If you don't, you lose your spot!)\n\nYou can submit your lightning talk on this form: TBD\nNote that there's a limit of one submission per person.\n\nCommunity/conference announcement submissions are done through the same form before 1pm Thursday.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PRFYJA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PRFYJA/", "attachments": []}], "S2": [{"guid": "ecaefb80-7b6b-5f5d-8763-bee5581ec27e", "code": "DWBGJ9", "id": 91718, "logo": null, "date": "2026-07-15T10:45:00+02:00", "start": "10:45", "duration": "00:45", "room": "S2", "slug": "europython-2026-91718-how-cpythons-errors-keep-getting-better", "url": "https://programme.europython.eu/europython-2026/talk/DWBGJ9/", "title": "How CPythons Errors keep getting better", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk (long session)", "language": "en", "abstract": "The upcoming Python 3.15 keeps improving error messages, which will be the fourth out of the last five releases to establish this most recent tradition. Good errors help developers debug faster and keep beginners from giving up in frustration\n\nIn this talk we go all the way back to 2008 and explore how error messages evolved from Python 3.0 to today. Along the way we will also go into what makes up a good error message and why they are often so hard to get right. We'll also touch on how academia and research let us down and why good errors remain an art more than an exact science. I will also talk about my personal experience and the ~~bad~~ _unfortunate_ error message I encountered during my first teaching job that fueled my passion for compiler and language development.\n\nFinally, I will also argue why you not only don't have to be a compiler engineer to contribute to python errors but why not being one might be an actual advantage.\n\nBy the end, you will have learned what makes a good error message, how to spot a bad one and how to fix them.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RRDCVX", "name": "Florian Freitag", "avatar": "https://programme.europython.eu/media/avatars/RRDCVX_v9yYaxh.webp", "biography": "I am a software engineer working on the Kotlin compiler at JetBrains and doing my masters in computer-science at TU Wien (Austria). Fascinated by all aspects of computing but currently enjoying my deep fall down the compiler engineering rabbit hole.", "public_name": "Florian Freitag", "guid": "75c047d9-3d58-56c8-ba9c-40ac2a0e5a3a", "url": "https://programme.europython.eu/europython-2026/speaker/RRDCVX/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DWBGJ9/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DWBGJ9/", "attachments": []}, {"guid": "f4bb9da8-fec5-54ec-9699-b7d26aced555", "code": "CBA98V", "id": 91688, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "duration": "00:30", "room": "S2", "slug": "europython-2026-91688-designing-and-building-custom-keyboards-with-python", "url": "https://programme.europython.eu/europython-2026/talk/CBA98V/", "title": "Designing and Building Custom Keyboards \u2328\ufe0f with Python", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Talk", "language": "en", "abstract": "Programmers spend countless hours typing, yet we rarely question how keyboard design affects our comfort and productivity. Standard QWERTY layouts and one-size-fits-all hardware often contribute to strain and inefficiency. This talk explores how Python can help you design, build, and optimize your own custom keyboard; from analyzing your typing habits to generating the PCB.\n\nWe start with a brief history of keyboard design and the limitations of QWERTY, then introduce alternative layouts (ortholinear, split, and more) and explain why they can reduce strain and improve speed. Next, we use Python to make data-driven decisions: we\u2019ll look at scripts that analyze your codebases or IDE usage to find your most-used characters and symbols, so you can place keys where they matter most for your workflow and favorite languages.\n\nWe then move on to PCB design with KidCad and GDSFactory, a Python-based tool for creating keyboard PCBs and exporting Gerber or GDS files for manufacturing. You\u2019ll see how to arrange keys around your hand shape and generate production-ready files. After that, we cover basic assembly and programming your layout with open-source firmware. Finally, we discuss trade-offs: the benefits of a tailored setup (better posture, less finger travel, DIY satisfaction) it can also be a meaningful accessibility solution for users with special needs, limited mobility, or other conditions where standard keyboards become a uncomfortable or unusable. Some of the barriers (cost, time, learning a new layout), plus strategies for gradual adoption and practice tools.\n\n**What you will learn:**  \n- Why keyboard layout and ergonomics matter for long-term comfort and productivity.  \n- How to use Python to analyze your typing patterns and inform layout choices.  \n- How to use KidCad or GDSFactory (Python) to design hardware and generate manufacturing files.  \n- How to go from design to assembly and firmware, and how to ease the transition to a new layout.\n\nNo prior experience with keyboard building or PCB design is required; just curiosity and a desire to create a custom typing experience. By the end, you\u2019ll know how to question your current keyboard and how to start building your own with Python.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "MGPBMB", "name": "Carlos A Aranibar", "avatar": "https://programme.europython.eu/media/avatars/MGPBMB_usyovzG.webp", "biography": "Carlos Aranibar is a Data Scientist \ud83d\udcca from Bolivia \ud83c\udde7\ud83c\uddf4 who now lives in Chicago.\n\nHe has a background in Economics and Statistics and holds a Master\u2019s in Data Science.  \nCarlos is skilled in querying data, process optimization, and automation.  \nHe loves to learn and actively participates in multiple Meetups, discussing new developments in tech/software/data. Carlos is part of the Chicago Python (ChiPy) board and also a volunteer for PostgreSQL.\n\nFluent in both English and Spanish!\n\n[Carlos\u2019 LinkedIn](https://www.linkedin.com/in/carlos-aranibar/), feel free to reach out!", "public_name": "Carlos A Aranibar", "guid": "4a2bb9c6-370a-54a1-854d-79dfc30fcd0c", "url": "https://programme.europython.eu/europython-2026/speaker/MGPBMB/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CBA98V/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CBA98V/", "attachments": []}, {"guid": "ae92d699-9792-5a05-b54b-08cfdd2a4776", "code": "UPELCT", "id": 89571, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "duration": "00:30", "room": "S2", "slug": "europython-2026-89571-friendly-borders-graph-algorithms-reveal-eurovision-voting-patterns", "url": "https://programme.europython.eu/europython-2026/talk/UPELCT/", "title": "Friendly Borders: Graph algorithms reveal Eurovision voting patterns", "subtitle": "", "track": "Data preparation and visualisation", "type": "Talk", "language": "en", "abstract": "<b>Graphs</b> offer a powerful tool for uncovering relationships and hidden patterns between entities. This presentation provides an introduction to <b>graph theory</b>, and demonstrates how graphs are applied across various business domains - from social network analysis and recommendation systems to fraud detection and supply chain optimization. Through an overview of core concepts and algorithmic approaches, the goal is to show how graphs can reveal underlying structures in complex systems.\n\nAs a real-world case study, the presentation focuses on <b>Eurovision voting</b> - an area long suspected of regional bias and neighbourly favoritism. Using graph-based analysis and community detection techniques, we explore voting patterns between countries to better understand how geography, history, and politics influence the distribution of points. Through visualizations and data-driven insights, the talk demonstrates how graph theory uncovers hidden alliances and behavioral trends within the seemingly light-hearted spectacle of a music contest.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XQ8VNG", "name": "Domagoj Mari\u0107", "avatar": "https://programme.europython.eu/media/avatars/XQ8VNG_WXyQWVs.webp", "biography": "Domagoj Mari\u0107 is AI Customer Delivery Manager at Pontis Technology, where he leads projects in NLP, computer vision, predictive analytics, and generative AI. With a background in information security and data science, he previously headed data science teams at Megatrend and Comping. Beyond his industry work, Domagoj is also an experienced lecturer, sharing knowledge in programming and applied AI with students and professionals.", "public_name": "Domagoj Mari\u0107", "guid": "0b46322c-e099-5371-9c98-7c5651f4004a", "url": "https://programme.europython.eu/europython-2026/speaker/XQ8VNG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/UPELCT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/UPELCT/", "attachments": []}, {"guid": "90b07acc-ce03-5342-9697-d7df61559ce1", "code": "NWLBJC", "id": 89608, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "duration": "00:30", "room": "S2", "slug": "europython-2026-89608-why-doing-difficult-things-is-good-for-you-and-good-for-your-team", "url": "https://programme.europython.eu/europython-2026/talk/NWLBJC/", "title": "Why doing difficult things is good for you and good for your team", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "This talk shares my experience in my first ever role as a junior engineer after switching careers. I picked up a ticket involving tools and concepts I\u2019d never used before (OpenTelemetry and Honeycomb), hoping to spend a day learning a bit about how we implement observability and monitoring of our Django app. Spoiler alert: it took three weeks of learning, debugging and asking for help to complete this work.\n\nI learned some valuable lessons along the way, not just technical stuff, but about how to problem-solve, collaborate effectively, and keep going in the face of *seemingly unending* challenges.\n\nThrough this talk, I want junior engineers in the audience to know:\n\n- You can do difficult things, even if you think you lack the experience or knowledge required. If you\u2019re willing to learn, and have a supportive team around you, you have everything you need.\n- Doing difficult things is daunting, but also incredibly rewarding. You often learn 10x more than you expected, and when you finally merge your work into main, it feels like winning the lottery.\n- Taking on hard things benefits the whole team\u2014others might learn something new, or strengthen their own understanding by helping you out.\n- There\u2019s a lot you can do to support yourself: reach out early, reach out often, and learn how to communicate problems clearly.\n- The value of your work cannot be measured by lines of code, it\u2019s so much greater than that.\n\nThis talk also offers a reminder to seniors, and leaders or managers, about how tough it can be to be new. Juniors don\u2019t just lack experience, we don't know what we don't know and it's *really* easy (for others and ourselves!) to underestimate this. When things break or go wrong, we might not understand where or why, and even if we find a bug or an error, knowing how to fix it is another challenge altogether. I\u2019ll share how my team\u2019s support made all the difference, and offer some practical ideas for how others can support their junior colleagues, too.\n\nThis isn\u2019t a super technical talk. It\u2019s more about the human experience of being a beginner, the value of persistence, why asking for help is a great thing to do, and the power of supportive teams; there's hopefully something useful and/or interesting in this for everyone.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ATWUPR", "name": "Katie Bickford", "avatar": "https://programme.europython.eu/media/avatars/ATWUPR_MMoqQJq.webp", "biography": "Katie is a Junior Software Developer at the Bennett Institute for Applied Data Science where she helps maintain services that facilitate secure & transparent health data research. She cares a lot about supporting the Python community locally and globally, recently serving on the organising committee for PyCon UK 2025 as Communications Lead. Before becoming a software engineer, Katie previously spent ~10 years working in international medical communications & medical education.", "public_name": "Katie Bickford", "guid": "8d27b693-e79d-56b7-a749-c4a28243eaaf", "url": "https://programme.europython.eu/europython-2026/speaker/ATWUPR/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NWLBJC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NWLBJC/", "attachments": []}, {"guid": "52195466-e65e-52d6-8886-54ca41f4c66e", "code": "8CDAWL", "id": 91592, "logo": null, "date": "2026-07-15T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S2", "slug": "europython-2026-91592-hacking-truth-python-and-the-limits-of-mathematics", "url": "https://programme.europython.eu/europython-2026/talk/8CDAWL/", "title": "Hacking Truth: Python and the Limits of Mathematics", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "Are mathematics a reliable way to explain reality? Can we trust them? And more importantly: what role could Python play in such profound questions?\n\nG\u00f6del\u2019s Incompleteness Theorems are pillars of mathematics and computer science, revealing inherent limits in our ability to formalize truth and reason about the world. Their implications reach far beyond logic, touching philosophy, the foundations of computing, and the limits of machine reasoning. Despite their importance, understanding _why_ these results hold can feel inaccessible and abstract.\n\nIn this talk, we tackle that difficulty directly. Python will be used not only as a programming language, but as a conceptual tool to understand G\u00f6del\u2019s First Incompleteness Theorem through algorithmic thinking.\n\nWe will see how computational ideas make abstract concepts tangible, exploring the intellectual journey from Hilbert\u2019s dream of a complete mathematics to the breakthroughs of G\u00f6del, Church, and Turing. Through this lens, Python helps illuminate the boundaries of logic and computation, offering a new perspective on how mathematics works... and where its limits lie.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "W77PWS", "name": "Miguel \u00c1ngel Fern\u00e1ndez Guti\u00e9rrez", "avatar": "https://programme.europython.eu/media/avatars/W77PWS_0c850nL.webp", "biography": "I\u2019m Miguel \u00c1ngel, a Machine Learning Engineer and applied researcher with a background in Computer Engineering and Mathematics. I work at the intersection of computation, artificial intelligence, and real-world systems, using Python both as an engineering tool and as a medium for understanding complex ideas.\n\nMy work spans the full lifecycle of intelligent systems: from rapid prototyping and experimentation to production-grade ML services, data pipelines, and scalable APIs. I\u2019m particularly interested in applied language models, ML platforms, and building systems that are reliable, measurable, and maintainable over time.\n\nOutside of production work, I use personal projects as a space to experiment, learn, and build systems end to end \u2014 often at the intersection of technology, people, and real-world constraints. These projects range from AI-powered communication tools and real-time data applications to developer utilities, educational initiatives, and research work in computation and logic.\n\nI\u2019m driven by curiosity and by problems that sit at the boundary between theory and practice. Whether building ML systems, exploring computability, or creating tools with social impact, I aim to transform complex ideas into clear, useful, and meaningful solutions.\n\nYou can learn more about my work and projects at [**mianfg.me**](https://mianfg.me).", "public_name": "Miguel \u00c1ngel Fern\u00e1ndez Guti\u00e9rrez", "guid": "f59a0567-b457-5399-a49a-1f85d9c8365d", "url": "https://programme.europython.eu/europython-2026/speaker/W77PWS/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/8CDAWL/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/8CDAWL/", "attachments": []}, {"guid": "b9082e60-2cab-504c-8ed4-43e0b9c8b9ac", "code": "CKXUGV", "id": 91651, "logo": null, "date": "2026-07-15T15:25:00+02:00", "start": "15:25", "duration": "00:30", "room": "S2", "slug": "europython-2026-91651-python-profiling-the-hitchhiker-s-guide-to-profiling", "url": "https://programme.europython.eu/europython-2026/talk/CKXUGV/", "title": "Python Profiling \u2013 The Hitchhiker's Guide to Profiling", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "Want to know what makes your data pipeline slow? How much memory does it use? In this talk, we'll guide you through the landscape of Python profilers \u2013 from classics like Scalene, py-spy and memray to newer tools like Tachyon and eBPF profiling \u2013 and show you how to choose the right one for your needs.\n\nWe'll cover timing and memory profiling methodologies, compare tools across accuracy and overhead, walk through real usage examples, and explore continuous profiling. Whether you're optimizing a single script or debugging production systems, you'll leave with a practical framework for profiling smarter.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YWKXWU", "name": "Jonathan Striebel", "avatar": "https://programme.europython.eu/media/avatars/YWKXWU_ixKnVhr.webp", "biography": "Jonathan is a senior ML software engineer at Aignostics in Berlin, Germany. He works on machine-learning pipelines for medical image analysis, ensuring scalability and maintainability.", "public_name": "Jonathan Striebel", "guid": "89578eaf-db33-539e-ad47-a5000b70e4a3", "url": "https://programme.europython.eu/europython-2026/speaker/YWKXWU/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CKXUGV/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CKXUGV/", "attachments": []}, {"guid": "6ad7f385-b0ab-5ed5-8110-539f9b4116ff", "code": "TWBDVZ", "id": 91588, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "duration": "00:30", "room": "S2", "slug": "europython-2026-91588-the-hardest-test-suite-i-ever-built-a-pytest-case-study", "url": "https://programme.europython.eu/europython-2026/talk/TWBDVZ/", "title": "The hardest test suite I ever built - a pytest case study", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "For years, this real-time video system had no tests. Every change produced unpredictable side effects. Accuracy drifted. Production incidents and escalations followed. The only \u201cverification\u201d was manual inspection and hope.\n\nWhen I joined the project, this was the reality - and building a proper integration test suite became my first priority.\n\nIn this talk, I\u2019ll share how I designed and evolved the hardest integration test suite of my career using pytest - and kept it readable.\n\nThe system processed live streams in production. It was non-deterministic. Individual detections were only 80\u201390% accurate. For testing, we replayed recorded scenarios to make system behavior observable and comparable across runs. But binary assertions were not enough. A single failed event did not mean the whole system was broken - but we needed a way to measure when it actually was.\n\nInstead of writing one massive test, I built a layered architecture:\n\n- dual parametrization - recording scope and event scope\n- orchestration in fixtures - assertions in tiny, single-purpose tests\n- statistics collection during execution\n- end-of-run aggregation that summarizes system accuracy\n\nThe result was a suite that could detect regressions in model changes and produce reproducible evidence - HTML reports, structured dumps, and a summary statistics file.\n\nThis talk explores how far pytest can be stretched beyond unit tests - into a framework for architecting complex integration systems.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8ANWRW", "name": "Grzegorz Kocjan", "avatar": "https://programme.europython.eu/media/avatars/8ANWRW_U4Y77Lt.webp", "biography": "14 years of programming in Python is a great adventure, no matter if I had to fix a bug on yesterday, or design a complex and efficient architecture, Python never let me down. I love code optimization and difficult tasks. I love to share knowledge. Father of two kids, sci-fi and fantasy fan, gamer, LEGO builder.", "public_name": "Grzegorz Kocjan", "guid": "d3b0d184-22a8-5562-89f4-e1cf408dfbd0", "url": "https://programme.europython.eu/europython-2026/speaker/8ANWRW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TWBDVZ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TWBDVZ/", "attachments": []}], "S4": [{"guid": "998f909d-2e1a-5e59-995f-f5b6fb4c7ded", "code": "QT97WA", "id": 91517, "logo": null, "date": "2026-07-15T10:45:00+02:00", "start": "10:45", "duration": "00:45", "room": "S4", "slug": "europython-2026-91517-scaling-python-systems-by-designing-team-aware-architecture", "url": "https://programme.europython.eu/europython-2026/talk/QT97WA/", "title": "Scaling Python Systems by Designing Team-Aware Architecture", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Talk (long session)", "language": "en", "abstract": "Python systems rarely fail because of raw performance limits.\n\nThey fail because the architecture does not scale with the team.\n\nAs services grow, coordination overhead increases. Shared databases create implicit coupling. API contracts become political boundaries. Async workflows leak across domains. Meetings multiply to compensate for structural flaws.\n\nInstead of adding process, we should redesign architecture.\n\nThis talk explores how Python system design directly determines team scalability.\n\nUsing real-world backend systems built with FastAPI, asyncio, gRPC (grpcio), PostgreSQL, Redis, Docker, we will examine how architectural decisions shape organizational complexity.\n\nTopics include:\n\t\u2022\tDomain boundaries in Python services and their impact on ownership\n\t\u2022\tDatabase-per-service vs shared schemas\n\t\u2022\tREST vs gRPC as team contracts\n\t\u2022\tMonorepo vs polyrepo trade-offs in multi-service Python ecosystems\n\t\u2022\tContract testing and schema evolution\n\t\u2022\tObservability as an interface between teams\n\t\u2022\tAsync workloads and cross-service backpressure\n\t\u2022\tWhen microservices increase coordination cost instead of reducing it\n\nRather than promoting a single architecture style, this session introduces a framework for evaluating whether a design reduces or amplifies team cognitive load.\n\nAttendees will leave with:\n\t\u2022\tCriteria for defining service boundaries that align with ownership\n\t\u2022\tPatterns for reducing cross-team friction through architectural design\n\t\u2022\tWarning signs that architecture is becoming a coordination bottleneck\n\t\u2022\tPractical techniques for evolving Python systems without multiplying process\n\nThis talk is intended for experienced Python engineers, architects, and technical leaders responsible for systems that must scale both technically and organizationally.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "R8WFXV", "name": "Ivan Markeev", "avatar": "https://programme.europython.eu/media/avatars/R8WFXV_4xV32CA.webp", "biography": "Engineering leader with over 20 years in software development and leadership roles. Strong track record in people management, technical direction, and solution architecture. Proven ability to scale teams, drive cross-org adoption of complex systems, and deliver cloud-native, AI-enabled platforms. Certified Professional Cloud Architect. Deep experience in designing and operating high-throughput systems for fintech, crypto, and enterprise domains.", "public_name": "Ivan Markeev", "guid": "51a4025a-4a7e-55cf-84a9-5d3bb3be3b92", "url": "https://programme.europython.eu/europython-2026/speaker/R8WFXV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QT97WA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QT97WA/", "attachments": []}, {"guid": "a68f82ec-6c24-5991-9d81-4301180b1496", "code": "D899EP", "id": 100244, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "duration": "00:30", "room": "S4", "slug": "europython-2026-100244-write-async-get-sync-for-free", "url": "https://programme.europython.eu/europython-2026/talk/D899EP/", "title": "Write async. Get sync for free", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Sponsored", "language": "en", "abstract": "When you write a Python library, you have a dilemma. Ship\nasync-only? Ship blocking-only? Or write everything twice and watch both copies drift?\n\n[Synchronicity](https://github.com/modal-labs/synchronicity) removes this dilemma. Write your library once (in async) and get a blocking\ninterface for free, while avoiding the boilerplate and limitations of `asyncio.run()` wrappers. We\u2019ll talk through how to handle persistent connections, async generators, clean tracebacks, type hints and more.\n\nWe've used it in production at Modal for years, and it's fully open source.\nWe hope it can save you from writing your own library twice!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VG83KQ", "name": "Thom Lane", "avatar": "https://programme.europython.eu/media/avatars/UN9NUA_hyjQpXx.webp", "biography": "Thom has spent the last decade building and scaling machine learning systems in Python. He is a Member of Technical Staff at Modal, where he develops new Sandboxes\ufffc features, with a focus on improving the experience for reinforcement learning workloads. At AWS, Thom worked on deep learning frameworks and helped new users get started with them too, becoming a certified Coursera instructor along the way.", "public_name": "Thom Lane", "guid": "8f2ecf26-41ea-55a1-9113-a912f131ae31", "url": "https://programme.europython.eu/europython-2026/speaker/VG83KQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/D899EP/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/D899EP/", "attachments": []}, {"guid": "b38dd2da-eeb6-5595-8df4-effea3170a28", "code": "3HBWHB", "id": 91439, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "duration": "00:30", "room": "S4", "slug": "europython-2026-91439-how-to-blend-python-physics-and-art-to-create-hopefully-pretty-pictures", "url": "https://programme.europython.eu/europython-2026/talk/3HBWHB/", "title": "How to blend Python, physics, and art to create (hopefully) pretty pictures", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Talk", "language": "en", "abstract": "Sometimes, one writes code to answer an important scientific question. On other occasions, code is developed with some economic interest in mind, legitimate or otherwise. And then there are situations where something else is going on. This work, which I call _June Gloom_, is just that: something else. Specifically, it is about producing pretty pictures, inspired by very real analog art and executed by using a somewhat abstract toy model for magnetism from statistical mechanics. In my presentation, I will show how we can use Monte Carlo techniques to perform physically accurate computer simulations. The results obtained from these simulations are then turned into both static as well as interactive visualizations using Matplotlib.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PPQPPU", "name": "Christian Leitold", "avatar": "https://programme.europython.eu/media/avatars/PPQPPU_uHxr7fb.webp", "biography": "I am a former scientist who now works as a software engineer and in the field of data science. Also, I am a huge nerd and lover of all things concerning free and open source software. Let us make SciFi utopia a reality!", "public_name": "Christian Leitold", "guid": "2f577b23-6863-508d-b455-c2baeb278f6e", "url": "https://programme.europython.eu/europython-2026/speaker/PPQPPU/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3HBWHB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3HBWHB/", "attachments": []}, {"guid": "2d3c54f3-cc0e-50b2-a167-b8dadee18338", "code": "7VKQQM", "id": 90791, "logo": null, "date": "2026-07-15T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S4", "slug": "europython-2026-90791-beyond-optional-in-real-world-projects-missing-none-and-unset", "url": "https://programme.europython.eu/europython-2026/talk/7VKQQM/", "title": "Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Have you ever merged a config file, applied an input that says \"update only these fields\", or handled an API payload, only to overwrite data because \"missing\", `None`, and \"unset\" were treated as the same thing?\n\nIn real-world projects, \"no value\" has at least three meanings:\n\n- a missing key (the field is absent),\n- an explicit `None` (the value is present and intentionally null),\n- an unset input (the caller didn't specify the field, so you must not touch it).\n\nWhen we collapse these into `T | None` (a nullable type) or fall back to `dict[str, Any]`, type checking becomes noisy, branching becomes fragile, and refactors get risky. Every field nullable, every check defensive, every change scary.\n\nThis is a practical talk about using typing to model and safely consume real-world data with `TypedDict` and `dataclasses`, not a typing tutorial or a framework pitch. We'll walk through one end-to-end example (payload -> normalization -> domain model -> safe updates) with before/after code and focus on patterns you can apply immediately:\n\n- Use `Required` / `NotRequired` to model missing keys instead of abusing `T | None`.\n- Use `T | None` only when `None` is a meaningful value.\n- Represent unset inputs with a sentinel pattern (starting from `UNSET = object()` and optionally evolving to `typing_extensions.Sentinel`) so partial updates don't silently overwrite data and the type checker can distinguish unset from `None`.\n- Keep extraction code honest with type aliases, `TypeIs`, and (optionally) small `match` cases for readability.\n\nAfter this session, you'll be able to define stricter data models, write safer extraction code, and make schema changes less painful, because your types will reflect what your data actually means. This talk is for intermediate Python developers who already use type hints in production.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BPFJEJ", "name": "Koudai Aono", "avatar": "https://programme.europython.eu/media/avatars/BPFJEJ_nBVuCjo.webp", "biography": "I am a software developer based in Tokyo, with a strong focus on Python. I enjoy contributing to Open Source Software (OSS) with a goal to make the development environment friendlier.", "public_name": "Koudai Aono", "guid": "1d80c3fc-297b-5220-ab58-60e3a90475d6", "url": "https://programme.europython.eu/europython-2026/speaker/BPFJEJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/7VKQQM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/7VKQQM/", "attachments": []}, {"guid": "181c8bd1-6c37-54c0-9249-b9672707c025", "code": "H7KGU3", "id": 90763, "logo": null, "date": "2026-07-15T15:25:00+02:00", "start": "15:25", "duration": "00:30", "room": "S4", "slug": "europython-2026-90763-ducklake-take-python-and-duckdb-for-a-swim-in-your-data-lake", "url": "https://programme.europython.eu/europython-2026/talk/H7KGU3/", "title": "DuckLake - Take Python and DuckDB for a swim in your data lake", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "*Pitch*\n\nWith DuckDB and DuckLake, managing and analyzing huge data sets is no longer limited to complex cloud infrastructure setups. You can literally run these tasks on your notebook now and at comparable speeds. This talk will show you how.\n\n*Description*\n\n**DuckDB** is an embedded relational analytics database (OLAP) which can be added to a Python project with a simple `uv add duckdb` or `pip install duckdb`. It is both fast and powerful for processing analytical data warehouse workloads, using the well-known PostgreSQL SQL dialect. Data can be stored in memory and persisted on disk. DuckDB is well integrated with Polars via zero copy Apache Arrow data structures, making it a great choice for complex data science and engineering tasks.\n\n**DuckLake** is a extension which comes with DuckDB to add data lake features, meaning that huge data sets can be managed using Parquet files stored on disk or in an object store such as S3. It uses a novel approach to data lakes in that the management structures are stored in a database (DuckDB), instead of complex file and directory structures, as many other data lake systems do. This provides great advantages for implementing smart features such as snapshots, schema evolution or time travel.\n\nAgain, installation of the extension is just a simple `INSTALL ducklake` command away, making this a really easy way to configure your own personal \"lake house\" - the ideal combination of a data warehouse with a data lake.\n\nThe talk will give a short introduction to the database terminology, explain what is novel about the DuckLake approach and then showcase a typical use case for lake houses: storing historical weather data and making this available for analytics to Python applications.\n\nBoth DuckDB and DuckLake are MIT licensed.\n\n*Resources:*\n- [Python.org](https://www.python.org/)\n- [DuckDB \u2013 An in-process SQL OLAP database management system](https://duckdb.org/)\n- [DuckLake is an integrated data lake and catalog format \u2013 DuckLake](https://ducklake.select/)", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QYTJB9", "name": "Marc-Andr\u00e9 Lemburg", "avatar": "https://programme.europython.eu/media/avatars/QYTJB9_ANUFtLT.webp", "biography": "Marc-Andre is the CEO and founder of eGenix.com, a Python-focused boutique project and consulting company based in Germany, specializing in the data, finance and database space. He has a degree in mathematics from the University of D\u00fcsseldorf.\n\nHis work with and for Python started in 1994. He is a Python Core Developer, designed and implemented the Unicode support in Python, the editor of the Python DB-API and author of several open source libraries and tools (e.g. the mx Extensions mxDateTime and mxODBC).\n\nMarc-Andre is a EuroPython Society (EPS) Fellow, a Python Software Foundation (PSF) founding Fellow and co-founded a local Python meeting in D\u00fcsseldorf (PyDDF). He served on the board of the PSF and EPS for many years and loves to contribute to the growth of Python wherever he can.\n\nMore information is available on https://malemburg.com/", "public_name": "Marc-Andr\u00e9 Lemburg", "guid": "a24beb49-89a1-58ab-92df-b6259d44ae0e", "url": "https://programme.europython.eu/europython-2026/speaker/QYTJB9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/H7KGU3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/H7KGU3/", "attachments": []}, {"guid": "2bff7c24-8589-5abb-b030-a82c41b99612", "code": "JEN7WA", "id": 91007, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "duration": "00:30", "room": "S4", "slug": "europython-2026-91007-fast-multi-version-etl-pipelines-in-python-with-generators-and-functools", "url": "https://programme.europython.eu/europython-2026/talk/JEN7WA/", "title": "Fast Multi-Version ETL Pipelines in Python with Generators and functools", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "Modern data systems rarely stay unchanged. Schemas evolve, search indices are rebuilt, and for some period of time, multiple versions of the same dataset need to be kept in sync. A typical example is a zero-downtime migration, where several versions of the same data must be synchronised in parallel while the system remains live. This creates a subtle but important challenge: how to keep each version consistent without duplicating extraction work or increasing database load.\n\nIn this talk, I\u2019ll describe a production ETL architecture built in Python that processes multiple data versions in parallel using a single streaming pipeline. The system synchronises data from PostgreSQL into OpenSearch, keeps each version independently consistent, and guarantees that no version ever moves backwards \u2014 while querying the database only once per batch. The talk is based on a real production system and explains the design decisions and tradeoffs behind it.\n\nThe design is based on generator pipelines and functional composition using the functools module. Instead of relying on threads or async frameworks, the ETL flow is expressed as a sequence of small, composable functions: page extraction, DTO normalisation, version-aware filtering, transformation, bulk loading, and dead-letter handling. The reference implementation uses Django as the ORM layer and Celery for orchestration, but the core design is not framework-specific and can be applied equally with SQLAlchemy or raw SQL.\n\nI\u2019ll show how this design makes it possible to:\n1. Synchronise multiple versions efficiently without duplicate database queries\n2. Process large datasets in a streaming, memory-efficient way\n3. Build extensible pipelines from protocol-defined functional stages\n4. Maintain a clear separation of concerns with strong typing and isolated tests\n5. handle failures safely using bulk retries and dead-letter queues\n\nAttendees will leave with concrete patterns for building fast and maintainable ETL pipelines in Python, and with a clearer understanding of how generators and functional composition can be used to model complex data flows \u2014 borrowing ideas from Go-style concurrency while staying entirely within the Python ecosystem. While the examples focus on ETL pipelines, the patterns discussed apply to any Python system that processes large streams of data and needs to balance performance, correctness, and extensibility.\n\nAudience: Intermediate to advanced Python developers. Familiarity with generators and basic ETL concepts is helpful; interest in functional design patterns and backend data systems will be beneficial.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XCBLVD", "name": "Nikita Smirnov", "avatar": "https://programme.europython.eu/media/avatars/XCBLVD_mmWqODt.webp", "biography": "Senior backend engineer with 11 years of experience improving the reliability and performance of complex backend systems. Currently leading the most data-intensive areas of the platform, driving measurable gains in data consistency, query performance, and system stability. \nTech Lead of the Search and Performance squad, responsible for redesigning critical data flows and migrating heavy workloads to scalable search infrastructure. Transitioning toward Go for backend and infrastructure development.", "public_name": "Nikita Smirnov", "guid": "687a8dda-bb4b-5ba8-b8db-ccb80d2f1212", "url": "https://programme.europython.eu/europython-2026/speaker/XCBLVD/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JEN7WA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JEN7WA/", "attachments": []}], "S3A": [{"guid": "bb5c4ece-1dcc-5ac9-a011-83ae2152bdd7", "code": "9EFAJS", "id": 90692, "logo": null, "date": "2026-07-15T10:45:00+02:00", "start": "10:45", "duration": "00:45", "room": "S3A", "slug": "europython-2026-90692-how-to-talk-with-your-legal-department-about-open-source", "url": "https://programme.europython.eu/europython-2026/talk/9EFAJS/", "title": "How to Talk With Your Legal Department About Open Source", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk (long session)", "language": "en", "abstract": "Open source software (OSS) is today an integral part of software solutions and the software industry as a whole. However, it is often the case that not all parts of an organization are equally familiar with the OSS ecosystem and the specific licenses upon which it relies. Since this ecosystem is built on intellectual property, discussions about using OSS, patching existing OSS projects, or publishing one's own software as an OSS project inevitably involve conversations with the legal department at some point. In this talk, we will discuss some of the fundamentals of intellectual property, OSS licenses, how lawyers tend to think about software in general, and how to convince them that OSS is a good idea.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "AVHBH8", "name": "Vladimir Slavov", "avatar": "https://programme.europython.eu/media/avatars/AVHBH8_S5R90gK.webp", "biography": "Vladimir is a lawyer and a programmer. He works at Bosch's Open Source Program Office, focusing on open source management and compliance. He is an AWS Certified Solutions Architect Associate, an AWS Certified AI Practitioner, and an AWS Certified Cloud Practitioner.\n\nHe co-chairs the [OpenChain](https://openchainproject.org/) Meridian 22 Work Group. He is also a committer on the [Eclipse Apoapsis Project](https://projects.eclipse.org/projects/technology.apoapsis).", "public_name": "Vladimir Slavov", "guid": "019c1047-aa39-5629-a243-73eb48a5e5e3", "url": "https://programme.europython.eu/europython-2026/speaker/AVHBH8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/9EFAJS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/9EFAJS/", "attachments": []}, {"guid": "82bc874c-b17c-54bc-a117-bf3455673200", "code": "HJ8KPY", "id": 91546, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91546-the-human-in-the-loop-is-tired", "url": "https://programme.europython.eu/europython-2026/talk/HJ8KPY/", "title": "The Human-in-the-Loop is Tired", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Talk", "language": "en", "abstract": "A few nights ago I was up to 2am obsessively crafting an LLM plan. (_\"Just one more prompt!\"_ - famous last words). Yet it still did something inexplicably stupid. \ud83e\udee0 So yeah: LLMs are both genuinely useful and genuinely destabilising. Focusing on the first and ignoring the second is how people burn out.\n\nThis talk is an honest account of what it feels like to be a developer right now, from someone inside it, and some thoughts on what might actually help. My thesis: we've been optimising for _model output_ when we need to be optimising for _human experience_.\n\nI'll share observations from my work, peers and colleagues. The peculiar fatigue of machine supervision: holding the intent in your head while the machine generates volumes of mostly-correct output that still needs your eyes, your judgment, and your taste. The way the satisfying part of the work shrank while the exhausting part grew. The isolation of pair-programming with a machine, and the loss of real human learning, interconnection and collaboration. And underneath all of it: uncertainty. About market conditions, about employability, about whether the skills we've spent years building will still matter.\n\nThe second half is about what's been working for me, and what hasn't. On the human side: encouraging pairing and teamwork even when the tools push you toward isolation, sharing the pain openly, naming the uncomfortable thing. On the technical side: structuring your environment to collaborate with LLMs more deliberately \u2014 writing plans, configuring project-specific rules. Learning when to stop prompting and just write code. And critically: rebalancing the push and pull of information so that you're directing your attention, not feeling at the mercy of the model's output. More Star Trek, less Black Mirror.\n\nLeave with concrete strategies for recalibrating your workflow, challenges to discuss and the reassurance that if you're finding this hard, you're not broken. The feedback loop is. And we can start fixing that.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QZAEVT", "name": "Laura Summers", "avatar": "https://programme.europython.eu/media/avatars/QZAEVT_HcNtVOM.webp", "biography": "Laura is a very technical designer\u2122\ufe0f, working at Pydantic as Lead Design Engineer. Her side projects include Sweet Summer Child Score (summerchild.dev) and Ethics Litmus Tests (ethical-litmus.site). Laura is passionate about feminism, digital rights and designing for privacy. She speaks, writes and runs workshops at the intersection of design and technology.", "public_name": "Laura Summers", "guid": "504931d1-0d7e-5dbd-b4c4-9306ffdff925", "url": "https://programme.europython.eu/europython-2026/speaker/QZAEVT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/HJ8KPY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/HJ8KPY/", "attachments": []}, {"guid": "98571f48-1a26-5bc1-a3ae-faea1c6df28e", "code": "WHHAQK", "id": 91169, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91169-from-code-hero-to-team-leader-learning-to-let-go", "url": "https://programme.europython.eu/europython-2026/talk/WHHAQK/", "title": "From Code Hero to Team Leader: Learning to Let Go", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Talk", "language": "en", "abstract": "As engineers grow in their careers, many of us try to support our teams by writing more code, reviewing every pull request, and stepping in to fix the hardest problems. It feels helpful and responsible. Over time though, this approach can unintentionally create too much dependency on one person.\n\nThis talk explores the shift from being the person who solves everything to becoming someone who helps the whole team succeed.\n\nDrawing from lessons learned through experience(often the hard way :)) and from colleagues and mentors along the way, I will share practical shifts that make a difference: creating clearer technical direction, improving design conversations, sharing context early, mentoring thoughtfully and building systems that reduce reliance on any single \u201chero.\u201d\n\nIf you are a mid or senior engineer who is always busy but still feels that too much depends on you, this talk aims to offer useful ideas for your own journey.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VLWVB9", "name": "Manivannan Selvaraj", "avatar": "https://programme.europython.eu/media/avatars/VLWVB9_jStzz9H.webp", "biography": "I am a software engineer turned founder who once survived Silicon Valley by writing code and occasionally pretending I knew what I was doing. I worked at Salesforce, Slack, and PayPal, building and leading large-scale systems before moving back to my hometown, Coimbatore, India.\n\nThese days, I am building my own venture and trying to create useful things without breaking production too often. Over the years, I have worked with Python, Java, Go, Kubernetes, Docker, Terraform and a long list of tools that sounded cool at the time. I enjoy mentoring engineers, sharing lessons from the trenches and contributing to open source when I can.", "public_name": "Manivannan Selvaraj", "guid": "3ca8a6d6-a677-5cf7-affc-ac6335323379", "url": "https://programme.europython.eu/europython-2026/speaker/VLWVB9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/WHHAQK/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/WHHAQK/", "attachments": []}, {"guid": "ea332370-1a99-5664-9354-9d8ccd6a533f", "code": "N9HKQN", "id": 101792, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "duration": "01:00", "room": "S3A", "slug": "europython-2026-101792-ai-discussion-panel", "url": "https://programme.europython.eu/europython-2026/talk/N9HKQN/", "title": "AI Discussion Panel", "subtitle": "", "track": null, "type": "Panel", "language": "en", "abstract": "In this one-hour panel session, AI experts will explore the rapidly evolving impact of these technologies on our society. The discussion will address pressing questions across key domains being transformed by AI: privacy and regulation, environmental implications, economic and labor shifts, and the impact of AI on media and art. \n\nBeyond hearing insightful perspectives from our panelists, you'll have the opportunity to submit your own questions throughout the session. Whether you're an AI enthusiast, industry professional, or simply curious about how these technologies will shape our world, join us to find out more about this complex area and have your burning questions answered.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/N9HKQN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/N9HKQN/", "attachments": []}, {"guid": "a88cfc1b-8006-58b6-9bde-f37cfec54e0b", "code": "ZRWENU", "id": 89072, "logo": null, "date": "2026-07-15T15:25:00+02:00", "start": "15:25", "duration": "00:30", "room": "S3A", "slug": "europython-2026-89072-designing-performant-apis-with-litestar", "url": "https://programme.europython.eu/europython-2026/talk/ZRWENU/", "title": "Designing Performant APIs with Litestar", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "APIs development start simple, feel fast, and ship quickly. Then the API grows: more endpoints, more traffic, more data, and suddenly performance becomes unpredictable. Latency creeps in, async code blocks without anyone noticing, and every new feature feels a little riskier to add.\n\nThis talk is about building Python APIs that stay fast *as they evolve*.\n\nWe\u2019ll look at where performance issues really come from in real-world APIs: request lifecycle overhead, hidden blocking calls, dependency injection costs, serialization, and poorly scoped middleware. Instead of chasing micro-optimizations or benchmark numbers, we\u2019ll focus on design decisions that make performance predictable.\n\nUsing Litestar as a concrete example, you\u2019ll see how explicit control over routing, dependencies, and async execution helps avoid common performance traps. We\u2019ll walk through realistic API patterns and show how to structure handlers and dependencies so performance problems don\u2019t slowly accumulate.\n\nYou\u2019ll leave with practical techniques you can apply immediately, whether you\u2019re building a new API or maintaining one in production. Even if you don\u2019t use Litestar today, the design principles in this talk will help you reason more clearly about performance in any Python API.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8BQEZZ", "name": "Julien Court\u00e8s", "avatar": "https://programme.europython.eu/media/avatars/8BQEZZ_TdgUDan.webp", "biography": "I am CTO @ Laby and Maintainer @ Litestar.\nI used Python in my daily life at work and for my personal projects", "public_name": "Julien Court\u00e8s", "guid": "2ed61b15-5ebd-5a26-b3ca-127c97f82bfb", "url": "https://programme.europython.eu/europython-2026/speaker/8BQEZZ/"}, {"code": "FZ33XV", "name": "Cody Fincher", "avatar": "https://programme.europython.eu/media/avatars/87EULU_X6z1FdR.webp", "biography": "As a database architect by trade, Cody channels his expertise into his passion for Python open-source development. He is a dedicated Pythonista who creates and maintains community-driven projects like the Litestar web framework, Advanced Alchemy, and SQLSpec. He's always excited to connect with fellow developers and talk about Python, high-performance databases, and everything in between.", "public_name": "Cody Fincher", "guid": "84802305-7e4d-53ff-8bd8-c71ef9ee823e", "url": "https://programme.europython.eu/europython-2026/speaker/FZ33XV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZRWENU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZRWENU/", "attachments": []}, {"guid": "d8bb0608-aba0-5a60-a582-2bc6c9049b57", "code": "H7DVRJ", "id": 89563, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "duration": "00:30", "room": "S3A", "slug": "europython-2026-89563-how-to-maintain-60-integrations-and-not-go-bananas", "url": "https://programme.europython.eu/europython-2026/talk/H7DVRJ/", "title": "How to Maintain 60 Integrations and Not Go Bananas", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "Say you've built a library whose main value is providing built-in integrations with a considerable number (say 60+) of different Python packages. That's cool, and your users are loving the out-of-the-box experience. (Being blissfully unaware of the lengths you had to go to in the background to make things work \"seamlessly\" helps.) Everything seems to be working fine, you get the odd bug report or feature request, the usual.\n\nThen one day you wake up and your otherwise fairly chill issue tracker is drowning in folks experiencing an issue with your library that breaks their app. Your first thought is, why is this coming up now, when your last release was two weeks ago? And then you realize: It's not your release that broke the library.\n\nAll the third party code you're integrating with? It's become *your* code by extension. You need to react if something changes upstream and breaks your integration in unexpected ways. You can write your integrations so defensively that no one will ever want to read them again, but it's not enough: you can't anticipate every single change each of the 60+ packages will ever make.\n\nLet's assume having your users act as a release monitoring system by notifying you on your issue tracker is not what you want. How do you go about this? You'll want somehow to detect breakage early, so you can go fix things before your users are hit by them. And ideally you'd do it in a way that maintaining it is not a nightmare.\n\nThis talk will take you through one such journey, from recognizing the problem, to various attempts at making it better, to eventually arriving at a solution that's good enough for now (tm).\n\nYou might like this talk if you:\n- Have to deal with integrations in some shape or form\n- Are relying on third-party packages heavily\n- Don't like maintaining things by hand\n- Like to have that \"this can be automated with a script\" itch scratched\n- Are intrigued that there's a talk that has the word \"bananas\" in the title", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NVGXHG", "name": "Ivana Kellyer", "avatar": "https://programme.europython.eu/media/avatars/NVGXHG_z9EQBcR.webp", "biography": "Software engineer at Sentry, maintaining the Python SDK. Plant and game enthusiast owned by three cats.", "public_name": "Ivana Kellyer", "guid": "c21a8c8d-5e9d-50bf-aae0-a9637e36094c", "url": "https://programme.europython.eu/europython-2026/speaker/NVGXHG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/H7DVRJ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/H7DVRJ/", "attachments": []}], "S3B": [{"guid": "dc2f2652-e3f9-5080-9e71-afebce1d0038", "code": "M8Q77Z", "id": 91603, "logo": null, "date": "2026-07-15T10:45:00+02:00", "start": "10:45", "duration": "00:45", "room": "S3B", "slug": "europython-2026-91603-should-you-trust-trusted-publishing", "url": "https://programme.europython.eu/europython-2026/talk/M8Q77Z/", "title": "Should you trust Trusted Publishing?", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk (long session)", "language": "en", "abstract": "In 2023, PyPI started supporting Trusted Publishers: A way to publish Python packages to PyPI without relying on insecure password and short-lived tokens. Three years later, this approach has become the default answer to package registries' security, as it found its way into NPM, crates.io, and RubyGems. But does it actually offer the benefits we hoped it would? Can you really trust the green checkmark, and if you can't, what's the point?\n\nIn this talk, I want to look closely at what Trusted Publishers are, and what we _might_ think they are; who they do and do not protect. We'll explore the potential centralization problem of relying on Big Tech, US-based CI providers, leaving little room for smaller players like Codeberg and Sourcehut, as well as self-hosted Git forges and CI engines.\n\nBut even when using GitHub, Trusted Publisher may be tricky to get right, exposing different backdoors for the attacker to exploit. I want to discuss the illusion of security Trusted Publishers may give the inexperienced PyPI user; that is, if they actually decide to look at the hidden details of the published artifacts. How can we safeguard our Python projects, and should it be us who safeguards it? I will propose some solutions to this issue, including how the package managers and the PyPI registry itself can help us in this task.\n\nLastly, we'll reminisce about the past in search of answer. Maybe OpenPGP \u2018Web of Trust\u2019 wasn't such a bad idea after all? Can we regain our independence in deciding who we do and don't trust?", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XZGYGJ", "name": "Nikita Karamov", "avatar": "https://programme.europython.eu/media/avatars/XZGYGJ_haoiApG.webp", "biography": "Nikita is a self-proclaimed \u03c0-shaped developer, proficient in Python in JavaScript, and enthusiastic about everything else. He works as a Full Stack Web Developer, but wishes he could spend all that time contributing to open-source projects.\n\nNikita lives in a small town in Germany and enjoys cycling and cooking.", "public_name": "Nikita Karamov", "guid": "ffb3010f-aaa0-5cec-a8e4-c5f5dec44478", "url": "https://programme.europython.eu/europython-2026/speaker/XZGYGJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/M8Q77Z/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/M8Q77Z/", "attachments": []}, {"guid": "fbb405e4-c3c8-5288-a768-501d949cb068", "code": "VXDYGX", "id": 90735, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "duration": "00:30", "room": "S3B", "slug": "europython-2026-90735-when-the-sun-breaks-your-gps-building-an-explainable-early-warning-system", "url": "https://programme.europython.eu/europython-2026/talk/VXDYGX/", "title": "When the Sun Breaks Your GPS: Building an Explainable Early Warning System", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Talk", "language": "en", "abstract": "**Space Weather** doesn\u2019t just produce beautiful auroras: it can silently disrupt navigation systems, radio links, and satellite-based technologies we rely on every day.\n\nTravelling Ionospheric Disturbances (TIDs) are wave-like structures in the ionosphere that affect GNSS accuracy and HF communications. From an ML perspective, forecasting TIDs is a challenging rare-event prediction problem involving imbalanced data and heterogeneous physical inputs.\n\nIn this talk, I will present an operational machine learning approach developed within the T-FORS project to forecast TID occurrence over Europe. The model is built using **CatBoost** and integrates data from space- and ground-based observations.\n\nThe talk focuses on **model design and evaluation choices**. In particular, I will show how **SHAP** can be used to debug model behaviour, validate feature relevance, and build trust in predictions in a high-risk operational context.\n\nAlong the way, I\u2019ll share practical engineering lessons on:\n- handling class imbalance,\n- incorporating domain knowledge into ML pipelines,\n- producing **uncertainty-aware outputs** via **Conformal Prediction**, and\n- running **interpretable models in real-time forecasting systems**.\n\nThe talk is aimed at data scientists and ML practitioners interested in applied forecasting, interpretable models, uncertainty quantification and ML at the boundary between data and physics.\n\n---\n\n**Talk outline**\n- 0-4: What is Space Weather and why should we care\n- 4-7: Framing TID forecasting as an ML problem\n- 7-10: Model design with CatBoost\n- 10-13: Explainability with SHAP\n- 13-18: Uncertainty quantification with Conformal Prediction\n- 18-22: Cost-sensitive learning and real-time operations\n- 22-25: Lessons learned\n- 25-30: Q&A", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FRRAE7", "name": "Vincenzo Ventriglia", "avatar": "https://programme.europython.eu/media/avatars/FRRAE7_bJYDfI9.webp", "biography": "A results-driven data professional, focused on hype-free solutions tailored to business needs.\n\nI currently create value at the **National Institute of Geophysics and Volcanology**, where I develop machine learning models in the **Space Weather** domain. My work is complemented by finding the hidden stories in data and make them accessible to stakeholders. I studied Physics in Italy (Napoli) and Germany (Frankfurt am Main), previously worked in Analytics within the strategic division of the world's largest professional services network, as well as in the Data Science department of Italy\u2019s leading publishing group.\n\nI am also an organiser of **PyData Roma Capitale**, actively involved in building the local Python and data science community. Outside of work, I enjoy theatre, discussing finance, and learning new languages.", "public_name": "Vincenzo Ventriglia", "guid": "b45c364f-b098-550b-8d6e-8cbf28ab36cf", "url": "https://programme.europython.eu/europython-2026/speaker/FRRAE7/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VXDYGX/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VXDYGX/", "attachments": []}, {"guid": "86ef3a63-5656-520b-a117-8b43d4c1ca2d", "code": "NEH7RE", "id": 89705, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "duration": "00:30", "room": "S3B", "slug": "europython-2026-89705-property-based-testing-with-hypothesis", "url": "https://programme.europython.eu/europython-2026/talk/NEH7RE/", "title": "Property based testing with Hypothesis", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "The [website](https://hypothesis.works) of the Hypothesis project used to boldly assert: *\"Normal 'automated' software testing is surprisingly manual. Every scenario the computer runs, someone had to write by hand. Hypothesis can fix this.\"*\n\nWhile it's debatable whether property-based testing should fully replace the manual parametrization of tests with different inputs and outputs, there's no doubt that Hypothesis is a powerful tool for uncovering bugs nobody would even have considered looking for. In fact, during its development, the authors of Hypothesis accidentally discovered countless bugs in CPython and libraries, thus coining the term *\"The Curse of Hypothesis\"*.\n\nThe framework, although incredibly powerful, might seem overwhelming at first. In this talk, I will demonstrate how even simply throwing random strings at functions can reveal surprising bugs. From there, we'll progress towards generating more complex data, which will be less daunting than it initially appears. You'll also see how Hypothesis seamlessly integrates with various ecosystems and can be a valuable tool in any developer's toolkit.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HZMBBH", "name": "Freya Bruhin", "avatar": "https://programme.europython.eu/media/avatars/HZMBBH_VpC8XqN.webp", "biography": "Freya Bruhin (\"The Compiler\") is a long-time contributor and maintainer of both the pytest framework and various plugins. Discovering pytest in 2015, Freya has since given talks and conducted workshops about pytest at various conferences and companies. Freya's main project, qutebrowser (a keyboard-focused web browser), has grown from a hobby to a donation-funded part-time job.", "public_name": "Freya Bruhin", "guid": "26f4f4a7-7eda-51a8-8577-e54f4a2768dc", "url": "https://programme.europython.eu/europython-2026/speaker/HZMBBH/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NEH7RE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NEH7RE/", "attachments": []}, {"guid": "c1f749eb-ecab-5a03-bc14-6c03b9765f61", "code": "DRXC3E", "id": 91384, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91384-python-and-http-3-feel-the-difference-in-performance", "url": "https://programme.europython.eu/europython-2026/talk/DRXC3E/", "title": "Python and HTTP/3: feel the difference in performance", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "# Python and HTTP/3: feel the difference in performance\n\n## Abstract\n\nBuilding real-time Python applications, from live dashboards to multiplayer games, often feels like a battle against an invisible lag. While we focus on optimizing our async code, the underlying transport protocol often sabotages us: `TCP` guarantees ordering at the absolute cost of responsiveness.\n\nIn this session, I will show that the standard choice of using Websocket over `HTTP/1.1` or `HTTP/2` can make the application perform horribly, due to the \"head-of-line blocking\" problem that is visible when the network is unstable.\nThen I will present how `HTTP/3` and `WebTransport` eliminate transport-layer bottlenecks and enable seamless connection migration for network switching users.\nThe audience will experience the difference between protocols performance firsthand through a live three-round multiplayer snake game demo. \n\n## Description\n\n### The Problem\n\nApplication performance is a complex challenge. Users often complain about lag, and regardless of how well we optimize our business logic, the issue persists. All too often, the blame is shifted to the client for having a \"spotty network.\" However, even under ideal conditions, users experience disruptions simply by being mobile, due to switching between Wi-Fi access points or cellular towers. The core problem is that many developers are unaware of the limitations of `HTTP/1.1` and `HTTP/2`, or that implementing `HTTP/3` might be a solution.\n\n### Why This is Interesting to the Python Community\n\nAs Python applications become more real-time and data-intensive, traditional networking stacks are reaching their limits. There are important advances in technology that the audience should get familiar with, like `HTTP/3`, `QUIC`, and `WebTransport`. What is also important, is to be aware of how the Python ecosystem is still fragmented when it comes to supporting `HTTP/3`. \nDespite that, a solution is achievable, and by using a combination of `Starlette` and `aioquic` code across three generations of transport protocols, the audience will experience and learn how protocol choice dictates application reliability on imperfect networks.\n\n### Key takeaways:\n- Witness an app suffering from transport-layer head-of-line blocking.\n- Understand the Python `HTTP/3` ecosystem, including `aioquic`, `Hypercorn`, and `Starlette`.\n- Deploy a `HTTP/3` server handling `WebTransport` datagrams for real-time data.\n- Learn how to use Linux traffic control (`tc`) to inject some chaos to the network\n- Play multiplayer Snake!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RVRZPP", "name": "Daniel Vahla", "avatar": "https://programme.europython.eu/media/avatars/RVRZPP_aSH4gBt.webp", "biography": "Senior software developer with over 8 years of experience in Python applied in industrial domain. Organizer of Helsinki Python, PyData Helsinki, and PyCon Finland 2025.", "public_name": "Daniel Vahla", "guid": "b5783e96-a040-56b9-b916-a0019d9abf1c", "url": "https://programme.europython.eu/europython-2026/speaker/RVRZPP/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DRXC3E/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DRXC3E/", "attachments": [{"title": "Game demo screenshot", "url": "/media/europython-2026/submissions/DRXC3E/resources/Screenshot_8RyiRGg.png", "type": "related"}]}, {"guid": "b2198258-d332-5ee8-b4f2-99412e1dc7dd", "code": "HVTSPC", "id": 90676, "logo": null, "date": "2026-07-15T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S3B", "slug": "europython-2026-90676-i-am-a-sucker-for-conventions-why-django-s-defaults-work-until-they-don-t", "url": "https://programme.europython.eu/europython-2026/talk/HVTSPC/", "title": "I Am a Sucker for Conventions. Why Django\u2019s Defaults Work, Until They Don\u2019t", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Conventions are one of Django\u2019s greatest strengths.\n\nThey simplify our day-to-day work, reduce cognitive load, and let teams move fast with confidence. By following well-established defaults, we spend less time debating structure and more time solving real problems.\n\nBut every convention is also a decision - and every decision has trade-offs.\n\nWho decided these conventions? Why were they chosen? And what happens when your problem doesn\u2019t quite fit the \u201cDjango way\u201d?\n\nIn this talk, we\u2019ll explore Django\u2019s conventions as both a feature and a constraint. We\u2019ll look at where they shine, where they leak, and how experienced developers can respectfully bend (or break) them without fighting the framework. This is a talk for anyone who loves Django \u2014 especially when they disagree with it.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3FFT99", "name": "David Vaz", "avatar": "https://programme.europython.eu/media/avatars/3FFT99_mRmqjgs.webp", "biography": "Software developer for over 20 years, fell in love with Python almost at the beginning of his journey. Django developer since 2007. He loves Python and Django so much that he has been bringing developers to the community ever since, and he ended up starting his consultancy firm around these technologies.\nDjangoCon Europe Organizer for a few of the last editions, PyCon Portugal organizer since the beginning in 2022.", "public_name": "David Vaz", "guid": "2e38e11e-fb14-540a-8da0-be385da25ccc", "url": "https://programme.europython.eu/europython-2026/speaker/3FFT99/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/HVTSPC/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/HVTSPC/", "attachments": []}, {"guid": "9d807c4a-ac69-57e1-9603-52cb830029dc", "code": "PCMBVT", "id": 91599, "logo": null, "date": "2026-07-15T15:25:00+02:00", "start": "15:25", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91599-how-many-spoons-does-your-environment-cost-broken-demos-human-element", "url": "https://programme.europython.eu/europython-2026/talk/PCMBVT/", "title": "How many spoons does your environment cost: Broken demos & human element", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "This talk is one part technology dance and one part walk through of Python environment best practices. In under 30 minutes, you'll see me load up some of the most gnarly environments and watch them fail. This isn't just another talk about dependency management. It's about the hidden cost of environment friction: the cognitive load, the lost spoons, the brilliant developers who almost quit tech because they felt \"too stupid\" to make pip work. It's about recognizing that setup barriers aren't just inconvenient\u2014they're accessibility barriers that determine who gets to write Python.\n\nIn this talk we'll cover:\n- Several environment failures (with dramatic audience participation): GPU-enabled errors, OS errors, mounted systems, CI/CD and virtual environments\n- The human side of technical frustration: spoon theory, burnout\n- Patterns about how environments break\n- What the Python community is doing to lower these barriers.\n\nContent note: This talk discusses mental health, burnout, and the emotional impact of technical barriers with care and intention.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LDQPN9", "name": "Dawn Wages", "avatar": "https://programme.europython.eu/media/avatars/LDQPN9_BEpPpGr.webp", "biography": "Dawn Gibson Wages is a software engineer, ethical open source advocate, and community leader. She is the former Chair of the Python Software Foundation Board (volunteer) and currently works as Director of Community and Developer Relations at Anaconda, the largest scientific Python distribution in the world. Her deep investment in the community is spent championing inclusive practices and sustainable growth in open source ecosystems. Dawn\u2019s work bridges technical expertise with a commitment to equity, sovereignty, and collaboration in the developer community. When she's not working in the Python ecosystem, she is watching Star Trek in Philadelphia with her wife and two dogs.", "public_name": "Dawn Wages", "guid": "bd4b11b3-af13-5f96-b46a-d213c46bcf65", "url": "https://programme.europython.eu/europython-2026/speaker/LDQPN9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PCMBVT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PCMBVT/", "attachments": []}, {"guid": "7f68274b-f3b2-58cb-a6ac-bb2a577f71bb", "code": "X3ENDU", "id": 91663, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91663-how-much-do-you-really-need-to-know-about-databases", "url": "https://programme.europython.eu/europython-2026/talk/X3ENDU/", "title": "How much do you really need to know about Databases?", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "Most developers have to interact with databases at some point, and therefore need to know at least a little bit about them, but probably don't have much training or experience in that area. I've worked with databases for over 25 years because I love them so much, but I'm aware that most people don't feel the same way! \n\nAs a Python developer, you probably just want the database to quietly do its thing in the background so you can concentrate on coding. That seems like a reasonable request. But the world of databases is changing. The traditional DBA role is becoming less common, and developers are increasingly expected to manage their own databases. \n\nSo let's talk about what you actually need to know about databases. You should come away reassured that, although it helps to have a smattering of database knowledge, you don't need to be a database expert. We'll explore the minimum that you *do* need to know, and look at where you can find more information or help when you need it.\n\nI don't expect to turn everyone into a database enthusiast, but I hope I can share some of my love of databases with you along the way.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NMCVC3", "name": "Karen Jex", "avatar": "https://programme.europython.eu/media/avatars/NMCVC3_sFYkpVH.webp", "biography": "Karen leads the PostgreSQL Europe Diversity Task Force, organises Postgres conferences, and gives talks about databases at database and developer events.\n\nIn her day job, she is a Solutions Architect, supporting customers through their database system design, deployment and management. She came to that via 20 years as a DBA, then several years in database consultancy. She was once described as \u201cquite personable for a DBA\u201d which she decided to take as a compliment.\n\nOutside of the world of databases Karen loves cycling, mountain biking, skiing and spending time with her family in the mountains where she lives.", "public_name": "Karen Jex", "guid": "682c4124-81fe-598a-b4fe-6dbf9f3e5ab4", "url": "https://programme.europython.eu/europython-2026/speaker/NMCVC3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/X3ENDU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/X3ENDU/", "attachments": []}], "Poster Hall A": [{"guid": "6cefb363-40fc-5577-85eb-c56a8f33959f", "code": "PRGGNW", "id": 88675, "logo": null, "date": "2026-07-15T12:50:00+02:00", "start": "12:50", "duration": "01:00", "room": "Poster Hall A", "slug": "europython-2026-88675-a-tour-of-the-module-itertools", "url": "https://programme.europython.eu/europython-2026/talk/PRGGNW/", "title": "A tour of the module `itertools`", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Poster", "language": "en", "abstract": "This poster will take you on a tour of the 20 functions available in the module `itertools`, showing you how they work, how they interact with each other, and how they relate to each other.\n\nBy the time you're done reading the poster, you'll have an increased understanding of how to use the module `itertools` efficiently and effectively.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BLNV7P", "name": "Rodrigo Gir\u00e3o Serr\u00e3o", "avatar": "https://programme.europython.eu/media/avatars/BLNV7P_wULjbpV.webp", "biography": "Hi, I'm Rodrigo Gir\u00e3o Serr\u00e3o from sunny Portugal \ud83c\uddf5\ud83c\uddf9.\n\nI'm a prolific Python author and speaker, with [multiple books published independently](https://mathspp.com/books) and [dozens of talks and tutorials](https://mathspp.com/talks) given at the largest Python conferences in the world. I also [blog frequently about Python](https://mathspp.com/blog) and publish two Python newsletters: the [weekly mathspp insider \ud83d\udc0d\ud83d\ude80](https://mathspp.com/insider) and the [daily Python drops \ud83d\udc0d\ud83d\udca7](https://mathspp.com/drops).\n\nI have extensive experience teaching people from all walks of life \u2013 from kids in school, to professionals in various industries, to retirees \u2013 and there is a clear consensus that my students enjoy my clear examples, the live-coding during my lessons, and most surprisingly: my quirky sense of humour.", "public_name": "Rodrigo Gir\u00e3o Serr\u00e3o", "guid": "b162400f-4b4a-584b-b4d6-8e9b4c49a8ac", "url": "https://programme.europython.eu/europython-2026/speaker/BLNV7P/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PRGGNW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PRGGNW/", "attachments": []}], "Poster Hall B": [{"guid": "a19b46dc-daa1-5c1e-a481-d3ce8f8a732a", "code": "LNVDY3", "id": 91607, "logo": null, "date": "2026-07-15T12:50:00+02:00", "start": "12:50", "duration": "01:00", "room": "Poster Hall B", "slug": "europython-2026-91607-django-tdd-patterns-a-visual-field-guide", "url": "https://programme.europython.eu/europython-2026/talk/LNVDY3/", "title": "Django TDD Patterns: A Visual Field Guide", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Poster", "language": "en", "abstract": "Most Django testing tutorials stop at \"write a test, make it pass, refactor.\" But real-world Django applications have complex model relationships, permission systems, third-party API integrations, and asynchronous task chains that demand more sophisticated testing strategies. After delivering a hands-on TDD workshop at DjangoCon US 2023 and applying these patterns across multiple production Django codebases, I've identified a set of recurring testing patterns and anti-patterns that significantly impact both test reliability and developer productivity.\n\nThis poster presents a visual field guide to practical TDD patterns in Django, organized as a decision-tree poster that developers can reference when writing tests for their own projects.\n\n**Section 1 \u2014 The Factory Pattern Taxonomy.** A visual decision tree for choosing the right `factory_boy` strategy based on your model structure. When to use `SubFactory` vs. `RelatedFactory` vs. `LazyAttribute` for foreign keys, how to handle circular relationships without creating test data explosions, and the `create` vs. `build` vs. `build_batch` decision that controls whether you hit the database. Annotated with `faker` provider selection for generating realistic test data that keeps test failure messages readable.\n\n**Section 2 \u2014 Testing Permission Layers Without Drowning in Fixtures.** Django apps often have three or more permission layers: model-level, view-level, and object-level (via packages like `django-guardian` or row-level security). This section shows a visual matrix for structuring permission tests: one axis for user roles, one for resources, and a clear pattern for generating all combinations using parameterized tests with `pytest.mark.parametrize` and factory traits. Instead of writing 30 separate test functions, you write one parameterized test with a role-resource matrix.\n\n**Section 3 \u2014 The Mock Boundary Diagram.** A flowchart showing where to place mocking boundaries in a Django request lifecycle. The poster illustrates the difference between mocking at the view level, the service layer, and the adapter/client level \u2014 and why mocking too deep creates brittle tests while mocking too shallow creates slow ones. Includes a decision rule: \"Mock at the boundary where your code meets code you don't own.\"\n\n**Section 4 \u2014 Common Anti-Patterns and Fixes.** A visual rogues' gallery of the five most common Django testing anti-patterns with before/after code comparisons: test database leaks from missing `TransactionTestCase`, over-mocking that tests implementation instead of behavior, fixture files that nobody can maintain, test ordering dependencies, and the \"God factory\" that creates half the database for every test.\n\nVisitors will gain a practical decision framework for structuring Django tests, rather than just knowledge of individual testing tools. The patterns are tool-agnostic at their core (though examples use `pytest-django`, `factory_boy`, and `faker`) and apply to any Django project.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CNF9BG", "name": "Kuldeep Pisda", "avatar": "https://programme.europython.eu/media/avatars/CNF9BG_lqH873I.webp", "biography": "Kuldeep Pisda is a software and growth consultant helping startups and businesses build production-ready Django systems, scalable architectures, and AI-powered platforms. With over 7 years of experience, he has architected backends handling 50k+ concurrent users, built multi-tenant SaaS platforms, and led database performance recoveries on high-traffic PostgreSQL systems.\nHe is the creator and maintainer of `django-rls`, the open-source package bringing PostgreSQL Row-Level Security to Django. He has delivered tutorials at **DjangoCon US** for three consecutive years (2022\u20132024) and spoken at 15+ international conferences including APIDays India, and APISecure. He is an NIT Raipur alumnus and an active community organizer for **GDG Raipur** and **DjangoDay India**.", "public_name": "Kuldeep Pisda", "guid": "4c8f4808-052b-5812-b425-0e4303286e20", "url": "https://programme.europython.eu/europython-2026/speaker/CNF9BG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LNVDY3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LNVDY3/", "attachments": []}], "Poster Hall C": [{"guid": "62587e02-22dc-5627-ba28-9a2cffe940fa", "code": "33RGZA", "id": 90066, "logo": null, "date": "2026-07-15T12:50:00+02:00", "start": "12:50", "duration": "01:00", "room": "Poster Hall C", "slug": "europython-2026-90066-heuristic-rule-based-model-for-packet-loss-inference-in-iiot-networks", "url": "https://programme.europython.eu/europython-2026/talk/33RGZA/", "title": "Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Poster", "language": "en", "abstract": "IIoT Networks' performance is significantly impacted by packet losses in the network, which is the failure of data packets in reaching their intended destination within the network. Most of the transmission control protocol versions reduce the rate of transmission during the detection of packet losses, assuming network congestion and interference, thus resulting in operational disruption, reduced efficiency, data integrity failure and economic impact.\nHowever, not all packet losses are due to congestions and interference, some happen based on link issues from wireless which are seen as non-congestive packet losses as most transmission control protocol (TCP) modifications reduce the rate of transmission when these losses are detected while assuming network congestion, so TCP could not at present distinguish among these types of packet losses and reduces the rate of transmission irrespective of the types thus resulting in lower throughput for IIoT networks clients.   \nIn addressing this issue, a heuristic-rule-based machine learning model was used for packet loss identification, classification, and prediction to differentiate between the types of packet losses at the IIoT network hosts\u2019 end. The result shows that Random Forest performs better based on the rule, giving a hopeful resolution to an enhanced IIoT network's performance.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "DGMZXX", "name": "Oladapo Kayode Abiodun", "avatar": "https://programme.europython.eu/media/avatars/DGMZXX_Z1UFdxj.webp", "biography": "Kayode Abiodun Oladapo is a seasoned data scientist and a computer science lecturer with over a decade of experience in teaching and research. He currently lectures at McPherson University, where he specialises in information systems and data science. He is presently with the Connect Institute and Achieve Together in the United Kingdom.\n\nHe does research in information systems, data science, machine learning, learning analytics, and education management. He has several publications and a computer textbook, \"Insight into Computer Studies,\" for JSS one to three. A member of NCS, CPN, and ACM and an associate member of the Society for Forensic Accounting and Fraud Prevention. He has served as the Acting Director, ICT-RMU and the acting Head of Department, Computer Science, College of Computing, McPherson University.\n\nHe is actively involved in mentoring students in Python for data science and community services. He is the campus adopter for Data Science Nigeria, McPherson University, as well as the Campus Guidance for PyClub McPherson University, and a member of the EuroPython Society. He oversees the affairs of Python Starter Hub for beginners in Python programming. \n\nAs an advocate for innovative learning and emerging technologies, Oladapo has led various national and international workshops on data science and artificial intelligence. He has mentored dozens of undergraduate and postgraduate students and has published research papers in peer-reviewed journals.\n\nVisit here for more details: https://sites.google.com/view/kayodeabiodunoladapo.", "public_name": "Oladapo Kayode Abiodun", "guid": "23860001-6003-5929-9c41-c110ed8d9c6f", "url": "https://programme.europython.eu/europython-2026/speaker/DGMZXX/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/33RGZA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/33RGZA/", "attachments": []}]}}, {"index": 4, "date": "2026-07-16", "day_start": "2026-07-16T04:00:00+02:00", "day_end": "2026-07-17T03:59:00+02:00", "rooms": {"S1": [{"guid": "e5e8fee8-121c-54d1-a29c-20908e1b0f5e", "code": "QDCP3K", "id": 97550, "logo": null, "date": "2026-07-16T08:00:00+02:00", "start": "08:00", "duration": "01:00", "room": "S1", "slug": "europython-2026-97550-thursday-registration-welcome-tbd", "url": "https://programme.europython.eu/europython-2026/talk/QDCP3K/", "title": "Thursday Registration & Welcome @ TBD", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.\nYou can pick up your badges at any time during the week as long as we are open!\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!\n\nWe hope to see you around!", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QDCP3K/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QDCP3K/", "attachments": []}, {"guid": "4144e431-c80a-5a90-a0cd-c671331b86ba", "code": "DSHNXM", "id": 97551, "logo": null, "date": "2026-07-16T09:00:00+02:00", "start": "09:00", "duration": "00:15", "room": "S1", "slug": "europython-2026-97551-thursday-s-morning-announcement", "url": "https://programme.europython.eu/europython-2026/talk/DSHNXM/", "title": "Thursday's Morning Announcement \u23f0", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to the second day of conference!\nYesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.\nJoin us to get an update and few more announcements. Come by and find out what is going to happen today.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DSHNXM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DSHNXM/", "attachments": []}, {"guid": "837d12ad-7d51-54db-86a5-eff409d90673", "code": "PEJ9RY", "id": 100189, "logo": null, "date": "2026-07-16T09:20:00+02:00", "start": "09:20", "duration": "00:45", "room": "S1", "slug": "europython-2026-100189-the-pursuit-of-purity-the-right-way-to-do-ai", "url": "https://programme.europython.eu/europython-2026/talk/PEJ9RY/", "title": "The Pursuit Of Purity (The Right Way To Do AI)", "subtitle": "", "track": "~ None of these topics", "type": "Keynote", "language": "en", "abstract": "Python now powers nearly half of all new AI repositories (State of the Octoverse Report 2025.) It is the most used language for Applied AI work, from training and inference to orchestration and deployment. Regardless of its popularity in the space, AI has caused a significant divide within the Python community. Many Pythonistas believe it should not be used at all, while others are excited about its potential to increase their output. As developers, we also find ourselves reluctantly at the frontier, being told our jobs are at risk, while simultaneously being pushed to use AI to make us more productive. In this talk we'll explore all of these themes and try to understand the 'right way' to do AI.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "H7SMSM", "name": "Marlene Mhangami", "avatar": "https://programme.europython.eu/media/avatars/7NWTAL_L0sF4ZR.webp", "biography": "Marlene is a Senior Developer Advocate specialising in Python and AI at Microsoft, a computer scientist, keynote speaker and explorer. She is the current chair of the Association for Computing Machinery(ACM) practitioner board, was the previous vice chair of the Python Software Foundation and led the first PyCon Africa.", "public_name": "Marlene Mhangami", "guid": "6ef64641-bbf0-5a97-8d8a-89da6e22d971", "url": "https://programme.europython.eu/europython-2026/speaker/H7SMSM/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PEJ9RY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PEJ9RY/", "attachments": []}, {"guid": "2bfeaf93-613f-56cf-b592-09475c552b4a", "code": "YUGHSW", "id": 100641, "logo": null, "date": "2026-07-16T10:05:00+02:00", "start": "10:05", "duration": "00:25", "room": "S1", "slug": "europython-2026-100641-python-steering-council-update", "url": "https://programme.europython.eu/europython-2026/talk/YUGHSW/", "title": "Python Steering Council Update", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Panel", "language": "en", "abstract": "The Python Steering Council is a 5-person elected committee that assumes a mandate to maintain the quality and stability of the Python language and CPython interpreter, improve the contributor experience, formalize and maintain a relationship between the Python core team and the PSF, establish decision making processes for Python Enhancement Proposals, seek consensus among contributors and the Python core team, and resolve decisions and disputes in decision making among the language.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/YUGHSW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/YUGHSW/", "attachments": []}, {"guid": "c9d7952b-4eb3-51b6-b68f-795b1d129e1a", "code": "TZHTEE", "id": 91042, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "00:45", "room": "S1", "slug": "europython-2026-91042-navigating-waters-of-background-jobs-and-queues-in-python-as-of-2026", "url": "https://programme.europython.eu/europython-2026/talk/TZHTEE/", "title": "Navigating waters of background jobs and queues in Python as of 2026", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk (long session)", "language": "en", "abstract": "Should you use Kafka or RabbitMQ? Which Python library is the right fit? Is Celery still alive and kicking in 2026, or has Temporal taken over the world while we weren't watching? Perhaps we should all migrate to FastStream\u2014or are the native background tasks in your web framework all you really need?\n\nThere have never been so many possibilities when choosing how to queue and distribute work. This talk provides a comprehensive comparison of the modern Python ecosystem. We will explore where each tool shines, how they perform under pressure, and\u2014crucially\u2014when a specific tool is a poor match and should be avoided.\n\nUsing two real-world case studies, we will showcase the capabilities of each library. You will be able to evaluate the developer experience and how debugging works for each solution. You\u2019ll walk out with an ultimate decision chart, equipped to choose the perfect stack for your next project.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "Z7MMMN", "name": "Sebastian Buczy\u0144ski", "avatar": "https://programme.europython.eu/media/avatars/Z7MMMN_ZKPj0bk.webp", "biography": "Software Engineer and Architect. Spent the whole career with polyglotic distributed systems. He wrote a book about implementing the Clean Architecture in Python. \nBottega IT Minds trainer/consultant and AI Engineer in Replika.", "public_name": "Sebastian Buczy\u0144ski", "guid": "2f391732-2a18-5730-a57d-c21db4862d85", "url": "https://programme.europython.eu/europython-2026/speaker/Z7MMMN/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TZHTEE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TZHTEE/", "attachments": []}, {"guid": "8635f666-200b-55eb-b692-3b9dba9bb711", "code": "G9FDRY", "id": 90788, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S1", "slug": "europython-2026-90788-args-amazing-or-approaching", "url": "https://programme.europython.eu/europython-2026/talk/G9FDRY/", "title": "Args: Amazing or Approaching?", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "From default args, to `**kwargs`, and everything in-between, Python's comprehensive argument system lends itself to some of the most effective code, through encouraging readability, reuse, and easy refactoring.\n\nBut is that really true? Why, and why not?\nWhat could we learn from other languages?\nAnd what else could lie in their future?\n\n---\n\nIn this session, we'll give a rundown of Python's comprehensive function argument system and how its features allow for safety, conciseness, and expressiveness (whether you're calling or writing functions).\n\nWe'll then give examples for where that system lacks, where it could bite you, and give suggestions for what more could be done on Python code to fix those limitations.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "AHET73", "name": "Evan Kohilas", "avatar": "https://programme.europython.eu/media/avatars/AHET73_7Ky4wOa.webp", "biography": "Evan is a serial international speaker and engineering productivity advocate who values frictionless simplicity, taming tech debt, thinking in systems, and tightening feedback loops - all to improve the developer experience and achieve nohumanerrors.com\n\nWhen he's not working on his next talk or project idea, you may catch him as an organiser for PyCon Australia, dodging magpies while bike riding, chasing frisbees, or defending subway cookies.", "public_name": "Evan Kohilas", "guid": "ce8fe9d1-18e9-59ab-8508-85ed8a1024a2", "url": "https://programme.europython.eu/europython-2026/speaker/AHET73/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/G9FDRY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/G9FDRY/", "attachments": []}, {"guid": "3d85365d-e38c-5187-90cc-947eed83a24d", "code": "GEJAQW", "id": 91116, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S1", "slug": "europython-2026-91116-immutability-fast-and-safe-sharing-of-data-across-subinterpreters", "url": "https://programme.europython.eu/europython-2026/talk/GEJAQW/", "title": "Immutability: Fast and Safe sharing of Data across Subinterpreters", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Python supports parallelism through multiple sub-interpreters. Parallelism though sub-interpreters avoid the restrictions of a single GIL, and isolating parallel processes from each other is safe from data-races. The downside is that subinterpreter isolation comes with a high cost: sending objects across sub-interpreters typically involves pickling and copying which has negative impact on performance with both CPU and memory overheads. This talk is about [PEP795](https://pep-previews--4468.org.readthedocs.build/pep-0795/) which adds immutability to Python, which permits sub-interpreters to transfer and share immutable objects directly by reference. \n\nWe will present the design and rationale for immutability in Python, the API for creating and managing immutable state, decorators for communicating immutability in code, as well as opting out of immutability where necessary. We will also discuss our prototype implementation on-top of Python 3.15, and demonstrate how immutable sharing across sub-interpreters improves performance, and compare the speed of freezing (the act of making objects immutable) to pickling and unpickling. \n\nAttendees will learn:\n\n* About the semantics of immutability in Python, and what are the challenges of designing immutability to support sharing across sub-interpreters.\n* When immutability can improve performance and predictability in concurrent Python.\n* How freezing works for built-in types, user\u2011defined types and functions, and how it interacts with sub-interpreters.\n* Performance of pickling vs. immutable sharing, with numbers and failure modes.\n* Current limitations of immutability, risks, and what would need to land in CPython for this to be widely usable. Target audience: programmers interested in concurrent programming in Python.\n    \n\nNote: This PEP is not yet accepted; the talk focuses on design, prototype results, and open questions.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZAUJUS", "name": "Fridtjof Stoldt", "avatar": "https://programme.europython.eu/media/avatars/ZAUJUS_FzCxK84.webp", "biography": "I'm a PhD student focussing on programming languages and compilers. Currently, I'm focussed on retrofitting concurrency to Python without breaking existing programs", "public_name": "Fridtjof Stoldt", "guid": "59f45588-5549-5b53-b56d-cc94c4cfd2b0", "url": "https://programme.europython.eu/europython-2026/speaker/ZAUJUS/"}, {"code": "DKRZRV", "name": "Tobias Wrigstad", "avatar": "https://programme.europython.eu/media/avatars/DKRZRV_sp1XIRG.webp", "biography": "I am a professor in computer science at Uppsala University where I do research on programming language design and implementation. In the last years, my main interests have been memory management and concurrency safety which I have explored through type systems and run-time systems. In the context of Python, I currently work on PEP795, and its intended continuation (see e.g. https://dl.acm.org/doi/10.1145/3729313), on garbage collection and data-race freedom in Java, and secure compilation for Erlang. Python user since 2000.", "public_name": "Tobias Wrigstad", "guid": "ca963687-d396-532a-836b-d20c7510510c", "url": "https://programme.europython.eu/europython-2026/speaker/DKRZRV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GEJAQW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GEJAQW/", "attachments": []}, {"guid": "4a99e13b-6bbe-5941-93f1-5e4be321721e", "code": "VKURLV", "id": 91444, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "duration": "00:30", "room": "S1", "slug": "europython-2026-91444-python-dicts-past-present-and-free-threaded-future", "url": "https://programme.europython.eu/europython-2026/talk/VKURLV/", "title": "Python Dicts: Past, Present, and Free-Threaded Future", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Python dicts are everywhere! They back module namespaces, instance attributes, **kwargs, and of course actual dictionaries. But have you ever wondered how they work under the hood? And more importantly, what happens to them now that free-threaded Python is here?\n\nIn this talk, we'll start by exploring the internals of CPython's dict implementation: how hashing works, the compact table layout that gives you insertion order, and how lookups, insertions, and deletions actually play out in memory. Then we'll see what had to change for free-threading: how reads remain fast without acquiring locks, what the per-object lock is and when it kicks in, and why making a dict thread-safe is harder than it sounds.\n\nFinally, we'll look at the ongoing effort to document CPython's thread-safety guarantees for built-in types and what the resulting documentation means for a Python developer writing concurrent code.\n\nThe audience will leave with a deep understanding of how Python's most important data structure works, how it's been adapted for a free-threaded world, and what they can (or can't) safely do with dicts across threads.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FRXXAQ", "name": "Lysandros Nikolaou", "avatar": "https://programme.europython.eu/media/avatars/FRXXAQ_rc18zA8.webp", "biography": "Lysandros works as a Core Developer at Python@HRT in London where he tries to make the Python experience better. He is a CPython core developer, specializing in the parser, the tokenizer and the REPL. He previously worked on supercharging f-strings in Python 3.12, the new REPL for Python 3.13, t-strings in Python 3.14 and introducing fast string ufuncs in NumPy 2.0. Before HRT, he spent his time on CPython and the PyData ecosystem at Quansight, most recently improving support for free-threaded Python.", "public_name": "Lysandros Nikolaou", "guid": "6e53abce-0acd-5af1-a1aa-bdff587babbe", "url": "https://programme.europython.eu/europython-2026/speaker/FRXXAQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VKURLV/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VKURLV/", "attachments": []}, {"guid": "cf66ff00-79b0-5dc1-800a-692cf45f9857", "code": "NXNHSB", "id": 90769, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S1", "slug": "europython-2026-90769-anatomy-of-a-phishing-campaign", "url": "https://programme.europython.eu/europython-2026/talk/NXNHSB/", "title": "Anatomy of a Phishing Campaign", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "In July 2025, PyPI users received emails directing them to pypj.org\u2014a near-perfect clone transparently proxying requests to pypi.org. Within hours, attackers compromised four accounts and uploaded malicious releases of the popular num2words package.\n\nThis talk dissects the complete attack chain: how attackers harvested email addresses from public package metadata, built a transparent proxy that relayed TOTP codes in real-time, and why traditional 2FA failed while WebAuthn-based authentication stopped the attack cold.\n\nThe session covers the incident response timeline, challenges getting malicious infrastructure taken down (including initial rejection of abuse reports), and defensive measures deployed afterward\u2014including new email verification for TOTP logins from unrecognized devices.\n\nAttendees will learn exactly how modern phishing attacks work against package repositories, the critical difference between \"phishable\" and \"phishing-resistant\" 2FA, and practical steps to protect accounts and packages from the next campaign. The talk also examines the September 2025 follow-up campaign targeting pypi-mirror.org and patterns across these ongoing attacks.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "TVA3TQ", "name": "Mike Fiedler", "avatar": "https://programme.europython.eu/media/avatars/TVA3TQ_gJohOw8.webp", "biography": "Mike is a professional engineer with over three decades of experience, having held senior leadership roles at companies including Datadog, MongoDB, LeafLink, Warby Parker, and Paribus (Capital One). He is dedicated to continuous learning and mentoring.\n\nHe is a recognized contributor to the tech community, having been a conference speaker since 2012. His accolades include the Awesome Community Chef Award (2016) and being an AWS Container Hero since 2018.\n\nCurrently working as the [PyPI Safety & Security Engineer](https://blog.pypi.org/posts/2023-08-04-pypi-hires-safety-engineer/) at the [Python Software Foundation](https://www.python.org/psf-landing/), he devotes his free time to working on open source tools, learning new technologies, and volunteering as a roller derby referee. With a holistic view of systems and software and a passion for problem-solving, Mike helps others navigate the complexities of the tech world.\n\nHe can be found on [Mastodon](https://hachyderm.io/@miketheman), [GitHub](https://github.com/miketheman), and elsewhere online, or wearing stripes at a roller derby game near you.", "public_name": "Mike Fiedler", "guid": "106c51f2-f616-5555-9e74-a982082d1409", "url": "https://programme.europython.eu/europython-2026/speaker/TVA3TQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NXNHSB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NXNHSB/", "attachments": []}, {"guid": "ef78356a-4860-5258-a991-cfc475dc5669", "code": "TAZHCD", "id": 90952, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "duration": "00:30", "room": "S1", "slug": "europython-2026-90952-climbing-the-pyramid-behind-the-scenes-of-the-python-package-index", "url": "https://programme.europython.eu/europython-2026/talk/TAZHCD/", "title": "Climbing the Pyramid: Behind the Scenes of the Python Package Index", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "The Python Packaging Index or PyPI, is used by over a million users. But what is behind the scenes of PyPI? PyPI is currently powered by Warehouse, a software built using Pyramid, a Python web framework. This talk explores Pyramid through the lens of a beginner\u2019s mindset and will lead the audience through the ins and outs of this Python web framework, its utility, and why it still holds its own and stands strong (like a pyramid!) among other comparable web frameworks.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LKEVDA", "name": "Maria Ashna", "avatar": "https://programme.europython.eu/media/avatars/LKEVDA_QpvEdtv.webp", "biography": "Maria is the inaugural PyPI Support Specialist at the PSF. Prior to PSF, she has worked at the Brain and Creativity Institute at USC working on the neuroscience of creativity. Maria is also the founder of The Magic Light Bulb, Inc., a tech and product consulting firm. Maria has also worked in various roles in tech starting from technical project specialists to technical product management. Maria is also a classically trained performer who has trained in theatre and performing arts with the faculty of the Moscow Art Theatre School and American Rep Theatre at Harvard University and has performed in numerous theater and film productions around the world. She received her first Master's degree in Information Systems and Technology from Claremont Graduate University, and her second Master's in Neuroimaging and Informatics from USC. Maria has also studied neuroscience and theatre as an undergraduate at University of New Mexico.", "public_name": "Maria Ashna", "guid": "96f7006c-bff1-59b8-9532-b7e02beba466", "url": "https://programme.europython.eu/europython-2026/speaker/LKEVDA/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TAZHCD/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TAZHCD/", "attachments": []}, {"guid": "3c42533e-b004-54f6-984f-b98ac48bb1c1", "code": "9JALSN", "id": 89990, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "duration": "00:30", "room": "S1", "slug": "europython-2026-89990-learning-from-the-not-so-secret-python-security-cabal", "url": "https://programme.europython.eu/europython-2026/talk/9JALSN/", "title": "Learning from the not-so-secret Python security \"cabal\"", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "The CPython runtime is some of the most-used software in the world. Part of maintaining a secure software project like CPython is participating in coordinated vulnerability disclosure (CVD). This process allows security researchers and maintainers of projects to work together to fix vulnerabilities and alert the public, keeping all Python programmers and users safe.\n\nIn this talk attendees will learn about how the Python language organizes its security team, how to balance security and open source contribution in coordinated vulnerability disclosure, and the latest in how open source projects can maintain a sustainable vulnerability disclosure program. Attendees that aren\u2019t currently contributing to open source projects, but have an interest in their dependencies being secure, will learn ways they can contribute meaningfully to the security of open source projects they depend on.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "KKVUH8", "name": "Seth Michael Larson", "avatar": "https://programme.europython.eu/media/avatars/KKVUH8_P4CQm3d.webp", "biography": "I am the Security Developer-in-Residence at the Python Software Foundation working to improve the security posture of the Python ecosystem. I enjoy writing about software, security, and retro video-games. I maintain a few Python open source projects including urllib3 and truststore.", "public_name": "Seth Michael Larson", "guid": "2df04f01-8065-5321-b390-a28f96adb218", "url": "https://programme.europython.eu/europython-2026/speaker/KKVUH8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/9JALSN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/9JALSN/", "attachments": []}, {"guid": "5f88d0ba-2585-5021-9af5-968dfcde17f1", "code": "BDUAKE", "id": 96941, "logo": null, "date": "2026-07-16T16:40:00+02:00", "start": "16:40", "duration": "00:45", "room": "S1", "slug": "europython-2026-96941-keynote-4-placeholder", "url": "https://programme.europython.eu/europython-2026/talk/BDUAKE/", "title": "Keynote 4 - Placeholder", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "\"TBD: Keynote Speaker\"\nDetails coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BDUAKE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BDUAKE/", "attachments": []}, {"guid": "0014970b-4a19-5c1e-8674-994026de34d9", "code": "DJU8GK", "id": 97553, "logo": null, "date": "2026-07-16T17:25:00+02:00", "start": "17:25", "duration": "00:45", "room": "S1", "slug": "europython-2026-97553-lightning-talks-thursday", "url": "https://programme.europython.eu/europython-2026/talk/DJU8GK/", "title": "Lightning talks \u26a1 Thursday", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "Enjoy Thursday's lightning talks!\nA series of short community/conference announcements followed by short talks about everything by everyone. \n\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\nIf that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that's helping and contributing to our conference and community, or something else!\n\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\nThis time limit is strictly enforced!\n\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\nReply to the acceptance email by 3pm to confirm your spot.\n(If you don't, you lose your spot!)\n\nYou can submit your lightning talk on this form: TBD\nNote that there's a limit of one submission per person.\n\nCommunity/conference announcement submissions are done through the same form before 1pm Thursday.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DJU8GK/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DJU8GK/", "attachments": []}], "S2": [{"guid": "a0a5c51b-07aa-5d7c-9cba-2f45a95177d6", "code": "UGM7F8", "id": 91610, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "00:45", "room": "S2", "slug": "europython-2026-91610-the-hidden-cost-of-complexity-reducing-cognitive-load-in-python", "url": "https://programme.europython.eu/europython-2026/talk/UGM7F8/", "title": "The Hidden Cost of Complexity: Reducing Cognitive Load in Python", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk (long session)", "language": "en", "abstract": "Some codebases let you ship a change in minutes. Others turn a one-line fix into weeks of investigation.\n\nThe difference is often not skill, tooling, or even architecture\u2014it\u2019s cognitive load.\n\nIn this talk, we\u2019ll look at real examples from long-lived Python systems to understand how inheritance, deep nesting, excessive abstraction, microservices, and over-applied DRY silently increase the cost of change.\n\nYou\u2019ll learn practical heuristics to recognize high cognitive load early and concrete strategies to reduce it\u2014so your team can move faster without rewriting everything.\n\nThis is a pragmatic engineering talk for developers who work in real production code, not greenfield demos.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7JPAB8", "name": "Jaros\u0142aw \u015amietanka", "avatar": "https://programme.europython.eu/media/avatars/7JPAB8_caSGiZl.webp", "biography": "Senior Software Engineer in the Commodities Risk Technology team at Balyasny Asset Management, working on large-scale, long-lived Python systems in a high-stakes financial environment.\n\nPreviously a Technical Team Lead at Growbots, where I spent nearly a decade designing and evolving microservice-based data platforms, leading engineering teams, and improving the maintainability of complex production codebases.\n\nWith over ten years of professional experience across finance, data engineering, and backend architecture, my work focuses on reducing system complexity, improving changeability, and helping teams deliver faster in real-world Python environments.", "public_name": "Jaros\u0142aw \u015amietanka", "guid": "77d799f6-74f3-517d-a921-918eb00206aa", "url": "https://programme.europython.eu/europython-2026/speaker/7JPAB8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/UGM7F8/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/UGM7F8/", "attachments": []}, {"guid": "b3f7c433-65e4-5a57-a298-94aadcf6609f", "code": "DWGSFA", "id": 89197, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S2", "slug": "europython-2026-89197-from-pixels-to-insights-python-for-earth-observation", "url": "https://programme.europython.eu/europython-2026/talk/DWGSFA/", "title": "From Pixels to Insights: Python for Earth Observation", "subtitle": "", "track": "Jupyter and Scientific Python", "type": "Talk", "language": "en", "abstract": "Due to climate change, **large wildfires** continue affecting all continents of the Earth, leading to forest loss and exacerbating environmental impacts. Even more, current changing weather conditions associated with global warming will further increase fire danger to a global extent. Investigating these phenomena in a data-driven manner helps in decision making in pre-intervention and post-restoration following wildfire events. **Satellites** orbiting Earth can offer critical insights by capturing detailed images of the planet\u2019s surface. Utilizing this data, environmental scientists perform detailed assessments to monitor an ecosystem\u2019s loss and post-restoration progress. However, data from satellites arrive in the form of millions of raw pixels and turning them into analysis ready products is a **time-consuming** task full of **multi-step** and **error-prone** processes.\n\nThis talk introduces an end-to-end Python workflow to automate the processing of **Earth Observation (EO) data**. The presentation walks through pixels to insights showcasing a real example and highlighting both the power of automation in the field of remote sensing and the importance of EO data in **climate change monitoring**. After the session, the audience will understand how utilizing open Python packages such as **Rasterio** and **NumPy** with openly distributed data from the [European Space Agency\u2019s Sentinel-2 mission](https://dataspace.copernicus.eu/data-collections/copernicus-sentinel-missions/sentinel-2) can lead us quickly into crucial and spatially meaningful information. Although the demonstration focuses on wildfire events, the automated workflow is broadly applicable to other environmental fields such as land cover change detection, hydrological assessments and coastal studies.\n\n**No prior knowledge is required**! The **goal** is not to delve into complex mathematical equations, but to showcase the power of automation in remote sensing with Python.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "AEFAYE", "name": "ELENI TOKMAKTSI", "avatar": "https://programme.europython.eu/media/avatars/AEFAYE_ScQeEyB.webp", "biography": "I enjoy turning raw data into analysis ready and meaningful information that has an impact on our daily lives.\n\nWith a BSc in Geology, an MSc in Applied Geophysics, and over three years as a Geospatial Data Engineer, I work at the intersection of geoscience and technology. My work includes building tools to streamline geospatial data workflows, developing and maintaining websites, and creating custom Python solutions to automate daily tasks.\n\nAnd if technology collapses, a solar storm wipes out the internet, or AI takes our jobs, my Plan B is to become a cook!\n\nDon't hesitate to connect with me on [Linkedin](https://gr.linkedin.com/in/eleni-tokmaktsi-982334257)!", "public_name": "ELENI TOKMAKTSI", "guid": "aae28fd2-00de-5c31-9d9f-8de09d6963b6", "url": "https://programme.europython.eu/europython-2026/speaker/AEFAYE/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DWGSFA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DWGSFA/", "attachments": []}, {"guid": "12406aa9-62ce-51ed-9a74-2eff3ba22854", "code": "LN7EF3", "id": 91463, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S2", "slug": "europython-2026-91463-python-games-in-the-browser-teaching-with-webassembly", "url": "https://programme.europython.eu/europython-2026/talk/LN7EF3/", "title": "Python Games in the Browser: Teaching with WebAssembly", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "This talk explores how **Python games can run entirely in the browser using WebAssembly (WASM)** and how they can also be **written and modified directly in the browser using Python itself**.\n\nRather than treating the browser as a mere deployment target, this talk presents it as the **primary learning environment**. Learners interact with a browser-embedded code editor where they write Python code that directly controls and modifies a game, which is also implemented in Python. This creates a zero-install, highly interactive learning experience where Python concepts are introduced through familiar game mechanics instead of traditional REPLs or slide-based instruction.\n\nThe focus of this talk is **not on building a game engine**, but on how **educators and instructors** can leverage **WASM to safely run Python in the browser for teaching purposes**. The talk introduces a tool I built that enables instructors to design browser-based Python tutorials using common game concepts such as scenery, sprites, and swatches, making it easier to create engaging, game-driven learning content.\n\nThe talk covers:\n- How Python can be executed in the browser using WebAssembly\n- A comparison of **Pyodide vs. pyscript**, highlighting their benefits and limitations in educational contexts\n- How browser-based execution changes assumptions around security, isolation, and infrastructure\nIn the latter part of the talk, this approach is packaged as an **XBlock**, the modular unit used to build courses in **Open edX**. This demonstrates how WASM-based Python execution can be integrated into large-scale learning platforms and how it compares to traditional server-side execution models such as **CodeJail**, highlighting improvements in safety, reduced infrastructure complexity, and an improved learner experience.\n\n**WebAssembly enables a new class of interactive, game-based Python learning experiences** that run securely and entirely in the browser, without requiring local setup or server-side code execution.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NXPA9Z", "name": "Farhaan Bukhsh", "avatar": "https://programme.europython.eu/media/avatars/NXPA9Z_hhqKeEe.webp", "biography": "Farhaan Bukhsh is an open-source contributor, Pythonista, and founder of Metamind \u2014 a company focused on building impactful, privacy-aware technology. With a background in cloud infrastructure and platform engineering, Farhaan has contributed extensively to projects like Fedora and Open edX, where he is a core committer. He's passionate about bridging the performance gap between Python and system-level programming, recently exploring the power of Rust to accelerate machine learning workflows. When he's not writing code, Farhaan enjoys mentoring new contributors, organizing tech communities, and brewing the perfect pour-over coffee.", "public_name": "Farhaan Bukhsh", "guid": "2ef7c6b0-281c-5143-845e-48663b8aac24", "url": "https://programme.europython.eu/europython-2026/speaker/NXPA9Z/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LN7EF3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LN7EF3/", "attachments": []}, {"guid": "b5229348-8d81-5eca-a656-3c84a8d43b53", "code": "BMQP7J", "id": 91351, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "duration": "00:30", "room": "S2", "slug": "europython-2026-91351-building-a-smart-home-device-with-micropython", "url": "https://programme.europython.eu/europython-2026/talk/BMQP7J/", "title": "Building a Smart Home Device with MicroPython", "subtitle": "", "track": "IoT, Embedded Systems, Hardware Integration", "type": "Talk", "language": "en", "abstract": "Your smart home is a wireless network of connected devices which all talk to each other by sending messages into a central hub. If you control the hub's messaging queue, you can control and monitor the network and even create your own custom devices that end up visible in services like Apple or Google Home.\n\nIn this talk I will show you what it takes to create such a custom device using an affordable ESP32 microcontroller running MicroPython. We'll briefly look at the capabilities of the ESP32 family and why it is a good choice for WiFi-enabled projects. We'll talk about the tooling that makes development a pleasure, from flashing firmware to interacting with the board using WebREPL, installing lightweight dependencies with mip, testing, logging, and more.\n\nWe will also discuss the MQTT protocol, how our custom devices can send and receive messages, how to integrate third-party Zigbee devices, and how to use Home Assistant as a bridge between our MQTT server and Apple or Google Home. We'll see how to use the Mosquitto broker and client tools such as  paho.mqtt and how Zigbee2MQTT allows remote sensors to join the same messaging layer.\n\nMy goal is to give a practical overview of the hardware and software pieces involved: ESP32, MicroPython tooling, MQTT infrastructure, Zigbee integration, and Home Assistant bridging. If you are comfortable with Python and curious about embedded systems, this talk is for you.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RMHTBJ", "name": "Micha\u0142 Karzy\u0144ski", "avatar": "https://programme.europython.eu/media/avatars/RMHTBJ_0aNWwXM.webp", "biography": "Michal Karzynski is a graduate of the University of Gdansk and the Medical University of Gda\u0144sk. He was involved in research and development work at the European Molecular Biology Laboratory in Heidelberg and the Technical University in Gdansk. He recently worked as a software architect and data scientist for Intel, specialising in applying neural network models to the domain of sound processing. He is currently acting as the CTO of a new stealth startup, hoping to make it big.\nMichal is a frequent speaker at programming conferences and a chairman of the Operators Special Interest Group, part of the Open Neural Network Exchange (ONNX) standardisation committee.", "public_name": "Micha\u0142 Karzy\u0144ski", "guid": "49ea1d98-4c4c-5c01-a2fa-54df049fd5e7", "url": "https://programme.europython.eu/europython-2026/speaker/RMHTBJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BMQP7J/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BMQP7J/", "attachments": []}, {"guid": "9f83dcda-aa55-5a24-9d7a-9ecabfeeea33", "code": "GRCJRZ", "id": 101791, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "01:00", "room": "S2", "slug": "europython-2026-101791-cpython-panel", "url": "https://programme.europython.eu/europython-2026/talk/GRCJRZ/", "title": "CPython Panel", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Panel", "language": "en", "abstract": "Python has been evolving very rapidly in the last few years, and this is because new ideas have been taking over the Core Development. New ideas require new people, a new background and lots of energy.\n\nThis panel aims for the people to be aware of the changes that are coming in 3.15 and future versions, as well as ways people can contribute by testing features, fixing issues, or even sharing their own ideas.\n\n* Hosts: TBD\n* Panelists:\n    * TBD", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GRCJRZ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GRCJRZ/", "attachments": []}, {"guid": "f0c234ca-5867-52f4-8bd6-cb110aa693be", "code": "UY9UAG", "id": 91516, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "duration": "00:30", "room": "S2", "slug": "europython-2026-91516-binary-dependencies-identifying-the-hidden-packages-we-all-depend-on", "url": "https://programme.europython.eu/europython-2026/talk/UY9UAG/", "title": "Binary Dependencies: Identifying the Hidden Packages We All Depend On", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "Package manifests like `pyproject.toml` record source-level dependencies: _pandas_ depends on _numpy_'s code. The story is different for binary dependencies, which exist whenever compiled code, like C code, is called from Python. _numpy_ depends on _OpenBLAS_'s binaries, but this dependency relationship is not recorded anywhere. This makes _OpenBLAS_ a _[phantom](https://www.endorlabs.com/learn/dependency-resolution-in-python-beware-the-phantom-dependency) binary dependency_.\n\nPhantom dependencies are therefore hidden from programmers and researchers, which is bad for at least two reasons.\n\nFirst, security. If one of your binary dependencies has a vulnerability, this means your project is probably also vulnerable \u2014 but you won't reliably find out about this, since your dependency is invisible.\n\nSecondly, sustainability. If we can't keep track of our binary dependencies, we can't keep track of their maintainers either, which means we can't credit and [financially support](https://opensourcepledge.com/) them. This can lead to [maintainer burnout](https://opensourcepledge.com/blog/burnout-in-open-source-a-structural-problem-we-can-fix-together/), which has already created serious supply chain issues.\n\nPython is not only tremendously popular, but also valued for its ability to easily interface with compiled libraries. According to my research, around 20% of Python packages have binary dependencies.\n\nThis means that the problem of phantom binary dependencies is widespread, and puts the public at risk of harm, eg if critical infrastructure like hospitals or transportation is compromised by exploiting the aforementioned weaknesses.\n\nI aim to describe how the problem of phantom binary dependencies can be fixed within the Python ecosystem, and demo some of my preliminary work.\n\nFirst, binary dependencies must be identified. Tools like _[auditwheel](https://github.com/pypa/auditwheel/)_ and _[elfdeps](https://github.com/python-wheel-build/elfdeps/)_ are able to identify a project's [required dynamic libraries](https://vlad.website/how-binary-dependencies-work/). If we create better APIs for these tools, and integrate them with package managers such as _pip_ and _uv_, we can give developers and researchers visibility into binary dependencies, dispelling the phantom.\n\nBeyond this, standards like [PEP 725](https://peps.python.org/pep-0725/), [PEP 770](https://peps.python.org/pep-0770/) and [PEP 804](https://peps.python.org/pep-0804/) specify how we might record binary dependency relationships in an easily accessible way. I'll explain how we can build on these standards to create tools that will allow users and researchers to explore binary dependencies and identify security issues by default.\n\nLastly, I want to talk about the road towards the ultimate aim of having binary dependencies be managed not by Python package managers, but by system package managers, as they should be. This will require interoperation between package managers, and I'll explain how this might work.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3RGAHL", "name": "Vlad-Stefan Harbuz", "avatar": "https://programme.europython.eu/media/avatars/3RGAHL_iQKd0sh.webp", "biography": "I work on software and philosophy that contributes to the public good. I've been a programmer for 19 years and my current focus is making our Open Source ecosystem healthier and more sustainable.\n\nI'm a maintainer of the [Open Source Pledge](https://opensourcepledge.com/), which is creating a new social norm of companies paying the maintainers they depend on, and has raised $6,896,498 for maintainers since launching. I also advise the board of the [Open Source Endowment](https://endowment.dev/).\n\nNext to my work in software, I am also a PhD researcher in philosophy at the [University of Edinburgh](https://edwebprofiles.ed.ac.uk/profile/vladh), where I research the ethics and epistemology of Open Source software.\n\nI think that being kind is important, and I love cats and birds. I write on [vlad.website](https://vlad.website/).", "public_name": "Vlad-Stefan Harbuz", "guid": "a699fe04-adbd-5cab-a51b-80e1d69051de", "url": "https://programme.europython.eu/europython-2026/speaker/3RGAHL/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/UY9UAG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/UY9UAG/", "attachments": []}], "S4": [{"guid": "c181a655-27cb-5422-9be5-5157b1493bdf", "code": "788XZA", "id": 90755, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "00:45", "room": "S4", "slug": "europython-2026-90755-from-one-to-1-million-packet-second-scaling-global-internet-monitoring", "url": "https://programme.europython.eu/europython-2026/talk/788XZA/", "title": "From one to 1 million packet/second: scaling global Internet monitoring", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Talk (long session)", "language": "en", "abstract": "This is the real story about the design, benchmark, tuning and operation of a 24x7 multi-tenant network monitoring platform, that started out at only 1 packet/second, but then with the power of Python it scaled to 1 million packet/second.\n\nIt is like an high performance version of ICMP ping and mtr/traceroute, supports dualstack IP v4/v6, and runs 24x7 on a set of probing nodes distributed Worldwide.\n\nEach ICMP packet needs to be scheduled, crafted, sent, analyzed and stored for query in near-time.\n\nTo make things harder, the probing platform has been designed and tuned to use the least amount of resources as CPU, memory and storage, in order to run on cheap burstable cloud instances.\n\nPython is used everywhere: packet scheduling, generate randomized ICMP packets, send them via RAW sockets, and match results from probing.\n\nProbing results are then pushed to ClickHouse in near-time, and visualized via Grafana.\n\nAnd rest assured that every packet counts.\n\nSome of the concept explored during the talk:\n- ICMP protocol, BGP protocol, routing table\n- ping, mtr/traceroute\n- RAW socket in Python, crafting ICMP packets\n- tcpdump, PCAP dump file\n- msgpack, zstd compression\n- object storage\n- Apache Parquet as optimized data storage format\n- near-time batch and streaming data workflow\n- performance profiling and tuning\n- Python vs PyPy performance comparison\n- monitoring of the monitor: probing node performance monitoring", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "P3TRFT", "name": "Marco Grossi", "avatar": null, "biography": "Python developer, 20+ years\nBenchmarking and Tuning, 20+ years\nHPC (High Performance Computing) 15+ years, as Researcher and SysAdmin\nCS graduate, passion for Distributed Systems and Algorithm\nRun my own BGP network", "public_name": "Marco Grossi", "guid": "8d4d5255-3714-5c1f-a6b3-caada6de489a", "url": "https://programme.europython.eu/europython-2026/speaker/P3TRFT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/788XZA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/788XZA/", "attachments": []}, {"guid": "39c3bb06-03c8-5763-bc3b-7681a3b28bd7", "code": "RC7ALD", "id": 91619, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S4", "slug": "europython-2026-91619-no-more-it-works-on-my-notebook-from-notebook-to-production-ready-model", "url": "https://programme.europython.eu/europython-2026/talk/RC7ALD/", "title": "No More \u201cIt Works on My Notebook\u201d!: From Notebook to Production-Ready Model", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Talk", "language": "en", "abstract": "Deploying machine learning models should be predictable, repeatable, and auditable\u2014not a leap of faith. This talk breaks the deployment lifecycle into clear, actionable steps and demonstrates pragmatic choices for containerization, serverless and platform-based deployments, monitoring, and scaling. It also introduces the Model Context Protocol MCP as a practical pattern for giving deployed models secure, auditable access to external data and tools. Attendees will leave with concrete patterns, a checklist to avoid common pitfalls, and reproducible workflows they can apply the next day to move models from experimentation into reliable production services.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "EE9T8A", "name": "Ariane Djeupang", "avatar": "https://programme.europython.eu/media/avatars/EE9T8A_3W2HebM.webp", "biography": "**Ariane Djeupang** is a **Microsoft MVP**, an **ML Engineer** and **Project Manager**, passionate about fostering community growth and innovation in the tech industry. While she is the current appointed **Chair for PyCon Africa**, she is dedicated to promoting **diversity and inclusion**, actively participating in the Python | Django | PyLadies communities and other initiatives that empower underrepresented groups in technology.", "public_name": "Ariane Djeupang", "guid": "90bbb839-5d33-549f-aada-42f88d1614a9", "url": "https://programme.europython.eu/europython-2026/speaker/EE9T8A/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RC7ALD/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RC7ALD/", "attachments": []}, {"guid": "ed0255b4-762e-5f46-9721-07675485fc8a", "code": "9MRVPM", "id": 90882, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S4", "slug": "europython-2026-90882-stop-firefighting-practical-observability-for-python-apis-workers-jobs", "url": "https://programme.europython.eu/europython-2026/talk/9MRVPM/", "title": "Stop firefighting: practical observability for Python APIs, workers & jobs", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Talk", "language": "en", "abstract": "Production has a special talent for turning \u201cseems fine\u201d into \u201cwhy is everything on fire?\u201d \u2014 usually because we\u2019re missing signals. A service restarts and never becomes ready, a background worker silently stops consuming tasks, or a database gets overloaded and latency creeps up until downstream services (or customers) notice it first. These situations aren\u2019t unsolvable \u2014 they\u2019re preventable with the right signals in place.\n\nI\u2019ve seen how stressful this gets when a system is already in production, but there\u2019s no clear guidance or shared \u201cwhere to look first\u201d playbook; so every incident starts with guesswork. Over time, we turned those lessons into a lightweight standard that replaces panic mode with a predictable investigation flow.\n\nIn this talk, I\u2019ll share a practical, vendor-agnostic observability checklist for a Python setup with three cooperating workloads: an HTTP API, an event-driven worker, and a scheduled daily job. Each workload fails differently, so each requires a different set of signals to stay observable.\n\nWe\u2019ll cover what \u201cgood enough\u201d looks like for logging, metrics, tracing, and alerting: what to instrument first, what pitfalls to avoid, and how to design alerts that catch problems early without creating noise. You\u2019ll leave with a concrete checklist and a phased rollout order you can apply to your own Python services \u2014 without rewriting your system or committing to a specific monitoring vendor.\n\n## **Takeaways**\n- A baseline observability checklist every service should have: health/readiness, logging with consistent context, core metrics, and alert routing\n- Workload-specific signals: what to watch in APIs vs background workers vs scheduled jobs, and why one size doesn\u2019t fit all\n- Structured logging that works in production: a minimal event schema + contextual fields that speed up debugging\n- Must-have alerts that prevent silent failures: service never becomes ready, worker stalls, scheduled job misses its run, sustained latency increase\n- Where tracing adds value: when it\u2019s worth the effort, what \u201cminimal viable tracing\u201d looks like, and what\u2019s optional at the beginning\n- A rollout sequence you can apply incrementally: what to do first, what to add later", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WTJPR3", "name": "Daria Korsakova", "avatar": "https://programme.europython.eu/media/avatars/WTJPR3_5M8dFeQ.webp", "biography": "Python backend engineer with a SDET background. I love systems that are both robust and boring to run, and I\u2019m a fan of pragmatic engineering: clear APIs, solid testing, and production-friendly observability", "public_name": "Daria Korsakova", "guid": "9430f89d-cba1-5a9a-a5cf-734b291eb129", "url": "https://programme.europython.eu/europython-2026/speaker/WTJPR3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/9MRVPM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/9MRVPM/", "attachments": []}, {"guid": "eb4deee7-6284-5e21-97a0-919a9846cac3", "code": "MJTZ7A", "id": 91376, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "duration": "00:30", "room": "S4", "slug": "europython-2026-91376-the-hidden-cost-of-vibe-coding", "url": "https://programme.europython.eu/europython-2026/talk/MJTZ7A/", "title": "The hidden cost of vibe coding", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "Artificial intelligence has become deeply embedded in modern Python development workflows. From generating backend services to refactoring production systems, large language models now influence how software is designed, implemented, and shipped. While these tools offer significant productivity gains, many teams are discovering a less visible cost: code is increasingly produced faster than architectural decisions can be reviewed, validated, and governed.\n\nIn real production environments, particularly those built on distributed services, data pipelines, and cloud infrastructure, unstructured AI-driven development often leads to predictable outcomes. Teams encounter rising defect rates, fragile integrations, unclear system ownership, security regressions, and access control mistakes introduced by AI-generated code. Over time, these issues surface as service outages, compliance risks, lost clients, and escalating maintenance costs. The problem is not AI itself, but the absence of engineering structure around how it is used.\n\nThis talk examines why unsupervised \u201cvibe coding\u201d fails at scale and how development teams can adopt a disciplined, AI-assisted development model that improves both velocity and reliability. Drawing from real-world backend systems, I will present practical techniques for embedding AI across the Software Development Life Cycle \u2014 including structured design inputs, architecture validation, automated reviews, testing strategies, and continuous quality controls.\n\nTo ground the discussion in reality, the session includes a concrete production case study from a rapidly developed, AI-assisted Python system. Starting from access to a single project, I was able to traverse service boundaries and gain visibility into multiple cloud environments and internal repositories across both AWS and GCP. The root cause was not a single vulnerability, but a chain of small, AI-generated decisions: overly broad permissions, copied infrastructure patterns, missing ownership boundaries, and unreviewed assumptions propagated across services. The result was a system that appeared to move quickly, but ultimately required emergency remediation, delayed releases, and loss of trust.\n\nThe talk concludes by addressing a common misconception: a 50% increase in coding speed does not translate into 50% faster product delivery. Without governance, the opposite is often true.\n\nThe session is aimed at Python developers, technical leads, and architects responsible for production systems. Familiarity with Python backend development is recommended, but no prior experience with AI tooling is required.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FCQWZC", "name": "Sebastian Burzy\u0144ski", "avatar": "https://programme.europython.eu/media/avatars/FCQWZC_7GvI3yV.webp", "biography": "Sebastian Burzy\u0144ski is a CTO, cloud architect, and engineering leader specializing in scalable distributed systems and modern cloud infrastructure. At BlueRider.Software, he leads technical strategy and oversees multi-cloud architectures spanning AWS and Google Cloud, Kubernetes environments, and production-grade DevOps pipelines.\n\nWith a strong background in both hands-on engineering and executive decision-making, Sebastian works at the intersection of technology, risk, and business scalability. He advocates for responsible AI adoption in software development, promoting structured AI usage, proper governance, and engineering oversight to prevent technical debt, security issues, and operational instability.", "public_name": "Sebastian Burzy\u0144ski", "guid": "2892f226-13b1-5369-8859-b7ee0de88ffa", "url": "https://programme.europython.eu/europython-2026/speaker/FCQWZC/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/MJTZ7A/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/MJTZ7A/", "attachments": []}, {"guid": "766e5aec-7f25-5d7a-93fc-c7b337710af4", "code": "PPQ3KE", "id": 88756, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S4", "slug": "europython-2026-88756-python-on-serverless-strategies-for-peak-performance", "url": "https://programme.europython.eu/europython-2026/talk/PPQ3KE/", "title": "Python on Serverless: Strategies for Peak Performance", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Talk", "language": "en", "abstract": "We deployed Python in serverless environments and quickly saw the performance limits. Serverless systems suffer from startup latency, memory overhead, and repeated object creation as their executions start almost from scratch. Those extra seconds made our user experience painfully slow\u2014and we couldn\u2019t afford it.\n\nWe looked into the performance of our flight search engine, ran profilers, and applied optimizations. We found real gains when **tuning Python\u2019s GC**, reducing **stop-the-world pauses**, and introducing an **asynchronous post-execution process** that runs after the handler returns. We reduced execution time from **1.2 seconds to 300 milliseconds\u2014a 4\u00d7 speedup** with just a few tweaks.\n\nUnderstanding **Python\u2019s memory model** and its runtime behavior was essential, and it\u2019s something we\u2019ll dive into during the talk. What we share is based on **AWS Lambda**, but it can be applied to any short-lived Python system\u2014whether serverless or containerized.\n\nAnother big gain came from replacing `Pydantic` with `TypedDict` for faster parsing, using **Redis** strategically to distribute operations, and restructuring code to eliminate duplicated transformations. Our web API processes thousands of flight offers\u2014deserialize, enrich, transform\u2014and every millisecond counts.\n\nWhile covering optimization techniques, when they matter, and how we measured their impact, the main idea is that you will walk away with tactics that help your system stay fast while it grows.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YMJTM9", "name": "Alejandro Cabello Jim\u00e9nez", "avatar": "https://programme.europython.eu/media/avatars/YMJTM9_3ZAwSgF.webp", "biography": "Alejandro Cabello Jim\u00e9nez is a Staff Software Engineer at Perk, based in Barcelona. He leads Python backend projects that evolve the product, focusing on performance, maintainability, and reliability. His work ensures the system scales and adapts, delivering a smooth experience to business travelers worldwide.", "public_name": "Alejandro Cabello Jim\u00e9nez", "guid": "29b74e0b-504e-5a56-93b3-8777a1b247e0", "url": "https://programme.europython.eu/europython-2026/speaker/YMJTM9/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PPQ3KE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PPQ3KE/", "attachments": []}, {"guid": "8d4f44de-5f68-5818-8e1a-4909d4f2a355", "code": "NS8QQA", "id": 91575, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "duration": "00:30", "room": "S4", "slug": "europython-2026-91575-the-unseen-pull-request-the-crisis-we-don-t-measure", "url": "https://programme.europython.eu/europython-2026/talk/NS8QQA/", "title": "The Unseen Pull Request: The Crisis We Don\u2019t Measure", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "What holds open source together when the code is done? Recent research paints a worrying picture: 58% of open source maintainers have considered stepping back, and over two-thirds of OSS work is non-code labor: conflict mediation, mentoring, documentation, governance, and emotional labor.Most of it unpaid, invisible, and unrewarded. These pressures are disproportionately carried by community leads and underrepresented contributors.\nAs open source scales across companies, foundations, and global teams, outdated governance models built to manage code is today being asked to manage humans, and they\u2019re failing or buckling under the weight of human complexity. We continue to optimise for commits while ignoring emotional load, collaboration friction, and psychological safety, the very factors that determine sustainability.\n\nI\u2019ve lived this tension as a Service Delivery Manager and community leader. I\u2019ve helped build and sustain communities, but I\u2019ve also reached the point of emotional exhaustion, questioning whether my unseen contributions mattered at all.\n\nThis talk argues that ignoring emotional labor is no longer neutral , it is actively harmful. We\u2019ll explore how modern governance approaches, supported by AI-driven tooling such as sentiment analysis, workload dashboards, and governance bots, can surface invisible work, distribute responsibility more fairly, and prevent burnout before it becomes exit.If open source is to survive its own success, we must start treating its human systems with the same rigor as its technical ones.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "T38F7H", "name": "Lokko Joyce Dzifa", "avatar": "https://programme.europython.eu/media/avatars/T38F7H_4GhEhsk.webp", "biography": "Joyce Dzifa Lokko is a Quality Assurance and Agile Delivery Lead with extensive experience guiding engineering teams through scaling, reliability, and incident management. She specializes in improving delivery processes, strengthening system resilience, and aligning technical execution with business goals. Dzifa has supported university students entering tech through Python community initiatives and actively mentors through Django Girls and PyLadies Ghana. She serves as Communications Lead for PyCon Ghana 2025 and recently spoke at DjangoCon Africa 2025 on applying chaos engineering principles to Django applications. Her work bridges quality assurance, agile practices, and resilient system design.", "public_name": "Lokko Joyce Dzifa", "guid": "94fb8709-8607-5c92-8962-d1d20672e134", "url": "https://programme.europython.eu/europython-2026/speaker/T38F7H/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NS8QQA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NS8QQA/", "attachments": []}], "S3A": [{"guid": "f94fd158-e423-55a8-b6ea-40622fed61a4", "code": "ETBPVR", "id": 91700, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "00:45", "room": "S3A", "slug": "europython-2026-91700-localization-made-easy-a-pythonic-approach-to-global-applications", "url": "https://programme.europython.eu/europython-2026/talk/ETBPVR/", "title": "Localization Made Easy: A Pythonic Approach to Global Applications", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk (long session)", "language": "en", "abstract": "Scaling an application to a global audience often hits a bottleneck: the manual translation of thousands of strings. While machine translation exists, developers need a reliable way to integrate it into their codebases without breaking JSON structures or losing placeholders.\n\nIn this talk, we will explore a streamlined workflow to optimize the localization (l10n) process using Python and the DeepL API. We will walk through a real-world journey of transforming a single-language platform into a multi-language product, focusing on:\n\n    The Localization Workflow: Designing a pipeline that extracts, translates, and reintegrates content automatically.\n\n    Structure Preservation: Strategies to handle nested JSON files and complex data structures, ensuring that keys and code logic remain untouched while values are translated.\n\n    Variable & Context Integrity: How to protect placeholders and dynamic segments (like {count} or {date}) so they survive the translation process intact.\n\n    Automated Batch Processing: Using Python scripts to iterate through entire project directories, enabling the translation of multiple files in a single execution.\n\nAttendees will learn how to build a robust localization engine that acts as a \"first draft\" generator, allowing developers to focus on validating quality rather than managing strings.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YMJGBJ", "name": "Mario Garc\u00eda", "avatar": "https://programme.europython.eu/media/avatars/YMJGBJ_8NgbAO4.webp", "biography": "Full-stack Developer. Over 15 years as a speaker at international events and more than 6 years creating technical content for leading tech organizations. Experienced in implementing microservices and APIs, and automating tasks with Python and Bash. Hands-on experience with relational and NoSQL databases. Former participant in community programs such as Mozilla Reps, GitLab Heroes, GitKraken Ambassadors, and HashiCorp Ambassadors. Passionate about Open Source.", "public_name": "Mario Garc\u00eda", "guid": "6b15c0d7-0727-56ed-bd19-5b321ac9de17", "url": "https://programme.europython.eu/europython-2026/speaker/YMJGBJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ETBPVR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ETBPVR/", "attachments": []}, {"guid": "837a2eed-b0d0-513e-a91f-6778ee853be4", "code": "JQSQBB", "id": 91576, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91576-an-introduction-to-writing-fast-gpu-code-in-python", "url": "https://programme.europython.eu/europython-2026/talk/JQSQBB/", "title": "An Introduction to Writing Fast GPU Code in Python", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Talk", "language": "en", "abstract": "GPUs power almost every modern Python workload in machine learning, vision, and scientific computing. Yet most Python developers treat GPUs like \u201cfaster CPUs\u201d and hope frameworks will handle performance automatically.\nThat mental model is wrong and it is the main reason Python GPU code underperforms by orders of magnitude.\n\nThis introductory talk builds the correct mental model for writing fast GPU code in Python. We will explore how modern GPUs are structured, why global memory dominates execution time, and how to determine whether a kernel is compute-bound or memory-bound using the roofline model. Through concrete examples, attendees will see why naive parallel kernels fail to scale and which hardware-aware patterns; tiling, data reuse, and kernel fusion actually lead to speedups.\n\nThe session concludes with a practical look at how Python can express these ideas using Triton, showing how high-level code is compiled into PTX and how Python can approach near-CUDA performance when it respects hardware constraints.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QAHDBD", "name": "Abhik Sarkar", "avatar": "https://programme.europython.eu/media/avatars/QAHDBD_5Flt7b7.webp", "biography": "I am Abhik Sarkar, a machine learning engineer focused on building real-world computer vision systems that actually run at scale. My work lives at the intersection of software engineering, GPU hardware, and production reliability .\n\nI currently lead machine learning at Cloudastructure, where I design end-to-end vision pipelines spanning high-throughput video ingestion, GPU-accelerated decoding, and low-latency inference. My daily toolset includes PyTorch, TensorRT, NumPy, OpenCV, CuPy, PyCUDA, and ONNX Runtime.", "public_name": "Abhik Sarkar", "guid": "edb8c670-c7fd-5d9c-97d9-2dac0b720843", "url": "https://programme.europython.eu/europython-2026/speaker/QAHDBD/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JQSQBB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JQSQBB/", "attachments": []}, {"guid": "de646717-df31-56f6-8382-50c3d88207e9", "code": "JSLSHM", "id": 91569, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91569-gpu-programming-in-pure-python", "url": "https://programme.europython.eu/europython-2026/talk/JSLSHM/", "title": "GPU Programming in Pure Python", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "GPU programming can be scary, but doesn't need to be! Did you know you can access the full performance of CUDA purely in Python? With the full CUDA Python stack, you have a friendly interface to get you started with GPU acceleration.\n\nIn this example-driven talk, we'll begin with a general discussion of the CUDA model and how to manage accelerator devices in Python with cuda.core. Next, we'll teach you how to create arrays and launch work with CuPy. Then, you'll learn how to customize parallel algorithms with cuda.compute and write your own kernels that leverage cooperative algorithms with cuda.coop, and integrate seamlessly with accelerated libraries such as cuBLAS and cuDNN.\n\nWe'll look at a variety of parallel examples, from counting words, to implementing softmax and row-wise reductions.\n\nBy the time the talk is over, you'll be ready to start accelerating your Python code with GPUs!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PJBCE3", "name": "Bryce Adelstein Lelbach", "avatar": "https://programme.europython.eu/media/avatars/PJBCE3_pz8iOV2.webp", "biography": "Bryce Adelstein Lelbach has spent over a decade developing programming languages, compilers, and libraries. He is passionate about parallel programming and strives to make it more accessible for everyone.\n\nBryce is a Principal Architect at NVIDIA, where he founded the Core C++ Compute Libraries team and now leads the Vanguard Programming group that drives NVIDIA's roadmap for programming languages, compilers, and core libraries.\n\nHe is a leader of the systems programming language community, having served as chair of the C++ Library Evolution and the US programming language standards committee. He has been an organizer and program chair for many conferences over the years. On the C++ committee, he has worked on concurrency primitives, parallel algorithms, senders, and multidimensional arrays.\n\nHe previously worked at Lawrence Berkeley National Laboratory and Louisiana State University. He is one of the founding developers of the HPX parallel runtime system. \n\nOutside of work, Bryce is passionate about airplanes and watches. He lives in Midtown Manhattan with his girlfriend and dog.", "public_name": "Bryce Adelstein Lelbach", "guid": "dc577b1d-4c23-54e5-b090-2b5a8312e910", "url": "https://programme.europython.eu/europython-2026/speaker/PJBCE3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JSLSHM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JSLSHM/", "attachments": []}, {"guid": "f79d8fec-c5c4-5d45-93a0-dbe745a63386", "code": "FB93DB", "id": 98198, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "duration": "00:30", "room": "S3A", "slug": "europython-2026-98198-python-stings-your-ego-finding-pride-in-community-not-just-code", "url": "https://programme.europython.eu/europython-2026/talk/FB93DB/", "title": "Python Stings Your Ego: Finding Pride in Community, Not Just Code", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "In tech, it\u2019s easy to get caught up in ego. Chasing the smartest solutions, writing the most complex code, or proving who\u2019s the best in the room. But Python has a funny way of humbling us. Its simplicity reminds us that good code isn\u2019t about showing off; it\u2019s about making things clear, accessible, and collaborative.\n\nThis talk is about what happens after that sting of humility. Python doesn\u2019t just strip away ego, it builds communities that make you feel proud to belong. I\u2019ll share stories from my journey with Black Python Devs and other Python groups, showing how people from all walks of life come together, support one another, and create space for growth.\n\nBy the end, you\u2019ll see that the real magic of Python isn\u2019t just the language. It\u2019s the people, the openness, and the sense of pride that comes from being part of something bigger than yourself.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9DGTAT", "name": "Emmanuel Ugwu", "avatar": "https://programme.europython.eu/media/avatars/9DGTAT_EaBIGn6.webp", "biography": "I\u2019m Ugwu Nnamdi Emmanuel, Vice Regional Executor (Africa) at Black Python Devs. My path into tech started from a background in Human Physiology, and along the way I discovered how powerful communities can be in shaping lives. I now work at the intersection of code and people. Mentoring beginners, supporting diversity, and helping Python developers across Africa find their voice. For me, the best part of Python isn\u2019t the syntax. It\u2019s the people you meet when you choose to grow together.", "public_name": "Emmanuel Ugwu", "guid": "078fc9f9-3013-53d1-a11a-3197ff63ad40", "url": "https://programme.europython.eu/europython-2026/speaker/9DGTAT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/FB93DB/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/FB93DB/", "attachments": []}, {"guid": "e6fa3c40-2397-578d-aa88-ed30177e4080", "code": "VNR377", "id": 91667, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91667-from-molecules-to-models-a-guide-to-ai-drug-discovery-with-python", "url": "https://programme.europython.eu/europython-2026/talk/VNR377/", "title": "From Molecules to Models: A Guide to AI Drug Discovery with Python", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Talk", "language": "en", "abstract": "Developing a single drug takes 12 years with only a 12% chance of success. AI is changing this dramatically: the first AI designed drug have reached human trials, Alphafold won a Nobel Prize and pharmaceutical companies have committed billions to AI partnerships. The best part? The Python ecosystem you already know is powering this revolution. This talk introduces AI drug discovery to Python developers with no biology or chemistry background required. We'll start with the key insight that makes this field accessible: molecules are data structures, proteins are strings, and drug target binding is just API matching. Through a demo, attendees will see how to represent and visualize molecules with RDKit, convert chemical structures into ML ready vectors, predict drug properties like toxicity and solubility using graph neural networks with DeepChem and predict 3D protein structures in seconds using the ESMFold API.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "UMPJBY", "name": "Jenny Vega", "avatar": "https://programme.europython.eu/media/avatars/UMPJBY_kLpts52.webp", "biography": "Software Engineer with 8+ years of experience. Currently working at Isomorphic Labs as ML Platform Engineer building scalable and safe solutions using large models in the AI Drug Discovery space.", "public_name": "Jenny Vega", "guid": "f3734570-65e0-5875-b1b8-175560a59c3b", "url": "https://programme.europython.eu/europython-2026/speaker/UMPJBY/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/VNR377/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/VNR377/", "attachments": []}, {"guid": "a3624731-78be-51d9-8a5d-02b13e67d205", "code": "BFK3JK", "id": 91115, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91115-faster-django-orm-queries-for-everybody", "url": "https://programme.europython.eu/europython-2026/talk/BFK3JK/", "title": "Faster Django ORM queries for everybody", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Nobody likes a slow application or a website. Not only can it frustrate your users, but it can also directly affect your business metrics, such as conversion rates. Without proper care, your application can easily slow down as your project grows.\n\nOne of the most common sources of slowdowns is your database. Django ORM makes it easy to work with databases, but it also makes it easy to forget how to use it properly.\n\nIn this talk, you will learn how to measure and diagnose database operations in your Django app, fix common issues, and leverage your database engine's features to unleash its full potential. We will cover topics such as N+1 queries, creating and using database views from Django, database indices and EXPLAINing queries (I\u2019ll keep it easy to understand, I promise!).\n\nWhile the session focuses on Django apps, most of the topics also apply to SQLAlchemy and other libraries.\n\nAfter the talk, you will know how to diagnose database query performance and have a good understanding of how to fix common performance bottlenecks.\n\nYou\u2019ll need basic knowledge of the Django ORM or a similar tool like SQLAlchemy, as well as general database concepts.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7FCECA", "name": "Jan Smitka", "avatar": "https://programme.europython.eu/media/avatars/7FCECA_qbX8WTe.webp", "biography": "I am a Software engineer from Pilsen, Czech Republic, with more than 20 years of experience.\n\nI develop web and data applications in Python. However, my area of expertise also includes everything required for their complete delivery and maintenance: frontend, databases, system administration, cloud deployment, containers, networks, development workflows, project management, and many others.\n\nI am a co-organizer of Pilsen Pyvo, a local meetup for Python enthusiasts and developers.", "public_name": "Jan Smitka", "guid": "bda5e49d-344f-52c6-8f6e-237b23193c5b", "url": "https://programme.europython.eu/europython-2026/speaker/7FCECA/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BFK3JK/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BFK3JK/", "attachments": []}, {"guid": "17b6bddc-6f2e-51bf-8f68-e56930bfe07b", "code": "QHFXXA", "id": 91081, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91081-python-everywhere-the-state-of-python-on-webassembly", "url": "https://programme.europython.eu/europython-2026/talk/QHFXXA/", "title": "Python Everywhere: The State of Python on WebAssembly", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Pyodide is a CPython distribution for JavaScript runtimes. It powers browser-based CPython environments like PyScript, Jupyterlite, and Marimo. Pyodide uses the Emscripten compiler to compile CPython to JavaScript + WebAssembly. Since the fall of 2024, Emscripten has been a tier 3 supported platform of CPython. \n\nWe will give demos showing how Pyodide is used in a variety of applications such as interactive notebooks, client side computing, safe code execution for AI, and edge computing.\n\nWe will describe our work to standardize the Pyodide ecosystem:\n* to upstream most of the Pyodide runtime into CPython, and\n* to allow Pyodide-compatible packages to be uploaded to PyPI.\nWe will also describe our long goals for the ecosystem.\n\nWe will discuss recent progress in closing the large gap between the performance of the Python interpreter on WebAssembly and the performance on native platforms.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HATWEY", "name": "Hood Chatham", "avatar": "https://programme.europython.eu/media/avatars/HATWEY_lioiGMv.webp", "biography": "Was a mathematician studying Algebraic topology until the end of 2022. Have been a maintainer of Pyodide since the beginning of 2021. Since 2023, working at Cloudflare on Python workers. Also a maintainer of Emscripten, the Rust Emscripten target, wasm-bindgen, and various other Web Assembly ecosystem tools.", "public_name": "Hood Chatham", "guid": "e217f8b7-43fa-5b84-858c-9415cc9479eb", "url": "https://programme.europython.eu/europython-2026/speaker/HATWEY/"}, {"code": "SNG89Q", "name": "Gyeongjae Choi", "avatar": null, "biography": null, "public_name": "Gyeongjae Choi", "guid": "1837950e-9888-5738-bd4c-81afc35a546b", "url": "https://programme.europython.eu/europython-2026/speaker/SNG89Q/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QHFXXA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QHFXXA/", "attachments": []}], "S3B": [{"guid": "fdfa2e2d-fec9-5a08-af7c-0006f3845c78", "code": "CWBA3L", "id": 91383, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "00:45", "room": "S3B", "slug": "europython-2026-91383-self-hosted-small-models-from-openai-lock-in-to-open-models", "url": "https://programme.europython.eu/europython-2026/talk/CWBA3L/", "title": "Self-Hosted Small Models: From OpenAI Lock-In to Open Models", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Talk (long session)", "language": "en", "abstract": "OpenAI's embedding API is the default for most Python RAG applications, but it creates real problems at scale: data privacy (every document leaves your network), cost (per-token pricing compounds fast), no customization (cannot fine-tune or swap models), and no quality validation. Most teams have never measured whether text-embedding-3-large actually works well for their domain.\n\nOpen embedding models like BGE-M3, GTE-Qwen2, and E5 now match or beat OpenAI on MTEB benchmarks. The problem is not model quality anymore, it is infrastructure: running these models with proper batching, memory management, and quality assurance.\n\nThis talk walks through a practical migration. We start from a typical LangChain app calling OpenAI, switch to self-hosted open models using SIE (an open-source inference server with an OpenAI-compatible endpoint), validate that retrieval quality is maintained using MTEB, and then go beyond what OpenAI offers by adding sparse embeddings for keyword, recall, and cross-encoder reranking for precision.\n\nThe talk is aimed at Python developers who currently use OpenAI embeddings and models and want to understand their options. No prior experience with model serving is required.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8TWA3E", "name": "Filip Makraduli", "avatar": "https://programme.europython.eu/media/avatars/8TWA3E_AUjMuXq.webp", "biography": "Experienced tech speaker and currently founding ML developer relations engineer at superlinked. Industry experience in Machine Learning, AI, and Data Science as well as a masters degree from Imperial College London.", "public_name": "Filip Makraduli", "guid": "eaca2b12-948b-55d2-8b7d-250373ef728f", "url": "https://programme.europython.eu/europython-2026/speaker/8TWA3E/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CWBA3L/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CWBA3L/", "attachments": []}, {"guid": "694554ee-d0a6-5591-a62d-489d2f00bf73", "code": "AGX8D9", "id": 89176, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S3B", "slug": "europython-2026-89176-deploying-python-web-apps-in-2026", "url": "https://programme.europython.eu/europython-2026/talk/AGX8D9/", "title": "Deploying Python Web Apps in 2026", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Deploying a Python web app is deeply confusing for newcomers, but it doesn't have to be! In this talk, I'll provide an overview of the entire process, with visuals and code, to demystify it and share hard-won lessons along the way.\n\nWe will start with a high-level overview of the architecture underpinning deployment: web servers vs. app servers, queues, security considerations, databases, caching, environment variables, and more. Then we will discuss Python-specific aspects, such as how WSGI (PEP 333) standardized the process across all frameworks. Finally, we will review a deployment checklist for Django, Flask, and FastAPI, highlighting where they overlap and where they differ.\n\nThe goal of this talk is to explain how web deployments work under the hood, highlighting the Python-specific technical underpinnings that enable a knowledgeable developer to quickly deploy any Python web app, whether using FastAPI, Django, or Flask.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "Z38FJK", "name": "Will Vincent", "avatar": "https://programme.europython.eu/media/avatars/Z38FJK_ZjSOeg9.webp", "biography": "I'm a Developer Advocate at PyCharm/JetBrains and a longtime member of the Django community. I've written three books on Django, co-host the Django Chat podcast, and co-write the Django News Newsletter. In the past, I've served as a Django Board Member (2020-2022) and was recently named a Python Software Foundation Fellow.", "public_name": "Will Vincent", "guid": "667f56f9-0d24-5cd2-aa20-24c25ad8107f", "url": "https://programme.europython.eu/europython-2026/speaker/Z38FJK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/AGX8D9/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/AGX8D9/", "attachments": []}, {"guid": "1f5d900e-bc86-5659-b1d1-c92e10d1d46a", "code": "YKWMBZ", "id": 90910, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S3B", "slug": "europython-2026-90910-django-s-magic-fastapi-s-reality-test-isolation-at-scale", "url": "https://programme.europython.eu/europython-2026/talk/YKWMBZ/", "title": "Django\u2019s Magic, FastAPI\u2019s Reality: Test Isolation at Scale", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Your FastAPI + SQLAlchemy tests pass alone but fail together. Data leaks between tests, and cleanup becomes slower. Meanwhile, it seems effortless in Django. Why?\n\nThis isn't a framework war - we'll dig into what Django actually does behind the scenes to keep the database clean between tests and why that approach isn\u2019t straightforward to replicate in a typical SQLAlchemy setup.\n\nWe'll explore common cleanup strategies like recreating schema, truncating, transaction wrapping or template databases and benchmark how they scale as your test suite grows. \n\nYou'll leave with a clear understanding of why this problem exists and practical, benchmarked options to keep your test suite fast and data isolated.\n\nAimed at intermediate Python developers comfortable with writing tests and familiar with basic database concepts like transactions.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9PKN9W", "name": "Maciej Sobczak", "avatar": "https://programme.europython.eu/media/avatars/9PKN9W_RMsHlYs.webp", "biography": "Maciej is pretty much as regular as the next developer. Feels best as jack of many trades. Loves to share his knowledge and make better tools for people.", "public_name": "Maciej Sobczak", "guid": "63d68f0c-837b-5d61-afb2-1c41c6377c10", "url": "https://programme.europython.eu/europython-2026/speaker/9PKN9W/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/YKWMBZ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/YKWMBZ/", "attachments": []}, {"guid": "9b5e5eb5-9ea5-5377-a9c5-a6ed60eafdf8", "code": "E3GVVR", "id": 91008, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91008-surviving-llm-traffic-spikes-routing-rate-limits-and-failover-in-python", "url": "https://programme.europython.eu/europython-2026/talk/E3GVVR/", "title": "Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python", "subtitle": "", "track": "DevOps, Cloud, Scalable Infrastructure", "type": "Sponsored", "language": "en", "abstract": "Your team ships an AI feature and users love it. Then one viral post turns \"normal load\" into hundreds of LLM requests per second.\n\nLLM calls don't behave like traditional API requests. They're slow (sometimes seconds), expensive, rate-limited by providers, and a single provider outage can take your entire feature down. You can't just \"add more servers.\" You need a routing layer that knows where to send traffic, when to back off, and how to fail without taking everything with it.\n\nIn this talk, we'll walk through the LLM traffic routing architecture we built in Python at Manychat, where we serve AI-powered automation to thousands of Instagram and messaging accounts. Everything we'll show is running in production.\n\nWe'll cover the core gateway patterns for multi-provider LLM traffic, implemented using LiteLLM Router as a reference design.\n\nBy the end, you'll walk away with:\n\n- A weighted routing blueprint you can adapt to your own provider mix\n- Fallback and cooldown rules designed to survive real outages\n- Practical rate limiting (requests and tokens) with retry backoff\n- The monitoring baseline (latency, tokens, errors by provider, weight drift) to catch issues before they cascade\n- A checklist for rolling this out safely, incrementally", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YHZWL7", "name": "Sergi Porta", "avatar": "https://programme.europython.eu/media/avatars/YHZWL7_UT9dhE6.webp", "biography": "Sergi Porta is a Python Team Lead at Manychat, where he leads the integration of AI features into the Manychat product, assembled a team of Python developers from scratch, and makes the architectural decisions behind a system that powers millions of interactions between accounts and their subscribers. His role combines technical leadership, onboarding, and helping the team grow. Previously he was an Engineering Manager at a medical imaging company, first engineer at an early-stage startup, and started his career as a software engineer at HP. 10+ years across healthcare, consumer tech, and developer tooling, with a strong interest in engineering management and helping teams perform at their best.", "public_name": "Sergi Porta", "guid": "d98f8e5e-2771-5771-b023-e9bd588c3d96", "url": "https://programme.europython.eu/europython-2026/speaker/YHZWL7/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/E3GVVR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/E3GVVR/", "attachments": []}, {"guid": "7c878163-8c46-54f7-b58d-38d435741dc0", "code": "93XE3S", "id": 91786, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91786-what-is-this-footgun-called-unittest-mock-and-how-to-avoid-misusing-it", "url": "https://programme.europython.eu/europython-2026/talk/93XE3S/", "title": "What is this footgun called unittest.mock, and how to avoid misusing it", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "Has this ever happened to you? You're happily coding a new feature in your Python project, and at some point, you make a hasty call:\n\n```\nself._thing.do_someting(rnicro_meters=10)\n```\n\nYou've written unit tests for it, including an assertion line:\n\n```\nmock_do_someting.assret_called_once_with(rnicro_meters=10)`\n```\n\nThe tests pass, the CI is green, the PR is reviewed and merged. But some time later, the service crashes because the real method does not have the `rnicro_meters` keyword argument in the first place. What happened? And more importantly, did you notice any of the mistakes above? This is a problem we've faced more than a few times over the past few years, and that's a few too many.\n\nUnit tests are crucial in any sort of Python development, from small libraries to large distributed systems. `unittest.mock` is used to isolate dependencies and mock external calls in order to keep the tests simple and focused. But mistakes can slip by (e.g.: attribute typos, wrong keyword arguments, wrong patch locations), just like the three mistakes above, leading to false positive tests and a false sense of confidence in our code quality. This can happen because `Mock` and `MagicMock` silently auto-creates attributes on the fly, even when those attributes do not exist on the real object. These issues become even more pronounced as dependencies change and projects evolve.\n\nIn this session, we\u2019ll look at why these false positives happen, and how to avoid them. Topics include:\n\n- Understand how `Mock` and `MagicMock` allow invalid attributes and calls.\n- Common pitfalls and anti-patterns with `Mock`, `MagicMock`, and `patch`.\n- Using `spec`, `spec_set`, and `autospec` to force mocks to match real objects.\n- Ensuring patched functions and methods have their signatures validated.\n- How to avoid patching the wrong import path.\n- Introducing guardrails in existing projects (e.g. OpenStack\u2019s approach) without rewriting the entire test suite.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LLRS88", "name": "Claudiu Belu", "avatar": null, "biography": "Open source enthusiast\nOpenStack contributor\nOpenStack stable core maintainer (Nova, 2014)\nOpenStack Project Team Lead (Winstackers, 2015)\nKubernetes Tech Lead (sig-windows, 2021)", "public_name": "Claudiu Belu", "guid": "42baa263-d38a-59c3-bfcf-f677dc4d9631", "url": "https://programme.europython.eu/europython-2026/speaker/LLRS88/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/93XE3S/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/93XE3S/", "attachments": []}, {"guid": "e2bc6045-a4a6-5a11-bd27-4b0b62a17413", "code": "SASJQU", "id": 91687, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91687-flying-in-formation-with-python-threading-and-ros2-parallelism", "url": "https://programme.europython.eu/europython-2026/talk/SASJQU/", "title": "Flying in Formation - with Python Threading and ROS2 Parallelism", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "Coordinating a swarm of drones to autonomously allocate tasks,\nbid on them in real time, and execute multi-robot formations\nsounds like science fiction \u2014 but it is entirely possible\nwith Python, a handful of threading primitives, and ROS2's\nMultiThreadedExecutor.\n\nThis talk walks through the concrete implementation challenges\nof building a decentralised auction-based task allocation\nsystem for a swarm of four Crazyflie UAVs. The focus is on\na problem that trips up almost every robotics engineer who\ngraduates from tutorials to real deployments: what happens\nwhen your system has to wait for external, asynchronous\nevents \u2014 bids from four robots, assignment confirmations,\nformation completion signals \u2014 without blocking the entire\nnode and without introducing race conditions or deadlocks?\n\nWe will explore how Python's threading.Event and Lock\nprimitives were used alongside ROS2's MultiThreadedExecutor\nand ReentrantCallbackGroup to implement a synchronized\nbid-collation protocol, a global assignment barrier, and\na concurrent multi-goal formation controller \u2014 all running\nin parallel on a single laptop while communicating with\nphysical drones over radio.\n\nYou will leave with a clear, transferable mental model\nfor combining Python threading with ROS2 callback groups,\npractical patterns for synchronizing distributed asynchronous\nevents in real-time systems, and an honest account of what\nbreaks in the real world (and why).", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WWYK7X", "name": "DEBORAH E DANJUMA", "avatar": "https://programme.europython.eu/media/avatars/WWYK7X_NHz3xpq.webp", "biography": "Deborah Danjuma is a Robotics Engineering master\u2019s student specializing in intelligent field robotic systems, with a strong focus on autonomous navigation, perception, and embedded systems. She holds a Bachelor\u2019s degree in Mechanical Engineering, graduating as the best student of her class with a perfect 5.00/5.00 GPA. Her technical work spans ROS (Noetic and Humble), C++, Python, MATLAB, microcontroller programming (STM32, ESP32), and simulation-driven robotics development. Deborah has hands-on experience in motion planning, SLAM, control systems, and multi-robot coordination, and she actively builds and tests algorithms in both simulation and real robotic platforms. \nBeyond robotics, Deborah is the co-author of 4.49 to 5.0, a book helping university students achieve academic excellence. She is currently based in Zagreb, Croatia.", "public_name": "DEBORAH E DANJUMA", "guid": "2eefc763-2e13-5bac-a82d-e05c16d78175", "url": "https://programme.europython.eu/europython-2026/speaker/WWYK7X/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SASJQU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SASJQU/", "attachments": []}, {"guid": "1dbd6886-0276-536a-bc7d-2985b4729330", "code": "3FW7UF", "id": 91399, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91399-python-learning-that-fits-teen-life", "url": "https://programme.europython.eu/europython-2026/talk/3FW7UF/", "title": "Python Learning that fits Teen Life", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Talk", "language": "en", "abstract": "Coding often looks boring or challenging at the beginning, but the more we code, the more it becomes interesting, and we hope to be better in it. From my background, schools don\u2019t always teach the exciting ways for us to learn coding, which makes many teenagers of my age not realise how simple Python programming can assist them in real life and day-to-day activities. Also, the adults within the Python community don\u2019t know that the future of Python programming depends on bringing new and young beginners like me into the community at an early stage, so this session discusses how teenagers can use their communication interests in learning Python.\n\nLearning Python at a young age can expose us to various skills and help us develop our reasoning, as teenagers face a lot of distractions today through social media chats. Showing how Python can be learned through simple chat interactions makes Python programming more accessible and friendly.\n\nAs a teenager and beginner myself, I have an idea of how teenagers chat regularly on phones and applications, so chatting can also be a way of learning Python, so schools and communities like Python can discover this method to introduce Python to teenagers as a beginner. Python doesn\u2019t need to be scary; it can feel like chatting with a friend who explains things step by step. By combining Python with conversational learning, we can remove fear, build confidence, and make coding a normal part of teenage life.\n\nThis session will expose how teenagers can use simple conversation in WhatsApp to ask questions and learn Python as a chat. The audience will understand the tools and techniques for introducing Python to young people in a way that fits their communication style and how conversational learning makes Python more fun and less intimidating.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3LKBHX", "name": "Oladapo Jesusemilore Jael", "avatar": "https://programme.europython.eu/media/avatars/3LKBHX_3YFVRJj.webp", "biography": "A teen, a student and a beginner with the quest for Python knowledge. A teen, a student and a beginner with the quest for Python knowledge.", "public_name": "Oladapo Jesusemilore Jael", "guid": "c05c70a6-c726-5f1b-9cfd-874778d69c50", "url": "https://programme.europython.eu/europython-2026/speaker/3LKBHX/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3FW7UF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3FW7UF/", "attachments": []}], "Glass room": [{"guid": "e306f578-ad72-515e-9a92-7cdcafe19f93", "code": "3VEJRA", "id": 101493, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "duration": "02:30", "room": "Glass room", "slug": "europython-2026-101493-create-your-own-musical-instrument-with-custom-gesture-control", "url": "https://programme.europython.eu/europython-2026/talk/3VEJRA/", "title": "Create your own musical instrument with custom gesture control", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Tutorial", "language": "en", "abstract": "This will be a hands-on workshop during which we will build a digital musical instrument controlled by personalised gestures.\n\nWe will make a standalone desktop application with a web UI which embeds an existing machine learning model for timbre transfer. We will look at an example of a meaningful control of the model for creative use in interactive, real-time sound generation. \n\nFinally, we will use interactive machine learning to define a personalised way of controlling the instrument based on a few examples provided on the fly.\n\nWorkshop goals:\n\n- Demonstrate a practical example of creating a musical instrument with custom gesture control.\n- Walk you through a typical architecture of a real-time system with interactive control.\n- Show you how to run an existing machine learning model for timbre transfer on your computer and embed it in a desktop application.\n- Discuss ways for incorporating interactive methods for augmenting user interactions.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XCQLHK", "name": "Anna Wszeborowska", "avatar": null, "biography": "Anna is a software developer and an academic researcher focusing on interactive real-time systems for music and audio. She draws upon over a decade of practical experience in the music tech industry, having worked on software and hardware products which have become industry standards for performing electronic music on stage. For the last couple of years she has been associated with University of the Arts London, where she has worked as a researcher on a project promoting ethical use of AI in creative music practice, funded by Responsible AI UK.\n\nAnna has been involved with multiple mentoring initiatives for groups underrepresented in tech, striving to empower marginalised communities and help them advance in their practice.", "public_name": "Anna Wszeborowska", "guid": "fa474ecb-03bb-54aa-b053-096dcad8d7e0", "url": "https://programme.europython.eu/europython-2026/speaker/XCQLHK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3VEJRA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3VEJRA/", "attachments": []}, {"guid": "559f06b9-31f9-59dd-830a-c13674a75ef2", "code": "PXRCR9", "id": 101789, "logo": null, "date": "2026-07-16T13:20:00+02:00", "start": "13:20", "duration": "01:00", "room": "Glass room", "slug": "europython-2026-101789-pyladies-lunch", "url": "https://programme.europython.eu/europython-2026/talk/PXRCR9/", "title": "PyLadies Lunch", "subtitle": "", "track": null, "type": "Coffee Break", "language": "en", "abstract": "We\u2019re excited to announce a range of events for underrepresented groups in computing this year! \ud83c\udf89 Whether you\u2019re new to PyLadies or a long-time supporter, we warmly welcome you to join us and be part of our supportive community.\n\nJoin us for a special lunch event aimed at fostering community and empowerment in tech. Enjoy meaningful conversations and networking opportunities.\n\n    Location: Red Carpet (Second Floor)\n    Time: Thursday 16th of July at 13:15", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PXRCR9/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PXRCR9/", "attachments": []}, {"guid": "12220bb9-91d7-5e97-ad60-1c4625af3bb0", "code": "CERV3F", "id": 101696, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "duration": "02:00", "room": "Glass room", "slug": "europython-2026-101696-leading-under-pressure", "url": "https://programme.europython.eu/europython-2026/talk/CERV3F/", "title": "Leading Under Pressure", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Conference Workshop", "language": "en", "abstract": "Teams are getting leaner, context switching is constant, and expectations stay high even when clarity is low. Under that pressure, many of us start reacting instead of leading: stepping in too often, firefighting instead of thinking, and quietly carrying load that was never ours to hold.\n\nYou do not need a title for any of this to apply. Leadership shows up in how you respond when things get tense, how you support the people around you, and where you choose to spend your finite energy.\n\nThis workshop is a space to notice what pressure does to your leadership, and to practise doing something different. \n\n## Designed for\n\n- Engineers and ICs who find themselves leading without a formal title\n- People who care about their teammates and want to stay effective over time\n- Anyone in a lean, fast-moving environment who keeps ending up as the one who absorbs the pressure\n- Folks who are often the only one like them in the room, and carry extra invisible load because of it\n\nNo management experience required.\n\n## What we will explore\n\nLeading yourself under pressure: how urgency and ambiguity shape your default responses. Learning to slow down enough to create space to think, and noticing when a question helps more than jumping in with an answer.\n\nSupporting others without taking over: helping a teammate without rescuing them or quietly absorbing their work. Framing problems as shared instead of solving them alone. Building trust when clarity is low.\n\nStaying strategic under pressure: understanding where your influence actually flows, with or without authority. Connecting day-to-day reality to the bigger picture, and choosing where to put your energy instead of trying to hold everything.\n\n## What you will take away\n\nClearer insight into how pressure shapes your leadership. Practical experience using questions and framing to grow agency in the people around you. A better sense of where to focus next: on yourself, the people around you, or the wider system. And one concrete move to try in the next two weeks.\n\n## Format\n\nA two-hour interactive workshop. Short input bursts, hands-on exercises, solo reflection, and peer learning, using the group as a space to think together about real leadership challenges.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NMACLQ", "name": "Tereza Iofciu", "avatar": "https://programme.europython.eu/media/avatars/NMACLQ_7YAZwK6.webp", "biography": "Tereza Iofciu is a data and AI expert, leadership coach, and PSF Fellow with 15+ years of experience leading data and product teams at neuefische, FREE NOW, and New Work (XING). She helps professionals lead and adapt in the age of AI through her Data Diplomat Framework\u2122, bridging technical depth with human leadership.", "public_name": "Tereza Iofciu", "guid": "ee9a3bd1-8053-5158-944a-04ca5fbc4b70", "url": "https://programme.europython.eu/europython-2026/speaker/NMACLQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CERV3F/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CERV3F/", "attachments": []}], "Poster Hall A": [{"guid": "e7cf5b8f-4462-5daf-9ac8-671de5bbb82f", "code": "9URK9U", "id": 91425, "logo": null, "date": "2026-07-16T13:15:00+02:00", "start": "13:15", "duration": "01:00", "room": "Poster Hall A", "slug": "europython-2026-91425-how-we-write-unit-test-in-my-team-in-openchip", "url": "https://programme.europython.eu/europython-2026/talk/9URK9U/", "title": "How we write unit test in my team in Openchip", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Poster", "language": "en", "abstract": "Have you ever wondered how to write good unit tests?\nDo you know the best practices for unit testing?\nOr maybe you\u2019re already using unit tests in your project and want to see how others approach them?\n\nIf the answer to any of these questions is yes, this talk is for you. During the session, you\u2019ll learn how to write proper unit tests, discover good testing practices, learn to distinguish mocks from stubs, see examples of using dependency injection to improve testability, and find out what pure functions are and why they\u2019re easier to test.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PHABML", "name": "Jan Koprowski", "avatar": null, "biography": "I'm big fan of teaching people and sharing my experience and knowledge regarding Python, unit testing and TDD. I'm trainer in my company's team.", "public_name": "Jan Koprowski", "guid": "c80e19fc-fca5-595e-8e4e-bd1d0af6250a", "url": "https://programme.europython.eu/europython-2026/speaker/PHABML/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/9URK9U/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/9URK9U/", "attachments": []}], "Poster Hall B": [{"guid": "580b7a1f-ecdb-5a01-9fab-7e721683bbd1", "code": "SEJYRG", "id": 100248, "logo": null, "date": "2026-07-16T13:15:00+02:00", "start": "13:15", "duration": "01:00", "room": "Poster Hall B", "slug": "europython-2026-100248-write-async-get-sync-for-free", "url": "https://programme.europython.eu/europython-2026/talk/SEJYRG/", "title": "Write async. Get sync for free.", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Poster", "language": "en", "abstract": "When you write a Python library, you have a dilemma. Ship\nasync-only? Ship blocking-only? Or write everything twice and watch both copies drift?\n\n[Synchronicity](https://github.com/modal-labs/synchronicity) removes this dilemma. Write your library once (in async) and get a blocking\ninterface for free, while avoiding the boilerplate and limitations of `asyncio.run()` wrappers. We\u2019ll talk through how to handle persistent connections, async generators, clean tracebacks, type hints and more.\n\nWe've used it in production at Modal for years, and it's fully open source.\nWe hope it can save you from writing your own library twice!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VG83KQ", "name": "Thom Lane", "avatar": "https://programme.europython.eu/media/avatars/UN9NUA_hyjQpXx.webp", "biography": "Thom has spent the last decade building and scaling machine learning systems in Python. He is a Member of Technical Staff at Modal, where he develops new Sandboxes\ufffc features, with a focus on improving the experience for reinforcement learning workloads. At AWS, Thom worked on deep learning frameworks and helped new users get started with them too, becoming a certified Coursera instructor along the way.", "public_name": "Thom Lane", "guid": "8f2ecf26-41ea-55a1-9113-a912f131ae31", "url": "https://programme.europython.eu/europython-2026/speaker/VG83KQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SEJYRG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SEJYRG/", "attachments": []}], "Poster Hall C": [{"guid": "69648640-f770-5d19-9736-62fb0c79ccdb", "code": "8HBEYS", "id": 91004, "logo": null, "date": "2026-07-16T13:15:00+02:00", "start": "13:15", "duration": "01:00", "room": "Poster Hall C", "slug": "europython-2026-91004-python-syntax-diagram", "url": "https://programme.europython.eu/europython-2026/talk/8HBEYS/", "title": "Python Syntax Diagram", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Poster", "language": "en", "abstract": "The poster shows a [railroad diagram](https://en.wikipedia.org/wiki/Syntax_diagram) of the entire [Python grammar](https://docs.python.org/3/reference/grammar.html).\n\nIt allows exploring subtle details of the language, like when parentheses are required around generator expressions, tuples or \u201cwalrus\u201d assignment operations; what's the precedence of various operators; or what kinds of arguments are possible in function definitions and calls.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SCAGQW", "name": "Petr Viktorin", "avatar": "https://programme.europython.eu/media/avatars/SCAGQW_4SZGMPm.webp", "biography": "As a CPython core developer, review pull requests, triage issues, write PEPs, implement features -- and host live streams nerding out about Python's grammar and documentation.\n\nOffline, I spend time with my family -- or with a screwdriver, saw, or soldering iron.", "public_name": "Petr Viktorin", "guid": "d4a187dd-5d20-5bc6-92ff-f908c22dd8e9", "url": "https://programme.europython.eu/europython-2026/speaker/SCAGQW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/8HBEYS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/8HBEYS/", "attachments": []}]}}, {"index": 5, "date": "2026-07-17", "day_start": "2026-07-17T04:00:00+02:00", "day_end": "2026-07-18T03:59:00+02:00", "rooms": {"S1": [{"guid": "1af18a3b-6d3c-5427-8bf3-c05df305f897", "code": "JGBFDF", "id": 97554, "logo": null, "date": "2026-07-17T08:00:00+02:00", "start": "08:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-97554-friday-registration-welcome-tbd", "url": "https://programme.europython.eu/europython-2026/talk/JGBFDF/", "title": "Friday Registration & Welcome @ TBD", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.\nYou can pick up your badges at any time during the week as long as we are open!\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!\nEnjoy the conference!", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/JGBFDF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/JGBFDF/", "attachments": []}, {"guid": "5895d01b-bd5f-506b-ab3a-4fde62300f51", "code": "SXBNNA", "id": 97555, "logo": null, "date": "2026-07-17T08:45:00+02:00", "start": "08:45", "duration": "00:15", "room": "S1", "slug": "europython-2026-97555-friday-s-morning-announcement", "url": "https://programme.europython.eu/europython-2026/talk/SXBNNA/", "title": "Friday's Morning Announcement \u23f0", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to the third day of conference!\nYesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.\nJoin us to get an update and few more announcements. Come by and find out what is going to happen today.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SXBNNA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SXBNNA/", "attachments": []}, {"guid": "2b70aa30-e54c-5f3b-9645-9f00ab8a0687", "code": "KH9EQN", "id": 98027, "logo": null, "date": "2026-07-17T09:00:00+02:00", "start": "09:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-98027-securing-python-for-the-next-decade", "url": "https://programme.europython.eu/europython-2026/talk/KH9EQN/", "title": "Securing Python for the next decade", "subtitle": "", "track": "~ None of these topics", "type": "Keynote", "language": "en", "abstract": "The world of open source is undergoing numerous seismic changes, and Python is no exception. This keynote will focus on security: we'll extrapolate (and speculate) on the task of securing Python for the next decade of usage by open source maintainers, corporations, tinkerers, vibe coders, and everyone in between. We'll also cover how we expect attacker behaviors to shift, and how those shifts will require us to discard traditional assumptions as defenders.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "MAGP3T", "name": "William Woodruff", "avatar": "https://programme.europython.eu/media/avatars/NZJKZZ_lzeEyuX.webp", "biography": "William Woodruff is a Member of Technical Staff at OpenAI (Astral), where he works on high-performance, secure tooling for the Python ecosystem. Previously he worked on similar tooling at Astral; prior to that he was an Engineering Director at Trail of Bits, where he was responsible for high-impact security contributions to open source ecosystems via the open source ecosystem security group.\n\nOutside of work, William is the primary maintainer of zizmor, a maintainer of Homebrew, Sigstore, and pip-audit, and a long-term contributor to Python cryptography (PyCA) and packaging (PyPI, PyPA). He maintains a website at yossarian.net and a blog at blog.yossarian.net.", "public_name": "William Woodruff", "guid": "ce61a8b3-74ab-5d0b-ac8a-95fc609f1cba", "url": "https://programme.europython.eu/europython-2026/speaker/MAGP3T/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/KH9EQN/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/KH9EQN/", "attachments": []}, {"guid": "221ca5f5-6e16-5ddb-b6f6-4b191ac976d8", "code": "KFQN3X", "id": 88905, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "duration": "00:30", "room": "S1", "slug": "europython-2026-88905-the-coolest-feature-in-python-3-14-sys-remoteexec", "url": "https://programme.europython.eu/europython-2026/talk/KFQN3X/", "title": "The coolest feature in Python 3.14: sys.remote_exec()", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Have you ever needed to debug a live Python process but couldn't restart it? Didn't want to redeploy with debug flags or manage sidecar containers just to debug your application?\n\nIn this talk, I'll show you why `sys.remote_exec()` is one of the coolest features of Python 3.14! I'll cover the basics of Python's new remote debugging capabilities and demonstrate how `sys.remote_exec()` can be combined with debugpy (an implementation of the Debug Adapter Protocol) to provide full IDE debugging experiences for live processes. I'll share what I learned building a tool that uses these primitives to attach debuggers to FastAPI applications running in local Kubernetes clusters.\n\nBeyond debugging, we'll explore other use cases for `sys.remote_exec()` and how you can apply the feature to solve problems in your own work!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HB3VXK", "name": "Savannah Ostrowski", "avatar": "https://programme.europython.eu/media/avatars/HB3VXK_d1udjFw.webp", "biography": "Savannah Ostrowski is a Python Steering Council member, the Python 3.16 & 3.17 Release Manager, and a CPython Core Developer. She contributes across several areas of CPython, including the JIT compiler, the argparse module, WASI support, and more. She also works at FastAPI Labs, where she builds FastAPI Cloud and contributes to open source projects across the Python ecosystem.", "public_name": "Savannah Ostrowski", "guid": "64714905-2737-5b74-ac09-c73abd715b3d", "url": "https://programme.europython.eu/europython-2026/speaker/HB3VXK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/KFQN3X/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/KFQN3X/", "attachments": []}, {"guid": "d864f5fa-f469-557f-b8b1-624fb1d540da", "code": "ARRMQR", "id": 91397, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "duration": "00:30", "room": "S1", "slug": "europython-2026-91397-pointers-objects-and-references-how-python-manages-memory", "url": "https://programme.europython.eu/europython-2026/talk/ARRMQR/", "title": "Pointers, Objects, and References - How Python Manages Memory", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Most Pythonistas handle Python objects every day, but sometimes, the bugs and performance surprises we encounter happen because we misunderstand how Python actually manages memory. \nVariables are not just containers(which I previously thought), objects are not copied by default, and references behave differently than what many developers expect \u2014 especially as the codebases we work with grow.\nIn this talk, we will build an accurate mental model of how Python handles objects, references, and memory at runtime; we will look at what really happens when objects are created, passed to functions, mutated, and destroyed. \nWe will also look at how reference counting works at a high level, why mutability matters, and how these fundamental concepts come up when we examine debugging and performance in our Python code.\nAfter this session, developers will be more confident about their understanding of Python behaviour, avoid common pitfalls, and better understand what the profilers and debuggers are really saying.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SKGET8", "name": "Abigail Afi Gbadago", "avatar": "https://programme.europython.eu/media/avatars/SKGET8_zVGqPJl.webp", "biography": "Abigail Afi Gbadago is a software engineer and a dev advocate.\n\nShe contributes to the community and tech through her roles as Vice President of the Django Software Foundation Board, a Fellow of the Python Software Foundation, Program Chair for DjangoCon US 2025, ex-Regional Executor for Black Python Devs, and Microsoft MVP for the Python and Web Track.", "public_name": "Abigail Afi Gbadago", "guid": "8823042c-4d7e-5f42-8d0f-578bc41ba556", "url": "https://programme.europython.eu/europython-2026/speaker/SKGET8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ARRMQR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ARRMQR/", "attachments": []}, {"guid": "5414a161-92c0-53e2-95dd-427a4c63566c", "code": "B7CMBD", "id": 90895, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S1", "slug": "europython-2026-90895-become-a-python-core-developer-in-3-easy-steps", "url": "https://programme.europython.eu/europython-2026/talk/B7CMBD/", "title": "Become a Python Core Developer in 3 Easy Steps", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Step 1: Fix a bug\nStep 2: ???\nStep 3: Core developer\n\nOk, it's not that simple but it's also not as mysterious as it might seem!\n\nAbout three years ago I fixed an obscure bug in the unittest module. Today, I'm a core developer. This talk is about what happened in between, and how you can start contributing too!\n\nOver the years, I got to work on many different areas of Python. I've fixed bugs in the parser, added import autocomplete to the REPL, worked on gettext tooling, and eventually found my way to the JIT compiler, all things I knew little about before diving in.\n\nGetting started contributing to Python can be intimidating, so I'll share some practical things I learned along the way such as:\n\n- How is the CPython project organized?\n- How do you find something to work on? (and why it doesn't have to be code!)\n- What happens after you submit a PR?\n- How do you navigate a 30 year old codebase without getting lost?\n\nIf you've ever wanted to contribute to Python but weren't sure where to start, this talk is for you.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YX7F3Y", "name": "Tomas Roun", "avatar": "https://programme.europython.eu/media/avatars/YX7F3Y_F4LjhME.webp", "biography": "I am a software engineer at CERN in Geneva, currently working on Indico,\nan open-source software for meeting and conference management and\nalso SWAN, a platform for interactive analysis based on JupyterHub.\n\nMy passion for software and Open Source goes beyond my work. I am an active\ncontributor to many open-source projects such as CPython, Babel and many more.\nIn my free time I also like to design and build mechanical keyboards and print cool things\nwith my 3D printer.", "public_name": "Tomas Roun", "guid": "72c6a8f2-fa60-5b7a-8203-50c9f0c480d3", "url": "https://programme.europython.eu/europython-2026/speaker/YX7F3Y/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/B7CMBD/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/B7CMBD/", "attachments": []}, {"guid": "dad3cd9a-b101-5436-b2bb-228f25295acb", "code": "PWGSJQ", "id": 91593, "logo": null, "date": "2026-07-17T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S1", "slug": "europython-2026-91593-speeding-up-python-with-free-threading-and-mypyc", "url": "https://programme.europython.eu/europython-2026/talk/PWGSJQ/", "title": "Speeding Up Python with Free Threading and Mypyc", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "It\u2019s common to hear complaints about Python being slow. In this talk, I will show how to make _some_ Python programs dramatically faster by using Python 3.14\u2019s free threading and ahead-of-time compilation to C extensions using the mypyc compiler, while staying entirely in Python (and CPython). \n\nFree threading can deliver large speedups for CPU-bound code that can be adapted for parallel execution, while mypyc speeds up workloads that benefit from reduced interpreter overhead and that can use static typing. If each can give a 10x speedup in an ideal use case, can we get a \u201choly grail\u201d 100x speedup by using both?\n\nI\u2019ll introduce several small examples inspired by real-world workloads, measuring and explaining what happens when you apply free threading, mypyc, or both. In practice, relatively few programs are perfect fits for both techniques at once, but when they are, you can get substantial gains. Having both tools available gives you options for attacking a wide range of performance problems.\n\nAlong the way, I\u2019ll cover various bottlenecks you are likely to encounter while optimizing real-world workloads. These often limit performance scaling. I'll explain how to diagnose and improve allocation-heavy code and thread contention caused by reference counting, in particular.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "K7R9XZ", "name": "Jukka Lehtosalo", "avatar": "https://programme.europython.eu/media/avatars/K7R9XZ_aNH2jYr.webp", "biography": "Jukka is the creator of the mypy static type checker, and the co-author of PEPs 484 (which introduced standardized type hints to Python), PEP 544, PEP 586 and PEP 589. He is one of the founders of typeshed. Jukka works as a Staff Engineer at Dropbox. He is currently leading the mypyc compiler project and optimizing the efficiency of production Python services at Dropbox.", "public_name": "Jukka Lehtosalo", "guid": "4014c5ed-92d8-53bb-bdab-949f3e84c883", "url": "https://programme.europython.eu/europython-2026/speaker/K7R9XZ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PWGSJQ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PWGSJQ/", "attachments": []}, {"guid": "ee7cedd9-ce49-5cc8-96b9-9aab05f3ad54", "code": "RGBSS8", "id": 92016, "logo": null, "date": "2026-07-17T13:55:00+02:00", "start": "13:55", "duration": "00:30", "room": "S1", "slug": "europython-2026-92016-lazy-imports-and-the-art-of-interpreter-procrastination", "url": "https://programme.europython.eu/europython-2026/talk/RGBSS8/", "title": "Lazy imports and the art of interpreter procrastination", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "From CLI developers to maintainers of large applications, many Python developers have been bitten by the high overhead of eagerly loading imports. Long start-up times can make it prohibitively costly to run simple commands like --help, and the memory overhead from loading every imported module eagerly can trigger Out-Of-Memory errors in production.\n\nAfter the most discussed PEP thread in the history of discuss.python.org, with hundreds of messages and fierce debate, Python 3.15 finally brings Explicit Lazy Imports to the language. With a simple new keyword, you can now defer module loading until the moment you actually need it. This is one of the most requested performance features in Python's history, and finally it's here.\n\nThis presentation will take you through how we got here and where we're going. We'll look at why existing workarounds never quite worked, and how an earlier proposal (PEP 690) tried to make all imports lazy by default but was rejected. Then PEP 810 emerged with a different approach: explicit, opt-in syntax that the community accepted.\n\nThe heart of this talk is discovering how lazy imports actually work inside the interpreter. We'll trace through the bytecode, see how proxy objects stand in for unloaded modules, and watch the moment when your code first touches a lazy import and the real module snaps into place. You'll also learn about the future tooling that we are baking that will help you adopt this safely in your own projects.\n\nWhether you're a beginner curious about Python's future, someone looking to speed up your CLI tools, or you just want to understand what's happening under the hood, this talk will give you everything you need to start using lazy imports with confidence.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VX8MVF", "name": "Pablo Galindo Salgado", "avatar": null, "biography": "Pablo Galindo Salgado works in the Python team of Hudson River Trading. He is a CPython core developer and a Theoretical Physicist specializing in general relativity and black hole physics. He is currently serving on the Python Steering Council in his 6th term and he is the release manager for Python 3.10 and 3.11. He has also a cat but he does not code.", "public_name": "Pablo Galindo Salgado", "guid": "d9b56eea-ab88-55e1-a386-0e551d3423ce", "url": "https://programme.europython.eu/europython-2026/speaker/VX8MVF/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RGBSS8/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RGBSS8/", "attachments": []}, {"guid": "11810f0f-e5ed-50bf-a6fe-8914f8dcefb6", "code": "QY7PFR", "id": 91380, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "duration": "00:30", "room": "S1", "slug": "europython-2026-91380-conquer-multithreaded-python-with-blanket", "url": "https://programme.europython.eu/europython-2026/talk/QY7PFR/", "title": "Conquer multithreaded Python with Blanket", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "Debugging and testing multithreaded code in Python is so challenging.  How do you create reproducible tests of multithreaded code, when the order of execution changes from run to run?  How do you achieve 100% coverage, when you ship code only called to handle rare, obscure race conditions?  And if you think it's a problem now... just imagine how much worse it's going to become as adoption of \"nogil\" Python grows!\n\nBlanket is here to help.  Come learn how Blanket gives you back control over the order of execution in multithreaded code, enabling you to write deterministic multithreaded tests.  Restore blessed order and determinism to your unit test suite--use Blanket!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9DMGRT", "name": "Larry Hastings", "avatar": "https://programme.europython.eu/media/avatars/9DMGRT_qv4pVKf.webp", "biography": "Larry is a 200 foot assault robot manufactured by Yoyodyne Propulsion Systems, a major US defense contractor. He is suitable for heavy assault against heavily armored stationary targets, like laying siege to a walled city, or protecting supply lines during forward maneuvers.", "public_name": "Larry Hastings", "guid": "2ac0007c-ecec-5d9e-be1b-f7da8c53a07e", "url": "https://programme.europython.eu/europython-2026/speaker/9DMGRT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QY7PFR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QY7PFR/", "attachments": []}, {"guid": "c489b85f-538e-5025-b363-11ed7bef770c", "code": "ZHCNDY", "id": 91752, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "duration": "00:30", "room": "S1", "slug": "europython-2026-91752-defending-open-source-from-ai-slop-a-maintainer-s-practical-guide", "url": "https://programme.europython.eu/europython-2026/talk/ZHCNDY/", "title": "Defending Open Source from \"AI\" Slop: A Maintainer's Practical Guide", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk", "language": "en", "abstract": "Open source maintainers are drowning in a new kind of noise. \"AI\"-generated pull requests \u2014 superficial, poorly reasoned, and submitted without genuine understanding of the codebase \u2014 are consuming review bandwidth that was already scarce. These contributions range from cosmetic \"improvements\" that introduce subtle bugs to elaborate refactorings that no one asked for, all bearing telltale signs of LLM output: confident tone, plausible-looking code, and zero awareness of project conventions.\n\nThis talk presents a practical, battle-tested framework for combating \"AI\" slop without discouraging legitimate contributors. Drawing from real experiences maintaining pip-tools, aiohttp, ansible-core, CherryPy, and other Python projects, I'll share concrete strategies that work today.\n\nFirst, we'll dissect the anatomy of \"AI\" slop PRs \u2014 what they look like, why they pass superficial review, and the hidden costs beyond wasted review time: CI compute waste, security risks from plausible-but-wrong code, and the demoralizing effect on genuine contributors who see low-effort submissions getting attention.\n\nThen I'll walk through a defense-in-depth approach being developed across my projects: updating `CONTRIBUTING.md` with explicit expectations about understanding the codebase before submitting changes; crafting repository-level LLM instruction files (like `AGENTS.md`/`CLAUDE.md`) that steer \"AI\" tools toward project-specific conventions; configuring PR templates to require evidence of human reasoning; and establishing community norms that set quality expectations without being hostile to newcomers.\n\nWe'll also tackle the harder questions: Where is the line between \"AI\"-assisted (the human drives and understands the change) and \"AI\"-generated (the human clicks \"submit\" on LLM output)? How do we preserve the welcoming culture that makes open source special while defending against low-effort spam? What should platforms like GitHub improve for maintainers?\n\nYou'll leave with a ready-to-adapt policy template and configuration files for your own projects.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "AWKFRJ", "name": "Sviatoslav Sydorenko (\u0421\u0432\u044f\u0442\u043e\u0441\u043b\u0430\u0432 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e)", "avatar": "https://programme.europython.eu/media/avatars/AWKFRJ_GocL4js.webp", "biography": "Sviatoslav (webknjaz) is a Principal Software Engineer at Red Hat on the Ansible Core Team. A PyPA member, a CPython Triager, he maintains aiohttp, CherryPy, pip-tools, and many other FOSS Python projects. He authored the PyPA-blessed `pypi-publish` GitHub Action and `alls-green` (adopted by CPython), and designed CPython's current modular CI/CD layout. He is passionate about applying software engineering principles to CI/CD automation and reducing the maintenance burden across the Python ecosystem.", "public_name": "Sviatoslav Sydorenko (\u0421\u0432\u044f\u0442\u043e\u0441\u043b\u0430\u0432 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e)", "guid": "fd51b536-9f7f-55bb-aee8-d6a9e3e9078d", "url": "https://programme.europython.eu/europython-2026/speaker/AWKFRJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZHCNDY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZHCNDY/", "attachments": []}, {"guid": "e0ce07cb-3fc8-56fa-a73a-edde1cc5745f", "code": "8XMJGZ", "id": 96943, "logo": null, "date": "2026-07-17T16:10:00+02:00", "start": "16:10", "duration": "00:45", "room": "S1", "slug": "europython-2026-96943-keynote-6-placeholder", "url": "https://programme.europython.eu/europython-2026/talk/8XMJGZ/", "title": "Keynote 6 - Placeholder", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "\"TBD: Keynote Speaker\"\nDetails coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/8XMJGZ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/8XMJGZ/", "attachments": []}, {"guid": "afb9059f-e139-5e34-8d0d-6248ea07c554", "code": "YUECR3", "id": 97556, "logo": null, "date": "2026-07-17T16:55:00+02:00", "start": "16:55", "duration": "00:30", "room": "S1", "slug": "europython-2026-97556-lightning-talks-friday", "url": "https://programme.europython.eu/europython-2026/talk/YUECR3/", "title": "Lightning talks \u26a1 Friday", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "Enjoy Friday's lightning talks! Short talks about everything by everyone. \n\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\nIf that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that's helping and contributing to our conference and community, or something else!\n\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\nThis time limit is strictly enforced!\n\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\nReply to the acceptance email by 3pm to confirm your spot.\n(If you don't, you lose your spot!)\n\nYou can submit your lightning talk on this form: TBD\nNote that there's a limit of one submission per person.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/YUECR3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/YUECR3/", "attachments": []}, {"guid": "39d00100-c480-57d4-9eff-b250b1a3847b", "code": "UALU9S", "id": 97557, "logo": null, "date": "2026-07-17T17:25:00+02:00", "start": "17:25", "duration": "00:30", "room": "S1", "slug": "europython-2026-97557-conference-closing", "url": "https://programme.europython.eu/europython-2026/talk/UALU9S/", "title": "Conference Closing \ud83d\udc0d", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "What an amazing week!\nWe had two tutorials days and three talks days filled with amazing topics, but more important, amazing people!\n\nOur community is thankful, and want to close the main conference days.\nJoin us to get a nice summary of what was EuroPython 2026.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/UALU9S/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/UALU9S/", "attachments": []}, {"guid": "71faf36d-7266-5e14-8d0f-40a40f81a9ca", "code": "3QHVK3", "id": 97558, "logo": null, "date": "2026-07-17T17:55:00+02:00", "start": "17:55", "duration": "00:30", "room": "S1", "slug": "europython-2026-97558-sprint-orientation", "url": "https://programme.europython.eu/europython-2026/talk/3QHVK3/", "title": "Sprint Orientation \ud83c\udfc3", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Do you know what is a sprint?\n\nThe sprints are activities that will happen during the weekend on a different location.\nDo you know if you can join? and how can you join?\nDo you know all the projects that are participating?\n\nLet us answer these questions and a few more in the Sprint orientation.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3QHVK3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3QHVK3/", "attachments": []}], "S2": [{"guid": "91e99c67-584f-5c1a-9253-cdd71f2af184", "code": "899VGG", "id": 90861, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "duration": "00:45", "room": "S2", "slug": "europython-2026-90861-ai-architecture-katas-learning-by-building-small-models-in-plain-python", "url": "https://programme.europython.eu/europython-2026/talk/899VGG/", "title": "AI Architecture Katas: Learning by Building Small Models in Plain Python", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Talk (long session)", "language": "en", "abstract": "Deep learning is often taught through large frameworks and large models, which is great for getting real projects out of the door, but not always great for learning. This talk is about a different practice: building tiny, runnable versions of various modern architectures with minimal dependencies (mostly Python and NumPy) to learn about the ideas through application.\n\nWe\u2019ll get our feet wet by building a small Transformer end-to-end and learn about the model architecture that started the craze. Then we  switch perspectives, and learn about other architectures, always staying small and nimble, focusing on applying the math and breathing life into formulas. We will look look at multi-scale modelling (in a simplified version of Renormalizing Generative Models), State Spaces, and other scary concepts, until they are not scary at all anymore.\n\nYou\u2019ll leave with a model for turning papers into little prototypes that stay true to ideas and the starting point for your own little lab to build models yourself.\n\nPrerequisites: a basic understanding of NumPy and a willingness to look at Greek letters. No deep learning framework knowledge required.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "MVSZUT", "name": "hellerve", "avatar": "https://programme.europython.eu/media/avatars/MVSZUT_5q9aiJY.webp", "biography": "I\u2019m a technologist at heart, though life often leads me into managerial roles. For the last 15 years, I\u2019ve built products, led and advised companies, published papers, and shared my insights at conferences and in articles on the web.", "public_name": "hellerve", "guid": "744d24cd-f621-5935-b908-444d4b8195dc", "url": "https://programme.europython.eu/europython-2026/speaker/MVSZUT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/899VGG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/899VGG/", "attachments": []}, {"guid": "e7cc3966-2c0a-50d7-a3aa-b24e1a1f8fe7", "code": "7SSS93", "id": 91520, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "duration": "00:30", "room": "S2", "slug": "europython-2026-91520-how-music-generation-actually-works", "url": "https://programme.europython.eu/europython-2026/talk/7SSS93/", "title": "How Music Generation Actually Works", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Talk", "language": "en", "abstract": "Music generation has gone from a research curiosity to something you can try in a browser. Commercial platforms and open source models can produce full songs from a text prompt. Between the hype and the technical papers, it\u2019s hard to get a straight answer about what\u2019s actually going on  under the hood. **This talk is a clear, honest walkthrough of how music generation systems work, in simple language**, no deep machine learning knowledge needed.\n\nWe start with the core challenge: how do you turn a continuous audio signal into something a generative model can work with? Neural audio codecs solve this by compressing waveforms into sequences of discrete tokens, and this idea is the foundation everything else builds on. From there, we look at the two main modeling strategies: token prediction and diffusion. We compare what each does well, where it struggles, and why the choice between them matters.\n\nOn the practical side, we walk through the open source models and Python tools available today, and what you can build with them. Then we  get into evaluation, one of the most important open problems in the field. Current metrics only tell part of the story, and there is no standard benchmark for comparing systems. This has real consequences for how research moves forward and how models get used.\n\nWe close with a discussion that often gets skipped: how artists and musicians see these tools, what legal questions remain around training data and copyright, and why these conversations matter for the future of the field.\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8HVY9P", "name": "Mateusz Modrzejewski", "avatar": "https://programme.europython.eu/media/avatars/8HVY9P_23XrhBv.webp", "biography": "Mateusz Modrzejewski, PhD - software engineer, researcher, conference speaker, author and co-author of papers on music information retrieval and audio AI. Assistant Professor at the Institute of Computer Science of Warsaw University of Technology, where he leads an Audio Intelligence Lab. Previously at Apple (Music Machine Learning team, Apple Music). Has also worked with research and engineering teams of other Fortune 500 companies, providing AI solutions and analytics.\n\nApart from his scientific and engineering work, he is also an experienced touring musician, having performed for audiences of up to 150,000 people and having toured in Poland, China, Vietnam, the UK, Germany, Ukraine, Lithuania and Estonia, among others. Some of the artists he has played with include The Dumplings, Grubson, Marek Dyjak, Ch\u0142opcy Kontra Basia, Maria Sadowska, Pablopavo i Ludziki, Majka Je\u017cowska, Micha\u0142 Milczarek Trio.", "public_name": "Mateusz Modrzejewski", "guid": "720a3670-9a74-5af6-a7d9-cfc97c7d9673", "url": "https://programme.europython.eu/europython-2026/speaker/8HVY9P/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/7SSS93/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/7SSS93/", "attachments": []}, {"guid": "ebff0f1f-2c09-5194-a697-7e409206266f", "code": "PQCHT3", "id": 91711, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S2", "slug": "europython-2026-91711-python-in-the-service-of-justice-modern-analysis-tools-in-forensics", "url": "https://programme.europython.eu/europython-2026/talk/PQCHT3/", "title": "Python in the Service of Justice: Modern Analysis Tools in Forensics", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk", "language": "en", "abstract": "The presentation will discuss practical applications of Python in technologies used in forensic science. In an era of growing cybercrime and digitalization of evidence, Python has become an essential tool for forensics specialists, offering powerful libraries for data analysis, process automation and processing complex information structures. Participants will gain insights into spanning multiple domains of forensic investigation, including:\n\n- mobile device analysis, \n- network traffic examination,\n- memory forensics,\n- automated report generation.\n\nWe will analyze how Python libraries parse SQLite databases in messaging applications like WhatsApp and iMessage, also examine tools for analyzing iOS file formats including PLIST and XML structures and techniques for extracting data from disk images using pytsk3 or libewf. Network analysis will showcase Scapy for packet analysis and Dpkt for parsing capture files, demonstrating how Python analyzes Windows Event Logs and Linux syslog to reconstruct activity timelines.\n\nMemory forensics will be explored through the Volatility Framework for analyzing RAM dumps and recovering volatile data. We will discuss recovering deleted files, extracting metadata, and analyzing browser artifacts. Cryptographic analysis using hashlib will demonstrate integrity verification, encrypted file analysis, and cipher breaking techniques essential for maintaining chain of custody.\nData visualization using Matplotlib, Seaborn, and NetworkX will show how to create compelling visual representations of timelines and connection networks. Automated report generation with ReportLab and python-docx streamlines professional expert report creation.\n\nThe presentation emphasizes real-world applications with dusscussion about Python scripts processing realistic datasets, illustrating how multiple Python tools integrate into comprehensive investigation workflows, demonstrating the synergistic effects of combining different analytical approaches for actionable forensic intelligence.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SGS9LZ", "name": "Aleksander", "avatar": "https://programme.europython.eu/media/avatars/SGS9LZ_uyze1MB.webp", "biography": "Computer Science engineering student at AGH University of Krakow, specializing in software development and data analysis. His technical experience includes working at CERN's Large Hadron Collider monitoring data acquisition systems and troubleshooting complex technical issues. Proficient in multiple programming languages including Python, C++, and PHP. Practical engineering skills with analytical capabilities developed through scientific research and electronics work. An amateur radio operator and active member of technical communities.", "public_name": "Aleksander", "guid": "00312f29-2f88-57ee-8e28-65584f9c06f6", "url": "https://programme.europython.eu/europython-2026/speaker/SGS9LZ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PQCHT3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PQCHT3/", "attachments": []}, {"guid": "79201e8b-05ab-5dd2-bec1-21e09efeee5c", "code": "SQRYJA", "id": 90927, "logo": null, "date": "2026-07-17T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S2", "slug": "europython-2026-90927-international-open-source-your-best-choice-in-interesting-times", "url": "https://programme.europython.eu/europython-2026/talk/SQRYJA/", "title": "International Open Source \u2013 Your Best Choice in Interesting Times", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk", "language": "en", "abstract": "We\u2019re living in weird times. The lines and connections that hold allies and trusted partners together are changing. New barriers to trade, to travel, to collaboration are affecting everything we do. Python is not immune to these shifts, but internationally stewarded open source is still the best choice if you are looking for software that does what it says it does and doesn\u2019t do a lot of things that you don\u2019t want it to do. \n\nLarge open source projects are vetted by multiple stakeholders in different counties, using that software for different purposes and running on all different hardware around the world. Increasingly, large projects like Python come with a Software Bill of Materials and massive new patches coming from brand new contributors are looked at with a little more skepticism than they would\u2019ve been a few years ago. This talk will discuss what\u2019s changed about international collaboration and how Python and other community driven projects are looking at security and collaboration these days.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "XCKH3F", "name": "Deb Nicholson", "avatar": "https://programme.europython.eu/media/avatars/XCKH3F_1s78HKZ.webp", "biography": "Deb Nicholson is an open source software policy expert and a passionate community advocate. She is the Executive Director at the Python Software Foundation which serves as the non-profit steward of the Python programming language. She\u2019s won the O\u2019Reilly Open Source Award and the Award for the Advancement of Free Software for her efforts to broaden the free and open source software movement. She serves on the Board of Directors for the Spritely Institute and on the Advisory Board for Computer Science at Cambridge Rindge and Latin School. She lives with her husband and her lucky black cat in Cambridge, Massachusetts.", "public_name": "Deb Nicholson", "guid": "84820ebd-13d3-55f9-b8c0-93c9f74a09e8", "url": "https://programme.europython.eu/europython-2026/speaker/XCKH3F/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SQRYJA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SQRYJA/", "attachments": []}, {"guid": "d5a06714-3588-57d8-8350-7f03b97cb915", "code": "PBTPJR", "id": 91184, "logo": null, "date": "2026-07-17T13:55:00+02:00", "start": "13:55", "duration": "00:30", "room": "S2", "slug": "europython-2026-91184-how-to-tackle-complex-authorization-logic-and-don-t-go-crazy", "url": "https://programme.europython.eu/europython-2026/talk/PBTPJR/", "title": "How to tackle complex authorization logic (and don't go crazy)", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Managing complex authorization logic can be a nightmare. Without a framework to help you,\nit can soon end up in a mess of if-else statements and partial solutions that will only\ngive you a headache.\n\nOne day, I found myself in that exact situation. I decided to tackle the problem, and\nthat's how I came across the concept of \"policy-based authorization\" or ABAC. While\nthere are available libraries for this, I found them of little help for a large, legacy\ncodebase that is monolithic at its core.\n\nIn my talk, I will share my experience in thinking about this problem and how to use\nABAC to implement a custom solution that fits your needs. I will outline the main\ncomponents of my solution and show how it can be applied to Django views and\nFastAPI endpoints.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "GYPYPG", "name": "Maria Lowas-Rzechonek", "avatar": "https://programme.europython.eu/media/avatars/GYPYPG_XLd2F9i.webp", "biography": "I\u2019ve graduated from philosophy and social science. True to Zed A. Shaw advice from _Learn Python the Hard Way_, I entered the tech world as an anthropologist _with barely enough of the local language to get around and survive_. My next step led me to the Django Girls community - first as an attendee, then as a couch, committer and organizer. At 2016, I was a speaker at DjangoCon Europe. Currently, I\u2019m working as a Python developer at Talixo.\n\nIn my free time, I\u2019m involved in the extreme sports of mountain hiking with kids and dancing flamenco.", "public_name": "Maria Lowas-Rzechonek", "guid": "fc55a53a-9d74-520b-865c-73da679394ee", "url": "https://programme.europython.eu/europython-2026/speaker/GYPYPG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PBTPJR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PBTPJR/", "attachments": []}, {"guid": "444258c3-e267-5f0c-bca4-c6a75f73c200", "code": "T7ATVM", "id": 91690, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "duration": "00:30", "room": "S2", "slug": "europython-2026-91690-how-python-is-democratising-agritech-for-farmers-across-europe", "url": "https://programme.europython.eu/europython-2026/talk/T7ATVM/", "title": "How Python is Democratising Agritech for Farmers Across Europe", "subtitle": "", "track": "Ethics, Social Responsibility, Sustainability, Legal", "type": "Talk", "language": "en", "abstract": "How can you create open digital tools that run on both the Cloud and the Edge for small/medium farms across Greek vineyards, French cattle ranches, and Belgian potato fields? The OpenAgri project, funded by the EU Horizon program and now part of the Linux Foundation's AgStack, has developed reusable Python tools for this purpose. These building blocks, using Python Web frameworks such as Django and FastAPI, are already being tested in 14 real-world sustainability pilots across Europe.\n\nIn this presentation, we will show how Python is helping farmers, from camera-based scouting in vineyards to UHF RFID cattle monitoring, UAV pest detection, IoT smart irrigation, and compost production monitoring. We will talk about what works across different countries, the challenges that arise when your \"data centre is a barn\", and what still needs improvement.\n\nJoin us to hear farming stories from across Europe and learn practical lessons on deploying Python microservices on Edge devices to build a more democratised agritech landscape in Europe.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "JDHQMZ", "name": "Felipe Arruda Pontes", "avatar": "https://programme.europython.eu/media/avatars/JDHQMZ_ivSUdTr.webp", "biography": "Felipe is currently a post-doc researcher at Maastricht University (Netherlands), with a background in Information Systems and more than 13 years of experience in software engineering, specialising in ecologically sustainable distributed computing, stream processing, uncertainty awareness, and computer vision. He is also an Open-Source enthusiast, having contributed to many popular projects over the years.", "public_name": "Felipe Arruda Pontes", "guid": "f5908060-f1e3-57fb-8e12-563659891aae", "url": "https://programme.europython.eu/europython-2026/speaker/JDHQMZ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/T7ATVM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/T7ATVM/", "attachments": []}, {"guid": "c5637783-4f6d-5d62-a9ed-300231bc4a5a", "code": "BPJHWT", "id": 91158, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "duration": "00:30", "room": "S2", "slug": "europython-2026-91158-you-don-t-need-to-solve-it-what-actually-gets-you-hired-in-tech", "url": "https://programme.europython.eu/europython-2026/talk/BPJHWT/", "title": "You Don't Need to Solve It: What Actually Gets You Hired in Tech", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Talk", "language": "en", "abstract": "Here's a secret from someone who's been on every side of the hiring table \u2014 as a candidate who's passed 80%+ of technical processes (including Google and Meta), as a hiring manager who's interviewed hundreds of engineers, and as the former CTO of Codility, the platform that powers technical assessments at thousands of companies worldwide: the interview is not about solving the problem.\nMost candidates walk into coding interviews laser-focused on getting to the correct solution. They grind LeetCode, memorize algorithm patterns, and panic when they hit a wall. But here's what they miss \u2014 interviewers aren't scoring your answer. They're evaluating how you think, how you communicate, and how you handle uncertainty. The candidates who get offers aren't always the ones who solve the problem. They're the ones who make the interviewer want to work with them.\nIn this talk, I'll pull back the curtain on what technical interviews \u2014 both coding and system design \u2014 actually measure. You'll learn why talking through a wrong approach can score higher than silently arriving at the right one, why system design interviews aren't looking for the \"correct\" architecture, and why the soft skills you think are secondary are actually the main event.\nDrawing from nearly 20 years of real-world experience on both sides of the table, I'll share a practical framework for approaching any technical interview with the right mindset. You'll walk away with concrete strategies you can apply at your next interview \u2014 not more algorithm flashcards, but a fundamentally different understanding of what the process is actually testing.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WH7AWZ", "name": "Wojtek Erbetowski", "avatar": "https://programme.europython.eu/media/avatars/WH7AWZ_oNLmmKw.webp", "biography": "Wojtek Erbetowski is a Site Lead and Engineering Manager at Island, where he's building a new engineering hub in Warsaw. Over nearly 20 years in software engineering, he's worn many hats \u2014 from CTO at Codility (the technical assessment platform used by thousands of companies worldwide) and Growbots, to Engineering Manager at Google Cloud, to hands-on engineer across Python, Java, and JavaScript ecosystems. He's interviewed hundreds of software engineers and scaled teams from scratch, including growing one from 10 to 35 people in eight months. Wojtek co-founded L8 Conference for Staff+ engineers and has been organizing meetups and conferences across Poland for over a decade, including Warsaw JUG, Mobile Warsaw, and HackWAW. When not coding or hiring, he's probably running or tending to his small farm in Podlasie.", "public_name": "Wojtek Erbetowski", "guid": "5634f4ee-e700-556e-8487-2afa904dcdab", "url": "https://programme.europython.eu/europython-2026/speaker/WH7AWZ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BPJHWT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BPJHWT/", "attachments": []}], "S4": [{"guid": "48f3c32d-3566-5f7f-94cc-782082d5e9a5", "code": "SGM9SV", "id": 91648, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "duration": "00:30", "room": "S4", "slug": "europython-2026-91648-plugins-in-python-how-it-is-done", "url": "https://programme.europython.eu/europython-2026/talk/SGM9SV/", "title": "Plugins in python - how it is done", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "Have you ever wondered how popular tools like pytest or tox are able to discover and use plugins? \nIn this talk we will learn about entry-points in Python package metadata and how they enable plugin discovery. \nWe will review how some popular projects are using this mechanism to create their plugin systems.\nAfter a walkthrough of the basics, we will explore how you can use this to create a plugin mechanism for your own project. \nWe will explore possible hook implementations and their advantages and disadvantages. \nFinally we will learn how to make plugins discoverable on PyPi.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LZRGS8", "name": "Grzegorz Bokota", "avatar": "https://programme.europython.eu/media/avatars/LZRGS8_aJEO3ta.webp", "biography": "I'm maintainer of the napari project (n-dimensional viewer written in python) and an assistant professor at the University of Warsaw.\n\nIn daily work on improving napari I focus on improving application in the context of performance and stability and improving the API for plugin creators to allow them to ship a better product. \n\nAt university I provide Python and data analysis classes.", "public_name": "Grzegorz Bokota", "guid": "204323e7-12f9-56d2-b978-edea9f314d33", "url": "https://programme.europython.eu/europython-2026/speaker/LZRGS8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SGM9SV/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SGM9SV/", "attachments": []}, {"guid": "f67f5f20-fdca-5266-bdfb-fb474c5b8d27", "code": "TG7YMS", "id": 88895, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "duration": "00:30", "room": "S4", "slug": "europython-2026-88895-refactor-optimize-and-test-crafting-cleaner-python-code", "url": "https://programme.europython.eu/europython-2026/talk/TG7YMS/", "title": "Refactor, Optimize, and Test: Crafting Cleaner Python Code", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "In software development, messy, outdated, or inefficient code is inevitable. We have to deal daily with old code that has not been touched for years, refactoring allows us to keep the code maintainable and easy to extend without altering its functionality, and it plays a crucial role in enhancing maintainability, readability, and performance.\n\nThis session explores the how, when, and why of code refactoring with code smell examples, coupled with practical insights on performance profiling techniques, tools and how it affects Refactoring. Also exploring how testing is very crucial when it comes to Refactoring.\n\nWhether you're dealing with legacy code or looking to enhance your development workflows, this talk equips you with the tools and techniques to write cleaner, more efficient Python code.  \n\nThis session is inspired by Martin Fowler's seminal works on refactoring and Python-specific insights shared at EuroPython 2024.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "DGWNHV", "name": "Mohamed Elmaghraby", "avatar": "https://programme.europython.eu/media/avatars/DGWNHV_LoRWXs1.webp", "biography": "I am a Senior Software Engineer at Bloomberg with five years of engineering experience, including three focused on building and optimizing trading systems in Python. My work centers on system design, refactoring, and performance tuning\u2014turning legacy or complex code into reliable, maintainable, and fast systems. I delivered a couple talks at internal engineering conferences, sharing my experiences with code improvement and optimization workflows.\nWhen I am not writing code (much of the time \ud83d\ude42) I enjoy hiking, practicing origami and riding horses", "public_name": "Mohamed Elmaghraby", "guid": "d7ceb04c-af82-524b-b706-3d43d246b430", "url": "https://programme.europython.eu/europython-2026/speaker/DGWNHV/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TG7YMS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TG7YMS/", "attachments": []}, {"guid": "9d8c7d56-6db7-529b-8a04-7ed76a34a458", "code": "QXZMP8", "id": 98322, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S4", "slug": "europython-2026-98322-python-on-windows-on-arm-ecosystem-enablement-update", "url": "https://programme.europython.eu/europython-2026/talk/QXZMP8/", "title": "Python on Windows on Arm: Ecosystem Enablement Update", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Sponsored", "language": "en", "abstract": "Running Python natively on Windows on Arm requires more than a working interpreter. To have the best developer experience, it depends on compilers, packaging, binary wheels, CI infrastructure, and support from the wider library ecosystem.\n\nThis talk provides a status update of the Python ecosystem on Windows on Arm in 2026, based on ongoing collaboration between the open-source community, Microsoft, and Arm. We will cover CPython support, packaging, wheels, tooling, and CI availability, with a focus on what developers can realistically use today.\n\nUsing widely adopted libraries such as PyTorch as examples, we will show how native Arm support is being enabled and creating better capabilities across the ecosystem, what remaining challenges projects face when supporting Windows on Arm.\n\nThe talk will also cover the developer and CI story enabled by native Arm runners and Windows 11 Arm images on GitHub Actions, and how this infrastructure lowers the barrier for projects to add and maintain Windows on Arm support.\n\nThe goal is to give a snapshot of the current state, highlight the remaining gaps, and explain how contributors and maintainers can participate to the ongoing effort.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NCU7GS", "name": "Diego Russo", "avatar": "https://programme.europython.eu/media/avatars/NCU7GS_zzTxxgX.webp", "biography": "Diego Russo is a CPython core developer and Principal Software Engineer in Arm\u2019s Runtimes team, based in Cambridge, UK. He has been using Python since 2006 and contributing to CPython since 2023, with a focus on interpreter performance, JIT-related work, CI infrastructure, and ensuring CPython and its ecosystem run reliably and efficiently on Arm platforms. His work sits at the intersection of runtime, performance engineering, and large-scale open source collaboration.\nDiego is also a EuroPython organiser and leads the Arm Python Guild, an internal community of more than 1,400 Python developers working across the company.", "public_name": "Diego Russo", "guid": "f59ca2b2-7e74-5503-ae8e-2c1d8eab0630", "url": "https://programme.europython.eu/europython-2026/speaker/NCU7GS/"}, {"code": "KQQQUC", "name": "Gleb Khmyznikov", "avatar": "https://programme.europython.eu/media/avatars/KQQQUC_HTB7h3U.webp", "biography": "Software Engineer at Microsoft. I work on the Python environment for Windows on Arm, PowerToys, Windows developer tools, and the Windows Shell. PWA expert.", "public_name": "Gleb Khmyznikov", "guid": "b9d790b8-c9dd-5088-b474-1c276dcb1d6e", "url": "https://programme.europython.eu/europython-2026/speaker/KQQQUC/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QXZMP8/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QXZMP8/", "attachments": []}, {"guid": "6fbc1c88-2714-5be7-ad06-90e13c7b563c", "code": "BJBKRM", "id": 91682, "logo": null, "date": "2026-07-17T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S4", "slug": "europython-2026-91682-what-i-ve-learned-maintaining-the-mcp-python-sdk", "url": "https://programme.europython.eu/europython-2026/talk/BJBKRM/", "title": "What I've Learned Maintaining the MCP Python SDK", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Talk", "language": "en", "abstract": "After months of maintaining the MCP Python SDK and reviewing many community contributions, I've seen some architectural hiccups in repeat. Developers struggle with questions that seem simple but have nuanced answers: When should one tool become three? When does a server need to split into two? How do you test an MCP server without spinning up a full client? When should you use resources or prompts instead?\n\nIn this talk, we will explore my learnings and understand how to design tool boundaries that scale with your server's complexity, structure your codebase for long-term maintainability, and build a testing strategy for your MCP server that works. I'll share real examples from the wild, both the antipatterns to run away from and the implementations worth adopting.\n\nIn 2026, the MCP Python SDK v2 will bring improved typing, a refined API, and better testing primitives. The architectural decisions you make today will determine whether that migration takes a day or a month.\n\nWhether you're maintaining an internal tool or publishing to the community, you'll leave with a clear framework for evaluating your own server's design and concrete next steps to improve it.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BGPPXA", "name": "Marcelo Trylesinski", "avatar": "https://programme.europython.eu/media/avatars/BGPPXA_lE2zuQw.webp", "biography": "Marcelo Trylesinski is a Senior Software Engineer at Pydantic, maintainer of the MCP Python SDK, Starlette, and Uvicorn. Born in Brazil, now based in the Netherlands. Also known as The FastAPI Expert. \ud83d\ude80", "public_name": "Marcelo Trylesinski", "guid": "83360534-30e0-51c5-8b36-59c32ff4278e", "url": "https://programme.europython.eu/europython-2026/speaker/BGPPXA/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BJBKRM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BJBKRM/", "attachments": []}, {"guid": "9e6fcd1a-e66e-59b0-a23a-4e2974eeec74", "code": "UGLF7Q", "id": 88818, "logo": null, "date": "2026-07-17T13:55:00+02:00", "start": "13:55", "duration": "00:30", "room": "S4", "slug": "europython-2026-88818-everything-you-always-wanted-to-know-about-pandas", "url": "https://programme.europython.eu/europython-2026/talk/UGLF7Q/", "title": "Everything you always wanted to know about pandas*", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "*but were too afraid to ask!\n\n`pandas`, the data wrangling workhorse, will celebrate its *18th year of existence* in 2026. You rely on it daily, but are you truly confident in your code?\n\nThis session is dedicated to the unwritten rules and hidden mechanics that separate a confident user from one who constantly battles warnings and unexpected outputs. We will confront the infamous `SettingWithCopyWarning` that haunts chained operations, clarify the critical differences in *deep vs. shallow copies* and the true cost of using `inplace=True`. We\u2019ll also demystify the complex handling of missing data (`NaN`s) and much more!\n\nCrucially, we will look to the future. `pandas` is engaged in a `DataFrame` library race with newer, high-performance libraries like `polars` and `duckdb`. The latest advancements\u2014`pandas` 2.0 and the new and shiny 3.0, with features like *Copy-on-Write* and *Apache Arrow* integration\u2014are the direct response, promising a future of dramatically improved speed, memory efficiency, and data types.\n\nJoin me to master the crucial concepts of the past and prepare for the performance gains and new behaviors of the future, ensuring your skills stay ahead of the curve. Stop guessing and start mastering `pandas`!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3DAXVG", "name": "Francesco Lucantoni", "avatar": "https://programme.europython.eu/media/avatars/3DAXVG_U2inmlK.webp", "biography": "I\u2019m **Francesco** :) I work as a *Machine Learning Engineer*! \nI work at Prima, the insurance company. I believe in **humor** and **empathy**.\nI play the guitar and I sing in a choir. I also like cooking\u2026 and eating *of course*.", "public_name": "Francesco Lucantoni", "guid": "7528b28f-e891-57e4-8b04-4637104c7a37", "url": "https://programme.europython.eu/europython-2026/speaker/3DAXVG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/UGLF7Q/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/UGLF7Q/", "attachments": []}, {"guid": "ecf38aa9-80eb-54e7-a1e5-caf6fb92abe1", "code": "NTZ7DG", "id": 90626, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "duration": "00:30", "room": "S4", "slug": "europython-2026-90626-from-ticket-taker-to-problem-solver-discovery-for-senior-thinking", "url": "https://programme.europython.eu/europython-2026/talk/NTZ7DG/", "title": "From Ticket Taker to Problem Solver: Discovery for Senior Thinking", "subtitle": "", "track": "Professional Development, Careers, Leadership", "type": "Talk", "language": "en", "abstract": "Have you ever built a feature perfectly, only to discover it solved the wrong problem? Or made architectural decisions that seemed right in isolation but fell apart when business needs changed? You were missing context.\n\nDiscovery workshops give developers what tickets can't: the full picture. This talk explores how proper discovery phase work transforms developers from ticket executors into empowered problem solvers who make better decisions and have more fun doing it.\nDevelopers with discovery artifacts like Business Model Canvas summaries, entity relation diagrams, and mapped user segments write better code. They understand why revenue streams demand certain performance characteristics, how customer segments shape feature priorities, and how key partnerships affect API design.\n\nThis talk walks through the discovery process from a developer perspective. You'll see what artifacts actually help us code, how business requirements map to technical architecture, and why understanding the problem space before touching code prevents costly rework. We'll cover epics, user stories, service architecture, and wireframes, but more importantly, how they connect to real business value.\nDiscovery workshops reduce surprises, empower confident decisions, and accelerate your growth from developer to senior engineer by teaching you to think beyond tickets. Learn how to work smarter by knowing the WHY, not just the WHAT.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ALN8NK", "name": "Damian Wysocki", "avatar": "https://programme.europython.eu/media/avatars/ALN8NK_R12jIxa.webp", "biography": "I\u2019m a Python developer since 2017, I am deeply passionate about my craft and love sharing my knowledge with others. I find joy in constantly learning new things and staying up-to-date with the latest developments in the industry. In fact, I'm so passionate about sharing knowledge that I spend my free time mentoring aspiring developers in Python workshops in my hometown. I'm also an organizer of local IT meetups, where I get to connect with like-minded professionals and discuss the latest trends and challenges in our field.", "public_name": "Damian Wysocki", "guid": "f75bd41a-fb0d-50bd-82cf-20cc3f99d03e", "url": "https://programme.europython.eu/europython-2026/speaker/ALN8NK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NTZ7DG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NTZ7DG/", "attachments": []}, {"guid": "41e3a861-c46f-5746-b9ab-b753359810a3", "code": "LRVCYU", "id": 90871, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "duration": "00:30", "room": "S4", "slug": "europython-2026-90871-modern-tui-with-textual-in-python-building-monokl", "url": "https://programme.europython.eu/europython-2026/talk/LRVCYU/", "title": "Modern TUI with Textual in Python: Building Monokl", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "As developers, our daily workflow is scattered across dozens of platforms: GitHub for PRs and issues, Jira or Linear for tasks, GitLab for CI/CD, and Todoist for personal focus. Constant \"context switching\" between browser tabs is a productivity killer. To solve this, I built **Monokl** - a unified terminal dashboard that aggregates these services into a single, high-performance interface.\n\nIn this talk, we explore how to build complex, API-driven applications using **Textual**, the rapid application development framework for Python. We will dive into the real-world challenges of building Monokl, including:\n\n* **Async integration:** How to fetch data from multiple APIs (GitHub, Atlassian, GitLab, Linear) without freezing the UI.\n* **Component architecture:** Designing reusable widgets for task lists, progress bars, and status feeds.\n* **Reactive UI:** Using Textual\u2019s reactive traits to ensure your dashboard updates not long after a PR is approved or a task is completed.\n* **The TUI advantage:** Why a terminal interface is often faster and more focused than a web-based aggregator.\n\nAttendees will walk away with a clear blueprint for building their own interactive terminal tools and a deep understanding of the Textual framework.\n\n## **Learning Outcomes**\n\n* **Learning Textual:** Understand the core architecture of `App`, `Screen`, and `Widget`.\n* **Managing async data:** Learn patterns for integrating multiple external APIs/CLIs into a single event loop.\n* **Modern layouts:** How to use **TCSS** (Textual CSS) to create beautiful, responsive terminal layouts.\n* **State & reactivity:** How to use `@reactive` attributes to create a UI that stays in sync with background data.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "VKW7DJ", "name": "Piotr Gr\u0119dowski", "avatar": "https://programme.europython.eu/media/avatars/VKW7DJ_f6ZH6iN.webp", "biography": "Piotr Gr\u0119dowski is a software developer with 9 years of experience working mostly with Python and TypeScript. He specializes in building internal tools designed to remove friction from the daily lives of developers. Driven by a natural desire to organize complex systems, he thrives on the challenge of establishing high coding standards and robust automation at scale.\n\nHe is a passionate builder who loves tackling difficult challenges and is constantly learning new technologies to expand his toolkit. As an early adopter of AI, he keeps a close eye on every new model coming out to the market, experimenting with how they can be leveraged to solve real-world problems. When he isn\u2019t deep in code or breaking and fixing systems, he stays active by cycling, 3D printing, and tinkering in his workshop.", "public_name": "Piotr Gr\u0119dowski", "guid": "61333038-5097-5bf8-bc68-f8e535cc5ee9", "url": "https://programme.europython.eu/europython-2026/speaker/VKW7DJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LRVCYU/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LRVCYU/", "attachments": []}], "S3A": [{"guid": "742970df-19a8-539b-9b40-81a4103e38df", "code": "LFSJYL", "id": 91650, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "duration": "00:45", "room": "S3A", "slug": "europython-2026-91650-robot-holmes-and-the-silenced-witness-a-noir-guide-to-real-time-voice-ai", "url": "https://programme.europython.eu/europython-2026/talk/LFSJYL/", "title": "Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Talk (long session)", "language": "en", "abstract": "*The hardships of building End-to-End Voice Assistants in the Wild*\n\nRobot Holmes is back in the mist-choked streets of MLington, but he isn\u2019t working solo.\n\nMeet Zintia, an intern from the Voice Assistant district. She\u2019s helpful, hyper-efficient, and incredibly annoying, providing Holmes with data before he can lift a finger. But Zintia has a secret. The longer she\u2019s on the case, the more of her \"dark side\" emerges. She\u2019s not just hearing the truth; she\u2019s deciding which parts Holmes is allowed to hear.\n\nThis is a story-driven, practical session for anyone tired of \"Hello World\" chatbots. We will move past the hype to look at what it actually take to make End-to-End Voice Assistants work in the real world.\n\nOur Investigation Includes:\n\n- The Gear: How to use E2E speech models like gpt-realtime and integrate them into a production voice interface using FreeSWITCH and Pipecat.\n- The Interrogation: Navigating the hardships of instruction-following, ensuring underlying LLMs stay on path through defined states and agentic flow.\n- The Double-Cross: Identifying and mitigating \"hidden agendas\" - the hallucinations and safety guardrails that can make a voice assistant turn on its user.\n\nExpect live demos, hard-won production lessons, a detective noir story and a blueprint for building voice agents that are fast, fluid, and (mostly) law-abiding.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QFSMUG", "name": "Johannes Kolbe", "avatar": "https://programme.europython.eu/media/avatars/QFSMUG_UekUIHx.webp", "biography": "Hey,\n\nI'm Johannes, a Data Scientist who loves to tell educative stories about Machine Learning methods and AI. Preferably I'm doing this in Open Source communities.\n\nI've been working with Computer Vision for more than 10 years, ranging from designing my own Haar-Cascade face detection, over research on autonomous cars and helping people configure their photobooks automatically, all the way to undestanding the needs of smalle and medium sized enterprises, to create tailored solutions for them.", "public_name": "Johannes Kolbe", "guid": "a736984c-f92b-5669-a637-508ceab0fa3d", "url": "https://programme.europython.eu/europython-2026/speaker/QFSMUG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LFSJYL/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LFSJYL/", "attachments": []}, {"guid": "753941fb-0272-53cf-9b01-894ddc61b329", "code": "FBQQXS", "id": 91308, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91308-breaking-changes-not-great-not-terrible", "url": "https://programme.europython.eu/europython-2026/talk/FBQQXS/", "title": "Breaking changes \u2013 not great, not terrible", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "Do you maintain a Python library, REST API or any other user-facing interface? Breaking changes are frowned upon, but from a a certain project size, they become unavoidable.\n\nHow do you make the breaking changes manageable? How should you version your package / API? Should you put an upper bound on your dependencies?\n\nWe'll discuss deprecation, forward and backward compatibility, upgrade strategies and more, illustrated on real-world examples. Our main focus will be on API changes of Python libraries, but the principles are widely applicable.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "FWGLE3", "name": "Jan Mus\u00edlek", "avatar": "https://programme.europython.eu/media/avatars/FWGLE3_M8OECsb.webp", "biography": "I\u2019ve gained my degree in Theoretical Computer Science on Charles University in Prague. I currently work as a Senior Python Developer at CZ.NIC, taking care of .cz domain registry and its ecosystem. I\u2019ve been programming for more than 20 years, 9 of those as a professional Python developer. I\u2019m a Linux and FOSS enthusiast and I like to submit PRs to open source projects whenever possible. I enjoy playing board games in my free time.", "public_name": "Jan Mus\u00edlek", "guid": "a10b48a4-4e98-50e4-be5f-e7c1fff23d21", "url": "https://programme.europython.eu/europython-2026/speaker/FWGLE3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/FBQQXS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/FBQQXS/", "attachments": []}, {"guid": "a5460a6d-27ea-531f-bb25-25c11df2cd7d", "code": "BMX7VR", "id": 100293, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "duration": "01:00", "room": "S3A", "slug": "europython-2026-100293-sponsor-highlight-recruitment-fair", "url": "https://programme.europython.eu/europython-2026/talk/BMX7VR/", "title": "Sponsor Highlight & Recruitment Fair", "subtitle": "", "track": null, "type": "Sponsored", "language": "en", "abstract": "Many of our sponsors are looking for people from a wide range of backgrounds and experience levels to join their teams. This session is a chance to hear directly from companies about what they are building, the kinds of people they epare looking for, and what it\u2019s like to work with them.\n\nThroughout the session, sponsors will give short introductions, followed by time for questions and conversations. If something sparks your interest, you can continue chatting with the teams at their booths afterwards. We hope you, like many folks in past years, will discover new opportunities and make valuable connections through the conversations started here.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BMX7VR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BMX7VR/", "attachments": []}, {"guid": "f9a5ed77-e6af-51b0-9aad-485ebc5a9925", "code": "HEUFDT", "id": 91227, "logo": null, "date": "2026-07-17T13:55:00+02:00", "start": "13:55", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91227-powering-up-your-types-with-annotated", "url": "https://programme.europython.eu/europython-2026/talk/HEUFDT/", "title": "Powering Up Your Types with Annotated", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Python\u2019s type system isn't just for static analysis anymore. With Annotated, our types can carry their own documentation, validation logic, and runtime instructions\u2014effectively breaking the boundary between \"checking code\" and \"executing it.\" This talk explores how Annotated acts as a universal metadata engine, allowing us to define semantic and branded types that attach rich instructions to our data without cluttering the core code.\n\nThe real magic of Annotated lies in its ability to handle composition and layering in application design. We\u2019ll look at how to build from the inside out, starting with core business logic in pure Python and then layering on metadata to bridge the gap to higher-level application layers. By enriching primitive types with the annotated-types standard, we can enable (almost) zero-config test data generation and property-based testing using Polyfactory and Hypothesis. From there, we can layer on SQLAlchemy metadata to handle persistence without letting the database schema influence our data model, or use Pydantic to provide specialized data validation and serialization metadata\u2014all within the same type definition.\n\nWe will also see how Annotated serves as a single source of truth for documentation. We\u2019ll explore annotated-doc as an alternative approach to documentation compared to traditional Sphinx or NumPy/Google-style docstrings, showing how to leverage type hints to keep our descriptions directly attached to the data they define.\n\nThe goal is to show how composition and layering allow your core logic to stay stable while your infrastructure evolves independently. You\u2019ll get a whirlwind tour of how the modern Python stack\u2014including Pydantic, SQLAlchemy, and FastAPI\u2014has converged on Annotated as a primary or at least first-class configuration interface. You'll walk away with a practical framework for using these integrations to keep your software design clean, decoupled, and easy to maintain in everyday development.\n\nThis talk is for anyone interested in modern Python typing and effective application design. We\u2019ll focus on how to use Annotated to bind your favorite libraries together and apply these patterns to your daily work. If you're familiar with basic type hints, you're ready to go\u2014we'll build the rest from the ground up!", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SHUEVK", "name": "Vladyslav Fedoriuk", "avatar": "https://programme.europython.eu/media/avatars/SHUEVK_fZ0dxfA.webp", "biography": "Vladyslav Fedoriuk is a software engineer dedicated to software design, database optimization, and the art of writing testable code. He is a strong advocate for Clean Architecture and building composable software systems within the Python ecosystem.\n\nThrough his work on data-oriented applications, Vladyslav has gained extensive experience in navigating the complexities of high-throughput backends. He is passionate about and has a keen interest in designing applications for data-intensive workloads, focusing on creating robust and scalable data-driven solutions.\n\nOver the last two years, his main focus has been the Generative AI landscape and the Model Context Protocol (MCP) ecosystem. Vladyslav is deeply involved in architecting and implementing both MCP Clients and Servers, building innovative solutions that bridge the gap between AI applications and structured data. An active participant in the Krak\u00f3w tech community, he is an enthusiastic speaker and enjoys sharing his knowledge at local meetups.", "public_name": "Vladyslav Fedoriuk", "guid": "d7ddf57a-cc01-58e2-a411-5aa54d40f249", "url": "https://programme.europython.eu/europython-2026/speaker/SHUEVK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/HEUFDT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/HEUFDT/", "attachments": []}, {"guid": "caef5376-f0ee-547a-9057-cbd5aa23acd6", "code": "ZFJEUJ", "id": 91056, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91056-stop-guessing-start-understanding-how-arrow-and-pandas-exchange-data", "url": "https://programme.europython.eu/europython-2026/talk/ZFJEUJ/", "title": "Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "Pandas now natively supports PyArrow-backed data types. But what does that actually mean? If you've ever wondered how these two libraries relate to each other, whether they compete or complement each other, and what happens to your data when it moves between them, this talk is for you.\n\nAs PyArrow maintainers, we took on the challenge of digging into the conversion code between PyArrow and Pandas, and we're here to share what we've learned. We'll show you what's really going on under the hood: how Arrow's columnar format differs from Pandas' block-based memory layout (including what a BlockManager actually is), when data can be shared without copying, and when a full copy is unavoidable.\n\nWe'll also clarify what each library is designed for and how they work together rather than against each other. With pandas increasingly adopting PyArrow as a backend, understanding this relationship is becoming essential rather than optional.\n\nThis talk is aimed at Python developers and data engineers who want to deepen their understanding of what's happening beneath the surface.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZDP7FM", "name": "Alenka Frim", "avatar": "https://programme.europython.eu/media/avatars/ZDP7FM_yuL4Plv.webp", "biography": "My software development journey began with the open-source and the Apache Arrow project. In 2021, I made my first contribution to the Arrow R package, an experience that sparked my interest in software development and open-source collaboration. During my internship at Quansight, I was introduced to the Python DataFrame API standard, which deepened my understanding of interoperability challenges.\n\nIn 2022, after over a year of contributions, I became an Apache Arrow committer, primarily focusing on the Python implementation. I continued my work as a PyArrow maintainer at Voltron Data until mid-2024.\n\nApache Arrow remains the project I\u2019m most passionate about, and I\u2019m still actively involved in its development as a freelancer.", "public_name": "Alenka Frim", "guid": "429cbb27-e7fd-5669-853a-ce79606084ad", "url": "https://programme.europython.eu/europython-2026/speaker/ZDP7FM/"}, {"code": "EMFTT7", "name": "Ra\u00fal Cumplido Dom\u00ednguez", "avatar": "https://programme.europython.eu/media/avatars/EMFTT7_E21iLrb.webp", "biography": null, "public_name": "Ra\u00fal Cumplido Dom\u00ednguez", "guid": "67390be5-7df8-5983-a2e4-e110e85aedba", "url": "https://programme.europython.eu/europython-2026/speaker/EMFTT7/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZFJEUJ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZFJEUJ/", "attachments": []}, {"guid": "18852878-5777-51b9-8e29-e88f7185d8a9", "code": "MP9ZRM", "id": 91665, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91665-supporting-android-and-ios-in-your-python-package", "url": "https://programme.europython.eu/europython-2026/talk/MP9ZRM/", "title": "Supporting Android and iOS in your Python package", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "One of the most exciting recent developments in Python is the addition of Android and iOS as officially-supported platforms. This allows us to reach far more users on the devices where they spend the most time.\n\nWhat does this mean for you as a Python package maintainer? If your package is pure-Python, then it'll probably just work. But if it uses C, Cython, Rust, or any other native-compiled language, then you'll have to take some steps to make it available to these new platforms.\n\nThe mobile support status of the most popular packages on PyPI can be seen at [beeware.org/mobile-wheels](https://beeware.org/mobile-wheels). Let's help push those numbers up! Come to this talk to learn about:\n\n- Why mobile platforms are important for the future of Python\n- How to build your package for Android and iOS using cibuildwheel\n- How to test your mobile builds \u2013 even if you don't have Android or iOS hardware\n- How to distribute mobile packages to your users\n- How to automate all of these things in your CI system\n\nAt the sprints, there will also be an opportunity to put this into practice, by getting personal assistance from the BeeWare team in building your package for mobile.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "M9YVF3", "name": "Malcolm Smith", "avatar": "https://programme.europython.eu/media/avatars/M9YVF3_vCjEaob.webp", "biography": "Malcolm started the Chaquopy project in 2017 with the goal of making it as easy as possible to use Python in Android apps. He now works for Anaconda in the BeeWare team, which pursues the same mission but on all platforms, both desktop and mobile.", "public_name": "Malcolm Smith", "guid": "50daf1e2-f3bd-524c-9e23-346a836ddd39", "url": "https://programme.europython.eu/europython-2026/speaker/M9YVF3/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/MP9ZRM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/MP9ZRM/", "attachments": []}], "S3B": [{"guid": "898cdd0e-a7ec-518a-a2e0-313299da6e9e", "code": "RB9TKP", "id": 91527, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91527-is-object-detection-dead-a-case-for-recognizing-lego-bricks", "url": "https://programme.europython.eu/europython-2026/talk/RB9TKP/", "title": "Is Object Detection Dead? A Case for Recognizing LEGO Bricks", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Talk", "language": "en", "abstract": "With the rise of foundation models and zero-shot segmentation, it sometimes feels like fine-tuning classic object detection models is outdated. But is it? There are over 90 000 different LEGO bricks produced in almost 200 colors, and a single photo can easily contain hundreds of bricks. This makes LEGO recognition a perfect stress test for both traditional object detectors and the latest generation of vision models.\n\nDuring this talk, I will walk you through a practical comparison of approaches to LEGO brick detection. I will start with the classic object detection pipeline: dataset creation, annotation, and training with models like NanoDet and RF-DETR. Then, I will put these detectors up against zero-shot approaches: SAM 3 (Segment Anything Model 3), and vision language models, both closed-source APIs like Gemini and open-source alternatives like Qwen-VL. Along the way, I will share the pitfalls, surprising results, and lessons learned, including cases where a fine-tuned lightweight detector still outperforms models orders of magnitude larger.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8DK3QT", "name": "Piotr Rybak", "avatar": "https://programme.europython.eu/media/avatars/8DK3QT_hD8fm4q.webp", "biography": "Piotr Rybak has almost 15 years of experience in machine learning. He has gained experience working in academia, start-ups, and larger companies. Currently, he focuses on using computer vision to recognize LEGO bricks. He is an active member of the Polish language models community and has co-authored works such as the KLEJ benchmark and the HerBERT and plT5 models. In his free time, he builds with LEGO bricks.", "public_name": "Piotr Rybak", "guid": "6a76d006-d68e-5f80-bb78-87c4cfe24c25", "url": "https://programme.europython.eu/europython-2026/speaker/8DK3QT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RB9TKP/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RB9TKP/", "attachments": []}, {"guid": "d6a8b5bb-a6a1-5fab-80a5-f6dc131c0abf", "code": "SCZ8ZK", "id": 91354, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91354-building-your-dsl-compiler-in-python", "url": "https://programme.europython.eu/europython-2026/talk/SCZ8ZK/", "title": "Building your DSL compiler in Python", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Talk", "language": "en", "abstract": "A multitude of Python libraries offer Just In Time (JIT) compilation capabilities for general purpose computations, such as JAX or Numba. But in certain cases these solutions might not be enough, thus we seek more specialized solutions that can include domain knowledge as well.\n\nCompilers for Domain Specific Languages (DSL) allow us to incorporate additional information during compilation, possibly tied to a specific domain, such as sparse arrays computing.\n\nIn this talk I'm going to introduce [Finch](https://finch-tensor.org/) - language and a compiler for sparse and structured multidimensional arrays, which specializes its kernels for control flow and data structures. It supports common control flow (loops, if conditions, etc.) and a wide variety of data structures - dense, sparse list, triangles, coordinate, or symmetry. \n\nThe ongoing effort to move Finch from the original Julia implementation to pure Python exposed us to new ways of using Python - as a language for implementing compilers.\n\nIn this talk I will present some key aspects of Python language and ecosystem which played a central role in making us productive in the last months during this undertaking:\n- Defining IRs with dataclasses and utilizing Structural Pattern Matching for term rewriting,\n- Using [Lark](https://lark-parser.readthedocs.io/en/stable/) for parsing custom languages into large IR structures,\n- Expressing complex rewrite schemes with [rewrite-tools](https://pypi.org/project/rewrite-tools/).\n\nThe audience will learn our approach to designing the structure of a compiler, together with a few technical decisions made along the way.\nI hope these insights will be useful for engineers and scientists coming from closely related fields and projects also involving compiling custom languages, such as probabilistic programming or hardware design.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "TABXBG", "name": "Mateusz Sok\u00f3\u0142", "avatar": "https://programme.europython.eu/media/avatars/TABXBG_mK5y5fC.webp", "biography": "I'm a Software Engineer at Quansight, working on NumPy, pydata/sparse, and other open source projects in the Scientific Python Ecosystem. You can find me on GitHub: https://github.com/mtsokol", "public_name": "Mateusz Sok\u00f3\u0142", "guid": "289eca5b-1d5f-5690-abe5-93feb5587560", "url": "https://programme.europython.eu/europython-2026/speaker/TABXBG/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SCZ8ZK/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SCZ8ZK/", "attachments": []}, {"guid": "aa00dbe4-1de3-5178-a8bb-af8fb3a22bda", "code": "7NWR9R", "id": 98192, "logo": null, "date": "2026-07-17T12:25:00+02:00", "start": "12:25", "duration": "00:30", "room": "S3B", "slug": "europython-2026-98192-when-python-agents-meet-3d-automating-blender-from-natural-language", "url": "https://programme.europython.eu/europython-2026/talk/7NWR9R/", "title": "When Python Agents Meet 3D: Automating Blender from Natural Language", "subtitle": "", "track": "Python for Games, Art, Play and Expression", "type": "Sponsored", "language": "en", "abstract": "What if AI could help design 3D worlds without taking creative control away from humans?\n\nIn this talk, I will present a hosted Blender agent that creates and edits 3D scenes from natural language. The agent runs Blender headlessly inside Docker, communicates with it through a TCP socket protocol, and exposes Python-powered tools for scene creation, object manipulation, materials, screenshots, rendering, and asset import. It is built with the Microsoft Agent Framework and Azure AI Foundry, using Python as the bridge between the LLM, Blender\u2019s scripting API, cloud storage, and the hosted runtime.\n\nMore than a technical demo, this talk explores a potential future pipeline for AI-assisted 3D creation: a workflow where artists, game designers, architects, and developers can iteratively generate, inspect, modify, and refine 3D environments while keeping human control at every stage. Instead of replacing creative tools, the agent becomes a programmable collaborator that can accelerate repetitive work, propose variations, and turn high-level intent into editable Blender scenes.\n\nThrough live examples, we will discuss what this could mean for the future of video game world-building, virtual production, and 3D architecture: faster prototyping, more accessible scene creation, and new ways to move from idea to interactive environment. Attendees will leave with a practical architecture for building Python agents that operate real creative software, and a grounded view of both the opportunities and current limitations of human-in-the-loop AI for 3D design.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "GYZDCU", "name": "David Rousset", "avatar": "https://programme.europython.eu/media/avatars/BJPMW7_CFxBtOy.webp", "biography": "David Rousset is a Principal Program Manager at Microsoft, focused on AI engineering and developer experience. Inside the CoreAI - Developer division, he works on building next-gen agentic tooling like the AI Toolkit, Foundry Extension and MCPs. His work combines OSS, GenAI, and production-grade workflows. He\u2019s also the co-author of Babylon.js, a WebGL 3D engine used by several Microsoft applications in Office as well as various external partners such as Adobe. As a former evangelist, he\u2019s used to public in various conferences, mainly about web development but also about quantum computing as he's passionate about it. He\u2019s based in Paris, France which will explain is weird but lovely accent.", "public_name": "David Rousset", "guid": "acb747b0-fef8-5de8-94f9-3d1df1d684b6", "url": "https://programme.europython.eu/europython-2026/speaker/GYZDCU/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/7NWR9R/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/7NWR9R/", "attachments": []}, {"guid": "e87e4de3-84d7-58b2-93e5-f5befa37f3b3", "code": "R3GBYA", "id": 99531, "logo": null, "date": "2026-07-17T13:55:00+02:00", "start": "13:55", "duration": "00:30", "room": "S3B", "slug": "europython-2026-99531-a-vision-for-software-freedom-in-2048", "url": "https://programme.europython.eu/europython-2026/talk/R3GBYA/", "title": "A vision for software freedom in 2048", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "Our litigation against Apple in front of the European Court of Justice, pushing for sustainable long term funding for Free Software in the EU and member states, \"Public Money? Public Code!\", Device Neutrality, Router Freedom, Free Your Android, assistance with licensing questions, a European coding competition for teenagers, and a tale of software, skateboards, and raspberry ice cream. These are some of the activities by the Free Software Foundation Europe (FSFE), which at this year's Europython celebrates its 25 anniversary in empowering users to control technology.\n\nHow would the world like in our area in 2048, if the FSFE has been successful? This talk will give an overview of the FSFE's vision, invite participants to give feedback on the next decades of our journey, and invite everyone to join those who shaped our work for software freedom at the FSFE's anniversary party on Saturday.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YRFUDM", "name": "Matthias Kirschner", "avatar": "https://programme.europython.eu/media/avatars/GG7DY8_JNnBuRo.webp", "biography": "Matthias Kirschner is President of FSFE. In 1999 he started using GNU/Linux and realised that software is deeply involved in all aspects of our lives. Matthias is convinced that this technology has to empower society not restrict it. While studying Political and Administrative Science he joined FSFE in 2004.\n\nHe helps other organisations, companies and governments to understand how they can benefit from Free Software -- which gives everybody the rights to use, understand, adapt, and share software -- and how those rights help to support freedom of speech, freedom of press or privacy.\n\nIn his spare time, he has written the book \"Ada & Zangemann - A Tale of Software, Skateboards, and Raspberry Ice Cream\", which is translated in over 30 languages and meanwhile also available as a movie.", "public_name": "Matthias Kirschner", "guid": "7c699803-dcf2-520f-8a93-37cd26f4f5f8", "url": "https://programme.europython.eu/europython-2026/speaker/YRFUDM/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/R3GBYA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/R3GBYA/", "attachments": []}, {"guid": "05ab2302-df03-5757-b4ca-1fad6b0d4f66", "code": "AXAV7D", "id": 91781, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91781-the-problem-with-none-sentinel-values-and-the-semantics-of-absence", "url": "https://programme.europython.eu/europython-2026/talk/AXAV7D/", "title": "The Problem with None: Sentinel Values and the Semantics of Absence", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "None is probably the most overloaded value in Python \u2014 and often the wrong one.\n\nPython quietly depends on sentinel values: None, NotImplemented, Ellipsis, dataclasses.MISSING. They aren\u2019t just placeholders. They define semantics, coordinate object interactions, and influence API design in subtle but powerful ways.\n\nIn this talk, we treat sentinel values as a deliberate design tool. We\u2019ll uncover how NotImplemented enables double dispatch, why None frequently conflates \u201cmissing\u201d with \u201cempty,\u201d and how sentinel patterns permeate the standard library.\n\nBut the real tension appears in typing. Python\u2019s type system still cannot properly express sentinel semantics. Optional, overload, and Literal only approximate the problem, and building a fully typed custom sentinel remains an open challenge.\n\nWe\u2019ll examine the deferred PEP 661, what it tried to solve, and what its absence means today. Expect practical patterns, real-world examples, and a sharper way to think about absence in Python.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8LQU9C", "name": "Florian Wilhelm", "avatar": "https://programme.europython.eu/media/avatars/8LQU9C_cjSxM8b.webp", "biography": "Florian is Head of Data Science & Mathematical Modeling at inovex GmbH, an IT project center driven by innovation and quality, focusing its services on \u2018Digital Transformation\u2019. He holds a PhD in mathematics, has more than 10 years of experience in predictive & prescriptive analytics use-cases and likes everything math \ud83e\udd2f", "public_name": "Florian Wilhelm", "guid": "57127497-53e8-5705-b197-b21e82eeb3d9", "url": "https://programme.europython.eu/europython-2026/speaker/8LQU9C/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/AXAV7D/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/AXAV7D/", "attachments": []}], "Glass room": [{"guid": "cc3dac42-c950-59fb-800b-22f007be9fc4", "code": "LSNR3C", "id": 101536, "logo": null, "date": "2026-07-17T14:30:00+02:00", "start": "14:30", "duration": "01:30", "room": "Glass room", "slug": "europython-2026-101536-the-experience-is-the-community", "url": "https://programme.europython.eu/europython-2026/talk/LSNR3C/", "title": "The Experience Is the Community", "subtitle": "", "track": "~ None of these topics", "type": "Talk", "language": "en", "abstract": "Open source communities don\u2019t grow because people contribute. They grow because contributors help create the next contributors.\n\nThis interactive workshop introduces the **POPCOM Framework** (Participation, Ownership, Purpose, Connection, Opportunity, and Mentorship), a practical approach for understanding how communities create future contributors, organisers, mentors, and leaders.\n\nWho this workshop is for:\n- Meetup organizers\n- Conference organizers\n- Open source maintainers\n- Community managers\n- Volunteer leaders\n\nParticipants will evaluate their own communities, identify areas for improvement, and design concrete change that they can take back and apply.\n\nEach participant walks out with:\n- a practical assessment of their own community\n- a framework for identifying strengths and gaps\n- a concrete experiment to improve participation, retention, and leadership development\n\n_The Experience Is the Community_ is one module in OCL (Open Community Leadership). You can run this workshop yourself. Adapt the timing to your community.\nFree to use, adapt, and share with attribution.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "JT3PJU", "name": "Georgi Ker", "avatar": "https://programme.europython.eu/media/avatars/9X33GR_9W0TQVM.webp", "biography": "[Georgi Ker]([url](https://georgiker.com/) serves as Vice Chair of the Python Software Foundation and Chair of the PSF Diversity & Inclusion Workgroup. A PSF Fellow and Community Service Award recipient, she helps build and support open source communities including PyLadies, PyLadiesCon, Python Asia, PyPodCats, PyCon Thailand, Ruby Tuesday, and RubyConf Thailand. She is based in Amsterdam.", "public_name": "Georgi Ker", "guid": "2106f2b1-e702-574b-b2cf-8f81ea36b1e4", "url": "https://programme.europython.eu/europython-2026/speaker/JT3PJU/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LSNR3C/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LSNR3C/", "attachments": []}], "Poster Hall A": [{"guid": "f1358384-ceec-58f9-a8e5-e9a4ef09b00f", "code": "BX77EE", "id": 91749, "logo": null, "date": "2026-07-17T12:55:00+02:00", "start": "12:55", "duration": "01:00", "room": "Poster Hall A", "slug": "europython-2026-91749-reusable-tox-yml-five-patterns-to-eliminate-ci-cd-boilerplate", "url": "https://programme.europython.eu/europython-2026/talk/BX77EE/", "title": "reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Poster", "language": "en", "abstract": "Maintaining CI/CD configurations across dozens of Python projects means copying the same `tox` invocations, Python version matrices, and error-handling logic into every repository. This poster presents five architectural patterns from the `reusable-tox.yml` project that eliminate this duplication by applying familiar software engineering principles to GitHub Actions workflows.\n\nEach pattern is illustrated with a before/after YAML comparison and a Python code analogy, making the design decisions immediately recognizable to Python developers:\n\n* *Singular inputs* \u2014 accepting one Python version per workflow call instead of JSON arrays. Like writing `def run(version: str)` instead of `def run(versions: list[str])` \u2014 simpler to reason about, test, and compose via caller-side matrix strategies.\n* *Caller-side matrix strategy* \u2014 separating \"what to test\" (the calling workflow's job) from \"how to test\" (the reusable workflow's job). The same Separation of Concerns you'd apply to Python modules.\n* *Three-phase execution* \u2014 splitting `tox` runs into environment preparation (`tox --notest`), main execution, and debug rerun on failure. Like Unix pipelines \u2014 each stage transforms data through a single responsibility, improving cacheability and error diagnosis.\n* *Composite action hooks* \u2014 providing extension points where projects inject custom setup logic without modifying shared infrastructure, discovered automatically via `hashFiles()`. The Dependency Injection pattern applied to CI/CD.\n* *Explicit over implicit* \u2014 refusing to auto-detect `tox` environments or infer configuration. Predictable and debuggable beats magical and surprising.\n\nThe poster includes a \"Which pattern solves your problem?\" decision flowchart and a QR code linking to the open-source repository with ready-to-fork templates.\n\nBorn from maintaining dozens of Python projects including aiohttp, CherryPy, and pip-tools, these patterns treat CI/CD with the same architectural rigor as application code.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "AWKFRJ", "name": "Sviatoslav Sydorenko (\u0421\u0432\u044f\u0442\u043e\u0441\u043b\u0430\u0432 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e)", "avatar": "https://programme.europython.eu/media/avatars/AWKFRJ_GocL4js.webp", "biography": "Sviatoslav (webknjaz) is a Principal Software Engineer at Red Hat on the Ansible Core Team. A PyPA member, a CPython Triager, he maintains aiohttp, CherryPy, pip-tools, and many other FOSS Python projects. He authored the PyPA-blessed `pypi-publish` GitHub Action and `alls-green` (adopted by CPython), and designed CPython's current modular CI/CD layout. He is passionate about applying software engineering principles to CI/CD automation and reducing the maintenance burden across the Python ecosystem.", "public_name": "Sviatoslav Sydorenko (\u0421\u0432\u044f\u0442\u043e\u0441\u043b\u0430\u0432 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e)", "guid": "fd51b536-9f7f-55bb-aee8-d6a9e3e9078d", "url": "https://programme.europython.eu/europython-2026/speaker/AWKFRJ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BX77EE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BX77EE/", "attachments": []}], "Poster Hall B": [{"guid": "fc18478e-5d42-5f25-a792-f3f95419bda2", "code": "GP39VP", "id": 90963, "logo": null, "date": "2026-07-17T12:55:00+02:00", "start": "12:55", "duration": "01:00", "room": "Poster Hall B", "slug": "europython-2026-90963-why-coding-agents-fail-at-ml-and-how-to-fix-it", "url": "https://programme.europython.eu/europython-2026/talk/GP39VP/", "title": "Why Coding Agents Fail at ML (and How to Fix It)", "subtitle": "", "track": "Machine Learning, NLP and CV", "type": "Poster", "language": "en", "abstract": "Over the last year, LLM-based coding agents have matured to the point where they can autonomously navigate codebases, edit files, run tests, and iterate on solutions with minimal human input. Many Python teams have started applying these agents to machine learning projects, where the volume of repetitive experimental work makes automation appealing.\n\nHowever, coding execution and ML optimization are not the same problem. In software engineering, success is often local and binary: a feature works or it does not, a bug is reproduced or fixed. In ML, code correctness is only a prerequisite. Progress is determined by measured model behavior across repeated experiments, and that measurement only happens after training and evaluation are complete. This distinction creates a coordination gap. Coding agents can generate and modify training code, but without external structure they drift over long experiment horizons. Teams encounter recurring failure modes: multiple coupled changes in a single step make results unattributable, LLMs lose context and rediscover already tested hypothesis in slightly different wording, etc.\n\nThis poster presents an architecture that addresses the gap by pairing coding agents with a deterministic (non-LLM) orchestrator. The orchestrator manages experimentation as a tree search. It starts from a reproducible baseline, samples hypothesis-driven modifications constrained to a single aspect per step, evaluates each modification through a fixed entrypoint that returns multiple metrics, and decides which branches to expand or prune based on statistical evidence. Each experiment runs in an isolated git worktree, so every branch has a clean file state, an independent diff, and a separate log. An anti-repetition memory tracks previously attempted hypotheses across the tree to prevent the agent from regenerating equivalent ideas. When stopping criteria are met, an integration stage combines winning branches and evaluates the result. \n\nThis presentation is aimed at ML engineers and data scientists who have experimented with (or are considering) coding agents for their workflows. Attendees will learn how to utilize coding agents for ML tasks and structure experiments as an LLM-searchable trajectory with deterministic controls rather than a sequence of ad-hoc edits.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3QCPHT", "name": "Olha Poliuliakh", "avatar": "https://programme.europython.eu/media/avatars/3QCPHT_Hp2p2jD.webp", "biography": "I am a Data Scientist at DataForce Solutions, where I also work on [LUML](https://luml.ai/) - a platform our team is building. \nMy main professional focus is on merging traditional ML, Agentic AI and MLOps.", "public_name": "Olha Poliuliakh", "guid": "803a53b8-31dd-599d-b3d9-599c6288f670", "url": "https://programme.europython.eu/europython-2026/speaker/3QCPHT/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GP39VP/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GP39VP/", "attachments": []}], "Poster Hall C": [{"guid": "7896fab2-b724-5c76-a882-977fb17a6321", "code": "U7AHP3", "id": 91511, "logo": null, "date": "2026-07-17T12:55:00+02:00", "start": "12:55", "duration": "01:00", "room": "Poster Hall C", "slug": "europython-2026-91511-pypartmc-a-pythonic-interface-enhancing-fortran-based-simulation-package", "url": "https://programme.europython.eu/europython-2026/talk/U7AHP3/", "title": "PyPartMC: A Pythonic interface enhancing Fortran-based simulation package", "subtitle": "", "track": "Jupyter and Scientific Python", "type": "Poster", "language": "en", "abstract": "**PyPartMC** is a Pythonic interface to *PartMC*. PartMC (Particle Monte Carlo) is a stochastic, particle-resolved atmospheric aerosol dynamics model, used for solving aerosol processes such as coagulation, nucleation, emission, and deposition. Both projects are free and open-source.\n\nOne of the main aims of the PyPartMC project is streamlining user experience. To use PartMC, you have to: work with UNIX shell, provide Fortran and C libraries, and perform standard Fortran and C source code configuration, compilation and linking. All of that boils down to a single **pip** package manager call with PyPartMC. Depending on the OS, PyPartMC will install from a binary wheel or compile from a source wheel containing all the dependencies.\n\nPyPartMC can operate on **Linux**, **Windows** and **MacOS**, and has been tested to install correctly on **Google Colab** Jupyter notebook cloud platform. The API is also callable from C++, Julia, and MATLAB. PyPartMC ships with a collection of introductory notebook examples, that can help with learning the library's API.\n\nFrom the developers point of view, PyPartMC is an interesting challenge, due to its **multi-language** environment. A C++ API is built on top of the Fortran one, leveraging the C-Fortran API. The Python interface is then constructed with the help of **nanobind** library. \n\n**PyPartMC** is part of **open-atmos**, which is a multi-institutional community hub for projects in atmospheric sciences (https://github.com/open-atmos). The development of this package is a collaboration between AGH University of Krakow and University of Illinois Urbana-Champaign. \n\nIn the poster, I will outline the package features and architecture, and also highlight the newly engineered components and CI workflows engineered in our team at AGH.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "ZMNF9N", "name": "Gracjan Adamus", "avatar": "https://programme.europython.eu/media/avatars/ZMNF9N_PN17ecg.webp", "biography": "Third-year **Applied Computer Science** student at **AGH** University of Krak\u00f3w. Interested in **GPUs**, **HPC** and **Open-source software**. Currently working as a **C++ Developer** @ [digatus](https://digatus.com/en/).", "public_name": "Gracjan Adamus", "guid": "a0ed1a9c-79ea-5426-bb6d-ea15d986d9bd", "url": "https://programme.europython.eu/europython-2026/speaker/ZMNF9N/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/U7AHP3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/U7AHP3/", "attachments": [{"title": "PyPartMC logo", "url": "/media/europython-2026/submissions/U7AHP3/resources/pypartmc_Ilc0zFX.svg", "type": "related"}]}]}}, {"index": 6, "date": "2026-07-18", "day_start": "2026-07-18T04:00:00+02:00", "day_end": "2026-07-19T03:59:00+02:00", "rooms": {}}, {"index": 7, "date": "2026-07-19", "day_start": "2026-07-19T04:00:00+02:00", "day_end": "2026-07-20T03:59:00+02:00", "rooms": {}}]}}}