

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

May 21, 2021 • 59min
Scaling Data Science and Machine Learning Infrastructure Like Netflix
Would you move your data science project from a laptop to the cloud? Would you also like to have snapshots of your project saved along the way so that you can go back in time or share the state of your project with another team member? This week on the show, we have Savin Goyal from Netflix. Savin is the technical lead for machine learning infrastructure at Netflix. He joins us to talk about Metaflow, an open-source tool to simplify building, managing, and scaling data science projects.
Metaflow addresses the needs of the numerous data scientists who work at Netflix. Machine learning is key strength for the streaming service. They tried several existing tools to scale their own internal infrastructure and after this experimentation developed Metaflow.
We talk about the history of the project and how someone could get started with the open-source version. Savin also contrasts the cost of infrastructure as compared to data scientists and the cost of their time.
Course Spotlight: Simplify Python GUI Development With PySimpleGUI
In this step-by-step course, you’ll learn how to create a cross-platform graphical user interface (GUI) using Python and PySimpleGUI. A graphical user interface is an application that has buttons, windows, and lots of other elements that the user can use to interact with your application.
Topics:
00:00:00 – Introduction
00:01:53 – What is Metaflow?
00:04:15 – Savin’s background in data science and infrastructure
00:06:06 – Democratization of infrastructure and iteration of tools
00:10:34 – What information is saved about the infrastructure requirements for a project?
00:17:17 – How are the requirements annotated?
00:18:39 – Sponsor: Digital Ocean’s App Platform
00:19:15 – How do project snapshots work?
00:29:33 – Cost of infrastructure vs data scientists
00:32:28 – Working with data at Netflix scale
00:37:55 – Video Course Spotlight
00:39:06 – Getting an organization to use new tools and then making open-source
00:49:51 – Documentation of Metaflow and getting started on solving infrastructure problems
00:53:57 – What made you interested in working on infrastructure tools?
00:55:13 – What is something you are excited about in the world of Python?
00:56:18 – What do you want to learn next?
00:58:14 – Thanks and goodbye
Show Links:
Metaflow: A framework for real-life data science
Metaflow: Tutorials
More Data Science, Less Engineering with Netflix’s Metaflow By Savin Goyal - YouTube
R: The R Project for Statistical Computing
Tidyverse: R packages for data science
Anything you can do, I can do (kinda). Tidyverse pipes in Pandas
reticulate: R Interface to Python
Apache Airflow: Programmatically author, schedule and monitor workflows
Directed acyclic graph (DAG) - Wikipedia article
Serializing Objects With the Python pickle Module - Real Python Course
Level up your Python skills with our expert-led courses:
Learn Text Classification With Python and Keras
Using Jupyter Notebooks
Simplify Python GUI Development With PySimpleGUI
Support the podcast & join our community of Pythonistas

May 14, 2021 • 55min
Building a Platform Game With Arcade and Covering Python News Monthly
Did you know the Python Software Foundation is hiring! With the recent support of three Visionary Sponsors, the PSF has been able to open positions for a developer-in-residence and a Python packaging project manager. Real Python now has a monthly Python news article. Frequent guest of the show, David Amos compiles and summarizes the biggest Python news from the past month.
This week on the show, David Amos is back, and he’s brought another batch of PyCoder’s Weekly articles and projects. We discuss David’s news article from the last month. We also discuss previous guest Jon Fincher’s new step-by-step tutorial about creating a platform game with the arcade framework.
We cover several other articles and projects from the Python community including, how to use ipywidgets to make your Jupyter notebook interactive, the hidden performance overhead of Python C extensions, adding else to for loops, film simulations from scratch using Python, a gradual programming language named Hedy, and a Python raytracer.
Spotlight: CPython Internals: Your Guide to the Python 3 Interpreter
Unlock the Inner Workings of the Python Language, Compile the Python Interpreter From Source Code,
And Participate in the Development of CPython
Topics:
00:00:00 – Introduction
00:02:04 – How to Use ipywidgets to Make Your Jupyter Notebook Interactive
00:06:07 – Build a Platform Game in Python With arcade
00:12:35 – Sponsor: Digital Ocean’s App Platform
00:13:11 – The Hidden Performance Overhead of Python C Extensions
00:21:17 – For-Else: A Weird but Useful Feature in Python
00:25:42 – Python News: What’s New From April 2021?
00:39:43 – Spotlight: CPython Internals Now in Paperback!
00:41:15 – Film Simulations From Scratch Using Python
00:47:44 – hedy: Hedy Is a Gradual Programming Language, Which Increases in Syntactic Elements Level by Level
00:50:27 – Python-Raytracer: A Basic Ray Tracer That Exploits NumPy Arrays and Functions to Work Fast
00:53:31 – Thanks and goodbye
Show Links:
How to Use ipywidgets to Make Your Jupyter Notebook Interactive – Jupyter Notebooks are great for exploratory data analysis. They’re also a good way to share results and analysis with other people, who can alter the notebook to further explore the data themselves. But there are some limitations to notebook interactivity. That’s where ipywidgets comes in! In this tutorial you’ll learn how to create widgets like check boxes, drop-down menus, sliders, and how to handle events like button clicks.
Build a Platform Game in Python With arcade – Building games can be a fun way to learn new Python concepts and practice techniques you’ve already learned. Plus, they make for great projects to share! This step-by-step tutorial shows you how to build a platform game using the arcade library. You’ll learn techniques for designing levels, sourcing assets, and implementing advanced features
The Hidden Performance Overhead of Python C Extensions – It’s no secret that Python is slower than compiled languages like C, C++, and Rust. If you need a performance boost, you can write compiled Python C extensions. But there are some hidden performance costs that you should be aware of if you decide to do this. This article explains two ways that Python C extensions can actually be slower than pure Python and discusses some solutions and work around for them.
For-Else: A Weird but Useful Feature in Python – Python for loops have an unusual feature: they support an else block that only executes if there is no break in the loop. The pattern isn’t used very often with the argument against it being that it is a bit weird and potentially difficult to understand. But there may be times when for/else makes sense. This article presents three situations where for/else is useful and argues that, in these situations, the pattern makes the code more readable.
Python News: What’s New From April 2021? – April 2021 was an eventful month in the world of Python. In this article, you’ll get up to speed on everything that happened in the past month, including new sponsorships for the PSF, changes to Python error messages, and a community-led discussion over the future of type annotations.
Film Simulations From Scratch Using Python – In analog photography, you can achieve different “looks” for your photographs by selecting different kinds of film to shoot with. Digital camera manufacturers often include different presets to simulate different kinds of film. In this article, you’ll learn how to simulate different films on your own images using color lookup tables, or CLUTs, using NumPy and the Pillow image library.
Projects:
hedy: Hedy Is a Gradual Programming Language, Which Increases in Syntactic Elements Level by Level
Python-Raytracer: A Basic Ray Tracer That Exploits NumPy Arrays and Functions to Work Fast
Additional Links:
The Python Arcade Library
Arcade: A Primer on the Python Game Framework
Kenney: Free game assets, no strings attached
Tiled: Free and Open Source, Flexible Level Editor
Episode 24: Options for Packaging Your Python Application: Wheels, Docker, and More
Your Code Is Without a Doubt the Worst I Have Ever Run
Welcoming Google as a Visionary Sponsor of the PSF
Welcoming Microsoft as a Visionary Sponsor
Python Job Board: Project Manager - Python Packaging
PEP 563 – Postponed Evaluation of Annotations
Episode 45: Processing Images in Python With Pillow
RawTherapee: A free, cross-platform raw image processing program
Level up your Python skills with our expert-led courses:
Using Jupyter Notebooks
For Loops in Python (Definite Iteration)
Make a 2D Side-Scroller Game With PyGame
Support the podcast & join our community of Pythonistas

May 7, 2021 • 54min
Organizing and Restructuring DjangoCon Europe 2021
Are you interested in learning more about Django? Would you like to meet other professionals and learn how they are using Django? DjangoCon Europe 2021 is virtual this year, and you can join in from anywhere in the world. This week on the show, we have Miguel Magalhães and David Vaz, two of the organizers of the conference.
We discuss what makes DjangoCon Europe unique. David and Miguel talk about how they got involved and how the conference passes between different countries. They also cover the struggle of upending their plans for hosting the conference in Porto Portugal last year and how this year could use some extra support.
Tickets are available now. DjangoCon Europe is looking for additional sponsors. If you work for an organization that can help, get in contact with them.
Course Spotlight: Get Started With Django: Build a Portfolio App
In this course, you’ll learn the basics of creating powerful web applications with Django, a Python web framework. You’ll build a portfolio website to showcase your web development projects, complete with a fully functioning blog.
Topics:
00:00:00 – Introduction
00:01:43 – How did you get involved with DjangoCon Europe?
00:10:42 – European vs US conference differences
00:12:24 – What makes a DjangoCon unique?
00:13:27 – What are some examples of projects using Django?
00:15:02 – Sponsor: Digital Ocean’s App Platform
00:15:38 – What are types of talks will the conference have?
00:20:04 – Conference schedule during the week
00:24:40 – Who is the intended audience?
00:25:29 – Video Course Spotlight
00:26:43 – Sharing your project and lightning talks
00:28:56 – What tools are you using to facilitate a virtual event?
00:33:32 – Ticket grants and sponsors
00:38:55 – What is your background with and use of Django?
00:43:45 – What are you excited about in the world of Python?
00:46:05 – What do you want to learn next?
00:52:25 – Thanks and goodbye
Show Links:
DjangoCon Europe 2021
Sponsors: DjangoCon Europe 2021
DjangoCon Europe: Twitter Account
LoudSwarm: Virtual Event Hosting
Lightning ⚡ Talks - DjangoCon Europe 2021
Opportunity Grants: DjangoCon Europe 2021
pretalx: From Call for Papers to schedule – build your conference!
pretalx: GitHub
pretix: Event Ticketing Software
pretix: GitHub
Wagtail: The powerful CMS for modern websites
Gather Town: Better spaces to gather around
The Future of Web Software Is HTML-over-WebSockets: A List Apart
The WebSocket API (WebSockets)
WebAssembly (Wasm)
PyTorch: open source machine learning framework
Keras: the Python deep learning API
Learn Text Classification With Python and Keras: Real Python Course
Cozmo: Digital Dream Labs
CUDA: Parallel Computing Platform
Level up your Python skills with our expert-led courses:
Learn Text Classification With Python and Keras
Building HTTP APIs With Django REST Framework
Getting Started With Django: Building a Portfolio App
Support the podcast & join our community of Pythonistas

Apr 30, 2021 • 45min
Podcast Rewind With Guest Highlights for 2020-2021
This week’s show is a bit different. We are taking a well-deserved short break, but we still wanted to share an episode with you. This rewind episode highlights clips from the many interviews over the past year or so of the show.
We also hear from many new listeners who have just discovered the show. Welcome aboard! We wanted to provide a sample of guests, topics, and questions we feature on the show.
For long-time listeners, this will be a brisk walk through past episodes and guests. We’ve talked with many guests, and it was hard to narrow it down to the sample provided here. We hope you enjoy this podcast rewind, and look forward to sharing a fantastic slate of upcoming guests.
Course Spotlight: Plot With Pandas: Python Data Visualization Basics
In this course, you’ll get to know the basic plotting possibilities that Python provides in the popular data analysis library pandas. You’ll learn about the different kinds of plots that pandas offers, how to use them for data exploration, and which types of plots are best for certain use cases.
Topics:
00:00:00 – Introduction
00:01:28 – E03 Brett Slatkin: Is Python a good tool for infrastructure?
00:03:30 – E07 Łukasz Langa: Origins of Black
00:10:55 – E08 Tania Allard: Reproducibility of project results
00:13:06 – Sponsor: Digital Ocean
00:13:47 – E11 Anthony Shaw: DRY (Don’t Repeat Yourself)
00:16:38 – E16 Hannah Stepanek: Creating NumPy types
00:20:02 – E18 Armin Ronacher: What would you change if you started the Flask project from scratch?
00:23:20 – E22 Russell Keith-Magee: Funding open-source projects
00:26:27 – E26 Michael Kennedy: How is the GIL part of the problem?
00:29:18 – Video Course Spotlight
00:30:27 – E30 Christopher Trudeau - The PEG parser
00:33:00 – E39 Reuven Lerner: What makes generator functions different?
00:37:35 – E47 Brett Cannon: Unravelling Python’s syntatic sugar series
00:43:43 – Thanks and goodbye
Show Links:
Episode 3: Effective Python and Python at Google Scale - With Brett Slatkin
Episode 7: AsyncIO + Music, Origins of Black, and Managing Python Releases - With Łukasz Langa
Episode 8: Docker + Python for Data Science and Machine Learning - With Tania Allard
Episode 11: Advice on Getting Started With Testing in Python - With Anthony Shaw
Episode 16: Thinking in Pandas: Python Data Analysis the Right Way - With Hannah Stepanek
Episode 18: Ten Years of Flask: Conversation With Creator Armin Ronacher
Episode 22: Create Cross-Platform Python GUI Apps With BeeWare - With Russell Keith-Magee
Episode 26: 5 Years Podcasting Python with Michael Kennedy: Growth, GIL, Async, and More
Episode 30: Exploring the New Features of Python 3.9 - With Geir Arne Hjelle and Christopher Trudeau
Episode 39: Generators, Coroutines, and Learning Python Through Exercises - With Reuven Lerner
Episode 47: Unraveling Python’s Syntax to Its Core With Brett Cannon
Level up your Python skills with our expert-led courses:
Python Generators 101
Plot With pandas: Python Data Visualization Basics
Cool New Features in Python 3.9
Support the podcast & join our community of Pythonistas

Apr 23, 2021 • 1h 16min
Taking the Next Step in Python Game Development
Are you interested in creating video games but feel limited in what you can accomplish within Python? Is there a platform where you can take advantage of your Python skills and provide the benefits of a dedicated game engine? This week on the show, we have Paweł Fertyk. Paweł is a Real Python author and has been creating games as Miskatonic Studio for several years now.
Paweł has worked with PyGame. We recently featured his article on creating a clone of Asteroids in a previous episode. After working with PyGame for a while, he also tried a visual novel engine named Ren’Py, and Panda3D.
After struggling within these Python libraries, he started to look for an open-source game engine that could help him create the types of games he was striving to create. He found Godot and its Python-like scripting language of GDScript. We talk about his creations, the tools, and how game development is not exactly like most other types of development.
Course Spotlight: Make a 2D Side-Scroller Game With PyGame
In this step-by-step course, you’ll learn how to use PyGame. This library allows you to create games and rich multimedia programs in Python. You’ll learn how to draw items on your screen, implement collision detection, handle user input, and much more!
Topics:
00:00:00 – Introduction
00:01:55 – Writing for Real Python
00:02:58 – Asteroids PyGame Article
00:11:05 – Do you think programming games is a good way to learn programming?
00:13:46 – What game technologies did you try before PyGame?
00:18:35 – Trying out Ren’Py, Panda3D, and looking for an engine
00:27:16 – Sponsor: Digital Ocean
00:27:56 – What appealed to you about Godot?
00:33:42 – Working with a GUI editor
00:37:03 – GDScript, programming game logic, and similarities to Python
00:42:46 – Creating Molecules: Osmos clone
00:48:21 – Video Course Spotlight
00:49:33 – Creating Intrepid: 3D Escape Room
00:55:47 – Creating 3D assets and finding collaborators
00:58:18 – Exporting the finished game
01:01:24 – GOAT: Godot Open Adventure Template
01:08:27 – What are you excited about in the world of Python?
01:12:39 – What do you want to learn next?
01:14:57 – Thanks and goodbye
Show Links:
About Paweł Fertyk: Real Python Author
Build an Asteroids Game With Python and Pygame: Real Python Step by Step Project
Miskatonic Studio: Home Page
Miskatonic Studio: GitHub Page
Miskatonic Studio: YouTube Page
iOS Snake Game with UI Switches
How I Made a Snake Game Out of Checkboxes: JavaScript
Ren’Py: Visual Novel Engine
Panda3D: Open-Source, Free-To-Use Engine for Realtime 3D Games
Godot: Open-Source Game Engine
Molecules Game: GitHub page
Intrepid: Steam Store (Free)
Intrepid: GitHub
Blender: Open-Source 3D Creation
Miskatonic Studio: CGTrader 3D Models
cgtrader: The World’s Preferred Source for 3D Content
ArtStation: Showcase Your Portfolio
GOAT: Godot Open Adventure Template - GitHub
CircuitPython: Beginner friendly, open source version of Python for tiny, inexpensive computers called microcontrollers
Level up your Python skills with our expert-led courses:
Finding the Perfect Python Code Editor
Inheritance and Composition: A Python OOP Guide
Make a 2D Side-Scroller Game With PyGame
Support the podcast & join our community of Pythonistas

Apr 16, 2021 • 51min
OrderedDict vs dict and Object Oriented Programming in Python vs Java
David Amos, Python expert and contributor to PyCoder's Weekly articles and projects, discusses the differences between OrderedDict and dict in Python. He also explores object-oriented programming in Python vs Java. Other topics include Flask applications, building a tech search engine in Python, loading SQL data into pandas without memory issues, and the new version of CircuitPython and Mu.

Apr 9, 2021 • 58min
Getting Started With Refactoring Your Python Code
Brendan Maginnis and Nick Thapen from Sourcery discuss the importance of refactoring Python code. They provide advice on setting achievable code objectives, unit testing, and avoiding changes to code's meaning. Technical debt and code metrics are also explored. Automated refactoring and using Sourcery as a refactoring tool are discussed.

Apr 2, 2021 • 46min
Building a Neural Network and How to Write Tests in Python
The podcast discusses building a neural network from scratch using Python, writing unit tests in Python with a Fizz Buzz example, the importance of testing and using Scout APM for application performance monitoring, the ethics of web scraping for COVID-19 vaccine appointments, and the new features in the release of SQL Alchemy 1.4.0.

Mar 26, 2021 • 1h 10min
Improving the Learning Experience on Real Python
If you haven’t visited the website lately, then you’re missing out on the updates to realpython.com! The site features a completely refreshed layout with multiple sections to help you take advantage of even more great educational Python content. This week on the show, we have Dan Bader, the person behind Real Python, and all these architectural changes.
Among the features changed are a new bookmarking system, a section to keep track of what you’ve been learning lately, and a much more advanced way to search the site. A new tile system makes it easier to explore learning paths, quizzes, office hours, and other sections of the site.
Dan shares details about the website technology stack and why he started using Python for the core content management system. He also talks about the struggle of being the sole maintainer and feature architect.
Spotlight: Python Basics: A Practical Introduction to Python 3
Go from beginner to intermediate in Python with this complete curriculum, up-to-date for Python 3.9. Python Basics includes exercises, interactive quizzes, and sample projects, so you’ll always know what to focus on next in order to build a strong Python foundation. Paperback copies are available now.
Topics:
00:00:00 – Introduction
00:01:44 – Welcome to the show Dan!
00:03:12 – What updates are happening on the website?
00:04:40 – The “Continue Learning” section
00:16:02 – Updating how search works
00:21:41 – Sponsor: PyCharm
00:22:22 – Implementing bookmarking of articles
00:26:39 – A development team of one
00:28:16 – Surfacing features with explore
00:35:39 – How to take advantage of the new features?
00:39:26 – Spotlight: Python Basics in paper back available now!
00:41:12 – What did it take to implement progress system?
00:47:27 – Closed captions and transcripts complete across all courses
00:48:47 – Python Basics and CPython Internals books
00:53:38 – What are you excited about in the world of Python?
00:58:40 – What do you want to learn next?
01:02:21 – What is something you thought you knew about Real Python but were wrong about it?
01:06:00 – Request for reviews, feedback, and questions
01:09:06 – Thanks and goodbye
Show Links:
The New Homepage of Real Python (must be signed-in to see it – or you can view a screenshot here)
New Features Announcement Post: Article Bookmarks, Completion Status, and Search Improvements
Course: Welcome to Real Python!
About Dan Bader
Python Learning Paths
Python Quizzes
Office Hours
Real Python for Teams (Online Python training for businesses)
Python Basics: A Practical Introduction to Python 3
CPython Internals: Your Guide to the Python 3 Interpreter
Leave a voicemail for a chance to get it featured on the show!
Books by Basecamp
Level up your Python skills with our expert-led courses:
Django Admin Customization
Getting Started With Django: Building a Portfolio App
Records and Sets: Selecting the Ideal Data Structure
Support the podcast & join our community of Pythonistas

Mar 19, 2021 • 45min
Connecting to MongoDB and Updates on the Python Packaging Landscape
Have you heard about NoSQL databases, or wondered how to use one with Python? How does MongoDB store information and what packages can you use to connect this type of database to your Python project? This week on the show, David Amos is back, and he’s brought another batch of PyCoder’s Weekly articles and projects.
David talks about a recent Real Python video course about managing namespaces in Python. We also look at a few recent stories about the Python packaging ecosystem.
We cover several other articles and projects from the Python community including, generating customizable PDF reports with Python, how semantic versioning will not save you, PEP 621 is final, a user hits the Python community with 4,000 fake modules, making a synth with Python, and what is running on the Mars helicopter.
Course Spotlight: Navigating Namespaces and Scope in Python
In this course, you’ll learn about Python namespaces, the structures used to store and organize the symbolic names created during execution of a Python program. You’ll learn when namespaces are created, how they are implemented, and how they define variable scope.
Topics:
00:00:00 – Introduction
00:01:46 – Generate Customizable PDF Reports With Python
00:04:54 – Semantic Versioning Will Not Save You
00:14:55 – Sponsor: Digital Ocean
00:15:34 – PEP 621 Is Final
00:19:51 – Poison Packages: User Hits Python Community With 4000 Fake Modules
00:26:01 – Python and MongoDB: Connecting to NoSQL Databases
00:31:24 – Navigating Namespaces and Scope in Python
00:35:22 – Making a Synth With Python: Oscillators
00:39:19 – Video Course Spotlight
00:40:23 – Python Is Running on the Mars Helicopter
00:44:14 – Thanks and goodbye
Show Links:
Generate Customizable PDF Reports With Python – Learn how to generate custom PDF reports using reportlab and pdfrw with a PyQt GUI.
Semantic Versioning Will Not Save You – Semantic versioning aims to both communicate the version of software as well as promise that certain versions won’t break anything. Sounds great, right? In a lot of cases it is, but a blind reliance on semantic versioning can come back to haunt you.
PEP 621 Is Final – In the near future, you’ll be able to store project metadata in pyproject.toml.
Brett Cannon
Poison Packages: User Hits Python Community With 4000 Fake Modules – Recently, a PyPI user going by the name “Remind Supply Chain Risks” uploaded nearly 4,000 fake modules to the index, many of which were named as common misspellings of popular packages. Learn about the incident in this article, and read all the way to the end for four tips every Python developer should follow.
Python and MongoDB: Connecting to NoSQL Databases – Learn how to use Python to interface with the NoSQL database system MongoDB. You’ll get an overview of the differences between SQL and NoSQL, and you’ll also learn about related tools, including PyMongo and MongoEngine.
Navigating Namespaces and Scope in Python – Learn about Python namespaces, the structures used to store and organize the symbolic names created during the execution of a Python program. You’ll learn when namespaces are created, how they are implemented, and how they define variable scope.
Projects:
Making a Synth With Python: Oscillators – Learn how to create oscillators using Python as a foundation for creating your own software synthesizers. This article is one of a three-part series. The other articles cover modulators and controllers.
Python Is Running on the Mars Helicopter
How the First Helicopter on Mars Uses Off-the-Shelf Hardware and Linux
Additional Links:
GUI Programming With PyQt - Real Python Learning Path
Episode 20: Building PDFs in Python with ReportLab
Python cryptography, Rust, and Gentoo: LWN.net
Every Change Breaks Someone’s Workflow: XKCD Comic
What the heck is pyproject.toml? – Brett Cannon’s Blog
TOML – Tom’s Obvious Minimal Language
PEP 518 – Specifying Minimum Build System Requirements for Python Projects
Python MongoDB Tutorial using Docker: CoderVlogger Medium Post
Korg DS-8: Vintage Synth Explorer
Level up your Python skills with our expert-led courses:
Navigating Namespaces and Scope in Python
How to Work With a PDF in Python
How to Publish Your Own Python Package to PyPI
Support the podcast & join our community of Pythonistas