Launch week Talk Python Membership is here Become a member

State of the art in Python 2026

Episode #566, published Sat, Oct 17, 2026, recorded Thu, Oct 1, 2026
0:00
01:05:13
Which of your Python tools would you still pick if you started fresh today? For a long time, the answer was easy. The stack felt settled. AI has reopened almost every one of those choices. Some tools got faster. Others got replaced outright. On this episode, a panel takes stock of the state of the art in Python for 2026. Calvin Hendryx-Parker is CTO and co-founder of Six Feet Up. Pat Decker works in DevOps at Hibu. Reuven Lerner has trained Python developers for 15 years. Sydney Runkle does product management for open source at LangChain. One of them barely opens an editor anymore. Listen in to hear the surprising replacement.

Watch this episode on YouTube
Play on YouTube
Watch the live stream version

Episode Deep Dive

Guests Introduction and Background

This episode is a panel. Four guests join Michael Kennedy to compare the tools they actually use in 2026, from editors and terminals to databases and hosting.

  • Calvin Hendryx-Parker is CTO and co-founder of Six Feet Up, a Python consulting agency that has been in business for 27 years and has done Python for 26 of them. He started on Python 1.5.2 back in the Zope era. Today the company does a lot of Django and FastAPI work. He is an AWS Hero, but Six Feet Up also works on GCP, Azure, and Alibaba Cloud. Listeners also know him as a frequent voice on Python Bytes.
  • Pat Decker works in DevOps at Hibu and has been there for 18 years. His career began with Pascal on punched cards at Iowa State, then about 15 years writing COBOL and nine years in infrastructure. Hibu has historically been a Java shop, but Python keeps spreading through data analytics, a little web development, and especially DevOps. His team runs on AWS, so Boto3 is a daily tool. He has appeared on Python Bytes before, and this episode grew out of his idea.
  • Reuven Lerner has run a business for about 30 years and has done nothing but training for the last 15, teaching Python, Pandas, and Git, and more and more AI. His newest book, "AI-Assisted Python for Non-Programmers," just came out. It turns his non-programmers course into a book with AI companion exercises. Find him at lerner.co.il.
  • Sydney Runkle does product management for the open source team at LangChain. Earlier, she led maintenance of pydantic-core at Pydantic, then helped lead maintenance of LangChain, LangGraph, and Deep Agents. This is her fourth Talk Python appearance. Her first was about jumpstarting a tech career while she was still in college.

What to Know If You're New to Python

The episode moves fast across many tool categories. It helps to know where Python code lives on your machine and how developers have started handing work to AI coding agents.

  • Package managers and virtual environments: Python projects depend on third-party packages from PyPI. A virtual environment keeps each project's packages separate. Tools like pip, Poetry, and now uv manage this. The panel agrees uv has largely replaced the older tools.
  • Type hints and type checkers: Python is dynamically typed, but you can add optional annotations like def greet(name: str) -> str. Python ignores them when the code runs. Tools like mypy, Pyright, ty, and Pyrefly read them to catch bugs before your code runs. Much of the panel's debate is about whether those annotations are for humans or for AI agents.
  • AI coding agents and harnesses: Tools like Claude Code, Codex, OpenCode, and Pi are "harnesses." They wrap a large language model and let it read files, run shell commands, and edit code. Several panelists now spend more time steering these agents than typing code.
  • Skills, MCP, and llms.txt: A "skill" is a packaged set of instructions an agent can load to get better at a specific library or task. MCP (Model Context Protocol) is a standard for connecting agents to data and tools. llms.txt and Markdown versions of web pages make documentation easier for AI tools to read. These come up in the web framework, documentation, and AI tooling sections.
  • Embedded vs. server databases: Server databases like PostgreSQL and MongoDB run as their own process. Embedded databases like SQLite and DuckDB run inside your Python process from a file on disk. The panel argues that embedded options are now strong enough for many single-machine apps.

Key Points and Takeaways

1. AI has reopened every tool choice, and for some people the editor has become Slack

The main idea of the episode is that the Python toolchain, which felt settled for years, is moving again because of AI. Michael used to ask every guest what editor they use. The answer became so predictable (VS Code or PyCharm) that he stopped asking. Sydney's answer this time was the surprise of the show: about 90% of her coding now happens in Slack. Tagging a coding agent there kicks off a task, she reviews the result on GitHub, and comments left on GitHub get picked up and addressed by the same agent. She only pulls code down locally when it really needs hands-on work. Her path there went from PyCharm to VS Code to Cursor, which added agents to the IDE early. Michael described something similar: dictating instructions on his phone to an agent and checking back later through chat without ever opening an editor. Reuven, who had thought Claude Code was as modern as it gets, said his brain was melting at the idea of Slack as the main coding tool.

2. Terminal-first editing: Claude Code, Pi, Vim, and Markdown specs

Calvin doesn't even have VS Code installed. His coding happens in the Pi agent and Claude Code, with bat for viewing files and PyCharm as the "fallback fallback fallback" when deeper digging is needed. A lifelong vi user (vi, Vim, then Neovim), he once froze on stage at a PyCon lightning talk when vi mode got switched off in PyCharm. He now spends much of his time reading Markdown specs and plans produced with the Superpowers skills before telling the agent to implement anything. Reuven went from Emacs to some PyCharm to mostly Jupyter, and has spent the last year mostly in Claude Code. Pat uses VS Code for remote connections to AWS and VMware instances, Kiro (from AWS) for AI help, Vim for quick runtime tweaks, and Nano when a server's Vim defaults block pasting. He also still uses KEdit, a DOS-era PC editor modeled on the IBM mainframe editor XEDIT. For richer AI clients, Calvin mentioned the JetBrains agentic client, Codex, and the Claude desktop app, which now includes Cowork and Code.

3. uv won package management, and the panel agrees

Every panelist uses uv. Michael expected the topic to take one sentence, and it filled a big part of the show. Calvin said uv simply packaged the opinions he already held: pyenv for Python versions, pip with lock files and pinning flags, and pipx for installing tools. uv added speed and consistency on top. Sydney compared uv's effect on package management to what AI agents did for coding. Reuven remembered years of PyCon packaging talks that ended with "if only someone would solve this mess." Then uv arrived and handled versions, packaging, uploads to PyPI, and Python installs, and it does all of that fast. Reuven also said uv hides the virtual environment activate/deactivate dance he always disliked. Michael argued uv's killer feature is that it lives outside Python and can be your way into Python: it can install the interpreter itself, so a script with dependencies runs on a machine with no Python at all. Calvin said that a few years ago he was considering a containers-only approach just to get reliable installs, and uv made that unnecessary.

4. PEP 723 inline script metadata and the uv run shebang

Pat says 90-some percent of the code he writes is single-file DevOps scripts, so PEP 723 inline script metadata is a daily tool. The comment block at the top of the file declares the script's dependencies, and uv run builds the environment on the fly. Calvin described a shebang that calls uv run at the top of such a file. After chmod 755, the Python file is fully executable with nothing else needed. He had been prompting DevOps agents to use the PEP 723 section, and one of them added that shebang unprompted. Michael pointed out that this makes Python scripts feel almost like Bash scripts. Calvin added that uvx (run a tool without installing it) is even easier than uv tool install. His own example is the Talk Python CLI, installed with uv tool install and usable by your AI tools to query the podcast catalog without any authentication. Pat also noted a real-world catch: corporate machine policies can block installing Python, and uv runs into the same wall, so he works under WSL where the rules are looser.

5. Why AI agents love uv, and what Astral joining OpenAI changed

Sydney explained why models work so well with tools like uv. Code is verifiable (it runs or it doesn't, a test passes or it doesn't), and models are post-trained heavily on code, so popular tools are familiar "at the weights level." uv was already the leading package manager before AI took off, which means models can use it well to control the environment where code runs. She also pointed out that general-purpose agents, not just coding agents, use code as a way to get things done. Recent models lean hard on that: in a Claude Code session you now see bash, bash, bash instead of read-file and write-file calls. Michael added that you also see python -c with giant strings. Calvin dislikes that pattern because each one needs approval and it makes session reports less readable. On Astral's acquisition by OpenAI, Pat said things carried on so normally that he had almost forgotten it happened. Reuven called Astral reliable stewards, and Calvin noted uv isn't tied to Python's own release cycle. Michael mentioned his recent conversation with Charlie Marsh about life inside OpenAI.

6. AgentsView: observability for your own AI coding sessions

A side conversation turned up one of the most interesting tools of the episode. Calvin uses AgentsView to report on coding agent sessions and see how well he is working with the agent. It grades context window usage, scores bad behaviors and points them out, and shows things like how much of a session was spent on bash tool calls. Michael runs it as a daemon with a web view. All of his machines (a Mac Mini, a Mac Studio, and a MacBook) push to a central Postgres database in a Docker container so he gets one view of all his AI work. Calvin has the same multi-machine setup. Michael warned that the scariest part is seeing what your tokens would cost at true API pricing. Sydney, who thinks a lot about agent observability, framed the key questions: is the agent inefficient because of its structure, because of how you prompted it, or because it isn't equipped for the task? Pat said his team, which is watching token spend, will be looking at it too.

7. The terminal renaissance: Kitty, Ghostty, cmux, herdr, and Royal TS

Reuven found it wild that people are still building new terminals in 2026, and figures AI is driving the rush. Pat added that they also have to be rewritten in Rust. Calvin uses Kitty, a cross-platform, GPU-accelerated terminal. He kept it through three years of running only Linux on the desktop (to get away from Apple's Touch Bar) and still uses it after returning to the Mac. He dropped tmux for Kitty's built-in window management, and now uses herdr, an "AI native" multiplexer for remote sessions and agent management. He connects to agents running anywhere with Mosh over a VPN. Reuven left iTerm2 for Ghostty after realizing he used about 10% of iTerm2's features, and fixed Claude Code flicker by switching to its full-screen TUI mode, which adds searchable scrollback and a diff pane. Michael moved from Warp to cmux, which remembers workspace layouts, restores SSH connections, has an iPhone version, and is built on Ghostty. Pat lives in Bash, uses WSL, and recommends Royal TS for saved SSH, RDP, HTTP, SFTP, and VNC connections on Mac and Windows. He also uses tmux so long-running tests survive dropped connections.

8. CLIs are becoming the interface for agents

Calvin made the point that terminal UIs and CLIs now give LLMs and agent harnesses a rich interface. In many cases they work better than MCP servers for local tools. His example is the Spark email client, which now ships a CLI. He can tell an agent to use it, and can also use it directly without leaving the terminal to check email. He prefers this to the MCP option for local integrations. Michael tied it to the Talk Python CLI, which you can point your AI at to ask questions like "what did Sydney say on her first episode?" A tool that is easy for humans to script turns out to be easy for agents to drive too. The same idea comes back later with docs that serve Markdown and agent skills.

9. Web frameworks: FastAPI, Django Ninja, Flask, and Robyn in an AI-trained world

Calvin just gave a DjangoCon talk with Frank Wiles comparing Django plus Django Ninja against FastAPI. FastAPI is still faster, but not by much. His rule: if something may grow into something bigger, start with Django. For quick, high-quality APIs, FastAPI fits. He noted you can change roughly one import and move FastAPI-style code to Django Ninja. Michael said FastAPI's "fast" is really about fast development done right, with Pydantic, OpenAPI, and validation. Calvin also praised Sebastian Ramirez's library skills project, which packages agent skills so your agent follows FastAPI best practices. Pat uses Flask at work because LLMs have seen so much Flask code, and uses Robyn (Flask-like, Rust-based, multi-threaded) for personal projects, though he has to "herd" the agent because there's less Robyn code for models to learn from. Michael's fix for less-known libraries: clone the repo, have Claude Code study the docs and code, and generate a skill for your project. Reuven settled on FastAPI for the back end of the practice system on his site and sees the volume of existing Flask, FastAPI, and Django code as a real advantage with LLMs. Calvin and Michael both miss Pyramid.

10. Pydantic is the bridge between LLM text and structured data

Sydney got into open source by trying to make Pydantic work well with Django, and soon after started using FastAPI. Python isn't strongly typed, and Pydantic gives you a way to opt into strong typing for data modeling and validation. That's why it sits at the core of FastAPI, where requests and responses need structure. She thinks FastAPI first made Pydantic popular, and LLMs have made it more popular still. LLMs produce text, and Pydantic validates that text and turns it into predictable models that ordinary code can use. Reuven recently had the same realization from another angle: type hints are great, but Pydantic is like adding CHECK constraints to typed Postgres columns. You can say a value must be greater than zero or below some limit and really tighten what's acceptable.

11. Type hints: optional for humans, essential for keeping agents in line

The panel split on hand-written types but nearly agreed on typing for AI-written code. Sydney is all in. The core team has made types much easier to write, ty makes checking very fast, and agents remove most of the boilerplate pain. Calvin came to Python for its clean, stay-out-of-your-way style and duck typing, and doesn't hand-write type hints. But he wants agents to add them for determinism and to catch whole classes of bugs before the code runs. Pat skips types in single-file DevOps scripts but uses them in AI-heavy side projects that may go public. Reuven went from "real programmers don't need types" to "all in." Teams make mistakes, people from statically typed languages want a safety net, and types keep LLMs "on a short leash." Michael types the public functions of a package, and requires every agent to pass ty, Ruff, and the tests with zero warnings before calling a task done. On type checkers: Sydney moved from mypy and Pyright to ty, Reuven still uses mypy but this episode may change that, Pat ends up with mypy because LLMs default to it, and Michael gave a shout-out to Pyrefly, wearing the shirt to prove it.

12. Databases: Postgres by default, with embedded databases on the rise

Postgres is the default for nearly everyone. Reuven's answer was simply "Love Postgres, period." Sydney often pairs Postgres with blob storage, because agents produce large artifacts. She also thinks data models are "back in vogue," since data has to be structured well for agents to query it at scale. Calvin is Postgres too, with a nod to ZODB, the Zope object database that served him for decades. Pat's production is almost all Postgres, plus SQLite, DuckDB, and LMDB (Lightning Memory-Mapped Database) in a side project. Michael is on Team MongoDB because schema changes and code grow together without heavy migrations. Michael is also on a kick for small embedded databases: SQLite, with write-ahead logging, durability, and cross-process locking, is ready for a lot of single-machine production work. Calvin likes DuckDB's JSON features for quick CLI tools. Reuven uses DuckDB as a query engine over Pandas data, where it is "shockingly faster than Pandas itself." Michael also pointed to DuckLake, which puts Parquet files on S3 with DuckDB, SQLite, or Postgres as the metadata catalog.

13. Documentation goes AI-native: Zensical, Great Docs, and Mintlify

Calvin's team uses MkDocs and loves it. Michael highlighted Zensical, the next-generation docs tool from the Material for MkDocs team, which now powers the FastAPI docs. Michael is especially enthusiastic about Great Docs from Posit, the team behind Great Tables, and thinks it doesn't get nearly enough love. He moved all of his small libraries to it. Great Docs generates agent skills per library with install instructions, serves any page as Markdown if you swap .html for .md, offers copy-as-Markdown, and produces llms.txt and llms-full.txt. Sydney recommended Mintlify, which LangChain uses. It adds copy-the-MCP-URL, copy-as-Markdown, and "copy this prompt" components to every page, and Sydney believes Pydantic has moved to it from MkDocs. Calvin made the point that beautiful docs are worth it even for personal projects.

14. Hosting: simple VMs, Kubernetes, Cloudflare Workers, and AI-driven price shocks

Reuven runs simple DigitalOcean droplets. Michael pushed back on calling that small: if you run Docker on a big server, you can go a long way bringing your own stack instead of tying into cloud services. Calvin is all in on containers and works in two modes. One is full Kubernetes, either Talos Linux in large clusters or single-node K3s. For him, the killer feature is releasing code through the control plane without shelling into a box. The other is Cloudflare Workers, where Python is now a first-class language. He uses Workers to replace Zapier zaps. Pat's company runs 90% or more on AWS with multiple EKS clusters and an ECS cluster, has some workloads and authentication on Azure, and ended up on Oracle Cloud after Oracle bought Zenedge, which provides its CDN and WAF. Michael moved from DigitalOcean to Hetzner, but AI-driven hardware demand is changing prices: an 8-core, 16 GB Hetzner server he pays $35 a month for now lists at $130. By his math, DigitalOcean is now the better deal dollar for dollar.

15. AI tooling roundup: harnesses, models, memory, and token spend

To close, each panelist shared their AI setup. Calvin mostly uses Pi plus Claude Code with the Superpowers skills, and prefers Sonnet 5.5 or OpenAI's latest model. He gets annoyed when a new release makes the latest Opus the default and it starts eating tokens. For self-hosting, he recommends a Qwen model that runs on most machines with 32 GB of RAM or more. Sydney's advice is broader: have a coding agent, an agent in Slack, and an agent wherever you keep documents (Notion, in her case). Sydney is bullish on MCP for connecting data and skills for capturing domain knowledge, and most excited about agents that improve over time through memory of your preferences and past reviewer feedback. Pat lets the tooling choose models automatically, uses Kiro and VS Code, watches token spend, and finds local models underwhelming next to hosted ones. Reuven uses Claude Code for about 95% of the work and compares it to the Mac, while OpenCode is like Linux: very extensible, but more setup. Michael also uses Claude Code, usually inside VS Code, and GLM models for personal automation through inexpensive hosted providers.

16. Python 3.15 is (nearly) here, and uv already has it

The episode was recorded on October 1st, the scheduled release date for Python 3.15. When the panel checked, python.org still listed 3.14.8 as the current download. Calvin is excited about the release and had already used uv python install to run the release candidate for a Python Bytes "What's New" demo built around a dungeon crawler. Months earlier, Reuven made a YouTube playlist on getting ready for Python 3.15 and told viewers to install it with uv, which "just worked." It's a good example of Calvin's point that uv isn't tied to Python's own release cycle. You can try a new interpreter the day it ships, or before.

Interesting Quotes and Stories

"This would have sounded very odd like two years ago, but honestly, where I do most of my coding now is in Slack." -- Sydney Runkle

"My brain is melting thinking of Slack as your main coding editor." -- Reuven Lerner

"When I thought back in the day when I was doing Zope and we were coding into a text area on a webpage, that was bad... but to do it into a Slack agent, also kind of blows my mind." -- Calvin Hendryx-Parker

"I got on stage once at PyCon to do a lightning talk and somehow VI mode got disabled on my PyCharm and I was absolutely petrified." -- Calvin Hendryx-Parker

"Way back at Iowa State, I took Pascal on punched cards. So that was a little different." -- Pat Decker

"Can I just say how wild it is that in 2026, people are still developing new terminals." -- Reuven Lerner

"And you have to rewrite it in Rust, too." -- Pat Decker

"If you use the word poetry in our Slack, there was a Slack bot response with a haiku that was not favorable to poetry." -- Calvin Hendryx-Parker

"I feel like uv was the speed up for package management that rivaled what AI agents did for coding." -- Sydney Runkle

"It took me a little bit of time to realize it was not just a super, super fast pip, but that was like the gateway drug to start using it." -- Reuven Lerner

"I think one of its killer features is it lives outside Python, and it can be the way into Python." -- Michael Kennedy

"LLMs produce text and Pydantic is kind of the bridge back into like, let's validate that data and turn it into a predictable model that we can then use in code driven applications." -- Sydney Runkle

"One of the things that brought me to Python the language was the stay out of your way, get stuff done quickly, efficiency of the language." -- Calvin Hendryx-Parker

"I sometimes say to people that the things we can tell agents and LLMs are the sorts of things that would get us like written up for being of abusive behavior as a manager if we were to do all these things to the software developers on our team." -- Reuven Lerner

"You're going to run ty, you're going to run ruff, you're going to run the tests and you don't call yourself done... until all those things pass." -- Michael Kennedy

"I feel like Claude Code is like the Mac and OpenCode is like Linux." -- Reuven Lerner

Story: the duplicate cmux fan in the coffee shop. Michael and his friend Mark were looking at cmux in a coffee shop when a stranger walked over, apologized for interrupting, and showed off their own cmux setup. "So apparently at least three of us use it now."

Story: three years of Linux over a keyboard. Calvin ran only Linux on the desktop for three years because Apple insisted on the Touch Bar. He came back to the Mac when Apple returned to a regular keyboard, and kept the Kitty terminal the whole time.

Story: the haunted laptop. Calvin brought up the xkcd comic in which the artist's Python environment setup is so tangled that their laptop is declared a Superfund site. Michael explained the joke for non-US listeners.

Key Definitions and Terms

  • uvx: A uv command that runs a Python command-line tool in a temporary, isolated environment without installing it first.
  • PEP 723 (inline script metadata): A standard comment block at the top of a single-file Python script that declares its dependencies and Python version so tools like uv run can build the environment automatically.
  • Shebang: The #! first line of a script that tells Unix-like systems which program should run it. Combined with uv run and PEP 723, it makes a Python file directly executable.
  • Agent harness: The software around an LLM (such as Claude Code, Codex, OpenCode, or Pi) that gives it tools like shell access and file editing and runs the loop of planning, acting, and checking.
  • Skill: A packaged bundle of instructions and context an AI agent can load to work well with a specific library, framework, or task.
  • MCP (Model Context Protocol): An open protocol for connecting AI agents to external data sources and tools.
  • llms.txt: A convention for publishing a plain-text or Markdown index of a site's documentation so LLMs can read it efficiently.
  • Terminal multiplexer: A tool like tmux or herdr that runs multiple terminal sessions in one window and keeps them alive after you disconnect.
  • GPU-accelerated terminal: A terminal emulator, such as Kitty or Ghostty, that renders text with the graphics card for faster, smoother output.
  • Mosh: A remote shell that stays connected across network changes and sleep, useful for staying attached to long-running agents.
  • Embedded database: A database engine such as SQLite, DuckDB, or LMDB that runs inside your application process from a file, with no separate server.
  • Write-ahead log (WAL): A SQLite journaling mode that improves concurrency and durability, part of what makes SQLite viable for more production work.
  • Parquet: A columnar file format for analytics data, often queried with DuckDB and used by DuckLake on object storage like S3.
  • Duck typing: Python's tradition of caring about what an object can do rather than its declared type, which Calvin cited as part of Python's original appeal.
  • Kubernetes control plane: The API layer of a Kubernetes cluster that lets you deploy new code by declaring desired state rather than logging into servers.
  • K3s and Talos Linux: A lightweight Kubernetes distribution suited to single nodes, and a minimal, immutable Linux OS built just for running Kubernetes.
  • WAF (Web Application Firewall): A service that filters malicious HTTP traffic before it reaches your application.

Learning Resources

If this episode has you rethinking your own toolchain, these courses go deeper on the ideas the panel kept coming back to: working well with AI agents, using types to keep code (and agents) honest, and building a solid Python foundation.

  • Agentic AI Programming for Python: Learn to work effectively with AI coding agents like the ones the panel uses every day, including how to guide them, set guardrails, and get production-quality code out of them.
  • Rock Solid Python with Python Typing: A hands-on guide to type hints, type checkers, and Pydantic, the tools the panel relies on to catch bugs early and keep LLM-generated code on a short leash.
  • Python for Absolute Beginners: If you're new to Python and want the foundation that makes all of these tools make sense, start here.

Overall Takeaway

The striking thing about this conversation isn't any single tool. It's how much of the Python toolchain is moving again at once. A few years ago the answers were predictable: VS Code or PyCharm, pip and virtual environments, whichever type checker your team picked first. In 2026 the panel's answers ranged from Slack as a coding interface to GPU-accelerated terminals built for running agents, and the reason almost every time was AI. Some choices settled hard. uv is now the shared default, and Postgres remains the safe database. Others are wide open, with new terminals, new type checkers, docs that serve Markdown to agents, and embedded databases making a real case for production. The common thread is that tools now need to work well for both people and agents: fast, scriptable, well documented, and strict enough to keep generated code honest. You don't need to adopt everything this panel uses. Do take the episode's opening question seriously and ask which of your tools you'd still pick if you were starting fresh today.

Guests
Pat Decker
Reuven Lerner: github.com
Calvin Hendryx-Parker: linkedin.com
Sydney Runkle: github.com

Talk Python Membership: talkpython.fm/community

This Reddit post: www.reddit.com
PSF+Jetbrains survey: blog.jetbrains.com
vscode: code.visualstudio.com
pycharm: www.jetbrains.com
cmux: cmux.com
warp.dev: www.warp.dev
herdr: herdr.dev
Royal TS: apps.microsoft.com
Tailscale: tailscale.com
uv: docs.astral.sh
FastAPI: fastapi.tiangolo.com
Litestar: litestar.dev
Django: www.djangoproject.com
httpx2: github.com
ty: github.com
pyrefly: pyrefly.org
postgres: www.postgresql.org
sqlite: www.sqlite.org
duckdb: duckdb.org
Hetzner: www.hetzner.com
DigitalOcean: www.digitalocean.com
AWS: aws.amazon.com
Great Docs: posit-dev.github.io
Zensical: zensical.org
Vue.js: Vue.js
AgentsView: www.agentsview.io
LangChain Blog: www.langchain.com
Umami Example of Great Docs: mkennedy.codes
Mintlify: www.mintlify.com
DuckLake: ducklake.select
Robyn Web Framework: robyn.tech
Django Ninja: django-ninja.dev
Talk Python CLI: talkpython.fm
KEdit: www.kedit.com
Kitty: sw.kovidgoyal.net

Watch this episode on YouTube: youtube.com
Episode #566 deep-dive: talkpython.fm/566
Episode transcripts: talkpython.fm

Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong

---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython

Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython

Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy

Episode Transcript

Collapse transcript

00:00 Which of your Python tools would you still pick if you started fresh today?

00:04 For a long time, the answer was easy.

00:05 The stack felt settled.

00:07 AI has reopened almost every one of those choices.

00:11 Some tools got faster, others got replaced outright.

00:14 On this episode, a panel takes stock of the state of the art in Python for 2026.

00:20 Calvin Hendrix Parker is CTO and co-founder of Six Feet Up.

00:24 Pat Decker works in DevOps at Hybu.

00:27 Reuven Lerner has trained Python developers for 15 years, and Sidney Runkle does product

00:31 management for open source at LangChain.

00:34 One of them barely even opens an editor anymore.

00:37 Listen and hear the surprising replacement they have.

00:40 This is Talk Python To Me, episode 566, recorded October 1st, 2026.

01:03 Welcome to Talk Python To Me, the number one Python podcast for developers and data scientists.

01:08 This is your host, Michael Kennedy.

01:09 I'm a PSF fellow who's been coding for over 25 years.

01:14 Let's connect on social media.

01:15 You'll find me and Talk Python on Mastodon, Bluesky, and X.

01:19 The social links are all in your show notes.

01:21 You can find over 10 years of past episodes at talkpython.fm.

01:25 And if you want to be part of the show, you can join our recording live streams.

01:29 That's right.

01:29 We live stream the raw uncut version of each episode on YouTube.

01:33 Just visit talkpython.fm/youtube to see the schedule of upcoming events.

01:38 Be sure to subscribe there and press the bell so you'll get notified anytime we're recording.

01:42 Hey everyone, I have a really big announcement.

01:44 For several years now, I've wanted to offer something premium to all of you out there listening.

01:48 The obvious option is some kind of feed with no ads.

01:52 And that just didn't sit right with me.

01:54 No ads is not that much of a bonus.

01:56 But over the last couple of months, I've been working really hard to make the Talk Python experience go beyond just the podcast and the courses.

02:03 After a ton of work, I am thrilled to announce Talk Python membership.

02:08 So what does this get you?

02:09 In short, community, tech events, and episode previews.

02:13 Community.

02:14 Talk Python membership gets you a real community.

02:17 Starts with a private Discord server where you can hang out with fellow members and well over 100 podcast guests.

02:23 Many of the most renowned folks who helped build Python itself are hanging out there.

02:27 We have rooms to discuss fun tools you found, places to post job openings, or even say you're looking for work,

02:33 and other areas to just hang out.

02:35 Tech events.

02:36 Many of you tell me how Talk Python brings the Python community to your location and your world.

02:41 Maybe you work at a company with just a few fellow developers or data scientists.

02:45 Maybe you live in a small town where large meetups and conferences just don't exist.

02:50 At Talk Python To Membership, we're running monthly tech meetups that you don't just attend but participate in.

02:56 These are often run by well-known Python people.

02:58 Talks run from 30 to 45 minutes, and some are followed by a hangout and mingle in a voice and video channel.

03:04 I already have the first couple of tech events on the schedule.

03:07 October 28th, I'll be kicking everything off with Talk Python in production,

03:11 and I have some wild updates since the last time you've heard me discuss this.

03:15 Coming up after that is Sebastian Ramirez.

03:18 He'll take us through deploying to FastAPI Cloud, and sometime after that, I'll be presenting Succeeding with Agentic Coding,

03:26 backed with a significant amount of real-world examples and data.

03:30 You'll find times and details for these and new meetups at talkpython.fm/meetups.

03:35 And it's not just live events.

03:37 All of these events are recorded and available to watch and replay anytime.

03:42 Episode previews.

03:43 Now, I'm sure most of you listen to the entire episode and never miss a single one.

03:48 At the same time, there may be some that you are unsure about the topic,

03:52 whether it's a good fit and whether or not you want to take the time to listen to it.

03:56 That's why I'm creating a members-only sidecar podcast feed.

04:00 Each full episode comes with a short summary episode that covers what's discussed and interesting angles and surprises along the way.

04:08 That way you can give the summary a quick listen and decide which Talk Python episodes you're going to take the time to dive into.

04:14 An ad-free feed.

04:15 Oh yeah, I guess members can also have an ad-free feed.

04:19 I think people will enjoy having no ads, but obviously there's a lot more to membership than that.

04:25 So there it is.

04:26 Announcing Talk Python membership.

04:28 community, tech meetups, mingle with episode guests, add free feeds.

04:33 Please give it a look.

04:34 Just visit Talk Python and click membership in the nav bar.

04:37 I really hope we can build an awesome space together.

04:40 I've got a great blueprint here, but it depends on everyone out there listening as well.

04:44 So let's get together and build a community.

04:47 Regardless of whether you can become a member or not, I really appreciate you listening to and supporting the show.

04:52 Hey team, Calvin, Pat, Sidney, and Reuven.

04:55 Awesome to have you all here.

04:57 Thanks for having us, Michael.

04:57 Excellent to be here.

04:58 Thanks.

04:59 Good to have three of you back.

05:01 Always enjoy spending time with you.

05:03 And Pat, welcome to Talk Python.

05:05 You've been on Python Bytes before, but not on Talk Python, yes?

05:07 Right.

05:07 It was a few years ago.

05:08 I'm not even sure how long ago that was.

05:10 Yeah, back when we had guests on Python Bytes.

05:12 Well, the reason we stopped having guests on Python Bytes, just sidebars,

05:15 people would, when we have guests, we get into these conversations and we go down rat holes and we talk for a

05:19 while.

05:20 They ended up being hour long episodes.

05:21 People are like, the bytes part is supposed to be a short little catch up.

05:25 How is it over an hour now?

05:26 Like, ah, yeah, that's true.

05:28 Maybe we just need to do less.

05:30 Keep it true to its nature.

05:31 But Talk Python can be long and rambly, so happy to have Pat.

05:34 Just talking is in the name.

05:36 It literally is in the name.

05:37 It tells you what you're in for.

05:39 So, Pat, welcome.

05:41 The rest of you all, great to have you back.

05:43 We're going to be talking about an idea inspired by what tools should we be using?

05:47 Things are changing fast, I think, at least as fast as they ever have, if not faster.

05:51 It feels like the world is constantly accelerating.

05:55 And that's true for DevTools as well.

05:56 It's always been true for DevTools, but I think, especially in the AI angle,

06:00 it's a little bit more true.

06:01 And it's good that we have an AI specialist here, Sydney, for an inside look from that kind of, I know.

06:08 We'd be lost without.

06:09 Let's dive into basically a survey of the different areas of programming,

06:14 Python, DevOps, all that kind of stuff, and what tools we're using, where we see trends going,

06:19 and start that by doing a quick intro for everyone.

06:23 Calvin, we'll just go around the squares here.

06:25 Calvin, people know you, but tell me about yourself anyway.

06:27 Sure.

06:28 Calvin Hendryx-Parker.

06:29 I'm CTO and co-founder of Six Feet Up.

06:31 We are a Python consulting agency that loves solving hard problems.

06:35 We've been in business now 27 years and doing Python for 26 of it.

06:40 So I started using Python back when it was in version 1.5.2.

06:45 That was Zope timeline.

06:47 So I've been a historic Zope user.

06:49 I know a lot of the listeners probably do not know what Zope is, but that was kind of the granddaddy of all web application servers out there.

06:56 There was kind of a Java one, there was a Perl one, and then there was this quirky little Python one called Zope

07:01 that uses an object database on the backside.

07:03 So throughout the years, we've changed.

07:04 We're now doing a lot more Django, doing a lot more FastAPI, doing all kinds of other technologies,

07:09 but we've pretty stayed true to Python at our core and use other technologies around the periphery as needed.

07:16 And that's changing fast too.

07:18 So it'll be interesting to hear what everyone else has to say.

07:20 Yeah, awesome.

07:20 And you'll have a lot of different perspectives from all your client conversations.

07:24 True.

07:24 Pat, hello.

07:25 Tell us about yourself.

07:26 Out of college, wrote COBOL for about 15 years and then went into infrastructure and land

07:33 management, worked there for another nine years.

07:36 And now I'm at a company called Hibu for the last 18 years.

07:41 They're kind of a Java shop for the most part, at least historically.

07:45 But we're gradually adding more and more Python for, say, data analytics,

07:50 a little bit of web development.

07:52 And in the DevOps space where I live, for the most part, we use it a heck of a lot.

07:57 And we're on AWS.

07:59 So Boto3 is a daily thing for me.

08:02 The DevOps side is really interesting.

08:03 It's got a little bit of a data science story in that like, oh, we're not really a Python shop, but this Python stuff's working over here.

08:09 And then it kind of can spread through the company.

08:12 Also, Team AWS for the first two, right?

08:15 Calvin, you're also AWS.

08:17 I am an AWS hero, but we participate in all of them.

08:21 We're doing GSpeak work, we're doing Azure work, we're doing stuff on Alibaba Cloud.

08:25 So I am an AWS hero.

08:26 Sydney, welcome back.

08:27 Great to have you as always.

08:28 Yeah, great to be back.

08:30 I feel like I've taken each podcast from a different location.

08:33 And it continues, yeah.

08:35 Yeah, I'm now in San Francisco.

08:37 I am a big open source guru.

08:39 So kind of at the end of college and then after college, I was working at Pydantic leading maintenance of the Pydantic core package.

08:47 But Pydantic, the company, is working on kind of AI observability and tooling.

08:52 And then transitioned over to LangChain, where I also helped lead maintenance of kind of the open source suite there.

08:58 So LangChain, LangGraph, and now DeepAgents.

09:02 And then I'm now doing kind of product management for the open source team at LinkedIn,

09:06 but still very excited to be in the like open source and AI agent space.

09:10 What a cool early career, huh?

09:12 We had you on when you were still in college talking about, you know, tips for younger people in college to jumpstart their career.

09:19 And it looks like you're, you know, in practice, it's working really well.

09:22 So congratulations.

09:23 Yeah, that was a great first podcast.

09:25 And then I think we talked both while I was at Pydantic and LinkedIn.

09:28 So excited to be back on.

09:30 Great to have you.

09:30 Reuven, hello, hello.

09:31 Hello there.

09:32 Delighted to be back here.

09:33 So yeah, so I've also been in business for quite some time.

09:37 I just celebrated about 30 years in December, and I started off doing projects of various sorts.

09:42 And pretty soon people started asking me not to do the project, but rather to teach their people

09:47 to do the project.

09:48 And so slowly but surely, I stopped doing projects. I started doing training.

09:51 And so I've been doing only training for I think it is now 15 years, Python,

09:55 Pandas, Git.

10:01 And else is doing AI.

10:03 So someone had to be the guinea pig.

10:05 And so I'm having tons and tons of fun developing software now via, especially a lot of Claude Code and then helping other people do that

10:12 as well.

10:12 Yeah. And I just, I actually, I'll also say, and my newest book just came out in the last

10:17 few days, which is AI assisted Python for non-programmers.

10:20 So it's my non-programmers course in book form with lots of AI sort of companion exercises to help you learn better.

10:28 the book idea. I think it's going to be big. But yeah, what an early bet you made on AI these days

10:32 to be working with it. I mean, I know most of us are probably not doing that. So that'll be

10:36 interesting to hear. Edgy for sure.

10:38 Very edgy.

10:39 All right.

10:40 Speaking of edgy, let's get right into it.

10:42 So I put together kind of a spectrum of different topics and some of them might be,

10:48 oh, of course, we're all doing this.

10:50 But at the same time, others, maybe not so much.

10:53 Maybe it's new.

10:57 So editors first.

10:59 And I just kind of a bit of a historical thing.

11:03 I used to ask when I started the podcast, I used to ask at the end of the show,

11:06 a couple of things like, you know, recommend a package. And then what editor are you using? And this always gave me random answers from all these

11:12 little weird things I've never even heard of, you know, over the last six or seven years, it was

11:17 just like VS Code, ByCharm, VS Code, VS Code, ByCharm, ByCharm.

11:21 I'm like, okay, this, I'm not asking this question anymore, but I'm not sure that that's actually still true because of the H1,

11:27 you see on the VS Code, the open source AI code editor.

11:30 And I think AI has scrambled this a bit.

11:33 So I don't know.

11:34 Let's start with you, Sydney, first here.

11:37 Like, what are you doing?

11:38 What are you using these days to write code to the extent that code is written and read code when it's not?

11:44 I'll go back and say I was first a PyTerm user and then a VS Code user.

11:49 And then I transitioned to Cursor when I wanted, like, kind of, I think they had, like, agents rolled into the IDE earlier

11:56 than some of the other IDEs.

11:58 But my slightly, this would have sounded very odd like two years ago, but honestly where I do most of my coding now is in Slack.

12:06 So we have coding agents available via like Slack tag.

12:10 So I can say at OpenSuite, you know, help me with this task.

12:14 Slack is where we come up with a lot of ideas for what we want to change

12:18 or like problems that we're having.

12:20 So I certainly still like, we'll start something from Slack and then go look at it in GitHub

12:25 and then maybe pull it down locally I like really need to get into the weeds with changes.

12:29 But honestly, I would say like 90% of my work is now in Slack.

12:33 Or if I like start from Slack, and then add comments in GitHub, my like Slack agent will pick those up and address.

12:42 So yeah, that's my like very AI native answer these days.

12:45 Did I say there would be surprises?

12:46 There are already incredible.

12:48 Like, that is so amazing and futuristic.

12:51 And yet at the same time, I can see it.

12:54 I've done some really interesting stuff with just talking to my phone that then translates over to Hermes.

13:01 It's like, I need you to program this. And I came back later and through a chat, just like,

13:05 how are we doing?

13:06 And that was all, I never touched an editor or nothing. I just either voice typed or actual

13:11 typed and it's wow.

13:13 But Slack as a group, I guess it makes a lot of sense, but yeah, it's really interesting. What do you all think? I'm reeling from this because I thought,

13:21 wow, Like I've gone through this like evolution of there's an Emacs person.

13:25 And then like I did a little bit of PyCharm, but I realized that I did a lot of stuff in

13:30 Jupyter.

13:30 But lately in the last year, most of it's been in clawed code.

13:33 And I was like, okay, so that's like clearly as modern and cool as it gets.

13:37 Right.

13:37 I tell my children all the time that I'm as cool as it gets.

13:39 And one day they will believe me.

13:41 And yet Sydney like massively upstages me here.

13:44 I'm like, I'm like, my brain is melting thinking of Slack as your main coding editor.

13:48 That is super wild.

13:50 Or not even editor, like dispatching agents based on it.

13:52 That's so cool.

13:53 Well, I thought back in the day when I was doing Zope and we were coding into a text area on a web page,

13:59 that was bad.

14:00 And that drove me a little like kind of batty.

14:02 But to do it into a Slack agent also kind of blows my mind.

14:06 I will say I do not even have VS Code installed or any VS Code variants installed on my computer.

14:11 I'm pretty well in Pi and Claude Code for all of my coding usages.

14:17 And then when I need to view something, I'm using my favorite alternative cat,

14:20 which is bat, B-A-T.

14:22 And then I'll use, if I need a rich, really richer experience, I'll jump back into PyCharm.

14:27 It's probably my like fallback, fallback, fallback thing when I need to really dive into something.

14:32 But most of them I'm viewing Markdown, which I found on OS X there is, I'm dating myself by saying like that.

14:38 On macOS, there is a viewer called Telescopo that is an excellent Markdown viewer,

14:44 like very rich experience.

14:46 So I can view like the superpower specs and plans.

14:49 And that's where I spend a lot of my time actually is probably with the markdown pieces before I say go implement some stuff.

14:55 Yeah, that's wild.

14:56 You're very, I know you're very terminal heavy like Claude Code style or more of the open,

15:01 open multi-model ones.

15:02 VI user for life, Vim, NeoVim, you know, kind of follow that progression.

15:08 So I guess I'm the guy on the beach kicking sand in the feeble Emacs user's face.

15:12 I'm sorry.

15:14 I'll take that stand.

15:15 And when there's no VI key bindings available and I open up some kind of a window that doesn't have them,

15:20 oh, am I lost.

15:21 I got on stage once at PyCon to do a lightning talk and somehow VI mode got disabled on my PyCharm and I was absolutely petrified.

15:31 Pat, how about you?

15:32 Where's the editor story?

15:34 It has evolved a lot.

15:35 Way back at Iowa State, I took Pascal on punched cards.

15:39 So that was a little different.

15:41 Then ended up getting into mainframe programming.

15:45 In the IBM world, they had their editor.

15:48 And when we transitioned then to PCs, there was a company, Mansfield Software, that created

15:53 K-Edit to mimic X-Edit from the mainframe.

15:56 And they did a great job.

15:58 And that was running under DOS pre-Windows.

16:01 And then they did come out with a Windows version, which I still use today.

16:05 Now, most, there it is right there.

16:07 Yes.

16:08 Most of the time, I attempt to use VS Code because you can remotely connect to all these AWS instances,

16:15 or maybe they're even in-house running on VMware.

16:18 But when you want to use some AI assistance, I'm in Devon, I'm in Kiro, which is from AWS.

16:26 And then for the final edit, I may tweak something at runtime with Vim.

16:32 That's usually my choice if I have once in a while Nano because the defaults for Vim sometimes on a particular instance prevent pasting or something.

16:41 So I'll have to fall to Nano.

16:43 Yeah, I do fall back to Nano every now and then on some kind of server or I just need to edit this thing and we're just going to use Nano is going to be here.

16:51 It'll be fine.

16:52 And I did used to do Emacs way back in the day.

16:55 So sorry, sorry, Calvin.

16:56 But so it feels a little bit like that.

16:58 I've come to terms with it.

17:00 I'm OK with people who use Emacs.

17:02 just just for the record like when i was in school like we heard rumors that there were people who

17:07 use this editor called vi and like i was like fine but we all sort of agreed that whoever used such a

17:13 thing like clearly wasn't a serious programmer and it literally took me like a decade out of school

17:18 to discover there are smart people and good programmers who use this vi thing and we should

17:24 perhaps not look down at them so much so it's okay yeah i think it's a school by school thing

17:29 I think it depends on what terminal they set you down to and what tutorial they told you to do.

17:34 And that's what you got.

17:36 100% brainwashing.

17:37 Yes.

17:37 Well, I think that brings us to a really nice next up section that I think has certainly changed a lot in the last few years.

17:45 And that's terminals.

17:47 So pretty much you all just open up Terminal on the Mac, right?

17:52 Or CMD on Windows?

17:55 I do CMD.

17:56 I do WSL, though, too, the subsystem for Linux.

17:59 But by and large, I'm just in Bash.

18:01 So I don't do phish or any of these other command interpreters.

18:05 The one thing I do like is something called Royal TS.

18:09 And that allows me to have a whole list and subgroups of servers where I can remotely connect as whatever user I want.

18:17 It saves credentials.

18:19 You can make it a little bit colorful.

18:20 It works for SSH, for RDP, HTTP, SFTP, VNC.

18:28 It's pretty great.

18:29 I'm a fan.

18:30 Is that Windows only, the Royal TS?

18:32 It is not.

18:33 It's Mac and Windows both, yeah.

18:34 That's very interesting.

18:35 Yeah, because you do so much DevOps of managing remote machines, and especially if they're Windows,

18:40 you know, you often need a GUI.

18:42 Connect remotely and away you go, yeah.

18:44 But I do use TMUX because you have some long-running tests and you never know when your credentials expire

18:50 and you get disconnected or this or that.

18:52 So your process continues to run.

18:54 Calvin, you don't use Terminal?

18:56 I am a, no, I do not use Terminal.

18:58 big fan of a cross-platform terminal called Kitty.

19:02 It's claimed to fame is a 3D accelerated terminal.

19:07 So it uses your GPU.

19:08 So it's a GPU accelerated terminal. So it'll scroll text faster than any terminal out there.

19:13 And I like the fact that it's on Linux.

19:16 Because for a while, I was running full-time Linux desktop.

19:18 Like for three years, I ran only Linux because Apple insisted on this touch bar thing on their keyboard.

19:25 And so I jettisoned my Mac, went to straight Linux.

19:28 And then when they got back to a regular keyboard, I came back to the Mac,

19:31 but I kept Kitty the whole time.

19:32 And anytime I get on Windows, I can always get Kitty there as well.

19:36 So I like that. I also have been a Tmux person historically, although I have switched over to herdr for window management, remote session management,

19:44 AI agent management.

19:45 I really love the fact that it is a kind of AI native multiplexer.

19:50 Kitty also has a built in multiplexer, which I kind of stopped using Tmux when I adopted Kitty

19:54 because of Kitty's native window management and Tmux-like features.

19:59 But now I really like herdr for doing that kind of thing.

20:02 Actually, I haven't had a chance to play with it.

20:03 herdr now has features for remote agent sessions.

20:06 And so I use Mosh all the time with a VPN from my various devices so that I can constantly be in connection

20:12 with those agents that are running on any server, any place.

20:16 Something I've seen a lot of traction on is herdr.

20:18 Although I still like editors when I'm working with my AI stuff.

20:23 And so it's not that I'm necessarily writing a ton of the code or always babysitting it,

20:28 but I'd like to kind of interact with it from an editor side while it's running.

20:31 So I haven't gone fully down this path, but yeah, it's super cool.

20:35 If I was going to use a more rich client, I think the JetBrains have their Air AI agentic client,

20:41 and then Codex is pretty reasonable.

20:44 And so the same thing with the Cloud desktop, which has now Codework and Code in it.

20:49 Sydney, what kind of terminal do you use to connect to Slack?

20:52 Just kidding.

20:53 I feel like I'm not as like tinkery here.

20:58 I mostly just use like the embedded terminal in whatever IDE I'm using.

21:03 I've heard a lot of good things about Ohmypy recently.

21:06 And I know like OhMyZSH was popular as well.

21:10 But yeah, honestly, my answer is boring here.

21:13 Like just because I'm doing so much not in an IDE, I feel like I'm a little bit less tied to a specific terminal.

21:20 Yeah, very cool.

21:21 Reuben, Jupyter has a terminal, right?

21:22 More than many other people, that's for sure.

21:24 Like I've been using a lot of Marimo lately.

21:26 And one of the things I totally miss is the like exclamation point allowing me to execute

21:31 commands at the backend.

21:32 Because I just got so used to doing that from Jupyter.

21:35 For terminal stuff, I was using iTerm2 for many, many years.

21:39 And at some point I realized I'm not using like 90% of its functionality,

21:43 including all the TMUX stuff, which I just, I never figured it out.

21:46 I never figured out how to get it to work or how to work with it or why I would want it.

21:50 I'm sure someone here can explain to me, I would just open up new tabs and I was okay with that.

21:54 And then I found out about ghost TTY, which I think I've just pronounced an extra T in there.

21:59 And I switched out a few months ago.

22:01 I've been super, super happy with it just because I don't need all the extra iterm2 stuff.

22:06 And I had some problems with the Claude Code actually. It was like giving me some weird scroll back and flickering and so forth.

22:12 So I put Claude Code into TUI full screen mode.

22:15 And not only now when I load it up, does it give me full scrollable and searchable back

22:20 my entire history, but it puts this diff window up in the right of my terminal.

22:25 And I've been just like super, super happy as a result. That's super cool.

22:28 I was for a long time working on warp, which I really like warp as a terminal,

22:33 but they're kind of trying to be a pie or some, you know, Claude Code, but through there,

22:40 which I don't know, kind of turned me off a little bit.

22:42 And my friend Mark said, you need to be checking out CMUX.

22:46 Are you familiar with CMUX?

22:47 I'm familiar with it but not tried it yeah it's pretty nice it'll do a little bit of a you know multi-window

22:53 split different ways type of things and what's cool is you have workspaces that are connected to

22:59 maybe it remembers the layout and it'll restore ssh connections if you shut it down and open it back

23:04 up across all the different things and so it's pretty neat it has a an iphone version as well so

23:10 cmux and mark and i were at a coffee shop sitting there looking at something and someone across the

23:15 way he goes excuse me i'm sorry i just i have to come over i just saw that you were talking about

23:19 cmux and here's my cmux okay so apparently uh at least three of us use it now and it's i believe

23:25 it's based on ghost tty as well rumin it's open source it's pretty cool can i just say how wild

23:30 it is that in 2026 people are still developing new terminals and like i would have expected this was

23:38 a long ago solve problem like feature complete and yet like i guess it's all the ai stuff that's

23:44 like driving all this new rush of creativity and products and you have to rewrite it in rust too

23:50 reuben 100 i mean it's just completely crazy like i'm so excited to set up my terminal

23:55 to uh be able to ssh into or talk to my you know studio m5 max so i can get it to run a terminal

24:03 like oh my gosh you know i really take an advantage of it right so it can shell out to the cloud for

24:07 ai things or whatever it's doing or server work um incredible now this next one this next topic

24:12 I think.

24:13 Go ahead, Calvin. You got something to say?

24:14 I was going to say that the terminal UI and the CLIs that have now followed are giving a really rich interface for all the LLMs and agentic harness pieces.

24:24 So instead of relying on, say, like MCPs and things like that, you're getting actually really great CLIs.

24:29 Like my email client now ships with a CLI that I can go use myself, too.

24:34 I can tell my agent to use it, but I can also use it, which I found quite handy because I'm living on the terminal.

24:40 so I can stay on the terminal, check in on email, for example.

24:43 So I use Spark Desktop as my email client, and it has a Spark CLI.

24:46 Awesome. Yeah, I use Spark as well.

24:48 I don't use our CLI, but I do use Spark as well, which I like it a lot.

24:52 I like it better than the whole MCP option for local stuff like that.

24:55 I went so far as there's even a CLI for Talk Python these days.

25:00 I just want to point this out as a segue to the next one here.

25:04 uv tool install, okay?

25:06 That's how you get the Talk Python CLI.

25:08 You don't have to authenticate anything.

25:09 It just lets you ask questions like, you know, what did Sydney say on her first episode?

25:14 Like, give me the highlights or whatever.

25:15 And it would literally, you know, do that kind of stuff if you plug it to your AI.

25:19 But the only thing better is just typing uvx in the name of the package you want to run and not even thinking about it.

25:23 I know there's a lot of tools and, you know, they've really done incredible stuff.

25:29 You know, pipX, there's pip, obviously.

25:32 There was a time when there was no pip.

25:34 Python existed for a long time without a package manager.

25:36 Partly why the standard library has so much stuff in it.

25:39 Those are dark days, Michael.

25:40 Oh my God.

25:41 Like the amount of time I spent in my intro classes, helping them install pip so that they could install things.

25:48 Like, oh my God, what madness.

25:50 Exactly.

25:50 I think uv saved a lot of that, especially with the Python, you know, uv,

25:53 Python, three, whatever.

25:55 I guess today we could say 3.15, right?

25:57 Like it's October 1st.

25:59 It's supposed to be out sometime.

26:00 Did it launch?

26:01 I hope so.

26:02 That's an exciting release.

26:03 I haven't checked.

26:03 I just woke up and went to a podcast.

26:05 So I'm disconnected from the world.

26:08 So that's very interesting.

26:09 Download is still 3.14.8 as of now.

26:12 I mean, we had Poetry.

26:14 We had a bunch of others.

26:15 Flit.

26:16 But uv definitely took the world by storm.

26:18 I agree.

26:19 And we went from Pip.

26:21 And at some point in there, we tried PipX.

26:23 But when uv came on the scene, and the speed was the true feature of that,

26:28 and the consistency of how you ran the various tools, I don't like to disparage other tools.

26:32 But I will say that when you type the word poetry, if you use the word poetry in our Slack,

26:37 there was a Slack bot response with a haiku that was not favorable to poetry.

26:41 Would it rewrite poetry and Russ using an AI if you said that?

26:43 Or was it just a poem?

26:45 I'll just say that poetry is a really good tool if you are all in on poetry.

26:49 And I wasn't ready to be all in on poetry.

26:51 There was a whole bunch of extra overhead of pieces it would do that I just didn't either didn't need,

26:56 didn't want, or I didn't care to want to go learn.

26:58 And so I feel like uv encapsulated a lot of my pre-existing opinions because I was using PyPI for managing Python versions.

27:06 I was using pip with lock files and like some extra flags to make it very, very reliable for

27:13 getting exactly what I wanted when and where for penning.

27:16 What was the other opinion I had on that?

27:17 Oh, using pipx for like the tools install.

27:21 So I kind of had that opinion around how we would install like Python tooling into the machine.

27:27 So uv just took all like the things I already love.

27:30 So I guess I was biased. I was already biased on it because those are the ways I liked operating.

27:33 and uv took my same opinions and tax.

27:36 And so I was like, all right, I'm all about uv at this point.

27:37 Let's go.

27:38 Nice.

27:38 Sydney, what do you all use?

27:40 All uv, yeah.

27:41 I feel like uv was like the speed up for package management that like rivaled what AI agents did for coding,

27:52 right?

27:52 Like the chart we're seeing here, just like the delta and like pain that it took away

27:57 was like pretty radical, which is exciting.

27:59 So yeah, all uv, and I'm sure we'll get to this later, but I'm a really big fan of all of the developer tooling

28:05 that Astral has developed.

28:06 I think they're rolled into OpenAI now, but yeah, just really great stuff

28:10 in terms of like developer experience and like attention to speed and productivity,

28:15 which is super great.

28:16 And I think it's really interesting to see now like how easy it is for agents to use those tools.

28:21 And I think they've really like geared towards making the tools agent native for coding as well.

28:27 It's got an unexpected AI angle as well.

28:29 A lot of the AI tools really like it.

28:30 I'm going to come back to some of the astral tools in this section, but in another section,

28:34 rather.

28:35 Pat, I know uv works on Windows, but in the DevOps world, you got other things or is it

28:39 all uv?

28:40 Funny you say that.

28:41 I am all uv, but in the corporate environment, they have policies applied to the machines

28:47 and just straight installing Python.

28:49 That's a no-go.

28:51 And uv kind of ends up in the same spot.

28:53 But under WSL, then we're more free to do what we want.

28:57 And I'm more of a heavy, like a PEP 723 user, the section at the top to declare your dependencies,

29:05 because almost 90 some percent of what I write, it's a single file script.

29:11 And then for side projects, I do virtual environments, but I use uv now rather than them.

29:16 Yeah, that's really cool with the stuff at the top.

29:18 You can almost treat it as a bash script.

29:20 Like here's a file, you just run it, it's going to work, right?

29:23 I saw someone put an interesting shebang on the top of one with that same inline includes.

29:27 where it's just like UBRun.

29:29 I was like, oh, this is genius.

29:30 So it's change mod 755, this Python file.

29:33 It's now fully executable.

29:35 Nothing else needed.

29:36 The magic just happens.

29:37 I keep having to prompt my DevOps agents, the various agents to use the 723 section up there.

29:45 And then one of them just threw that in, the shebang.

29:47 And I'm like, oh, that's genius.

29:49 Let's do that.

29:50 Very, very cool.

29:51 Sydney said something about Astral and OpenAI.

29:52 And I think it's good that I had kind of forgotten that even happened because things just seem to have carried on as they were,

29:59 right?

30:00 Yeah, I had Charlie Marsh on a couple of months ago to talk about that and the changes

30:04 and sort of look after he'd been inside OpenAI for a couple of months.

30:08 And yeah, that's a good point.

30:09 There hasn't been an, oh gosh, what are we going to do now?

30:12 That was so 2025 or until it was gone and it's still going strong.

30:16 Reuben.

30:16 I'm also all in on uv.

30:18 It took me a little bit of time to realize it was not just a super, super fast pip,

30:23 but that was like the gateway drug to start using it.

30:26 But like, think of it, how many times over the years do we go to Python conferences and there were two,

30:32 three, four talks trying to explain packaging, all the different tools, all the different ways to do it, different versions of Python, on and on.

30:39 And the talk would inevitably have in it somewhere, oh, if only we could solve this mess to make it easier for people.

30:46 And the core developers were like, we are not entertaining any suggestions unless you come and actually solve these problems because it's so complex and you can suggest things all day long and we don't have time to even entertain these ideas.

30:58 And along comes uv and it solves all the problems for, you know, for, you know,

31:05 versioning, for packaging, for uploading to PyPI, for Python versions.

31:10 And it does so super fast.

31:11 Like, it's not a surprise that everyone's on board with it.

31:14 And when, you know, Astral was bought by OpenAI, I know there were some people worried about it,

31:19 but there's a lot of corporate sponsorship of open source and we've lived with it for years.

31:24 And I think Astral has proven themselves so far to be very reliable stewards of this super amazing tool.

31:30 Yeah.

31:30 And it's not hindered by the release cycle of Python, the language itself either,

31:34 which is another big benefit here.

31:36 Yeah, it's super interesting.

31:37 And how long will it be?

31:38 This, I think, is maybe one of the most important things that it's done.

31:42 How long will it be until I could just uv Python install 3.15 a day?

31:47 Will that work today or tomorrow with Python Builds Channel?

31:50 It worked this week when I did the Python Bytes demo of the dungeon crawler for the What's New.

31:55 That's right.

31:56 Yeah, that used the RC, whatever the last RC was, right?

31:59 I did this months ago.

32:00 I had a playlist that I did on my YouTube channel of like, get ready for Python 3.15.

32:04 And how did I tell people to install it with uv?

32:06 And it just worked.

32:07 It was extraordinary.

32:08 So for all the benefits that you all extolled about it, I think one of its killer features is it lives outside Python.

32:15 And it can be the way into Python.

32:17 So for example, with Pat's way of I want to run this thing, this script that I built, and here's its dependencies,

32:23 and it needs a VNV and all that sort of stuff.

32:25 You don't even have to have Python on the machine at all.

32:28 And that still works, right?

32:29 And there was none of the other packaging tools, as much as I liked all of them, none of them could do that.

32:35 It was always you set up Python, then you install this into it, and then you can start having tooling conversations,

32:40 right?

32:40 Yeah, just a few years back, I was really considering a container-only approach to this

32:45 because installing Python and installing dependencies and installing packages has just gotten so difficult.

32:50 But the containerization piece worked.

32:52 But uv changed all that for me.

32:53 Like it just now made it that same convenient kind of one-liner to get what I needed.

32:58 I'll add that virtual environments, virtual environments have like been the solution

33:03 to the conflicts between different projects.

33:05 And everyone, I mean, I certainly hated them like dealing with them and activate and deactivate and where am I?

33:10 And uv is like, oh, we'll just hide that from you. You don't like, we're going to take care of it,

33:15 but you don't have to actually do anything.

33:17 And for me, that was like magical.

33:19 I mean, it's so bad that XKCD made a comic about the, my laptop is now a super fun site.

33:24 For those of you guys out of the US, a super fun site is something so polluted,

33:27 it requires extraordinary measures to like protect the public from it.

33:32 Let's give Sydney the last word here. I think that the fact that uv can actually bring

33:37 Python to the machine or to the environment is why AI is really liked it,

33:42 right?

33:42 And really make use of it because it just removes all those details, right?

33:46 What do you think, Sydney?

33:47 I think this like generally connects to this idea with agents and models that like they're

33:53 really good at writing code.

33:55 And the reason that is, is kind of twofold.

33:57 One is like they're trained on a bunch of code and a lot of code is like verifiable,

34:02 right?

34:02 Like you can confirm that like something runs or it doesn't, a test passes or it doesn't.

34:06 And then they're also like post-trained on code syntax.

34:10 So these tools now are like very familiar at the like weights level for models,

34:15 right?

34:16 And I think uv, obviously, even before AI emerged or before like prolific AI emerged as like the leading package manager.

34:26 And so I think AI tools, AI models are able to like use it effectively to control an environment where code is run.

34:34 And ultimately, like models don't only need to be good at writing code for like the coding

34:39 agent case, but like general agents also use code as like a means to achieve an end.

34:45 And so, yeah, I think it's pretty exciting that like this performant tool came out and

34:48 is now like a super fundamental part of how those models operate.

34:52 There's a reason that OpenAI acquired Astro.

34:54 Right, right.

34:55 Exactly.

34:55 It's not just that we need things, I'm sure.

34:57 Yeah.

34:58 Somehow.

34:58 You might also note, like if you're using kind of the latest and greatest models like Astra

35:02 or Opus 5.5, like they are really heavy on the code writing, like in your Claude Code session.

35:10 If you're looking at like the tools that it's calling, it's no longer like read file, write file.

35:14 It's like bash, bash, bash with, you know, all these like complex scripts and things.

35:18 So definitely plays into that as well.

35:20 Yeah, cool. Or you'll see a Python dash C and some giant string.

35:23 Which I don't like because then it makes me kind of approve it.

35:25 I think the harnesses need to grow some more Python native tools.

35:29 So they just call those naturally.

35:31 Yeah, then I can just call eval. It'll be all fine.

35:33 I mean, look at what we're doing already.

35:36 My one interesting kind of observability note here is like, or I guess I'm curious why you would prefer for them to call more like Python native tools.

35:46 I think mostly for the reporting aspect of it.

35:49 I've been using agents view as a tool to report on my sessions to kind of evaluate how well I'm performing.

35:55 I'm performing with the agent to get better output.

35:58 So I watch and when I see 85% of the session was just bash tool calls, I'm like, I wish it kind of knew more granularly what those things were at a glance.

36:08 So I like this.

36:10 Michael just brought that up on the agents feed.io.

36:12 It is really interesting to kind of analyze how you're doing.

36:16 You now are feeding back into the human part of this, how we can interoperate more natively with these tools.

36:22 This is like definitely connected to what I think about a lot.

36:26 I think, I don't know if it needs to be like specific tools that are attached to the agent

36:30 that are like more discreet, like Python operations.

36:33 But I do think having like observability into like, is this thing operating efficiently?

36:38 Is that like a result of its structure or of my like, am I doing a bad job prompting it

36:43 for this task?

36:44 Or is it like not well equipped to handle this task?

36:46 Like this one will give you a grade on your context window usage.

36:50 And it'll score you on like bad behaviors and point them out.

36:54 AgentP is great.

36:54 This is totally new to me.

36:55 and this is amazing looking.

36:57 We're in serious danger of going down the hole and having a too long of a show.

37:01 But Agent's View is amazing.

37:03 Calvin and I kind of discovered it at the same time on Python Bytes.

37:06 And I think you got it set this way as well, but I've got it set up where there's a

37:10 daemon server sort of version so I can view it from the web.

37:14 But more importantly, normally, if you install it, it just works on your one machine.

37:18 But I've got my Mac Mini, I've got my Mac Studio, I've got my MacBook.

37:21 I want a holistic view of all the AI things that I've done.

37:24 And so you can get them all to push to some central little Postgres Docker container.

37:29 And then you get this view over of everything.

37:32 I have that set up so all my machines feed into that one database.

37:35 And so I get a holistic view of all my AI usage.

37:38 And Reuben, the most scary part is it shows you the cost of tokens if you did it all on true cost,

37:43 which is...

37:44 I fear we do need another podcast for this.

37:47 This is super interesting.

37:48 Y'all do some research.

37:49 We might just circle back in a few weeks.

37:52 Okay, so I thought we had nothing to say about uv other than just, yeah, you're right, Michael.

37:56 We all agree.

37:57 Web frameworks.

37:58 Sebastian was supposed to be here, but he couldn't make it.

38:00 So maybe we can start with FastAPI to sort of shout out his little project.

38:06 Have you all heard of this?

38:07 I've heard of FastAPI.

38:08 I actually just gave a talk about it at DjangoCon.

38:10 So Frank Wiles and I got up on stage and compared what using Django with, say, Django Ninja would be like compared to FastAPI and maybe when one's better for another.

38:20 FastAPI is definitely still faster.

38:21 but not by like a huge, huge amount.

38:25 There's definitely instances where this is the better framework to reach for

38:29 if you've got specific use cases because you don't have to bring along a whole big surface area

38:34 of all the awesomeness that Django gives you.

38:36 So we use both and we pick and choose which one fits the task best.

38:41 If you have something that may grow into something bigger, Django Pi may be a better place to start.

38:46 If you've got some quick and dirty, you need to get good quality APIs up

38:50 for some specific use case.

38:53 I use FastAPI for some personal projects like that because it's just, I wanted a quick way,

38:57 the tooling around FastAPI and the skills that he provides.

39:02 So Sebastian's also very big into library skills as his other repository,

39:07 where he's built a package to produce skills for other open source packages,

39:12 which means that this has a really rich set of skills that your agent can use when coding

39:16 to be very effective on the best practices for how to use FastAPI.

39:20 So he's approaching it from an AI-native coding perspective that this should be used with those harnesses

39:26 and you'll get hopefully best practice quality code out of it.

39:29 We've got to make sure that we keep going because at the end of our list,

39:33 I have a documentation system that is AI-native and I absolutely think is underappreciated.

39:39 But to me, FastAPI is not about fast performance.

39:42 It's like fast development of doing things right and comprehensively with Pydantic and OpenAPI

39:48 on all those different things that it brings and validation.

39:52 I mean, if that's your true concern, I think you'd be really pleased with Django Ninja.

39:57 You can basically change one import and the code looks almost identical from a FastAPI project to a Django Ninja project.

40:03 So I'll still put in a big plug for Django in this case.

40:07 100% Django is on this list, I think.

40:09 I want to hand this off to Sydney because I think those two things that you brought up, Calvin,

40:13 both have a central pillar and that's Pydantic, which I know you've done a lot with.

40:18 I actually was first using Django and trying to get Pydantic to work well with it.

40:25 When I first interacted with Pydantic open source, I had used Pydantic previously,

40:30 but that's really how I got my open source start and then started using FastAPI very soon after that.

40:36 This was years and years ago, but I think Pydantic has filled a gap that Python had in terms of it's not a strongly typed language.

40:45 And there's a lot of challenges that come along with that.

40:48 And so it's kind of this bridge into like, if you would like to opt into more strongly typed things,

40:54 then you can use Pydantic for data modeling and validation.

40:57 And it makes sense that it's kind of the backbone of FastAPI, just in that you need kind of structured data for requests and responses,

41:04 which are really like the bread and butter there.

41:06 And it's really exciting to see how Pydantic was first, I think really first popularized probably through FastAPI.

41:13 And then has really been further popularized with the emergence of LLMs because they also kind of need a bridge into like more structured data, right?

41:23 Like LLMs produce text and Pydantic is kind of the bridge back into like,

41:27 let's validate that data and turn it into a predictable model that we can then use in code driven applications.

41:33 Here I am again on my like AI rant, but yeah.

41:36 There's some other angles as well.

41:38 I think I want to save them for later.

41:40 But yeah, I think this, I think Pidantic fits very well with AI things.

41:44 So interesting.

41:45 Pat, what's the web story from your world?

41:47 I typically end up using Flask for anything at work just because there's so much source

41:53 out there that the LLMs have ingested and can easily spit something out that works.

41:59 And for me, it's more quick and dirty.

42:02 an end user application that faces customers or anything like that.

42:06 For personal projects, I use Robyn and I know that you kind of evaluated Robyn.

42:11 What, what interested me is it's very flask like and written in Rust and supposed to be multi-threaded.

42:18 And I found it to be very usable anyway.

42:21 A couple of things bit me where the, there's not near as much code out there for the

42:25 the language models to look at.

42:27 So, somehow you have to herd your agent to, to write the correct code. I have a whole AI section, but I don't know if we're even going

42:35 to be able to get to it because we're just going down this little edge on each one,

42:38 which I think is very interesting.

42:40 But one thing I've been doing for projects, especially like Robyn and others that are not as well-known is I will literally download the

42:47 entire repo, which often has the documentation.

42:50 And then I'll open up a Claude Code session.

42:55 I'll documentation and the quick starts, ground it in the code and generate me a skill or some kind of

43:02 thing that I can then give to my Claude Code or whatever on the project I'm actually trying to

43:07 build with this and have it kind of create a self-teaching thing and say, you always use the

43:13 Robyn agent for building this because you don't know it well enough or something along those lines,

43:16 which sounds a little bit like what Sebastian was doing.

43:19 And that's been very successful for me.

43:21 Reuben. So I don't do that much web stuff.

43:23 And for a long time when I did, it was just like, well, throw something together with Flask just because small,

43:29 simple, I didn't need all the overhead of Django.

43:32 Lately, when I've been doing web stuff, like the back end of the practice system I have

43:36 on my site, I ended up using FastAPI and that's fine too.

43:41 But I tend to be sort of just neutral on this in part because it plays an important but small role in the applications that I'm running.

43:49 FastAPI works fantastic.

43:51 And the fact that there's a ton, a ton of, you were saying, like Argya says, Pat was saying,

43:55 the fact there's a ton of existing code out there in both Flask and in FastAPI,

44:00 and for that matter in Django, means that the LLMs are very good at generating and working with it.

44:03 I'm on Team Flask as well.

44:05 Most of my web apps are Flask, but I also have some FastAPI things.

44:09 All right, we got to keep, go ahead.

44:10 One sad moment there is I wish Pyramid would have made a bigger go and become more prominent.

44:16 I really enjoyed the Pyramid framework, but sadly, it's not an option today, really.

44:22 I agree.

44:22 I was a believer and longtime user of Pyramid.

44:25 All right, let's move on here just for the sake of time.

44:29 I'm going to skip a couple and let's talk type hints.

44:32 Type hints, to type hint or not to type hint.

44:35 That is the type question.

44:36 Well, I think Sydney needs to kick off this one.

44:38 Yes, exactly.

44:39 Yeah, I'm smiling over here.

44:41 Yeah, ty.

44:42 Hi, ty.

44:43 I don't know what people prefer.

44:45 I asked Charlie and he said ty.

44:46 Okay, great.

44:47 Because I'm like, Charlie, we need some help here.

44:49 You can't just leave this hanging.

44:50 You got to tell us how to say it.

44:52 He said ty.

44:52 ty is excellent.

44:54 I obviously am a big fan of the tools from the Astral team.

44:58 Not surprising given my tenure at Pydantic, but I'm very big on like typed code when possible.

45:04 I think the Python core team has also done a ton of work to make expressing types clearly

45:11 and well in Python, like much easier even without Pydantic.

45:14 And it's super exciting now with like ty that type checking can be so fast.

45:19 And I think, you know, where developers used to view typing things as like maybe a pain or like more boilerplate E agents are like,

45:26 take a lot of that load off.

45:27 So I think the more we can do this, the better.

45:30 Yeah, no surprising opinions for me.

45:31 No, I kind of expected that.

45:32 That's great.

45:33 Yeah, I'm probably on the other side of that.

45:35 I mean, I recognize the value of type hints and typing for the LLMs and the harnesses, etc.

45:40 and IDEs.

45:42 But one of the things that brought me to Python the language was the stay out of your way,

45:46 get stuff done quickly, efficiency of the language.

45:50 I feel like that came with the duck typing and the use of white space as a meaningful piece where I wasn't writing.

45:57 One of the things that always bugged me about other languages was a lot of the ASCII art,

46:00 the hash rockets and yada yada stuff that Python never brought to the table and kept clean.

46:06 And so when I code, if I ever hand code anything, I'm not using type hints typically.

46:12 Although if I'm using the AIs and the harnesses, I want them to do that because I want to have that determinism when the code is running through tests and catching those kinds of those classes of bugs before they even run.

46:25 So I'm for it.

46:26 I just that's not why I came to Python.

46:29 You'll stay anyway, but that's not why you're here.

46:31 I will stay anyway.

46:32 I'm here.

46:32 I'm here.

46:33 I'm not going anywhere.

46:34 I love the language.

46:35 And I'm glad it's still an option.

46:38 Like it's, I'm not forced to use it.

46:40 Like there are other languages where you can't even code in the language

46:43 without touching that aspect of the syntax.

46:46 And I'm glad Python still allows me to write what I love about it.

46:50 Pat Rubin, what do you think?

46:51 Yeah, with DevOps, it's mostly single file scripts.

46:54 So I don't type in any of those side projects.

46:58 There's heavy AI involved there.

47:00 So usually I do.

47:01 And some of those may end up being public at some point.

47:03 So it makes sense to type in those.

47:05 Yeah.

47:05 And even if you don't ask it, a lot of times AI just does it anyway.

47:09 I'm kind of like Calvin, where I grew up as like a dynamic language kind of guy,

47:14 sort of saying, oh, come on, all these types, like, really, do we need it?

47:20 And then like, you're getting to the, well, I guess if you're not a good programmer, then

47:23 you need it.

47:24 But if you're like a cool person, like, you know, smart person like me, then you don't.

47:27 And then I started to discover a few different things.

47:30 Like, first of all, if you have a team, not everyone on the team is necessarily schooled in everything,

47:36 reading all the documentation, reading all the API stuff, on, on, on.

47:39 They can make mistakes.

47:41 And also the people coming from Staggly type languages feel like there's a safety net.

47:45 Like they like the fact that there's typing there.

47:48 And so all this together makes me feel like, yeah, I'm all in now.

47:52 Maybe not in necessarily writing my own code directly, but very much so in LLMs.

47:56 I think it's a great way to keep them on a short leash.

47:59 And I recently and embarrassingly recently realized, okay, type-ins are great,

48:04 but Pydantic is amazing.

48:05 It's like the difference between having the Postgres columns being typed and having the

48:10 check sort of stuff on them saying, well, it must be greater than zero, it must be less

48:14 than this.

48:15 You can really, really tighten the belt there on what's acceptable.

48:19 I think it's a great thing.

48:20 And kudos also to the core developers who have managed to do this so elegantly and allow

48:26 you to sort of slide into it at whatever pace is good for you.

48:28 I'm a big fan.

48:29 as well.

48:30 I think I grew up different.

48:32 I learned my first language was C++, then I did a bunch of C#.

48:36 So even type Python looks clean to my eyes of what I have been doing.

48:41 But that said, I think there's a time and place for these kinds of things.

48:44 So maybe on some sort of, if you have a package, all the public functions should be typed so that things using it can verify

48:51 they're doing it correctly. But that doesn't necessarily mean the internals have to be

48:54 completely blown up with typends everywhere, right?

48:56 It's there to communicate.

48:57 I originally really love the idea because it makes editors work better.

49:02 You see a squiggly, that probably means you're doing something wrong and it can figure that out where otherwise it wouldn't.

49:07 But these days it's also keeping AIs in line as some of y'all have mentioned.

49:11 So yeah, for the, when I have any of my agents do anything, I'm like, you're going to run ty,

49:16 you're going to run ruff, you're going to run the tests and you don't call yourself done or you don't consider it correct

49:22 until all those things pass, you know, and just keep them, keep it all zero warnings.

49:26 Like, you know, I think that's the way.

49:28 I sometimes say to people that the things we can tell agents and LLMs are the sorts of things that would get us like written up for being of abusive behavior as a manager if we were to do all these things to the software developers on our team.

49:41 But if like, you know, they can't complain or they'll call me a genius even after I forced to do this stuff,

49:48 then I'm all in.

49:49 I think some people would have considered themselves to be pedantic about these kinds of errors and not clean them up.

49:56 And so I feel like this is a good thing.

49:57 We're not going to get through a whole list, but I think an important section.

50:01 Well, OK, let's just go go round really quick and ran out of this type checking one.

50:05 What type checker do you use?

50:06 Is it all mypy or what are we doing?

50:08 I use mypy because I'm embarrassingly old school with this.

50:12 But when you sent out the email for this for this episode, I was like, oh, let me look at

50:16 these other things.

50:16 Oh, I should try something else.

50:18 They're much faster.

50:19 So this episode alone might have changed my opinion on that.

50:22 ty for me used to be mypy.

50:24 mypy is the only thing that ends up in mine, just due to the LLMs.

50:28 Yeah, they do.

50:28 They do bias towards it, but I tell it it's wrong.

50:31 I tell it it has to use ty as well.

50:33 I was looking at what our current opinions on this are.

50:36 My guess is we are on TIE.

50:38 I'm not writing any of the production code for any of our customers at this moment.

50:41 So I'm not the best person to ask about that.

50:43 I know we were on mypy long ago.

50:46 So my guess is because of the way the team bubbles up new technologies into our standards,

50:51 best practices like in scaf our little scaffolding tool that's the place where i'd go look to see

50:56 what we're using i'd really love ty but also gotta give a little shout i got my pyrefly shirt on from

51:00 having the pyrefly team on so i wore that for for today i think pyrefly is really neat as well and

51:07 it's also rust also super fast got some good extensions and plugins and stuff as well okay

51:12 a couple more bits we got to talk about databases i kind of felt like this was going to be

51:16 straightforward but not as straightforward as uv and uv was not straightforward so let's go love

51:20 Postgres, period.

51:21 Yeah, I think I start off with Postgres for a lot of things.

51:24 But again, here's my like, Sydney's talking about AI again, take a lot of the artifacts that agents end up producing are

51:32 really large. And so like some mix of like Postgres and then blob storage,

51:36 I think, often works well for the applications that I'm thinking about.

51:40 I saw you had on the list DuckDB.

51:42 I think DuckDB is very entertaining.

51:44 I think a lot of what I've been thinking about with databases recently is like how data models are like back in vogue, right?

51:50 Like, are we actually structuring data correctly so that like agents or other things can appropriately like query at scale?

51:56 Postgres over here, for sure.

51:58 Although I'll give a shout out to the ZODB.

52:00 It served me well for many decades.

52:01 Yeah, production is all Postgres, almost all.

52:04 I do use SQLite and some DuckDB.

52:07 One of my side projects use lightning memory mapped database.

52:10 Thought it sounded cool and it serves the purpose.

52:13 So it was something different to try.

52:15 I'm going to give a shout out to Team Mongo.

52:16 I'm a big fan of MongoDB operationally.

52:19 It's just so easy.

52:20 Almost all the migrations we run are like, we need to add this column or something.

52:24 And it's just the way that your code just in the database kind of just grow together.

52:28 I really like that.

52:30 Though, I am on an absolute kick for small embedded databases.

52:35 So like Sydney, DuckDB, SQLite, I think there's actually some really interesting things you can do.

52:41 SQLite has gotten a lot of work to make it more production ready with the write-ahead log

52:46 and certain connection modes.

52:47 It's got durability.

52:49 Failure's got cross-process locking.

52:51 If what you're doing lives on a single machine, it's hard to think like an embedded database

52:56 works a lot of the time.

52:57 I would agree with that on DuckDB, especially the JSON features that it has.

53:01 If you're dealing with a lot of that type of data structure, you can build quick little apps

53:05 to like little CLI tools for messing around with that.

53:08 And it's super fast.

53:09 It's funny.

53:09 I have not used DuckDB as a database.

53:12 I've used it as a query system on pandas, where it is stockingly faster than pandas itself on pandas data.

53:20 I don't know how they pull that trick, but kudos to them.

53:22 It's really impressive.

53:23 I just had the Duck Lake folks on, and this is also super interesting, basically,

53:28 like ultra scalable stuff by just putting a bunch of Parquet files on S3

53:33 with a DuckDB or even something like SQLite or Postgres as a sort of metadata front end.

53:39 It's very interesting, these things.

53:40 All right.

53:41 Well, what have we got left here?

53:42 Let's jump down to docs.

53:45 Where are we with docs?

53:46 And I'm talking not wikis for people, but I've got a package, a library framework,

53:52 and I want people to use it.

53:53 So I went to FastAPI.

53:55 I pulled that up.

53:56 What is powering their docs there?

53:58 This is actually quite a bit going on in this space these days.

54:01 There's been MK docs.

54:02 I always said it, but I think make docs.

54:04 I don't know.

54:05 I used to call it MK docs.

54:06 I say MK docs.

54:07 That's what we use.

54:08 We use MK docs.

54:09 I love it.

54:10 There's actually been some stuff going on with MK docs, And I can't remember, there was like going to be a big rewrite, but a lot of the plugins

54:15 are kind of working.

54:16 So one of the two things that I put for this list is Zensical, which is a really interesting

54:22 next version of docs from the material for make docs folks.

54:27 And I just looked and that's what they've got for FastAPI.

54:30 That's what Sebastian has.

54:31 So that's very, very interesting as a project.

54:34 I think I believe it's Rust based if I remember correctly.

54:37 So obviously got that speed, speed element.

54:40 Another one that I thought was interesting, I also had these folks on from Posit,

54:44 is Great Docs.

54:46 Have you all heard of Great Docs? I feel like this doesn't get nearly enough love.

54:48 I saw that on the show and I thought it looked awesome, although I don't have much use for it because I'm not publishing packages,

54:54 but it does look awesome.

54:55 I still love these things for my own personal experience. I want beautiful rendered versions of my docs.

55:00 So that's why even for a personal project, I still may use something like MK Docs or Great Docs.

55:05 I had all these little projects and I finally broke down. I'm like, they need something more than a readme.

55:09 And I migrated them all to great docs.

55:11 And I'll show you one more thing in a second to tie back to Sydney's comment earlier.

55:15 But go ahead, Ruben.

55:15 No, I was just going to say, like so many of the things I've never heard about,

55:18 like great docs, I was thinking, oh, I wonder if it's related to great tables.

55:21 And I see it's also from people at Posit.

55:22 It's the same people who did great tables as well.

55:25 Yeah, yeah.

55:26 And they've thought a lot about it.

55:27 This one is kind of in your world, right?

55:29 This is a data science company.

55:30 This is Posit and folks.

55:32 Mintlify's done some pretty good work on like baking docs, agent native,

55:36 which is cool.

55:37 And so like on our LangChain docs, for example, we have like copy, you know,

55:43 MCP URL, like copy this as markdown for an LLM, like on all the pages.

55:50 And they also have components like copy this prompt that you can give to your LLM to use

55:54 this page.

55:55 I think Pydantic has also moved over to Mintlify now.

55:59 We used to be on MkDocs.

56:00 It's inconclusive.

56:01 The tests are inconclusive.

56:02 But LangChain docs, yeah, definitely on Mintlify.

56:05 Love the agent's focus.

56:07 One of the things I like about great docs, which I did not know about Mitlefy.

56:11 So this may well be right in the same area.

56:15 But I'll go over here to my website because I have concrete examples.

56:19 So all my little libraries and they each, we'll just go to the analytics one.

56:24 So you go over here and for each page, let's say, I don't know, it has a skills section.

56:31 So it has a dedicated skill and you have multiple skills and it shows you how to install the skill.

56:35 just you know this is just great docs making this right like it sounds like mentlify does the same

56:40 thing you can write this but if you don't write anything it'll automatically do it and if you're

56:44 on any page like login async you can go up to the top and put instead of html md and it gives you a

56:50 markdown version so then all the ai agents that want to read your docs can just do.md you can

56:56 copy the page which copies it as markdown it's got you know llm.txt and txt full that it generates

57:02 I don't know. I just think this is super neat.

57:04 But it sounds like you're already doing something similar with Mitlify, which I,

57:08 like I said, this is the first I'm hearing of it. So it's cool.

57:09 Yeah.

57:10 All right. Let's round it out.

57:11 Last area before we are pretty much out of time, but let's talk about hosting.

57:16 Talking hyperscalers, AWS, other things, something smaller.

57:20 What do we got? I just use DigitalOcean, like super, super simple droplets,

57:24 but I'm doing simple stuff.

57:26 I'm not a good example unless you have very small, simple things.

57:29 I wouldn't undersell it. I think DigitalOcean is really powerful.

57:32 And if you run your stuff in, say, Docker or whatever, and you get a big server,

57:37 you can go a really long ways by bringing your own stuff to the stack instead of tying into a bunch of cloud services.

57:44 Certainly, there's a lot less going on in terms of the console compared to AWS or Azure or whatever.

57:49 We're all in on containers.

57:50 So if there's a way to run a container, which DigitalOcean has their app platform,

57:55 which is kind of nice for throwing a container up and hooking it to a database

57:58 and be able to run some quick little app.

58:00 I've got kind of two modes of operation.

58:02 I'll either be running like full-blown Kubernetes, whether we're using like Talos Linux giant cluster

58:08 or using K3S in a single node to be able to orchestrate the container deployments.

58:13 That's the real killer feature for me for Kubernetes is the control plane URL for releasing code

58:19 without having to like shell into a box and clone or pull anything.

58:23 And then on the other side, I really like, I've been using Cloudflare workers

58:27 and Cloudflare API gateways to throw quick code up there.

58:31 And now Python is a first-class citizen for Cloudflare workers.

58:36 So I've been using it to slowly replace Zapier zaps for my specific use cases where Zapier had some oddities

58:45 or hoops I had to jump through.

58:46 I just coded something up and released it into Cloudflare.

58:49 That's very cool.

58:50 And foreshadowing, Alvin, I'm having the Python Cloudflare worker team on podcasts in a few weeks.

58:57 That's amazing.

58:57 Who else wants to chime in on this thing?

58:59 We use like 90 or more percent AWS.

59:03 And we've got multiple EKS clusters and an ECS cluster.

59:08 So lots of containerization.

59:10 We do have some workloads and authentication over on the Azure platform.

59:15 And then we sort of backed into Oracle Cloud because they purchased Zenedge several years ago.

59:21 And we use them as a kind of a CDN and they run a WAF for us.

59:26 You already talked about DigitalOcean.

59:28 That's right. I did DigitalOcean for a long time. I really like them.

59:30 I actually switched stuff over to Hetzner when they first came to the U.S.

59:35 and still running on them. And I think they're really interesting.

59:38 However, this AI stuff has, I don't know if anyone else has noticed, it's changed the pricing of hardware and certain things just a little bit.

59:45 So I have a, I have a eight core 16 gig server at Hetzner that I pay $35 a month for.

59:53 It's new price is $130.

59:56 So that's not just, oh, it's a little bit more.

59:58 So actually, even for all the talk about Hetzner being cheap, DigitalOcean now is a better dollar

01:00:04 for dollar deal.

01:00:05 You get a better deal on DigitalOcean than you do even on places like Hetzner.

01:00:08 So Hetzner, so shout out to DigitalOcean for staying true.

01:00:12 I think that's cool.

01:00:12 So Hensner is a dedicated box for you though.

01:00:15 Is that right?

01:00:16 Digitalization has a little bit more.

01:00:17 Like I think they have RDS and a few things, but I didn't really care because I didn't use them.

01:00:21 I just have some of my own things, which like I said, maybe more embedded databases in the future.

01:00:25 We'll see about that.

01:00:26 It's going to be super interesting.

01:00:27 All right, let's close this out really quick.

01:00:28 We talked about AI a bunch, but just go down the list, go down the list of people,

01:00:33 not the list of tools, and just give us your AI tooling thoughts real quick.

01:00:37 Calvin, you go first.

01:00:38 You're at the top.

01:00:38 Definitely Pi and Claude Code, mostly Pi.

01:00:41 using typically the soul like whatever the one that just came out 6.1 I think it's the latest

01:00:48 on OpenAI or I like Sonnet 5.5 for most things I find I get really annoyed when they default me to

01:00:55 the latest opus and it starts just eating through tokens and I'm like what happened oh a new release

01:01:01 came out so that's what I'm at I like I like Pi for that stuff with superpowers just to skills.

01:01:05 Sydney. There's so many cool tools I think generally just thinking more broadly about AI usage like

01:01:11 I think having a coding agent makes sense.

01:01:13 There's so many good ones.

01:01:15 I think having an agent in Slack that you use, having an agent in wherever you keep track of documents.

01:01:22 So for me, that's Notion.

01:01:23 And then generally, I'm pretty bullish on MCPs and skills, just because that's where you basically

01:01:29 for MCPs can connect your data and use cases, and then for skills can distill domain knowledge.

01:01:35 And then maybe the thing that I'm most excited about with agents, both all of these categories,

01:01:40 is like improving them over time with memory.

01:01:42 So like making sure my coding agents remember my specific preferences and making sure my agents

01:01:49 that are helping me with like blog edits distill information from previous like human reviewers,

01:01:54 things like that.

01:01:55 But a lot of my job now is sharing those ideas.

01:01:59 So if you want to know more, the LangChain blog is a good place to start.

01:02:02 We've kind of settled on using DevNetwork and what you said earlier about changing all the LLMs on the backend,

01:02:12 that can be scary.

01:02:12 I usually let it decide automatically which ones to use, but we're trying to keep an eye on token spend.

01:02:19 So we'll have to take a look at your analytics for that too.

01:02:22 I tend to use Kiro too.

01:02:24 I like to use VS Code locally, but we're also spoiled with the public LLMs

01:02:30 that are so capable that when I try to run something locally, it's a little underwhelming.

01:02:34 Yeah, as I mentioned earlier, I've been using Claude Code for like 95% of what I do,

01:02:40 and I'm very happy with it.

01:02:42 I have played quite a bit with OpenCode as well.

01:02:44 I sometimes tell people I feel like Claude Code is like the Mac and OpenCode is like Linux,

01:02:48 where it's like instantly extensible, but you have to spend a little more time with it and

01:02:52 configuring and so forth.

01:02:54 And Pi is one of these things that I keep saying, I really have to play with it because

01:02:57 everyone's saying great things about it.

01:02:58 So I really have to play with it because everyone's saying great things about it.

01:03:01 Awesome.

01:03:02 Well, for me also, like Ruben, Claude Code, usually inside VS Code or something along

01:03:06 lines for my little personal automations i've been using a lot of glm 5 3 flash which i think is

01:03:13 actually super neat as well still not self-hostable but you know it's been running in other places that

01:03:19 are not not too expensive right you know 5 10 bucks a month something like super cool though

01:03:23 well for the self-hosting models quin 3 8 26 b is incredibly capable and runs on most you know 32

01:03:31 gig plus machines.

01:03:33 Awesome.

01:03:34 A GLM 5.3 flash, I think, is 750 gigs of RAM you need.

01:03:37 And the non-flash is like 1.5 terabytes of RAM.

01:03:40 So not hosting those. I'll check out the Quinn one. That's awesome. All right, everyone.

01:03:44 Thank you so much for being here. This has been really interesting.

01:03:47 We didn't even touch on a bunch of topics.

01:03:49 There's so much to talk about, so much happening.

01:03:52 And you all have great insight.

01:03:54 So thanks for being here. Thanks, Michael.

01:03:55 This was great.

01:03:56 Thanks so much.

01:03:56 Thank you.

01:03:58 This has been another episode of Talk Python To Me.

01:04:01 Thank you to our sponsors.

01:04:02 Be sure to check out what they're offering. It really helps support the show.

01:04:05 If you or your team needs to learn Python, we have over 270 hours of beginner and advanced courses on topics ranging from complete beginners

01:04:14 to async code, Flask, Django, HTMX, and even LLMs. Best of all, there's no subscription in sight.

01:04:21 Browse the catalog at talkpython.fm.

01:04:23 And if you're not already subscribed to the show on your favorite podcast player,

01:04:27 what are you waiting for?

01:04:28 Just search for Python in your podcast player.

01:04:30 We should be right at the top.

01:04:32 If you enjoyed that geeky rap song, you can download the full track.

01:04:35 The link is actually in your podcast blur show notes.

01:04:37 This is your host, Michael Kennedy.

01:04:39 Thank you so much for listening.

01:04:40 I really appreciate it.

01:04:41 I'll see you next time.

01:04:54 I'm out.

Talk Python's Mastodon Michael Kennedy's Mastodon