Our conference includes small sessions of 30min each (Talk + Q&A), delivered by speakers from all over the world, two panels, and various competitions. The following timetable is based on GMT.
Hour
Speaker
Talk
07:00 GMT
Welcome Talk
Welcome Talk
The conference will start with a short welcome talk. During this talk we will go over the schedule and provide more information about the various activities.
07:05 GMT
Adarsh Divakaran
Tackling Thread Safety in Python
As Python developers, we often overlook thread safety, leading to unpredictable behavior of our code in multithreaded environments. Through this talk, we will explore the common pitfalls and challenges that arise when code not designed for thread safety is executed in a multithreaded environment. We’ll look into common pitfalls and explain how to leverage synchronization primitives for thread safety.
07:35 GMT
Robyn – Asynchronous Python Web Framework with a Rust Runtime
Python web frameworks such as FastAPI, Flask, Quartz, Tornado, and Twisted are essential for developing high-performance web applications. However, they may also present certain bottlenecks, either due to their synchronous nature or the usage of the Python runtime. To overcome these limitations and increase performance, Robyn was created. Robyn is one of the fastest Python web frameworks in the ecosystem, with a runtime written in Rust. This allows for near-native rust performance while still maintaining the ease of writing Python code. In this talk, we will discuss the reasons for creating Robyn, the technical decisions behind it, such as the use of Rust runtime, and how it achieves near-native Rust performance. Additionally, we will explore how to use Robyn to develop web applications, how the community has helped Robyn grow, and the plans for its development. I would also like to hear feedback from the developers to see what they want in Robyn and how it can better cater to their needs.
08:05 GMT
Albertas Gimbutas
Deadcode – a Tool to Find and Fix Unused (Dead) Python Code
Code that is no longer needed creates technical debt if it is not removed from the code base. Unused code has to be maintained, it complicates code base and increases cognitive load. It might even depend on no longer necessary dependencies with vulnerabilities and might increase the attack surface. Therefore, removing dead code saves time and money and reduces security risks. Recently, Ruff has become a de facto linter, which provides almost all existing linting rules from other lenders. However, this tool can detect locally unused Python code only, which is only a tiny portion of unused code. Vulture is the best-known tool for detecting globally unused Python code. However, its configuration is not very flexible, and disabling false positives in a larger code base might require a lot of effort. In addition, unused code detection is, in some cases, inaccurate because scopes are not taken into account when detecting unused code. This talk introduces a new Python package called `deadcode`, which tries to move globally unused Python code detection to the next level. First, it provides a large set of options to flexibly disable various types of false positives. Second, deadcode implements more rules for detecting unused code than Vulture. Third, an improved strategy that tracks scopes and namespaces into account is being used to more accurately identify unused code items. Fourth, a –fix option is provided, which allows the automatic removal of detected unused code items. In addition, an idea to prune Python code in order to reduce its size will be considered, which might be relevant when serving Python code in a browser. Let’s make the Python ecosystem even more awesome!
08:35 GMT
Kahoot Quiz
XtremePython Kahoot Quiz Competition
We are going to have a small Kahoot-based quiz competition. The competition will take place online and it will include quiz questions. The points are given in each quiz question in accordance with the correctness and the speed of answer.
08:55 GMT
Hackaton
XtremePython Hackaton
Our small hackaton includes a question in which you need to write a small program that answers the question we created. The winner is the first that answers correctly this question. The winner will be announced at the end of the conference.
09:00 GMT
First Break
First Break
09:30 GMT
Maxim Danilov
µDjango, an Asynchronous Microservices Technique with Practical Examples
In this talk, we will work with a Django project containing just one file. This solution automatically transforms Django into a microservice-oriented Async framework with the “batteries included” philosophy. The result of this Talk for the audience will be knowledge about mDjango, a ready-to-use technology for building synchronous and asynchronous microservices.
10:00 GMT
Gil Zilberfeld
Playwright in 1/2 hour. Or less.
Playwright is an exciting new-ish web automation framework. It has a lot of cool features that make it easier to write web tests. And it’s really hard to push all of them into an 1/2 hour.
10:30 GMT
Malicious Needle in a Haystack – PyPi Security Pitfalls
PyPi has 1.5 billion packages downloaded daily. This huge number is the perfect opportunity to disguise a malicious needle in the package haystack. Due to its popularity among Python developers, PyPi is also extremely popular among attackers. Attackers may target masses using techniques like typosquatting or perform targeted campaigns against maintainers of the top projects and even the whole developer communities. One of the crucial skills that a Python developer must have nowadays is the responsible use of open-source dependencies. The talk will focus on the issues that may happen to developers and ways to avoid them.
11:00 GMT
Kahoot True False
XtremePython Kahoot True Flase
We are going to have a small Kahoot-based True False competition. The competition will take place online and it will include True False questions. The points given in each question is in accordance with the correctness and the speed of answer.
11:25 GMT
Breakout Room
XtremePython Breakout Room
The Breakout Room game takes place online. The participants in this game will need to find their way out by overcoming a digital lock. The first that succeeds to overcome the digital lock wins the game. In order to overcome the digital lock the participants will need to code various small programs in Python.
11:30 GMT
Second Break
Second Break
12:00 GMT
Dr. Reuven Lerner
FastAPI Fundamentals
FastAPI is a new and wildly popular Python framework for creating and exposing APIs. Its popularity stems in no small part from the fact that it’s easy to start with, easy to scale up as your needs grow, and also highly performant. In this talk, I’ll introduce you to the basics of FastAPI, showing you everything from creating a simple application to testing it, and checking the validity of inputs and outputs. By the time you finish this talk, you’ll have a good sense of how and where you can use FastAPI.
12:30 GMT
Dr. Piotr Gryko
Building and Scaling an AI Startup with Async Django
Django’s async capabilities and batteries-included tooling make it an ideal framework for quickly building MVPs and iterating. This talk demonstrates building a document search MVP with Django templates and ChromaDB and hosting large language models. It then shows how to refactor and scale it using Elasticsearch, Celery/RabbitMQ workers, React, self-hosted vLLM, and auth. With Django async, you can rapidly build, constantly improve and deploy the latest AI models in your product.
13:00 GMT
Design Patterns Unleashed: Building Elegant and Confident Solutions
Join us for a captivating session at XtremePython 2024, where we unravel the power of design patterns and their role in crafting robust Python software. Design patterns aren’t just theoretical; they are the tried-and-true tools that empower developers to build clean, scalable, and maintainable solutions with confidence. We’ll explore a selection of design patterns, from foundational creational patterns to advanced behavioral ones, demonstrating their practical applications in Python development. This session will help bridge the gap between abstract concepts and real-world use, giving developers of all levels the tools to identify common design problems and implement efficient, elegant solutions. Through insightful examples and clear explanations, this talk equips attendees with a deeper understanding of how design patterns can transform codebases. Whether you’re a seasoned expert or a curious learner, you’ll leave with practical knowledge to apply these patterns effectively and elevate your approach to software architecture.
13:30 GMT
Kahoot Simple Answer
XtremePython Kahoot Simple Answer
We are going to have a small Kahoot-based Simple Answers competition. The competition will take place online and it will include questions with simple short answers. The points given in each question is in accordance with the correctness and the speed of answer.
13:55 GMT
XtremePython Championship
XtremePython Championship
We will introduce the XtremePython championship, which includes a questionnaire with various programming questions about Java. The winner is the first participant to answer all questions correctly.
14:00 GMT
Third Break
Third Break
14:30 GMT
Anton Caceres
Efficient Python Observability with OpenTelemetry
In today’s cloud-native and microservices-dominated landscape, observability is no longer just an option – it’s a must-have. This talk introduces OpenTelemetry, the emerging standard for observability with great support for Python applications. We’ll discuss how OpenTelemetry goes beyond traditional logging and monitoring to provide insights across services, databases, and message queues. You’ll learn to implement OpenTelemetry in Python, ensuring your applications deliver enhanced performance tracking and debugging capabilities. Through practical examples, this session will demonstrate how to collect, process, and distribute telemetry data, enabling a unified monitoring approach across distributed systems.
15:00 GMT
Sebastiaan Zeeff
The Magic of Self: How Python Inserts self Into Methods
Have you ever wondered how ‘self’ works? Whenever you call a method, ‘self’ seems to magically appear as an argument. But behind this dark magic lies a well-defined protocol, the descriptor protocol, that you can implement yourself. A phrase that we hear a lot is that “Python is easy to learn but hard to master”. In a way that’s true: Python’s many abstractions allow you to focus on the business logic of your code instead of the lower-level implementation details. At the same time, most of Python’s abstractions aren’t magical: Its versatile data model allows you to hook into almost every aspect of the language to implement objects that behave just as Python’s built-in objects do. This enables you to create new types of objects that have high-level interfaces of their own. In this talk, we will explore the wonderful landscape of Python’s data model by diving into an especially magical feature: The automatic insertion of ‘self’ into methods. When you first came across ‘self’ in a method signature, chances are that you learned that inserting the instance into methods is just something Python does for you and that you shouldn’t worry too much about it. I will go one step further and show you that there’s a well-defined protocol behind this magic, the descriptor protocol. By the end, not only should you be able to implement descriptors of your own, but you should also be able to recognize that some well-known features of Python, such as properties and classmethods, are implemented using the same descriptor protocol.
15:30 GMT
Haim Michael
Typing in Python: Bringing Clarity, Safety, and Speed to Your Code
Unlock the full potential of Python with type annotations! In this session, we’ll explore how Python’s typing system can drastically improve the clarity, safety, and performance of your code. From reducing runtime errors to enhancing collaboration in larger teams, typing in Python is a game-changer. Whether you’re new to typing or looking to refine your skills, this talk will demonstrate practical examples, tips, and best practices to integrate typing seamlessly into your projects. Join us to future-proof your Python development and write code that’s easier to understand, debug, and scale!
16:00 GMT
Fourth Break
Fourth Break
16:30 GMT
Dustin Turpin
Efficient Communication Between Python Microservices using LavinMQ
Discover how LavinMQ, a lightweight and efficient message broker, can streamline communication between Python microservices. Our presentation covers beginner and intermediate concepts, making it fit for total beginners and those seeking to level up. Don’t miss out!
17:00 GMT
Timothy Spann
Building Advanced LLM Applications with Python and Milvus: A Scalable Vector Database Solution
In the age of large language models (LLMs), the ability to store, search, and retrieve massive amounts of high-dimensional data efficiently is critical for building responsive, intelligent applications. Milvus, an open-source vector database, is designed to handle exactly this challenge. Leveraging Milvus in conjunction with Python, developers can seamlessly create high-performance applications powered by LLMs, such as semantic search, recommendation systems, and intelligent chatbots. This talk will explore the integration of Milvus with Python to build advanced LLM applications. We will dive into how Milvus manages and indexes vector embeddings generated by LLMs, enabling scalable and real-time similarity searches. The session will cover practical workflows, including setting up a Milvus cluster, generating embeddings using popular Python libraries (e.g., Hugging Face Transformers), and querying the database for fast retrieval of relevant information. Attendees will gain hands-on insights into using Milvus with Python to handle large-scale LLM-powered systems, unlocking the full potential of vector databases for modern AI applications. Whether you’re developing a question-answering system, a recommendation engine, or any application relying on efficient vector similarity search, this talk will provide the tools and knowledge to take your LLM-powered projects to the next level.
17:30 GMT
Lessons Learned From Maintaining SDK in Python for Three Years
Designing SDKs is much different than designing business applications. Let’s see how to build software that works for years and is used by other developers. We’ll learn how design patterns work in real life, how mistakes made in the early stage affect the software years later, and how to refactor the library without breaking users.
18:00 GMT
Xperts Panel
The AI Revolution in Coding: Tools, Trends, and Tomorrow
In this engaging panel, a team of industry experts will explore how AI is reshaping the coding landscape. From enhancing developer productivity to transforming software development practices, this discussion will dive into AI-powered tools, automation, and the future of programming. Join us for insights on how AI influences how we code and how developers can leverage these advancements to stay ahead in the evolving tech ecosystem.
The panel participants:
Krishna Lodha Abi Aryan Adarsh Divakaran
Kushal Vijay Karan Singh
18:25 GMT
Closure Talk
Closure Talk
This talk concludes the conference. During this 10 minutes talk we will also announce the winners in the various competitions XtremePython included.