<?xml version='1.0' encoding='utf-8' ?>
<!-- Made with love by pretalx v2026.1.1. -->
<schedule>
    <generator name="pretalx" version="2026.1.1" />
    <version>0.24</version>
    <conference>
        <title>PyCon UK 2025</title>
        <acronym>pyconuk-2025</acronym>
        <start>2025-09-19</start>
        <end>2025-09-22</end>
        <days>4</days>
        <timeslot_duration>00:05</timeslot_duration>
        <base_url>https://pretalx.com</base_url>
        
        <time_zone_name>Europe/London</time_zone_name>
        
        
        <track name="Keynote" slug="5504-keynote"  color="#ff00ff" />
        
        <track name="Young Coders" slug="5502-young-coders"  color="#ff0000" />
        
        <track name="Social" slug="5503-social"  color="#0000ff" />
        
        <track name="Classroom" slug="5505-classroom"  color="#743f7d" />
        
        <track name="Lecture" slug="5506-lecture"  color="#5fa90a" />
        
        <track name="Django Girls" slug="5507-django-girls"  color="#ea8603" />
        
        <track name="Round table" slug="5508-round-table"  color="#08b1c7" />
        
    </conference>
    <day index='1' date='2025-09-19' start='2025-09-19T04:00:00+01:00' end='2025-09-20T03:59:00+01:00'>
        <room name='Main stage' guid='b87513ee-2923-5905-abff-942da8dd882f'>
            <event guid='bc0dbbb9-d53c-5c59-88d9-a24ba7580ad9' id='74362' code='YBC7Y7'>
                <room>Main stage</room>
                <title>Welcome Friday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-19T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>Welcome Friday</abstract>
                <slug>pyconuk-2025-74362-welcome-friday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Welcome Friday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/YBC7Y7/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/YBC7Y7/feedback/</feedback_url>
            </event>
            <event guid='d73ccea3-22dd-5948-9a20-55e1997ed498' id='75424' code='QHSGAY'>
                <room>Main stage</room>
                <title>Python&#8217;s True Superpower</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2025-09-19T11:30:00+01:00</date>
                <start>11:30</start>
                <duration>01:00</duration>
                <abstract>Python appears to be everywhere nowadays! How did it happen, that a language that almost died in the Python 2 to 3 process is now the default choice when people talk about programming? There must be some secret superpower and I think I found it!</abstract>
                <slug>pyconuk-2025-75424-python-s-true-superpower</slug>
                <track>Keynote</track>
                
                <persons>
                    <person id='74968'>Hynek Schlawack</person>
                </persons>
                <language>en</language>
                <description>Python appears to be everywhere nowadays! How did it happen, that a language that almost died in the Python 2 to 3 process is now the _lingua franca_ a default choice when people talk about programming? There must be some secret superpower and I think I found it!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/QHSGAY/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/QHSGAY/feedback/</feedback_url>
            </event>
            <event guid='092b74cd-4532-58e6-bf76-71e0cbd8a02b' id='66608' code='J9VBTY'>
                <room>Main stage</room>
                <title>Beyond lists: why other collection types are often better</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>Lists are everywhere in Python. But are they always the best tool for the job? Find out why tuples, sets and frozensets are often a better choice when working with collections.</abstract>
                <slug>pyconuk-2025-66608-beyond-lists-why-other-collection-types-are-often-better</slug>
                <track></track>
                
                <persons>
                    <person id='67316'>David Seddon</person>
                </persons>
                <language>en</language>
                <description>When writing Python, we often to need to work with a collection of objects. And so often we reach for the humble list. But lists, while they can get the job done, are often not the best choice.

Do you really need that collection to change? If you don&apos;t, picking a tuple instead will bring unexpected benefits. Or is the order of the elements important? If not, then using a set will open up a world of new possibilities. And if your set doesn&apos;t need to change, then consider a frozenset - Python&apos;s most underrated built-in data structure.

Equipped with these data structures, we&apos;ll close by looking at the subtleties of how to type-annotate functions, and why on earth it is better to use `Set` (with a capital &apos;S&apos;) for an argument type, but `set` for the return type.

It&apos;s time to go beyond lists!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/J9VBTY/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/J9VBTY/feedback/</feedback_url>
            </event>
            <event guid='57b35105-0019-537b-9e67-96a83cccdf80' id='70398' code='7ANAYC'>
                <room>Main stage</room>
                <title>More Spoons Please: Coping With Long Covid As A Programmer</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>Last year, Covid ate my brain. This talk is a distillation of some of the things that have helped me so far as I gradually reassembled myself and got back to work again.</abstract>
                <slug>pyconuk-2025-70398-more-spoons-please-coping-with-long-covid-as-a-programmer</slug>
                <track></track>
                
                <persons>
                    <person id='70735'>Hannah Hazi</person>
                </persons>
                <language>en</language>
                <description>As I discovered to my cost last summer, Covid never really went away. I&apos;d caught it before but this time was different. Instead of a swift recovery I faced months of grinding exhaustion and brain fog so severe that my life became very limited. I began to wonder if I would ever be able to use my mind in the same way again. Ultimately I was one of the lucky ones and made a nearly full recovery but what happened along the way forever shaped how I approach my health and work.

During this talk I&apos;ll dig into some of the latest studies about Covid and its lasting effects on our bodies and brains. I&apos;ll explain what helped me as I gradually expanded the envelope of what I could do as I recovered. I&apos;ll also look at common pitfalls and some surprising statistics about where new Long Covid cases are coming from.

I hope this talk could help people who&apos;ve been through a similar experience to feel less alone. It may also be relevant if you work alongside or manage someone with Long Covid - some of the strategies that I used were only possible because of my wonderful manager. Unfortunately there are still too many people entering this world of chronic illness every year. I want to reach out to them with some solidarity and science.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/7ANAYC/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/7ANAYC/feedback/</feedback_url>
            </event>
            <event guid='faaa9d0b-714c-5558-b1ed-37a16de61796' id='69951' code='79U7TB'>
                <room>Main stage</room>
                <title>Pyrefly: A Scalable Type Checker for a Unified IDE Experience</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>[Pyrefly](https://pyrefly.org/) is a Python type checker built to provide a fast type checking experience, enabling developers to write better code with confidence. It brings an IDE experience powering type hints and code navigation on a new type checking engine that scales to large codebases.</abstract>
                <slug>pyconuk-2025-69951-pyrefly-a-scalable-type-checker-for-a-unified-ide-experience</slug>
                <track></track>
                
                <persons>
                    <person id='74300'>Kyle Into</person>
                </persons>
                <language>en</language>
                <description>We started working on Pyrefly a little under a year ago, to make a type checker that stays fast on Meta&apos;s vast Python codebase, and can be the foundation for more than just checking of Python types.

In this session, you&#8217;ll see Pyrefly in action - we&#8217;ll dive into real-world examples showing how Pyrefly can supercharge your workflow, even if your code is 100% untyped!

Whether you&#8217;re a Python enthusiast or a seasoned engineer, you&#8217;ll walk away with practical tips to start using Pyrefly in your own projects and elevate your IDE experience.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/79U7TB/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/79U7TB/feedback/</feedback_url>
            </event>
            <event guid='8fa0eb89-0ad6-5978-8133-68880a281436' id='70350' code='Y3CKRH'>
                <room>Main stage</room>
                <title>exec: putting Python in your Python so you can code while you code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>Did you know you can run Python code within Python itself? In this talk, we explore how you can dynamically generate, and run, Python code using `exec` and why you might want to do it in the first place.</abstract>
                <slug>pyconuk-2025-70350-exec-putting-python-in-your-python-so-you-can-code-while-you-code</slug>
                <track></track>
                
                <persons>
                    <person id='70707'>David Asboth</person>
                </persons>
                <language>en</language>
                <description>An often overlooked feature of programming languages like Python is the ability to dynamically generate and run code within an application. How can you do this? Why would you do this? We&apos;ll explore some use cases and some of the methods for doing this with built-in functions like `exec`. It&apos;s a useful feature to know and sometimes the right solution to a problem! We&apos;ll also discuss some best practices to avoid problems with running arbitrary code.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/Y3CKRH/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/Y3CKRH/feedback/</feedback_url>
            </event>
            <event guid='35c5fc3a-05bf-52ea-b7b1-db91842090bd' id='66420' code='CZGMN9'>
                <room>Main stage</room>
                <title>I&apos;m a Luddite, Why Aren&apos;t You</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T16:30:00+01:00</date>
                <start>16:30</start>
                <duration>00:25</duration>
                <abstract>Luddites fought automation that entrenched power into the hands of the wealthy risked their agency and damaged their way of life. AI threatens to do the same. We as software developers have the ability to empower our audiences to take back their agency, but we must learn from history.</abstract>
                <slug>pyconuk-2025-66420-i-m-a-luddite-why-aren-t-you</slug>
                <track></track>
                
                <persons>
                    <person id='67132'>CJ Shearwood</person>
                </persons>
                <language>en</language>
                <description>In the 1810s wealthy industrialists rolled out new automation technologies that reduced the agency of the workers who operated them, and replaced the work of skilled artisans with shoddy alternatives at rock bottom prices, enabling the economic engine that drove chattel slavery in the US south and the imperialist economic policies of the British empire in India.

In the 2020s wealthy tech titans are rolling out new automation technologies that reduce the agency of the workers that use them, and proport to replace the work of skilled workers with shoddy alternatives at rock bottom prices.

This is not inevitable. We have the power to build alternatives that preserve agency and dignity. But we must learn from the past.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/CZGMN9/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/CZGMN9/feedback/</feedback_url>
            </event>
            <event guid='7ff0849b-dd9c-5e43-b03e-df5782b2063b' id='74366' code='LHN3FW'>
                <room>Main stage</room>
                <title>Lightning talks Friday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-19T17:00:00+01:00</date>
                <start>17:00</start>
                <duration>01:00</duration>
                <abstract>Lightning talks Friday</abstract>
                <slug>pyconuk-2025-74366-lightning-talks-friday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Lightning talks Friday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/LHN3FW/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/LHN3FW/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 2' guid='e400b669-5265-58bb-ad28-dfe5605a70e5'>
            <event guid='65e6e181-5025-5a00-b88b-91c75ca79954' id='70123' code='W7UQUE'>
                <room>Space 2</room>
                <title>Eight Python Performance Mistakes I Won&#8217;t Make Again</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>A client was happy with a prototype I delivered, except for one detail: they needed my code to be about 100 times faster. I got there eventually, but through much confusion and mistakes, which I will share with you, so you don&apos;t have to go through them yourself.</abstract>
                <slug>pyconuk-2025-70123-eight-python-performance-mistakes-i-won-t-make-again</slug>
                <track></track>
                
                <persons>
                    <person id='69592'>Sasha Romijn</person>
                </persons>
                <language>en</language>
                <description>A few years ago, I took on a project to rewrite an old C project in Python. Once I delivered the prototype, the client was happy, except for one little detail: they ran some tasks against my code, which we had never discussed in detail, that used to take 10 minutes, and now took over 10 hours. So, I needed to make it about 100 times faster.

I did think early on about the most likely bottlenecks, and anticipated what might need improvement later. I considered the size of the data I had to work with, and how it would be queried. It didn&apos;t seem like a hard problem, the dataset wasn&apos;t that large. But as it turned out, all my assumptions and plans were wrong.

Being a generalist, I had never done Python performance optimisation at this level - most things I built were fast enough with minor effort. So I tried to collect more measurements, in ways I did not understand, drew the wrong conclusions and optimised the wrong components. And it didn&apos;t help that my project is based on obscure protocols from the late 90s with weird legacy compatibility requirements. 

I found my way around poor assumptions (_&quot;surely PostgreSQL will be the main bottleneck&quot;_), unknown expectations (_&quot;what do you mean, you want to run 1 million queries?&quot;_), and misunderstood measurements (_&quot;I can&apos;t believe SQLAlchemy is so slow - or is it?&quot;_). But after numerous red herrings, aha-moments, and questioning my career choices, I got the project to where it needed to be.

This talk will take you through the path I took, the lessons I learned from it, and things I would do different today. You&apos;ll learn something from it if you have or ever might write code where performance might matter.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/W7UQUE/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/W7UQUE/feedback/</feedback_url>
            </event>
            <event guid='46f66795-c7ae-5c3e-81f3-5dd4e5e27fea' id='67168' code='YQU7MV'>
                <room>Space 2</room>
                <title>From no-help to self-help: Streamlining processes with Slack and Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>A story of how I used Slack&#8217;s Python framework to build a self-service tool that enables internal users to complete processes more efficiently and reliably.</abstract>
                <slug>pyconuk-2025-67168-from-no-help-to-self-help-streamlining-processes-with-slack-and-python</slug>
                <track></track>
                
                <persons>
                    <person id='67110'>Isaac Oldwood</person>
                </persons>
                <language>en</language>
                <description>One of the things I love to do with Python is automate and streamline things. This talk is all about how I joined a company and got the chance to do just that.

When I joined the company the user would send a free text Slack message to a developer to kick off a process. Some issues with this were: requests not containing all required information, requests containing information in the wrong format, and interrupting developers - perish the thought&#8230;.

I solved this in a few ways starting with a no-code solution (Slack Workflows) and culminating in a fully fledged Slack App. Creating a Slack App effectively turns Slack into your own mini application with easy implementation of simple UIs.

In this talk we will explore how bitesize snippets of Python can solve an assortment of problems. Along the way I will share with you my successes (and failures) so that you can learn how to streamline your processes too.

Some basic understanding of Python and web APIs may be helpful but is certainly not required.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/YQU7MV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/YQU7MV/feedback/</feedback_url>
            </event>
            <event guid='f925d0b5-310b-5563-be60-b752b4fea265' id='70442' code='VJVXZP'>
                <room>Space 2</room>
                <title>Why, and how, all your Python code should be Declarative in the Age of Generative AI</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>We&apos;ll explore the tools that the Python language and ecosystem give us to inject rich metadata into code, and how we can exploit this to maximum advantage in an age where code is cheap, but delivering value with it is still as hard as ever.</abstract>
                <slug>pyconuk-2025-70442-why-and-how-all-your-python-code-should-be-declarative-in-the-age-of-generative-ai</slug>
                <track></track>
                
                <persons>
                    <person id='70765'>Dom Weldon</person>
                </persons>
                <language>en</language>
                <description>Python is an excellent scripting language, and its syntax and wider ecosystem have evolved over the past three and a half decades allowing it to be used to build (almost) anything.

However, the strength that this flexibility offers can also be a source of weakness: because it&apos;s so easy to write a script that simply does something, what that &apos;something&apos; is, and why it&apos;s being done, often goes undocumented and forgotten. This is especially true in large organisations where individuals come and go, but scripts and applications stay put.

In recent years, particularly after the advent of the typing system in version 3.5, and then runtime annotations in 3.9, Python has begun to offer powerful ways to go beyond simply documenting code, and instead to record structured metadata about what code is doing and why, inside code itself. This has proven of particular use for framework builders and platform engineers, but is there for everyone involved with Python code and the technologies and processes we build with it to use.

This talk will cover some of these tools and patterns, before exploring their significance in the context of new generative-AI powered systems for writing code and building technology. In particular, we&apos;ll look at the uses and abuses of the typing module&apos;s Annotated object (a Special Form), and its integrations with essential libraries like Pydantic. The talk will then move on to explore other sources of metadata within our code, such as that recorded in frameworks like ORMs, API implementations, and explicit stores of metadata like pyproject.toml.

Most importantly of all, however, the talk will argue that as engineers working in a high level language, Pythonistas need to rethink what it means to write code in a world where there are tools that will so readily write it for us. Instead of writing code to do technical work, we instead need to develop deep understandings of our businesses, processes, projects, users, and colleagues, to structure and record what we want to do, and why. 

We&apos;ll steer clear of &quot;prompt engineering&quot; and &quot;vibe coding&quot;, and instead make a brief detour into the often misunderstood academic discipline of Geography to argue for a new approach to writing Python in 2025 and beyond.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/VJVXZP/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/VJVXZP/feedback/</feedback_url>
            </event>
            <event guid='1b4a63bf-3d5d-50ba-92b9-a8c81703ccbf' id='70453' code='X3ZDPG'>
                <room>Space 2</room>
                <title>No data, no problem: Synthetic Data using LLMs and Faker</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>What do you do when you need to build data products, but don&#8217;t have any data?  Learn how to generate complex synthetic data using Faker. We will generate typical user journeys through a website, creating a synthetic data stream that could be used for development, testing or modelling.</abstract>
                <slug>pyconuk-2025-70453-no-data-no-problem-synthetic-data-using-llms-and-faker</slug>
                <track></track>
                
                <persons>
                    <person id='70720'>Eric Thanenthiran</person>
                </persons>
                <language>en</language>
                <description>Ever had a project grind to a halt because the data you need contains personal information, is confidential or protected by sector regulations? Synthetic data generation offers a practical solution to overcome these blockers, enabling development, testing, and work to continue without compromising data protection requirements.

This talks focuses on two distinct approaches to synthetic data creation. First, we assess the capabilities and limitations of Large Language Models as data generators, evaluating their effectiveness in producing structured event data. This is compared against Faker, an established Python library specifically designed for synthetic data generation.

We will apply these technologies to generate synthetic data that replicates website visitor behaviour patterns. Website analytics typically provide well-defined event structures and documented user journey patterns, making this an ideal candidate for synthetic data generation. The challenge lies in creating complex datasets that accurately represent the varied pathways users take through websites whilst maintaining realistic interaction patterns.

The project implements workflow that accepts specifications for user journey patterns, event schemas, and controlled randomness parameters. The output is a configurable event stream generator that mimics user journeys through a website. Come learn how you can generate similar fake data yourself...**because sometimes the best real data is the data you make yourself.**

**Outline**
1. Understanding the use case
2. Can&apos;t AI do this?
3. Faker to the rescue 
4. Faker Providers
5. How we used Faker</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/X3ZDPG/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/X3ZDPG/feedback/</feedback_url>
            </event>
            <event guid='47d9bc57-ad2d-55ce-9d16-70313e71c378' id='66621' code='GD9PX7'>
                <room>Space 2</room>
                <title>Creative beginners Python programming in the browser</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-19T16:30:00+01:00</date>
                <start>16:30</start>
                <duration>00:25</duration>
                <abstract>This talk presents Strype, a free, online Python environment aimed at novice programmers. Strype combines frame-based editing &#8211; a technique that supports novices by reducing syntax errors &#8211; with an intuitive graphics framework. Users can learn programming by creating games and animations from day one, while learning fundamental programming principles.</abstract>
                <slug>pyconuk-2025-66621-creative-beginners-python-programming-in-the-browser</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/GD9PX7/StrypeGraphicsScreensho_xWsKFcf.png</logo>
                <persons>
                    <person id='68143'>Pierre Weill-Tessier</person>
                </persons>
                <language>en</language>
                <description>Python is a very popular language for teaching teenagers to code.  However, beginners can struggle with managing challenges such as syntax errors, indentation, and installing Python on their device.  Strype is a new online programming editor that aims to solve all of these problems and provide an optimal introduction to Python.
It uses a new way to edit Python called frame-based editing that allows users to avoid dealing with whitespace for indentation, or mismatching brackets -- eliminating many syntax errors that novices make.  Furthermore, it runs entirely in the browser and allows easy creation of engaging graphical examples.
In this session we will demonstrate Strype and explain how it is specifically designed to help beginners learn Python. Strype is free and open source.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/GD9PX7/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/GD9PX7/feedback/</feedback_url>
            </event>
            <event guid='f9a60d3c-6d5b-554e-9f59-4c304136e53f' id='81218' code='PXCUQW'>
                <room>Space 2</room>
                <title>Ada: A play inspired by Ada Lovelace</title>
                <subtitle></subtitle>
                <type>Social event</type>
                <date>2025-09-19T18:30:00+01:00</date>
                <start>18:30</start>
                <duration>01:30</duration>
                <abstract>This year at PyCon UK, you&#8217;re warmly invited to a world premiere: Ada, a brand-new play inspired by Ada Lovelace, written by Emily Holyoake, and staged as a rehearsed reading by Nottingham-based theatre company Chronic Insanity</abstract>
                <slug>pyconuk-2025-81218-ada-a-play-inspired-by-ada-lovelace</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>&quot;You may turn the handle, and I will whirr and calculate without error!&quot;

Decades before the first computers are built, Ada imagines machines that can do anything, even compose beautiful pieces of music. Far beyond Ada&#8217;s future, a learning machine called Ginny breaks free of her routine and tests the boundaries of what ought to be possible.

*Ada* is an intricate re-telling of the life and legacy of Ada Lovelace, pioneer of computing, paralleling her history with a contemporary story about the potential of artificial intelligence.

---
Read playwright Emily Holyoake&apos;s [guest blog post](https://2025.pyconuk.org/2025/09/staging-ada-at-pycon2025/) sharing the inspiration behind Ada, the writing process, and what it means to bring this story to life.

[Chronic Insanity](https://www.chronicinsanity.co.uk/) is a Nottingham-based theatre company that creates and facilitates live events in a variety of traditional, found, and digital spaces. They make work accessibly, affordably, sustainably, and inclusively. They seek to change the definition of what theatre can be by playing with form, genre, medium, and technology.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/PXCUQW/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/PXCUQW/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 3' guid='3d929adb-7dbc-533f-b496-05457fd1a2ef'>
            <event guid='f52669e9-530d-5039-a168-f618d0fe0a8b' id='67450' code='9ANABW'>
                <room>Space 3</room>
                <title>Setting Up Reliable CI/CD Pipelines with Python, K8s &amp; Testcontainers</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-19T13:30:00+01:00</date>
                <start>13:30</start>
                <duration>01:25</duration>
                <abstract>Build a production-grade CI/CD pipeline using Python, Docker, Testcontainers, GitHub Actions, and Kubernetes. This workshop takes you from zero to deployment with real-world automation, testing, and monitoring. Perfect for all levels, it blends simplicity, storytelling, and powerful DevOps tools to boost your confidence in delivering reliable software.</abstract>
                <slug>pyconuk-2025-67450-setting-up-reliable-ci-cd-pipelines-with-python-k8s-testcontainers</slug>
                <track></track>
                
                <persons>
                    <person id='68086'>Koti Vellanki</person>
                </persons>
                <language>en</language>
                <description>Shipping software should feel empowering &#8212; not like fighting fires. Yet for many developers, CI/CD feels like a maze of YAMLs, fragile tests, cloud complexity, and guesswork. This workshop changes that story, using Python as your guiding light.

In this 85-minute hands-on session, you&#8217;ll build a complete, production-grade CI/CD pipeline &#8212; one that starts with a commit and ends with a deployed, monitored app in the cloud. But unlike most DevOps sessions, this one is crafted through the lens of simplicity, storytelling, and the power of Python.

We&apos;ll start with Python scripts that automate GitHub repo creation and Jenkins setup. From there, you&#8217;ll use Testcontainers to run realistic integration tests in Docker &#8212; giving you confidence that your tests reflect the real world. We&apos;ll automate builds and trigger workflows using GitHub Actions, then containerize your app and push it to Docker Hub.

Then comes the moment of truth: deploying your Python app to a live Kubernetes cluster (AWS EKS), using Python to manage manifests, rollouts, and environment configs. To top it off, you&apos;ll integrate a custom Prometheus exporter written in Python, visualized in Grafana, so you can watch your app breathe in real time.

This isn&#8217;t just another workshop filled with configs. It&#8217;s a journey &#8212; from chaos to clarity, from &#8220;I&#8217;m not sure what I&#8217;m doing&#8221; to &#8220;I actually built that!&#8221; Every step is hands-on, beginner-friendly, and deeply practical. We blend technical depth with real-world insight, humour, and moments of celebration.

Whether you&#8217;re just starting out with DevOps, or you&#8217;re a seasoned engineer who wants a clean, Pythonic approach to CI/CD, this session is for you. You&#8217;ll leave with a complete working pipeline, a solid understanding of every tool involved, and the confidence to recreate it at work, in your side projects, or with your teams.

By the end, you&#8217;ll walk away not only with skills, but with a story &#8212; a story of how you connected the dots and built something amazing, powered by Python.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/9ANABW/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/9ANABW/feedback/</feedback_url>
            </event>
            <event guid='51dc1970-86a3-57bf-a62d-892088557c79' id='69562' code='FDPLPX'>
                <room>Space 3</room>
                <title>Simply the best: An introduction to machine learning with evolutionary algorithms</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-19T15:30:00+01:00</date>
                <start>15:30</start>
                <duration>01:25</duration>
                <abstract>Evolutionary algorithms are part of machine learning. They solve optimization problems, searching for the &apos;best&apos; solution(s) to problems. They are inspired by the process of evolution in nature. This workshop will show how easy they are to code up, letting you practice Python and discover some machine learning.</abstract>
                <slug>pyconuk-2025-69562-simply-the-best-an-introduction-to-machine-learning-with-evolutionary-algorithms</slug>
                <track></track>
                
                <persons>
                    <person id='70084'>Frances Buontempo</person>
                </persons>
                <language>en</language>
                <description>Starting with a brief introduction to evolutionary algorithms, participants will code &#8216;OneMax&#8217;, a &#8216;hello world&#8217;-type example for evolutionary algorithms, then move to more complicated examples. 
The workshops will give a practical understanding of the important patterns of evolutionary algorithms and show how randomness can be used to solve problems.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/FDPLPX/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/FDPLPX/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 4' guid='85b19a87-2f2d-5003-a2ef-07c1bfecff3e'>
            <event guid='46caff77-1e85-5ecb-8b40-6ea9d826321c' id='70542' code='GW3Z8Y'>
                <room>Space 4</room>
                <title>TDD: what it is, why it&apos;s good, and why it might just solve all your AI problems</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-19T13:30:00+01:00</date>
                <start>13:30</start>
                <duration>01:25</duration>
                <abstract>Find out what TDD is, and what it gives you over and above writing the tests after the fact.  Including, perhaps, a solution to some of the common failure modes of AI codegen.</abstract>
                <slug>pyconuk-2025-70542-tdd-what-it-is-why-it-s-good-and-why-it-might-just-solve-all-your-ai-problems</slug>
                <track></track>
                
                <persons>
                    <person id='70673'>Harry Percival</person>
                </persons>
                <language>en</language>
                <description>Automated testing is now common in the Python community, but many of the now-grizzled veterans of the agile movement argued for something more: test-driven development.  There are many misconceptions about what TDD is and why people advocate for it, so come and find out all about it in this session, which will include

- An interactive demonstration of TDD, the red-green-refactor loop, incremental development, outside-in, &quot;simplest possible changes&quot;, and more...

- A chance to try it out yourself!

- Some tips for how to get your AI companion to work in a TDD way, thus avoiding some of its most egregious failure modes.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/GW3Z8Y/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/GW3Z8Y/feedback/</feedback_url>
            </event>
            <event guid='dea99ad9-4276-5ae8-a8e4-31ad78d24552' id='69320' code='TBDW9P'>
                <room>Space 4</room>
                <title>Memray 101: Demystifying memory profiling in Python</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-19T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>01:55</duration>
                <abstract>Explore Memray, a powerful open source memory profiler for Python. This workshop introduces its tools for tracking allocations in Python code, native modules, and the interpreter. Learn to identify memory bottlenecks, debug efficiently, and optimize performance, so you can start profiling your applications with confidence and clarity today!</abstract>
                <slug>pyconuk-2025-69320-memray-101-demystifying-memory-profiling-in-python</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/TBDW9P/logo_8WTRZFF.png</logo>
                <persons>
                    <person id='69870'>Jesse Carnaxide</person>
                </persons>
                <language>en</language>
                <description>Memray is an open source memory profiler developed at Bloomberg and used widely across the software industry, including by organizations including Google, Meta, and NVIDIA. It tracks memory allocations in Python code, native extension modules, and the Python interpreter itself. Join this hands-on workshop to learn how to use Memray effectively and gain deeper insight into your code&#8217;s memory behavior.

Efficient memory usage is critical for high-performance applications. As software scales, manually identifying memory inefficiencies becomes increasingly difficult. Tools like Memray help uncover memory leaks and inefficient allocation patterns, enabling measurable improvements in performance and stability.

In this session, you&#8217;ll learn how to use Memray to generate detailed memory profiling reports that accurately capture the call stack&#8212;unlike sampling profilers. You&#8217;ll explore memory usage across Python and native threads (e.g., C++ extensions), analyze memory-heavy functions, and identify bottlenecks. You&apos;ll also learn how to use Memray&#8217;s pytest integration to automatically detect and prevent memory issues as part of your CI workflows.

The workshop is divided into three parts:

Part 1: Get started with Memray by generating flamegraph reports and testing for memory leaks using the pytest API.

Part 2: Investigate real-world memory problems, explore Python&#8217;s garbage collector, and understand how it can affect memory behavior in subtle ways.

Part 3: Dive into native code profiling, examine memory issues caused by misuse of Python&#8217;s functools library, and learn how to debug allocations in C++ extensions.

By the end of the workshop, participants will be equipped to confidently interpret Memray reports, identify and resolve memory inefficiencies in Python and native code, and integrate memory checks into their software development lifecycle

Whether you&apos;re optimizing a data pipeline, debugging memory leaks, or are simply curious about what&#8217;s going on under the hood, this workshop will give you practical, actionable skills to make your Python programs more efficient and robust.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/TBDW9P/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/TBDW9P/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='2' date='2025-09-20' start='2025-09-20T04:00:00+01:00' end='2025-09-21T03:59:00+01:00'>
        <room name='Main stage' guid='b87513ee-2923-5905-abff-942da8dd882f'>
            <event guid='1ad0cbde-963e-5940-9ff8-da88d25f6aad' id='74363' code='SZZPFG'>
                <room>Main stage</room>
                <title>Welcome Saturday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-20T09:00:00+01:00</date>
                <start>09:00</start>
                <duration>00:30</duration>
                <abstract>Welcome Saturday</abstract>
                <slug>pyconuk-2025-74363-welcome-saturday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Welcome Saturday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SZZPFG/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SZZPFG/feedback/</feedback_url>
            </event>
            <event guid='968e9970-9eb2-5cc4-bc21-9d2868ed6f93' id='75423' code='JVKBDV'>
                <room>Main stage</room>
                <title>Localization and translation of programming languages</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2025-09-20T09:30:00+01:00</date>
                <start>09:30</start>
                <duration>01:00</duration>
                <abstract>Most programming languages are in English, but why? And what does it entail to change that?</abstract>
                <slug>pyconuk-2025-75423-localization-and-translation-of-programming-languages</slug>
                <track>Keynote</track>
                
                <persons>
                    <person id='74966'>Felienne Hermans</person>
                </persons>
                <language>en</language>
                <description>In this talk Felienne Hermans, professor at VU Amsterdam and creator of the Hedy programming language, now available in 69 languages including Arabic, Dutch, Spanish and Hindi, will dive into the world of non-English programming. Try Hedy at www.hedy.org!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/JVKBDV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/JVKBDV/feedback/</feedback_url>
            </event>
            <event guid='b19b6fef-c750-5f43-b8bc-a120a1786312' id='70355' code='CZT9TC'>
                <room>Main stage</room>
                <title>Mapping Jane Austen&#8217;s Influence Across Space &amp; Time with Python and ClickHouse</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:25</duration>
                <abstract>What do zombies, Bollywood, and romantasy have in common? Jane Austen. This talk demonstrates how to embed, clean, and analyze unstructured data using Python and ClickHouse. By tracing relationships between derivative works, it maps how one author continues to shape global culture&#8212;at scale.</abstract>
                <slug>pyconuk-2025-70355-mapping-jane-austen-s-influence-across-space-time-with-python-and-clickhouse</slug>
                <track></track>
                
                <persons>
                    <person id='70711'>Nataly Merezhuk</person>
                </persons>
                <language>en</language>
                <description>I didn&#8217;t start in tech&#8212;I started with a violin. For years, I performed at weddings and chamber concerts, and eventually at Bridgerton-themed parties. That&#8217;s when I first saw how deeply Jane Austen&#8217;s stories still resonate today. Her work continues to inspire films, communities, and entire genres. That persistence&#8212;250 years on&#8212;is something worth honoring. This talk intends to trace Austen&apos;s cultural influence with data.

In this presentation, we will use Python to ingest, clean, and visualize semi-structured data. ClickHouse is the database of choice&#8212;used to store JSON, run full-text  and vector search. Together, these tools make it easy to explore semantic relationships across large, messy datasets.

This is aimed at a broad audience. If you&#8217;re new to coding or data analysis, you&#8217;ll see how approachable these tools have become. If you&#8217;re more experienced, you&#8217;ll get a look at how ClickHouse&#8217;s new JSON, vector, and full-text search features can support lightweight but powerful workflows&#8212;especially when paired with Python.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/CZT9TC/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/CZT9TC/feedback/</feedback_url>
            </event>
            <event guid='be01615b-11c6-5fd1-b979-ff4854d68a2b' id='70146' code='SGSXPT'>
                <room>Main stage</room>
                <title>Halt and Catch Fire: Forcefully Stopping Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T11:30:00+01:00</date>
                <start>11:30</start>
                <duration>00:25</duration>
                <abstract>Writing code which runs is easy. Writing code which stops (cleanly) is hard. Writing code which cleanly stop someone else&apos;s code? Harder still.</abstract>
                <slug>pyconuk-2025-70146-halt-and-catch-fire-forcefully-stopping-python</slug>
                <track></track>
                
                <persons>
                    <person id='70541'>Jake Howard</person>
                </persons>
                <language>en</language>
                <description>As developers, we&apos;re tasked with writing code, with the intention of running it. In most cases, we want to run said code for as long as possible - either until completion or until something external restarts us. But in some cases, we want to run until another part of our program tells us not to.

When defining background reusable tasks, you don&apos;t want them to run forever. If the task takes too long, for whatever reason, you want the task to stop. For sockets and other native APIs, there are native timeouts. But what about entire blocks of code? Or CPU-intensive operations? How can you (or a background worker library) stop them, cleanly and reliably, from within Python, all without any prior knowledge of how the background task is written or executed?

Well, there are quite a few ways to do it. Some elegant, some not so much...</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SGSXPT/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SGSXPT/feedback/</feedback_url>
            </event>
            <event guid='dd2d492a-5d1c-516b-b150-249b279ba26c' id='69317' code='BURQM7'>
                <room>Main stage</room>
                <title>How to be a Python Icon, writing Pythonic Code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T12:00:00+01:00</date>
                <start>12:00</start>
                <duration>00:25</duration>
                <abstract>What makes code Pythonic? In this talk, we&#8217;ll explore how clear, concise, and maintainable code embodies Pythonic principles. With simple, real-world examples, you&#8217;ll learn to spot common patterns and refactor them the Pythonic way &#8212; leaving with practical tips you can start applying to your code right away.</abstract>
                <slug>pyconuk-2025-69317-how-to-be-a-python-icon-writing-pythonic-code</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/BURQM7/python-icon_suPyjUZ.png</logo>
                <persons>
                    <person id='69870'>Jesse Carnaxide</person>
                </persons>
                <language>en</language>
                <description>Over the past 10 years as a software engineer, I&#8217;ve spent a lot of time trying to decipher other people&#8217;s code. Sometimes it feels like reading a foreign language; other times, it&#8217;s surprisingly clear and easy to follow. Those moments taught me something important &#8212; the kind of developer I want to be, and the kind of code I want to leave behind (because not all legacy code is bad!)

Throughout that journey, one word kept popping up: Pythonic. At first, it felt vague and a bit mysterious. But over time, as I wrote more code and reviewed even more, its meaning started to click. I began to see how Python&#8217;s unique strengths &#8212; simplicity, elegance, and expressiveness &#8212; can be harnessed to write code that&#8217;s not just functional, but also joyful to read and maintain.

Eventually, I realized how much I enjoy sharing this knowledge. What started in code reviews turned into a bigger idea: what if we taught these patterns before someone writes the code? And that&#8217;s how this talk came to be.

In this session, I&#8217;ll walk through some common Python coding patterns and demonstrate how they can be improved using more Pythonic alternatives. We&#8217;ll cover topics like looping, key lookups, truthiness, list construction, and resource management &#8212; all through clear examples that are easy to follow regardless of your experience level.

If you&apos;re still figuring out what Pythonic means, or want to make your code clearer, more concise, and more maintainable, this talk is for you. And if you already know these patterns, you might leave with a fresh way to teach them to others.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/BURQM7/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/BURQM7/feedback/</feedback_url>
            </event>
            <event guid='4326cc6d-8fc8-5b30-950a-20bfa696f68b' id='81685' code='GDFCDW'>
                <room>Main stage</room>
                <title>The UK Python Association - About Us</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>Come and find out more about the UK Python Association, the charity behind PyCon UK - who we are, what we do, and our plans</abstract>
                <slug>pyconuk-2025-81685-the-uk-python-association-about-us</slug>
                <track></track>
                
                <persons>
                    <person id='83185'>Kristian Glass</person>
                </persons>
                <language>en</language>
                <description>Come and find out more about the UK Python Association, the charity behind PyCon UK - who we are, what we do, and our plans</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/GDFCDW/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/GDFCDW/feedback/</feedback_url>
            </event>
            <event guid='82f128c3-71cb-50d9-8e6a-d6249d345275' id='69603' code='SZAR78'>
                <room>Main stage</room>
                <title>The tale of PEP 765: SyntaxWarning on `return` in `finally`</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>The next version of Python emits a SyntaxWarning when `return` is used in a `finally` block. This is a small change to the language, with an interesting history. This talk tells that story.</abstract>
                <slug>pyconuk-2025-69603-the-tale-of-pep-765-syntaxwarning-on-return-in-finally</slug>
                <track></track>
                
                <persons>
                    <person id='70122'>Irit Katriel</person>
                </persons>
                <language>en</language>
                <description>One of the new features of Python 3.14, which will be released in October, is that it emits a SyntaxWarning if `return`, `break` or `continue` appear in a `finally` block. This is a minor change to the language, with an interesting story. In fact, it was already proposed and rejected in the past. 

This talk explains the change that PEP 765 introduces to Python 3.14, and the motivation for it. It then reflects on the history of this change, and the reasons that PEP 601, which proposed it for version 3.8, was rejected. Covering the discussions and the research that led to the decision to accept this change by way of PEP 765, the talk also sheds light on the PEP process and the way that such decisions are made by the Core Developers and the CPython Steering Council.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SZAR78/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SZAR78/feedback/</feedback_url>
            </event>
            <event guid='8cbe825b-8450-59e3-b7a2-36c39ae1ad77' id='66379' code='RJMCYH'>
                <room>Main stage</room>
                <title>How to solve a Python mystery</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>Using Linux observability tools to learn what your Python application is doing</abstract>
                <slug>pyconuk-2025-66379-how-to-solve-a-python-mystery</slug>
                <track></track>
                
                <persons>
                    <person id='67104'>Aivars Kalv&#257;ns</person>
                </persons>
                <language>en</language>
                <description>Has any of your Python applications become unresponsive? Has it deadlocked or is it busy doing something? How can you know? When troubleshooting some Python applications you often don&#8217;t have time to analyze the source code and to understand how exactly it is working. Instead, you have to act fast and treat the application as a black box. In this talk, I will introduce useful Linux performance and observability tools that can be used to understand which files, connections, and OS system calls your application is performing. I will also share real-world mysteries that this approach has helped to solve.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/RJMCYH/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/RJMCYH/feedback/</feedback_url>
            </event>
            <event guid='f0855860-a1b3-5369-bfa9-744c10a3ef4c' id='67232' code='GMFRLG'>
                <room>Main stage</room>
                <title>Speed Matters: Accelerating Python with C++ and Pybind11</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>This talk will demonstrate how to re-write simple classes and functions in C/C++ and port them in python as a native package via Pybind11. Speed comparisons are made to showcase how refactoring certain code snippets in C can significantly benefit the algorithmic efficiency.</abstract>
                <slug>pyconuk-2025-67232-speed-matters-accelerating-python-with-c-and-pybind11</slug>
                <track></track>
                
                <persons>
                    <person id='67888'>Peichao Qin</person>
                </persons>
                <language>en</language>
                <description>Python is well known for its simplicity and adaptability in accomplishing a variety of daily tasks ranging from data analysis, scientific computing to imaging processing. But every now and then, we may encounter some highly resource-intensive tasks where large-scale datasets are involved and there are millions or even billions of operations needed in order to achieve automation. Pure Python solutions, in this case, can introduce noticeable speed limitations due to interpreted execution that may lead to significant computational overhead and wait time.

While CPython, PyPy, and native Python libraries built on C/C++ architectures like NumPy and OpenCV have offered some efficient solutions for tasks like matrix operations and image feature analysis, they often come with limitations and may lack the customizability required to implement custom logic specific to the project&apos;s need.

In this talk, I will illustrate how to use Pybind11 to import custom code written in C++ as native Python functions and therefore leverage both Python&apos;s flexibility and C++&apos;s fast performance. We will start with some basic mathematical functions (like max, min, and round) and gradually move on to more complex sorting and filtering algorithms in Python. By analysing their performance using %timeit method and re-write them in C++, we can observe the time difference in execution and demonstrate how the simplest refactoring can deliver significant speedups. 

If your Python tasks are crawling under heavy computational loads, this talk will give you some ideas on how to go beyond simple Pythonic logic to supercharge code performance while keeping your solutions relatively clean and maintainable.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/GMFRLG/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/GMFRLG/feedback/</feedback_url>
            </event>
            <event guid='ca04c85e-35c2-5857-88b9-5d55c91e9143' id='75864' code='7BHU9H'>
                <room>Main stage</room>
                <title>Young Coders demos</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T16:30:00+01:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Young Coders demos</abstract>
                <slug>pyconuk-2025-75864-young-coders-demos</slug>
                <track>Young Coders</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Young Coders demos</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/7BHU9H/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/7BHU9H/feedback/</feedback_url>
            </event>
            <event guid='df197b05-141a-51dd-ae71-7cc7c9df60d6' id='74367' code='VNTHEQ'>
                <room>Main stage</room>
                <title>Lightning talks Saturday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-20T17:00:00+01:00</date>
                <start>17:00</start>
                <duration>01:00</duration>
                <abstract>Lightning talks Saturday</abstract>
                <slug>pyconuk-2025-74367-lightning-talks-saturday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Lightning talks Saturday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/VNTHEQ/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/VNTHEQ/feedback/</feedback_url>
            </event>
            <event guid='37c409be-fca7-5bf3-9b1a-3ff50a02aa1c' id='80872' code='FM97MH'>
                <room>Main stage</room>
                <title>Social event: Manual technology and board games</title>
                <subtitle></subtitle>
                <type>Social event</type>
                <date>2025-09-20T18:15:00+01:00</date>
                <start>18:15</start>
                <duration>03:45</duration>
                <abstract>Manual technology and board games</abstract>
                <slug>pyconuk-2025-80872-social-event-manual-technology-and-board-games</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Not done hanging out with your fellow attendees? Stick around after talks for a chilled-out evening of board games and crafts, with food and drink available from the bar. We&apos;ll provide the board games and (some) craft supplies; you bring the laughter and conversation.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/FM97MH/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/FM97MH/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 2' guid='e400b669-5265-58bb-ad28-dfe5605a70e5'>
            <event guid='e177d055-0e6a-5dee-b389-386e6bbe7a06' id='69664' code='WHLYGZ'>
                <room>Space 2</room>
                <title>FastAPI, Furious Tests: The Need for Speed</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:25</duration>
                <abstract>Learn how we made our FastAPI tests 10x faster by ditching Docker, going in-memory, and embracing simplicity (and sanity).</abstract>
                <slug>pyconuk-2025-69664-fastapi-furious-tests-the-need-for-speed</slug>
                <track></track>
                
                <persons>
                    <person id='70167'>Shahar Polak</person>
                </persons>
                <language>en</language>
                <description>Modern Python apps deserve modern testing - fast, simple, and reliable.

We used to spin up MySQL in Docker, wait over 10 seconds per test, and cross our fingers that CI wouldn&#8217;t choke. Eventually, we&#8217;d had enough.

So we ripped out the containers, swapped MySQL for in-memory SQLite with SQLModel, and streamlined our test suite from sluggish to snappy. The result? A 10x speedup, simpler setup, and happier developers.

In this talk, I&#8217;ll show how we turbocharged our FastAPI testing setup by:
* Overriding dependencies the right way
* Using SQLite in-memory for speed and realism
* Writing clean, useful tests without relying on heavy infra

You&#8217;ll leave with practical techniques to make your test suite faster, your CI quicker, and your dev loop more joyful - without the complexity of Docker or the chaos of over-mocking.

No containers. No headaches. Just fast, clean Python tests.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/WHLYGZ/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/WHLYGZ/feedback/</feedback_url>
            </event>
            <event guid='ab28814e-d064-5e71-9869-485bd4d1af78' id='68355' code='FXABJ8'>
                <room>Space 2</room>
                <title>Principle Misunderstandings</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T11:30:00+01:00</date>
                <start>11:30</start>
                <duration>00:25</duration>
                <abstract>For developers who want to improve their art there&apos;s no shortage of published, promoted and proclaimed principles they can choose from to shape their style and craft their style. In this talk we&apos;ll take a look a few, highlighting the real lessons we can apply to our code.</abstract>
                <slug>pyconuk-2025-68355-principle-misunderstandings</slug>
                <track></track>
                
                <persons>
                    <person id='68963'>Kevlin Henney</person>
                </persons>
                <language>en</language>
                <description>For developers who want to improve their art there&apos;s no shortage of published, promoted and proclaimed principles they can choose from to shape their style and craft their style. Whether it&apos;s the alphabet soup of SOLID principles or old school classics like Information Hiding and the Separation of Concerns, there&apos;s a lot of advice out there. Some of it even makes sense. And some of it is well supported. But a lot of principles are misunderstood, misapplied or simply mistaken.

In this talk we&apos;ll take a look (and take down) a few principles, highlighting the real lessons we can apply to our code &#8212; lessons supported by sound rationale rather than just strong opinions.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/FXABJ8/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/FXABJ8/feedback/</feedback_url>
            </event>
            <event guid='936b4c26-38d4-5e56-ad77-b9df799fd8b6' id='70458' code='UJJFRE'>
                <room>Space 2</room>
                <title>Using Python to help with my spelling tests</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T12:00:00+01:00</date>
                <start>12:00</start>
                <duration>00:25</duration>
                <abstract>A third of London&apos;s population is foreign-born. The children of immigrants often learn English as an additional language. It can be challenging for non-native speakers to practice English spelling with their children. This talk will show how Python can support them in effectively practising British English spelling.</abstract>
                <slug>pyconuk-2025-70458-using-python-to-help-with-my-spelling-tests</slug>
                <track></track>
                
                <persons>
                    <person id='70772'>Tatiana Al-Chueyr</person><person id='70773'>Amanda Al-Chueyr</person>
                </persons>
                <language>en</language>
                <description>This talk will illustrate how my 8-year-old daughter and I used Python to:
1. Identify the words listed in her weekly spelling assignment given by the teacher on a piece of paper;
2. Use publically available data to convert those words to British pronunciation;
3. Make the audio available for her to practice for her spelling test.
4. How did this help in her tests</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/UJJFRE/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/UJJFRE/feedback/</feedback_url>
            </event>
            <event guid='da22cc11-21d7-5103-bde2-2de6744ced2f' id='70088' code='XBM3C7'>
                <room>Space 2</room>
                <title>Why Your Async Code Might Be Slower &#8212; and How to Fix It</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>Asyncio has become one of Python&#8217;s most popular libraries for writing fast, scalable applications. But sometimes, using async can actually make programs slower.
This talk explores common asyncio mistakes, how misunderstanding I/O-bound vs. CPU-bound tasks hurts performance, and practical patterns for writing efficient async code.</abstract>
                <slug>pyconuk-2025-70088-why-your-async-code-might-be-slower-and-how-to-fix-it</slug>
                <track></track>
                
                <persons>
                    <person id='70156'>Aastha</person>
                </persons>
                <language>en</language>
                <description>Asyncio has become one of Python&#8217;s most popular libraries for building fast, scalable applications. But when used incorrectly, it can actually make programs slower.

In this talk, we&#8217;ll explore common mistakes developers make with asyncio, especially when they misunderstand the difference between I/O-bound and CPU-bound operations. You&#8217;ll learn how misusing async can degrade performance, and how to avoid these issues through real-world examples.

We&#8217;ll begin with a quick recap of how asyncio works under the hood, then dive into examples that demonstrate both good and bad use cases. You&#8217;ll see the kinds of problems asyncio solves well and where it falls short.

By the end of this session, you&#8217;ll be able to:
- Understand how asyncio works and when to use it
- Clearly distinguish between I/O-bound and CPU-bound tasks
- Apply asyncio properly for high-concurrency workloads
- Identify and avoid async &#8220;anti-patterns&#8221; in real projects
- Choose the right concurrency model for your workload - asyncio, threading, or multiprocessing</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/XBM3C7/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/XBM3C7/feedback/</feedback_url>
            </event>
            <event guid='516857ed-44f8-59a1-afad-0fa2c52221cf' id='67764' code='TCPF8H'>
                <room>Space 2</room>
                <title>Bringing Randomness to Life: Building a Python tool to tell stories about stochastic processes</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>How do you explain stochastic processes without equations? You show (plot) them! 
In this talk, I&#8217;ll share my experience facing this question and how it led me to build a Python tool to visualise&#160;stochastic processes in a way that builds understanding and communicates behaviour intuitively.</abstract>
                <slug>pyconuk-2025-67764-bringing-randomness-to-life-building-a-python-tool-to-tell-stories-about-stochastic-processes</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/TCPF8H/brownian_motion_with_dr_SRpS2UV.png</logo>
                <persons>
                    <person id='68424'>Dialid Santiago</person>
                </persons>
                <language>en</language>
                <description>Stochastic processes might sound like an abstract mathematical concept, but they&#8217;re all around us&#8212;from finance and physics to seismology and epidemiology. To work with them effectively, we need tools that not only help us understand their behaviour but also communicate their dynamics clearly and intuitively.

In this talk, I&#8217;ll introduce stochastic processes from a practical perspective, emphasising the role of visualisation as both a tool for gaining insight and for communicating complex ideas. I&#8217;ll draw on my experience in two very different but equally relevant contexts:
* As an analyst in the financial industry, I often need had to explain complex models to stakeholders who are far more interested in building intuitive narratives than in mathematical formulae.
* As an educator, I&#8217;ve seen the value of visual tools in helping students to build intuition and understanding without getting lost in equations.

The talk will follow the journey from a single exploratory plot&#8212;created with Matplotlib, NumPy, SciPy, and a lot of trial-and-error&#8212;to the development of&#160;aleatory, a Python library for generating beautiful and insightful visualisations of stochastic processes. Along the way, I&#8217;ll show how a single visualisation can evolve into a broader framework for telling compelling stories with randomness.

We&#8217;ll explore how to simulate and visualise a variety of classic stochastic processes, including random walks, Brownian motion, Poisson processes, and Ornstein&#8211;Uhlenbeck models. More importantly, we&#8217;ll look at how to bring these processes to life using key visual elements &#8212;such as mean paths to show central tendencies, probability envelopes to express uncertainty, and histograms or densities of final values to show convergence or variability. These features help highlight behaviours like mean reversion, long-term drift, or volatility, turning mathematical abstractions into visual stories that resonate.

This talk is for Python developers working with stochastic simulations, educators teaching subjects like probability, statistics or quantitative modelling; data communicators explaining uncertainty to non-technical audiences, and anyone curious about how code can make randomness understandable. Whether you&#8217;re teaching, researching, or communicating with stakeholders, Aleatory gives you a way to turn simulations into stories&#8212;no stochastic differential equations required. Basic familiarity with Python is assumed, but no prior experience with simulating stochastic processes is necessary.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://aleatory.readthedocs.io/en/latest/auto_examples/index.html">Gallery of Stochastic Processes</link>
                
                    <link href="https://aleatory.readthedocs.io/en/latest/index.html">Documentation</link>
                
                    <link href="https://dialidsantiago.com/">Personal Site</link>
                
                    <link href="https://github.com/quantgirluk/aleatory">GitHub Repo</link>
                
                    <link href="https://quantgirluk.github.io/advent-calendar-2024/">Advent Calendar of Stochastic Processes</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/TCPF8H/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/TCPF8H/feedback/</feedback_url>
            </event>
            <event guid='615697d3-1ad4-5a34-adfb-4db8a9e366ee' id='81759' code='WPJZ9F'>
                <room>Space 2</room>
                <title>Exploring the CPython JIT</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>I&#8217;ll explore CPython&#8217;s new Just-In-Time (JIT) compiler in Python 3.14. We&#8217;ll cover how JIT works, its performance improvements, and my contributions to the project. Attendees will learn how to enable the JIT, apply it in real applications, and engage with open-source Python development.</abstract>
                <slug>pyconuk-2025-81759-exploring-the-cpython-jit</slug>
                <track></track>
                
                <persons>
                    <person id='83266'>Diego Russo</person>
                </persons>
                <language>en</language>
                <description>In this talk, we will explore the world of Just-In-Time (JIT) compilation within the CPython interpreter. As Python continues to grow in popularity, performance enhancements are crucial to meet the demands of modern applications. The new CPython JIT implementation represents a tool for pushing Python&apos;s performance forward in a scalable, maintainable way.

I will start by exploring the mechanics of JIT compilation, explaining how it differs from traditional interpretation. Next, I will provide an overview of the current state of the CPython JIT in Python 3.14, highlighting its latest advancements and performance improvements. I will also briefly touch on my personal contributions to this project. By sharing these insights, I aim to inspire others to engage with open-source projects and contribute to the ongoing innovation within the Python ecosystem.

Finally, we will discuss practical applications of the CPython JIT and how you can enable it in your applications. Attendees will gain a clear understanding of how the JIT dynamically translates Python code into machine code at runtime using the CPython 3.14 implementation as reference and will learn how to use the JIT on their own Python applications.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/WPJZ9F/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/WPJZ9F/feedback/</feedback_url>
            </event>
            <event guid='052ee2af-618f-5785-8c97-bc89527882ae' id='70216' code='VFEDGV'>
                <room>Space 2</room>
                <title>Raspberry Pis, Crime and the CIA Triad</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-20T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>We all know we should back up our data, but how do we know the back up is really going to work?

This talk explores how a Raspi powered, open source, peer to peer file backup system beat the competition through two drive disasters in one month.</abstract>
                <slug>pyconuk-2025-70216-raspberry-pis-crime-and-the-cia-triad</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/VFEDGV/Screenshot_from_2025-05_ysCwRV9.png</logo>
                <persons>
                    <person id='70594'>Kane Swartz</person><person id='70603'>Jack Travis</person>
                </persons>
                <language>en</language>
                <description>Backing up data is conceptually very simple. When it comes to implementing a backup system however, the pressure is on and the options are endless.

In this talk, we say no to analysis paralysis and get into the details that matter. First, we will define the technical attributes of a backup system then, how these attributes matter on a human level before and throughout a data loss event.

For this case study, I draw from my own experience having two data loss events in October 2024, one from drive failure and another from burglary. That&apos;s right, it&apos;s time to get physical, as we dive into how I was the victim of a physical security breach and an information security failure within the same month and how my Sunday Raspi Syncthing project saved me not once, but twice.

Syncthing is an open source peer to peer file syncing software that backs data up by replicating files across multiple computers. It is decentralized, open source and works on a set and forget basis. 

For me, this was initially a nifty way to minimize friction when changing work station. In a data loss event however, it became so much more, challenging my expectations of what a data backup solution is and how it should work.

Come along and see if a Syncthing Raspi node might be the missing link in your own data resilience strategy. Whether you&apos;re safeguarding code, memories, or mission-critical documents, this talk will give you practical tools, lessons learned the hard way, and maybe even a little inspiration to rethink what &#8220;backed up&#8221; really means.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/VFEDGV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/VFEDGV/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 3' guid='3d929adb-7dbc-533f-b496-05457fd1a2ef'>
            <event guid='c8f9ced9-d5d2-593b-9054-48c1f9b153a2' id='66311' code='NAMWQH'>
                <room>Space 3</room>
                <title>Art with character(s): Make your own ASCII art with Python</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T09:00:00+01:00</date>
                <start>09:00</start>
                <duration>00:45</duration>
                <abstract>This workshop covers the history of ASCII art and walks through how to make your own ASCII art images using Python. The session is light in tone and differentiated for students of different abilities with challenges for advanced students and step by step instructions for first time programmers.</abstract>
                <slug>pyconuk-2025-66311-art-with-character-s-make-your-own-ascii-art-with-python</slug>
                <track>Young Coders</track>
                <logo>/media/pyconuk-2025/submissions/NAMWQH/Screenshot_2025-03-11_a_RMAPPrX.png</logo>
                <persons>
                    <person id='67042'>Hugh Evans</person>
                </persons>
                <language>en</language>
                <description>Come along to this workshop for a short talk about what ASCII art is and its history, an interactive tutorial of how you can use Python and Pillow to take images from the internet and your webcam and turn them into ASCII art, and an opportunity to show off your new skills by building something cool.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/hevansDev/ascii-booth">Workshop Materials</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/NAMWQH/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/NAMWQH/feedback/</feedback_url>
            </event>
            <event guid='9e977447-b7b9-55d4-b9bb-944563224c40' id='81743' code='EVMJDX'>
                <room>Space 3</room>
                <title>Make a Splat-a-cat Game With PyGameZero</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T10:00:00+01:00</date>
                <start>10:00</start>
                <duration>00:45</duration>
                <abstract>Make a splat-a-cat game with PyGameZero</abstract>
                <slug>pyconuk-2025-81743-make-a-splat-a-cat-game-with-pygamezero</slug>
                <track>Young Coders</track>
                
                <persons>
                    <person id='71888'>Ben Nuttall</person>
                </persons>
                <language>en</language>
                <description>A gentle introduction to pygame zero</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/EVMJDX/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/EVMJDX/feedback/</feedback_url>
            </event>
            <event guid='1eab33c2-d094-5b2f-814f-e340511608bb' id='69492' code='Y9GNDW'>
                <room>Space 3</room>
                <title>Introduction to Hedy</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:45</duration>
                <abstract>The transition from visual programming to textual programming can often be difficult as students struggle with both programming concepts and syntax. This session will introduce the Hedy platform which has been designed to make the introduction to textual programming to be a fun and rewarding activity.</abstract>
                <slug>pyconuk-2025-69492-introduction-to-hedy</slug>
                <track>Young Coders</track>
                
                <persons>
                    <person id='70030'>Anthony Harrison</person>
                </persons>
                <language>en</language>
                <description>Many schools and teachers around the world want to teach their students programming. Initially this is often done with playful tools, ranging from the Bee-Bot robot to Scratch. After using such tools, students need to move to more powerful, real-world textual programming languages, like Python so they can create games or other applications.

Python however is hard, because it requires learners to learn complex programming concepts and syntax at once. Hedy overcomes this by providing a platform to allow students to explore concepts in a simple and fun way. Hedy is free to use, open source, and does not require any software to be installed on the device. Some key features include:

- Hedy is gradual, so you can learn one concept and its syntax a time
- Hedy is built for the classroom, allowing teachers to fully customize their student&apos;s experience
- Hedy is multi-lingual, you can use Hedy in your own language</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/Y9GNDW/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/Y9GNDW/feedback/</feedback_url>
            </event>
            <event guid='7d9054c4-e812-5ac2-8f94-8fbea0ad1ccd' id='70006' code='UQGRSR'>
                <room>Space 3</room>
                <title>Code a Satellite</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:45</duration>
                <abstract>Program a model satellite using a BBC micro:bit - you will send data to &apos;ground control&apos; to identify any problems with your satellite - is it receiving enough energy from the sun or do you need to conserve power? Does it need a course correction?</abstract>
                <slug>pyconuk-2025-70006-code-a-satellite</slug>
                <track>Young Coders</track>
                
                <persons>
                    <person id='70403'>Sarah Townson</person>
                </persons>
                <language>en</language>
                <description>Use a variety of inputs and outputs on a BBC micro:bit, and write a Python program to model a satellite. We will send information between micro:bits using the radio functions, and consider how to conserve solar power or check that your satellite is not accelerating out of its orbit! What data would be most important to send back to scientists on Earth?</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/UQGRSR/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/UQGRSR/feedback/</feedback_url>
            </event>
            <event guid='360a3ffe-156d-5c12-82bb-b8bec1770b70' id='70328' code='ZQYD9L'>
                <room>Space 3</room>
                <title>Code a program that notifies you when the International Space Station is up above!</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:45</duration>
                <abstract>Using the power of Application Programming Interfaces (APIs) in Python, we&apos;ll explain how you can create a program to send you an email when the International Space Station is above you.</abstract>
                <slug>pyconuk-2025-70328-code-a-program-that-notifies-you-when-the-international-space-station-is-up-above</slug>
                <track>Young Coders</track>
                
                <persons>
                    <person id='70691'>Harry Wake</person><person id='70692'>Anna Wake</person>
                </persons>
                <language>en</language>
                <description>You don&apos;t need to have any prior knowledge about what APIs are or how they work; we&apos;ll explain all of this to you in the session and answer any questions you may have.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/ZQYD9L/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/ZQYD9L/feedback/</feedback_url>
            </event>
            <event guid='53715fa2-fe46-5840-b8dd-6adb07678cf7' id='79184' code='9JTLW3'>
                <room>Space 3</room>
                <title>Young Coders - demo preparation</title>
                <subtitle></subtitle>
                <type>Young Coders Event</type>
                <date>2025-09-20T15:45:00+01:00</date>
                <start>15:45</start>
                <duration>00:40</duration>
                <abstract>Young Coders - demo preparation</abstract>
                <slug>pyconuk-2025-79184-young-coders-demo-preparation</slug>
                <track>Young Coders</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Young Coders - demo preparation</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/9JTLW3/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/9JTLW3/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 4' guid='85b19a87-2f2d-5003-a2ef-07c1bfecff3e'>
            <event guid='67c4a6e7-30c0-5b65-8b7f-6058d5256bee' id='75859' code='SQVYLB'>
                <room>Space 4</room>
                <title>Django Girls</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-20T09:00:00+01:00</date>
                <start>09:00</start>
                <duration>08:00</duration>
                <abstract>Django Girls</abstract>
                <slug>pyconuk-2025-75859-django-girls</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Django Girls</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SQVYLB/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SQVYLB/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='3' date='2025-09-21' start='2025-09-21T04:00:00+01:00' end='2025-09-22T03:59:00+01:00'>
        <room name='Main stage' guid='b87513ee-2923-5905-abff-942da8dd882f'>
            <event guid='504c23f8-5d09-5757-8551-f6c770886312' id='74364' code='ZFH7PN'>
                <room>Main stage</room>
                <title>Welcome Sunday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-21T09:00:00+01:00</date>
                <start>09:00</start>
                <duration>00:15</duration>
                <abstract>Welcome Sunday</abstract>
                <slug>pyconuk-2025-74364-welcome-sunday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Welcome Sunday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/ZFH7PN/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/ZFH7PN/feedback/</feedback_url>
            </event>
            <event guid='8b0259c1-280b-50a2-a575-513adefb83b1' id='78488' code='VWW37U'>
                <room>Main stage</room>
                <title>Playing the long game</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2025-09-21T09:15:00+01:00</date>
                <start>09:15</start>
                <duration>01:00</duration>
                <abstract>We are in uncharted territory.  LLM based tools are everywhere, but they are hard to reason about - there is a lot of hype, a lot of noise, and very little signal. We, as individuals and as a community, need to adapt to a future that is very hard to envision.</abstract>
                <slug>pyconuk-2025-78488-playing-the-long-game</slug>
                <track>Keynote</track>
                
                <persons>
                    <person id='79530'>Sheena</person>
                </persons>
                <language>en</language>
                <description>We are in uncharted territory -   LLMs and &quot;AI&quot; based tools are everywhere, embedded in so much of what we do, but they are not well-understood by most. If you try to get your head around what is possible with these things then you are faced with a barrage of marketing-speak and ill-informed hype. There is some signal in the noise but it&apos;s very hard to stay on top of.

Technical folks struggle to find the signal in the noise, and many business brains get swept away by the hype (and by Zuckerberg&apos;s aspirational announcements... thanks Zuk). There are a few common archetypes that have emerged: 

There&apos;s the AI-ate-my-job developer, the one-with-the-vibe junior, the embrace-ai-or-get-out CEO, the cathedral-building anti-slop senior, the vc-funding-focused entrepreneur, the not-on-my-watch IT gatekeeper. There are also people who seem to be doing things very sensibly, but it worth looking closely at the extremes - there are a lot of pitfalls to avoid, and wisdom to be adapted and adopted (#steal-like-an-engineer). 

There are clear benefits to fast iteration and quick prototypes, and adopting LLM tools on complex brown-field projects often has mixed results. It&apos;s worth knowing about the (shifting) limitations of these tools, and the emerging best practices (which often look a lot like the best practices that emerged in the before-times). It is worthwhile to deeply consider safety-nets and guard-rails as we lean on these tools, we need to iterate on our approach to engineering rather than focusing on writing more code faster (LOC is a bad measure of productivity, we know this!)

The other thing we really need to think about and solve for as a community is: how do we play the long game. I&apos;m pretty convinced that we will still need human software engineers for a long time to come, and good ones at that. Skill comes from experience and the junior developer job market is a bit of a dog show. 

How should junior devs prepare for the future? And how should organisations adapt so that they have people that they can rely on 5 years from now? I have some opinions...</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/VWW37U/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/VWW37U/feedback/</feedback_url>
            </event>
            <event guid='a6b6a778-d6f0-560c-9d86-18af0d18e974' id='74361' code='RLB8HA'>
                <room>Main stage</room>
                <title>UK Python Association AGM</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T10:15:00+01:00</date>
                <start>10:15</start>
                <duration>00:15</duration>
                <abstract>UK Python Association AGM</abstract>
                <slug>pyconuk-2025-74361-uk-python-association-agm</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>UK Python Association AGM</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/RLB8HA/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/RLB8HA/feedback/</feedback_url>
            </event>
            <event guid='31d65a1f-0d55-54bf-8771-ca2829ed9c93' id='70256' code='NQXQTV'>
                <room>Main stage</room>
                <title>Oh no! Your project became really popular!</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:25</duration>
                <abstract>With great growth comes great responsibility. But you aren&#8217;t expected to navigate that growth without making significant changes. Let&#8217;s talk about all the options so you can come out the other side with the best possible outcome for your project and yourself.</abstract>
                <slug>pyconuk-2025-70256-oh-no-your-project-became-really-popular</slug>
                <track></track>
                
                <persons>
                    <person id='70630'>Deb Nicholson</person>
                </persons>
                <language>en</language>
                <description>If you&#8217;re lucky, then your project&#8217;s growth is slow and steady and you have plenty of time to gracefully accommodate more users. If you&#8217;re really lucky then your project could experience a lot of growth in a short amount of time, but this can create its own, er, challenges. In this talk, we&#8217;ll discuss strategies for handling rapid growth &#8211; including big changes, letting more people help you and letting some things go altogether. 

With great growth comes great responsibility. But you aren&#8217;t expected to navigate that growth without making significant changes. Let&#8217;s talk about all the options so you can come out the other side with the best possible outcome for your project and yourself.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/NQXQTV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/NQXQTV/feedback/</feedback_url>
            </event>
            <event guid='1317b779-0da8-55b1-af5c-4aa00396ad39' id='68784' code='NRAJ3N'>
                <room>Main stage</room>
                <title>Python for Humans - Designing Python Code Like a User Interface</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T11:30:00+01:00</date>
                <start>11:30</start>
                <duration>00:25</duration>
                <abstract>What if we wrote Python the way designers build user interfaces? This talk explores how UI/UX design principles&#8212;like layout, labeling, affordances, and visual hierarchy&#8212;can help you write Python that&#8217;s intuitive to read, easy to navigate, and built with real users in mind.</abstract>
                <slug>pyconuk-2025-68784-python-for-humans-designing-python-code-like-a-user-interface</slug>
                <track></track>
                
                <persons>
                    <person id='68324'>Justin Lee</person>
                </persons>
                <language>en</language>
                <description>In a team setting, your Python code is more than instructions for machines&#8212;it&#8217;s an interface your teammates will interact with, maintain, and extend. This talk draws on UI/UX design principles to help you write Python that&#8217;s more discoverable, readable, and user-friendly.

Over time, I&#8217;ve found that some of the biggest time sinks in collaborative development come from code that&#8217;s hard to revisit&#8212;whether it was written by a teammate or by me. It&#8217;s frustrating (and sometimes embarrassing) to open an old file I wrote and struggle to remember what it was doing or why. This talk shares design-inspired practices that have helped me write Python that&#8217;s easier to return to, share, and scale across teams.

We&#8217;ll explore how concepts from interface design&#8212;like visual hierarchy, layout, progressive disclosure, and affordances&#8212;can guide how you name functions, structure files, and write signatures that act like intuitive forms. You&#8217;ll learn how readers scan code top-down like users scan a web page, and how to optimize your code&#8217;s structure so teammates can navigate through it just like a clean interface.

We&#8217;ll cover:
* Why top-level structure is like layout design&#8212;and how __init__.py, __main__, and grouping logic improve scannability
* Why naming is like labeling in UI&#8212;clear, specific names help with navigation, tool-assisted discovery, and LLM code generation
* How vertical spacing and indentation in Python can mimic visual grouping and signal intent
* How decorators and type hints act like collapsible sections and labeled form fields, abstracting noise and clarifying usage
* Why tools like black, ruff, and Pylance are like automated accessibility checkers, enforcing consistency and clarity at scale
* When to apply design restraint&#8212;because cleverness, like parallax scrolling in 2015, often ages poorly

This talk isn&#8217;t about following a style guide&#8212;it&#8217;s about adopting a mindset: treating your codebase like a user experience. You&#8217;ll leave with real, beginner-friendly strategies and a new lens for writing impactful Python that others can read, trust, and extend&#8212;just like good UI.

No design background needed&#8212;just curiosity, empathy, and the desire to write Python you won&#8217;t dread revisiting.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/NRAJ3N/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/NRAJ3N/feedback/</feedback_url>
            </event>
            <event guid='dac34971-819d-5086-9a6e-9dc33e97fb41' id='70443' code='JGK78G'>
                <room>Main stage</room>
                <title>From student to maintainer: how mentorship programs sustain Django and Wagtail</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T12:00:00+01:00</date>
                <start>12:00</start>
                <duration>00:25</duration>
                <abstract>In 2018, I was a student in Indonesia, learning Django at my university. Today, I maintain Wagtail CMS as a full-time job at Torchbox in the UK. Here&apos;s my journey and how mentorship programs like Google Summer of Code (GSoC) and Outreachy help sustain open source communities.</abstract>
                <slug>pyconuk-2025-70443-from-student-to-maintainer-how-mentorship-programs-sustain-django-and-wagtail</slug>
                <track></track>
                
                <persons>
                    <person id='70757'>Sage Abdullah</person>
                </persons>
                <language>en</language>
                <description>My journey began with a curious hack: creating a custom JSONField in [Django](https://djangoproject.com) to meet the deadline of a university assignment. That led to me applying for GSoC 2019 with Django. With mentorship from veteran contributors, I spent a summer building the cross-database JSONField that would later ship in Django 3.1.

That was the beginning. GSoC gave me confidence, visibility, and skills. As a developer, and as a contributor to a global community. It unlocked the opportunity to work on [Wagtail CMS](https://wagtail.org) (an open source project) as a full-time job after graduating from university, allowing me to move to the UK in the process. I&#8217;ve since gone on to mentor others through GSoC and Outreachy, helping the next waves of Django and Wagtail contributors succeed.

These mentorship programs can also be a lifeline for open source projects. They help turn curious users into committed contributors, and sometimes, into future maintainers. Django and Wagtail are thriving today in part because of the energy and diversity brought in through GSoC, Outreachy, and newer initiatives like Djangonaut Space.

In this talk, I&#8217;ll share:

- How mentorship programs helped me go from a student to a maintainer
- What makes mentorship programs successful, from both mentor and mentee perspectives
- How open source projects can make the most of these programs
- Why sustained, inclusive mentorship is one of the most impactful ways to keep projects like Django and Wagtail alive

This talk is both a story and a call to action. I want open source projects in the Python ecosystem to be sustainable with new contributors who step up and become maintainers. If open source sustainability is in your interests, I hope you&#8217;ll join this conversation.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/JGK78G/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/JGK78G/feedback/</feedback_url>
            </event>
            <event guid='3eb68ae2-b17c-51d5-baf3-40c4c48da868' id='68741' code='CL9EGK'>
                <room>Main stage</room>
                <title>Why `len(&apos;&#128566;&#8205;&#127787;&#65039;&apos;) == 4` and other weird things you should know about strings in Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>Strings in Python behave in all sorts of unexpected ways: len(&apos;&#128566;&#8205;&#127787;&#65039;&apos;) == 4, &apos;n&#771;&apos; != &apos;&#241;&apos;, &apos;&#8238;dlrow olleh&#8236;&apos;&#8236;.split()[1] == &apos;olleh&#8236;&apos;! How is this possible? And importantly, why should you care?</abstract>
                <slug>pyconuk-2025-68741-why-len-4-and-other-weird-things-you-should-know-about-strings-in-python</slug>
                <track></track>
                
                <persons>
                    <person id='69698'>Marie Roald</person><person id='69271'>Yngve Mardal Moe</person>
                </persons>
                <language>en</language>
                <description>In this presentation, we&#8217;ll give a brief introduction to text encoding, the different Unicode standards and how Python encodes strings before we dive deep into Unicode oddities. We&#8217;ll cover how one code point can represent multiple characters, why converting between upper-case and lower-case characters should be locale-dependent and how emoji&#8217;s work. Finally, we will discuss some best practices for handling unicode input in Python.

After this talk, you&apos;ll have a better understanding of strings in Python, the Unicode character encoding and you&#8217;ll be aware of some common pitfalls and how to avoid them.

**Audience:**
The content is aimed at someone who has some experience with Python programming but wants to get a deeper understanding of strings and unicode. However, we don&#8217;t assume any prerequisite knowledge and will use simple examples, so a curious beginner will be able to follow the talk as well.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/CL9EGK/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/CL9EGK/feedback/</feedback_url>
            </event>
            <event guid='19efb698-3c02-5cf5-ab55-5715cad06ac5' id='69277' code='PUBM3T'>
                <room>Main stage</room>
                <title>How to build a cross-platform GUI app with Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>Building an app with a graphical interface that can run on multiple platforms - including mobile - doesn&apos;t have to be difficult. In this talk, you&apos;ll learn how to build and run an app with a native GUI that can run on multiple platforms, without modifications.</abstract>
                <slug>pyconuk-2025-69277-how-to-build-a-cross-platform-gui-app-with-python</slug>
                <track></track>
                
                <persons>
                    <person id='69809'>Russell Keith-Magee</person>
                </persons>
                <language>en</language>
                <description>If you need to build a user interface for your Python code, many guides will tell you that your only options are to use the command line, or wrap your code in a web interface. However, there is another option - building a native GUI interface. In fact for some use cases, a GUI app may be your *only* option. 

In this talk, you&apos;ll learn how to build and run a graphical user interface (GUI) that can run on your desktop, or on your phone. You&apos;ll learn how you can use the BeeWare suite of tools to bootstrap a new GUI project, develop a GUI interface, and deploy that app to multiple desktop and mobile platforms, without making any code changes. You&apos;ll learn how to access device hardware like GPS and cameras; and you&apos;ll learn how to distribute your application - including all runtimes and third-party libraries - to others.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/PUBM3T/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/PUBM3T/feedback/</feedback_url>
            </event>
            <event guid='5f02476a-f4e2-514f-b411-3c23ef70ffa6' id='70117' code='7QZLCF'>
                <room>Main stage</room>
                <title>Prototypes, Sharing and Services: Full Django in a Single File</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>Find out how to run Django from a single file, with working views, models, admin and an API. We&apos;ll see how nanodjango makes it easy, how it&apos;s perfect for building everything from prototypes to production services, and why it&apos;s a powerful alternative to Flask and FastAPI.</abstract>
                <slug>pyconuk-2025-70117-prototypes-sharing-and-services-full-django-in-a-single-file</slug>
                <track></track>
                
                <persons>
                    <person id='70512'>Richard Terry</person>
                </persons>
                <language>en</language>
                <description>A Django project has lots of files and directories, which can be daunting for newcomers to the framework, and a burden for experienced developers. We&apos;re going to look at how Django normally uses this structure and why it makes sense, and how we can use Python to ignore that and load everything from a single file.

We&apos;re going to look at how it can be useful for writing and sharing experiments and prototypes, and even building production sites and services. We&apos;ll see how nanodjango makes it easy to write and run single file Django scripts, and how its `convert` command can automatically refactor your single file into a full project as your code grows.

We&apos;ll then work through some interesting real-world examples, and talk about some exciting new features.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/7QZLCF/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/7QZLCF/feedback/</feedback_url>
            </event>
            <event guid='52b381e2-8f4e-532b-80e5-9616c7a1513b' id='70450' code='9EN9TM'>
                <room>Main stage</room>
                <title>Much Ado About None</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>Much has been said about every other part of the Python language, but none has had less attention than None. We&apos;ll explore the history of nothing in the world through zero, then the origin of null in computing, and then what it means to be None in Python.</abstract>
                <slug>pyconuk-2025-70450-much-ado-about-none</slug>
                <track></track>
                
                <persons>
                    <person id='70748'>Daniel Rios</person>
                </persons>
                <language>en</language>
                <description>Nothing has been more controversial in the history of the world than nothing itself. From its representation as a placeholder in Babylonian accounting, to its use in Mayan numbering to its introduction into the world by Indian Mathematicians, the mathematical representation of nothing, the zero and its representation of the void and nothingness had been avoided and fought against by the West up until its inevitable introduction by Fibonnacci in 1202. Centuries later, this zero and nothingness inspired Nihilism, as well as the introduction of the NULL pointer in 1966 by Tony Hoare, called his &quot;billion dollar mistake&quot;. Finally, we&apos;ll take a deep-dive into Python&apos;s own version of nothing, the None object and keyword, and what it means to represent nothingness.

This talk is dedicated to all Python programmers that have ever had a NoneType Error.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/9EN9TM/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/9EN9TM/feedback/</feedback_url>
            </event>
            <event guid='e8e8fb6a-a104-514d-a70b-9c8c2534fed1' id='70444' code='NC9RWR'>
                <room>Main stage</room>
                <title>Enriching animation with python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T16:30:00+01:00</date>
                <start>16:30</start>
                <duration>00:25</duration>
                <abstract>Based in the heart of Manchester, Doodledo are a film and animation studio that use python for rigging and animating with Maya. They are now partnering with Niter to streamline the process of animating lip-sync from audio files using ethical AI tooling.</abstract>
                <slug>pyconuk-2025-70444-enriching-animation-with-python</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/NC9RWR/TZ_Final_Shot_bf54dpo.jpeg</logo>
                <persons>
                    <person id='70764'>Joe Spademan</person><person id='70770'>Travis Ralph-Donaldson</person>
                </persons>
                <language>en</language>
                <description>The first part of the talk presented by Head of Animation at Doodledo, Joe Spademan will demonstrate how simple lines of code can make big a impact in simplifying the tools and rigs for animators, from facial and hand rigs to rotation cycles connected to distance calculations as bees and ladybirds are brought to life in a 3D animation created for homeless charity Caritas.   

The second part of the talk led by Niter founder Travis Ralph-Donaldson shows how this is taken to the next level by employing ethical AI practices to solve a huge challenge that Doodledo have - automated lip-sync for a non-standard character rig.

Niter have developed an app that takes audio speech recordings and converts them to natural looking lip synced face animations. These animations can be generated dynamically for a variety of rigs from high fidelity ARKit models to custom cartoon characters. All AI models have been developed and prototyped in Pytorch and the renderer plugins written in Python.

https://vimeo.com/808271179/bdb1e751f4</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/NC9RWR/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/NC9RWR/feedback/</feedback_url>
            </event>
            <event guid='9c20d01e-52b3-57bd-9098-7dc8a4a61fb3' id='74368' code='ADZDDG'>
                <room>Main stage</room>
                <title>Lightning talks Sunday</title>
                <subtitle></subtitle>
                <type>Welcome etc</type>
                <date>2025-09-21T17:00:00+01:00</date>
                <start>17:00</start>
                <duration>00:45</duration>
                <abstract>Lightning talks Sunday</abstract>
                <slug>pyconuk-2025-74368-lightning-talks-sunday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Lightning talks Sunday</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/ADZDDG/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/ADZDDG/feedback/</feedback_url>
            </event>
            <event guid='30a362be-bb5e-571e-8f8b-65180677db60' id='79443' code='FCM78T'>
                <room>Main stage</room>
                <title>Close</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T17:45:00+01:00</date>
                <start>17:45</start>
                <duration>00:15</duration>
                <abstract>Code sprints and other collaboration</abstract>
                <slug>pyconuk-2025-79443-close</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Code sprints and other collaboration</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/FCM78T/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/FCM78T/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 2' guid='e400b669-5265-58bb-ad28-dfe5605a70e5'>
            <event guid='4c7a2164-068a-5821-b52c-d8078b82160e' id='70059' code='9NYRJS'>
                <room>Space 2</room>
                <title>A junior&#8217;s perspective: why doing difficult things is good for you and good for your team</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>00:25</duration>
                <abstract>What happens when a junior picks up a task involving unfamiliar tools and concepts? This talk follows a beginner&apos;s journey across three weeks of debugging, learning, and asking for help. There&#8217;ll be advice for juniors on navigating challenging work, and advice for seniors on how to help.</abstract>
                <slug>pyconuk-2025-70059-a-junior-s-perspective-why-doing-difficult-things-is-good-for-you-and-good-for-your-team</slug>
                <track></track>
                
                <persons>
                    <person id='70457'>Katie Bickford</person>
                </persons>
                <language>en</language>
                <description>This talk shares my experience in my first ever role as a junior engineer after switching careers. I picked up a ticket involving tools I&#8217;d 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 the work.

I learned some valuable lessons along the way, not only technical, but about how to problem-solve, collaborate effectively, and keep going in the face of seemingly unending challenges.

Through this talk, I want juniors in the audience to know:

- You can do difficult things, even if you think you lack the experience or knowledge required. If you&#8217;re willing to learn, and have a supportive team around you, you have everything you need.
- Doing difficult things is daunting, but also incredibly rewarding. You often learn 10x more than you expected, and when you finally finish the work, it feels like winning the lottery.
- Taking on hard things benefits the whole team&#8212;others might learn something new, or strengthen their own understanding by helping you out.
- There&#8217;s a lot you can do to support yourself: reach out early, reach out often, and learn how to communicate problems clearly.
- The value of your work cannot be measured by lines of code&#8212;it&#8217;s far, far greater than that.

This talk also offers a reminder to seniors, and leaders or managers, about how tough it can be to be new. Juniors don&#8217;t just lack experience&#8212;our stack of &apos;unknown unknowns&apos; is large and easily underestimated. When things break or go wrong, we might not understand where or why, and even if we find the bug or error, knowing how to fix it is another challenge altogether. I&#8217;ll share how my team&#8217;s support made all the difference&#8212;and offer practical ideas for how others can support their junior colleagues, too.

This won&#8217;t be a super technical talk. It&#8217;s 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. Whether someone is a junior, a senior, in a leadership position, or somewhere in between, regardless of discipline there will hopefully be something valuable in this talk for everyone.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/9NYRJS/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/9NYRJS/feedback/</feedback_url>
            </event>
            <event guid='d2f557a7-c553-5dbb-960e-cef12b8858d8' id='69176' code='PG3GNV'>
                <room>Space 2</room>
                <title>From Data to Predictions: Building Regressors and Classifiers in Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T11:30:00+01:00</date>
                <start>11:30</start>
                <duration>00:25</duration>
                <abstract>In this talk, we&#8217;ll explore how to build, train, and evaluate regression and classification models using Python on real-world datasets. From predicting house prices to classifying customer churn, this session will provide practical insights into combining these techniques for impactful data science applications.</abstract>
                <slug>pyconuk-2025-69176-from-data-to-predictions-building-regressors-and-classifiers-in-python</slug>
                <track></track>
                
                <persons>
                    <person id='69731'>Abhigyan Shrivastava</person>
                </persons>
                <language>en</language>
                <description>We&#8217;ll start with core concepts and the difference between regression and classification. Then, we&#8217;ll understand the fundamentals of preparing data, building models, and evaluating them using intuitive metrics. You&#8217;ll see how to approach both types of problems and understand when to use which.

1. Understanding regression vs. classification and choosing the right model
2. Loading and cleaning datasets using Pandas
3. Understanding regression and classification models using Scikit-learn
4. Evaluating performance with metrics like RMSE, accuracy, precision, and recall
5. Avoiding overfitting and improving generalization with regularization and cross-validation</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/PG3GNV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/PG3GNV/feedback/</feedback_url>
            </event>
            <event guid='f7457b01-4e82-534b-a847-45e4a9fc1075' id='70460' code='CFFEDZ'>
                <room>Space 2</room>
                <title>JIT compilers for scientific computing in Python: Numba vs. JAX</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T12:00:00+01:00</date>
                <start>12:00</start>
                <duration>00:25</duration>
                <abstract>Accelerating scientific Python with JITs. We share our journey migrating a gravitational lensing likelihood calculation from Numba to JAX. Learn about performance gains, automatic differentiation benefits, and practical lessons for high-performance scientific computing in Python.</abstract>
                <slug>pyconuk-2025-70460-jit-compilers-for-scientific-computing-in-python-numba-vs-jax</slug>
                <track></track>
                
                <persons>
                    <person id='70774'>Kolen Cheung</person>
                </persons>
                <language>en</language>
                <description>Python is widely used in scientific research, but pure Python can sometimes be too slow for computationally intensive tasks. Just-In-Time (JIT) compilers are essential tools for boosting performance, allowing Python code to run closer to native speeds. While libraries like Numba have long been popular for accelerating numerical Python functions, JAX offers a new paradigm, combining JIT compilation with powerful features like automatic differentiation (auto-diff) and execution across different hardware (CPUs, GPUs, TPUs).

This talk will take you on a journey through our experience optimizing a critical component of an astrophysics analysis pipeline: the calculation of the likelihood function for gravitational lensing models, used with data from the James Webb Space Telescope. We initially used Numba to accelerate this calculation, but the need for performance portability across hardwares, and the potential speed up from gradient computation for model fitting led us to explore JAX&apos;s unique capabilities.

This session will walk through the practical steps, challenges, and insights gained from migrating this complex scientific code from its existing Numba implementation to a JAX-based one.

You will learn:

- Why leveraging performance tools like JITs is crucial for cutting-edge scientific analysis in Python.
- The practical considerations when migrating existing numerical code from Numba to JAX, including syntax changes and managing state.
- How JAX&apos;s auto-differentiation simplifies gradient calculations essential for scientific optimization and sampling tasks.
- The significant performance improvements achieved in our specific gravitational lensing case study by using JAX&apos;s compiled functions.
- Broader lessons learned about structuring scientific Python projects to effectively use modern JIT compilers and harness capabilities like auto-diff.

We&apos;ll conclude by comparing Numba and JAX in benchmark performance, developer ergonomics, and tradeoffs between the two, providing you with practical guidance for choosing the right tool for your scientific computing needs.

This case study offers a concrete example of how evolving Python libraries are enabling researchers to perform complex, high-performance computations directly within the Python ecosystem. Join us to see how tools like JAX are empowering scientific discoveries, one optimised function at a time.

This talk is suitable for intermediate Python programmers familiar with NumPy.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://ickc.github.io/RSE/PyAutoLens/2025-09-21-autojax.html">Presentation slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/CFFEDZ/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/CFFEDZ/feedback/</feedback_url>
            </event>
            <event guid='b43b6239-2a49-5f68-8085-7decab69fa82' id='67485' code='GN9D39'>
                <room>Space 2</room>
                <title>Marimo Magic: A New Era of Python Notebooks for Explorers and Engineers</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T14:00:00+01:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>Discover Marimo, the next-gen reactive Python notebook redefining how developers and data scientists explore, build, and share insights. Say goodbye to reruns and hello to instant updates, modular design, and app-like interactivity&#8212;all in a single notebook.</abstract>
                <slug>pyconuk-2025-67485-marimo-magic-a-new-era-of-python-notebooks-for-explorers-and-engineers</slug>
                <track></track>
                
                <persons>
                    <person id='68122'>Bernhard Merkle</person>
                </persons>
                <language>en</language>
                <description>Traditional Python notebooks have served us well&#8212;but they weren&#8217;t built for today&apos;s fast-paced, interactive, and modular workflows. Enter Marimo: a next-generation reactive Python notebook that combines the best of scripting, apps, and UI&#8212;all in one seamless environment. In this talk, we&#8217;ll explore how Marimo breaks the limits of Jupyter-style workflows and opens the door to new possibilities for developers, data scientists, educators, and engineers alike.

We&apos;ll dive into the core innovations that set Marimo apart: reactive execution, file-based structure, real-time interactivity, and built-in UI primitives. We&#8217;ll walk through building reactive notebooks that behave more like applications&#8212;updating instantly without reruns or cell juggling. You&#8217;ll see how Marimo simplifies the creation of dashboards, tools, and shareable reports using only Python.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/GN9D39/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/GN9D39/feedback/</feedback_url>
            </event>
            <event guid='51571f6e-3070-5d65-aeaf-633766725cc0' id='70446' code='SQCXVR'>
                <room>Space 2</room>
                <title>From ELIZA to GPT: How the uncanny shaped human-AI interaction&apos;s hidden history</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T14:30:00+01:00</date>
                <start>14:30</start>
                <duration>00:25</duration>
                <abstract>This talk traces how the uncanny&#8212;that productive tension between familiar and strange&#8212;shapes effective human-AI interaction. I&apos;ll explore how Weizenbaum&apos;s, Mori&apos;s and Turkle&apos;s pioneering work reveals dynamics we can strategically leverage, and how understanding this lineage leads to more effective use of AI systems.</abstract>
                <slug>pyconuk-2025-70446-from-eliza-to-gpt-how-the-uncanny-shaped-human-ai-interaction-s-hidden-history</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/SQCXVR/eliza-photo_hlwrg2e.png</logo>
                <persons>
                    <person id='70763'>Laura Gates</person>
                </persons>
                <language>en</language>
                <description>Long before ChatGPT, Joseph Weizenbaum&apos;s ELIZA program (1966) revealed something profound: users formed inexplicable emotional attachments to simple text interfaces, attributing understanding where none existed. Weizenbaum grew concerned about these effects, becoming one of AI&apos;s earliest critics. Similarly, roboticist Masahiro Mori (1970) identified the &apos;uncanny valley&apos;&#8212;that distinctive cognitive response when something appears almost, but not quite, human. 

While these pioneers saw the uncanny as a problem to be avoided, Sigmund Freud&apos;s earlier analysis in &apos;The Uncanny&apos; (1919) had explored this psychological phenomenon more neutrally as a complex interplay between the familiar and strange. In the 1980s, Sherry Turkle described user-computer interactions as &#8216;uncanny&#8217;, noting how people formed relationships with machines that were artificial yet emotionally significant. 

This talk reveals an overlooked connection: what many considered a problem to avoid is behind some of our most effective prompt engineering techniques. I&apos;ll demonstrate how these techniques leverage uncanny psychological dynamics, highlighting the theoretical principles that help explain why these approaches work so well in practice. 

I&apos;ll begin by examining the psychological foundations of human-computer interaction through ELIZA&apos;s architecture, briefly illustrating how this simple program&apos;s pattern-matching mechanisms triggered profound psychological effects. By analysing key elements of ELIZA&apos;s code structure, I&apos;ll show how the same technical techniques that alarmed Weizenbaum can be viewed through Turkle&apos;s theoretical lens of the &#8216;second self&#8217; as creating productive engagement rather than just deception. 

Building on these contrasting perspectives, I&apos;ll demonstrate how established prompt engineering techniques leverage these uncanny dynamics, while their theoretical foundations remain largely unexplored. Using Python examples with the OpenAI API, I&apos;ll show how methods like chain-of-thought prompting (Wei et al., 2022) and role prompting position AI in the productive uncanny space between computational tool and simulated agent. 

Attendees will leave with an understanding of how current best practices in prompt engineering strategically harness the uncanny tension in human-AI interaction, along with a deeper theoretical framework for understanding why these techniques work. By recognising both the risks and the productive potential of the uncanny, developers can make more informed design choices that leverage psychological principles that have influenced human-computer interaction for over fifty years.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SQCXVR/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SQCXVR/feedback/</feedback_url>
            </event>
            <event guid='c5ad35e1-70b1-5fd4-9959-d6ca0f4024da' id='66613' code='QGT9C7'>
                <room>Space 2</room>
                <title>Python and Rust, a perfect pairing</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>00:25</duration>
                <abstract>Rust programming language has recently gained a lot of popularity. However, you don&apos;t have to choose between Python and Rust - you can use both together. In this talk, we take a look at why and how to do it with tools like rustimport and Maturin.</abstract>
                <slug>pyconuk-2025-66613-python-and-rust-a-perfect-pairing</slug>
                <track></track>
                
                <persons>
                    <person id='67321'>Miikka Koskinen</person>
                </persons>
                <language>en</language>
                <description>Using Rust is emerging as a new way to make Python projects fast. This can be seen in libraries like Pydantic, whose core is written in Rust, and a new generation of Python developer tools such as uv and ruff. 

We&apos;ll start by talking about Rust, how it compares to Python as a programming language, and why all these projects are turning to it. Then we&apos;ll go through how to use rustimport to use Rust in your own projects. Rustimport is perfect for simple use cases, but we&apos;ll also talk about using Maturin when you want to publish Python packages that incorporate Rust.

_About the speaker:_ I&apos;m an experienced software engineer and for the last few years I&apos;ve been building cloud backends and data processing systems in Python and Rust. This talk is based on my experience in learning Rust and then incorporating it into my Python projects both for fun and at work.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/QGT9C7/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/QGT9C7/feedback/</feedback_url>
            </event>
            <event guid='efe37ea5-7811-5515-bf79-726b62a919eb' id='70333' code='XGQAAD'>
                <room>Space 2</room>
                <title>Building SQL queries using t-strings</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T16:00:00+01:00</date>
                <start>16:00</start>
                <duration>00:25</duration>
                <abstract>It is painfully difficult to dynamically build SQL queries in Python. Fortunately Python 3.14 introduces t-strings which provide custom string processing of template strings. My library, SQL-tString, builds SQL queries from these template strings, making it easy to build dynamic queries in Python by writing SQL directly.</abstract>
                <slug>pyconuk-2025-70333-building-sql-queries-using-t-strings</slug>
                <track></track>
                
                <persons>
                    <person id='70697'>Phil Jones (@pgjones)</person>
                </persons>
                <language>en</language>
                <description>In this talk I will explain t-strings, as recently accepted into Python and as will be released with Python3.14. I&apos;ll then introduce SQL-tString which is my library built on t-strings.

SQL-tString allows for t-string based construction of sql queries without allowing for SQL injection. The basic usage is as follows,

```python
from sql_tstring import sql

a = 1

query, values = sql(
    t&quot;&quot;&quot;SELECT a, b, c
          FROM tbl
         WHERE a = {a}&quot;&quot;&quot;,
)
```

It allows for query building via the usage of `RewritingValue`s, such as `Absent` which will remove the expression it is present in,

```python
from sql_tstring import Absent

a = Absent
b = 1
query, values = sql(t&quot;SELECT x FROM y WHERE a = {a} AND b = {b}&quot;)
assert query == &quot;SELECT x FROM y WHERE b = ?&quot;
assert values == [1]
```

Or `IsNull` which will rewrite the expression to be `IS NULL`,

```python
from sql_tstring import IsNull

c = IsNull
query, values = sql(t&quot;SELECT x FROM y WHERE c = {c}&quot;)
assert query == &quot;SELECT x FROM y WHERE c IS NULL&quot;
```</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/XGQAAD/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/XGQAAD/feedback/</feedback_url>
            </event>
            <event guid='bbfa2ab5-f1fe-5776-9887-51b79fb97c75' id='68084' code='VTHPZK'>
                <room>Space 2</room>
                <title>Type text, find pictures: an app using CLIP, PostgreSQL&#174; and pgvector</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-09-21T16:30:00+01:00</date>
                <start>16:30</start>
                <duration>00:25</duration>
                <abstract>What would once have been magical is now becoming common place.

In this talk, I&apos;ll show how to write a Python app that takes a text snippet (like &quot;cat&quot; or &quot;man jumping&quot;) and finds images that match.</abstract>
                <slug>pyconuk-2025-68084-type-text-find-pictures-an-app-using-clip-postgresql-and-pgvector</slug>
                <track></track>
                
                <persons>
                    <person id='68754'>Tibs</person>
                </persons>
                <language>en</language>
                <description>The original LLMs (large language models) worked with text, making it possible to use a phrase to search for documents with a similar meaning. Later models addressed other media, for instance, allowing comparison of images. And now we have multi-modal models, like OpenAI&apos;s CLIP, which can work with images and text interchangably.

I&apos;ll give a quick introduction to vector search and CLIP, talk through setting up the necessary table in PostgreSQL&#174;, walk through a script to calculate the embeddings of the chosen images, and store them in the database, and another script that takes a search text and uses pgvector to find matching images in the database.

I&apos;ll then show how you can use FastAPI and HTMX to quickly make a web app with a basic form. Merging the &quot;find images&quot; code into that then gives the final application.

All the code is available in a GitHub repository, which includes instructions on how to run everything, the slides, and links to some other related resources.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/Aiven-Labs/app-multimodal-search-CLIP-PostgreSQL">The source code is at https://github.com/Aiven-Labs/app-multimodal-search-CLIP-PostgreSQL</link>
                
                    <link href="https://github.com/Aiven-Labs/app-multimodal-search-CLIP-PostgreSQL/tree/main/slides">The slides are in the `slides` folder.</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/VTHPZK/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/VTHPZK/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 3' guid='3d929adb-7dbc-533f-b496-05457fd1a2ef'>
            <event guid='99c02229-67f7-5721-90ee-7975a14e3951' id='70336' code='9RKPUA'>
                <room>Space 3</room>
                <title>Data modelling with Pydantic</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>01:25</duration>
                <abstract>Get hands-on with Pydantic, the most widely used data validation library for Python.

Learn to write schemas to model data using simple type annotations. Use Pydantic to parse and validate data, consume JSON APIs, manage configuration, design your own APIs and create great command line interfaces with ease.</abstract>
                <slug>pyconuk-2025-70336-data-modelling-with-pydantic</slug>
                <track></track>
                
                <persons>
                    <person id='71888'>Ben Nuttall</person>
                </persons>
                <language>en</language>
                <description>Bring a laptop - ideally you&apos;ll have Python and vscode installed beforehand, but if not I&apos;ll help you get started.

Learn to write schemas to model data using simple type annotations. Use Pydantic to parse and validate data, consume JSON APIs, manage configuration, design your own APIs and create great command line interfaces with ease. See how Pydantic can make your code simpler, more readable and make the data you consume a pleasure to work with, and reduce guesswork and type mangling!

I&apos;ll be covering:

- What is Pydantic?
- Why use it?
- Setup: virtualenv, installing requirements, setting up vscode
- Data modelling
- Data validation
- Type annotations for simple models
- Custom validators for more advanced parsing and validation
- JSON API schema validation and consuming APIs
- Configuration management with pydantic_settings
- Serving APIs with FastAPI
- Creating CLIs with typer</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/9RKPUA/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/9RKPUA/feedback/</feedback_url>
            </event>
            <event guid='3451a761-18f8-59a7-b640-d0e18b17e1bc' id='70007' code='MR39CJ'>
                <room>Space 3</room>
                <title>Theming Workshops for Education via &apos;Coding a Satellite&apos;</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T13:30:00+01:00</date>
                <start>13:30</start>
                <duration>01:25</duration>
                <abstract>Interested in running outreach workshops, educational activities or beginner challenges? In this session we will:
- discuss what makes a good workshop for your audience
- share ideas on theming activities
- have a go at a workshop designed for 9-14 year-olds, using a BBC micro:bit to &apos;code a satellite&apos;</abstract>
                <slug>pyconuk-2025-70007-theming-workshops-for-education-via-coding-a-satellite</slug>
                <track></track>
                
                <persons>
                    <person id='70403'>Sarah Townson</person>
                </persons>
                <language>en</language>
                <description>I worked for an education charity for almost 9 years, running workshops with a wide range of young people - aged 5-18, in schools and community groups, with parents/guardians or unaccompanied - on all sorts of different themes. 
My favourite tool to use is a BBC micro:bit and, in this workshop, I will share how I have used very similar code to run very different workshops.

You can discuss ideas with other session attendees on ways to theme workshops that are relevant to your own work, and I will run through an example workshop &apos;Code a Satellite&apos;.

The example workshop uses many different micro:bit features that could be themed in different ways - we will experiment with using the LED display, light sensor, accelerometer and radio - and I will also describe how I adapted it for different age groups.

Bring a laptop with a USB port (I have a *small* number of USB-C cables available!), I will provide micro:bits to use during the session.

Wifi-less option: to take part in this workshop without internet access, you can pre-install the Mu editor from here: https://codewith.mu/en/download</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/MR39CJ/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/MR39CJ/feedback/</feedback_url>
            </event>
            <event guid='6d6f92d8-98e2-5a8e-b1cb-3de17a9fa16c' id='71840' code='HVSKAK'>
                <room>Space 3</room>
                <title>How to measure and elevate quality in engineering practice</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T15:00:00+01:00</date>
                <start>15:00</start>
                <duration>01:55</duration>
                <abstract>Some qualities are not values easily read off from the world, like a temperature or number. How do you measure, track, represent and drive engineering quality, without crudely reducing it to something it is not?</abstract>
                <slug>pyconuk-2025-71840-how-to-measure-and-elevate-quality-in-engineering-practice</slug>
                <track></track>
                
                <persons>
                    <person id='66705'>Daniele Procida</person>
                </persons>
                <language>en</language>
                <description>In my work in Canonical&apos;s Engineering Excellence organisation, I direct engineering practice at scale: the documentation efforts of dozens of teams in over a hundred software products. To do that I have had to find ways to measure quality of practice and outcome. I also had to persuade all those engineering teams to accept them, and work with them.

The methods and approaches I developed for documentation have been adopted for other engineering disciplines, such as security engineering practice. I&apos;ll share them in this workshop in the form of reusable tools that can similarly be adopted and adapted to other needs. At the heart of them is a maturity model that helps drive practice quality at scale, elevating standards, discipline and execution.

I&apos;ll work with attendees to turn these tools into tools for their own needs, in their own companies and organisations.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/HVSKAK/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/HVSKAK/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 4' guid='85b19a87-2f2d-5003-a2ef-07c1bfecff3e'>
            <event guid='87518973-8479-56a2-8678-43ddbcad909b' id='70354' code='SLS33S'>
                <room>Space 4</room>
                <title>What We Can Learn from Exemplary Python Documentation (SEE DESCRIPTION FOR PREPARATION)</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T11:00:00+01:00</date>
                <start>11:00</start>
                <duration>01:25</duration>
                <abstract>Let us build on examples from NumPy, pandas, and Matplotlib to explore techniques and tools with the Sphinx documentation generator. Learn how to implement styles, include advanced elements, and overcome challenges in creating clear, maintainable docs. &#128209;&#10024;</abstract>
                <slug>pyconuk-2025-70354-what-we-can-learn-from-exemplary-python-documentation-see-description-for-preparation</slug>
                <track></track>
                <logo>/media/pyconuk-2025/submissions/SLS33S/session_image_wjLAYOz.jpg</logo>
                <persons>
                    <person id='70710'>Christian Heitzmann</person>
                </persons>
                <language>en</language>
                <description>PLEASE PREPARE A FRESH PYTHON PROJECT BEFORE THE WORKSHOP (PREFERABLY USING PYCHARM OR AT LEAST AN IDE YOU ARE EXPERIENCED WITH; JUPYTER NOTEBOOKS DO **NOT** WORK):

pip install --upgrade pip setuptools
pip install jupyterlite-pyodide-kernel
pip install jupyterlite-sphinx
pip install matplotlib
pip install numpy
pip install pandas
pip install pydata-sphinx-theme
pip install sphinx-book-theme
pip install sphinx-copybutton
pip install sphinx-gallery
pip install sphinxcontrib-kroki

----------------------------------------------------------------------------------------------------

If you&#8217;ve attended one of last year&#8217;s Python conferences in Europe, you might have seen my talk &#8220;Documenting Python Code&#8221;, where I introduced attendees to the basics of Python documentation. This year, I will expand on that foundation by looking at what can be learned from exemplary Python documentation.

Building on renowned examples from popular Python libraries such as NumPy, pandas, and Matplotlib, this workshop will delve into techniques and tools that help streamline documentation creation while improving clarity and usability. The topics covered include:

Sphinx documentation generator
&#8226; use reStructuredText as a markup language
&#8226; simplify docstrings with the NumPy and Google format
&#8226; generate function and method documentation with sphinx-apidoc

How to
&#8226; include code snippets as examples and display them in environment-specific tabs
&#8226; adopt themes and implement appealing styles
&#8226; use admonitions to highlight important content
&#8226; write sophisticated mathematical formulas
&#8226; create versatile diagrams with Kroki
&#8226; generate interactive HTML documentation with embedded notebooks

Comparison: AsciiDoc vs. Sphinx
&#8226; explore their strengths and limitations for multi-language projects
&#8226; see how AsciiDoc can document APIs by including tagged source code snippets

This workshop provides practical insights and examples to help developers, technical writers, and maintainers create better documentation and improve their workflows. Whether you are just starting out or refining an established project, this session will provide actionable techniques to overcome common challenges and take your documentation to the next level.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/SLS33S/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/SLS33S/feedback/</feedback_url>
            </event>
            <event guid='08b9abb7-0ad1-58da-8ad9-74fe7dfb5f80' id='70223' code='BJHYZM'>
                <room>Space 4</room>
                <title>Observing production systems with OpenTelemetry</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-21T13:30:00+01:00</date>
                <start>13:30</start>
                <duration>01:25</duration>
                <abstract>Understanding how your production systems are working is vitally important, but hard to do.

In this workshop, we will hands-on learn how to use OpenTelemetry to instrument a Django application, and how to use it to diagnose problems in production.</abstract>
                <slug>pyconuk-2025-70223-observing-production-systems-with-opentelemetry</slug>
                <track></track>
                
                <persons>
                    <person id='70604'>Simon Davy</person>
                </persons>
                <language>en</language>
                <description>When running your code in production, it is essential be able to observe what the code is doing, and how long it is taking. This allows you to diagnose problems, improve performance, and plan for growth. This property is known as Observability - the ability to determine the internal state of the system from observing its outputs.

But production systems are often large and complex, which makes this difficult, and developers do not always have unrestricted access to inspect the internals of the system, for valid reasons.  There are many tools and methods that provide aggregated logging, metrics and tracing, all in order to try find ways to answer these questions.

Over the last few years, OpenTelemetry has emerged as the leading open standard and tool-set to instrument code to provide deep observability.  It provides a standard way to augment your application code to emit telemetry that can be use to answer complex questions about your system.  It has seen rapid adoption across different language ecosystems and observabilty vendors.  However, it introduces many new concepts, and its cross-platform and design-by-committee nature can make it a bit of steep learning curve.

This workshop will introduce OpenTelemetry concepts, and provide a series of hands on interactive exercises to work through, based on a provided Django application, which will include:
 - adding basic auto-instrumentation
 - emitting it to [Honeycomb](https://honeycomb.io) to explore
 - diagnosing a slow request
 - adding custom application specific telemetry
 - linking telemetry across services

This is intended to be an intermediate workshop - you will need basic familiarity with python and python packages, and Django and its ecosystem, to get the most of out of it. To do the exercises, you will need a computing device with either [uv](https://github.com/astral-sh/uv) installed, or a GitHub account to use Codespaces.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/BJHYZM/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/BJHYZM/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='4' date='2025-09-22' start='2025-09-22T04:00:00+01:00' end='2025-09-23T03:59:00+01:00'>
        <room name='Space 3' guid='3d929adb-7dbc-533f-b496-05457fd1a2ef'>
            <event guid='aa84bdaa-f300-5565-9620-ab9404ea1953' id='79444' code='7GK9XV'>
                <room>Space 3</room>
                <title>Code sprints and other collaboration</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-22T10:00:00+01:00</date>
                <start>10:00</start>
                <duration>05:00</duration>
                <abstract>Code sprints and other collaboration</abstract>
                <slug>pyconuk-2025-79444-code-sprints-and-other-collaboration</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Code sprints and other collaboration</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/7GK9XV/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/7GK9XV/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Space 4' guid='85b19a87-2f2d-5003-a2ef-07c1bfecff3e'>
            <event guid='2aace4d3-40f3-5d0f-8787-3cf374b29a86' id='79442' code='8F3WWT'>
                <room>Space 4</room>
                <title>Code sprints and other collaboration</title>
                <subtitle></subtitle>
                <type>interactive workshop or collaborative session</type>
                <date>2025-09-22T10:00:00+01:00</date>
                <start>10:00</start>
                <duration>05:00</duration>
                <abstract>Code sprints and other collaboration</abstract>
                <slug>pyconuk-2025-79442-code-sprints-and-other-collaboration</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Code sprints and other collaboration</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconuk-2025/talk/8F3WWT/</url>
                <feedback_url>https://pretalx.com/pyconuk-2025/talk/8F3WWT/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    
</schedule>
