List of videos

Talks - Malcolm Smith: Python on Android
By many measures, Android is the most widely-used operating system in the world. But Python development on the platform remains quite rare. Fortunately there are several active projects working to improve this. In this talk, you'll learn about: - Why Android support is important for the future of Python. - How Android compares to other platforms, and the unique challenges it presents. - What's needed to make mobile Python development practical, including build tools, GUI libraries, and binary package support. - The available options for running Python on Android, and how to choose which one is best for you.
Watch
Talks - Boaz Wiesner, Keren Meron: Supercharging Pipeline Efficiency with ML Performance Prediction
To process our customers' data, Singular's pipeline runs hundreds of thousands of daily tasks, each with a different processing time and resource requirements. We deal with this scale by using Celery and Kubernetes as our tasks infrastructure, letting us allocate dedicated workers and queues to each type of task based on its requirements. Originally, this was configured manually. As our customer base grew, we noticed that heavier and longer tasks were grabbing all the resources and causing unacceptable queues in our pipeline. Moreover, some of the heavier tasks required significantly more memory, leading to OOM kills and infrastructure issues. If we could classify tasks by their expected duration and memory requirements, we could have segregated tasks in Celery based on these properties and thus minimized interruptions to the rest of the pipeline. However, the variance in the size and granularity of the fetched data made it impossible to classify if a task was about to take one minute or one hour. Our challenge was: how do we categorize these tasks, accurately and automatically? To solve the issue we implemented a machine-learning model that could predict the expected duration and memory usage of a given task. Using Celery’s advanced task routing capabilities, we could then dynamically configure different task queues based on the model's prediction. This raised another challenge - how could we use the classified queues in the best way? Configuring workers statically for each queue would be inadequate at scale. We utilized Kubernetes’ vertical and horizontal autoscaling capabilities to dynamically allocate workers for each classified queue based on its length. This improved our ability to respond to pipeline load automatically, increasing performance and availability. Additionally, we were able to deploy shorter-lived workers on AWS Spot instances, giving us higher performance while lowering cloud costs.
Watch
Talks - Laszlo Kiss Kollar: The wheelhouse of horrors
You might be surprised to learn that, besides naming and cache invalidation problems, building a binary wheel for a Python extension is one of the hardest problems in computer science. Or more precisely, building that binary wheel correctly. Lucky for us, a few amazing community-led projects hide all that complexity from us, so we can instead focus on shipping and using Python code. One of Python's strong suits is its ability to use native C and C++ code, which is a big reason why it’s the number one language for date science and machine learning applications. However, distributing native code in Python libraries is far from trivial: subtle issues in the build process can result in runtime issues that are extremely difficult to track down. This talk will showcase some notable examples of how things can go wrong, while also helping users and maintainers recognise these typical error scenarios. We will learn how to avoid these issues and what users can do when they encounter such issues when using a library. The audience will learn about the manylinux standard and its role in standardizing Linux platform wheels. We will also take a look at the cibuildwheel project, which offers library authors a simple solution to automate the building and distribution of manylinux wheels.
Watch
Charlas - Alison Orellana Rios: OCR, Reconocimiento y obtención de información a través de imágenes
Se verá el área de reconocimiento de patrones y texto en imágenes diversas, el procesamiento que requiere capturar, decodificar y analizar para finalmente obtener texto a partir de imágenes o archivos digitales. A partir de estas premisas, se verá el uso de la librería OpenCV y su complementación con Tesseract, (en conjunto con Python) ya que ambas permiten obtener datos visuales con facilidad, para posteriormente generar información textual que es de gran utilidad para funciones complejas dentro de la industria automotriz, conducción autónoma, registro de actividades, señalización y sensores, robótica entre otros muchos campos de aplicación. La recuperación de texto a partir de imágenes es un pilar fundamental para la ejecución de múltiples categorías de tratamiento de datos, lo cual demuestra su gran importancia como factor base para una gran variedad de aplicaciones. El uso de librerías de Python permite contrastar la facilidad y manejo de información gráfica, su complementación permitirá entender un poco mejor las ramas de aplicación que posee el estudio de las imágenes y la visión artificial.
Watch
Talks - Al Sweigart: An Overview of the Python Code Tool Landscape 2023
Linters, type checkers, style formatters, package linters, security analysis, dead code removers, docstring formatters, code complexity analyzers: There is a wealth of static code analysis tools in the Python ecosystem. It's intimidating to start looking at them and easy to get lost. What's the difference between Pyflakes, flake8, and autoflake? Or between autopep8 and pep8-naming? This overview explains the different kinds of static code analysis tools, what tools are out there (as of 2023), and how beginners can get started using these tools to write code like pros. This talk also provides a beginner's introduction to type hints in Python and the type checker tools available. There are too many tools to describe in detail, but this talk does introduce the promising newcomer Ruff, an extremely fast Python linter written in Rust.
Watch
Charlas - Judite Cypreste: Cómo Python puede ayudar a monitorear gobiernos
Con el riesgo inminente de la caída de las democracias y los constantes ataques a los medios de comunicación, el acceso a la información se ha vuelto cada vez más difícil. Como resultado, la sociedad civil y los periodistas han estado buscando formas de garantizar que la sociedad no se quede en la oscuridad y que el monitoreo del gobierno continúe. Con la popularización de Python en varias áreas profesionales, el lenguaje se volvió cada vez más presente en la lucha por un gobierno más abierto en Brasil, ya sea en la construcción de herramientas de monitoreo o en el análisis de datos de una agencia gubernamental. Las iniciativas provenientes de entidades gubernamentales también están ayudando a hacer posible la transparencia. En esta charla, veremos ejemplos del uso de Python para monitorear al gobierno brasileño y cómo el lenguaje fue fundamental para que la sociedad brasileña no permaneciera en la oscuridad de la desinformación.
Watch
Talks - Samuel Colvin: How Pydantic V2 leverages Rust's Superpowers
Pydantic is a data validation library for Python that has seen massive adoption over the last few years - it is estimated that Pydantic is now used by about 10% of professional web developers! Over the last year I've been working full time to rebuild Pydantic from the ground up, using Rust for virtually all the validation and serialization logic. Pydantic V2, with these changes included, has recently been released. In this talk I will give a brief introduction to Pydantic and the new features in Pydantic V2 before diving into how the use of Rust has allowed us to completely change the architecture of Pydantic to make it easier to extend and maintain while also improving performance significantly. The majority of the talk will be devoted to using examples from the pydantic V2 code base to demonstrate the advantages (and disadvantages) of writing libraries like Pydantic in Rust. I'll cover the real life trade-offs and design decisions you might face while implementing logic in Rust rather than Python. This talk should be interesting to any Python developer who's interested in combining Python and Rust - no knowledge of Rust or Pydantic is required. However if you'd like to get some context or learn more about the topics discussed, here are some useful resources: Pydantic V2 Plan - blog post about the plan for Pydantic V2 pydantic-core - the python package that provides Rust logic in pydantic PyO3 docs - the amazing library that allows Rust to be embedded in Python Build your Python Extensions with Rust! by Paul Ganssle - good intro to building Python extensions in Rust
Watch
Talks - Dawn Wages: Supercharge your Python Development Environment with VS Code + Dev Container
Supercharge your Python Development Environment with VS Code + Dev Container by Dawn Wages
Watch
Talks - Jonas Neubert: MQTT: A Pythonic introduction to the protocol for connected devices
MQTT is to connected devices what HTTP is to web applications. It is a publish-subscribe protocol specifically designed for devices with limited bandwidth and CPU. MQTT is widely used in home automation, industrial automation, remote monitoring, and everywhere else where machines talk to each other or to a server. This talk is an introduction to MQTT for Pythonistas. I’ll start with a brief overview of basic concepts of the protocol. The rest of the presentation will be a sequence of code examples in CPython and Micropython/CircuitPython, building up to a demo with several devices publishing data to each other. Along the way, you will see a few of the most common tools for debugging MQTT communications. After attending this talk you will have a high level idea of Python use cases in automation, seen some examples of coding Python for microcontrollers, and know a whole lot more about four letters that look like an acronym but aren’t actually one. No prior experience with automation or microcontrollers is assumed.
Watch