List of videos

Talks - Eric Snow: A Per-Interpreter GIL: Concurrency and Parallelism with Subinterpreters
We live in a world of concurrent code and multi-core computing, so come learn about a new solution for both in Python 3.12. We'll quickly explain the new feature (and an old one), and then show you how to take advantage of it, for simpler concurrency and faster code.
Watch
Talks - Russell Keith-Magee: You *can* take it with you: Packaging your Python code with Briefcase
Once you're written your amazing new application using Python, the next problem you'll face is how to get that application into the hands of users. If your users are familiar with pip and and venv, you can put pip install instructions into a README, and leave it at that. But what if your audience aren't Python programmers? What if your app needs to be used by people who don't write Python at all? How do you distribute your code so that others can use it? In this talk, you'll learn about Briefcase, a tool that can convert a Python project into platform-native apps on macOS, Windows, Linux - and can also target iOS, Android, and the web. You'll learn how to use Briefcase to start a new project, or convert an existing project for distribution. You'll learn about the features of Briefcase that can support you while you develop your application. Finally, you'll learn how to generate installers and standalone applications for multiple platforms from a single Python codebase.
Watch
Talks - Adrian Garcia Badaracco: Inside web framework: intro to the ASGI spec, middleware and apps
What do FastAPI and Django have in common? They both use ASGI under the hood. ASGI, which stands for Asynchronous Server Gateway Interface, is a specification and API for asynchronous, event-driven web applications. The goal of this talk is to peel back the curtain on the internals of this specification and empower you to debug ASGI apps, write custom ASGI middleware, and simplify application lifecycles and serving. We will begin by discussing the basics of the ASGI specification and how it works. Then, we will move on to writing a simple ASGI app using pure, hand-crafted Python, without any frameworks or libraries. After that, we will cover ASGI middleware, which is a powerful tool that allows us to modify the behavior of our ASGI apps without changing the underlying code. We will show how to write custom middleware and how to use it to add features such as authentication or request body processing. Finally, we will discuss the serving of ASGI applications, focusing on how to use Uvicorn programmatically and take control of your event loop.
Watch
Talks - Pradeep Kumar Srinivasan: Catching Tensor Shape Errors without Running Your Code
ML developers are often slowed down by errors because of long iteration times and difficulty in debugging ML code. Tensor shape mismatches are some of the most common errors for both new and experienced ML developers, occurring when an operation is fed a multi-dimensional array (tensor) with the wrong dimensions (shape). In this talk, we will show that it is possible to catch Tensor shape mismatches without running your code by (a) representing the symbolic shape of a tensor (e.g., H x W x B) with explicit type annotations, called shape types, and (b) using a type checker to catch mismatches. We will also show how shape types can help us understand code faster by allowing us to see the shape of a tensor variable right in the IDE. Finally, we will describe how shape types can be adopted gradually in an existing ML project, talk about support for features such as broadcasting (in NumPy, PyTorch, etc.), and walk through the limitations of this new concept of shape types.
Watch
Talks - Pablo Galindo Salgado: How memory profilers work
These days, it is very easy for applications to run out of memory due to the vast amounts of data they need to process. While Python makes it very easy to get something up and running, the highly dynamic nature of the language abstracts memory management away from us and makes it very difficult to understand what is going on when we run out of memory or when we have memory leaks. This is where memory profilers come into play. Memory profilers are tools that allow us to understand how our applications are using memory. Not only can they help us diagnose why our programs are using so much memory, but also they can also help us optimize our code to be faster by using smarter allocation patterns. Being able to understand how to use memory profilers effectively is an essential skill for any Python developer, especially those working on programs that involve the transformation of large amounts of data, large-scale applications, or long-running processes. This talk will cover the basics of memory profilers, how they work, and how to use them effectively. We will cover the different types of memory profilers, the different kinds of allocations a Python program can perform, and how to use memory profilers effectively to understand what is going on in our programs.
Watch
Talks - Bruce Eckel: Rethinking Objects
This presentation revisits two core concepts of Object-Oriented programming: encapsulation and code reuse. Using a series of examples, we'll ask whether these concepts have satisfied their promises, and how functional approaches can do a better job. We'll also see that objects still have value in making library use easy.
Watch
Talks -Algorithmic ideas, engineering tricks, and trivia behind CPython's new sorting algorithm
Writing a sorting function is easy - coding a fast and reliable reference implementation less so. In this talk, I tell the story behind CPython's latest updates of the list sort function. Aims: entertain people with twists of history and algorithmic puzzles, which tell a lovely story of how a seemingly useless piece of theory lead to the fastest and most elegant solution of a practical challenge. Target audience: geeks believing in the power of solid algorithmic thinking; programmers interested in engineering performance-critical code; all Python enthusiast curious about what makes (sorting lists in) Python fast. Content: After using Quicksort for a long while, Tim Peters invented Timsort, a clever Mergesort variant, for the CPython reference implementation of Python. Timsort is both effective in Python and a popular export product: it is used in many languages and frameworks, notably OpenJDK, the Android runtime, and the V8 JavaScript engine. Despite this success, algorithms researchers eventually pinpointed two flaws in Timsort's underlying algorithm: The first could lead to a stack overflow in CPython (and Java); although it has meanwhile been fixed, it is curious that 10 years of widespread use didn't bring it to surface. The second flaw is related to performance: the order in which detected sorted segments, the “runs” in the input, are merged, can be 50% more costly than necessary. Based on ideas from the little known puzzle of optimal alphabetic trees, the Powersort merge policy finds nearly optimal merging orders with negligible overhead, and is now (Python 3.11.0) part of the CPython implementation.
Watch
Charlas - Laura Funderburk: XGBoost para clasificación: construyendo modelos precisos y eficientes
En esta charla, nos centraremos en el uso de XGBoost para problemas de clasificación. Comenzaremos explicando los conceptos básicos de la clasificación y cómo difiere de la regresión. Luego, demostraremos cómo usar XGBoost para construir y evaluar modelos de clasificación, y discutiremos algunas de las características y ventajas clave de XGBoost para tareas de clasificación. Al final de la charla, los asistentes tendrán una comprensión sólida de cómo usar XGBoost para construir modelos de clasificación precisos y eficientes.
Watch
Charlas - Daniel Hernández Méndez: Interfaces Low-code con QT y su integración con Python.
Esta charla tratara de como diseñar interfaces low-code del framework QT de manera visual, por medio de Qt Designer, y como transformar los archivos generados por este programa (.UI) a código Python (.py), sí que existe necesidad de modificar algo a nivel de código, o simplemente integrar estos archivos UI, con el código Python, por medio de un ejemplo de una aplicación control de desempeño empresarial, programada 100% en Python. La charla esta dedicadas a todas esas personas, que como yo necesitamos tener el control de las interfaces totalmente visual, que le dificulta mucho programar a nivel de código dichas interfaces (por tema de control de pixeles, botones, funcionalidades, etc). La charla será, para todo tipo de público, debido a la utilización de poco código, para tener resultados satisfactorios, pero igual se incluirá, modificaciones de esté para usuarios un poco mas avanzados.
Watch