Python Bytes

Michael Kennedy and Brian Okken
Python Bytes
Neueste Episode

47 Episoden

  • Python Bytes

    #470 A Jolting Episode

    23.02.2026 | 25 Min.
    Topics covered in this episode:

    Better Python tests with inline-snapshot

    jolt Battery intelligence for your laptop

    Markdown code formatting with ruff

    act - run your GitHub actions locally

    Extras

    Joke

    Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Training

    The Complete pytest Course

    Patreon Supporters
    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)

    Brian: @[email protected] / @brianokken.bsky.social

    Show: @[email protected] / @pythonbytes.fm (bsky)
    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too.
    Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

    Brian #1: Better Python tests with inline-snapshot

    Alex Hall, on Pydantic blog

    Great for testing complex data structures

    Allows you to write a test like this:

    from inline_snapshot import snapshot
    def test_user_creation():
    user = create_user(id=123, name="test_user")
    assert user.dict() == snapshot({})

    Then run pytest --inline-snapshot=fix

    And the library updates the test source code to look like this:

    def test_user_creation():
    user = create_user(id=123, name="test_user")
    assert user.dict() == snapshot({
    "id": 123,
    "name": "test_user",
    "status": "active"
    })

    Now, when you run the code without “fix” the collected data is used for comparison

    Awesome to be able to visually inspect the test data right there in the test code.

    Projects mentioned

    inline-snapshot

    pytest-examples

    syrupy

    dirty-equals

    executing

    Michael #2: jolt Battery intelligence for your laptop

    Support for both macOS and Linux

    Battery Status — Charge percentage, time remaining, health, and cycle count

    Power Monitoring — System power draw with CPU/GPU breakdown

    Process Tracking — Processes sorted by energy impact with color-coded severity

    Historical Graphs — Track battery and power trends over time

    Themes — 10+ built-in themes with dark/light auto-detection

    Background Daemon — Collect historical data even when the TUI isn't running

    Process Management — Kill energy-hungry processes directly

    Brian #3: Markdown code formatting with ruff

    Suggested by Matthias Schoettle

    ruff can now format code within markdown files

    Will format valid Python code in code blocks marked with python, py, python3 or py3.

    Also recognizes pyi as Python type stub files.

    Includes the ability to turn off formatting with comment [HTML_REMOVED] , [HTML_REMOVED] blocks.

    Requires preview mode

    [tool.ruff.lint]
    preview = true

    Michael #4: act - run your GitHub actions locally

    Run your GitHub Actions locally! Why would you want to do this? Two reasons:

    Fast Feedback - Rather than having to commit/push every time you want to test out the changes you are making to your .github/workflows/ files (or for any changes to embedded GitHub actions), you can use act to run the actions locally. The environment variables and filesystem are all configured to match what GitHub provides.

    Local Task Runner - I love make. However, I also hate repeating myself. With act, you can use the GitHub Actions defined in your .github/workflows/ to replace your Makefile!

    When you run act it reads in your GitHub Actions from .github/workflows/ and determines the set of actions that need to be run.

    Uses the Docker API to either pull or build the necessary images, as defined in your workflow files and finally determines the execution path based on the dependencies that were defined.

    Once it has the execution path, it then uses the Docker API to run containers for each action based on the images prepared earlier.

    The environment variables and filesystem are all configured to match what GitHub provides.

    Extras

    Michael:

    Winter is coming: Frozendict accepted

    Django ORM stand-alone

    Command Book app announcement post

    Joke: Plug ‘n Paste
  • Python Bytes

    #469 Commands, out of the terminal

    09.02.2026 | 33 Min.
    Topics covered in this episode:

    Command Book App

    uvx.sh: Install Python tools without uv or Python

    Ending 15 years of subprocess polling

    monty: A minimal, secure Python interpreter written in Rust for use by AI

    Extras

    Joke

    Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Training

    The Complete pytest Course

    Patreon Supporters
    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)

    Brian: @[email protected] / @brianokken.bsky.social

    Show: @[email protected] / @pythonbytes.fm (bsky)
    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
    Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

    Michael #1: Command Book App

    New app from Michael

    Command Book App is a native macOS app for developers, data scientists, AI enthusiasts and more.

    This is a tool I've been using lately to help build Talk Python, Python Bytes, Talk Python Training, and many more applications.

    It's a bit like advanced terminal commands or complex shell aliases, but hosted outside of your terminal. This leaves the terminal there for interactive commands, exploration, short actions.

    Command Book manages commands like "tail this log while I'm developing the app", "Run the dev web server with true auto-reload", and even "Run MongoDB in Docker with exactly the settings I need"

    I'd love it if you gave it a look, shared it with your team, and send me feedback.

    Has a free version and paid version.

    Build with Swift and Swift UI

    Check it out at https://commandbookapp.com

    Brian #2: uvx.sh: Install Python tools without uv or Python

    Tim Hopper

    Michael #3: Ending 15 years of subprocess polling

    by Giampaolo Rodola

    The standard library's subprocess module has relied on a busy-loop polling approach since the timeout parameter was added to Popen.wait() in Python 3.3, around 15 years ago

    The problem with busy-polling

    CPU wake-ups: even with exponential backoff (starting at 0.1ms, capping at 40ms), the system constantly wakes up to check process status, wasting CPU cycles and draining batteries.

    Latency: there's always a gap between when a process actually terminates and when you detect it.

    Scalability: monitoring many processes simultaneously magnifies all of the above.

    + L1/L2 CPU cache invalidations

    It’s interesting to note that waiting via poll() (or kqueue()) puts the process into the exact same sleeping state as a plain time.sleep() call. From the kernel's perspective, both are interruptible sleeps.

    Here is the merged PR for this change.

    Brian #4: monty: A minimal, secure Python interpreter written in Rust for use by AI

    Samuel Colvin and others at Pydantic

    Still experimental

    “Monty avoids the cost, latency, complexity and general faff of using a full container based sandbox for running LLM generated code. “

    “Instead, it lets you safely run Python code written by an LLM embedded in your agent, with startup times measured in single digit microseconds not hundreds of milliseconds.”

    Extras

    Brian:

    Expertise is the art of ignoring - Kevin Renskers

    You don’t need to master the language. You need to master your slice.

    Learning everything up front is wasted effort.

    Experience changes what you pay attention to.

    I hate fish - Rands (Michael Lopp)

    Really about productivity systems

    And a nice process for dealing with email

    Michael:

    Talk Python now has a CLI

    New essay: It's not vibe coding - Agentic engineering

    GitHub is having a day

    Python 3.14.3 and 3.13.12 are available

    Wall Street just lost $285 billion because of 13 markdown files

    Joke: Silence, current side project!
  • Python Bytes

    #468 A bolt of Django

    03.02.2026 | 31 Min.
    Topics covered in this episode:

    django-bolt: Faster than FastAPI, but with Django ORM, Django Admin, and Django packages

    pyleak

    More Django (three articles)

    Datastar

    Extras

    Joke

    Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Training

    The Complete pytest Course

    Patreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)

    Brian: @[email protected] / @brianokken.bsky.social

    Show: @[email protected] / @pythonbytes.fm (bsky)

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too.

    Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

    Brian #1: django-bolt : Faster than FastAPI, but with Django ORM, Django Admin, and Django packages

    Farhan Ali Raza

    High-Performance Fully Typed API Framework for Django

    Inspired by DRF, FastAPI, Litestar, and Robyn

    Django-Bolt docs

    Interview with Farhan on Django Chat Podcast

    And a walkthrough video

    Michael #2: pyleak

    Detect leaked asyncio tasks, threads, and event loop blocking with stack trace in Python. Inspired by goleak.

    Has patterns for

    Context managers

    decorators

    Checks for

    Unawaited asyncio tasks

    Threads

    Blocking of an asyncio loop

    Includes a pytest plugin so you can do @pytest.mark.no_leaks

    Brian #3: More Django (three articles)

    Migrating From Celery to Django Tasks

    Paul Taylor

    Nice intro of how easy it is to get started with Django Tasks

    Some notes on starting to use Django

    Julia Evans

    A handful of reasons why Django is a great choice for a web framework

    less magic than Rails

    a built-in admin

    nice ORM

    automatic migrations

    nice docs

    you can use sqlite in production

    built in email

    The definitive guide to using Django with SQLite in production

    I’m gonna have to study this a bit.

    The conclusion states one of the benefits is “reduced complexity”, but, it still seems like quite a bit to me.

    Michael #4: Datastar

    Sent to us by Forrest Lanier

    Lots of work by Chris May

    Out on Talk Python soon.

    Official Datastar Python SDK

    Datastar is a little like HTMX, but

    The single source of truth is your server

    Events can be sent from server automatically (using SSE)

    e.g

    yield SSE.patch_elements(
    f"""{(#HTML#)}{datetime.now().isoformat()}"""
    )

    Why I switched from HTMX to Datastar article

    Extras

    Brian:

    Django Chat: Inverting the Testing Pyramid - Brian Okken

    Quite a fun interview

    PEP 686 – Make UTF-8 mode default

    Now with status “Final” and slated for Python 3.15

    Michael:

    Prayson Daniel’s Paper tracker

    Ice Cubes (open source Mastodon client for macOS)

    Rumdl for PyCharm, et. al

    cURL Gets Rid of Its Bug Bounty Program Over AI Slop Overrun

    Python Developers Survey 2026

    Joke: Pushed to prod
  • Python Bytes

    #467 Toads in my AI

    26.01.2026 | 31 Min.
    Topics covered in this episode:

    GreyNoise IP Check

    tprof: a targeting profiler

    TOAD is out

    Extras

    Joke

    Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Training

    The Complete pytest Course

    Patreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)

    Brian: @[email protected] / @brianokken.bsky.social

    Show: @[email protected] / @pythonbytes.fm (bsky)

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too.

    Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

    Michael #1: GreyNoise IP Check

    GreyNoise watches the internet's background radiation—the constant storm of scanners, bots, and probes hitting every IP address on Earth.

    Is your computer sending out bot or other bad-actor traffic? What about the myriad of devices and IoT things on your local IP?

    Heads up: If your IP has recently changed, it might not be you (false positive).

    Brian #2: tprof: a targeting profiler

    Adam Johnson

    Intro blog post: Python: introducing tprof, a targeting profiler

    Michael #3: TOAD is out

    Toad is a unified experience for AI in the terminal

    Front-end for AI tools such as OpenHands, Claude Code, Gemini CLI, and many more.

    Better TUI experience (e.g. @ for file context uses fuzzy search and dropdowns)

    Better prompt input (mouse, keyboard, even colored code and markdown blocks)

    Terminal within terminals (for TUI support)

    Brian #4: FastAPI adds Contribution Guidelines around AI usage

    Docs commit: Add contribution instructions about LLM generated code and comments and automated tools for PRs

    Docs section: Development - Contributing : Automated Code and AI

    Great inspiration and example of how to deal with this for popular open source projects

    “If the human effort put in a PR, e.g. writing LLM prompts, is less than the effort we would need to put to review it, please don't submit the PR.”

    With sections on

    Closing Automated and AI PRs

    Human Effort Denial of Service

    Use Tools Wisely

    Extras

    Brian:

    Apparently Digg is back and there’s a Python Community there

    Why light-weight websites may one day save your life - Marijke LuttekesHome

    Michael:

    Blog posts about Talk Python AI Integrations

    Announcing Talk Python AI Integrations on Talk Python’s Blog

    Blocking AI crawlers might be a bad idea on Michael’s Blog

    Already using the compile flag for faster app startup on the containers:

    RUN --mount=type=cache,target=/root/.cache uv pip install --compile-bytecode --python /venv/bin/python

    I think it’s speeding startup by about 1s / container.

    Biggest prompt yet? 72 pages, 11, 000

    Joke: A date

    via From Pat Decker
  • Python Bytes

    #466 PSF Lands $1.5 million

    19.01.2026 | 41 Min.
    Topics covered in this episode:

    Better Django management commands with django-click and django-typer

    PSF Lands a $1.5 million sponsorship from Anthropic

    How uv got so fast

    PyView Web Framework

    Extras

    Joke

    Watch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python Training

    The Complete pytest Course

    Patreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)

    Brian: @[email protected] / @brianokken.bsky.social

    Show: @[email protected] / @pythonbytes.fm (bsky)

    Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too.

    Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

    Brian #1: Better Django management commands with django-click and django-typer

    Lacy Henschel

    Extend Django <code>manage.py</code> commands for your own project, for things like

    data operations

    API integrations

    complex data transformations

    development and debugging

    Extending is built into Django, but it looks easier, less code, and more fun with either <code>django-click</code> or <code>django-typer</code>, two projects supported through Django Commons

    Michael #2: PSF Lands a $1.5 million sponsorship from Anthropic

    Anthropic is partnering with the Python Software Foundation in a landmark funding commitment to support both security initiatives and the PSF's core work.

    The funds will enable new automated tools for proactively reviewing all packages uploaded to PyPI, moving beyond the current reactive-only review process.

    The PSF plans to build a new dataset of known malware for capability analysis

    The investment will sustain programs like the Developer in Residence initiative, community grants, and infrastructure like PyPI.

    Brian #3: How uv got so fast

    Andrew Nesbitt

    It’s not just be cause “it’s written in Rust”.

    Recent-ish standards, PEPs 518 (2016), 517 (2017), 621 (2020), and 658 (2022) made many uv design decisions possible

    And uv drops many backwards compatible decisions kept by pip.

    Dropping functionality speeds things up.

    “Speed comes from elimination. Every code path you don’t have is a code path you don’t wait for.”

    Some of what uv does could be implemented in pip. Some cannot.

    Andrew discusses different speedups, why they could be done in Python also, or why they cannot.

    I read this article out of interest. But it gives me lots of ideas for tools that could be written faster just with Python by making design and support decisions that eliminate whole workflows.

    Michael #4: PyView Web Framework

    PyView brings the Phoenix LiveView paradigm to Python

    Recently interviewed Larry on Talk Python

    Build dynamic, real-time web applications using server-rendered HTML

    Check out the examples.

    See the Maps demo for some real magic

    How does this possibly work? See the LiveView Lifecycle.

    Extras

    Brian:

    Upgrade Django, has a great discussion of how to upgrade version by version and why you might want to do that instead of just jumping ahead to the latest version. And also who might want to save time by leapfrogging

    Also has all the versions and dates of release and end of support.

    The Lean TDD book 1st draft is done.

    Now available through both pythontest and LeanPub

    I set it as 80% done because of future drafts planned.

    I’m working through a few submitted suggestions. Not much feedback, so the 2nd pass might be fast and mostly my own modifications. It’s possible.

    I’m re-reading it myself and already am disappointed with page 1 of the introduction. I gotta make it pop more. I’ll work on that.

    Trying to decide how many suggestions around using AI I should include.

    It’s not mentioned in the book yet, but I think I need to incorporate some discussion around it.

    Michael:

    Python: What’s Coming in 2026

    Python Bytes rewritten in Quart + async (very similar to Talk Python’s journey)

    Added a proper MCP server at Talk Python To Me (you don’t need a formal MCP framework btw)

    Example one: latest-episodes-mcp.png

    Example two: which-episodes-mcp.webp

    Implmented /llms.txt for Talk Python To Me (see talkpython.fm/llms.txt )

    Joke: Reverse Superman

Weitere Nachrichten Podcasts

Über Python Bytes

Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.
Podcast-Website

Höre Python Bytes, 0630 - der News-Podcast und viele andere Podcasts aus aller Welt mit der radio.de-App

Hol dir die kostenlose radio.de App

  • Sender und Podcasts favorisieren
  • Streamen via Wifi oder Bluetooth
  • Unterstützt Carplay & Android Auto
  • viele weitere App Funktionen
Rechtliches
Social
v8.7.0 | © 2007-2026 radio.de GmbH
Generated: 2/27/2026 - 10:05:27 PM