PyCon UK 2025
Welcome Friday
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!
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
Lightning talks Friday
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.
Django Girls
Welcome Saturday
Most programming languages are in English, but why? And what does it entail to change that?
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.
Learn how we made our FastAPI tests 10x faster by ditching Docker, going in-memory, and embracing simplicity (and sanity).
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.
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.
Writing code which runs is easy. Writing code which stops (cleanly) is hard. Writing code which cleanly stop someone else's code? Harder still.
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.
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.
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.
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?
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.
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.
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.
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.
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.
Using Linux observability tools to learn what your Python application is doing
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.
Young Coders - demo preparation
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.
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.
Young Coders demos
Lightning talks Saturday
Welcome Sunday
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.
UK Python Association AGM
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.
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.
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.
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. 📑✨
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.
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.
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.
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.
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.
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'
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.
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?
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.
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?
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.
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.
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.
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.
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.
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.
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.
Lightning talks Sunday