

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

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

Mar 12, 2021 • 1h 3min
Navigating Options for Deploying Your Python Application
What goes into the decision of how to host your Python code or application in the cloud? Which technology stack is the right size for your project? This week on the show, we have Calvin Hendryx-Parker. Calvin talks about cloud hosting options, infrastructure choices, and deployment tools.
Calvin is the co-founder and CTO of Six Feet Up, and co-organizer of the Python Web Conference. We talk about finding the right tools for clients. He also discusses the Python platform they created for hosting a virtual conference.
We also discuss hosting personal portfolio projects. That conversation leads to the question, what types of skills you can showcase through creating a hosted project.
Course Spotlight: Creating PyQt Layouts for GUI Applications
In this step-by-step course, you’ll learn how to use PyQt layouts to arrange and manage the graphical components on your GUI applications. With the help of PyQt’s layout managers, you’ll be able to create polished and professional GUIs with minimal effort.
Topics:
00:00:00 – Introduction
00:01:46 – What considerations to start with for deployment?
00:04:02 – What is Saltstack?
00:06:00 – The changing cloud hosting landscape
00:10:12 – Containers, Docker, and other standards
00:11:28 – How do you learn about this technology?
00:15:58 – Concerns of setting up development vs production environments
00:17:41 – Security concerns
00:19:20 – Sponsor: Scout APM
00:20:26 – Deploying a Python portfolio project
00:23:12 – Deploying for a small business project or API
00:29:11 – Cloud formation, Terraform, additional tools
00:30:22 – Deploying a large project
00:35:12 – Frontend frameworks for large web projects
00:39:30 – Video Course Spotlight
00:40:43 – What does your consultancy do?
00:41:37 – What things do you look for in an employee?
00:50:42 – Python Web Conference 2021
00:57:43 – What are you excited about in the world of Python?
00:59:09 – What do you want to learn next?
01:00:49 – What is something you thought you knew about Python, but were wrong about it?
01:02:23 – Thanks and goodbye
Show Links:
Six Feet Up
Python Web Conference 2021
LoudSwarm: Virtual Conference Hosting Platform
Salt Project: Open Source Automation Engine
The 12 Factor App
Heroku
Ansible: Agentless IT Automation
AWS Free Tier
AWS Lambda: Run code without thinking about servers
Terraform: open-source infrastructure as code software tool
AWS Fargate: Serverless compute for containers
Docker: Get Started
Snyk: Developer-first Cloud Native Application Security
Dependabot: Automated Dependency Updates
Continuous Integration With Python: An Introduction - Real Python Article
Chris Anderson via Twitter: This is the open source flight code that the NASA Mars drone is running
Plone: The Ultimate Enterprise CMS
Code With Me: Ultimate collaborative development by JetBrains
AWS DeepLens
Fluent Python: Luciano Ramalho
Level up your Python skills with our expert-led courses:
Continuous Integration With Python
Using Google Login With Flask
Creating PyQt Layouts for GUI Applications
Support the podcast & join our community of Pythonistas

Mar 5, 2021 • 54min
Consuming APIs With Python and Building Microservices With gRPC
Have you wanted to get your Python code to consume data from web-based APIs? Maybe you’ve dabbled with the requests package, but you don’t know what steps to take next. This week on the show, David Amos is back, and he’s brought another batch of PyCoder’s Weekly articles and projects.
We discuss an article titled, “Python’s APIs: A Winning Combo for Reading Public Data”. David shares another Real Python article about creating microservices using Google Remote Procedure Calls (gRPC).
We also cover several other articles and projects from the Python community including, making a difficult data analysis question easy with pandas, efficiently cleaning text with pandas, the tricky bits of Python concurrency, building rich terminal dashboards, making better assertions for Python tests, and building and managing real-life data science projects with metaflow.
Course Spotlight: Making HTTP Requests With Python
The “requests” library is the de facto standard for making HTTP requests in Python. It abstracts the complexities of making requests behind a beautiful, simple API so that you can focus on interacting with services and consuming data in your application. This course shows you how to work effectively with “requests”, from start to finish.
Topics:
00:00:00 – Introduction
00:01:46 – Python Microservices With gRPC
00:07:49 – Python’s APIs: A Winning Combo for Reading Public Data
00:15:07 – Making a Difficult Data Analysis Question Easy With Pandas
00:21:07 – Efficiently Cleaning Text With Pandas
00:34:20 – Video Course Spotlight
00:35:27 – Python Concurrency: The Tricky Bits
00:41:49 – Building Rich Terminal Dashboards
00:45:08 – python-precisely: Better Assertions for Python Tests
00:48:45 – metaflow: Build and Manage Real-Life Data Science Projects With Ease
00:52:35 – Thanks and goodbye
Show Links:
Python Microservices With gRPC – Learn how to build a robust and developer-friendly Python microservices infrastructure using gRPC and Kubernetes. You’ll also explore advanced topics such as interceptors and integration testing.
Python’s APIs: A Winning Combo for Reading Public Data – Learn what APIs are and how to consume them using Python. You’ll also learn some core concepts for working with APIs, such as status codes, HTTP methods, using the requests library, and much more.
Making a Difficult Data Analysis Question Easy With Pandas – A great strategy to use when faced with a tricky data analysis problem is to reshape the dataset into a format that turns it into an easy problem. In this article, you’ll look at an example involving a simple calculation and extensive reshaping in pandas.
Efficiently Cleaning Text With Pandas – In this article, you’ll see some examples of cleaning text fields in a large data file and learn several strategies for efficiently cleaning unstructured text fields using Python and pandas.
Python Concurrency: The Tricky Bits – An exploration of threads, processes, and coroutines in Python, with interesting examples that illuminate the differences between each.
Building Rich Terminal Dashboards – Learn how to use the Rich CLI library’s new terminal dashboard feature.
Projects:
python-precisely: Better Assertions for Python Tests
metaflow: Build and Manage Real-Life Data Science Projects With Ease
Additional Links:
API design: Understanding gRPC, OpenAPI and REST and when to use them
Data Cleaning IS Analysis, Not Grunt Work
How to Lie with Statistics: Wikipedia Article
Level up your Python skills with our expert-led courses:
Building HTTP APIs With Django REST Framework
Web Scraping With Beautiful Soup and Python
Making HTTP Requests With Python
Support the podcast & join our community of Pythonistas

Feb 26, 2021 • 52min
The Challenges of Developing Into a Python Professional
What’s the difference between writing code for yourself and developing for others? What new considerations do you need to take into account as a professional Python developer? This week on the show, we talk to Dane Hillard about his book “Practices of the Python Pro”.
Dane discusses his philosophy on the design principles that go into writing code. We talk about namespaces, object-oriented design, and how to keep your code extensible. We also consider the how and when of code optimization.
Course Spotlight: Dictionaries and Arrays: Selecting the Ideal Data Structure
In this course, you’ll learn about two of Python’s data structures: dictionaries and arrays. You’ll look at multiple types and classes for both of these and learn which implementations are best for your specific use cases.
Topics:
00:00:00 – Introduction
00:01:29 – Release and response to Practices of the Python Pro
00:03:12 – What was the writing process like?
00:06:09 – What makes someone a professional?
00:12:30 – How have you and the tools changed in Python testing?
00:14:10 – When did you start to see the change in your career?
00:15:42 – Sponsor: PyCharm
00:16:27 – What topic were you excited to share in the book?
00:17:49 – The importance of code design and ergonomics
00:20:52 – Why is managing and designing namespaces important?
00:26:32 – Expanding that design thought process to object-oriented programming
00:30:02 – Differences of functional vs object-oriented programming
00:34:40 – Video Course Spotlight
00:36:04 – What do you mean by extensible?
00:42:59 – How and when to optimize code?
00:45:57 – Sharing developer philosophy
00:46:52 – What are you excited about in the world of Python?
00:48:31 – What do you want to learn next?
00:51:03 – Thanks and goodbye
Show Links:
Practices of the Python Pro
Dane’s Website
Effective Python Testing With Pytest: Real Python Article
pytest: helps you write better programs
An Effective Python Environment: Making Yourself at Home - Real Python Article
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Django: The web framework for perfectionists with deadlines
Django: GitHub
Graphene-Django: Provides Abstractions to Add GraphQL Functionality to Your Django Project
Level up your Python skills with our expert-led courses:
Getting Started With Django: Building a Portfolio App
Test-Driven Development With pytest
Dictionaries and Arrays: Selecting the Ideal Data Structure
Support the podcast & join our community of Pythonistas

Feb 19, 2021 • 1h 1min
Stochastic Gradient Descent and Deploying Your Python Scripts on the Web
Do you know the initial steps to get your Python script hosted on the web? You may have built something with Flask, but how would you stand it up so that you can share it with others? This week on the show, we have the previous guest Martin Breuss back on the show. Martin shares his recent article titled, “Python Web Applications: Deploy Your Script as a Flask App”. David Amos also returns, and he’s brought another batch of PyCoder’s Weekly articles and projects.
David shares a recent mathematical Real Python article about the stochastic gradient descent algorithm with Python. Stochastic gradient descent is an optimization algorithm often used in machine learning applications to find ideal model parameters.
We also cover several other articles and projects from the Python community including, property-based testing with hypothesis, Python’s tug of war between beginner-friendly features and support for advanced users, how Python integers work, the steering council accepts PEP 634, a magical full-stack framework for Django named django-unicorn, and a visual programming environment called Math Inspector.
Course Spotlight: Simulating Real-World Processes in Python With SimPy
In this step-by-step course, you’ll see how you can use the SimPy package to model real-world processes with a high potential for congestion. You’ll create an algorithm to approximate a complex system, and then you’ll design and run a simulation of that system in Python.
Topics:
00:00:00 – Introduction
00:02:44 – Property-Based Testing With hypothesis, and Associated Use Cases
00:09:55 – Python’s Tug of War Between Beginner-Friendly Features and Support for Advanced Users
00:18:50 – Sponsor: Scout APM
00:19:54 – How Python Integers Work
00:26:53 – Python Steering Council Accepts PEP 634
00:32:48 – Stochastic Gradient Descent Algorithm With Python and NumPy
00:38:36 – Video Course Spotlight
00:39:39 – Martin Breuss - Followup about Stay at Home Mentorship Program
00:42:13 – Python Web Applications: Deploy Your Script as a Flask App
00:52:25 – django-unicorn: A Magical Full-Stack Framework for Django
00:55:15 – Math Inspector: A Visual Programming Environment for Scientific Computing With NumPy and SciPy
01:00:21 – Thanks and goodbye
Show Links:
Property-Based Testing With hypothesis, and Associated Use Cases – Testing software is hard. Property-based testing can help you create more effective tests. Learn how to do property-based testing with the hypothesis framework by looking at some real-world use cases.
Python’s Tug of War Between Beginner-Friendly Features and Support for Advanced Users – Python has made some big improvements to tracebacks in recent versions. See how tracebacks have evolved over the last couple of major releases and where there’s still some work left to be done. Check out the discussion on Hacker News.
How Python Integers Work – Python’s integer datatype is pretty different from most other languages because they allow arbitrary precision. Learn how integers work under the hood in this in-depth article.
Python Steering Council Accepts PEP 634 – Pattern matching, which adds a kind of switch-case statement to Python, has been accepted.
Stochastic Gradient Descent Algorithm With Python and NumPy – Learn what the stochastic gradient descent algorithm is, how it works, and how to implement it with Python and NumPy.
Python Web Applications: Deploy Your Script as a Flask App – In this tutorial, you’ll learn how to go from a local Python script to a fully deployed Flask web application that you can share with the world.
Projects:
django-unicorn: A Magical Full-Stack Framework for Django
Math Inspector: A Visual Programming Environment for Scientific Computing With NumPy and SciPy
Additional Links:
Episode 47: Unraveling Python’s Syntax to Its Core With Brett Cannon
Friendly tracebacks - Simplified Python tracebacks translatable into any language.
PythonBytes - Episode #220
Warnings About Dangerous Syntax: Cool New Features in Python 3.8 - Real Python Article
PEP 636 – Structural Pattern Matching: Tutorial
Django-Unicorn Articles
python-utils: The online playground for Python utilities -Powered by Unicorn
Level up your Python skills with our expert-led courses:
Simulating Real-World Processes in Python With SimPy
Using Google Login With Flask
Cool New Features in Python 3.8
Support the podcast & join our community of Pythonistas


