{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.3.0.dev0", "url": "https://programme.europython.eu"}, "schedule": {"url": "https://programme.europython.eu/europython-2026/schedule/", "version": "0.49", "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": "F0 (Glass Room)", "slug": "5249-f0-glass-room", "guid": "a1bb95b4-9783-5d3e-8c40-335f0556a714", "description": "F0 (Glass Room) - Open Space room 1 - PYO (Fri), PyLadies (Thu) - 72 chairs or  26 tables", "capacity": 40}, {"name": "S4 (1, 2, 3)", "slug": "6148-s4-1-2-3", "guid": "eadf5981-b9ec-58fb-ba90-9883e6cb441b", "description": "S4 (1, 2, 3) - Open spaces room 2 (48 people)", "capacity": null}, {"name": "S4 (4)", "slug": "6149-s4-4", "guid": "797d5196-5c11-5db3-8099-3398e23ddb5b", "description": "S4 (4) - Open spaces room 3 (24 people)", "capacity": null}, {"name": "S4 (5)", "slug": "6150-s4-5", "guid": "0be3d26e-58ac-5abc-beb7-f87b4f5534a7", "description": "S4 (5) - Open spaces room 4 (36 people)", "capacity": null}, {"name": "F2 (Fishbowl Room)", "slug": "5248-f2-fishbowl-room", "guid": "75afb1f2-f364-5661-922b-fcf7cd27727a", "description": "F2 (Fishbowl Room) - Summits and Open Spaces Room Backup 1 - This room can fit 67 chairs, and the tables are TBD", "capacity": 67}, {"name": "Room 2.017/2.018", "slug": "5250-room-20172018", "guid": "0ea76991-27eb-54e8-a71c-ee5c986ce53c", "description": "Multifunctional room 2 (2.017/2.018) - Open Spaces Room Backup 2 - 72 chairs or 31 tables", "capacity": 100}, {"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", "end": "2026-07-13T09:30:00+02:00", "duration": "01:00", "room": "S3A", "slug": "europython-2026-97546-monday-registration-welcome-entrance-3", "url": "https://programme.europython.eu/europython-2026/talk/CSDM3D/", "title": "Monday Registration & Welcome @ Entrance 3", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the Entrance 3.\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", "end": "2026-07-13T11:00:00+02:00", "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.*\n\n**ATTENDEES:** Please check important information before the tutorial: https://github.com/ariel-ortiz/europython2026", "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", "end": "2026-07-13T12:45:00+02:00", "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.*\n\n**ATTENDEES:** Please check important information before the tutorial: https://github.com/ariel-ortiz/europython2026", "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", "end": "2026-07-13T15:15:00+02:00", "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", "end": "2026-07-13T17:00:00+02:00", "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", "end": "2026-07-13T11:00:00+02:00", "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", "end": "2026-07-13T12:45:00+02:00", "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", "end": "2026-07-13T15:15:00+02:00", "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.\n\nTo participate in the exercises, you will need to have [uv](https://docs.astral.sh/uv/) or [Docker](https://docs.docker.com/engine/) available on your computer. It is also recommended to have [Git](https://git-scm.com/install/windows) installed.", "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", "end": "2026-07-13T17:00:00+02:00", "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.\n\nTo participate in the exercises, you will need to have [uv](https://docs.astral.sh/uv/) or [Docker](https://docs.docker.com/engine/) available on your computer. It is also recommended to have [Git](https://git-scm.com/install/windows) installed.", "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", "end": "2026-07-13T11:00:00+02:00", "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", "end": "2026-07-13T12:45:00+02:00", "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", "end": "2026-07-13T15:15:00+02:00", "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 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.\n\n## SETUP\n\n_**Please make sure to complete the workshop setup ([given here](https://github.com/abhimanyu-bitsgoa/europython-planetscale-systems/tree/main#quick-setup)) before the session.**_\n\n## SLIDE DECK\n\n[Slides for EuroPython 2026 attendees](https://docs.google.com/presentation/d/14Tkp1xqWCdtA6k85vBffnA8CZS-zmKkN4dFP0-sI1-g/edit?usp=sharing)", "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", "end": "2026-07-13T17:00:00+02:00", "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 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.\n\n## SETUP\n\n_**Please make sure to complete the workshop setup ([given here](https://github.com/abhimanyu-bitsgoa/europython-planetscale-systems/tree/main#quick-setup)) before the session.**_\n\n## SLIDE DECK\n\n[Slides for EuroPython 2026 attendees](https://docs.google.com/presentation/d/14Tkp1xqWCdtA6k85vBffnA8CZS-zmKkN4dFP0-sI1-g/edit?usp=sharing)", "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", "end": "2026-07-13T11:00:00+02:00", "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\n\nWorkshop repository:\n* GitHub version: https://github.com/jgaffiot/getting-out-testing-hell/\n* GitLab version: https://gitlab.com/jgaffiot1/getting-out-testing-hell/", "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", "end": "2026-07-13T12:45:00+02:00", "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\n\nWorkshop repository:\n* GitHub version: https://github.com/jgaffiot/getting-out-testing-hell/\n* GitLab version: https://gitlab.com/jgaffiot1/getting-out-testing-hell/", "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", "end": "2026-07-13T15:15:00+02:00", "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.\n\n# Project repository\n\nCheck https://github.com/cmaureir/cpython_tutorial for more information.\n(Linux and macOS is recommended, but if you have Windows is OK)", "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", "end": "2026-07-13T17:00:00+02:00", "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.\n\n# Project repository\n\nCheck https://github.com/cmaureir/cpython_tutorial for more information.\n(Linux and macOS is recommended, but if you have Windows is OK)", "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": []}], "F2 (Fishbowl Room)": [{"guid": "9c3d40b8-4ae9-5921-9214-7e609bdfbef1", "code": "VYUNHG", "id": 93918, "logo": null, "date": "2026-07-13T09:30:00+02:00", "start": "09:30", "end": "2026-07-13T11:00:00+02:00", "duration": "01:30", "room": "F2 (Fishbowl Room)", "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# Keynote Speaker\n\nThis year we have invited [David Hewitt](https://www.linkedin.com/in/david-hewitt/) to join us.\n\nDavid is a freelance software engineer with a mission to connect the Rust and Python software ecosystems. He is a leading maintainer of PyO3 and has spoken at both Python and Rust conferences about how the interop between the two languages works and his vision for its future. He has worked with companies in sectors including finance, energy and techonology on both proprietary and open-source codebases. David can be found streaming open source development on YouTube, most recently in a collaboration with Petr Viktorin to further native UTF-8 support for Python.\n\n# Agenda\n\nThe following agenda is subject to changes. Please check back from time to time.\n\n|Time |Session                                           |Speaker           |\n|-----|--------------------------------------------------|------------------|\n|9:30 |Check-in and welcome                              |Cheuk             |\n|9:40 |Keynote session                                   |David Hewitt      |\n|10:20|Deep dive talk about conda CLI                             |Travis Hathaway   |\n|11:00|Coffee Break                                      |                  |\n|11:30|Discussion - Should we train the Python team Rust?|Travis Hathaway   |\n|12:10| Discussion - Tools for debugging Rust and Python |Cheuk  |\n|12:45|Lunch                                             |                  |\n|13:45|Discussionn - Rust in CPython                     |David Hewitt      |\n|14:45|Lighting talks                                    |Sign up on the day|\n|15:15|Coffee Break                                      |                  |\n|15:30|Spalkling talk - Type-driven api design with Rust                          |Farhaan Bukhsh    |\n|16:00|Rust / PyO3 Sprint or Mentoring session           |All               |\n|17:00|End of day                                        |                  |\n\n\n# Registration and Participation\n\n> **We have walk-in places on the day, if you have not registered, you can still come to check if we have spaces. Walk-in  places are first come first serve.**\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", "end": "2026-07-13T12:45:00+02:00", "duration": "01:30", "room": "F2 (Fishbowl Room)", "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# Keynote Speaker\n\nThis year we have invited [David Hewitt](https://www.linkedin.com/in/david-hewitt/) to join us.\n\nDavid is a freelance software engineer with a mission to connect the Rust and Python software ecosystems. He is a leading maintainer of PyO3 and has spoken at both Python and Rust conferences about how the interop between the two languages works and his vision for its future. He has worked with companies in sectors including finance, energy and techonology on both proprietary and open-source codebases. David can be found streaming open source development on YouTube, most recently in a collaboration with Petr Viktorin to further native UTF-8 support for Python.\n\n# Agenda\n\nThe following agenda is subject to changes. Please check back from time to time.\n\n|Time |Session                                           |Speaker           |\n|-----|--------------------------------------------------|------------------|\n|9:30 |Check-in and welcome                              |Cheuk             |\n|9:40 |Keynote session                                   |David Hewitt      |\n|10:20|Deep dive talk about conda CLI                             |Travis Hathaway   |\n|11:00|Coffee Break                                      |                  |\n|11:30|Discussion - Should we train the Python team Rust?|Travis Hathaway   |\n|12:10| Discussion - Tools for debugging Rust and Python |Cheuk  |\n|12:45|Lunch                                             |                  |\n|13:45|Discussionn - Rust in CPython                     |David Hewitt      |\n|14:45|Lighting talks                                    |Sign up on the day|\n|15:15|Coffee Break                                      |                  |\n|15:30|Spalkling talk - Type-driven api design with Rust                          |Farhaan Bukhsh    |\n|16:00|Rust / PyO3 Sprint or Mentoring session           |All               |\n|17:00|End of day                                        |                  |\n\n\n# Registration and Participation\n\n> **We have walk-in places on the day, if you have not registered, you can still come to check if we have spaces. Walk-in  places are first come first serve.**\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", "end": "2026-07-13T15:15:00+02:00", "duration": "01:30", "room": "F2 (Fishbowl Room)", "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# Keynote Speaker\n\nThis year we have invited [David Hewitt](https://www.linkedin.com/in/david-hewitt/) to join us.\n\nDavid is a freelance software engineer with a mission to connect the Rust and Python software ecosystems. He is a leading maintainer of PyO3 and has spoken at both Python and Rust conferences about how the interop between the two languages works and his vision for its future. He has worked with companies in sectors including finance, energy and techonology on both proprietary and open-source codebases. David can be found streaming open source development on YouTube, most recently in a collaboration with Petr Viktorin to further native UTF-8 support for Python.\n\n# Agenda\n\nThe following agenda is subject to changes. Please check back from time to time.\n\n|Time |Session                                           |Speaker           |\n|-----|--------------------------------------------------|------------------|\n|9:30 |Check-in and welcome                              |Cheuk             |\n|9:40 |Keynote session                                   |David Hewitt      |\n|10:20|Deep dive talk about conda CLI                             |Travis Hathaway   |\n|11:00|Coffee Break                                      |                  |\n|11:30|Discussion - Should we train the Python team Rust?|Travis Hathaway   |\n|12:10| Discussion - Tools for debugging Rust and Python |Cheuk  |\n|12:45|Lunch                                             |                  |\n|13:45|Discussionn - Rust in CPython                     |David Hewitt      |\n|14:45|Lighting talks                                    |Sign up on the day|\n|15:15|Coffee Break                                      |                  |\n|15:30|Spalkling talk - Type-driven api design with Rust                          |Farhaan Bukhsh    |\n|16:00|Rust / PyO3 Sprint or Mentoring session           |All               |\n|17:00|End of day                                        |                  |\n\n\n# Registration and Participation\n\n> **We have walk-in places on the day, if you have not registered, you can still come to check if we have spaces. Walk-in  places are first come first serve.**\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", "end": "2026-07-13T17:00:00+02:00", "duration": "01:30", "room": "F2 (Fishbowl Room)", "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# Keynote Speaker\n\nThis year we have invited [David Hewitt](https://www.linkedin.com/in/david-hewitt/) to join us.\n\nDavid is a freelance software engineer with a mission to connect the Rust and Python software ecosystems. He is a leading maintainer of PyO3 and has spoken at both Python and Rust conferences about how the interop between the two languages works and his vision for its future. He has worked with companies in sectors including finance, energy and techonology on both proprietary and open-source codebases. David can be found streaming open source development on YouTube, most recently in a collaboration with Petr Viktorin to further native UTF-8 support for Python.\n\n# Agenda\n\nThe following agenda is subject to changes. Please check back from time to time.\n\n|Time |Session                                           |Speaker           |\n|-----|--------------------------------------------------|------------------|\n|9:30 |Check-in and welcome                              |Cheuk             |\n|9:40 |Keynote session                                   |David Hewitt      |\n|10:20|Deep dive talk about conda CLI                             |Travis Hathaway   |\n|11:00|Coffee Break                                      |                  |\n|11:30|Discussion - Should we train the Python team Rust?|Travis Hathaway   |\n|12:10| Discussion - Tools for debugging Rust and Python |Cheuk  |\n|12:45|Lunch                                             |                  |\n|13:45|Discussionn - Rust in CPython                     |David Hewitt      |\n|14:45|Lighting talks                                    |Sign up on the day|\n|15:15|Coffee Break                                      |                  |\n|15:30|Spalkling talk - Type-driven api design with Rust                          |Farhaan Bukhsh    |\n|16:00|Rust / PyO3 Sprint or Mentoring session           |All               |\n|17:00|End of day                                        |                  |\n\n\n# Registration and Participation\n\n> **We have walk-in places on the day, if you have not registered, you can still come to check if we have spaces. Walk-in  places are first come first serve.**\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": []}], "Room 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", "end": "2026-07-13T11:00:00+02:00", "duration": "01:30", "room": "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\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\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\n- Maintainers of Python libraries\n\n- Developers of Python applications\n\n- Distributors of downstream packages (e.g., Fedora, Debian)\n\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_We are still accepting late attendance requests. Please submit your request and we'll get back to you as soon as possible._\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_We are still accepting late topic proposals for lightning talks and roundtable discussions._\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\n| Time | Session |\n|------|---------|\n| 9:30 AM | Welcome, introductions |\n| 9:45 AM | Wheel variants: Can we trust variant providers? (Konstantin Sch\u00fctze) |\n| 10:15 AM | Open discussion: wheel variants (continued) |\n| 11:00 AM | Break |\n| 11:15 AM | Instrumented CPython builds with Pixi (Lucas Colley) |\n| 11:45 AM | Lightning talks (sign up on-site) |\n| 12:15 PM | Roundtable topic pitches + voting |\n| 12:45 PM | Lunch break |\n| 1:45 PM | Packaging Council elections (Deb Nicholson) |\n| 2:15 PM | Roundtable discussions |\n| 3:15 PM | Break |\n| 3:30 PM | Roundtable discussions (continued) |\n| 4:50 PM | Wrap-up + action items |\n| 5:00 PM | Summit ends |\n\nCollaborative notes: [hackmd.io/@jezdez/europython2026-packaging-summit](https://hackmd.io/@jezdez/europython2026-packaging-summit)\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", "end": "2026-07-13T12:45:00+02:00", "duration": "01:30", "room": "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\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\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\n- Maintainers of Python libraries\n\n- Developers of Python applications\n\n- Distributors of downstream packages (e.g., Fedora, Debian)\n\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_We are still accepting late attendance requests. Please submit your request and we'll get back to you as soon as possible._\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_We are still accepting late topic proposals for lightning talks and roundtable discussions._\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\n| Time | Session |\n|------|---------|\n| 9:30 AM | Welcome, introductions |\n| 9:45 AM | Wheel variants: Can we trust variant providers? (Konstantin Sch\u00fctze) |\n| 10:15 AM | Open discussion: wheel variants (continued) |\n| 11:00 AM | Break |\n| 11:15 AM | Instrumented CPython builds with Pixi (Lucas Colley) |\n| 11:45 AM | Lightning talks (sign up on-site) |\n| 12:15 PM | Roundtable topic pitches + voting |\n| 12:45 PM | Lunch break |\n| 1:45 PM | Packaging Council elections (Deb Nicholson) |\n| 2:15 PM | Roundtable discussions |\n| 3:15 PM | Break |\n| 3:30 PM | Roundtable discussions (continued) |\n| 4:50 PM | Wrap-up + action items |\n| 5:00 PM | Summit ends |\n\nCollaborative notes: [hackmd.io/@jezdez/europython2026-packaging-summit](https://hackmd.io/@jezdez/europython2026-packaging-summit)\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", "end": "2026-07-13T15:15:00+02:00", "duration": "01:30", "room": "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\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\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\n- Maintainers of Python libraries\n\n- Developers of Python applications\n\n- Distributors of downstream packages (e.g., Fedora, Debian)\n\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_We are still accepting late attendance requests. Please submit your request and we'll get back to you as soon as possible._\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_We are still accepting late topic proposals for lightning talks and roundtable discussions._\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\n| Time | Session |\n|------|---------|\n| 9:30 AM | Welcome, introductions |\n| 9:45 AM | Wheel variants: Can we trust variant providers? (Konstantin Sch\u00fctze) |\n| 10:15 AM | Open discussion: wheel variants (continued) |\n| 11:00 AM | Break |\n| 11:15 AM | Instrumented CPython builds with Pixi (Lucas Colley) |\n| 11:45 AM | Lightning talks (sign up on-site) |\n| 12:15 PM | Roundtable topic pitches + voting |\n| 12:45 PM | Lunch break |\n| 1:45 PM | Packaging Council elections (Deb Nicholson) |\n| 2:15 PM | Roundtable discussions |\n| 3:15 PM | Break |\n| 3:30 PM | Roundtable discussions (continued) |\n| 4:50 PM | Wrap-up + action items |\n| 5:00 PM | Summit ends |\n\nCollaborative notes: [hackmd.io/@jezdez/europython2026-packaging-summit](https://hackmd.io/@jezdez/europython2026-packaging-summit)\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", "end": "2026-07-13T17:00:00+02:00", "duration": "01:30", "room": "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\n- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5\n\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\n- Maintainers of Python libraries\n\n- Developers of Python applications\n\n- Distributors of downstream packages (e.g., Fedora, Debian)\n\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_We are still accepting late attendance requests. Please submit your request and we'll get back to you as soon as possible._\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_We are still accepting late topic proposals for lightning talks and roundtable discussions._\n\n## Schedule\n\nPlease start arriving at 9:25 am.\n\n| Time | Session |\n|------|---------|\n| 9:30 AM | Welcome, introductions |\n| 9:45 AM | Wheel variants: Can we trust variant providers? (Konstantin Sch\u00fctze) |\n| 10:15 AM | Open discussion: wheel variants (continued) |\n| 11:00 AM | Break |\n| 11:15 AM | Instrumented CPython builds with Pixi (Lucas Colley) |\n| 11:45 AM | Lightning talks (sign up on-site) |\n| 12:15 PM | Roundtable topic pitches + voting |\n| 12:45 PM | Lunch break |\n| 1:45 PM | Packaging Council elections (Deb Nicholson) |\n| 2:15 PM | Roundtable discussions |\n| 3:15 PM | Break |\n| 3:30 PM | Roundtable discussions (continued) |\n| 4:50 PM | Wrap-up + action items |\n| 5:00 PM | Summit ends |\n\nCollaborative notes: [hackmd.io/@jezdez/europython2026-packaging-summit](https://hackmd.io/@jezdez/europython2026-packaging-summit)\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": []}]}}, {"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", "end": "2026-07-14T09:30:00+02:00", "duration": "01:00", "room": "S3A", "slug": "europython-2026-97547-tuesday-registration-welcome-entrance-3", "url": "https://programme.europython.eu/europython-2026/talk/EKE78F/", "title": "Tuesday Registration & Welcome @ Entrance 3", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the Entrance 3\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", "end": "2026-07-14T11:00:00+02:00", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91791-0-learn-quantum-computing-with-qilisdk", "url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "title": "Learn Quantum Computing with QiliSDK", "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": [{"title": "QiliSDK Repository", "url": "https://github.com/qilimanjaro-tech/qilisdk", "type": "related"}, {"title": "QiliSDK Documentation", "url": "https://qilimanjaro-tech.github.io/qilisdk", "type": "related"}], "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", "end": "2026-07-14T12:45:00+02:00", "duration": "01:30", "room": "S3A", "slug": "europython-2026-91791-1-learn-quantum-computing-with-qilisdk", "url": "https://programme.europython.eu/europython-2026/talk/3FDLUS/", "title": "Learn Quantum Computing with QiliSDK", "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": [{"title": "QiliSDK Repository", "url": "https://github.com/qilimanjaro-tech/qilisdk", "type": "related"}, {"title": "QiliSDK Documentation", "url": "https://qilimanjaro-tech.github.io/qilisdk", "type": "related"}], "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", "end": "2026-07-14T15:15:00+02:00", "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.\n\n### Setup instructions\nAlthough minimal, please complete the setup beforehand: https://github.com/stefmolin/ast-workshop#setup-instructions", "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", "end": "2026-07-14T17:00:00+02:00", "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.\n\n### Setup instructions\nAlthough minimal, please complete the setup beforehand: https://github.com/stefmolin/ast-workshop#setup-instructions", "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", "end": "2026-07-14T18:00:00+02: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": [{"code": "NDTKYU", "name": "Martin Borus", "avatar": "https://programme.europython.eu/media/avatars/CXYJN7_2aLC4fv.webp", "biography": "Working as a software developer writing booking software for ferry companies, Martin has discovered Python in 2014 and has fallen in love with the language quickly. He uses it to write APIs and interfaces with booking software (written in classic \u201cNavision\u201d C/SIDE) and to automate all kinds of on-premise software and hardware tasks.\n\nHe has helped at Europython every year since 2017 and is part of the EuroPython Operations Team. He also volunteers at other Python events like PyConDE, Humble Data and is one of the organisers of the German language Python Barcamp in R\u00fcgen.", "public_name": "Martin Borus", "guid": "b36341f0-3272-5cd2-86c4-823c2958f429", "url": "https://programme.europython.eu/europython-2026/speaker/NDTKYU/"}, {"code": "FKPKSW", "name": "Mahe Iram Khan", "avatar": null, "biography": "Software Engineer at Anaconda, working on conda for quite some time now! :)\nBased in Berlin. Outside of work, I enjoy crocheting, baking, travelling to off beaten locations and writing.", "public_name": "Mahe Iram Khan", "guid": "7014ed7f-88e0-5a16-b10c-5f2acec5d2b5", "url": "https://programme.europython.eu/europython-2026/speaker/FKPKSW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3APM9B/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3APM9B/", "attachments": [{"title": "Slides", "url": "/media/europython-2026/submissions/3APM9B/resources/Beginner_C_QluUolg.pdf", "type": "related"}]}], "S3B": [{"guid": "06d0feb4-1615-5fe4-8472-a35928efa777", "code": "MENRZG", "id": 90832, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "end": "2026-07-14T11:00:00+02:00", "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.\n\nCourse information and GitHub repo: https://github.com/reuven/EuroPython-Decorators-2026-07", "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": [{"title": "GitHub repo for the course", "url": "https://github.com/reuven/EuroPython-Decorators-2026-07", "type": "related"}, {"title": "Practice system for the course", "url": "https://practice.lernerpython.com/classroom/24d84164d2/", "type": "related"}], "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", "end": "2026-07-14T12:45:00+02:00", "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.\n\nCourse information and GitHub repo: https://github.com/reuven/EuroPython-Decorators-2026-07", "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": [{"title": "GitHub repo for the course", "url": "https://github.com/reuven/EuroPython-Decorators-2026-07", "type": "related"}, {"title": "Practice system for the course", "url": "https://practice.lernerpython.com/classroom/24d84164d2/", "type": "related"}], "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", "end": "2026-07-14T15:15:00+02:00", "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\n\nClone [this repository](https://github.com/sangarshanan/synthoor) & Install the package to get started :)", "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", "end": "2026-07-14T17:00:00+02:00", "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\n\nClone [this repository](https://github.com/sangarshanan/synthoor) & Install the package to get started :)", "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", "end": "2026-07-14T11:00:00+02:00", "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", "end": "2026-07-14T12:45:00+02:00", "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", "end": "2026-07-14T15:15:00+02:00", "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).\n\n#### Setup for the tutorial:\n\nIf possible, please install everything that is necessary ahead of time, before getting to the tutorial:  https://github.com/vinigfer/europython_2026_load_testing_tutorial#setup", "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": "Currently Python specialist @ Azion Technologies, but also had several job titles and responsibilities during the 8+ years with the company. Including backend software engineer (mostly Django, Docker, k8s, Python 2 --> 3), QA/QE team lead, UXE manager.\nWorked on other companies, but unfortunately not using Python a lot.\n\nActive reviewer on CFP for Python conferences. If you submitted a talk or tutorial for PyCon US, EuroPython, PyCon Italia, ... There is a good chance I read it. Also volunteer as a mentor for 1st time speakers at conferences.\n\nLove 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": [{"title": "Slides used during the tutorial", "url": "/media/europython-2026/submissions/N39TFS/resources/slides_loa_Z53HCGg.pdf", "type": "related"}]}, {"guid": "3f02dbb9-fd3e-5e50-b236-957741bec544", "code": "N39TFS", "id": 89392, "logo": null, "date": "2026-07-14T15:30:00+02:00", "start": "15:30", "end": "2026-07-14T17:00:00+02:00", "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).\n\n#### Setup for the tutorial:\n\nIf possible, please install everything that is necessary ahead of time, before getting to the tutorial:  https://github.com/vinigfer/europython_2026_load_testing_tutorial#setup", "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": "Currently Python specialist @ Azion Technologies, but also had several job titles and responsibilities during the 8+ years with the company. Including backend software engineer (mostly Django, Docker, k8s, Python 2 --> 3), QA/QE team lead, UXE manager.\nWorked on other companies, but unfortunately not using Python a lot.\n\nActive reviewer on CFP for Python conferences. If you submitted a talk or tutorial for PyCon US, EuroPython, PyCon Italia, ... There is a good chance I read it. Also volunteer as a mentor for 1st time speakers at conferences.\n\nLove 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": [{"title": "Slides used during the tutorial", "url": "/media/europython-2026/submissions/N39TFS/resources/slides_loa_Z53HCGg.pdf", "type": "related"}]}], "S4B": [{"guid": "f36e9da1-2842-53b0-af01-179ebbb7a646", "code": "ZPCDKE", "id": 91653, "logo": null, "date": "2026-07-14T09:30:00+02:00", "start": "09:30", "end": "2026-07-14T11:00:00+02:00", "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", "end": "2026-07-14T12:45:00+02:00", "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", "end": "2026-07-14T15:15:00+02:00", "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.\n\n## To workshop attendees:\nWorkshop repository is available at: https://gh.io/europython-codeql\n\nTo do before the workshop: install VS Code and set up the workshop repository following the instructions: https://github.com/sylwia-budzynska/codeql-workshop/?tab=readme-ov-file#option-a-local-installation. It should take 5-10 minutes.\n\nIf you can\u2019t/don\u2019t want to set up VS Code, you can create a codespace of the workshop repository which automatically downloads and installs everything we need for running CodeQL by following these instructions: https://github.com/sylwia-budzynska/codeql-workshop/?tab=readme-ov-file#option-b-github-codespace\n\nDuring the workshop I will set up the codespace and do all the exercises together with you. The workshop materials have a lot of reference material, cheatsheets, etc. Don\u2019t worry about it for now. It\u2019s there for you to go back to during the hands-on session in case something wasn\u2019t fully clear.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDSVUM", "name": "Sylwia Budzynska", "avatar": "https://programme.europython.eu/media/avatars/CDSVUM_RXnXjek.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", "end": "2026-07-14T17:00:00+02:00", "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.\n\n## To workshop attendees:\nWorkshop repository is available at: https://gh.io/europython-codeql\n\nTo do before the workshop: install VS Code and set up the workshop repository following the instructions: https://github.com/sylwia-budzynska/codeql-workshop/?tab=readme-ov-file#option-a-local-installation. It should take 5-10 minutes.\n\nIf you can\u2019t/don\u2019t want to set up VS Code, you can create a codespace of the workshop repository which automatically downloads and installs everything we need for running CodeQL by following these instructions: https://github.com/sylwia-budzynska/codeql-workshop/?tab=readme-ov-file#option-b-github-codespace\n\nDuring the workshop I will set up the codespace and do all the exercises together with you. The workshop materials have a lot of reference material, cheatsheets, etc. Don\u2019t worry about it for now. It\u2019s there for you to go back to during the hands-on session in case something wasn\u2019t fully clear.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDSVUM", "name": "Sylwia Budzynska", "avatar": "https://programme.europython.eu/media/avatars/CDSVUM_RXnXjek.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", "end": "2026-07-15T09:00:00+02:00", "duration": "01:00", "room": "S1", "slug": "europython-2026-96933-wednesday-registration-welcome-main-entrance", "url": "https://programme.europython.eu/europython-2026/talk/9V77RU/", "title": "Wednesday Registration & Welcome @ Main Entrance", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the Main Entrance.\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", "end": "2026-07-15T09:30:00+02: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", "end": "2026-07-15T10:15:00+02:00", "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", "end": "2026-07-15T11:30:00+02:00", "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": [{"title": "Slides", "url": "https://docs.google.com/presentation/d/1I4s8l1ChXH3gsrZXfoGBIaj6uj0VNuRh", "type": "related"}], "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", "end": "2026-07-15T12:10:00+02:00", "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", "end": "2026-07-15T12:50:00+02:00", "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", "end": "2026-07-15T14:20:00+02:00", "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", "end": "2026-07-15T15:00:00+02:00", "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", "end": "2026-07-15T15:55:00+02:00", "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", "end": "2026-07-15T16:35:00+02:00", "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": "007f4e33-d41a-5125-baf8-719c3daf4d1c", "code": "QYVZN8", "id": 102542, "logo": null, "date": "2026-07-15T16:45:00+02:00", "start": "16:45", "end": "2026-07-15T17:30:00+02:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-102542-core-py-recording-with-guido-van-rossum", "url": "https://programme.europython.eu/europython-2026/talk/QYVZN8/", "title": "Core.py recording with Guido van Rossum", "subtitle": "", "track": "Community Building, Education, Outreach", "type": "Keynote", "language": "en", "abstract": "Join us for a very special live episode of Core.py as Pablo Galindo Salgado and \u0141ukasz Langa somehow convince Guido van Rossum to sit down for what will almost certainly begin as a sensible conversation about Python and quickly spiral into war stories, controversial design decisions, ancient mailing-list archaeology, embarrassing bugs, impossible audience questions, and the occasional existential crisis about discuss.python.org. Expect behind-the-scenes stories you\u2019ve never heard before, plenty of laughs, and a rare chance to watch three people who have collectively shaped Python try to remember why they made half of its features in the first place. Buckle up: this one\u2019s live, unscripted, and anything could happen.", "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/"}, {"code": "MSTXQR", "name": "\u0141ukasz Langa", "avatar": null, "biography": null, "public_name": "\u0141ukasz Langa", "guid": "417e4600-e4c9-5a3e-93e0-983efdc20d48", "url": "https://programme.europython.eu/europython-2026/speaker/MSTXQR/"}, {"code": "TABFST", "name": "Guido van Rossum", "avatar": null, "biography": null, "public_name": "Guido van Rossum", "guid": "70ff315f-f92f-5fb7-b975-97bf587f4347", "url": "https://programme.europython.eu/europython-2026/speaker/TABFST/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QYVZN8/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QYVZN8/", "attachments": []}, {"guid": "f7249939-a540-5ef6-af3e-92642f485136", "code": "G9QJBU", "id": 101788, "logo": null, "date": "2026-07-15T17:30:00+02:00", "start": "17:30", "end": "2026-07-15T17:40:00+02:00", "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", "end": "2026-07-15T17:55:00+02:00", "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", "end": "2026-07-15T18:40:00+02:00", "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: https://forms.gle/CXx7uzccpDQFq9Lt7\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", "end": "2026-07-15T11:30:00+02:00", "duration": "00:45", "room": "S2", "slug": "europython-2026-91718-how-cpython-errors-keep-getting-better", "url": "https://programme.europython.eu/europython-2026/talk/DWBGJ9/", "title": "How CPython 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", "end": "2026-07-15T12:10:00+02:00", "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", "end": "2026-07-15T12:50:00+02:00", "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": [{"title": "Talk slides", "url": "/media/europython-2026/submissions/UPELCT/resources/Friendly_B_pgkWyLJ.pdf", "type": "related"}]}, {"guid": "90b07acc-ce03-5342-9697-d7df61559ce1", "code": "NWLBJC", "id": 89608, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "end": "2026-07-15T14:20:00+02:00", "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": [{"title": "Slides presented at EuroPython 2026", "url": "/media/europython-2026/submissions/NWLBJC/resources/EuroPython_LyJGfmQ.pdf", "type": "related"}]}, {"guid": "52195466-e65e-52d6-8886-54ca41f4c66e", "code": "8CDAWL", "id": 91592, "logo": null, "date": "2026-07-15T14:30:00+02:00", "start": "14:30", "end": "2026-07-15T15:00:00+02:00", "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", "end": "2026-07-15T15:55:00+02:00", "duration": "00:30", "room": "S2", "slug": "europython-2026-91651-uvx-which-profiler-which-profiler-when", "url": "https://programme.europython.eu/europython-2026/talk/CKXUGV/", "title": "uvx which-profiler \u2013 Which Profiler, When", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "Want to know what makes your code slow? How much memory it actually uses? You reach for a profiler, but which one?\n\nIn this talk, we navigate the landscape of Python profilers, from classics like py-spy, Scalene and memray to newer tools like Tachyon, and work out when to use which. We cover timing and memory profiling methodologies, the sampling vs instrumentation distinction, and compare tools across multiple axes: accuracy and overhead, output format, native extension and thread support, and how well their output fits into agentic coding workflows. We also touch on the Linux perf profiler, eBPF-based profilers and continuous profiling for production systems.\n\nWalk away with a profiler or two you hadn't tried before, a clearer sense of when to use which, and a CLI tool to help you decide next time you're unsure where to start.\n\nSlides and code: https://github.com/jstriebel/which-profiler", "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 software engineer at the intersection of research and production, with deep experience in ML inference pipelines, distributed systems, and data-intensive biomedical imaging. Performance optimization has been a recurring part of his work, including profiling-driven improvements to large-scale ML inference pipelines, and previous talks on single-core optimization and profilers at EuroPython, PyConDE and PyCon Italia. He is also co-author of the Zarr v3 open data standard, widely adopted in scientific computing. Based in Berlin \ud83d\udc3b", "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", "end": "2026-07-15T16:35:00+02:00", "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", "end": "2026-07-15T11:30:00+02:00", "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": [{"title": "Slides", "url": "/media/europython-2026/submissions/QT97WA/resources/EuroPython_QpG0Wq7.pdf", "type": "related"}]}, {"guid": "86ef3a63-5656-520b-a117-8b43d4c1ca2d", "code": "NEH7RE", "id": 89705, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "end": "2026-07-15T12:10:00+02:00", "duration": "00:30", "room": "S4", "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": "a68f82ec-6c24-5991-9d81-4301180b1496", "code": "D899EP", "id": 100244, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "end": "2026-07-15T12:50:00+02:00", "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", "end": "2026-07-15T14:20:00+02:00", "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", "end": "2026-07-15T15:00:00+02:00", "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", "end": "2026-07-15T15:55:00+02:00", "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": [{"title": "Talk Slides", "url": "https://downloads.egenix.com/python/EuroPython-2026-Talk-DuckLake-2026-07-15.pdf", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/H7KGU3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/H7KGU3/", "attachments": []}, {"guid": "b4e6f7b7-c574-5b90-b306-1b080c0c7eb2", "code": "LPCMNQ", "id": 91231, "logo": null, "date": "2026-07-15T16:05:00+02:00", "start": "16:05", "end": "2026-07-15T16:35:00+02:00", "duration": "00:30", "room": "S4", "slug": "europython-2026-91231-zero-to-pipeline-when-data-connectors-just-work", "url": "https://programme.europython.eu/europython-2026/talk/LPCMNQ/", "title": "Zero to Pipeline: When Data Connectors Just Work", "subtitle": "", "track": "Data Engineering and MLOps", "type": "Talk", "language": "en", "abstract": "Remember spending entire afternoons configuring data connectors, debugging OAuth flows, and writing custom parsers just to ingest data from a single API? What if you could just say pipeline source add feast and have your pipeline automatically discover the API, handle authentication, and start ingesting data no config files, no setup wizards, no SDK imports?\n\nIn this 30-minute talk, I'll show you the reality behind self-configuring data pipelines that sound too good to be true but actually work. Using a fraud detection use case Feast feature store, MLflow experiment tracking, Prometheus metrics, and Linear for issue tracking we'll explore how intelligent connectors leverage LLM-driven API discovery, automatic credential management, self-healing auth, and cursor-based checkpointing to eliminate the traditional pain points of data ingestion.\n\nWe'll be honest about the tradeoffs too.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "HKY9E8", "name": "Olusola Akinsulere", "avatar": "https://programme.europython.eu/media/avatars/HKY9E8_0T6beJs.webp", "biography": "Olusola Lanre Akinsulere is an engineering leader and backend specialist with over seven years of experience building reliable systems at scale. He has led teams across fintech, commerce, and platform products shipping high-throughput services and processing high-volume transactions in demanding, latency-sensitive environments.\n\nHis technical depth spans distributed systems, payments infrastructure, and data-driven platforms. He is known for bringing clarity to complex codebases, making hard architectural calls under tight timelines, and consistently delivering on commitments.\n\nHe currently focuses on combining robust backend architecture with applied AI turning infrastructure into a competitive advantage where connectivity and reliability constraints make every engineering decision count.\n\nHe is drawn to system design, developer productivity, and the practical application of machine learning in everyday products. He also mentors engineers and invests in the kind of team culture where technical excellence and clear product thinking reinforce each other.\n\nOutside of work, he explores fitness, personal projects, and tools that help teams move faster.", "public_name": "Olusola Akinsulere", "guid": "c6a3be0a-821e-5aea-8eba-5ba3a42680e9", "url": "https://programme.europython.eu/europython-2026/speaker/HKY9E8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LPCMNQ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LPCMNQ/", "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", "end": "2026-07-15T11:30:00+02:00", "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", "end": "2026-07-15T12:10:00+02:00", "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", "end": "2026-07-15T12:50:00+02:00", "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", "end": "2026-07-15T14:50:00+02:00", "duration": "01:00", "room": "S3A", "slug": "europython-2026-101792-security-and-ethics-in-the-age-of-generative-ai", "url": "https://programme.europython.eu/europython-2026/talk/N9HKQN/", "title": "Security and Ethics in the Age of Generative AI", "subtitle": "", "track": null, "type": "Panel", "language": "en", "abstract": "This panel brings together experts from different corners of the field to talk about how generative AI is changing cybersecurity and the tricky challenges that come with it. Not only will we explore the technical aspects, but also the ethical considerations our society must have with in this rapidly evolving landscape.\n\nWe're not treating this as just a technical conversation. Generative AI in cybersecurity touches code, strategy, and ethics all at once, and we want to dig into all three. By the end of the panel, you should walk away with a clearer sense of the real risks at the language and ecosystem level, some practical lessons from teams working security operations day to day, and a more grounded take on the ethical questions this technology raises.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CDSVUM", "name": "Sylwia Budzynska", "avatar": "https://programme.europython.eu/media/avatars/CDSVUM_RXnXjek.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/"}, {"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. I have been working as a Python developer since 2016.\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/"}, {"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/"}, {"code": "KKVUH8", "name": "Seth Michael Larson", "avatar": "https://programme.europython.eu/media/avatars/KKVUH8_P4CQm3d.webp", "biography": "Security Developer-in-Residence at the Python Software Foundation since 2023. Python core developer and PSF Fellow. Maintainer of several open source Python projects including urllib3, Requests, and Truststore. Seth writes about open source, security, Python, and retro video games [on his blog](https://sethmlarson.dev/).", "public_name": "Seth Michael Larson", "guid": "2df04f01-8065-5321-b390-a28f96adb218", "url": "https://programme.europython.eu/europython-2026/speaker/KKVUH8/"}, {"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": "TTQETX", "name": "Maria Jose Molina-Contreras", "avatar": null, "biography": null, "public_name": "Maria Jose Molina-Contreras", "guid": "fef13dd0-d187-53fa-afde-e02c9a9d4c91", "url": "https://programme.europython.eu/europython-2026/speaker/TTQETX/"}], "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", "end": "2026-07-15T15:55:00+02:00", "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", "end": "2026-07-15T16:35:00+02:00", "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", "end": "2026-07-15T11:30:00+02:00", "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": [{"title": "gcp-attest on PyPI", "url": "https://pypi.org/project/gcp-attest/", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/M8Q77Z/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/M8Q77Z/", "attachments": [{"title": "Slides", "url": "/media/europython-2026/submissions/M8Q77Z/resources/Should_you_jbXzWD1.pdf", "type": "related"}]}, {"guid": "dd4a5ad7-e88b-5d78-9e71-672dc1ee1b61", "code": "NHDPCM", "id": 90903, "logo": null, "date": "2026-07-15T11:40:00+02:00", "start": "11:40", "end": "2026-07-15T12:10:00+02:00", "duration": "00:30", "room": "S3B", "slug": "europython-2026-90903-exploring-python-inspect-enriching-stack-traces-and-testing-the-untestable", "url": "https://programme.europython.eu/europython-2026/talk/NHDPCM/", "title": "Exploring Python Inspect: Enriching Stack Traces and Testing the Untestable", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk", "language": "en", "abstract": "If your stack traces are missing crucial information about the runtime state of your program(s) or if you are developing tests which assert beyond the possibilities of common testing frameworks, then Python's `inspect` module can help you out. The `inspect` standard library puts the power to analyze the current execution context at your fingertips. For instance, you can supercharge your stack traces by enriching them with relevant variable values from any level of the call stack, saving you valuable time trying to debug and reproduce critical issues. In addition, `inspect` makes it easy to perform complex assertions about the execution of your code, such as from where a function is being called, whether a nested function behaves correctly, and what signature and context generated functions have.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "KYXLTA", "name": "Mika Allert", "avatar": "https://programme.europython.eu/media/avatars/KYXLTA_eb185US.webp", "biography": "Mika Allert is a software engineer at Bloomberg, where he works on connecting Bloomberg\u2019s products to trading venues around the globe through a standardized interface. In addition to working on various trading connectivity infrastructure at Bloomberg, Mika has also worked at an online brokerage for a major German bank.\n\nHe is passionate about understanding complex topics from the ground up and using that knowledge to tinker and find creative solutions to challenging issues. Whenever Mika encounters an issue, you\u2019ll find him tracking it down and creating solutions for everyone who might run into something similar.\n\nMika earned a bachelor's degree in computer science from Goethe University Frankfurt. Outside of work, you will find him cycling around airports, playing video games, and eating ice cream while watching movies.", "public_name": "Mika Allert", "guid": "38de7122-a6df-58e1-96da-083bf2f3142f", "url": "https://programme.europython.eu/europython-2026/speaker/KYXLTA/"}], "links": [{"title": "Code Samples", "url": "https://github.com/SoulofAkuma/exploring-python-inspect-europython", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/NHDPCM/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/NHDPCM/", "attachments": [{"title": "Slides", "url": "/media/europython-2026/submissions/NHDPCM/resources/Exploring__KbPOwXu.pdf", "type": "related"}]}, {"guid": "4aa5a861-0375-57b4-ab57-5ba9e8df4f62", "code": "BFDXVF", "id": 90827, "logo": null, "date": "2026-07-15T12:20:00+02:00", "start": "12:20", "end": "2026-07-15T12:50:00+02:00", "duration": "00:30", "room": "S3B", "slug": "europython-2026-90827-untangling-the-web-alternative-internet-protocols-in-python", "url": "https://programme.europython.eu/europython-2026/talk/BFDXVF/", "title": "Untangling the Web: Alternative Internet Protocols in Python", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "The web has grown into something its creators never imagined \u2014 a tangle of trackers, JavaScript bundles, and cookie consent banners standing between people and the content they came for. But alongside this bloated web, a quieter movement has been growing: the Small Internet. Communities of developers, writers, and tinkerers are building spaces that prioritize content over chrome, using protocols like Gemini that deliberately resist the complexity of the modern web. The Geminispace has grown from 200k unique URLs across 750 gemini capsules in 2021, to 530k URLs across almost 5,000 capsules at the time of writing.\nThis talk is an invitation to explore that world. We'll start with the \"why\" \u2014 what's driving people to seek alternatives to the modern web, and what the Small Internet's philosophy of intentional simplicity offers to developers who spend their days wrestling with ever-growing complexity. Then we'll get practical. The Gemini Protocol, created in 2019, sits in a sweet spot between Gopher's austerity and HTTP's complexity: using a simple TLS trust mechanism and a markup language called Gemtext, it\u2019s deliberately designed to resist feature creep. You'll learn how the protocol works, what Geminispace looks like from the inside, and how communities like Tilde servers carry on the collaborative spirit of early Unix.\nThe second half of the talk showcases how Python can be specially useful to interact with this space. Astronomo is a modern Gemini browser for the terminal, built with Textual, supporting Gemini, Gopher, and Finger protocols out of the box. It has rich Gemtext rendering, identity management, RSS reader, and full mouse support. It's the lens through which we'll explore the Geminispace.\nOn the server side, Xitzin is a framework for building Gemini applications: decorator-based routing, Jinja2 templates, and async support. A step-by-step walkthrough will show how to build a microblogging application from scratch: user accounts powered by Gemini's client certificate system (no passwords, no sign-up forms), posting through native input prompts, and threaded comments \u2014 all in under 100 lines of Python.\nYou don't need to abandon the web to appreciate what the Small Internet offers. Whether you leave this talk ready to launch your own Gemini capsule, contribute to a Tilde, or simply with a fresh perspective on what \"simple\" can look like in software, you'll walk away with working knowledge of a corner of the internet that many developers don't know exists, and the Python tools to start exploring it.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NNS7WW", "name": "Alan Velasco", "avatar": "https://programme.europython.eu/media/avatars/NNS7WW_AeotFAT.webp", "biography": "I'm a Software Engineer from Mexico now living in Spain.\nPassionate about Open Source, Digital Rights, and the Internet as a Public Good", "public_name": "Alan Velasco", "guid": "9ca97262-7283-5570-ad32-602f1cec2673", "url": "https://programme.europython.eu/europython-2026/speaker/NNS7WW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BFDXVF/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BFDXVF/", "attachments": []}, {"guid": "c1f749eb-ecab-5a03-bc14-6c03b9765f61", "code": "DRXC3E", "id": 91384, "logo": null, "date": "2026-07-15T13:50:00+02:00", "start": "13:50", "end": "2026-07-15T14:20:00+02:00", "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", "end": "2026-07-15T15:00:00+02:00", "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", "end": "2026-07-15T15:55:00+02:00", "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", "end": "2026-07-15T16:35:00+02:00", "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", "end": "2026-07-15T13:50:00+02:00", "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", "end": "2026-07-15T13:50:00+02:00", "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": []}]}}, {"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", "end": "2026-07-16T09:00:00+02:00", "duration": "01:00", "room": "S1", "slug": "europython-2026-97550-thursday-registration-welcome-main-entrance", "url": "https://programme.europython.eu/europython-2026/talk/QDCP3K/", "title": "Thursday Registration & Welcome @ Main Entrance", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the Main Entrance.\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", "end": "2026-07-16T09:15:00+02: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", "end": "2026-07-16T10:05:00+02:00", "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", "end": "2026-07-16T10:30:00+02:00", "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", "end": "2026-07-16T11:35:00+02:00", "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", "end": "2026-07-16T12:15:00+02:00", "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", "end": "2026-07-16T12:55:00+02:00", "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", "end": "2026-07-16T13:35:00+02:00", "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", "end": "2026-07-16T15:00:00+02:00", "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": "dcee2385-799b-56d6-9222-8cedf2bae645", "code": "HKYALY", "id": 89461, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "end": "2026-07-16T15:40:00+02:00", "duration": "00:30", "room": "S1", "slug": "europython-2026-89461-supercharging-litestar-extensibility-through-plugins", "url": "https://programme.europython.eu/europython-2026/talk/HKYALY/", "title": "Supercharging Litestar: Extensibility Through Plugins", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Discover how to extend Litestar's core functionality using its powerful plugin system.\n\nThis talk demonstrates practical ways to enhance Litestar applications through custom plugins, highlighting the framework's extensibility and ease of use. Litestar solves the challenge of building flexible Python web applications without adding excessive complexity. \n\nIn this talk, you\u2019ll see how its plugin system offers a convenient way to package and distribute code for routes, middleware, security, dependencies, and more\u2014all in a single contained unit. Similar to Flask blueprints or pytest plugins, Litestar plugins let you streamline development by removing boilerplate and providing a clear path for extending or sharing functionality across projects. \n\nBy the end, you\u2019ll have concrete steps for building, integrating, and distributing plugin-driven solutions that simplify your Litestar applications at any scale.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "S9XY8N", "name": "Jacob Coffee", "avatar": "https://programme.europython.eu/media/avatars/S9XY8N_8FyIg6i.webp", "biography": "Jacob Coffee is the Director of Engineering at the Python Software Foundation and a CPython triager. He supports key Python services such as PyPI.org and Python.org while also contributing to the maintenance of the Litestar ecosystem which boasts libraries such as Litestar, Advanced Alchemy, Polyfactory, and more. He is passionate about open-source development, the mission of the PSF, and enhancing the tools that empower developers worldwide.", "public_name": "Jacob Coffee", "guid": "dc7be410-a26e-55ec-8172-330b2a910cf5", "url": "https://programme.europython.eu/europython-2026/speaker/S9XY8N/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/HKYALY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/HKYALY/", "attachments": []}, {"guid": "3c42533e-b004-54f6-984f-b98ac48bb1c1", "code": "9JALSN", "id": 89990, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "end": "2026-07-16T16:30:00+02: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": "Security Developer-in-Residence at the Python Software Foundation since 2023. Python core developer and PSF Fellow. Maintainer of several open source Python projects including urllib3, Requests, and Truststore. Seth writes about open source, security, Python, and retro video games [on his blog](https://sethmlarson.dev/).", "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": "799f5e67-40af-52e8-9d2e-af78ef8c6908", "code": "PREUNW", "id": 102318, "logo": null, "date": "2026-07-16T16:40:00+02:00", "start": "16:40", "end": "2026-07-16T17:25:00+02:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-102318-how-to-run-160-km-building-resilience-when-things-feel-hard", "url": "https://programme.europython.eu/europython-2026/talk/PREUNW/", "title": "How to Run 160 KM: Building Resilience When Things Feel Hard", "subtitle": "", "track": "~ None of these topics", "type": "Keynote", "language": "en", "abstract": "What does running 160km (100 miles) have to do with open source? Everything. Both demand that you show up consistently, put in the work, and keep moving forward\u2014even when the path feels uncertain and even when people tell you it can't be done. This talk draws on my journey as an ultrarunner, a data-driven ecologist in a field dominated by traditional fieldwork, and a founder of a nonprofit effort that leverages community as both a support system and a powerful force to tackle hard technical problems. I\u2019ll share my journey and what it really takes to build resilience in the face of uncertainty. You'll leave with a simple framework for moving forward when the path is unclear and the world is rapidly changing. You\u2019ll leave with a better understanding of how to find the signal through the noise and how to build toward something bigger than yourself, one step at a time, and why the people around you are your most powerful resource.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "9WDSHA", "name": "Leah Wasser", "avatar": "https://programme.europython.eu/media/avatars/VPKPA9_sOObw8b.webp", "biography": "Leah Wasser is the Executive Director and founder of pyOpenSci, a community of 400+ researchers, engineers, and maintainers working to make developing and maintaining research software more accessible, sustainable, and human. Through open peer review \u2014 with 60+ packages reviewed to date \u2014 contributor mentorship, and accessible training, pyOpenSci helps scientists build better software and develop the technical skills to participate in open source.\n\nLeah's work sits at the intersection of open source, open science, and open education \u2014 with inclusion at the center. She organizes the Maintainers Summit at PyCon US and believes the communities behind research software matter as much as the code itself.\n\nAs GenAI reshapes how software gets built, Leah is focused on protecting the human networks and reciprocal relationships that make open source sustainable \u2014 not just technically, but socially.\nShe has built nationally recognized programs at the National Ecological Observatory Network (NEON) and the University of Colorado Boulder. Leah holds a PhD in ecology and is an active open source maintainer. In her free time, you can find Leah on the trails with her rescue pup or at the gym lifting weights and swinging around bars and rings.", "public_name": "Leah Wasser", "guid": "f1131476-68d0-5d1d-a1fe-da9a0a881f1f", "url": "https://programme.europython.eu/europython-2026/speaker/9WDSHA/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PREUNW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PREUNW/", "attachments": []}, {"guid": "0014970b-4a19-5c1e-8674-994026de34d9", "code": "DJU8GK", "id": 97553, "logo": null, "date": "2026-07-16T17:25:00+02:00", "start": "17:25", "end": "2026-07-16T18:10:00+02:00", "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: https://forms.gle/CXx7uzccpDQFq9Lt7\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", "end": "2026-07-16T11:35:00+02:00", "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", "end": "2026-07-16T12:15:00+02:00", "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", "end": "2026-07-16T12:55:00+02:00", "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 and Pythonista. 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", "end": "2026-07-16T13:35:00+02:00", "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", "end": "2026-07-16T15:30:00+02:00", "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": "CPython is changing quickly, with major work happening across performance, the JIT, subinterpreters, free-threading, typing, documentation, tooling, and the contributor workflow.\nThis panel brings together core developers with both long-term experience and newer perspectives to discuss where CPython is heading, why these changes matter, and how new ideas become part of the project.\nThe conversation will also focus on how people can contribute, whether by testing new features, reporting bugs, fixing issues, improving documentation, reviewing changes, or proposing their own ideas.\nThe goal is to help attendees understand how CPython works today, where it is going next, and where they can get involved.\n\n* Hosts: Diego Russo\n* Panelists:\n    * Alex Waygood\n    * Eric Snow\n    * Ken Jin\n    * Peter Bierma\n    * Yuri Selivanov\n    * Mark Shannon", "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", "end": "2026-07-16T16:30:00+02: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_4ISIWZ8.webp", "biography": "I'm an Open Source sustainability researcher, and the Executive Director of the [Software Stewardship Lab](https://stewardshiplab.org/), a non-profit applied research lab dedicated to ensuring the stability of the Open Source ecosystem we all rely on.\n\nI'm also the Director 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 $7,156,281 for maintainers since launching.\n\nAdditionally, I am doing a PhD at the [University of Edinburgh](https://edwebprofiles.ed.ac.uk/profile/vladh) on the ethics and epistemology of Open Source software.\n\nI write on [vlad.website](https://vlad.website/). I love cats and birds.", "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", "end": "2026-07-16T11:35:00+02:00", "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": "https://programme.europython.eu/media/avatars/P3TRFT_vxBbDSX.webp", "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": "e7cf5b8f-4462-5daf-9ac8-671de5bbb82f", "code": "9URK9U", "id": 91425, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "end": "2026-07-16T12:15:00+02:00", "duration": "00:30", "room": "S4", "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": "Talk", "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.\n\nSlides: https://github.com/jankoprowski/ep2026", "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": []}, {"guid": "ed0255b4-762e-5f46-9721-07675485fc8a", "code": "9MRVPM", "id": 90882, "logo": null, "date": "2026-07-16T12:25:00+02:00", "start": "12:25", "end": "2026-07-16T12:55:00+02:00", "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", "end": "2026-07-16T13:35:00+02:00", "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", "end": "2026-07-16T15:00:00+02:00", "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": "69d680f3-f3f4-5c9b-b2d4-3b5be399f1f0", "code": "TUKAYS", "id": 91539, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "end": "2026-07-16T15:40:00+02:00", "duration": "00:30", "room": "S4", "slug": "europython-2026-91539-hunting-the-invisible-indirect-prompt-injection-in-python-pipelines", "url": "https://programme.europython.eu/europython-2026/talk/TUKAYS/", "title": "Hunting the Invisible: Indirect Prompt Injection in Python Pipelines", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "AI agents are no longer just generating text, they are reading PDFs, scraping websites, calling APIs, and taking autonomous actions inside our Python applications. But what happens when the documents they read are malicious?\n\nIn this talk, we\u2019ll explore indirect prompt injection, a subtle but major attack where hidden instructions embedded in PDFs, HTML pages, or external data sources hijack an AI system\u2019s behavior. Unlike classic prompt injection, this attack doesn\u2019t come from the user, it comes from the data your Python pipeline trusts.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "3VHXXW", "name": "John Robert", "avatar": "https://programme.europython.eu/media/avatars/3VHXXW_K3RUGDC.webp", "biography": "John Robert is a Lead Data and ML Engineer at Sunnic Lighthouse subsidiary of Enerparc AG. Previously worked  Mercedes-Benz (Daimler) and Bosch. He is the  founder of Don\u2019t Fear AI, John leverages his 8 years of Python expertise to help developers architect secure, transparent, and resilient AI systems. A frequent speaker at PyCon, PyCon DE, and Data Natives, he specializes in the high-stakes world of AI agent safety, prompt injection defense, and autonomous system evaluation. \n\nHe has also built production ML pipelines and applications such as the Manage Pet AI app. Outside of tech and AI, John enjoys traveling for fun having visited over 50 countries.", "public_name": "John Robert", "guid": "bbf2f7ea-e41b-53fa-b2b2-80d583de275c", "url": "https://programme.europython.eu/europython-2026/speaker/3VHXXW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/TUKAYS/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/TUKAYS/", "attachments": []}, {"guid": "31409c6e-e1a0-589e-b945-dc065b979cdd", "code": "QVLRX3", "id": 102497, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "end": "2026-07-16T16:30:00+02:00", "duration": "00:30", "room": "S4", "slug": "europython-2026-102497-ai-slop-to-ai-gold-building-codebases-that-last", "url": "https://programme.europython.eu/europython-2026/talk/QVLRX3/", "title": "AI Slop to AI Gold: Building Codebases That Last", "subtitle": "", "track": "~ None of these topics", "type": "Sponsored", "language": "en", "abstract": "AI can generate Python faster than ever before. It can also generate an astonishing amount of code that nobody wants to maintain.\n\nThat's not a new problem.\n\nEvery generation of software tooling has made writing code cheaper while increasing the cost of poor engineering. AI is simply the latest example.\n\nSome Python features and architectural patterns don't just catch bugs - they make them difficult to write in the first place. Those ideas weren't designed for AI, but they may be exactly what AI needs.\n\nAI hasn't changed what good software engineering looks like. It's made good software engineering impossible to ignore.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LRGLQ8", "name": "Dan Jones", "avatar": "https://programme.europython.eu/media/avatars/YCB7SM_J888lGk.webp", "biography": "Dan is your average coffee enjoyer who also writes code and boulders. He cares about type safety, testability, and the collaborative engineering practices that help teams build maintainable software.", "public_name": "Dan Jones", "guid": "c31b047a-040a-5dcb-8345-2c2c764ad25c", "url": "https://programme.europython.eu/europython-2026/speaker/LRGLQ8/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/QVLRX3/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/QVLRX3/", "attachments": [{"title": "Presentation slides", "url": "/media/europython-2026/submissions/QVLRX3/resources/ai-slop-to_ZHNYc34.pdf", "type": "related"}, {"title": "Presentation slides with speaker notes", "url": "/media/europython-2026/submissions/QVLRX3/resources/ai-slop-to_jLP2fC3.pdf", "type": "related"}]}], "S3A": [{"guid": "742970df-19a8-539b-9b40-81a4103e38df", "code": "LFSJYL", "id": 91650, "logo": null, "date": "2026-07-16T10:50:00+02:00", "start": "10:50", "end": "2026-07-16T11:35:00+02:00", "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\nCurrently I'm the AI Lead at TEQYARD, but I've been working with ML/AI 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 small 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": "837a2eed-b0d0-513e-a91f-6778ee853be4", "code": "JQSQBB", "id": 91576, "logo": null, "date": "2026-07-16T11:45:00+02:00", "start": "11:45", "end": "2026-07-16T12:15:00+02:00", "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", "end": "2026-07-16T12:55:00+02:00", "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": "ae8be434-c209-5c14-9db4-b460dadb76d7", "code": "PYSSRZ", "id": 90610, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "end": "2026-07-16T13:35:00+02:00", "duration": "00:30", "room": "S3A", "slug": "europython-2026-90610-the-self-healing-web-designing-resilient-typo-proof-urls", "url": "https://programme.europython.eu/europython-2026/talk/PYSSRZ/", "title": "The Self-Healing Web: Designing Resilient, Typo-Proof URLs", "subtitle": "", "track": "Web Development, Web APIs, Front-End Integration", "type": "Talk", "language": "en", "abstract": "Are you a user of a popular web application who gets frustrated when you encounter a poorly formatted URL resulting in a 404 error? Or are you a developer who just wants a nice way to make your app more user-friendly? Look no further, a self-healing URL *may* be the solution to your problems.\n\nThis talk explores the core principles of self-healing URLs - a URL routing strategy that treat unique identifiers in the URL as the \"source of truth\", while allowing human-readable portions to be flexible or even missing. We will also examine the architectural patterns and logic required to resolve these \"broken\" paths, such as partial string (fuzzy) matching.\n\nUsing the flask-selfheal package as a practical showcase, I'll show you how these concepts can be implemented in a real-world web application. We\u2019ll also look under the hood at how to \"teach\" a routing engine to recognise a user's intent and automatically redirect them to the correct URL.\n\nBy the end of the talk, you will understand what a self-healing URL is and how it can be implemented in your own web applications, regardless of the language or framework you are using.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "7P8SAX", "name": "Dominic Hollis", "avatar": "https://programme.europython.eu/media/avatars/7P8SAX_6IcWHcM.webp", "biography": "I'm a Full-Stack Engineer and occasional CPython contributor, working for a startup in Lausanne, Switzerland.", "public_name": "Dominic Hollis", "guid": "a9e8ee95-9ac7-5d4e-bb25-c0fe6c6ce234", "url": "https://programme.europython.eu/europython-2026/speaker/7P8SAX/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/PYSSRZ/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/PYSSRZ/", "attachments": []}, {"guid": "0fb552f5-5f24-5ab1-9737-4938254f6cd5", "code": "A73TSA", "id": 91714, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "end": "2026-07-16T15:00:00+02:00", "duration": "00:30", "room": "S3A", "slug": "europython-2026-91714-leverage-pytest-s-fixture-to-write-focused-and-highly-decoupled-tests", "url": "https://programme.europython.eu/europython-2026/talk/A73TSA/", "title": "Leverage pytest's Fixture to write focused and highly decoupled tests", "subtitle": "", "track": "Testing, Quality Assurance, Security", "type": "Talk", "language": "en", "abstract": "Everyone knows that tests are important, but not many people like writing them. That doesn\u2019t happen because they don\u2019t consider tests worth the time, but because writing them looks boring, repetitive, and, somehow, sometimes the test suite suddenly becomes a burden to maintain.\n\nA common situation is:\n\n- You edit one line of code, and the whole test suite no longer works.\n- When you open the first test, you have absolutely no idea what it is supposed to test.\n- 80% of the test\u2019s lines are not about the test.\n- The remaining 20% of the lines are scattered throughout the other 80% of the lines.\n- You manage to fix it, but it has been frustrating.\n- You open another test, same situation, and maybe the same fix is needed.\n- Frustration goes up.\n- Writing tests have become annoying...\n\nSince writing tests can\u2019t (and shouldn\u2019t!) be avoided, let\u2019s try to improve the way both single tests and the whole test suite are written.\n\nWith this talk, thanks to both paradigms and pytest\u2019s Fixtures, you will learn to:\n\n- Reduce coupling with the codebase.\n- Keep each test focused on what it needs to test.\n- Avoid code duplication among tests.\n- Improve tests\u2019 setup and teardown.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "S8EGEB", "name": "Antonio Spadaro", "avatar": "https://programme.europython.eu/media/avatars/S8EGEB_0flT7tZ.webp", "biography": "I'm a enthusiast Python software developer since I was a child. The passion led me to contribute to Open-Source projects, participate to competitive programming competitions, and sharing my knowledge giving speech about the challenging issues I've found in my experience.", "public_name": "Antonio Spadaro", "guid": "6c8277b2-0017-5fd5-b5fc-fd95b932e2c8", "url": "https://programme.europython.eu/europython-2026/speaker/S8EGEB/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/A73TSA/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/A73TSA/", "attachments": []}, {"guid": "a3624731-78be-51d9-8a5d-02b13e67d205", "code": "BFK3JK", "id": 91115, "logo": null, "date": "2026-07-16T15:10:00+02:00", "start": "15:10", "end": "2026-07-16T15:40:00+02:00", "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": [{"title": "Slides: Faster Django ORM queries for everybody", "url": "/media/europython-2026/submissions/BFK3JK/resources/ep2026-jan_3TV9j5Q.pdf", "type": "related"}, {"title": "Slides with extra text: Faster Django ORM queries for everybody", "url": "/media/europython-2026/submissions/BFK3JK/resources/faster-dja_kvCqjd6.pdf", "type": "related"}]}, {"guid": "17b6bddc-6f2e-51bf-8f68-e56930bfe07b", "code": "QHFXXA", "id": 91081, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "end": "2026-07-16T16:30:00+02: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", "end": "2026-07-16T11:35:00+02:00", "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", "end": "2026-07-16T12:15:00+02:00", "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", "end": "2026-07-16T12:55:00+02:00", "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_fhnr4Mr.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": [{"title": "Presentation slides", "url": "/media/europython-2026/submissions/YKWMBZ/resources/slides_qkw7hRd.pdf", "type": "related"}]}, {"guid": "9b5e5eb5-9ea5-5377-a9c5-a6ed60eafdf8", "code": "E3GVVR", "id": 91008, "logo": null, "date": "2026-07-16T13:05:00+02:00", "start": "13:05", "end": "2026-07-16T13:35:00+02:00", "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", "end": "2026-07-16T15:00:00+02:00", "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", "end": "2026-07-16T15:40:00+02:00", "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": "d00231a2-1655-5da0-b1f1-1881ce80ab05", "code": "CHB898", "id": 91661, "logo": null, "date": "2026-07-16T16:00:00+02:00", "start": "16:00", "end": "2026-07-16T16:30:00+02:00", "duration": "00:30", "room": "S3B", "slug": "europython-2026-91661-data-wrangling-in-a-modern-terminal", "url": "https://programme.europython.eu/europython-2026/talk/CHB898/", "title": "Data wrangling in a modern terminal", "subtitle": "", "track": "Data preparation and visualisation", "type": "Talk", "language": "en", "abstract": "Once we constrain ourselves to a rectangle of fixed-width characters (preferably white on a black background), we start to see the world a bit differently. If we want to thoroughly investigate it (a.k.a. perform data analysis), we have to be equipped with appropriate tools - be it techniques, libraries or standalone console-based applications. Let\u2019s see what the terminal has to offer when reading, manipulating, presenting and even plotting numerical data. We might even finish with a live dashboard your audience will love (or perhaps will not).", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CKX3LQ", "name": "Jan Pipek", "avatar": "https://programme.europython.eu/media/avatars/CKX3LQ_xHRXRLL.webp", "biography": "A physicist by education, software engineer by occupation, having a 20+ years long relationship with Python.", "public_name": "Jan Pipek", "guid": "7b473563-6992-5aa4-aa57-256fde989712", "url": "https://programme.europython.eu/europython-2026/speaker/CKX3LQ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/CHB898/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/CHB898/", "attachments": []}], "F0 (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", "end": "2026-07-16T13:20:00+02:00", "duration": "02:30", "room": "F0 (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", "end": "2026-07-16T14:25:00+02:00", "duration": "01:05", "room": "F0 (Glass Room)", "slug": "europython-2026-101789-pyladies-lunch", "url": "https://programme.europython.eu/europython-2026/talk/PXRCR9/", "title": "PyLadies Lunch", "subtitle": "", "track": null, "type": "Lunch", "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", "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": []}], "F2 (Fishbowl Room)": [{"guid": "12220bb9-91d7-5e97-ad60-1c4625af3bb0", "code": "CERV3F", "id": 101696, "logo": null, "date": "2026-07-16T14:30:00+02:00", "start": "14:30", "end": "2026-07-16T16:30:00+02:00", "duration": "02:00", "room": "F2 (Fishbowl 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 B": [{"guid": "580b7a1f-ecdb-5a01-9fab-7e721683bbd1", "code": "SEJYRG", "id": 100248, "logo": null, "date": "2026-07-16T13:15:00+02:00", "start": "13:15", "end": "2026-07-16T14:15:00+02:00", "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", "end": "2026-07-16T14:15:00+02:00", "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": [{"title": "The poster (slightly revised after the conference)", "url": "/media/europython-2026/submissions/8HBEYS/resources/python315-_wzyDDy5.pdf", "type": "related"}]}]}}, {"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", "end": "2026-07-17T08:45:00+02:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-97554-friday-registration-welcome-main-entrance", "url": "https://programme.europython.eu/europython-2026/talk/JGBFDF/", "title": "Friday Registration & Welcome @ Main Entrance", "subtitle": "", "track": null, "type": "Announcements", "language": "en", "abstract": "Welcome to EuroPython 2026! Please notice the registration will happen on the Main Entrance.\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", "end": "2026-07-17T09:00:00+02:00", "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", "end": "2026-07-17T09:45:00+02: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", "end": "2026-07-17T10:40:00+02:00", "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": "e7cc3966-2c0a-50d7-a3aa-b24e1a1f8fe7", "code": "7SSS93", "id": 91520, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "end": "2026-07-17T11:35:00+02:00", "duration": "00:30", "room": "S1", "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": "5414a161-92c0-53e2-95dd-427a4c63566c", "code": "B7CMBD", "id": 90895, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "end": "2026-07-17T12:15:00+02:00", "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 CPython can be intimidating, so I'll share some practical things I learned along the way. At the same time, I will spend some time talking about the whole process of how does one go from being \"just\" a Python user to becoming a Core developer (with stats included).\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", "end": "2026-07-17T12:55:00+02:00", "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", "end": "2026-07-17T14:25:00+02:00", "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/"}, {"code": "JYJRAY", "name": "Noah Kim", "avatar": null, "biography": "Noah is part of the Python team at Hudson River Trading. He has worked on static analysis, language interop, and the firm's internal implementation of lazy imports. Outside of work he's an avid drummer, gamer, and golfer. He has two cats, neither of which can code.", "public_name": "Noah Kim", "guid": "f232d660-6d4f-59a9-a2a1-22a743f7dcd5", "url": "https://programme.europython.eu/europython-2026/speaker/JYJRAY/"}], "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", "end": "2026-07-17T15:05:00+02:00", "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", "end": "2026-07-17T16:00:00+02:00", "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][`pypi-publish` GitHub Action] and [`alls-green`] ([adopted by CPython][alls-green in CPython]), and [designed CPython's current modular CI/CD layout][CPython CI]. He is passionate about applying software engineering principles to CI/CD automation and reducing the maintenance burden across the Python ecosystem.\n\n[This is me.][GitHub Sponsors]\n\n[![SWUbanner]][SWUdocs]\n\n[Ansible]: https://github.com/ansible\n\n[PyPA]: https://github.com/pypa\n[`pypi-publish` GitHub Action]: https://github.com/marketplace/actions/pypi-publish\n[Python Packaging User Guide]: https://packaging.python.org\n\n[octomachinery]: https://octomachinery.dev\n[octomachinery on GitHub]: https://github.com/sanitizers/octomachinery\n\n[GitHub Sponsors]: https://github.com/sponsors/webknjaz\n\n[`alls-green`]: https://github.com/marketplace/actions/alls-green\n[alls-green in CPython]: https://github.com/python/cpython/pull/97533\n[CPython CI]: https://github.com/python/cpython/pull/103914\n\n[SWUbanner]:\nhttps://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-personal-page.svg\n[SWUdocs]:\nhttps://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md", "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": [{"title": "A list of talk-related resources", "url": "https://gist.github.com/webknjaz/1819dd466cc908ff09e2ed4d934455eb", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ZHCNDY/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ZHCNDY/", "attachments": [{"title": "The slides", "url": "/media/europython-2026/submissions/ZHCNDY/resources/2026-europ_OWJgJu8.pdf", "type": "related"}]}, {"guid": "7be3f833-2182-5d85-a895-256f2893d087", "code": "GKA9CG", "id": 101836, "logo": null, "date": "2026-07-17T16:10:00+02:00", "start": "16:10", "end": "2026-07-17T16:55:00+02:00", "duration": "00:45", "room": "S1", "slug": "europython-2026-101836-was-is-will-be-python-history-software-engineering-and-ai-our-way", "url": "https://programme.europython.eu/europython-2026/talk/GKA9CG/", "title": "Was, Is, Will Be: Python History, Software Engineering, And AI Our Way", "subtitle": "", "track": "~ None of these topics", "type": "Keynote", "language": "en", "abstract": "Python is in a moment. Our entire profession is in a moment. But Python has more power than we think we do: us. In this talk we cover how \"us\" came to be, what the age of agentic coding has done to our profession and community, and close with what we can do about it: from us, for us.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PQKY87", "name": "Paul Everitt", "avatar": "https://programme.europython.eu/media/avatars/K8J9XT_XbDA5Co.webp", "biography": "Paul is a Developer Advocate at JetBrains, focusing on Python and the Web. Before that, Paul was a co-founder of Zope Corporation, taking the first open source application server through $14M of funding. Paul has bootstrapped both the Python Software Foundation and the Plone Foundation. Prior to that, Paul was an officer in the US Navy, starting www.navy.mil in 1993.", "public_name": "Paul Everitt", "guid": "4c00d34e-7196-5082-a6e3-70c22983c012", "url": "https://programme.europython.eu/europython-2026/speaker/PQKY87/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/GKA9CG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/GKA9CG/", "attachments": []}, {"guid": "afb9059f-e139-5e34-8d0d-6248ea07c554", "code": "YUECR3", "id": 97556, "logo": null, "date": "2026-07-17T16:55:00+02:00", "start": "16:55", "end": "2026-07-17T17:25:00+02:00", "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: https://forms.gle/CXx7uzccpDQFq9Lt7\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", "end": "2026-07-17T17:55:00+02:00", "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", "end": "2026-07-17T18:25:00+02:00", "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", "end": "2026-07-17T10:55:00+02:00", "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": "Veit Heller", "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": "Veit Heller", "guid": "744d24cd-f621-5935-b908-444d4b8195dc", "url": "https://programme.europython.eu/europython-2026/speaker/MVSZUT/"}], "links": [{"title": "RGM-lite model writeup", "url": "https://blog.veitheller.de/Renormalization,_Lite:_a_powerful_toy_model.html", "type": "related"}, {"title": "small models", "url": "https://github.com/hellerve/talks/tree/master/europython-2026/livecode", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/899VGG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/899VGG/", "attachments": [{"title": "slides", "url": "/media/europython-2026/submissions/899VGG/resources/talk_jgaoGad.pdf", "type": "related"}]}, {"guid": "48f3c32d-3566-5f7f-94cc-782082d5e9a5", "code": "SGM9SV", "id": 91648, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "end": "2026-07-17T11:35:00+02:00", "duration": "00:30", "room": "S2", "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": [{"title": "Presentation", "url": "/media/europython-2026/submissions/SGM9SV/resources/europython_aBz4sxK.pdf", "type": "related"}]}, {"guid": "ebff0f1f-2c09-5194-a697-7e409206266f", "code": "PQCHT3", "id": 91711, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "end": "2026-07-17T12:15:00+02:00", "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/"}, {"code": "D7E8YV", "name": "Amelia Bartosiak", "avatar": "https://programme.europython.eu/media/avatars/YPKF9M_QNlP6sn.webp", "biography": "An ambitious and versatile bioinformatics student with experience in laboratory research, biological data analysis, and legal research. I currently work on a university research project, where I support laboratory activities and documentation, while developing my interests in molecular biology, PCR, and genetics.", "public_name": "Amelia Bartosiak", "guid": "34109abf-b297-5b2d-ad6b-067301dbbf0c", "url": "https://programme.europython.eu/europython-2026/speaker/D7E8YV/"}], "links": [{"title": "Skylink website for the conference", "url": "https://www.skylink.agh.edu.pl/python/", "type": "related"}], "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", "end": "2026-07-17T12:55:00+02:00", "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", "end": "2026-07-17T14:25:00+02:00", "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. I have been working as a Python developer since 2016.\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", "end": "2026-07-17T15:05:00+02:00", "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", "end": "2026-07-17T16:00:00+02:00", "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": "069dc417-3269-58c2-be57-45e59af4a117", "code": "BK8GD8", "id": 102243, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "end": "2026-07-17T10:55:00+02:00", "duration": "00:45", "room": "S4", "slug": "europython-2026-102243-design-pressure-the-invisible-hand-that-shapes-your-code", "url": "https://programme.europython.eu/europython-2026/talk/BK8GD8/", "title": "Design Pressure: The Invisible Hand That Shapes Your Code", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk (long session)", "language": "en", "abstract": "Ever had this weird gut feeling that something is off in your code, but couldn't put the finger on _why_? Are you starting your projects with the best intentions, following all best practices, _and_ still feel like your architecture turns weird eventually? Are you telling your AI bot to write clean code but entropy keeps getting the best of you?\n\n**Maybe, it's not your fault**! Maybe, the tools or methodology you're using are applying **design pressure** that you're not cognizant of, but that influences the shape of your code.\n\nThe best way to prevent that is becoming aware of the forces at play. So, let's look at what design pressure is, look at the most prominent examples of good and bad, and explore how to leverage the former and quell the latter. Because you can only deal with something you know exists.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WGFNBF", "name": "Hynek Schlawack", "avatar": "https://programme.europython.eu/media/avatars/8NBKQT_b2KQjov.webp", "biography": "Hynek Schlawack is a lead infrastructure and software engineer from Berlin/Germany, PSF fellow, blogger, YouTuber, and maintainer of *way* too many open source projects.\n\nHe\u2019s been using Python since 2009 and has seen it **all**.", "public_name": "Hynek Schlawack", "guid": "7d09e620-1e83-5850-988a-ab67b2f05ba6", "url": "https://programme.europython.eu/europython-2026/speaker/WGFNBF/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/BK8GD8/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/BK8GD8/", "attachments": []}, {"guid": "f67f5f20-fdca-5266-bdfb-fb474c5b8d27", "code": "TG7YMS", "id": 88895, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "end": "2026-07-17T11:35:00+02:00", "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": "Mohamed Elmaghraby is a senior software engineer at Bloomberg with five years of engineering experience, including three focused on building and optimizing trading systems in Python. His work centers on system design, refactoring, and performance tuning -- turning legacy or complex code into reliable, maintainable, and fast systems. He delivered a couple talks during internal engineering conferences, sharing his experiences with code improvement and optimization workflows. When he is not writing code (much of the time \ud83d\ude42), Mohamed enjoys 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", "end": "2026-07-17T12:15:00+02:00", "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", "end": "2026-07-17T12:55:00+02:00", "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", "end": "2026-07-17T14:25:00+02:00", "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", "end": "2026-07-17T15:05:00+02:00", "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": "e7185c03-1bbc-579a-ad6e-441dfc590fe6", "code": "SDXEB7", "id": 90898, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "end": "2026-07-17T16:00:00+02:00", "duration": "00:30", "room": "S4", "slug": "europython-2026-90898-fast-and-furious-26-s-tooling-stack-for-a-streamlined-developer-experience", "url": "https://programme.europython.eu/europython-2026/talk/SDXEB7/", "title": "Fast and Furious: 26\u2019s Tooling Stack for a Streamlined Developer Experience", "subtitle": "", "track": "Tooling, Packaging, Developer Productivity", "type": "Talk", "language": "en", "abstract": "Cohesive, automated quality checks are first-order necessities \u2014 especially as LLMs take on more code-writing responsibilities. But developer experience is just as critical: if type checking takes five minutes, developers either lose their flow or feel tempted to skip it. If linting isn\u2019t enforced, reviewer fatigue skyrockets. Blink, and Copilot might commit an API key to your repo \u2014 and the list goes on.\n \nThe tooling pioneers we know and love (`black`, `mypy`, and others) paved the way, but a new generation of faster, more reliable tools \u2014 yup, rewritten in Rust \u2014 is here to guardrail and simplify development. This talk presents a setup for Python development, contrasting the available options.\n \n**What you will learn:**\n \n- **The dependency management wars:** Why `uv` has emerged as the gold standard over Poetry or Hatch.\n- **One tool to rule them all:** How to use `just` as a command runner to unify your local and CI environments.\n- **You shall not pass:** Setting up `ruff` for linting, `pyrefly` (or `ty`) for type hints, and `complexipy` for cyclomatic complexity to keep your codebase cohesive and maintainable. Using `prek` (instead of `pre-commit`) to enforce the standards , including Conventional Commits message syntax and secret detection with `gitleaks`. Replicating pre-commit checks (and test coverage!) with every push in your CI pipeline.\n- **Release the troll:** Implementing `semantic-release` to automate versioning and PyPI publishing.\n \nA configurable Copier template will be provided to explore different setups using these frameworks.\n \n**Prerequisites:** Familiarity with Python development and basic CI/CD concepts. No Rust knowledge required (though a high tolerance for Rust-related puns is encouraged).\n \n**Inspiration:** This talk is inspired by Florian Wilhelm\u2019s _\"Streamlining Python Development: A Guide to a Modern Project Setup\"_ from PyConDE 2024.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "CTPW7Z", "name": "Nacho Llorca", "avatar": "https://programme.europython.eu/media/avatars/CTPW7Z_iIcR6iz.webp", "biography": "Hi! My friends call me Nacho (yep, like the tortilla chips \ud83c\udf2e) and I am SWE/Data Scientist from Madrid, now based in Berlin.", "public_name": "Nacho Llorca", "guid": "93950f12-ebd6-5098-8333-9bdf0d9351da", "url": "https://programme.europython.eu/europython-2026/speaker/CTPW7Z/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/SDXEB7/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/SDXEB7/", "attachments": []}], "S3A": [{"guid": "f94fd158-e423-55a8-b6ea-40622fed61a4", "code": "ETBPVR", "id": 91700, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "end": "2026-07-17T10:55:00+02:00", "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": [{"title": "Presentation", "url": "https://docs.google.com/presentation/d/1IQWq50NEiV72Ph5bB3DJv2LlYQBpuGOI6aajrMySR1g/edit?usp=sharing", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/ETBPVR/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/ETBPVR/", "attachments": []}, {"guid": "753941fb-0272-53cf-9b01-894ddc61b329", "code": "FBQQXS", "id": 91308, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "end": "2026-07-17T11:35:00+02:00", "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": [{"title": "Slides (no pause)", "url": "/media/europython-2026/submissions/FBQQXS/resources/slides-no-_ICY1sxA.pdf", "type": "related"}]}, {"guid": "a5460a6d-27ea-531f-bb25-25c11df2cd7d", "code": "BMX7VR", "id": 100293, "logo": null, "date": "2026-07-17T11:45:00+02:00", "start": "11:45", "end": "2026-07-17T12:45:00+02:00", "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", "end": "2026-07-17T14:25:00+02:00", "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": [{"title": "Source code & snippets", "url": "https://github.com/vladfedoriuk/powering-up-your-types-with-annotated", "type": "related"}, {"title": "Live slides", "url": "https://powering-up-your-types-with-annotated.pages.dev/", "type": "related"}], "feedback_url": "https://programme.europython.eu/europython-2026/talk/HEUFDT/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/HEUFDT/", "attachments": [{"title": "Presentation slides", "url": "/media/europython-2026/submissions/HEUFDT/resources/slides-exp_9NrvLll.pdf", "type": "related"}]}, {"guid": "caef5376-f0ee-547a-9057-cbd5aa23acd6", "code": "ZFJEUJ", "id": 91056, "logo": null, "date": "2026-07-17T14:35:00+02:00", "start": "14:35", "end": "2026-07-17T15:05:00+02:00", "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", "end": "2026-07-17T16:00:00+02:00", "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": "cf2ef2df-75c0-5962-91fd-c7ea0c372fde", "code": "FRFEHE", "id": 90743, "logo": null, "date": "2026-07-17T10:10:00+02:00", "start": "10:10", "end": "2026-07-17T10:55:00+02:00", "duration": "00:45", "room": "S3B", "slug": "europython-2026-90743-spy-high-level-python-low-level-performance-no-overhead", "url": "https://programme.europython.eu/europython-2026/talk/FRFEHE/", "title": "SPy: high-level Python, low-level performance, no overhead", "subtitle": "", "track": "Python Core, Internals, Extensions", "type": "Talk (long session)", "language": "en", "abstract": "SPy is a Python variant designed for compilation: well-specified, debuggable, and\nexpressive. It consists of a low-level core which gives control and speed comparable to\nC, Rust and Go, and powerful metaprogramming features which make possible to build\nhigh-level zero-cost abstractions.  The result is something which is statically typed\nand as fast as C, but with the feeling and ease of Python.\n\nThis talk is a deep dive into the SPy core ideas: in particular, we will explore the\ninternals of the language, show how many builtins are implemented in SPy itself, what\n\"zero cost abstraction\" means in practice and some end-to-end example of how high-level\nPython code is compiled into a low-level fast executable.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QMAPYZ", "name": "Antonio Cuni", "avatar": "https://programme.europython.eu/media/avatars/QMAPYZ_ujWOb0o.webp", "biography": "Principal Software Engineer at Anaconda. He is the author of SPy, a core developer of PyScript and PyPy, and one of the founders of the HPy project, which aims to design a better and more modern C API for Python. He loves to write tools from developers for developers, such as Pdb++, fancycompleter and vmprof and he is creator/maintainer/contributor of numerous other open source projects.\n\nHe have also been very active in the Python community for years, giving talks at various conferences such as EuroPython, EuroSciPy, PyCon Italia, and many others. He regularly writes on the PyPy blog and on the HPy blog. His main areas of interest are compilers, language implementation, TDD and performance.", "public_name": "Antonio Cuni", "guid": "671d8b65-532d-552e-b144-08dc2a0765f3", "url": "https://programme.europython.eu/europython-2026/speaker/QMAPYZ/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/FRFEHE/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/FRFEHE/", "attachments": []}, {"guid": "898cdd0e-a7ec-518a-a2e0-313299da6e9e", "code": "RB9TKP", "id": 91527, "logo": null, "date": "2026-07-17T11:05:00+02:00", "start": "11:05", "end": "2026-07-17T11:35:00+02:00", "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", "end": "2026-07-17T12:15:00+02:00", "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", "end": "2026-07-17T12:55:00+02:00", "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", "end": "2026-07-17T14:25:00+02:00", "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": [{"title": "Slides for talk", "url": "https://download.fsfe.org/presentations/20260717-mk-europython-vision-2048.en.pdf", "type": "related"}], "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", "end": "2026-07-17T15:05:00+02:00", "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": []}, {"guid": "d68b84bf-b0c3-5f3c-8be1-6fdeb114a1eb", "code": "LKAYNG", "id": 103098, "logo": null, "date": "2026-07-17T15:30:00+02:00", "start": "15:30", "end": "2026-07-17T16:00:00+02:00", "duration": "00:30", "room": "S3B", "slug": "europython-2026-103098-import-ai-building-agents-can-be-simple", "url": "https://programme.europython.eu/europython-2026/talk/LKAYNG/", "title": "import ai: building agents can be simple", "subtitle": "", "track": "Machine Learning: Research & Applications", "type": "Sponsored", "language": "en", "abstract": "How to design a framework for building agents without it being a framework? What if building agents didn't require complex abstractions and APIs?\n\nWe are presenting the new Python AI SDK - a toolkit built on just a few powerful, fundamental ideas:\n\n* You don't need abstractions, you need composable primitives. You don't need graphs, your Python code is already a graph. With the field evolving this fast, less is more.\n\n* State is king. Keeping the state minimal, safe, and serializable unlocks long-running, durable agents.\n\n* Everything is always streaming. We put Python's async generators center stage and let them shine.\n\nYou'll leave knowing how to build a real agent: with tool calls, human in the loop, and durable execution, in plain async Python, and when less framework beats more.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "UMMPTJ", "name": "Yury Selivanov", "avatar": null, "biography": "Yury Selivanov is a Python core developer and has been contributing to the language since 2013. He designed and added async/await to Python, maintained asyncio, and created the widely used uvloop and asyncpg libraries. He was co-founder and CEO of Gel (formerly EdgeDB), the open-source database, and is now Director of Engineering at Vercel, where he leads the Python team building tools to make it easier to build and deploy AI agents in Python. He has spoken at PyCon US, EuroPython, PyCon Canada, and many other conferences, and has spent much of his career designing high-performance concurrent systems: the foundation of the AI SDK he's presenting.", "public_name": "Yury Selivanov", "guid": "512fbd24-65c0-5f47-b039-c45d4b28772a", "url": "https://programme.europython.eu/europython-2026/speaker/UMMPTJ/"}, {"code": "AJEYFW", "name": "Michael Sullivan", "avatar": null, "biography": null, "public_name": "Michael Sullivan", "guid": "298b5c17-6f58-50d3-bdff-02484f427733", "url": "https://programme.europython.eu/europython-2026/speaker/AJEYFW/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/LKAYNG/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/LKAYNG/", "attachments": []}], "Room 2.017/2.018": [{"guid": "0aa9acba-2084-56e2-a1a6-395eeb919d9b", "code": "8S7Y8G", "id": 102020, "logo": null, "date": "2026-07-17T10:45:00+02:00", "start": "10:45", "end": "2026-07-17T11:15:00+02:00", "duration": "00:30", "room": "Room 2.017/2.018", "slug": "europython-2026-102020-community-organisers-summit-opening-and-introduction", "url": "https://programme.europython.eu/europython-2026/talk/8S7Y8G/", "title": "Community Organisers Summit: Opening and introduction", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Welcome to the Community Organizers Summit!\nWe'll kick off the day with a brief introduction, covering the goals of the summit, the agenda, and how the discussion sessions will work. It's also a chance to meet fellow organizers before we dive into the conversations ahead.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "BFKLNC", "name": "George Margaritis", "avatar": "https://programme.europython.eu/media/avatars/LYNQQ9_Xgm1Dga.webp", "biography": "Hey hey \ud83d\udc4b\n\nI'm George, a Software Engineer with a soft spot for Python, open source software, and vibrant tech communities. I help organize EuroPython and PyCon Greece!", "public_name": "George Margaritis", "guid": "094f2236-e474-50b6-8d63-5d544ab86281", "url": "https://programme.europython.eu/europython-2026/speaker/BFKLNC/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/8S7Y8G/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/8S7Y8G/", "attachments": []}, {"guid": "9f158f4b-62c8-5218-ac57-5ade0c7df28c", "code": "3JYJPW", "id": 102133, "logo": null, "date": "2026-07-17T11:20:00+02:00", "start": "11:20", "end": "2026-07-17T12:50:00+02:00", "duration": "01:30", "room": "Room 2.017/2.018", "slug": "europython-2026-102133-community-organisers-summit-discussion-session", "url": "https://programme.europython.eu/europython-2026/talk/3JYJPW/", "title": "Community Organisers Summit: Discussion session", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Participants will split into facilitator-led discussion groups based on their interests. Each group will explore a different area of interest, sharing experiences, discussing common challenges, and exchanging practical ideas.\n\nThe discussion topics are:\n**Sponsorship** facilitated by **Kshitijaa Jaglan**\n**Sustainability in the AI Era** facilitated by **Ege Akman**\n**Diversity & Inclusion Challenges** facilitated by **Naa Ashiorkor**\n\nEach group will have a facilitator to guide the discussion, encourage participation, and capture the key takeaways to be shared later in the day.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "L7ELYD", "name": "Naa Ashiorkor", "avatar": null, "biography": null, "public_name": "Naa Ashiorkor", "guid": "88775abb-fc94-5338-8dfd-d0a8c61b8482", "url": "https://programme.europython.eu/europython-2026/speaker/L7ELYD/"}, {"code": "F7LS8Y", "name": "Kshitijaa Jaglan", "avatar": null, "biography": null, "public_name": "Kshitijaa Jaglan", "guid": "b0c93fca-6da9-5f57-9fad-be42fbdedd57", "url": "https://programme.europython.eu/europython-2026/speaker/F7LS8Y/"}, {"code": "MARQBK", "name": "Ege Akman", "avatar": "https://programme.europython.eu/media/avatars/MARQBK_4UdCgod.webp", "biography": "I'm Ege.\n\nSome nice random websites you might like:\n- https://cataas.com/cat\n- https://poms.fun\n- https://random.dog\n\nEnjoy \ud83c\udf7b", "public_name": "Ege Akman", "guid": "8f04d7d0-f179-5d95-8b8e-dfc78f7ffa54", "url": "https://programme.europython.eu/europython-2026/speaker/MARQBK/"}], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/3JYJPW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/3JYJPW/", "attachments": []}, {"guid": "e43f65a5-c278-56fd-852f-cbca7aee3cc8", "code": "DSUZMW", "id": 102134, "logo": null, "date": "2026-07-17T12:55:00+02:00", "start": "12:55", "end": "2026-07-17T13:55:00+02:00", "duration": "01:00", "room": "Room 2.017/2.018", "slug": "europython-2026-102134-community-organisers-lunch", "url": "https://programme.europython.eu/europython-2026/talk/DSUZMW/", "title": "Community Organisers Lunch", "subtitle": "", "track": null, "type": "Lunch", "language": "en", "abstract": "The Community Organizers Lunch brings together organizers from Python communities across Europe and beyond for an informal networking session over lunch.\nWhether you're meeting fellow organizers for the first time or continuing conversations from the morning discussions, it's a great opportunity to exchange ideas, share experiences, and make new connections within the Python community.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/DSUZMW/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/DSUZMW/", "attachments": []}, {"guid": "dc9e0183-4813-5974-9338-6c1cc087989c", "code": "RMMW37", "id": 102135, "logo": null, "date": "2026-07-17T14:00:00+02:00", "start": "14:00", "end": "2026-07-17T14:30:00+02:00", "duration": "00:30", "room": "Room 2.017/2.018", "slug": "europython-2026-102135-community-organisers-summit-group-presentations", "url": "https://programme.europython.eu/europython-2026/talk/RMMW37/", "title": "Community Organisers Summit: Group Presentations", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Following the discussion groups, everyone will come back together for a series of short presentations.\nEach group will share a short summary of their discussion and key takeaways, led by the facilitator or any participant who'd like to present. Brief Q&A moments between presentations will allow other groups to ask questions or share related insights.", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://programme.europython.eu/europython-2026/talk/RMMW37/feedback/", "origin_url": "https://programme.europython.eu/europython-2026/talk/RMMW37/", "attachments": []}, {"guid": "cc3dac42-c950-59fb-800b-22f007be9fc4", "code": "LSNR3C", "id": 101536, "logo": null, "date": "2026-07-17T14:30:00+02:00", "start": "14:30", "end": "2026-07-17T16:00:00+02:00", "duration": "01:30", "room": "Room 2.017/2.018", "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", "end": "2026-07-17T13:55:00+02:00", "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][`pypi-publish` GitHub Action] and [`alls-green`] ([adopted by CPython][alls-green in CPython]), and [designed CPython's current modular CI/CD layout][CPython CI]. He is passionate about applying software engineering principles to CI/CD automation and reducing the maintenance burden across the Python ecosystem.\n\n[This is me.][GitHub Sponsors]\n\n[![SWUbanner]][SWUdocs]\n\n[Ansible]: https://github.com/ansible\n\n[PyPA]: https://github.com/pypa\n[`pypi-publish` GitHub Action]: https://github.com/marketplace/actions/pypi-publish\n[Python Packaging User Guide]: https://packaging.python.org\n\n[octomachinery]: https://octomachinery.dev\n[octomachinery on GitHub]: https://github.com/sanitizers/octomachinery\n\n[GitHub Sponsors]: https://github.com/sponsors/webknjaz\n\n[`alls-green`]: https://github.com/marketplace/actions/alls-green\n[alls-green in CPython]: https://github.com/python/cpython/pull/97533\n[CPython CI]: https://github.com/python/cpython/pull/103914\n\n[SWUbanner]:\nhttps://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-personal-page.svg\n[SWUdocs]:\nhttps://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md", "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": [{"title": "Poster", "url": "/media/europython-2026/submissions/BX77EE/resources/2026-europ_DWgmQzk.pdf", "type": "related"}]}], "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", "end": "2026-07-17T13:55:00+02:00", "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": []}]}}, {"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": {}}]}}}