Skip to content
Artwork for The Real Python Podcast

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.

Play
  • 25 episodes
  • weekly
  • Avg 57 min
  • English
Counted on this page — what you have heard stays on this device, so it is not something the list can be paged by.
  • #291
    April 17 · 1 hr 15 min

    Reassessing the LLM Landscape & Summoning Ghosts

    What are the current techniques being employed to improve the performance of LLM-based systems? How is the industry shifting from post-training towards context engineering and multi-agent orchestration? This week on the show, Jodie Burchell, data scientist and Python Advocacy Team Lead at JetBrains, returns to discuss the current AI coding landscape. In our last conversation, Jodie covered how LLMs were approaching the limits of scaling laws. This time, we recap last year’s big focus on reasoning models and a post-training method called “reinforcement learning from verifiable rewards” (RLVR). We also cover test-time compute, where models spend more time reasoning through steps and considering multiple approaches to solve a problem. We touch on Agent Context Protocol (ACP), agent orchestration layers, and context engineering. We also share some concerns about the hype cycle, maintaining all that code being generated, and running local models. Course Spotlight: Vector Databases and Embeddings With ChromaDB Learn how to use ChromaDB, an open-source vector database, to store embeddings and give context to large language models in Python. Topics: 00:00:00 – Introduction 00:02:02 – Build a Language-Learning Agent course 00:02:55 – Update on the past six months of LLMs 00:05:32 – Reinforcement Learning From Verifiable Rewards 00:07:32 – Test Time Compute 00:08:36 – 2025 and the rise of agents 00:14:24 – Benchmarks shifting 00:15:23 – Andrew Karpathy and jagged intelligence 00:19:16 – Not evolving or growing animals but summoning ghosts 00:23:34 – Diminishing gains in newer models 00:24:23 – Context Engineering 00:35:01 – Multi-agent systems and diversity of models 00:36:56 – Video Course Spotlight 00:38:34 – Current generation of coding agents 00:44:00 – Fast vs deep reasoning 00:45:18 – Agent Context Protocol 00:50:19 – Working through the hype cycle 00:55:43 – Open-source contribution pollution 00:57:21 – Local models 00:58:36 – Rick Beato comparing how the music industry failed 01:08:41 – LLMs are an amazing development 01:11:33 – Keynote talk on AI summers and winters 01:12:45 – PyCon US and EuroPython 01:14:11 – Thanks and goodbye Show Links: AI Agent Course - Build a Language‑Learning Agent with OpenAI, LangGraph, Ollama & MCP - YouTube Episode #264: Large Language Models on the Edge of the Scaling Laws Reinforcement Learning with Verifiable Rewards Implicitly Incentivizes Correct Reasoning in Base LLMs Reinforcement learning with verifiable rewards (RLVR) What is test-time compute and how to scale it? Overfitting - Wikipedia 2025 LLM Year in Review - karpathy Animals vs Ghosts - karpathy Agent Context Protocols Enhance Collective Inference Open source AI we use to work on Wagtail - Wagtail CMS LLMs for Devs: Model Selection, Hallucinations, Agents, AGI – Jodie Burchell - The Marco Show Keynote - Can you trust your (large language) model? - Standard error The Human-in-the-Loop is Tired How AI Will Fail Like The Music Industry - YouTube “Yes, AI Is a Bubble. There Is No Question.” - The Ringer Keynote: AI is having its moment … again - Jodie Burchell - NDC Copenhagen 2025 PyCon US 2026 EuroPython 2026 - July 13th-19th 2026 - Kraków, Poland Jodie Burchell (@t-redactyl.bsky.social) — Bluesky Standard error Level up your Python skills with our expert-led courses: Getting Started With Claude Code Getting Started With Google Gemini CLI Vector Databases and Embeddings With ChromaDB Support the podcast & join our community of Pythonistas

  • #290
    April 10 · 54 min

    Advice on Managing Projects & Making Python Classes Friendly

    What goes into managing a major project? What techniques can you employ for a project that’s in crisis? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss an article by Ben Kuhn titled, “How I’ve Run Major Projects.” We dig into the skills required for project management, and provide advice for when projects fall into crisis. We cover how the field’s terminology has been updated. However, the time investment, sober communication, and planning still remain at the core of successful projects. We also share other articles and projects from the Python community, including recent releases and announcements, exploring an IDE for data science development, using Python set comprehensions, making friendly classes, using atexit for cleanup, a high-performance caching library for Python written in Rust, and a curated list of awesome marimo things. This episode is sponsored by PropelAuth. Video Course Spotlight: Using Data Classes in Python When using data classes, you don’t have to write boilerplate code to get proper initialization, representation, and comparisons for your objects. Topics: 00:00:00 – Introduction 00:02:15 – Starlette 1.0 Released 00:03:08 – PyOhio 2026 Call for Proposals Now Open! 00:03:42 – Spyder: Your IDE for Data Science Development in Python 00:11:04 – Python Set Comprehensions: How and When to Use Them 00:14:40 – Sponsor: PropelAuth 00:15:17 – Making Friendly Classes 00:23:51 – How to Use atexit for Cleanup 00:25:49 – Video Course Spotlight 00:27:14 – How I’ve run major projects 00:47:47 – awesome-marimo: Curated List of Awesome Marimo Things 00:51:37 – moka-py: A high performance caching library for Python written in Rust 00:53:24 – Thanks and goodbye News: Starlette 1.0 Released PyOhio 2026 Call for Proposals Now Open! Show Links: Spyder: Your IDE for Data Science Development in Python – Learn how to use the Spyder IDE, a Python code editor built for scientists, engineers, and data analysts working with data-heavy workflows. Python Set Comprehensions: How and When to Use Them – In this tutorial, you’ll learn how to write set comprehensions in Python. You’ll also explore the most common use cases for set comprehensions and learn about some bad practices that you should avoid when using them in your code. Making Friendly Classes – What’s a friendly class? One that accepts sensible arguments, has a nice string representation, and supports equality checks. Read on to learn how to write them. How to Use atexit for Cleanup – Divakar recently came across Python’s atexit module and became curious about practical use cases in real-world applications. To explore it, he created a simple client-server app that uses a clean-up function. Discussion: How I’ve run major projects: benkuhn.net Projects: awesome-marimo: Curated List of Awesome Marimo Things moka-py: A high performance caching library for Python written in Rust Additional Links: Positron Data Classes in Python (Guide) – Real Python Episode #230: marimo: Reactive Notebooks and Deployable Web Apps in Python Getting Started With marimo Notebooks – Real Python Investigating Quasar Data With Polars and Interactive marimo Notebooks Level up your Python skills with our expert-led courses: Using Data Classes in Python Getting Started With marimo Notebooks Investigating Quasar Data With Polars and Interactive marimo Notebooks Support the podcast & join our community of Pythonistas

  • #289
    March 27 · 51 min

    Limitations in Human and Automated Code Review

    With the mountains of Python code that it’s possible to generate now, how’s your code review going? What are the limitations of human review, and where does machine review excel? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss a recent piece from Glyph titled, “What Is Code Review For?” We dig into the limitations of human review and where software tools like linters and formatters can help you. We cover the challenges developers and open-source maintainers face with the rise of LLM-generated code and pull requests. We also share other articles and projects from the Python community, including a collection of recent releases and announcements, creating publication-ready tables from DataFrames, choosing the right Python task queue, mastering context managers, statically checking Python dicts for completeness, an open-source inventory management system, and an ORM-based backend for Django tasks. This episode is sponsored by SerpApi. Spotlight: Intermediate Python Deep Dive: Write Better Python and Build Better Systems Master advanced patterns, OOP, and Pythonic design in eight weeks–with live expert guidance. Topics: 00:00:00 – Introduction 00:02:32 – DuckDB 1.5.0 Released 00:03:11 – PyPy v7.3.21 Released 00:03:30 – Sunsetting Jazzband 00:04:08 – Thoughts on OpenAI acquiring Astral and uv/ruff/ty 00:05:19 – Great Tables: Publication-Ready Tables From DataFrames 00:10:24 – Comparing PDF Table Extraction Tools 00:11:53 – Sponsor: SerpApi 00:12:55 – Choosing the Right Python Task Queue 00:16:57 – Mastering Python Context Managers 00:22:40 – Statically Checking Python Dicts for Completeness 00:25:00 – Spotlight: Intermediate Python Deep Dive 00:26:16 – What Is Code Review For? 00:43:48 – usdatasets: Installable Collection of Datasets on USA 00:45:22 – InvenTree: OSS Inventory Management System 00:48:01 – django-tasks-db: An ORM-based Backend for Django Tasks 00:49:41 – Thanks and goodbye News: DuckDB 1.5.0 Released PyPy v7.3.21 Released Sunsetting Jazzband Thoughts on OpenAI acquiring Astral and uv/ruff/ty OpenAI Acquiring Astral: A 4th Option for Fun - Will Vincent Show Links: Great Tables: Publication-Ready Tables From DataFrames – Learn how to create publication-ready tables from Pandas and Polars DataFrames using Great Tables. Format currencies, add sparklines, apply conditional styling, and export to PNG. Comparing PDF Table Extraction Tools – This article explores three Python tools for PDF table extraction: Docling, Marker, and LlamaParse. Learn which handles merged cells and multi-level headers best. Choosing the Right Python Task Queue – Python has great options for task queues. Choosing between Celery and RQ isn’t an easy decision. Jump in and learn how each option compares! Mastering Python Context Managers – Go beyond just using open() and learn how Python context managers work and where they are useful. Statically Checking Python Dicts for Completeness – To keep code concerns separate, you might have two data structures (like an Enum and a dict) that are supposed to change in sequence: adding a value to the Enum requires you to add a similar value in the dict. This is common when separating business logic from UI code. This article shows you ways of making sure the corresponding changes happen together. Discussion: What Is Code Review For? – This post explores just what you should and should not use code reviews for. Learn when to use linters to catch problems vs when human review is important. Your job is to deliver code you have proven to work Projects: usdatasets: Installable Collection of Datasets on USA InvenTree: OSS Inventory Management System django-tasks-db: An ORM-based Backend for Django Tasks Additional Links: Episode #214: Build Captivating Display Tables in Python With Great Tables Great Blogposts – great_tables Python’s with Statement: Manage External Resources Safely – Real Python Context Managers and Using Python’s with Statement – Real Python Episode #183: Exploring Code Reviews in Python and Automating the Process Episode #246: Learning Intermediate Python With a Deep Dive Course Level up your Python skills with our expert-led courses: Context Managers and Using Python's with Statement Creating Asynchronous Tasks With Celery and Django Modern Python Linting With Ruff Support the podcast & join our community of Pythonistas

  • #288
    March 20 · 56 min

    Automate Exploratory Data Analysis & Invent Python Comprehensions

    How do you quickly get an understanding of what’s inside a new set of data? How can you share an exploratory data analysis with your team? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss a recent Real Python tutorial about YData Profiling. This library lets you quickly generate an exploratory data analysis (EDA) report with a few lines of code. The report provides column-level analysis, visualizations, and summary statistics that can be exported to HTML to share with others. We cover an article by Trey Hunner about building your own Python comprehensions. Python includes list, dictionary, and set comprehensions. But what if you want to create ones for other collections, such as a tuple, frozenset, or a Counter? We also share other articles and projects from the Python community, including a collection of recent releases and PEPs, using the Django ORM as a standalone module, a history of attempts to eliminate programmers, a discussion of bad managers, a modern Python project template, and a CLI to summarize code size by language. This episode is sponsored by AgentField. Course Spotlight: Understanding Python List Comprehensions Python list comprehensions make it easy to create lists while performing sophisticated filtering, mapping, and conditional logic on their members. In this course, you’ll learn when to use list comprehensions in Python and how to create them effectively. Topics: 00:00:00 – Introduction 00:02:46 – Python 3.12.13, 3.11.15, 3.10.20 and Python 3.15.0 alpha 7 Released 00:03:25 – Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29 00:03:39 – PEP 825: Wheel Variants: Package Format 00:04:20 – PEP 827: Type Manipulation 00:05:11 – Automate Python Data Analysis With YData Profiling 00:11:31 – Django ORM Standalone: Querying an Existing Database 00:16:43 – Sponsor: AgentField 00:17:42 – Invent Your Own Comprehensions in Python 00:22:34 – A History of Attempts to Eliminate Programmers 00:28:51 – Video Course Spotlight 00:30:03 – Three Bad Managers 00:50:42 – python_template: Modern Python Project Template 00:53:38 – tallyman: CLI to Summarize Code Size by Language 00:55:06 – Thanks and goodbye News: Python 3.12.13, 3.11.15 and 3.10.20 Released Python 3.15.0 alpha 7 - Python Insider Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29 PEP 825: Wheel Variants: Package Format (Added) PEP 827: Type Manipulation (Added) Show Links: Automate Python Data Analysis With YData Profiling – Automate exploratory data analysis by transforming DataFrames into interactive reports with one command from YData Profiling. Django ORM Standalone: Querying an Existing Database – A practical step-by-step guide to using Django ORM in standalone mode to connect to and query an existing database using inspectdb. Invent Your Own Comprehensions in Python – Python doesn’t have tuple, frozenset, or Counter comprehensions, but you can invent your own by passing a generator expression to any iterable-accepting callable. A History of Attempts to Eliminate Programmers – From COBOL in the 1960s to AI in the 2020s, every generation promises to eliminate programmers. Explore the recurring cycles of software simplification hype. Discussion: Three Bad Managers – Rands in Repose Projects: python_template: Modern Python Project Template tallyman: CLI to Summarize Code Size by Language Additional Links: When to Use a List Comprehension in Python – Real Python Understanding Python List Comprehensions – Real Python A Modern Python Stack for Data Projects copier Cookiecutter Level up your Python skills with our expert-led courses: Understanding Python List Comprehensions How to Set Up a Django Project The pandas DataFrame: Working With Data Efficiently Support the podcast & join our community of Pythonistas

  • #287
    March 13 · 1 hr 21 min

    Crafting and Editing In-Depth Tutorials at Real Python

    What goes into creating the tutorials you read at Real Python? What are the steps in the editorial process, and who are the people behind the scenes? This week on the show, Real Python team members Martin Breuss, Brenda Weleschuk, and Philipp Acsany join us to discuss topic curation, review stages, and quality assurance. We start by sharing the multiple roles our panel of guests perform across the editorial process. They describe the phases a tutorial passes through, including layers of reviews, from technical accuracy to educational effectiveness. We also discuss our editorial independence, external authors, and the continuous feedback loop with our readers. This episode is sponsored by AgentField. Spotlight: Claude Code Course: Stop Copy-Pasting From ChatGPT Most Python developers use AI as fancy autocomplete. This 2-day course teaches you to build entire projects with an AI agent inside your codebase. Topics: 00:00:00 – Introduction 00:03:33 – Martin’s role at Real Python 00:04:35 – Philipp’s role at Real Python 00:05:27 – Brenda’s role at Real Python 00:06:49 – Internal core team and external contributors 00:13:46 – Selecting topics and subjects 00:21:43 – Outlining and review 00:28:26 – Sponsor: AgentField 00:29:27 – Writing drafts 00:34:03 – Changes to our style and format 00:37:32 – Technical review and using Git 00:43:53 – Didactic review 00:52:59 – Language edit 00:57:16 – Spotlight: Claude Code Live Course 00:59:00 – Final QA 01:01:00 – Scheduling 01:03:36 – Reader feedback and updating existing tutorials 01:06:04 – Using modern tools 01:13:59 – Shining the light on contributors 01:16:26 – Independence and editorial choices 01:19:10 – Thanks and goodbye Show Links: Editorial Guidelines – Real Python Meet Our Team About Martin Breuss About Philipp Acsany About Brenda Weleschuk Create Your Learning Plan Python Learning Paths Reference – Real Python Join the Real Python Team – Real Python Cohort-Based Live Python Courses – Real Python Level up your Python skills with our expert-led courses: Python Basics: Code Your First Python Program Getting Started With Claude Code Write Python Docstrings Effectively Support the podcast & join our community of Pythonistas

Showing 21–25 of 25 episodes