{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2025.2.2"}, "schedule": {"url": "https://pretalx.evolutio.pt/pycon-portugal-2026/schedule/", "version": "0.7", "base_url": "https://pretalx.evolutio.pt/", "conference": {"acronym": "pycon-portugal-2026", "title": "PyCon Portugal 2026", "start": "2026-09-03", "end": "2026-09-05", "daysCount": 3, "timeslot_duration": "00:05", "time_zone_name": "UTC", "colors": {"primary": "#7c1fed"}, "rooms": [{"name": "Auditorium", "slug": "31-auditorium", "guid": "a70562d5-3472-5683-bdaf-7843aaffbd30", "description": "The main room for the talks.", "capacity": 200}, {"name": "Workshop Room B", "slug": "33-workshop-room-b", "guid": "163d9376-ca4f-58bf-98eb-dae0c2ac4846", "description": "One of the rooms for workshops.", "capacity": 40}, {"name": "Workshop Room A", "slug": "32-workshop-room-a", "guid": "3dda8a38-7da2-539c-a091-beca6e2f558e", "description": "One of the rooms for the workshops.", "capacity": 40}], "tracks": [], "days": [{"index": 1, "date": "2026-09-03", "day_start": "2026-09-03T04:00:00+00:00", "day_end": "2026-09-04T03:59:00+00:00", "rooms": {"Auditorium": [{"guid": "335a5b27-d040-57e8-9f74-1455bc48f70f", "code": "Q8EAER", "id": 2166, "logo": null, "date": "2026-09-03T09:15:00+00:00", "start": "09:15", "duration": "00:15", "room": "Auditorium", "slug": "pycon-portugal-2026-2166-opening-session", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/Q8EAER/", "title": "Opening session", "subtitle": "", "track": null, "type": "Other", "language": "en", "abstract": "Opening session with morning announcements", "description": "Opening session with morning announcements", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/Q8EAER/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/Q8EAER/", "attachments": []}, {"guid": "fe57c024-1fd8-5586-aaf8-3feb5fdda73d", "code": "NLGFRP", "id": 2097, "logo": null, "date": "2026-09-03T09:30:00+00:00", "start": "09:30", "duration": "01:00", "room": "Auditorium", "slug": "pycon-portugal-2026-2097-keynote-becoming-a-code-curator-developing-engineering-taste-in-the-age-of-generative-agents", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/NLGFRP/", "title": "Keynote: Becoming a code curator: developing engineering taste in the age of generative agents", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "In the era of agentic AI, our role as developers is no longer just about code creation but it\u2019s about code curation. The blank page is dead, but AI-slop is rising. Discover how to use architectural guardrails to force AI to code with your taste, not its training data.", "description": "In 2026, the daunting fear of the proverbial blank page has vanished. We have agents writing lines of code faster than we can read them, and our task is shifting from developers to curators. \r\nBut there is a catch: while agents are masters of syntax, they are strangers to taste. They can generate functionally \"correct\" code that is architecturally hollow. If we aren't careful, the high-velocity output of the agents will wash away the Pythonic principles of elegance and maintainability we\u2019ve spent decades refining replacing it with unmaintainable AI slop.\r\nTo thrive in this timeline of agentic code development, we must promote ourselves from developers to code curators. In this talk, we will explore the three pillars of the curator\u2019s craft:\r\n\r\nDeveloping a curator's nose: how to  identify the synthetic smell of agentic output, from the verbosity tax to the obsolete echoes where agents default to old python idioms instead of model standards.\r\nDeveloping a curator's eye: Python is one of the most used languages because, among so many other things, its commitment to simplicity. We\u2019ll look at how taste will help us integrate cutting-edge features where an agent would fall back to legacy bloat and inefficient patterns.\r\nDeveloping a curator's hand: we must provide with the precise guidance required to build architectures that withstand the test of time. We\u2019ll discuss practical strategies like context injection and architectural guardrails  to force the agents to code following the standards of your codebase not their training data\r\nIn an era of infinite generation, our value is no longer found in the lines we write, but in the systems we compose. We are no longer just authors of code; we are the guardians of the Pythonic craft.", "recording_license": "", "do_not_record": false, "persons": [{"code": "MQH7AV", "name": "Mai Gimenez", "avatar": "https://pretalx.evolutio.pt/media/avatars/MQH7AV_MS1Fsms.jpg", "biography": "Dr. Mai Gim\u00e9nez is a staff research engineer working in generative AI at Google Deepmind. They are passionate about building the most useful technology for everyone. \r\nMai is a former board member of the Spanish Python Association, and a proud member of the Pyladies.", "public_name": "Mai Gimenez", "guid": "b478205e-c38e-5987-80fb-6bee9ac84cbd", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/MQH7AV/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/NLGFRP/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/NLGFRP/", "attachments": []}, {"guid": "c16cf95c-5832-55ba-9b15-7475cf12f072", "code": "KS9EPZ", "id": 1931, "logo": null, "date": "2026-09-03T10:30:00+00:00", "start": "10:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-1931-no-more-spreadsheets-building-pyladiescon-infrastructure-with-python-and-django", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KS9EPZ/", "title": "No More Spreadsheets! Building PyLadiesCon Infrastructure with Python and Django", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In 2025, PyLadiesCon team said no to spreadsheets and instead started building our conference infrastructure: an open source web app for managing various aspects of our conference. Learn more our challenges in managing the online PyLadiesCon conference, and how we're solving our problems with Python and Django.", "description": "PyLadiesCon is an online conference for the Global PyLadies community. It is one of a kind conference with programming spans 24 hours and offering talks and contents in multiple languages. Run entirely by volunteers, we face unique challenges specific to the nature of our conference.\r\n\r\nOne of the ways we have been managing the various aspects of PyLadiesCon is by using spreadsheets. Spreadsheets for volunteer sign ups, spreadsheets for program scheduling, spreadsheets for sponsorship. Any information you want about the conference, we have a spreadsheet for that.\r\n\r\nWhile spreadsheets are great for capturing data, they come with drawbacks when it comes to online collaboration with various team members, causing frustrations and confusion among our team of volunteers.\r\n\r\nIn 2025, PyLadiesCon team said no to spreadsheets and instead started building our conference infrastructure: an open source web app for managing various aspects of our conference. Learn more our challenges in managing the online PyLadiesCon conference, and how we're solving our problems with Python and Django.  Contribute to the project, and support the PyLadies community.", "recording_license": "", "do_not_record": false, "persons": [{"code": "KBVPYV", "name": "Mariatta", "avatar": "https://pretalx.evolutio.pt/media/avatars/KBVPYV_kse1aeB.png", "biography": "Mariatta is a Python Core Developer, open source maintainer, and community leader with over 15 years of experience in software development. She is passionate about workflow improvements and automation, as well as building inclusive developer communities.\r\n\r\nAs a serial conference organizer, Mariatta has helped kickstarted the PyCascades and PyLadiesCon conference.\r\n\r\nFor her contributions to the Python open source community, she has received the Python Software Foundation Community Service award and Google Open Source Peer Bonus award. She also appears in the official Python Documentary.", "public_name": "Mariatta", "guid": "3c06d44b-e9b9-561d-9ef2-0dbc22b77290", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/KBVPYV/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KS9EPZ/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KS9EPZ/", "attachments": []}, {"guid": "8a627301-0964-5674-8fc9-61bdf3ba36ed", "code": "QPBCXP", "id": 2157, "logo": null, "date": "2026-09-03T11:30:00+00:00", "start": "11:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2157-what-s-new-in-python-3-14-3-15", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/QPBCXP/", "title": "What's new in Python 3.14 & 3.15", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Come and hear about some of the exciting things now available in Python 3.14, and also the new stuff coming in Python 3.15 later this year.", "description": "Python 3.14 is the latest version of your favourite programming language. Come and hear about some of the exciting things available when you upgrade. I'll talk about some of the even newer things set for release in Python 3.15 this October. And I'll also tell about the release cycle and how you can help us test out the pre-releases.", "recording_license": "", "do_not_record": false, "persons": [{"code": "J3CUTT", "name": "Hugo van Kemenade", "avatar": "https://pretalx.evolutio.pt/media/avatars/J3CUTT_c6QTujp.webp", "biography": "Hugo van Kemenade is a Python core developer and the release manager for Python 3.14 and the next one. He maintains open-source projects such as Pillow, is a PSF Fellow and PEP editor, and organiser of NaNoGenMo, Helsinki Python and PyData Helsinki. As a Sovereign Tech Fellow, he's lucky to work on maintaining critical digital infrastructure full-time. Hugo lives in Helsinki and sometimes cycles on the frozen sea.", "public_name": "Hugo van Kemenade", "guid": "75ae6270-bb7d-5968-bff5-230047bb713f", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/J3CUTT/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/QPBCXP/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/QPBCXP/", "attachments": []}, {"guid": "5edfabe0-567c-5afb-9a67-c6d9342e13ce", "code": "KDZQJR", "id": 2120, "logo": null, "date": "2026-09-03T12:00:00+00:00", "start": "12:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2120-strong-ref-weakref-and-garbage-collector-walks-into-a-bar", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KDZQJR/", "title": "strong ref, weakref and garbage collector walks into a bar", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In Python, objects live as long as something is holding on to them\u2014and sometimes that\u2019s way longer than you expect. This talk explores how references, the garbage collector, and weak references interact to determine object lifetimes, with real-world examples like `lru_cache` quietly keeping objects alive.", "description": "This talk explores how Python manages object lifetimes through references, and why objects sometimes remain in memory longer than expected. While Python\u2019s memory model is often described as simple, its real behavior \u2014 especially in the presence of caching and reference cycles \u2014 can lead to surprising and hard-to-debug issues.\r\n\r\nThe talk is structured as a narrative in three parts: strong references, weak references, and the garbage collector. First, we take a look at Python\u2019s object model and reference counting, using simple, visual  examples to demonstrate how references work. Next, we introduce weak references and show how they differ from regular references, including practical use cases and common misconceptions. Finally, we examine the garbage collector and explain why it is needed in Python on top of reference counting.\r\n\r\nThe concepts are grounded in a real-world debugging story involving `functools.lru_cache`, where a small optimization led to unexpected memory growth.\r\n\r\nThe goal of this talk is to provide a clear and practical mental model of Python\u2019s memory behavior, helping developers understand not just how things work, but why seemingly correct code can lead to subtle memory issues.", "recording_license": "", "do_not_record": false, "persons": [{"code": "QTHFL3", "name": "Yulia Markelova", "avatar": "https://pretalx.evolutio.pt/media/avatars/QTHFL3_Ji7GC0h.jpeg", "biography": "Hi! I\u2019m Yulia, a Python developer who enjoys building backend systems \u2014 and occasionally breaking them just to understand how they work better. I\u2019ve spent more than 7 years working with Python in production, mostly on data-heavy applications.\r\n\r\nOriginally from Russia and now based in Portugal, I enjoy learning new languages and exploring life in a new country.", "public_name": "Yulia Markelova", "guid": "987c733d-3d90-52da-9664-8f10f5232d8d", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/QTHFL3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KDZQJR/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KDZQJR/", "attachments": []}, {"guid": "6491b07b-efee-5c07-a7a2-4c4cdf642741", "code": "ZJGACA", "id": 2148, "logo": null, "date": "2026-09-03T12:30:00+00:00", "start": "12:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2148-from-pixels-to-plastic-multi-agent-python-pipelines-for-3d-printed-repair", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZJGACA/", "title": "From Pixels to Plastic: Multi-Agent Python Pipelines for 3D-Printed Repair", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "A snapped fridge handle. A missing washing-machine knob. A bracket that broke off your scooter. The replacement part costs three pounds and ships in two weeks, or you throw the whole thing away.\r\n\r\nThis talk is about teaching Python to fix it instead.\r\n\r\nThis talk walks through an open-source Python pipeline that takes a photo of a broken object and produces a 3D-printable patch automatically. Seven specialised agents handle calibration, segmentation, measurement, thickness estimation, mesh generation, validation, and printing. Each agent runs multiple competing computer-vision strategies, then uses an LLM to choose the most trustworthy result through a consensus protocol. The validated mesh streams straight to a BambuLab printer over MQTT, and a finished patch comes off the bed by the time the talk ends.\r\n\r\nThe whole system is built on Python, using frameworks such as FastAPI, OpenCV, Shapely, trimesh, SAM, Depth Anything, and a Three.js front end, plus an LLM acting as the decision engine inside every agent. You'll see how far Python's ecosystem reaches when the output has to obey physics, and where the interesting failures live.", "description": "Most \"AI for the physical world\" coverage in 2026 is about robots and autonomous vehicles. This talk is about something smaller and stranger: getting a Python program to look at a broken object and print the missing piece.\r\n\r\nThe core problem: natural language and even photos are ambiguous, but geometry is not. A wall thickness of 0.1mm instead of 1.0mm is not a minor error. It is an unprintable model and wasted filament. \"Generate and hope\" doesn't work when the output has to fit in your hand.\r\n\r\nI'll walk through the system end-to-end: a real, open-source, seven-agent pipeline.\r\n\r\n1. The repair scenario. Real before-and-after objects passed around the audience. Repair is a more honest test of physical AI than from-scratch generation because there is a ground truth, the original part, and a literal pass/fail question: does the new piece fit?\r\n\r\n2. Seven agents, one pattern. A walk through the pipeline: Calibration, Segmentation, Measurement, Thickness, Mesh, Validation, and Print. The same architectural pattern repeats at every stage. Each agent runs multiple computer-vision strategies, then hands all candidate results to an LLM that picks the best one, or blends them, and explains its reasoning.\r\n\r\n3. The consensus protocol. A close look at the calibration and thickness agents, where consensus matters most. Calibration runs ArUco markers, HEIF depth, reference-line detection, WebXR, and a vision fallback in parallel. Thickness estimation combines LiDAR, multi-view stereo from short videos, side-photo geometry, and monocular depth from Depth Anything. The LLM sees each candidate with its confidence score, flags implausible values, and produces one authoritative result with an explained rationale.\r\n\r\n4. Segmentation, measurement, mesh. SAM handles segmentation from point prompts, with the LLM assessing mask quality and suggesting better click points. OpenCV contour analysis handles measurement, while the LLM arbitrates between competing measurements. Shapely and trimesh generate the patch mesh, with the LLM assessing printability and suggesting thickness adjustments before anything goes near the printer.\r\n\r\n5. Validation and the live print. The validation agent cross-checks the pipeline results, verifies the mesh, and makes a final go/no-go judgment. Then bambulabs api over MQTT/FTP streams the STL to the printer on stage. Print status flows back into the system in real time.\r\n\r\n6. What this teaches us about Python in the wild. The transferable patterns are multi-strategy execution, LLM arbitration, structured outputs, and continuous validation. They work for any AI system where outputs must satisfy hard constraints: medical imaging, financial document generation, robotic control, and scientific simulation. Python is more capable here than people realise, and the under-appreciated libraries that make it possible, including Shapely, trimesh, SAM via transformers, Depth Anything, and bambulabs_api, deserve a wider audience.", "recording_license": "", "do_not_record": false, "persons": [{"code": "3CJS9F", "name": "Brain Aboze", "avatar": "https://pretalx.evolutio.pt/media/avatars/3CJS9F_SAwrgTH.jpg", "biography": "Aboze Brain John is the founder of KOVR, an early-stage healthtech venture building a privacy-first, AI-assisted nicotine reduction system that integrates IoT hardware, a mobile app, and embedded ethical AI guardrails.\r\n\r\nHe previously worked as a Developer Advocate at a London-based formal verification and AI safety startup, and as a Data Scientist across financial services, spanning credit, insurance, and community-focused initiatives.\r\n\r\nHe is an avid technical writer with a strong interest in data science, AI systems, engineering, and building within regulated environments.", "public_name": "Brain Aboze", "guid": "897c8435-323d-51a1-97a1-818065de4506", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/3CJS9F/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZJGACA/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZJGACA/", "attachments": []}, {"guid": "e2c4daaf-92cb-538d-95d3-910404ecc988", "code": "GU9KWG", "id": 2123, "logo": null, "date": "2026-09-03T14:00:00+00:00", "start": "14:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2123-the-illusion-of-sequential-execution-in-pyspark", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GU9KWG/", "title": "The illusion of sequential execution in PySpark", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Have you ever looked at a PySpark pipeline and assumed it would run top-to-bottom? You\u2019d be surprised\u2026it doesn\u2019t. In reality, Spark builds and optimizes execution plans, and this mismatch can lead to subtle, production-grade bugs.\r\nIn this talk, I\u2019ll walk through a real-world example where reading and updating the same tables produced inconsistent results in production. We\u2019ll see why this happens, what Spark actually executes under the hood, and why code that looks correct can behave unexpectedly.\r\nJoin this session and you\u2019ll learn practical design principles to make pipelines predictable: introducing explicit materializations, using declarative patterns, or imposing physical separation between sources and targets.", "description": "PySpark code often looks like it runs sequentially, but Spark does not execute pipelines line by line. Instead, it builds and optimizes execution plans, and this mismatch can lead to bugs and misunderstandings.\r\n\r\nIn this talk, I will present a real-world issue involving a pipeline that reads from and writes to the same tables. While the code appears straightforward, the final action triggers a separate execution plan that re-reads one of the inputs after it has been updated, producing inconsistent results. This behavior is counterintuitive because dataframes are logical abstractions: they do not hold data unless explicitly materialized, and each action can recompute the entire pipeline.\r\n\r\nStarting from this example, I will explore some design principles that can systematically avoid this kind of issue. First, one can include explicit materializations after reading from sources, in order to save input data in a well-defined state. Another possibility is designing simple, atomic jobs with a single target table or even a single action, and then combine them sequentially by means of an orchestrator. Finally, if the underlying data platform has multiple layers, one can impose that every job reads from one layer and writes to the next, in order to physically separate sources and targets.\r\n\r\nThe talk will include code examples and is aimed at data engineers with some experience in PySpark who want to build cleaner and more reliable pipelines.", "recording_license": "", "do_not_record": false, "persons": [{"code": "3BZEDW", "name": "Pier Paolo La Pastina", "avatar": "https://pretalx.evolutio.pt/media/avatars/3BZEDW_RwRF8Ys.jpg", "biography": "I developed a passion for mathematics at an early age, which naturally led me to feel comfortable working with data and abstract thinking. I earned a PhD in Mathematics and later worked as an applied researcher at a startup, where I also developed strong skills in writing technical papers and speaking at international conferences.\r\n\r\nI have been working as a data engineer for the past four years. Over this time, I have gained strong hands-on experience in several key areas of the field, including ETL, data warehousing, data quality, data lineage, data modeling, and master data management. I have designed, built, maintained, and optimized large-scale data pipelines using Python, Scala, Java, SQL, and several data processing engines, including Apache Spark. In my daily work, I take pride in writing clear and maintainable code, and I strongly support the continuous improvement of both technical and people processes.", "public_name": "Pier Paolo La Pastina", "guid": "95151d34-5682-53c5-9a8a-95bbcb9f9b0a", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/3BZEDW/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GU9KWG/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GU9KWG/", "attachments": []}, {"guid": "5b2b498d-1cee-5699-a63a-c0782d944339", "code": "KNX8NQ", "id": 2173, "logo": null, "date": "2026-09-03T14:30:00+00:00", "start": "14:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2173-your-software-mirrors-your-conversations-your-conversations-just-went-private", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KNX8NQ/", "title": "Your Software Mirrors Your Conversations. Your Conversations Just Went Private.", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "We like to treat software architecture as a technical discipline, so when an architecture rots we go looking for technical causes. But every decayed system I've ever seen had a perfectly good plan behind it. The mess didn't come from the code. It came from how the people building it talked to each other, or stopped talking to each other. That's Conway's Law, and it just got a plot twist: a growing share of those conversations now happen with AI assistants instead of with teammates. \r\nThis talk follows one fictional organization across three eras of its life, on a single network graph of people, teams, services, and code that evolves on screen, to find out what all those private conversations are doing to your software.", "description": "The story follows one fictional organization, stitched together from things I lived through, across three eras of its life: the early monolith, the reorg into \"autonomous teams\" that nobody thought all the way through, and the arrival of LLM assistants. The whole arc plays out on a single network graph of people, teams, services, and code that evolves on screen as the company changes, so you can watch the architecture respond to the conversations, and stop responding when the conversations stop.\r\n\r\nAlong the way: how well-intentioned autonomy can manufacture a distributed monolith; what actually happens to a codebase when every developer's closest collaborator becomes a model; what the industry's own data says about feeling faster versus being faster; and why AI makes Conway's Law bite harder, not softer. And because this isn't a doom talk, the way out is here too, grounded in Diana Montalion's Learning Systems Thinking.\r\n\r\nYou'll leave with a new lens to view your own codebase, a sharper question to ask about every system your team ships, two gut checks for your team's AI adoption, and a handful of practices you can pilot without waiting for anyone to approve a reorg.", "recording_license": "", "do_not_record": false, "persons": [{"code": "JQ998U", "name": "Juan Caraballo", "avatar": "https://pretalx.evolutio.pt/media/avatars/JQ998U_tpkUA0u.webp", "biography": "I'm Juan Caraballo, an Infrastructure and Reliability Engineer from the Dominican Republic, currently based in Lisbon, Portugal. \r\n\r\nI started my career as a Django developer at the Utah Water Research Laboratory, where I spent nearly a decade, before moving into data engineering and eventually infrastructure and site reliability. \r\n\r\nOutside of work, I'm drawn to the connective tissue between fields like physics, biology, ecology, and computer science, and I try to bring that cross-disciplinary lens to the way I think about engineering problems.", "public_name": "Juan Caraballo", "guid": "67ba2881-1e63-5606-9c78-953d5641d300", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/JQ998U/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KNX8NQ/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KNX8NQ/", "attachments": []}, {"guid": "c920c973-a639-5c22-83df-4a97c86acf72", "code": "CAPM8Z", "id": 2124, "logo": null, "date": "2026-09-03T15:30:00+00:00", "start": "15:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2124-running-companies-with-python-and-open-source-erp", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CAPM8Z/", "title": "Running Companies with Python and Open Source ERP", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Python is running companies worldwide \u2014 through Odoo, an open-source ERP where business logic is just Python code. Come see how Python's expressiveness and modularity power the decisions that keep businesses moving.", "description": "Ask a Python developer what Python is used for, and you'll hear the usual answers: data science, machine learning, infrastructure automation, web backends. Rarely does anyone mention running the day-to-day operations of a business. Yet that's exactly what Odoo makes possible \u2014 and it does so with Python at its core.\r\nOdoo is a fully open-source suite of business applications \u2014 from accounting and inventory to sales and HR \u2014 built entirely in Python. Unlike traditional ERP systems that lock businesses into rigid, proprietary logic, Odoo exposes its business rules, workflows, and data models as Python code. This means Python developers are suddenly first-class citizens in domains historically dominated by consultants, spreadsheets, and black-box software: invoicing runs, stock movements, manufacturing orders, payroll calculations. And because Odoo is open source, the entire stack is inspectable, forkable, and extensible \u2014 there are no hidden rules governing your business.\r\nWhat makes this possible is Odoo's layered, modular architecture. Business logic is organised into composable Python modules \u2014 each one a clean layer over the last \u2014 so that a small, focused change can reshape how an entire business process behaves without touching anything else. This is not just good software design; it is what allows Python developers to reason about, extend, and own business processes the same way they would any other codebase.\r\nWe'll open with a grounded look at what an ERP actually does \u2014 the key functional domains that keep a company running and why they are hard to model in software. From there, we explore how Odoo's framework architecture is designed to meet those demands: its layered module system, and how Python's expressive syntax and dynamic nature make it uniquely suited to capturing complex, ever-changing business logic. We'll also look at Python's role as a universal connector \u2014 how it bridges Odoo to the wider world of APIs, data pipelines, and external systems. The talk closes with a look at the open-source ecosystem around Odoo and what this expanding frontier means for Python developers.\r\nNo prior knowledge of ERP or business software is assumed \u2014 just curiosity about where Python shows up next.", "recording_license": "", "do_not_record": false, "persons": [{"code": "A98VKP", "name": "Daniel Reis", "avatar": "https://pretalx.evolutio.pt/media/avatars/A98VKP_FdGV60i.png", "biography": "Daniel Reis is an Odoo ERP specialist, implementing business solutions in businesses in multiple sectors and countries. He is an active open source contributor, board member at the Odoo Community Association, and has several published books on Odoo development.\u00a0Daniel has a degree in Applied Mathematics, a Master in Business Administration.", "public_name": "Daniel Reis", "guid": "d58153c4-9bee-5352-93c7-4b235023e596", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/A98VKP/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CAPM8Z/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CAPM8Z/", "attachments": []}, {"guid": "a23f46df-d63a-5573-9e0b-df5c5152fe30", "code": "PSPA9E", "id": 2162, "logo": null, "date": "2026-09-03T16:00:00+00:00", "start": "16:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2162-to-be-announced", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSPA9E/", "title": "To be announced!", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "TBA", "description": "TBA", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSPA9E/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSPA9E/", "attachments": []}, {"guid": "fd6c2354-826d-50e1-9dca-4345aa298614", "code": "R8B8RB", "id": 2159, "logo": null, "date": "2026-09-03T16:30:00+00:00", "start": "16:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2159-lightning-talks-thursday", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/R8B8RB/", "title": "Lightning talks \u26a1\ufe0f Thursday", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Enjoy Thursday's lightning talks! Short talks about everything by everyone.", "description": "Lightning talks are 5 minute talks that anyone participating at the conference can submit. If 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!\r\n\r\nLightning talks last a maximum of 5 minutes. You can use less time, but not more. This time limit is strictly enforced!", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/R8B8RB/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/R8B8RB/", "attachments": []}]}}, {"index": 2, "date": "2026-09-04", "day_start": "2026-09-04T04:00:00+00:00", "day_end": "2026-09-05T03:59:00+00:00", "rooms": {"Auditorium": [{"guid": "d4e01c9e-775a-54bd-8830-3002c9df4ea9", "code": "GLLJKG", "id": 2167, "logo": null, "date": "2026-09-04T09:15:00+00:00", "start": "09:15", "duration": "00:15", "room": "Auditorium", "slug": "pycon-portugal-2026-2167-morning-announcements", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GLLJKG/", "title": "Morning announcements", "subtitle": "", "track": null, "type": "Other", "language": "en", "abstract": "Morning announcements", "description": "Morning announcements", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GLLJKG/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GLLJKG/", "attachments": []}, {"guid": "ec0e0cbf-95ec-59d1-b60a-4a2429224cd6", "code": "FDLXS9", "id": 2156, "logo": "https://pretalx.evolutio.pt/media/pycon-portugal-2026/submissions/FDLXS9/PydanticAtomico2026-0043_PrLGB63.webp", "date": "2026-09-04T09:30:00+00:00", "start": "09:30", "duration": "01:00", "room": "Auditorium", "slug": "pycon-portugal-2026-2156-keynote-most-of-your-ai-output-is-slop-and-how-to-optimise-it", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FDLXS9/", "title": "Keynote: Most of your AI output is Slop (and how to optimise it)", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "Most of us now talk to our computers like we did in the 60s, through a terminal. The difference is what is on the other side. Along the way, we stopped writing code by hand.\r\nThis talk is about what that costs and what it buys. Treating AI systems with awe hides what they can't do and hands us back plausible slop. Named precisely, as a tool that drafts, reviews, searches, or automates a specific chore, it becomes something that can be tested, questioned, measured, and optimised.", "description": "Most of us have adopted AI tools without the surrounding guidance on how to coerce models into making something good and useful. The speed of development grew exponentially, to the point where we now interact with computers like we did in the 1960s, through a terminal. This talk is about how to concretely take your everyday prompt and make it better, from slop to a workflow that can be measured and improved far beyond your local environment. We'll cover gold standard practices such as context, guardrails, optimisation, and evaluation frameworks, the things that let you take advantage of AI tooling to the maximum, rather than being tied to reviewing every line it produces, increasing both speed and trustworthiness.", "recording_license": "", "do_not_record": false, "persons": [{"code": "L9XBYZ", "name": "La\u00eds Carvalho", "avatar": "https://pretalx.evolutio.pt/media/avatars/L9XBYZ_2wpVWc3.jpg", "biography": "La\u00eds Carvalho works on growth and developer content for Logfire, the observability platform from the team behind Pydantic, writing and building across the Pydantic AI ecosystem. In March, she organised and moderated a panel on open source in the age of AI with Guido van Rossum.\r\nOn the community side, she's a PSF Fellow, a EuroPython Society Fellow, and a 2024 PSF Community Service Award recipient, with a long history organising Python community events. She also builds with the same tools she writes about, which is the only reason she's qualified to tell you most of your AI output is slop. She'd know. She's produced plenty of it.", "public_name": "La\u00eds Carvalho", "guid": "4b3d78c3-b370-5775-9183-faa816cf3ee2", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/L9XBYZ/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FDLXS9/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FDLXS9/", "attachments": []}, {"guid": "5d729171-ecae-5786-a4de-b2d02000c2fe", "code": "HH87TE", "id": 2112, "logo": null, "date": "2026-09-04T10:30:00+00:00", "start": "10:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2112-building-a-thriving-ecosystem-the-role-of-communities-in-growth-and-inclusion", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/HH87TE/", "title": "Building a Thriving Ecosystem: The Role of Communities in Growth and Inclusion", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The global tech ecosystem continues to grow, yet challenges like limited mentorship, a lack of role models, and fragmented community support hinder progress, especially for underrepresented groups. PyLadies offers a powerful model for bridging these gaps. This talk explores how PyLadies chapters worldwide foster technical growth, increase mentorship opportunities, and drive collaboration to create a more inclusive and sustainable global tech community.\r\nWe can contribute to the growth of the global tech ecosystem by leveraging the PyLadies model of an inclusive and sustainable community.", "description": "The strength of any tech ecosystem lies in its ability to grow, support, and sustain its members. However, many aspiring technologists from underrepresented backgrounds struggle to find mentorship, role models, and opportunities to thrive. PyLadies, a global network dedicated to increasing women's participation in the Python community, presents a proven model for addressing these challenges.\r\nThis talk will explore the impact of community-driven initiatives on the tech ecosystem, using PyLadies as a case study. We'll break down the discussion into three key sections:\r\nUnderstanding the Challenges:\r\nThe barriers to entry and growth in tech for underrepresented groups\r\nThe role of mentorship and community in shaping successful careers\r\n\r\nThe PyLadies Model:\r\nHow PyLadies chapters empower individuals through mentorship, technical training, and networking\r\nSuccess stories from PyLadies communities around the world\r\n\r\nScaling the Impact:\r\nHow local communities and organizations can adopt similar models to foster technical growth\r\nActionable steps for individuals and companies to contribute to a more inclusive and sustainable tech ecosystem\r\nThrough real-world examples, practical strategies, and interactive discussions, this talk aims to inspire attendees to take action, whether by starting or supporting PyLadies chapters, mentoring newcomers, or advocating for stronger community engagement.\r\nBy the end of the session, participants will leave with a clear understanding of how they can contribute to strengthening the global tech ecosystem and why investing in community-driven initiatives like PyLadies is key to sustainable growth.\r\n\r\n\r\nOUTLINE\r\nIntroduction (2 mins)\r\nIntroduction\r\nWhat inspired this talk( the importance of support systems in tech)\r\nOverview of what to expect\r\n\r\nUnderstanding the Challenges (8mins)\r\nA. Barriers for Underrepresented Groups\r\nLack of access to mentorship, role models, and opportunities\r\nImposter syndrome and systemic bias\r\nFinancial, geographical, and cultural constraints\r\nB. The Role of Community and Mentorship\r\nWhy peer support matters\r\nHow mentorship can transform career journeys\r\nAudience interaction: \"Who here has been positively impacted by a tech community?\"\r\n\r\nThe PyLadies Model (8mins)\r\nA. What is PyLadies?\r\nMission, history, and global reach\r\nCore activities: workshops, meetups, mentorship, speaker support\r\nB. Empowerment Through Community\r\nTechnical training and exposure\r\nNetworking and visibility for women in Python\r\nCommunity-led leadership development\r\nC. Success Stories\r\nHighlight stories from PyLadies chapters around the world\r\nTestimonials\r\n\r\nScaling the Impact (8mins)\r\nA. Adopting the Model Locally\r\nHow any community can replicate PyLadies' success\r\nPartnering with schools, companies, and global organizations\r\nB. Individual & Organizational Action Steps\r\nStarting or supporting a PyLadies chapter\r\nMentoring newcomers or junior developers\r\nAdvocating for inclusive hiring and speaker lineups\r\nSupporting infrastructure: funding, venues, visibility\r\n\r\nCall to Action (4mins)\r\nRecap of key takeaways\r\nShare a personal reflection on the power of community\r\nCall to action:\r\nJoin/support PyLadies\r\nBecome a mentor\r\nCreate inclusive spaces in your local tech communities\r\nQ&A", "recording_license": "", "do_not_record": false, "persons": [{"code": "PLZZRD", "name": "Gertrude Abagale", "avatar": "https://pretalx.evolutio.pt/media/avatars/IMG_4029_iedAHod.jpg", "biography": "Gertrude Abagale is a Cybersecurity engineer and an active contributor to community-led open-source initiatives across Africa. She works extensively with Python to build secure backend systems and enterprise integrations. Beyond her professional work, she volunteers with PyLadies Ghana, Python Ghana, AWS User Group Accra, and Everything Open Source. Through mentoring, speaking, and community event organization, she supports women and underrepresented groups transitioning into tech, with a focus on creating accessible pathways into open-source and fostering sustainable, inclusive tech ecosystems.", "public_name": "Gertrude Abagale", "guid": "b96b97fa-bb7c-5e50-b0d8-7a9e72973037", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/PLZZRD/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/HH87TE/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/HH87TE/", "attachments": []}, {"guid": "084c9fd4-296c-5fcc-ba61-e0d88665cfce", "code": "9KEBYY", "id": 2008, "logo": null, "date": "2026-09-04T11:30:00+00:00", "start": "11:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2008-small-language-models-privacy-first-ai-with-python-why-local-models-are-replacing-massive-inference-stacks", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/9KEBYY/", "title": "Small Language Models: Privacy-First AI with Python...  Why local models are replacing massive inference stacks", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Large language models dominate the AI conversation, but many real-world applications don\u2019t need massive infrastructure or external APIs. This talk shows how Python developers can run Small Language Models (SLMs) locally using tools like Hugging Face Transformers, bitsandbytes, and lightweight RAG pipelines to build privacy-first AI systems that are faster, cheaper, and easier to deploy.", "description": "For years, AI progress has been associated with larger and larger models. However, in many production environments, massive language models introduce serious engineering challenges: high latency, expensive infrastructure, and sensitive data being sent to external APIs.\r\n\r\nIn practice, many NLP tasks do not require a 70B-parameter model.\r\n\r\nSmall Language Models (SLMs), typically in the 1B\u20137B parameter range, are becoming a powerful alternative. When combined with quantization techniques and efficient Python tooling, these models can run on modest hardware while still delivering strong performance for specialised tasks.\r\n\r\nThis talk explores how Python developers can design privacy-first AI systems using compact models and local infrastructure.\r\n\r\nUsing the Python ecosystem, including Hugging Face Transformers, bitsandbytes quantization, and lightweight retrieval pipelines, we will walk through how to fine-tune and deploy an SLM for domain-specific tasks. The talk will also demonstrate a local-first Retrieval-Augmented Generation (RAG) pipeline, where sensitive documents remain entirely within an organisation\u2019s infrastructure.\r\n\r\nWe will compare compact models against larger hosted models for targeted NLP tasks and discuss the trade-offs between model size, latency, cost, and deployment complexity.\r\n\r\nThe goal is not to replace large models entirely, but to show when smaller models are the more practical engineering choice.\r\n\r\nStructure of the talk:\r\n\u2022 Why model size is not always the best metric for capability\r\n\u2022 Running SLMs locally with Python and quantization techniques\r\n\u2022 Building a local-first RAG pipeline for private document retrieval\r\n\u2022 Benchmarking accuracy, latency, and infrastructure cost\r\n\u2022 When to choose small models vs large hosted models\r\n\r\nBy the end of the talk, attendees will understand how to build efficient, privacy-preserving AI systems using the Python ecosystem without relying entirely on large cloud-hosted models.", "recording_license": "", "do_not_record": false, "persons": [{"code": "BFDUC8", "name": "Anthonette Adanyin", "avatar": null, "biography": "I am a Lead Data Scientist with 5 years of experience deploying production ML and analytics systems across enterprise IoT, marketing technology and customer intelligence platforms. I hold an MSc in Artificial Intelligence, am AWS Certified, a BCS Member, and a published researcher in ethical AI with 150 citations. I mentor at Coding Black Females, organise with the PyData community. I speak about production machine learning, responsible AI and what it actually takes to build data science work that lands.", "public_name": "Anthonette Adanyin", "guid": "bb4952a1-2a84-5c0d-8665-62b488d08baf", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/BFDUC8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/9KEBYY/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/9KEBYY/", "attachments": []}, {"guid": "01f87b81-bd1b-5b2b-a34c-b15b433a3e08", "code": "YETWYL", "id": 2107, "logo": "https://pretalx.evolutio.pt/media/pycon-portugal-2026/submissions/YETWYL/python-critical__1EJRWiO.png", "date": "2026-09-04T12:00:00+00:00", "start": "12:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2107-building-resilient-python-apis-for-systems-that-can-t-afford-to-fail", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/YETWYL/", "title": "Building Resilient Python APIs for Systems That Can't Afford to Fail", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Python developers are building APIs that expose industrial control systems (PLCs and sensor networks via Modbus or OPC-UA) to the internet, often with basic authentication and outdated dependencies. When code controls power grids, water systems, or manufacturing processes, a compromised API or a typosquatted package is not just a data leak, it can disrupt operations.\r\n\r\nBecause of this, the way these APIs are built introduces security concerns that are not always visible during development. Many of these applications depend on third-party packages, which creates exposure to supply chain risks.\r\n\r\nAttackers use techniques such as typosquatting, publishing malicious packages with names similar to widely used libraries (such as reqeusts instead of requests). Once installed, these packages can access environment variables, API keys, or system interfaces. Outdated dependencies introduce additional risk, as libraries such as requests or urllib3 may contain known weaknesses, including credential leakage during redirects or improper SSL validation.\r\n\r\nThese patterns come from web development, where their impact is often limited to data exposure. When the same code is used in systems connected to infrastructure that controls physical processes, the consequences change. Weak API design or a compromised dependency can affect system behavior, not just stored data.\r\n\r\nThis difference creates a gap between how Python applications are commonly built and what is expected in these environments. Small decisions in Python API design can reduce risk in systems where software directly affects physical processes.\r\n\r\nThis talk shows Python developers how to secure these integrations through safer API design, careful handling of dependencies, and decisions that improve system resilience without requiring deep security expertise.", "description": "This talk looks at how Python APIs connect industrial control systems such as PLCs and sensor networks to external systems. These integrations are often built using familiar patterns, but the risks change when software affects physical processes.\r\n\r\nHere, the session starts with how Python is used in these environments and then moves to common issues in API design and dependency use, including typosquatting and outdated libraries. From there, it explains how problems that seem minor in web applications can affect system behavior in industrial settings.\r\n\r\nBased on this, the talk ends with practical ways developers can write safer APIs and handle dependencies more carefully, without adding unnecessary complexity.", "recording_license": "", "do_not_record": false, "persons": [{"code": "HKYP3Q", "name": "Natalia Riveros N\u00fa\u00f1ez", "avatar": "https://pretalx.evolutio.pt/media/avatars/HKYP3Q_bx62s8r.jpg", "biography": "Natalia Riveros is an engineer and lawyer working in cybersecurity for infrastructure systems. Her work focuses on how software decisions affect systems such as energy, water, and industrial environments. She combines hands-on work in API security and system analysis with a strong background in legal frameworks. Natalia has worked on topics including ethical hacking, system security, and governance, and has spoken about the role of AI in cybersecurity within the energy sector. Her approach connects technical work with real operational and legal challenges.", "public_name": "Natalia Riveros N\u00fa\u00f1ez", "guid": "3cde8daf-4c89-5116-bf7d-fead3e93b496", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/HKYP3Q/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/YETWYL/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/YETWYL/", "attachments": []}, {"guid": "d0752879-0145-54e3-bdc4-4915dd3f54ec", "code": "99JTVH", "id": 2145, "logo": null, "date": "2026-09-04T12:30:00+00:00", "start": "12:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2145-predicting-the-future-with-machine-learning-and-python", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/99JTVH/", "title": "Predicting the future with machine learning and Python", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Forecasting is one of the most important and frequent problems in machine learning.\r\n\r\n- How many customers will visit a store next Friday?\r\n- How many products will a factory sell three months from now?\r\n- How many tourists will visit a city next summer?\r\n\r\nIn this talk, you will learn how to solve these types of problems with machine learning in Python.\r\n\r\nThe talk will start with a brief introduction to the necessary machine learning concepts, then explain how to transform a time series problem into a machine learning problem. It will focus on concepts that are not only essential for this approach, but for time series modelling in general.", "description": "Time series problems can be tackled with specialized models, but in practice, many real-world solutions rely on reframing forecasting tasks as supervised machine learning problems. In this talk, we\u2019ll focus on this approach, since many of its core ideas also underpin time series\u2013specific models. This makes it the best introduction to time series modelling.\r\n\r\nWe\u2019ll start by reviewing the essential supervised machine learning concepts needed when working with time-dependent data. From there, we\u2019ll see how to transform a time series problem into a supervised machine learning problem by carefully designing inputs and targets.\r\n\r\nFinally, we\u2019ll focus on a critical aspect: evaluation. We\u2019ll discuss how to validate machine learning models in general, and how time dependence fundamentally changes validation strategies in the context of time series.\r\n\r\nBy the end of the talk, attendees familiar with machine learning will know how to apply their skills to time series problems, while those newer to ML will gain a solid conceptual foundation for understanding how modern time series models work under the hood.", "recording_license": "", "do_not_record": false, "persons": [{"code": "S7G3ZA", "name": "Juan Castillo del R\u00edo", "avatar": "https://pretalx.evolutio.pt/media/avatars/S7G3ZA_lrIUYFJ.jpg", "biography": "I studied Mathematics and Statistics at the Universidad Complutense de Madrid, and I work as a Data Scientist at Decide4AI.", "public_name": "Juan Castillo del R\u00edo", "guid": "31086f05-f0f6-5538-9f15-46c6656a7a43", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/S7G3ZA/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/99JTVH/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/99JTVH/", "attachments": []}, {"guid": "ec3cb107-20fe-5d72-b6af-559a95151903", "code": "SSLMWK", "id": 1964, "logo": null, "date": "2026-09-04T14:00:00+00:00", "start": "14:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-1964-building-multi-tenant-saas-applications-with-django", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/SSLMWK/", "title": "Building Multi-Tenant SaaS Applications with Django", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Learn how to build scalable multi-tenant SaaS applications with Django. This talk explains tenant isolation, schema-based architectures, and authentication strategies, with practical lessons from building real Django project", "description": "Many SaaS applications must serve multiple organizations while keeping their data isolated and secure. Django provides powerful tools to build such systems, but designing a clean and scalable multi-tenant architecture can be challenging.\r\n\r\nIn this talk, I will walk through practical approaches to building multi-tenant SaaS applications using Django.\r\n\r\nFirst, I will introduce the concept of multi-tenancy and the common architectural approaches used in SaaS platforms. Then I will demonstrate how Django can support schema-based and shared-database tenant models.\r\n\r\nThe talk will cover:\r\n\r\n\u2022 Understanding multi-tenant architectures\r\n\u2022 Schema-based vs shared-database approaches\r\n\u2022 Authentication and permissions in multi-tenant systems\r\n\u2022 Handling migrations and tenant onboarding\r\n\u2022 Lessons learned from building real Django projects\r\n\r\nThis session focuses on practical implementation and real-world lessons. Attendees will leave with a clear understanding of how to design and implement multi-tenant applications using Django.", "recording_license": "", "do_not_record": false, "persons": [{"code": "PZPHPS", "name": "Brian Oginga", "avatar": "https://pretalx.evolutio.pt/media/avatars/PZPHPS_YgMtl4p.jpg", "biography": "Brian Ochieng Oginga is a Python and Django developer from Kenya. He focuses on backend development, APIs, and building real-world web applications using Django. Brian actively contributes to open-source projects and shares his learning through community discussions, mentorship, and technical content about Python and Django. He is passionate about helping beginners understand backend development and growing the Python community in Africa.", "public_name": "Brian Oginga", "guid": "d29309c8-4f32-56df-8876-99d8af1ab50c", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/PZPHPS/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/SSLMWK/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/SSLMWK/", "attachments": []}, {"guid": "bc6f3e84-d4d3-53e5-a7fb-933361ce2317", "code": "89C3AY", "id": 1923, "logo": null, "date": "2026-09-04T14:30:00+00:00", "start": "14:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-1923-now-available-a-pythoneer-s-guide-to-iac-with-pulumi", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/89C3AY/", "title": "Now available: A pythoneer's guide to IaC with Pulumi", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Why keep managing your cloud with rigid HCL when you can use Python?\r\nPython + Pulumi bridges the gap between dev and devOps with the same language.", "description": "Why keep managing your cloud with rigid HCL when you can use the power of Python?\r\nTraditional Infrastructure as Code (IaC) tools forced us developers to use domain-specific languages that lack the ecosystem, tooling and best practices we love.\r\n\r\nLet's see how Python + Pulumi bridge the gap between dev and devOps without language switching, while discussing how recent Terraform changes make now maybe the perfect time to adopt a truly code-first, open-source approach.\r\n\r\nThis session is a live-coding, hands-on, no slides, dive into IaC and Pulumi IaC, an OSS tool that treats infrastructure as a first-class code citizen, not just a config file. We'll deploy and manage a Google Cloud environment, demonstrating how Python's great ecosystem allows better abstraction, loop management, and testing than HCL or YAML.\r\n\r\n- Limitation of traditional DSL in complex environments.\r\n- Python features, tools and best practices transfered to Pulumi.\r\n- Migrating from Terraform to Pulumi + Python.\r\n- Using Pulumi with Python for Google Cloud.\r\n\r\nAudience: Pythoneers, pythonistas, cloud architects/engineers, experienced TF devOps, devs looking to grow into platform engineers before AI takes our jobs and dooms us all maybe? \ud83d\ude2e", "recording_license": "", "do_not_record": false, "persons": [{"code": "SMK8SE", "name": "Marcos Manuel Ortega Gonz\u00e1lez", "avatar": "https://pretalx.evolutio.pt/media/avatars/SMK8SE_8Dzklid.png", "biography": "- Cloud consultant, architect & trainer\r\n- 14 years of experience in Google Cloud, 9 years of experience as a trainer\r\n- Google Developer Expert in Google Cloud\r\n- Google Cloud Authorized Trainer", "public_name": "Marcos Manuel Ortega Gonz\u00e1lez", "guid": "92231dd4-fa6d-5ac8-9baa-9401c05eb68e", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/SMK8SE/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/89C3AY/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/89C3AY/", "attachments": []}, {"guid": "9b42a1e3-7e67-56ac-832b-60366f8a34fb", "code": "FYSCHQ", "id": 2049, "logo": null, "date": "2026-09-04T15:30:00+00:00", "start": "15:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2049-implementing-data-quality-control-with-python", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FYSCHQ/", "title": "Implementing Data Quality Control with Python", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In this talk about Data Quality, I will explore its main concepts, technologies, and strategies, besides presenting a benchmark of Python solutions and a use case applying Airflow to execute Data Quality validations", "description": "Data Quality is growing in importance and visibility as companies understand the strategic value of it inside the Data Governance field. In this talk, I will explore the impact of implementing Data Quality routines in data pipelines and the available techniques and technologies, applying Python to do so. This lecture will be divided into four sessions, starting with the presentation of Data Quality's main concepts, then presenting three use cases, a benchmark of data quality tools, and, finally, a use case using Airflow to implement data quality validations.\r\n\r\nStructure planned:\r\n- Presenting myself (2 minutes)\r\n- Why Data Quality is so relevant? (3 minutes)\r\n- Data Quality main concepts (3 minutes)\r\n- Three use cases of Data Quality (5 minutes)\r\n- A benchmark for Python tools (7 minutes)\r\n- A use case with Airflow (7 minutes)\r\n- Questions (3 minutes)", "recording_license": "", "do_not_record": false, "persons": [{"code": "8XWDHA", "name": "Rafael Ara\u00fajo", "avatar": "https://pretalx.evolutio.pt/media/avatars/8XWDHA_2pDrlHH.jpg", "biography": "I have more than 10 years of experience working on data projects, with prior experience in roles such as Data Engineer, Data Scientist, Data Architect, and Data Governance.\r\n\r\nI had the honor of being a speaker at events such as GopherCon Brasil and Python Brasil, talking about topics related to data.\r\n\r\nCurrently, I work on a Data Governance project, implementing Data Quality routines.", "public_name": "Rafael Ara\u00fajo", "guid": "d773c96b-5b4b-5fc0-8cd2-571a56b981e4", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/8XWDHA/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FYSCHQ/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/FYSCHQ/", "attachments": []}, {"guid": "85e1205e-1151-5996-9b3d-4731bad3a44d", "code": "KFV3DT", "id": 2165, "logo": null, "date": "2026-09-04T16:00:00+00:00", "start": "16:00", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2165-to-be-announced", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KFV3DT/", "title": "To be announced!", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "TBA", "description": "TBA", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KFV3DT/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/KFV3DT/", "attachments": []}, {"guid": "ec905539-dd9b-5e58-b54d-9dcaeb816ed0", "code": "GN7EQA", "id": 2158, "logo": null, "date": "2026-09-04T16:30:00+00:00", "start": "16:30", "duration": "00:30", "room": "Auditorium", "slug": "pycon-portugal-2026-2158-lightning-talks-friday", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GN7EQA/", "title": "Lightning talks \u26a1\ufe0f Friday", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Enjoy Friday's lightning talks! Short talks about everything by everyone.", "description": "Lightning talks are 5 minute talks that anyone participating at the conference can submit. If 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!\r\n\r\nLightning talks last a maximum of 5 minutes. You can use less time, but not more. This time limit is strictly enforced!", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GN7EQA/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/GN7EQA/", "attachments": []}, {"guid": "d6992354-a081-5315-8b6f-6c046a0ffd78", "code": "ZA7PPP", "id": 2168, "logo": null, "date": "2026-09-04T17:00:00+00:00", "start": "17:00", "duration": "00:15", "room": "Auditorium", "slug": "pycon-portugal-2026-2168-closing-session", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZA7PPP/", "title": "Closing session", "subtitle": "", "track": null, "type": "Other", "language": "en", "abstract": "Closing session", "description": "Closing session", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZA7PPP/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/ZA7PPP/", "attachments": []}]}}, {"index": 3, "date": "2026-09-05", "day_start": "2026-09-05T04:00:00+00:00", "day_end": "2026-09-06T03:59:00+00:00", "rooms": {"Workshop Room A": [{"guid": "1d84f2dc-0e72-5631-be7e-d4013d7dc937", "code": "CY3LNP", "id": 2141, "logo": null, "date": "2026-09-05T09:00:00+00:00", "start": "09:00", "duration": "02:00", "room": "Workshop Room A", "slug": "pycon-portugal-2026-2141-this-agent-will-judge-your-bias", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CY3LNP/", "title": "This Agent Will Judge Your Bias!", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "AI doesn\u2019t just reflect society\u2014it amplifies its contradictions. From viral \u201cbikini\u201d image manipulation trends(!) in generative tools to hiring systems that systematically disadvantage women* in tech, we see the same pattern: erasure in one place, hypervisibility in another. In this hands-on workshop, we build AI agents with LangChain and LangGraph to detect and surface gender bias in real text systems\u2014turning critique into code, and visibility into a technical feature.", "description": "We start by examining real-world examples of bias in tech and AI outputs, then move directly into building AI agents using LangChain and LangGraph. Participants will design and implement a pipeline that detects gender bias in text, classifies its severity, and generates more inclusive rewrites.\r\nThe focus is practical: turning bias from an abstract concept into something observable, measurable, and actionable through working AI agents.", "recording_license": "", "do_not_record": false, "persons": [{"code": "BML7QG", "name": "Hilal I\u015f\u0131k", "avatar": "https://pretalx.evolutio.pt/media/avatars/BML7QG_raWFOkK.jpg", "biography": "Hilal I\u015f\u0131k is a Senior Data Analytics Coach, researcher, and community-driven practitioner working at the intersection of data, education, and social impact. She has hands-on experience in Python, SQL, machine learning, and data visualization, and focuses on translating complex data into clear, actionable insights for diverse audiences. Alongside her work in data analytics, she is an independent researcher and published author with a background in sociology, human rights, and European Studies. Hilal is also actively involved in the tech community, including initiatives such as PyLadies, where she supports knowledge sharing and collaborative learning around AI and data projects.", "public_name": "Hilal I\u015f\u0131k", "guid": "a3ab32ec-25db-526a-9a55-f7381fa2e00d", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/BML7QG/"}, {"code": "RDR97Q", "name": "Anastasia Mikheeva", "avatar": null, "biography": null, "public_name": "Anastasia Mikheeva", "guid": "5971d25a-2a53-5b19-998b-629a85f55616", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/RDR97Q/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CY3LNP/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/CY3LNP/", "attachments": []}, {"guid": "91c0fe17-6ffb-56f6-92f8-ae6d0ef9f06f", "code": "BBWJAV", "id": 2113, "logo": null, "date": "2026-09-05T11:30:00+00:00", "start": "11:30", "duration": "02:00", "room": "Workshop Room A", "slug": "pycon-portugal-2026-2113-audit-and-evaluate-ai-generated-python-code", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/BBWJAV/", "title": "Audit and evaluate AI generated Python code", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "These may be the most important skills to keep your job or to find a new one in the future! \r\n\r\nAI-generated code is a powerful tool, but it should never be blindly trusted. This intensive workshop, \"Audit and evaluate AI generated Python code,\" teaches you the critical skills you need to stay relevant in the future.", "description": "These may be the most important skills to keep your job or to find a new one in the future!\r\n\r\nAI-generated code is a powerful tool, but it should never be blindly trusted. This intensive workshop, \"Audit and evaluate AI generated Python code,\" teaches you the critical skills you need to stay relevant in the future: how to ensure AI-generated code is secure, functional, and aligns with your standards. \r\n\r\nWe will go beyond basic reviews with a four-step, hands-on approach. You will learn how to: \r\nPerform Functional Verification using tools like pytest and hypothesis for property-based testing; \r\nConduct Security & Dependency Audits with static analysis tools; \r\nExecute an Adversarial Review by attacking your own program; and \r\nAchieve Architectural Alignment using ruff and type checking with ty. \r\n\r\nFinally, we will cover how to measure and document the performance of your AI prompts using evaluation metrics. You\u2019ll leave this workshop prepared to take control of code that AI produces in your Python projects, and learn how to turn this code into quality code.\r\n\r\nThis workshop is specifically designed for developers who have already begun incorporating AI into their workflow to generate code and are looking to refine their auditing process.", "recording_license": "", "do_not_record": false, "persons": [{"code": "GTVKWZ", "name": "Cheuk Ting Ho", "avatar": "https://pretalx.evolutio.pt/media/avatars/GTVKWZ_827E84D.jpg", "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": "716d26c2-170b-5a5e-86e5-9d4cecf3bbdd", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/GTVKWZ/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/BBWJAV/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/BBWJAV/", "attachments": []}, {"guid": "8dd59f5f-84f1-5fd5-b3a4-781409f7388b", "code": "AKDPNX", "id": 2132, "logo": null, "date": "2026-09-05T14:30:00+00:00", "start": "14:30", "duration": "02:00", "room": "Workshop Room A", "slug": "pycon-portugal-2026-2132-sqlalchemy-orm-building-a-production-grade-commodity-pricing-api-without-raw-sql", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/AKDPNX/", "title": "SQLAlchemy ORM: Building a Production-Grade Commodity Pricing API Without Raw SQL", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "Managing a database and keeping application data in sync can become complex as Python applications grow. In this hands-on workshop, you\u2019ll learn how to use SQLAlchemy ORM to structure database interactions and build clean, maintainable Python APIs. We will use a commodity pricing API as a practical example to demonstrate how real-world systems are designed.\r\n\r\nWe\u2019ll cover how SQLAlchemy\u2019s Object Relational Mapper (ORM) replaces scattered raw SQL with structured Python models, making database operations more consistent and easier to manage. Participants will learn how to define ORM classes, model relationships, and work with efficient query patterns.\r\n\r\nWe will also explore SQLAlchemy\u2019s asyncio extension to show how modern Python applications interact with databases asynchronously.\r\n\r\nParticipants will leave with practical experience building a working API and a clear understanding of how to structure database-backed Python applications using SQLAlchemy ORM.", "description": "Managing a database and keeping application data in sync with the database can be tricky as Python applications grow in complexity. In many systems, raw SQL scattered across the codebase leads to tight coupling, reduced maintainability, and inconsistent data handling.\r\n\r\nIn this hands-on workshop, you\u2019ll learn how to use SQLAlchemy ORM to simplify database interactions and structure clean, maintainable Python APIs. We will build a commodity pricing API as a practical example to demonstrate how ORM-based design works in real applications.\r\n\r\nWe\u2019ll cover how SQLAlchemy\u2019s Object Relational Mapper (ORM) system helps replace raw SQL with structured Python models, making database operations more readable and easier to maintain. Participants will learn how to define ORM classes that represent database tables, manage relationships between models, and work with efficient querying techniques.\r\n\r\nWe will also explore relationship-loading strategies to understand how query behavior affects performance in real systems, and how to apply SQLAlchemy\u2019s asyncio extension in modern Python services.\r\n\r\nBy the end of this tutorial, participants will walk out having learned how to:\r\n\r\n    1. Use SQLAlchemy ORM to perform database operations in Python without relying on raw SQL\r\n    2. Design and implement ORM models that map directly to relational database tables\r\n    3.Manage database sessions and transactions correctly in real Python applications\r\n    4.Model relationships between entities and apply different relationship-loading strategies to control query behavior and performance\r\n    5. Use SQLAlchemy\u2019s asyncio extension to build asynchronous database-backed Python services\r\n    6. Structure a complete API workflow using SQLAlchemy ORM (using a commodity pricing API as a practical example)", "recording_license": "", "do_not_record": false, "persons": [{"code": "XBWYUW", "name": "David Asem", "avatar": "https://pretalx.evolutio.pt/media/avatars/XBWYUW_eypyqQR.jpg", "biography": "avid Asem is a Senior Software and AI Systems Engineer with over 8 years of professional experience building scalable software and intelligent systems. He specializes in full-stack engineering, machine learning, and production-grade AI systems, with a strong focus on designing solutions that solve real-world business problems.\r\n\r\nHe has worked across multiple industries, including insurance, fintech, healthcare, and financial markets, where he has led and contributed to systems that drive operational efficiency and business transformation. Currently, David is a Senior Full Stack Engineer at Starlife Assurance Limited, where he also leads AI initiatives focused on leveraging machine learning to enhance products and decision-making processes.\r\n\r\nIn addition to his role, David works as an independent consultant, helping organizations design and implement scalable software systems and AI-driven solutions across different industries.\r\n\r\nDavid is deeply passionate about the role of AI and emerging technologies in accelerating growth across Africa. His mission is to make it easier for organizations across the continent to harness the power of AI and digital technology to build, scale, and transform their businesses.\r\n\r\nBeyond his professional work, David is an active contributor to the global and African tech ecosystem. He has spoken at major conferences and communities including PyCon Africa, Google I/O Summit USA, Google Developer Group Accra, and the Ghana Data Science Summit. He also contributes as a mentor with programs such as the Deep Learning Indaba and Google Developer Exchange Program, supporting the next generation of engineers and researchers.\r\n\r\nHe has played a key role in community building, including pioneering and leading developer groups such as the Google Developer Student Club at KNUST. David is passionate about mentorship, leadership, and knowledge sharing, and continues to impact developers and organizations through speaking, consulting, and community engagement.", "public_name": "David Asem", "guid": "b4a5bac4-7d9f-5a28-9109-8ace10b298ea", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/XBWYUW/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/AKDPNX/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/AKDPNX/", "attachments": []}], "Workshop Room B": [{"guid": "9fd7f014-43eb-5208-9a72-806c1aafc6ab", "code": "TJN7DC", "id": 1970, "logo": "https://pretalx.evolutio.pt/media/pycon-portugal-2026/submissions/TJN7DC/animation-try-except-nes_fp2StFe.webp", "date": "2026-09-05T09:00:00+00:00", "start": "09:00", "duration": "02:00", "room": "Workshop Room B", "slug": "pycon-portugal-2026-1970-process-analyze-and-transform-python-code-with-asts", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/TJN7DC/", "title": "Process, Analyze, and Transform Python Code with ASTs", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "Come 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 code analysis checks from scratch, giving you the skills and confidence to use ASTs in your own projects.", "description": "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.\r\n\r\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.", "recording_license": "", "do_not_record": false, "persons": [{"code": "9NHRV8", "name": "Stefanie Molin", "avatar": "https://pretalx.evolutio.pt/media/avatars/li_2V5oeN2.jpeg", "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": "4d769dc0-ead5-5507-b574-f7d4a5d2a214", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/9NHRV8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/TJN7DC/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/TJN7DC/", "attachments": []}, {"guid": "7759b386-66f0-5984-9f53-b9d25c7b79a7", "code": "PSKUPQ", "id": 2171, "logo": "https://pretalx.evolutio.pt/media/pycon-portugal-2026/submissions/PSKUPQ/FunctionalProgrammingInPy_r09kx9f.png", "date": "2026-09-05T11:30:00+00:00", "start": "11:30", "duration": "02:00", "room": "Workshop Room B", "slug": "pycon-portugal-2026-2171-code-smarter-with-functional-python", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSKUPQ/", "title": "Code Smarter with Functional Python", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "What if we approached Python problems differently? This hands-on workshop introduces Functional Programming as a problem-solving mindset: break complexity into small functions, control side effects, compose reusable pieces, and build predictable systems. Learn practical Functional Programming techniques in Python.", "description": "Functional programming helps in understanding, designing, and composing your code. This hands-on workshop introduces Functional Programming in Python as a practical approach to breaking complex problems into small, predictable, reusable, and composable functions.\r\nStarting with first-class functions, higher-order functions, closures, and decorators, we explore the core principles of functional programming including pure functions, immutability, referential transparency, side-effect management, declarative programming, lazy evaluation, iterators, generators, and recursion. Participants will then discover powerful techniques such as function composition, pipelines, functional chaining, currying, partial application, memoization, caching, and dynamic programming.\r\nThrough 20+ code examples we will explore functional design patterns. We will also explore Functional Programming vs. Object-Oriented Programming and when the two approaches can work together effectively.\r\nThe goal is simple: learn to break down complexity, compose better solutions, reduce unnecessary state and side effects, and design code that is easier for us to understand, test, and evolve.", "recording_license": "", "do_not_record": false, "persons": [{"code": "NJQX73", "name": "Mohnish Awade", "avatar": "https://pretalx.evolutio.pt/media/avatars/NJQX73_nePmkex.webp", "biography": "Mohnish is a software engineer and a math enthusiast. He has been working with Python especially in the field of Machine learning from developing cutting-edge algorithms to demystifying complex mathematical theories, and his career has been driven by the intersection of computer science and mathematics.  \r\n\r\nWith over a decade of work experience in Python software development under a highly competitive problem solving environment. He has a solid foundation in Python compiler(CPython) and its programming.\r\n\r\nHe love to work with low level programming languages such as C/C++ to build performance oriented applications interfaced with python programming. He regularly apply OOP with functional programming principles to create and maintain high-quality clean code.", "public_name": "Mohnish Awade", "guid": "1efea353-dc50-5185-88da-51b1f48e3dc8", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/speaker/NJQX73/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSKUPQ/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/PSKUPQ/", "attachments": []}, {"guid": "80ef68bb-9fe4-54e9-a9b0-ab9e8cabb61b", "code": "S9BHKB", "id": 2169, "logo": null, "date": "2026-09-05T14:30:00+00:00", "start": "14:30", "duration": "02:00", "room": "Workshop Room B", "slug": "pycon-portugal-2026-2169-to-be-announced", "url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/S9BHKB/", "title": "To be announced!", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "TBA", "description": "TBA", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/S9BHKB/feedback/", "origin_url": "https://pretalx.evolutio.pt/pycon-portugal-2026/talk/S9BHKB/", "attachments": []}]}}]}}}