

The Real Python Podcast
Real Python
A weekly Python podcast hosted by Christopher Bailey with interviews, coding tips, and conversation with guests from the Python community.
The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what's new in the world of Python programming and become a more effective Pythonista.
The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what's new in the world of Python programming and become a more effective Pythonista.
Episodes
Mentioned books

Jun 23, 2023 • 1h 14min
Resources and Advice for Building CircuitPython Projects
Are you looking to advance your CircuitPython projects? Would you like a collection of resources and tools to help you along your path? This week on the show, Tod Kurt is here to discuss building projects with CircuitPython.
Tod has been working with embedded electronics for a long time and has been an active member of the Arduino community. He recently started to build projects using CircuitPython, and it has become his preferred prototype method.
He shares software resources, hardware tools, and advice about working with CircuitPython and embedded electronics. We discuss several of his music hardware projects and the libraries and modules that he uses for synthesis. He also shares a powerful online prototyping tool to plan your project before spending money or plugging in a soldering iron.
Course Spotlight: Python Basics: Reading and Writing Files
In this video course, you’ll learn how to move data back and forth between your Python programs and external software by reading and writing files. You’ll practice reading and writing data stored in the CSV file format, one of the most widely supported file formats for transferring tabular data.
Topics:
00:00:00 – Introduction
00:02:17 – Tod’s background and ThingM
00:06:37 – The Bootloader Podcast
00:09:58 – Why did you move from C to Python?
00:13:47 – Starting new projects with CircuitPython instead of Arduino
00:17:14 – Advantages of the Arduino language
00:21:07 – Modules that extend CircuitPython with C
00:25:23 – Synthesis and sample playback in CircuitPython
00:32:54 – Video Course Spotlight
00:34:13 – ulab for NumPy-like functionality in CircuitPython
00:39:20 – Raspberry Pi Pico as inexpensive project board
00:46:08 – STEMMA QT and breadboards
00:48:40 – Powering projects with a USB power bank
00:51:25 – Software tools - tio, circup, and discotool
00:56:55 – CircuitPython tricks GitHub repo
00:59:44 – Wokwi simulator for CircuitPython and Raspberry Pi Pico
01:01:25 – PCB board design resources
01:03:27 – todbot projects on Tindie
01:06:11 – Hardware tools for projects
01:08:21 – What are you excited about in the world of Python?
01:09:42 – What do you want to learn next?
01:11:30 – How can people follow your work online?
01:12:50 – Thanks and goodbye
Show Links:
todbot blog – Random experiments, circuits, and code by Tod Kurt.
todbot - YouTube
ThingM
The Bootloader Podcast
The CircuitPython Show Podcast
CircuitPython
Arduino - Home
Extending CircuitPython: An Introduction - Adafruit Learning System
Adafruit Feather RP2040 with DVI - HDMI Output
Episode #75: Building With CircuitPython & Constraints of Python for Microcontrollers
displayio – Native helpers for driving displays - CircuitPython
Mozzi
synthio: Support for multi-channel audio synthesis - Adafruit
ulab: Crunch Numbers fast in CircuitPython - Adafruit Learning System
Raspberry Pi Pico RP2040 - Adafruit
What is STEMMA? - Adafruit STEMMA & STEMMA QT
USB Power bank - Current Favorite - Amazon
tio: A simple serial device I/O tool - GitHub
circup: CircuitPython library updater - GitHub
discotool: USB Arduino type boards discovery library and tool - GitHub
circuitpython-tricks: Some CircuitPython tricks, mostly reminders to myself - GitHub
Wokwi Simulator - CircuitPython on Raspberry Pi Pico Project
EAGLE - PCB Design And Electrical Schematic Software - Autodesk
KiCad EDA - Schematic Capture & PCB Design Software
Introducing KiCanvas - Stargirl (Thea) Flowers
PicoTouch - Capsense MIDI keyboard - Tindie
PicoStepSeq PCB from todbot synth toys - Tindie
USB Voltage and Current Tester - Amazon
USB Hub with Individual Power Switches - Amazon
CPython Internals Book – Real Python
ThinkDSP: Free Book on Digital Signal Processing in Python
todbot blog – Random experiments, circuits, and code by Tod Kurt.
Tod Kurt (todbot) (@todbot@mastodon.social) - Mastodon
Adafruit Discord - @todbot
Level up your Python skills with our expert-led courses:
Python Basics: Reading and Writing Files
Getting Started With MicroPython
Python Basics: File System Operations
Support the podcast & join our community of Pythonistas

Jun 16, 2023 • 49min
Inheriting a Large Python Code Base & Building a GUI With Kivy
What are the unique challenges of a large Python code base? What techniques can you implement to simplify the management of a big project? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We discuss a recent thread on Hacker News about working with a large Python code base. Christopher advises configuring tests and using tools to keep your code consistent across an organization. He also answers several questions about code complexity, typing, and leveraging third-party libraries.
We cover several other articles and projects from the Python community, including news from the Python Language Summit, Kivy for GUI development, the power of bit manipulation, the removal of unused import statements in your code, and a Python-based iOS project for adding reminders about links from a podcast.
Course Spotlight: Build Cross-Platform GUI Apps With Kivy
In this video course, you’ll learn how to build a cross-platform mobile application with Python and the Kivy GUI framework. You’ll discover how to develop an application that can run on your desktop as well as your phone. Then, you’ll package your app for Windows, Linux, and macOS.
Topics:
00:00:00 – Introduction
00:01:43 – Python 3.13 Removes 20 Stdlib Modules
00:03:20 – Making the Global Interpreter Lock Optional
00:04:52 – What Is the Standard Library For?
00:06:14 – Python’s .__call__() Method: Creating Callable Instances
00:11:40 – The Power of Bit Manipulation
00:15:39 – Using Kivy for GUI Development
00:21:18 – Video Course Spotlight
00:22:43 – How Do You Deal With Large Python Code Bases?
00:40:50 – unimport: Remove Unused Import Statements in Your Code
00:42:36 – Update: rsync-time-machine.py
00:43:20 – memocast: Add links heard in podcasts into iOS reminders
00:47:42 – A request to listeners
00:48:20 – Thanks and goodbye
Show Links:
Python 3.13 Removes 20 Stdlib Modules – Core developers are busy working on PEP 594, removing dead batteries from Python 3.13. This long post in the discussion forum highlights what work has been completed so far.
Making the Global Interpreter Lock Optional – In the past, Sam Gross has outlined how to make the GIL optional in CPython. He presented at the Python Language Summit, providing updates on his progress and future plans for the project.
PEP 703 – Making the Global Interpreter Lock Optional in CPython | peps.python.org
PEP 703 - Discussion on Python.org
What Is the Standard Library For? – This post summarizes a conversation at the Python Language Summit proposing that guidelines be defined for when something should be added to the standard library.
Python’s .__call__() Method: Creating Callable Instances – In this tutorial, you’ll learn what a callable is in Python and how to create callable instances using the .__call__() special method in your custom classes. You’ll also code several examples of practical use cases for callable instances in Python.
The Power of Bit Manipulation – In this article, you learn about bit manipulation and how to solve problems efficiently using it in Python.
Using Kivy for GUI Development – Kivy is an open-source Python library for developing desktop and mobile GUI apps. It’s supported on Windows, Linux, macOS, Android, and iOS. This article introduces you to Kivy and teaches you how to build your first GUI with it.
Discussion:
How Do You Deal With Large Python Code Bases?
Projects:
unimport: Remove Unused Import Statements in Your Code
memocast: 🎧 A small iOS app for e.g. iPhone that allow you to add links heard in podcasts into reminders
Additional Links:
Binary, Bytes, and Bitwise Operators in Python – Real Python
Build a Mobile Application With the Kivy Python Framework – Real Python
Open Source ERP and CRM | Odoo
Moodle - Open-source learning platform | Moodle.org
rsync-time-machine.py: Time Machine-style backups using rsync
Pythonista for iOS
Level up your Python skills with our expert-led courses:
Python Basics: Object-Oriented Programming
Simplify Python GUI Development With PySimpleGUI
Build Cross-Platform GUI Apps With Kivy
Support the podcast & join our community of Pythonistas

Jun 9, 2023 • 1h 1min
Volunteering, Organizing, and Finding a Python Community
Have you thought about getting more involved in the Python community? Are you interested in volunteering for an event or becoming an organizer? This week on the show, we speak with organizers from this year’s PyCascades conference about making connections, learning new skills, and rationing your time.
We have three guests to discuss working on PyCascades 2023 and how they got involved in volunteering. Conference Chair Ben Berry, a site reliability engineer based in Seattle, is currently working on a private platform-as-a-service. Diversity Chair Madison Swain-Bowden is a senior data engineer out of Seattle, currently working at Automattic on the Openverse team. Sponsorship Chair Michael van der Kamp is a back-end engineer at Coffee Meets Bagel.
We discuss finding other volunteers, maintaining motivation, and connecting with sponsors. Our guests also share their stories of overcoming challenges, connecting with community, and finding fulfillment through volunteering.
This week’s episode is brought to you by Proxify.
Course Spotlight: Using pandas to Make a Gradebook in Python
With this course and Python project, you’ll build a script to calculate grades for a class using pandas. The script will quickly and accurately calculate grades from a variety of data sources. You’ll see examples of loading, merging, and saving data with pandas, as well as plotting some summary statistics.
Topics:
00:00:00 – Introduction
00:02:34 – Conference Chair Ben Berry
00:03:58 – Diversity Chair Madison Swain-Bowden
00:06:04 – Sponsorship Chair Michael van der Kamp
00:08:28 – Scheduling of conferences around one another
00:10:41 – How did you get involved in the community?
00:20:01 – Sponsor: Proxify
00:20:57 – Workplace groups and guilds
00:27:41 – How community helps with job referrals
00:32:19 – New position and added responsibilities
00:41:24 – How would you pitch volunteering?
00:44:32 – Video Course Spotlight
00:45:45 – How do you avoid overdoing it?
00:52:46 – What are you excited about in the world of Python?
00:55:16 – What do you want to learn next?
00:59:22 – Thanks and goodbye
Show Links:
The Team - PyCascades 2023
PyCascades 2023 - YouTube
PyLadies – Women Who Love Coding in Python
Puget Sound Programming Python (PuPPy) (Seattle, WA) - Meetup
PySprings (Colorado Springs, CO) - Meetup
What is Lean Coffee? - an introduction to agenda-less meetings
Async IO in Python: A Complete Walkthrough – Real Python
Structural Pattern Matching – Real Python
Using FastAPI to Build Python Web APIs – Real Python
Rust Programming Language
Rust for Rustaceans - No Starch Press
CircuitPython
Michael van der Kamp - LinkedIn
Madison on Tumblr
Ben Berry (@benb@fosstodon.org)
Level up your Python skills with our expert-led courses:
Using pandas to Make a Gradebook in Python
The pandas DataFrame: Working With Data Efficiently
Building Python Project Documentation With MkDocs
Support the podcast & join our community of Pythonistas

Jun 2, 2023 • 53min
Building Python CI With Docker & Applying for a Hacker Initiative Grant
Do you need a refresher on using Docker with Python? Would you like to learn how to configure a continuous integration pipeline with modern tools and Docker? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We share a Real Python tutorial from Bartosz Zaczyński about building continuous integration with Docker. Docker provides consistent environments for configuring, testing, and delivering Python applications. In this tutorial, you’ll get up to speed with current Docker and CI techniques.
We also speak with Bill Pollock from No Starch Press about Hacker Initiative. The public nonprofit gives back to and strengthens the hacking community. The 2023 grant cycle is currently open until August 15. We discuss the application process and projects from previous grant recipients.
We cover several other articles and projects from the Python community, including a news update and some resources on implementing metaclasses in Python, creating time machine-style backups, and scanning your project for vulnerabilities.
Course Spotlight: Metaclasses in Python
Metaclasses are an important but mysterious behind-the-scenes mechanism for instantiating classes in Python. In this video course, you’ll learn how Python’s metaclasses work in object-oriented programming.
Topics:
00:00:00 – Introduction
00:02:26 – PyPI Temporarily Suspended New Registrations
00:03:38 – PyPI was subpoenaed
00:04:54 – Python 3.12.0 beta 1 released
00:05:19 – Build Robust Continuous Integration With Docker and Friends
00:13:02 – Metaclasses in Python
00:20:03 – Pronouncing SQL - Is there life after SQL?
00:22:52 – Video Course Spotlight
00:24:25 – pyscan: Python dependency vulnerability scanner, written in Rust
00:26:28 – rsync-time-machine.py: Time Machine-Style Backups
00:29:20 – Bill Pollock and Hacker Initiative
00:34:18 – Previous grant recipients
00:36:58 – First Tech Challenge
00:43:18 – Large vs small nonprofits
00:45:48 – Applying for the 2023 grant cycle
00:49:01 – Underserved areas
00:51:45 – Thanks and goodbye
News:
PyPI Temporarily Suspended New Registrations – Due to a large volume of traffic from malicious users, PyPI temporarily suspended new account and project registrations on May 20. The suspension was lifted thirty hours later on May 21.
PyPI was subpoenaed - The Python Package Index – The PSF received three subpoenas from the US Department of Justice for PyPI user data in March and April of 2023.
Python Insider: Python 3.12.0 beta 1 released
Show Links:
Build Robust Continuous Integration With Docker and Friends – In this tutorial, you’ll use Docker and GitHub Actions to build a robust continuous integration pipeline for a multi-container web application consisting of Flask and Redis. Along the way, you’ll learn how to dockerize a Python web application.
Metaclasses in Python - Real Python Video Course – Metaclasses are an important but mysterious behind-the-scenes mechanism for instantiating classes in Python. In this video course, you’ll learn how Python’s metaclasses work in object-oriented programming.
Is there life after SQL? - YouTube
Projects:
pyscan: Python dependency vulnerability scanner, written in Rust - GitHub
rsync-time-machine.py: Time Machine-Style Backups
Hacker Initiative Links:
Hacker Initiative – By hackers. For hackers.
Apply for the 2023 Grant Cycle – Hacker Initiative
2022 Grant Recipients – Hacker Initiative
Additional Links:
Release CPython 3.12.0b1 w/ WASI SDK 20 - brettcannon/cpython-wasi-build
Episode #149: Coding With namedtuple & Python’s Dynamic Superpowers
What is FIRST Tech Challenge? - FIRST
No Starch Press - “The finest in geek entertainment”
Level up your Python skills with our expert-led courses:
Continuous Integration With Python
Metaclasses in Python
Writing Clean, Pythonic Code With namedtuple
Support the podcast & join our community of Pythonistas

May 26, 2023 • 55min
Discussing Mojo & Improving Python Object-Oriented Programming
Would you like to speed up your Python machine-learning code dramatically? What if you only had to change a few keywords and add a couple of type hints on portions of your code? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We discuss a new programming language named Mojo, which is a superset of Python. It aims to fix Python’s performance and deployment problems. The project has many interesting ideas and a leader who has helped to shape modern compiler technology.
We also share a pair of Real Python tutorials from Leodanis Pozo Ramos about object-oriented programming in Python. The first one is a deep dive into the creation of classes. It’s an excellent refresher for anyone looking to hone their OOP skills in Python.
The second tutorial covers the SOLID principles, which are five well-established standards for improving your object-oriented design. These principles guide you to create object-oriented code that is more maintainable, extensible, scalable, and testable.
We cover several other articles and projects from the Python community, including a news update, showing warnings when running Django, tracking the progress of your Python program, and a Markdown browser for your terminal.
This week’s episode is brought to you by Koyeb.
Course Spotlight: Using k-Nearest Neighbors (kNN) in Python
In this video course, you’ll learn all about the k-nearest neighbors (kNN) algorithm in Python, including how to implement kNN from scratch. Once you understand how kNN works, you’ll use scikit-learn to facilitate your coding process.
Topics:
00:00:00 – Introduction
00:02:39 – PEP 713: Callable Modules
00:04:22 – PEP 712: “Converter” Parameter for dataclasses.field
00:06:49 – Python Classes: The Power of Object-Oriented Programming
00:16:44 – Sponsor: Koyeb
00:17:33 – SOLID Principles: Improve Object-Oriented Design in Python
00:22:00 – Mojo, a Superset of Python
00:34:31 – Mojo might be the biggest thing to happen in programming for decades
00:41:48 – Mojo – a new programming language for AI developers
00:44:03 – Video Course Spotlight
00:45:23 – Have Python Show Warnings When Running Django
00:47:52 – TQDM: Tracking the Progress of Your Python Program
00:50:34 – frogmouth: A Markdown Browser for Your Terminal
00:53:59 – Thanks and goodbye
News:
PEP 713: Callable Modules
PEP 712: “Converter” Parameter for dataclasses.field
Show Links:
Python Classes: The Power of Object-Oriented Programming – In this tutorial, you’ll learn how to create and use full-featured classes in your Python code. Classes provide a great way to solve complex programming problems by approaching them through models that represent real-world objects.
SOLID Principles: Improve Object-Oriented Design in Python – In this tutorial, you’ll learn about the SOLID principles, which are five well-established standards for improving your object-oriented design in Python. By applying these principles, you can create object-oriented code that is more maintainable, extensible, scalable, and testable.
Mojo, a Superset of Python – Mojo is a new programming language, which is a superset of Python. It aims to fix Python’s performance and deployment problems.
Have Python Show Warnings When Running Django – How to show warnings when running Python, and Django, during local development. The easy, yet not well-known, way.
Discussion:
Mojo might be the biggest thing to happen in programming for decades - Hacker News
Mojo, a new programming language for AI developers - Hacker News
Projects:
TQDM: Tracking the Progress of Your Python Program
frogmouth: A Markdown Browser for Your Terminal
Additional Links:
Video - tqdm documentation
tqdm documentation
pipx
Episode #101: Tools for Setting Up Python on a New Machine – The Real Python Podcast
Level up your Python skills with our expert-led courses:
Using Jupyter Notebooks
Using k-Nearest Neighbors (kNN) in Python
Using Multiple Constructors in Your Python Classes
Support the podcast & join our community of Pythonistas

May 12, 2023 • 1h 9min
Virtual Environment Structure & Surveying the Packaging Ecosystem
How do Python virtual environments work under the hood? How does understanding these concepts help you with managing them for your projects? This week on the show, CPython core developer Brett Cannon returns to discuss his recent articles about virtual environments and the Python packaging landscape.
Brett talks about his recent article “How Virtual Environments Work.” He was researching the topic to solve an issue with a Linux Python distribution that doesn’t provide the tools to create virtual environments. We talk about how he solved the problem by creating a tiny library named microvenv.
We also take a look at the Python packaging ecosystem. Brett talks about the early days of Python, when these tools didn’t exist. He contrasts that with the current packaging solution explosion and how each one attempts to solve unique problems. We also discuss the Python Packaging User Survey and the plans for packaging summits at PyCon US. Note that we recorded this episode two weeks before PyCon US 2023.
Course Spotlight: Getting the Most Out of the Python Standard REPL
In this video course, you’ll learn how to use the Python standard REPL (Read-Eval-Print Loop) to run your code interactively. This tool will allow you to test new ideas, explore and experiment with new tools and libraries, refactor and debug your code, try out examples, and more.
Topics:
00:00:00 – Introduction
00:01:58 – Virtual environments
00:07:10 – PEP 704 & virtual environment workflows
00:26:57 – Experimenting with not including pip
00:34:44 – Video Course Spotlight
00:36:35 – What are you using for packaging?
00:43:32 – Python Packaging User Survey & the history of packaging
00:48:40 – Packing only gets complex when it’s not pure Python code
01:01:22 – Outcomes after the survey and the packaging summit
01:03:56 – What are you excited about in the world of Python?
01:05:28 – What’s something you want to learn next?
01:07:12 – How can people follow the work that you do?
01:08:14 – Thanks and goodbye
Show Links:
How virtual environments work
PEP 704 – Require virtual environments by default for package installers - peps.python.org
microvenv - PyPI
python-launcher: Python launcher for Unix - GitHub
bootstrap.pypa.io
Classifying Python virtual environment workflows
Python Packaging User Survey - Results PDF
Thoughts on the Python packaging ecosystem - Pradyun Gedam
pypa/packaging: Core utilities for Python packages - GitHub
Flit 3.8.0 - Flit 3.8.0 documentation
hatch - PyPI
hatchling - PyPI
Episode #93: Launching Python, Virtual Environments, and Locking Dependencies With Brett Cannon – The Real Python Podcast
PEP 665 – A file format to list Python dependencies for reproducibility of an application - peps.python.org
Programming Rust, 2nd Edition
Tall, Snarky Canadian - Brett’s Blog
Microsoft Python Blog
Visual Studio Code Blog
Brett Cannon (@brettcannon@fosstodon.org) - Mastodon
Level up your Python skills with our expert-led courses:
Getting the Most Out of the Python Standard REPL
Working With Python Virtual Environments
Publishing Python Packages to PyPI
Support the podcast & join our community of Pythonistas

May 5, 2023 • 38min
Checking Project Dependencies & Python Dev Resource Collections
How can you ensure that you’ve appropriately declared your project’s required dependencies? How do you determine what dependencies are missing from a third-party project that you can’t run? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We discuss a new Python dependency checker called FawltyDeps. The tool helps you determine if you’ve declared too few or too many packages for your project.
Christopher has brought several developer resource collections: a list of assured open-source Python packages from Google, test databases with interesting datasets, and multiple Django third-party packages.
We cover several other articles and projects from the Python community, including a news update, advice on how to pitch yourself as a guest to a podcast, how to submit articles and projects to PyCoders Weekly, PyPI’s introduction of trusted publishers and organizations, a tool for tracking package history, a pixel art paint program written in Python, and a project for efficient string matching with regular expressions.
Course Spotlight: Publishing Python Packages to PyPI
In this video course, you’ll learn how to create a Python package for your project and how to publish it to PyPI, the Python Package Index. Quickly get up to speed on everything from naming your package to configuring it using setup.cfg.
Topics:
00:00:00 – Introduction
00:02:19 – PEP 684 – A Per-Interpreter GIL Accepted
00:03:59 – Python 3.10 Runtime Now Available in AWS Lambda
00:04:19 – PyCon US 2023 Follow Up
00:08:05 – Podcast Topic & Guest Submissions
00:13:45 – Submissions to PyCoders Weekly
00:16:49 – Google’s Assured OSS Python Packages
00:18:27 – Groovy Datasets for Test Databases
00:19:10 – Top 10 Django Third-Party Packages
00:20:27 – Video Course Spotlight
00:21:46 – FawltyDeps - A Dependency Checker for Your Python
00:26:58 – PyPI Introduces “Trusted Publishers”
00:28:27 – Introducing PyPI Organizations
00:29:02 – pypi-diff: PyPI Package History Tracking
00:30:29 – PyDPainter: A usable pixel art paint program written in Python
00:35:19 – trrex: Efficient String Matching With Regular Expressions
00:37:16 – Thanks and Goodbye
News:
PEP 684 – A Per-Interpreter GIL Accepted
Python 3.10 Runtime Now Available in AWS Lambda
Show Links:
PyCon US 2023 - Follow Up
The Real Python Podcast (podcast@realpython.com)
PyCoder’s Weekly - Submit a Link
Google’s Assured OSS Python Packages – Google publishes a list of the open-source packages that it uses and secures within its own software supply chain. The list is public, so you can take advantage of their assessment.
Groovy Datasets for Test Databases – When you experiment with a new-to-you data science skill, you need some sort of data to work with. Why be boring? This article talks about several available datasets that you can use when you practice your coding skills.
Top 10 Django Third-Party Packages – Will covers a list of his favorite third-party packages for Django. This includes old favorites, like Django REST framework, and lesser-known packages, like django-filter and django-environ.
FawltyDeps: A Dependency Checker for Your Python – FawltyDeps is a new tool to help you identify undeclared and unused dependencies in your Python code, making your projects leaner and more reproducible.
PyPI Introduces “Trusted Publishers” – PyPI package maintainers can adopt a new, more secure, OIDC-authenticated publishing method that doesn’t require sharing long-lived passwords or API tokens with external systems.
Introducing PyPI Organizations - The Python Package Index
pypi-diff: PyPI Package History Tracking
Projects
PyDPainter: A usable pixel art paint program written in Python - GitHub
trrex: Efficient String Matching With Regular Expressions
Additional Links:
Data Is Plural
FawltyDeps
Quick PyDPainter Demo - YouTube
Having a look at PyDPainter and comparing it to Deluxe Paint on the Amiga - YouTube
Level up your Python skills with our expert-led courses:
Everyday Project Packaging With pyproject.toml
Publishing Python Packages to PyPI
Documenting Python Projects With Sphinx and Read the Docs
Support the podcast & join our community of Pythonistas

Apr 28, 2023 • 1h 19min
Targeting WebAssembly Platforms & Distilling a Minimum Viable Python
Are you familiar with the different versions of WebAssembly? Could WASM be the “write once, run everywhere” solution that developers have searched for? Where does distributing Python applications fit in the narrative? This week on the show, we have CPython core developer Brett Cannon to discuss his recent articles about WebAssembly and MVPy.
Brett has completed his syntactic sugar series, which we discussed in a previous episode. He details the origin of the series and his process of unearthing a minimum viable version of Python. Brett shares how he updated his PyCon US talk on the subject after feedback from presenting it at PyCascades.
We also dig deep into WebAssembly, specifically WebAssembly System Interface (WASI). Brett explains the concept of a “platform target triple” and the importance of defining which system CPython is compiled for. We also discuss WebAssembly becoming a ubiquitous distribution system.
Course Spotlight: Python Basics: Building Systems With Classes
In this video course, you’ll learn how to work with classes to build complex systems in Python. By composing classes, inheriting from other classes, and overriding class behavior, you’ll harness the power of object-oriented programming (OOP).
Topics:
00:00:00 – Introduction
00:02:05 – PyCascades 2023
00:02:56 – Using social media for polls and checking interest
00:06:02 – Completing the syntactic sugar blog series
00:15:29 – Minimum Viable Python (MVPy) and WebAssembly
00:19:29 – Other teams focusing on WebAssembly
00:21:31 – Sponsor: Courier
00:22:13 – Stack of technology
00:26:50 – WebAssembly and its platform targets
00:32:35 – WASI and connecting to a runtime
00:38:33 – Extension modules and dynamic libraries
00:47:29 – Overcoming road blocks and envisioning a new WASI assignment
00:51:51 – Video Course Spotlight
00:53:26 – PEP 11 & CPython platform support for WASI
01:03:11 – Machine-specific runtime
01:04:57 – Write once, run everywhere
01:13:14 – Talks and summits planned for PyCon 2023
01:18:00 – Thanks and goodbye
Show Links:
MVPy: Minimum Viable Python
Python’s Syntactic Sugar - PyCon US 2023
Episode #47: Unraveling Python’s Syntax to Its Core With Brett Cannon – The Real Python Podcast
syntactic sugar - Tall, Snarky Canadian
Brett Cannon (@brettcannon@fosstodon.org) - Fosstodon
WASI - wasi.dev
WebAssembly and its platform targets
Introducing the Disney+ Application Development Kit (ADK) - Mike Hanley
Compute@Edge services using WebAssembly - Fastly Developer Hub
Experimental - Python for the Web - Visual Studio Marketplace
PEP 11 – CPython platform support - peps.python.org
Testing a Python project using the WASI build of CPython with pytest
The rise of WebAssembly - InfoWorld
Can WASM become the new Docker?
bytecodealliance/wasmtime: A fast and secure runtime for WebAssembly
Emscripten - Dev Documentation
PyScript - Run Python in your HTML
Level up your Python skills with our expert-led courses:
Python Basics: Object-Oriented Programming
Inheritance and Composition: A Python OOP Guide
Python Basics: Building Systems With Classes
Support the podcast & join our community of Pythonistas

Apr 14, 2023 • 43min
Seeking Faster Text Processing & Python's .__repr__() vs .__str__()
What can you do if your text manipulation in Python is slowing you down? Are there faster alternatives using a compiled extension? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
Christopher shares a recent article by Itamar Turner-Trauring called “Speeding Up Text Processing in Python (Is Hard).” The piece compares the performance of string-matching scenarios using several alternatives to pure Python that rely on compiled extensions.
We also discuss a recent Real Python tutorial by Stephen Gruppetta on when to use .__repr__() vs .__str__() in Python. We cover the use cases for these special methods and the intended audiences for the strings they produce.
We share several other articles and projects from the Python community, including a news update, an article on the functional power of Python’s reduce(), a call to ban 1+N in Django, a friendly project to fetch your data files, and a tool for tracking your work from the shell.
Course Spotlight: Unicode in Python: Working With Character Encodings
In this course, you’ll get a Python-centric introduction to character encodings and Unicode. Handling character encodings and numbering systems can at times seem painful and complicated, but this guide is here to help with easy-to-follow Python examples.
Topics:
00:00:00 – Introduction
00:02:11 – The Python Package Index Launches a Blog
00:03:11 – PEP 582 (Python Local Packages Directory) Rejected
00:05:00 – Django 4.2 Release Candidate 1 Released
00:05:34 – Want to Host DjangoCon Europe 2024?
00:06:23 – When Should You Use .__repr__() vs .__str__() in Python?
00:14:16 – Sponsor: Snyk
00:15:06 – Speeding Up Text Processing in Python (Is Hard)
00:22:21 – reduce() - The Power of a Single Python Function
00:30:27 – Video Course Spotlight
00:32:04 – Ban 1+N in Django
00:35:26 – Pooch - A Friend to Fetch Your Data Files
00:39:11 – workedon - Track Your Work From the Shell
00:41:53 – Thanks and Goodbye
News:
The Python Package Index Launches a Blog
PEP 582 (Python Local Packages Directory) Rejected
Django 4.2 Release Candidate 1 Released
Want to Host DjangoCon Europe 2024?
Show Links:
When Should You Use .__repr__() vs .__str__() in Python? – In this tutorial, you’ll learn the difference between the string representations returned by .__repr__() vs .__str__() and understand how to use them effectively in classes that you define.
Speeding Up Text Processing in Python (Is Hard) – If you need to speed up string parsing and formatting in Python, you have many choices. This article covers the uses of Cython, mypyc, Rust, and PyPy and considers how to choose between them.
reduce() - The Power of a Single Python Function – “While Python is not a pure functional programming language, you still can do a lot of functional programming in it. In fact, just one function - reduce() - can do most of it.” This article introduces you to reduce().
Ban 1+N in Django – The 1+N database anti-pattern is common: fetch some rows from the database then re-fetch specific rows to get all the items. An ORM can hide this away and make you fail to realize that it’s happening. This article discusses how to avoid this anti-pattern in Django. It also has an added meta-bonus: a link to the attempt to write the article with ChatGPT.
Projects:
Pooch: A Friend to Fetch Your Data Files
workedon: Track Your Work From the Shell
Additional Links:
Python’s reduce(): From Functional to Pythonic Style – Real Python
Episode #116: Exploring Functional Programming in Python With Bruce Eckel – The Real Python Podcast
Lightning talk at PyCascades 2023 - Pooch: A friend to fetch your data files - YouTube
Secure copy protocol - Wikipedia
Level up your Python skills with our expert-led courses:
Python's map() Function: Transforming Iterables
Python Basics: Strings and String Methods
Unicode in Python: Working With Character Encodings
Support the podcast & join our community of Pythonistas

Apr 7, 2023 • 50min
Automate Processes and Distribute Python Tools With RPA and RCC
Are you exploring automation of your repetitive business tasks with Python? How are you going to share your helpful tools with co-workers? This week on the show, Sampo Ahokas from Robocorp is here to discuss robotic process automation (RPA) and distribution of these robots.
Sampo is a co-founder and VP of engineering at Robocorp. We talk about using Robot Framework, an open-source RPA tool, to develop bots that implement your existing Python skills. Sampo shares example projects and additional resources for new users.
We discuss the typical difficulties of sharing automation tools with a team and trying to avoid the dreaded “works on my machine” problem. Sampo describes how their group worked to develop a Conda-based tool for creating shareable packages and environments.
Course Spotlight: Manipulating ZIP Files With Python
In this video course, you’ll learn how to manipulate ZIP files using Python’s zipfile module from the standard library. Through hands-on examples, you’ll learn how to read, write, compress, and extract files from your ZIP files quickly.
Topics:
00:00:00 – Introduction
00:02:25 – What is robotic process automation (RPA)?
00:03:55 – What do you mean by automation?
00:05:56 – Additional examples of RPA
00:07:41 – What is the RPA platform?
00:10:06 – What is the Robot Framework?
00:12:42 – Robocorp portal
00:14:09 – Python integration
00:17:06 – Sponsor: REVSYS
00:17:56 – Distribution with RCC
00:20:24 – Why does the system use conda under the hood?
00:24:12 – What hurdles did you face creating RCC?
00:27:51 – Steps for the end user
00:30:52 – Making the project open source
00:35:20 – Video Course Spotlight
00:36:42 – Tips for someone starting with automation
00:42:17 – Integration with VSCode
00:44:18 – Intelligent document processing (IDP)
00:45:36 – What are you excited about in the world of Python?
00:47:46 – What do you want to learn next?
00:48:13 – How can people follow the project online?
00:48:46 – Thanks and goodbye
Show Links:
Open Source RPA - Intelligent Automation Software - Robocorp
What is RPA? A breakdown of RPA and its benefits - Robocorp
Robocorp Portal
RPA Documentation, Training Courses, Certificates - Robocorp documentation
rpaframework: Collection of open-source libraries and tools for Robotic Process Automation (RPA), designed to be used with both Robot Framework and Python
rcc: RCC is a set of tooling that allows you to create, manage, and distribute Python-based self-contained automation packages - or ‘robots’ as we call them.
Conda - documentation
QuantStack
micromamba - documentation
Low-code RPA Development Solution | Automation Studio - Robocorp
Bolster IDP With Robotic Process Automation - DZone
Visual Studio Code - Code Editing. Redefined
Welcome to LangChain - 🦜🔗 LangChain 0.0.131
Sampo Ahokas - LinkedIn
Robocorp (@RobocorpInc) - Twitter
Community for Software Robot Developers
RPA Resources, White Papers and Case Studies - Robocorp
Level up your Python skills with our expert-led courses:
Reading and Writing Files in Python
Testing Your Code With pytest
Manipulating ZIP Files With Python
Support the podcast & join our community of Pythonistas