PyCon UK 2025

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
11:00
11:00
30min
Welcome Friday

Welcome Friday

Main stage
11:30
11:30
60min
Python’s True Superpower
Hynek Schlawack

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!

Main stage
13:30
13:30
85min
Setting Up Reliable CI/CD Pipelines with Python, K8s & Testcontainers
Koti Vellanki

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.

Space 3
13:30
85min
TDD: what it is, why it's good, and why it might just solve all your AI problems
Harry Percival

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.

Space 4
14:00
14:00
25min
10 Python Performance Mistakes I Won’t Make Again
Sasha Romijn

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't have to go through them yourself.

Space 2
14:00
25min
Beyond lists: why other collection types are often better
David Seddon

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.

Main stage
14:30
14:30
25min
From no-help to self-help: Streamlining processes with Slack and Python
Isaac Oldwood

A story of how I used Slack’s Python framework to build a self-service tool that enables internal users to complete processes more efficiently and reliably.

Space 2
14:30
25min
More Spoons Please: Coping With Long Covid As A Programmer
Hannah Hazi

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.

Main stage
15:00
15:00
85min
Memray 101: Demystifying memory profiling in Python
Jesse Carnaxide

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!

Space 4
15:00
25min
Pyrefly: A Scalable Type Checker for a Unified IDE Experience
Kyle Into

Pyrefly 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.

Main stage
15:00
85min
Simply the best: An introduction to machine learning with evolutionary algorithms
Frances Buontempo

Evolutionary algorithms are part of machine learning. They solve optimization problems, searching for the 'best' 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.

Space 3
15:00
25min
Why, and how, all your Python code should be Declarative in the Age of Generative AI
Dom Weldon

We'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.

Space 2
16:00
16:00
25min
No data, no problem: Synthetic Data using Faker
Eric Thanenthiran

What do you do when you need to build data products, but don’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.

Space 2
16:00
25min
exec: putting Python in your Python so you can code while you code
David Asboth

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.

Main stage
16:30
16:30
25min
Previous session continues here
Space 3
16:30
25min
Previous session continues here
Space 4
16:30
25min
Creative beginners Python programming in the browser
Pierre Weill-Tessier

This talk presents Strype, a free, online Python environment aimed at novice programmers. Strype combines frame-based editing – a technique that supports novices by reducing syntax errors – with an intuitive graphics framework. Users can learn programming by creating games and animations from day one, while learning fundamental programming principles.

Space 2
16:30
25min
I'm a Luddite, Why Aren't You
CJ Shearwood

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.

Main stage
17:00
17:00
60min
Lightning talks Friday

Lightning talks Friday

Main stage
09:00
09:00
45min
Art with character(s): Make your own ASCII art with Python
Hugh Evans

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.

Space 4
09:00
480min
Django Girls

Django Girls

Space 3
09:00
30min
Welcome Saturday

Welcome Saturday

Main stage
09:30
09:30
60min
Localization and translation of programming languages
Felienne Hermans

Most programming languages are in English, but why? And what does it entail to change that?

Main stage
10:00
10:00
45min
Code Your First Game: Save the Princess with Python!
Alabi Ramat Eniola

In this hands-on session, young coders will create their own text-based adventure game using Python. They'll learn basic coding concepts while using their creativity to build interactive stories with fun twists and turns.

Space 4
11:00
11:00
25min
FastAPI, Furious Tests: The Need for Speed
Shahar Polak

Learn how we made our FastAPI tests 10x faster by ditching Docker, going in-memory, and embracing simplicity (and sanity).

Space 2
11:00
45min
Introduction to Hedy
Anthony Harrison

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.

Space 4
11:00
25min
Mapping Jane Austen’s Influence Across Space & Time with Python and ClickHouse
Nataly Merezhuk

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—at scale.

Main stage
11:30
11:30
25min
Halt and Catch Fire: Forcefully Stopping Python
Jake Howard

Writing code which runs is easy. Writing code which stops (cleanly) is hard. Writing code which cleanly stop someone else's code? Harder still.

Main stage
11:30
25min
Principle Misunderstandings
Kevlin Henney

For developers who want to improve their art there'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'll take a look a few, highlighting the real lessons we can apply to our code.

Space 2
12:00
12:00
25min
Bringing Randomness to Life: Building a Python tool to tell stories about stochastic processes
Dialid Santiago

How do you explain stochastic processes without equations? You show (plot) them!
In this talk, I’ll share my experience facing this question and how it led me to build a Python tool to visualise stochastic processes in a way that builds understanding and communicates behaviour intuitively.

Space 2
12:00
25min
How to be a Python Icon, writing Pythonic Code
Jesse Carnaxide

What makes code Pythonic? In this talk, we’ll explore how clear, concise, and maintainable code embodies Pythonic principles. With simple, real-world examples, you’ll learn to spot common patterns and refactor them the Pythonic way — leaving with practical tips you can start applying to your code right away.

Main stage
14:00
14:00
45min
Code a Satellite
Sarah Townson

Program a model satellite using a BBC micro:bit - you will send data to 'ground control' 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?

Space 4
14:00
25min
Two Worlds, One Mission: A Decade of Open Source Growth in Africa vs the West
Ngazetungue Muheue

What if open source could do more than just build software? Could it build communities, solve challenges, and transform lives? In Africa, this vision is becoming a reality. The open-source movement has grown from grassroots efforts into a powerful force for innovation, contrasting with the West’s established ecosystems.

Main stage
14:00
25min
Why Your Async Code Might Be Slower — and How to Fix It
Aastha

Asyncio has become one of Python’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.

Space 2
14:30
14:30
25min
The tale of PEP 765: SyntaxWarning on `return` in `finally`
Irit Katriel

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.

Main stage
14:30
25min
Using Python to help with my spelling tests
Tatiana Al-Chueyr, Amanda Al-Chueyr

A third of London'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.

Space 2
15:00
15:00
45min
Code a program that notifies you when the International Space Station is up above!
Harry Wake, Anna Wake

Using the power of Application Programming Interfaces (APIs) in Python, we'll explain how you can create a program to send you an email when the International Space Station is above you.

Space 4
15:00
25min
How to solve a Python mystery
Aivars Kalvāns

Using Linux observability tools to learn what your Python application is doing

Main stage
15:00
25min
I Just Want to Run the Script: Lessons in Cross-Team Python Usability
Rashan Smith

Your Python script works on your machine. But when a teammate tries to run it, chaos unfolds. This talk dives into real-world lessons for making your code usable by others, especially across teams. Learn to avoid setup nightmares and deliver Python tools that just work, without sacrificing your sanity.

Space 2
15:45
15:45
45min
Young Coders - demo preparation

Young Coders - demo preparation

Space 4
16:00
16:00
25min
Raspberry Pis, Crime and the CIA Triad
Kane Swartz, Jack Travis

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.

Main stage
16:00
25min
Speed Matters: Accelerating Python with C++ and Pybind11
Peichao Qin

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.

Space 2
16:30
16:30
30min
Young Coders demos

Young Coders demos

Main stage
17:00
17:00
60min
Lightning talks Saturday

Lightning talks Saturday

Main stage
09:00
09:00
15min
Welcome Sunday

Welcome Sunday

Main stage
09:15
09:15
60min
Playing the long game
Sheena

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.

Main stage
10:15
10:15
15min
UK Python Association AGM

UK Python Association AGM

Main stage
11:00
11:00
25min
A junior’s perspective: why doing difficult things is good for you and good for your team
Katie Bickford

What happens when a junior picks up a task involving unfamiliar tools and concepts? This talk follows a beginner's journey across three weeks of debugging, learning, and asking for help. There’ll be advice for juniors on navigating challenging work, and advice for seniors on how to help.

Space 2
11:00
85min
Data modelling with Pydantic
Ben Nuttall

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.

Space 3
11:00
25min
Oh no! Your project became really popular!
Deb Nicholson

With great growth comes great responsibility. But you aren’t expected to navigate that growth without making significant changes. Let’s talk about all the options so you can come out the other side with the best possible outcome for your project and yourself.

Main stage
11:00
85min
What We Can Learn from Exemplary Python Documentation
Christian Heitzmann

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. 📑✨

Space 4
11:30
11:30
25min
From Data to Predictions: Building Regressors and Classifiers in Python
Abhigyan Shrivastava

In this talk, we’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.

Space 2
11:30
25min
Python for Humans - Designing Python Code Like a User Interface
Justin Lee

What if we wrote Python the way designers build user interfaces? This talk explores how UI/UX design principles—like layout, labeling, affordances, and visual hierarchy—can help you write Python that’s intuitive to read, easy to navigate, and built with real users in mind.

Main stage
12:00
12:00
25min
From student to maintainer: how mentorship programs sustain Django and Wagtail
Sage Abdullah

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's my journey and how mentorship programs like Google Summer of Code (GSoC) and Outreachy help sustain open source communities.

Main stage
12:00
25min
JIT compilers for scientific computing in Python: Numba vs. JAX
Kolen Cheung

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.

Space 2
13:30
13:30
85min
Observing production systems with OpenTelemetry
Simon Davy

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.

Space 4
13:30
85min
Theming Workshops for Education via 'Coding a Satellite'
Sarah Townson

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 'code a satellite'

Space 3
14:00
14:00
25min
Marimo Magic: A New Era of Python Notebooks for Explorers and Engineers
Bernhard Merkle

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—all in a single notebook.

Space 2
14:00
25min
Why `len('😶‍🌫️') == 4` and other weird things you should know about strings in Python
Yngve Mardal Moe, Marie Roald

Strings in Python behave in all sorts of unexpected ways: len('😶‍🌫️') == 4, 'ñ' != 'ñ', '‮dlrow olleh‬'‬.split()[1] == 'olleh‬'! How is this possible? And importantly, why should you care?

Main stage
14:30
14:30
25min
How to build a cross-platform GUI app with Python
Russell Keith-Magee

Building an app with a graphical interface that can run on multiple platforms - including mobile - doesn't have to be difficult. In this talk, you'll learn how to build and run an app with a native GUI that can run on multiple platforms, without modifications.

Main stage
15:00
15:00
85min
How to measure and elevate quality in engineering practice
Daniele Procida

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?

Space 3
15:00
85min
Observability Matters: Empowering Python Developers with OpenTelemetry.
Yash Verma

Ever been frustrated by an app going down? Imagine the impact on businesses- lost revenue, overwhelmed teams and blind troubleshooting. Observability shouldn’t be scary, it should be open and flexible. OpenTelemetry ensures control, portability and vendor freedom. Learn to instrument Python apps, process telemetry and gain real insights.

Space 4
15:00
25min
Prototypes, Sharing and Services: Full Django in a Single File
Richard Terry

Find out how to run Django from a single file, with working views, models, admin and an API. We'll see how nanodjango makes it easy, how it's perfect for building everything from prototypes to production services, and why it's a powerful alternative to Flask and FastAPI.

Main stage
15:00
25min
Python and Rust, a perfect pairing
Miikka Koskinen

Rust programming language has recently gained a lot of popularity. However, you don'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.

Space 2
16:00
16:00
25min
Building SQL queries using t-strings
Phil Jones (@pgjones)

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.

Space 2
16:00
25min
Much Ado About None
Daniel Rios

Much has been said about every other part of the Python language, but none has had less attention than None. We'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.

Main stage
16:30
16:30
25min
Previous session continues here
Space 3
16:30
25min
Previous session continues here
Space 4
16:30
25min
Enriching animation with python
Joe Spademan, Travis Ralph-Donaldson

Based in the heart of Manchester, Doodledo are a film and animation studio that use python for rigging and animating with Maya. We are now partnering with Niter to streamline the process of animating lip-sync from audio files using ethical AI tooling.

Main stage
16:30
25min
Type text, find pictures: an app using CLIP, PostgreSQL® and pgvector
Tibs

What would once have been magical is now becoming common place.

In this talk, I'll show how to write a Python app that takes a text snippet (like "cat" or "man jumping") and finds images that match.

Space 2
17:00
17:00
60min
Lightning talks Sunday

Lightning talks Sunday

Main stage