Brought to you by Talk Python Courses and Six Feet Up consulting

#491: Feeling Judged

Published Tue, Aug 11, 2026, recorded Tue, Aug 11, 2026
0:00
00:42:14
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by Xweather Xweather combines enterprise-grade weather intelligence with agent-ready APIs, natural language capabilities, and an MCP server so your agents can adapt workflows, automate responses, and make better decisions based on real-world conditions. Michael will tell you more about them later in the show. Get started for free at pythonbytes.fm/xweather Connect with the hosts

Michael #1: Claude Code /insights

  • Michael’s Insights: michael-kennedy-claude-code-insights-2026-08-09.html
  • Be careful sharing these outputs, they include details references to your projects, errors, security findings, etc. ;)
  • /insights reads your last 30 days of local session transcripts and hands back an interactive HTML report on how you actually work.
    • One command, zero setup: type /insights in a session, or run claude -p "/insights" from the shell for a non-interactive version that just prints the path
    • Reads what's already on disk: pulls session logs from ~/.claude/projects/, skipping agent sub-sessions and anything under 2 messages or 1 minute
    • Project areas: clusters your sessions into themes like "CLI Tooling" or "Documentation" with session counts
    • Friction analysis: categorizes where things went wrong by root cause - and quotes your own prompts back at you
    • Interaction style: tells you whether you're a delegator or a micromanager, plus which workflows are worth doubling down on
    • Actually actionable: suggests concrete CLAUDE.md additions and Claude Code features you're not using
    • The catch: Haiku does the per-session classification, so the first run takes several minutes; results cache to ~/.claude/usage-data/facets/ and the report lands at ~/.claude/usage-data/report.html

Calvin #2: Post-quantum crypto lands in Python

  • pyca/cryptography 48 ships ML-KEM (key establishment) and ML-DSA (signatures) — NIST's post-quantum standards, now one pip install away.
  • Big deal because it's the 11th most-downloaded package on PyPI (~1.2B downloads/month) and sits under Ansible, Certbot, Airflow, and paramiko. No PQ there, no PQ anywhere in Python.
  • Trail of Bits did the work (Rust bindings, cross-backend API, tests, AWS-LC backend support), funded by the Sovereign Tech Agency.
  • Timing tracks a June 22 White House order setting federal deadlines: PQ key establishment by end of 2030, PQ signatures by end of 2031.
  • Not a drop-in swap — the wire sizes explode. ML-DSA-65 signatures are 3,309 bytes vs Ed25519's 64; ML-KEM-768 public keys are 1,184 bytes vs X25519's 32. Hardcoded field sizes and length prefixes will bite.
  • API looks like the existing asymmetric primitives, except ML-KEM is encapsulate/decapsulate rather than a Diffie-Hellman exchange. SLH-DSA (the hash-based conservative backstop) is still in progress. The primitives are here, but protocols haven't caught up — so you won't be running post-quantum Certbot this week.

Sponsor: Xweather

You're using agents that can write code, summarize documents, and automate workflows. But they're missing one thing: awareness of the world around them. This is where today's sponsor, Xweather comes in. Xweather combines enterprise-grade weather intelligence with agent-ready APIs, natural language capabilities, and an MCP server built for tools like Claude, Codex, Copilot, and modern IDEs – so your agents can adapt workflows, automate responses, and make better decisions based on real-world conditions. Backed by Vaisala, whose instruments fly on NASA missions to Mars, Xweather delivers trusted data and unique insights that go beyond conditions to actual impact – from real-time lightning strikes to road surface forecasts. Start with 15,000 free API calls each month and pay only for what you use as you grow. Xweather is your full weather stack, for developers by developers. Start building for free today at pythonbytes.fm/xweather. The link is in your podcast player's show notes and on the episode page. Thanks so much to Xweather for supporting Python Bytes.

Calvin #3: MCP goes stateless — and FastMCP gets renamed

  • From Philipp Acsany over at Real Python
  • The 2026-07-28 spec landed July 28 and the Python SDK shipped 2.0.0 the same day. Biggest rewrite since MCP launched, and it's breaking on purpose. Context for scale: the Tier 1 SDKs are pulling close to half a billion downloads a month, with TypeScript and Python each past a billion total.
  • The headline is the stateless core. The initialize/initialized handshake and the Mcp-Session-Id header are both retired — protocol version, client identity, and capabilities now ride in _meta on every request, with an optional server/discover RPC if a client wants capabilities up front. Any request can land on any instance behind plain round-robin, no shared storage.
  • Server-initiated calls are the hard part of the migration. Sampling, elicitation, and roots/list no longer call back to the client; instead the server returns resultType: "input_required" and the client retries with inputResponses attached. Multi Round-Trip Requests, MRTR. Also: Mcp-Method and Mcp-Name are now required headers so gateways route on headers instead of cracking JSON bodies, and missing-resource errors move to standard 32602.
  • Deprecation sweep with an actual policy behind it — Roots, Sampling, Logging, and the legacy HTTP+SSE transport all deprecated with a twelve-month minimum offramp. Tasks graduated out of the experimental core into a real extension, which is what the formalized extensions framework was for. MCP Apps is now an official extension too, so a tool call can return sandboxed interactive HTML. Auth picked up RFC 9207 issuer validation, issuer-bound credentials, and a shift from DCR toward CIMD.
  • Python SDK 2.0 is where it gets personal: FastMCP is now MCPServer, no alias, no shim. McpErrorMCPError. Wire types went snake_case (is_error, input_schema) and moved to a standalone mcp_types package, with mcp.types kept as a permanent alias. One Client object replaces the old transport + ClientSession + initialize() stack. httpx became httpx2. Sync handlers run on worker threads now, so asyncio.get_running_loop() raises inside them.
  • The good news: one MCPServer serves both protocol eras, so 2025-era clients keep working with nothing to configure, and a Resolve(fn) parameter lets one tool body cover MRTR and the old path. 1.x is maintenance-and-security-fixes only — pin mcp>=1.28,<2 if this week is already full. The Tasks extension isn't in 2.0.0 yet, so Tasks has left the core spec but hasn't landed in the SDK. If you only call MCP servers, you mostly just get the benefits for free. If you ship one, you already know what your week looks like. And if you use the standalone fastmcp package instead of the official SDK — different project, 3.x line, none of this touches you. The rename is partly to stop the two from being confused.

Michael #4: inshellisense - IDE style command line auto complete

  • via Doug Nichols
  • inshellisense provides IDE style autocomplete for shells.
  • It's a terminal native runtime for autocomplete which has support for 600+ command line tools.
  • inshellisense supports Windows, Linux, & macOS.
  • If you are using a NerdFont patched font, you can enable the NerdFonts support in your config file

Extras

Calvin:

Joke: But they already know

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 491, recorded on Tuesday, August 11th, 2026.

00:10 I'm Calvin Hendryx-Parker.

00:11 And I'm Michael Kennedy.

00:13 Hey, Michael, it's great to see you.

00:14 It's great to be back. I missed you, Calvin.

00:16 I missed you too. A week off, a week with no Michael was a little, you know, somehow I got through.

00:22 Let's get this thing started. We've got a lot to talk about.

00:24 I see some cool stories on the docket for today.

00:28 But first, this episode is sponsored by XWeather.

00:31 XWeather combines enterprise-grade weather intelligence with agent-ready APIs, natural language capabilities, and an MCP server.

00:38 So your agents can adopt workflow, automate responses, and make better decisions based on real-world conditions.

00:44 Michael's going to tell you more later in the show, but get started for free at pythonbytes.fm/xweather.

00:51 If you want to connect with Michael or I on the socials, we are on Mastodon, BlueSkyX, and LinkedIn.

00:57 You can also follow the show at MassathonBlueSkyNX.

01:01 Join us on YouTube for the live session of this.

01:04 So at pythonbytes.fm/live to be part of the live audience.

01:08 We usually record this on Tuesdays at 7 a.m. Pacific, 10 a.m. Eastern.

01:13 Older video versions are there too.

01:15 We record without a net so you can watch us live and join in all the fun.

01:19 Finally, if you want an artisanal digest of every week's shows and the notes from the email form, add your name and email to our friends of the show list.

01:27 We promise we will never share it with anyone else.

01:30 You're just going to get cool messages from Michael and myself about all the show notes here, which are pretty good.

01:35 You could almost read the show notes and not listen to us.

01:38 But I know everyone loves hearing our voices.

01:40 And speaking of, Michael, let's kick it off.

01:42 What do you got for us first?

01:43 Let me ask you a question.

01:44 I know you do a fair amount of AI stuff.

01:47 A little bit.

01:48 Yeah, a little bit.

01:49 And me too.

01:50 I dabble.

01:52 It's probably sad, but I'm going to stick with it for a week or two.

01:55 Give it a go.

01:55 This one, you have to ask yourself, are you ready to be judged?

02:00 And sort of what's your confidence level?

02:02 So what I'm talking about is something called Claude Code Insights.

02:07 Have you experimented with this, Calvin?

02:09 I've not run the slash insights command yet.

02:11 I've been totally in the world of AgentsView from last time.

02:14 I know.

02:15 I've been all about AgentsView.

02:16 Same.

02:16 And I'm so bugged that I can't get, I know I can.

02:20 And I have not yet set up AgentsView to unify my Mac laptop and desktop because I'm only seeing half of my view.

02:29 Yeah.

02:29 Yeah.

02:30 So I'm going to set that up at some point.

02:31 But you know what?

02:32 There's a few things more important than that, but not that many things I'm like, I want to do this.

02:37 Let's check it out.

02:37 So Claude Code Insights.

02:38 What is this?

02:39 So Claude Code Insights is you just type slash insights, press enter, nothing else.

02:44 Now, annoyingly, this does not work in the VS Code Variants plugin.

02:49 You can say slash compact, clear, slash usage.

02:52 All those work in the VS Code version, but this has to literally be in the terminal version.

02:57 Does it have anything to do with the terminal?

02:59 No, absolutely not.

03:00 But it still has to be there.

03:01 Don't know why.

03:02 But it's fine.

03:03 So if you're not using the terminal version of Claude Code, you have to temporarily go down and use that to get this to work, okay?

03:10 So what you do, like I said, you just type slash insights.

03:13 And what it does is it will look through all of your sessions, which are stored on your local machine, not in the cloud, just on your machine.

03:20 So you've got to do it on a machine that you use Claude Code a lot to get anything meaningful from it.

03:24 And it will assess you, Calvin.

03:26 It'll tell you how you do rather than how it's done.

03:30 Am I guiding you well enough?

03:32 So what I've done.

03:32 Am I treating you nicely?

03:34 Exactly.

03:34 What I've done is I'm like, all right, well, if I'm going to talk about this, let me just share one of my Claude Code insights.

03:40 So I ran that and I put it up on the internet.

03:43 Wow.

03:44 That's being very vulnerable.

03:45 I know.

03:46 See, I'm open here.

03:48 I may regret it, but I'm open here.

03:51 Here's the thing.

03:51 I believe this is a 30-day window, even though it says the time is bigger.

03:55 But the docs say it's 30 days.

03:57 I don't know what the actual time frame is.

03:59 It doesn't really matter that much.

04:00 It talks about how many sessions there were, how many messages, all those kind of things.

04:04 But then it gives you an overall assessment, what went well, what went bad, and what's super interesting and why you might actually care rather than just morbid curiosity of what AI thinks of you is it gives you a bunch of things to make it work better.

04:18 It says, look, when we tried these things, systematically, this is not working that well.

04:22 So here, paste this into Claude Code to create a skill that makes it better.

04:26 That's cool.

04:26 Yeah, so it's kind of like a meta thing and sort of a counseling because it also gives a little bit of insight into itself.

04:35 Now, you may not want to put your Claude Code insight on the internet because it has detailed information about your projects.

04:44 It could say, oh, yeah, I worked at big tech company X and you were really successful in helping track down that huge vulnerability or whatever.

04:53 Then describe it, you know what I mean?

04:55 Yeah, that's no good. That's a reason I can't publish any of my agent's views because it definitely tells you very detailed information about what's going on in there. I like that it's suggesting to you basically you should use superpowers in your plan, phase, verify, commit.

05:10 Yes, exactly. It does tell me that. So here, I'll read you a few fragments of it so you get a sense. And then you all can go run slash insights either as you're listening right now or later. So what it does is it just generates an HTML file. Like that's why I was complaining it doesn't work in the VS Code variants.

05:24 or any other UIs because literally all it goes is thinking, here's your HTML file, please open it up.

05:30 It's like, that can work anywhere.

05:31 I don't know what you're talking about.

05:32 But anyway, it gives you an at a glance.

05:34 Like what's working?

05:35 You work in phases rather than one-shot requests.

05:38 Number plan files, one phase at a time with verification gates between them.

05:43 That's discipline.

05:44 That discipline is what let you drive ty diagnostics from 363 to zero across 25 commits without destabilizing.

05:50 A 1,399 test suite.

05:54 And why your Sentry work closes the full loop from raw ID issue to root cause, fix, test, change log, and resolve issue.

06:02 By the way, I've been using the Sentry MCP, Sentry past sponsor, possible future sponsor, definitely sponsor.

06:09 General good folks.

06:10 Really like Sentry.

06:11 Yeah.

06:12 And so I've hooked it up to report errors when something goes wrong, and it will just log those with details.

06:18 And so now you can just go, hey, Claude, there's an issue over at Sentry.

06:22 Look into it.

06:23 Propose a fix.

06:24 walk away and it's really, really cool.

06:26 So that's what it's talking about, right? So that's what's working. And it said, well, what's going on? Well, on Claude's side, the biggest cost was asserting correctness instead of verifying, like saying, yes, that's how we're saying. No, it doesn't work that way, Claude.

06:36 Stop saying that. Go check. Oh, you're absolutely right. You know, remember, that's not a code review, is it?

06:40 It's so self-aware.

06:42 It is self-aware. And the quick ones to try, turn your plan phase, verify, commit loop into a custom skill. This is where Calvin is suggesting that I just adopt

06:50 superpowers. You should just give it.

06:52 I have used superpowers and I like really well how it came out, but I feel less connected to the code when I'm using superpowers.

07:01 In that it just goes, I got this.

07:04 See you later.

07:04 And then like two hours later, here's your output.

07:08 Where's the flow that I have?

07:09 It checks in with me just a little bit or at least it narrates while it's going.

07:14 I can hold on.

07:15 Why did you just say that?

07:16 You know what I mean?

07:17 I don't know.

07:18 Maybe I will someday give in to superpowers.

07:20 But I have a very similar flow to it nonetheless.

07:23 Ambitious workflow.

07:24 Your sentry to triage loop was deterministic.

07:26 I did this whole mega thing where I went through the Talk Python mobile apps.

07:31 They had years of errors that I was like, I cannot deal with these.

07:35 And I cannot do – this is too subtle for me to fix without making it worse in Flutter and then getting it back in the App Store.

07:42 And I eventually just broke down and said, okay, I'm going to – Claude and I are figuring this out.

07:46 That's a perfect kind of tedium for these models.

07:50 Yeah, it was so good.

07:50 It was so good.

07:51 It will even open up the simulator and automate it to track down the issues and so on.

07:55 So there's a lot more than I'm reading here, but it tells you what you worked on, how you used Claude Code, impressive things, what went wrong on the horizon, all these things.

08:04 So it tells you here's all your projects, and this is certainly where you want to be a little less detailed.

08:10 But it talks about how I worked on Python Bytes and Talk Python Web Platform.

08:13 And what did I do?

08:14 I don't know.

08:15 I worked on some admin backend stuff.

08:17 There's a really neat admin section that no one is going to ever see.

08:21 A few people will ever see.

08:22 Yeah.

08:23 Because, you know, it's private to make the whole thing go.

08:26 Some DevOps seeing the Sentry thing coming back again.

08:29 But it gives you also like really nice graphs.

08:32 Too neat.

08:32 What you wanted.

08:33 Feature implementations, bug fixes, UI styling.

08:36 And apparently I wanted features most and then bug fixing.

08:39 That's good.

08:40 The languages that I interacted with through Claude, the type of sessions, the tools.

08:46 I use 2,680.

08:48 That's a jump on mine too.

08:50 Nice.

08:51 Awesome.

08:51 Yeah.

08:51 And then, yeah, it goes and talks about how you operate like this techno and such and such and such and so on.

08:57 I think this is great.

08:58 I mean, if you're a heavy Claude Code user, does it also track the co-work sessions or is it only Claude Code?

09:04 I think it's only Claude Code.

09:06 It depends if it stores it as a session.

09:09 I think it does.

09:10 Well, at least I know the agency picks up co-work and Claude Code sessions.

09:15 I would imagine it would because it just, all this thing does is it just reads and analyzes your session folder.

09:20 Right.

09:22 The types of errors that were encountered, stuff that works, but also stuff that went wrong.

09:28 So here's where it gets to be like, you can actually make buggy intermediate code or self-inflicted tool collisions, claiming correctness when it shouldn't have wrong, wrong target.

09:38 And then here's the last thing I'm going to talk about.

09:40 And you guys can check.

09:41 That's exactly what I was going to ask about.

09:43 It looks like it's right here.

09:44 Yeah.

09:45 Here's at the bottom, it says existing Claude Code features to try.

09:48 And you can just say copy all.

09:50 And it literally says paste this into your cloud to empty.

09:55 And you could just check and uncheck whichever you want and copy and paste.

09:58 So it says just give you little things that you can record for Claude Code that will make it better based on its sort of, it's like a profiler guided optimization sort of thing.

10:10 But for AI, it says verification before claiming done.

10:13 This sounds like a superpower sort of thing.

10:15 never claim a layout UI change is correct based on reading code take a headless screenshot with Playwright and browser tooling inspect it before you bother the person and tell them it's done because they often have to give you screenshots back and say actually it's not done

10:28 editing rules, sentry triage, workflows and then finally, this is a cool part too, is custom skills why don't you copy this and it'll tell you you like this sentry triage thing? Copy this, paste it in there

10:42 and Claude will create a skill, which then you can just say slash sentry triage.

10:46 And hooks you can put in, all kinds of stuff, new ways to use it.

10:49 Like there is a ton of stuff in here that is proactive, right?

10:53 And then it gives you a little, I don't know if it's inspirational or whatever, but just like a call, a pull quote.

11:02 So what do you think of this, Calvin?

11:04 It's pretty cool.

11:05 I think more folks should be using these kinds of tools.

11:07 Like if you are a Claude code junkie, like this is perfect for improving your game.

11:12 It's a feedback loop right into the human side of things that you get to now feed back into the Claude side of things to improve your experience.

11:20 To me, folks are probably still just trying to one-shot a thing without enough guidance to the agents, ending up in kind of weird spots.

11:28 It's all about honing and shaping your experience.

11:30 Like those Claude MD additions, very specific to you, like the kinds of work you're doing.

11:36 You don't want to overload that file with too much stuff.

11:38 you want it to be very specific to the kind of workloads you're doing. So I love it.

11:43 Guide people to the right place. That's right. It also

11:47 talks a lot about your AI engineering style, if such a thing exists. You work in phases instead of just one shot. Plans, phases at a time, verification gates, adversarial sub-agents, and all these kinds

12:01 of things that you might use or don't use, but probably should be. So I think it's...

12:06 It has a section called Impressive Things You Did.

12:09 So, you know, give yourself a little warning.

12:11 Yeah, a little pat on the back, feel pretty good about yourself there.

12:15 Absolutely, absolutely.

12:17 Very cool.

12:17 Well, you know what else we can feel good about?

12:19 What's that?

12:20 We now have post-quantum cryptography in Python.

12:24 So Python cryptography in version 48, which actually was back in May, but I don't believe we ever reported on this.

12:31 but it is shipping two variants of some post-quantum standard enablements.

12:37 So we've got MLKEM, which is key encapsulation.

12:41 So basically the way we do it now with Diffie-Hellman, it's a key exchange.

12:45 We share bits and pieces and parts.

12:47 Key encapsulation actually shares the whole key at once.

12:51 So it's a different form of doing this.

12:52 And then MLDSA, which is the signatures.

12:56 These are all, again, part of the NIST post-quantum standards.

13:00 Why is this a big deal?

13:01 Why do we care?

13:02 This all tracks back to a executive order from our White House, the June 22nd executive order setting the federal deadlines for post-quantum key establishment by the end of 2030 and post-quantum signatures by the end of 2031.

13:18 Trail of Bits here did a great write-up on what it's all about, what you're getting for it.

13:23 There's actually an interesting article if you go read here from 2024 about quantum resistance isn't the main benefit of post-quantum code.

13:32 There's actually some benefit to the new algorithms that were developed as part of this.

13:37 It doesn't come without some difficulties or drop-in.

13:41 It's not a drop-in swap.

13:43 If you're using the standard ED25519 or the standard Diffie-Hellman key exchange pieces, some of them work alike, some of them don't.

13:56 For example, the key signatures or the encapsulate versus decapsulate piece rather than the key exchange isn't the same, but they're going to be putting in the SLHDSA, all these acronyms that your mind can kind of like

14:10 explode on. But the wire sizes on the wire size of the signatures and key encapsulations are much, much bigger. So for example, if you're using the ED25519, that's 64 bytes on the wire for the

14:24 the key exchange versus 3,309 for the MLDSA signatures. So it's probably negligible even

14:35 today on our current hardware. Hardware from a few years back would have been having noticeable time processing these signatures. New hardware should see even less of this being an impact on performance.

14:46 So there's more of a processing performance impact to swapping over to these new post-quantum signatures and the key exchanges. But it's also a big deal because, let me go over here into

14:58 showing you the PyPI downloads. Cryptography is number 10 in the past day, number 10 in the past week, number 10 in the past month. So since this is downloaded very, very often, we're on version

15:11 50 now, people have the capability to upgrade their use of this encryption to that post-quantum capable world. Why do you care? Basically, there are malicious actors out there that are

15:26 hoarding currently encrypted data, waiting for a time when these quantum computers become a reality.

15:32 It's still an if. We don't know that to be for certain that they'll ever reach a capability to be able to decrypt these things. But quantum would unlock the ability to decrypt all the traffic that has been basically passed across the wire. Most traffic has been passed across the wires since

15:46 the internet and networks were a thing anytime it was encrypted. I can tell you a lot of places are already using the post-quantum encryption internally. For example, I know Amazon has

15:56 been a big backer of some of the post-quantum enhancements to requests in the HTTP libraries so that all their internal operations behind the scenes in AWS Cloud are using post-quantum

16:09 encryption. This means that if someone does hoard or stockpile your data that has been used with these post-quantum tools that they shouldn't or they'll have a much greater difficulty actually decrypting that data so it's important here to know that you should be on board with uh you know

16:24 maybe not this week but maybe in the future very soon using these new versions of these key exchanges and signatures so that you'll be ready for the post-quantum world i guess the protocols haven't caught up yet but usually you know you're not going to be running a post-quantum cert bot

16:38 this week but it'll be coming very very soon and everyone basically has it in their hands that's pretty wild yeah it feels like the future but i know if you look i mean the pi pi pi boy people

16:49 are going to get on me about saying pi pi um it's pi pi and the downloads for i think it's worth a

16:56 sidebar here uh is it when i first started doing podcasts talk python and python by yeah especially talk python people will come on and they would say pi pi frequently and obviously there's the

17:10 And that's a fair pronunciation of it.

17:12 But there's also PYPY, which is the runtime, which is the JIT version.

17:18 And there's all this – it was pretty evenly split.

17:21 And I'm like, you know, this is – I need to know.

17:24 You know, inquiring minds, as they say, from the checkout line investigators, I guess.

17:32 Yeah, exactly.

17:34 So I asked a lot of the folks that work at PyPI, how do you pronounce this?

17:40 Like, you guys made it.

17:41 You can kind of pick the name.

17:42 Like, what would you say, right?

17:45 And Donald stuffed and some of the other folks are like, PyPI.

17:48 And I asked Guido and he said, PyPI.

17:50 I'm like, all right.

17:52 They have it in their FAQ.

17:53 It's been pointed to me by some of our listeners.

17:56 That is the official designation.

18:01 Maybe it's just generational.

18:02 I mean, when you and I were growing up, it was called the cheese shop at the time.

18:06 So sorry for the PyPI diversion.

18:09 I'm working hard to break some pronunciation habits.

18:13 And that's one of them.

18:14 No, it's amazing.

18:15 Keep going.

18:16 I thought a little bit of history might be fun for people.

18:18 It is a little fun.

18:19 It is fun, but it is PyPI.

18:21 But cryptography, you can see here.

18:22 I mean, this is incredible.

18:24 The fact that this work got sponsored, got implemented, and now is immediately in the hands that everyone needed to be able to do the right thing.

18:33 This sets us up in a really, really good spot.

18:37 Yeah, again, this was funded by the Sovereign Tech Agency, and I had to go look up who that was.

18:41 So if you check that out, basically, it's a German industry or agency that put forth the money to make sure this all happens.

18:48 And as they say here, the engine room for digital sovereignty.

18:51 And so I thought it was cool to give them a shout out for sponsoring it and then for Trail of Bits doing the work, putting in place the Rust bindings, the cross backend APIs, like all the tests, everything is in there.

19:02 So I think it's a huge win for the Python community that we are ready to go for this post-quantum world.

19:08 I do too. I think it's totally neat.

19:09 Also, I think it's neat that it was put into cryptography, as you pointed out, the 10th most popular downloaded API thing, rather than here's a Python-quantum-crypto whatever, right, that nobody uses.

19:25 Because I think a lot of people don't realize how significant the default transitive dependency thing is, right?

19:34 Like we would all like to switch from this, but seven of the 10 dependencies I have all depend on that.

19:40 And I've just got to take that because that's what they use, not what, you know what I mean?

19:43 And so I think this will just like come along to a lot of projects.

19:47 Yeah, this is a real good model.

19:48 I also love the fact that it shows that community bridging with the Rust community on it as well.

19:55 And so Python has really great support for bringing in.

19:58 It used to be we were using C extensions for things that required performance like this.

20:01 And now we've really got a native way to use Rust.

20:04 It's been in a while.

20:06 This is a great example of that.

20:07 Yeah, it definitely is.

20:08 That's super cool.

20:09 All right.

20:10 Well, Michael, let's move on.

20:11 We got a sponsor segment.

20:13 We do have a sponsor segment.

20:15 So let me quickly tell everyone about XWeather from Vysala.

20:20 And so they're supporting the show last week and this week.

20:22 And they've got a really cool project.

20:24 So if you're using agents that can write code, summarize documents, automate workflows, but they don't know about the weather, awareness of the world around them, well, you should check out XWeather, all one word.

20:37 This is where today's sponsored XWeather comes in.

20:39 It combines enterprise-grade weather intelligence with agent-ready APIs, natural language capabilities, and an MCP server built for tools like Cloud, Codex, Copilot, and Modern IDs.

20:50 So your agents can adopt workflows, automate responses, and make better decisions based on real-world conditions.

20:57 Backed by Vaisala, whose instruments fly on NASA missions to Mars.

21:02 That's super cool.

21:03 Talk about the weather there.

21:05 Our weather API works on multiple planets.

21:08 That's pretty awesome.

21:09 So they deliver trusted data and unique insights that go beyond conditions to actual impact, like real-time lightning strikes, road service forecasts, and so on.

21:18 So start with 15,000 free API calls a month and pay only for what you use as you grow.

21:23 Xweather is a full weather stack for developers by developers.

21:26 So start building for free today at pythonbytes.fm/xweather.

21:31 The link is your podcast player show notes and on the episode page.

21:34 Thank you so much to xweather for supporting Python Bytes.

21:37 We really appreciate it.

21:38 Yeah, it's amazing how much weather, how weather can impact all of our lives.

21:41 So having a tool like this to be able to check in and get high quality weather results.

21:46 I love it.

21:47 Super awesome.

21:48 Yeah, yeah. Very cool. Very cool.

21:49 Well, thanks to them for sponsoring.

21:51 And up next, we got some MCP news.

21:54 So the model context protocol has gone stateless.

21:58 The folks over here at RealPython, thanks to Philip for giving a good roundup on the news around this.

22:04 But not only has the MCP spec gone stateless, so if you check out the 2026.07.28 spec, it landed last month.

22:15 And the Python SDK also shipped a v2.

22:18 That is the biggest rewrite since MCP launched.

22:21 And there's a big breaking or not a breaking change, but a forward moving change here, which is that going stateless.

22:28 Prior to this new version of the MCP spec, you would establish a session with your MCP servers from your clients and hold that session open kind of like WebSockets.

22:37 But that can be it has obviously troubles with scaling.

22:40 If you are trying to hold a big session open and have many, many clients, you're going to need a lot of resources to be able to handle a ton of clients against your MCP server.

22:49 The stateless version of this is we now can basically send over enough context information to headers.

22:56 There's a new initialize and initialized handshake and the MCP session ID headers.

23:02 The MCP session ID header has been retired.

23:05 And now you basically make those requests and you can optionally do what's called the round trip, multi-round trip request to the MCP server if you need to pass in more context or additional information.

23:20 So this was a big deal for the MCP world.

23:23 Luckily, the MCP servers are backward compatible to the 1.0 version of this.

23:29 So for us as Python users, this is actually more important because we get the Python SDK 2.0.

23:35 Biggest change here, some folks may recognize it as Fast MCP.

23:39 It is now just called MCP Server.

23:42 There's no deprecation or backward compatibility piece of that.

23:45 So if you are writing an MCP server based on Fast MCP, you're going to need to go basically fix that code before you release your new versions.

23:52 If you want to use the Python SDK version 2.0, lots of cool changes or fixes in there.

23:58 Another big piece of the new spec, if you haven't used it, which is there's tasks that were experimental and apps that were experimental.

24:06 And if you've not used apps, it's kind of neat because it allows apps to send back an HTML interactive sandboxed mini application as part of the MCP specification.

24:17 Again, it was experimental.

24:18 We didn't know where that would land.

24:20 That has been picked up and officially put into the spec.

24:22 The SDK 2.0 doesn't have that included just yet, but it's coming.

24:26 So if you want to be able to use those sandbox interactive HTML pieces, that is going to be really nice because you basically, if you ever had an MCP server for the weather, for example, that it could actually return UI to the end user of that MCP service.

24:39 If you were using it in Cowork or Claude through the web API or web version of this, you can now get rich interactives as part of the new spec.

24:50 Pretty cool because basically, yeah, we're good to go.

24:52 If you're only calling MCP servers, this really doesn't matter mostly to you.

24:56 You get the benefits for free.

24:57 If you're shipping MCP servers, you know what your week's going to look like.

25:01 You're going to be doing some subtle code changes and upgrades to get the latest versions of the SDK in place for you.

25:09 I don't know.

25:09 Have you written?

25:10 Actually, Michael, you've written quite a few MCP servers.

25:12 I have.

25:13 You're rocking my world here, Calvin.

25:18 So it sounds to me, let me lay this back and you tell me if this is correct.

25:22 I'll do this on behalf of the listeners as well.

25:23 So for those who don't know, MCP is not just a library or something like that.

25:29 It's a standard or a protocol come up with by Anthropic and adopted by, as you've heard from our sponsor, and you're going to hear again in just a minute.

25:37 Pretty much everybody.

25:38 Pretty much everybody who cares about being friendly with having agents like Sentry, for example.

25:43 So they've changed the specification and then Fast MCP has said, we're on it.

25:49 And they adapted that to actually adopt.

25:52 Yes. Okay. Yep. Yep. So if you go over here to the latest release, you will see that two weeks ago, we had the version two release to get you off of fast MCP into just MCP and MCP server. There's

26:04 more types. The one client object replaces the old transport plus client session plus initialized stack. They also upgraded from HTTPX to HTTPX2. So you get a lot of benefits there and performance.

26:17 I mean, this is all about performance and scaling. If we want to be able to scale the usage of these kinds of services. That's why HTTP has scaled so well for all of us because it's been stateless.

26:25 It didn't require a lot of server resources. This gets us back into that scaling world for

26:30 MCP style calls. Yeah, it opens up possible deploying models that are really tough. Like can you do web sockets to Lambda? It's not so easy, maybe with a proxy or something.

26:41 Yeah, actually there's a little diagram in here kind of shows you the before and after. Before as the session was established.

26:54 Here now they can just go to any number of session or any number of handlers that would be on the backend.

26:59 So now you can set up a nice cluster with a much dumber load balancer, a less smart load balancer in front that can just route traffic.

27:08 And again, those session pieces all stack on each other from a performance standpoint.

27:14 So freeing up to be stateless is a huge impact on performance.

27:18 Yeah, very neat, very neat.

27:20 I'm excited for it.

27:20 Yeah, yeah. I'm looking forward to leveraging this and writing some more clients that go stateless.

27:25 So if you're using this in your production agentic workflows, this actually keeps MCP very viable.

27:31 Yeah, very cool. It definitely does make it easier to work with.

27:34 Yeah, you can even with the 1.0, you can disable streaming, but it's not quite as good.

27:40 So this kind of formalizes that.

27:42 Yeah, yeah. So that's the exciting news in the MCP world.

27:46 I want to thank again the RealPython folks for giving us that bit of news.

27:52 actually let's head on to yours Michael you got some more developer tool here it looks like

27:56 I don't know I feel like somehow I got a hold of this and this should be all it should be all you so again a little history a lot of people call what happens when you type something and then you hit dot and like a list of options come up call that autocomplete

28:12 in Microsoft developer land this is called IntelliSense as in intelligence sensing I don't know it's been around forever

28:19 I was never a Visual Studio user, so I never used IntelliSense proper.

28:25 Yes, and if you lived in the Visual Studio world, we're not talking Visual Studio code, we're talking Visual Studio.

28:31 So this comes, I believe, first time I ever experienced it when I was using Visual C++ in the late 90s.

28:38 And that was called IntelliSense then.

28:40 And obviously around 2000, early, just before then, when Visual Studio for.NET and all that came out, obviously IntelliSense.

28:47 So the Microsoft story of autocomplete is IntelliSense, okay?

28:51 That's all you got to know.

28:52 So I introduced to you a new project from Microsoft, which I can get behind.

28:57 It is open source.

28:58 It is MIT.

29:00 It is called InShellisense.

29:03 Okay.

29:03 You've got me.

29:04 InShellisense.

29:04 I like the pun.

29:06 Yeah.

29:06 And see, this is why you got to have the history.

29:08 So in Shell Asense, it lets you come along and turn 600 plus command line tools to have autocomplete or IntelliSense here.

29:19 I like the little ASCII demo there going on.

29:22 Yeah, if I can.

29:24 So you can come along here and just type.

29:27 Come on, let's reset here.

29:28 Let's go.

29:29 And then as you type, it gives you a dropdown widget sort of experience that is quite good.

29:36 So what they are demonstrating on the GitHub repo, it has to do with Git.

29:40 And it's not just auto-completing G-I-T because, I mean, that's handy.

29:45 Like, that's a lot of typing.

29:46 But it's the subcommand, so Git status and then, like, Git branch.

29:50 And then it'll drop down, like, specifically your branches or your files that are being applied to.

29:55 And I think it's pretty cool.

29:57 I like the tool tip it gives you, too.

29:58 So it's not only does it, like, auto-completion give you a drop down on the possible completions, but, like, what each completion might do in a couple words.

30:05 Sometimes you may be like, I think it's this one or that one.

30:07 I'm not sure which subcommand I actually want to run.

30:09 That little tooltip can help folks navigate the command line a lot faster, I think.

30:13 Yeah, so for people listening, you get a kind of a drop down, like a web drop down, but in the terminal and you navigate it with your arrow keys.

30:20 And as you navigate it, there's an additional section that describes what each one of those does.

30:25 Yeah, I love all the advancements in the terminal UI, the TUI, that have come along because of the agentic tools we're getting, like CloudCo and Codex, etc. because I'm obviously a terminal junkie and I love hanging out there.

30:39 I'm there all the time.

30:39 So this is a great way for folks who are less comfortable, even folks who are comfortable, could use this to autocomplete.

30:46 Because no one knows all the commands and all the sub options and all the things and everyone forgets to get all the autocompleter things hooked into your shell.

30:54 I mean, it can be tricky to get your power user set up rocking and rolling right away.

31:00 So this is a great bridge into it, it seems like.

31:02 Yeah, I agree.

31:03 And it's also not just the commands you know, but like auto-completing your branches.

31:07 Maybe there's a branch there that you didn't even write, yeah?

31:10 So this is written in TypeScript, just not that it really matters.

31:15 Also, interesting sidebar, Anders Hausberg and crew over there rewrote TypeScript, the pilot bit, I believe, the thing that takes TypeScript to JavaScript in Go and got it like 10 times faster just recently.

31:28 So that's interesting.

31:29 But the way you get it is you can either npm install it globally or you can brew install it.

31:34 I haven't decided which way I will be installing it.

31:36 But yeah, it's super easy.

31:38 You just do IS for in shell essence is the command.

31:42 So IS init bash, IS init zshell, et cetera, et cetera.

31:47 And yeah, it supports a whole bunch, even quench or sonch, help me out.

31:52 I've never used that one.

31:54 I know, but this is the Python-based one, right?

31:56 Yeah.

31:57 I've been a lifelong ZSH zshell user.

32:01 and I've had no reason to switch.

32:04 Hashtag ZShell for life.

32:05 Let's go.

32:06 And it was kind of convenient when that became the default on macOS.

32:10 It's like vindication, baby.

32:11 A little bit.

32:13 But I mean, I've been using it since college.

32:15 Like ZShell.

32:16 And I say using it, I never really dove into the power features of it until probably like 15 years ago.

32:22 And then I was really hooked.

32:23 Let me run this out with a bit of nerdiness.

32:26 Okay.

32:26 So if you use nerd fonts, and excuse me, if you're not using nerd fonts.

32:30 You should be using nerd fonts.

32:32 Thank you.

32:32 You should be using nerd fonts.

32:33 Not the terminal font shame you, but you should use nerd fonts.

32:36 You really should because it really just gives your shell so much more expressiveness.

32:40 And if you want to impress and horrify your co-contributors or fellow employees, you can turn on font ligatures in your editors and then get things like mathematical looking not equal signs.

32:54 100% behind that.

32:55 I love full ligatures because I just feel like there's a beauty to the fonts.

33:00 I came from a desktop publishing background before I got into all this programming stuff.

33:04 And so the beauty in typography, and I think that those two have always kind of gone side by side in this kind of education, publishing, and computer science world.

33:14 LaTeX is probably a prime example of that.

33:16 People who love beautiful typography.

33:19 100%.

33:19 Yeah.

33:20 Yeah, I'm all behind it as well.

33:23 And so the reason it's being talked about here is you can, in Shell, a sense, supports extra stuff if you have nerd fonts, but you have to turn it on in your normal config file.

33:34 I don't know what that is called, but it has its steps on the homepage.

33:37 Like go to this file and put this line so you get your peak nerd font work in your shell there.

33:43 It'd be nice if it just picked that up, the fact that it could detect if you had that available instead of having to configure it.

33:49 You know, I do believe that you could probably just go, what font is it?

33:52 Oh, the font has nerd font.

33:55 In the name of it.

33:56 In the name.

33:56 Let's just take a wild flying guess here.

33:59 Yeah, yeah, definitely.

34:00 All right, well, that's cool.

34:02 We've got a couple extras for this go around.

34:05 One of them is that Django 6.1 released.

34:08 Release sensor up some minor things in here, but just wanted folks to be aware.

34:12 So if you are a Django developer, go upgrade all of your dependencies and make sure you're on the latest Django 6.1 release.

34:18 And related to the Django 6.1 release is DjangoCon.

34:22 So later this month, in just under about two weeks, come join us all in Chicago for DjangoCon.

34:28 I know there are still tickets available.

34:30 I believe the hotel room block may still also be available for the next few days.

34:34 So if you want to get on board with the Django community and come hang out with us, I will be there.

34:39 So you want to come meet and talk with me at DjangoCon.

34:43 I'll be presenting with Frank Wiles actually on Tuesday.

34:45 He and I are doing a batteries included versus speed talk about FastAPI versus Django with Ninja, which should be fun.

34:55 Oh, Ninja.

34:56 Okay.

34:57 Yeah.

34:57 Yeah, Django Ninja looks pretty cool.

34:59 Yeah.

34:59 I feel like Django Ninja, for those of you who don't know, it's like FastAPI-ish.

35:04 It is.

35:05 Django.

35:05 It is.

35:07 There'll be a slide that uncovers that truth.

35:10 Yeah, cool.

35:10 That's cool.

35:11 You're doing one of the Frank Wilds series.

35:12 Yeah, yeah.

35:13 Good guy.

35:14 I want to be there.

35:15 I would love to be there.

35:17 But I'm already long ago booked a trip to be somewhere else.

35:21 And I cannot yet be in two places at once.

35:23 It isn't possible yet.

35:25 Once we get to quantum computers, we'll start working on more of the quantum entanglement.

35:28 My superposition will be attending that talk.

35:32 Excellent.

35:32 So, yeah, please come join us.

35:34 I'd love to see everyone there.

35:35 Yeah, that's super cool.

35:37 All right, I have some extras as well.

35:38 What do you got, Michael?

35:39 I have homework, apparently.

35:41 Thanks, Calvin.

35:41 So, I think this is super cool.

35:43 I'm so excited about it.

35:44 And I just put this up over the last two weeks, but since our last episode.

35:48 So here you go.

35:49 Did you run across this on the website yet?

35:51 I used it today.

35:53 You did?

35:54 I did.

35:54 It was actually quite nice.

35:55 I wanted to make sure we had not talked about that quantum, post-quantum release of cryptography in a prior episode.

36:01 So I actually used the MCP via the cloud web to double check my notes.

36:06 How cool.

36:07 Yeah.

36:07 All right.

36:08 So here's the announcement, folks.

36:10 Python Bytes has several AI integrations.

36:12 Most notably, it has a MCP server.

36:16 I don't remember how many tools we have.

36:19 Quite a few.

36:20 You also had stuff in there for courses as well.

36:22 Yeah, I've proxied over the Talk Python courses that people ask about courses.

36:26 It's got all the documentation.

36:28 I think it's got something like 12 or 13 commands.

36:33 But it's got a lot.

36:33 So it's more than just the search.

36:35 You can ask it all kinds of questions.

36:37 And what's really nice about this, Instead of your AI scanning a megabyte worth of RSS feed, it just calls APIs that are database-backed and indexed in sub-millisecond response time and completely up-to-date.

36:49 So if you have any questions about it, check it out.

36:51 So the marquee here is MCP server now available on Python Bytes.

36:57 But there's also some other cool things, Calvin, that I feel like I've sort of gotten this vibe from great docs and I've gotten it from other things.

37:05 So, for example, if I was on a URL for one of our episodes, like 488, and I wanted something more friendly than all of this HTML junk, I could just put MD on the end, and now I've got a marked out version.

37:19 I like that.

37:20 And that's the kind of thing that something like Claude would really like to know.

37:24 Or you want just the description?

37:26 You can just put, whoops, description?

37:29 No.

37:30 I like that because I've been using the Elastic Service Virginia.

37:33 Virginia, I already say that,.ai for making markdown out of these pages.

37:37 Now I can just change my skill to just put addMD.

37:40 Yeah, yeah.

37:41 And if you go to the MCP server, actually it talks about those things like, oh, you can do the MCP server, but you can also just put the extensions.

37:51 And it also has an llms.txt.

37:54 And in the llms.txt, it tells you you can put.md,.summary,.title, and so on, onto any of the episode URLs.

38:02 Yeah, and then they basically upgrade to those.

38:04 That's funny.

38:05 This really reminds me, the old days when I first started in web development, I was on Zope.

38:11 I loved Zope as an application server.

38:14 And Zope allowed you to do things like this where it could be like slash title, slash description, slash publish date.

38:20 And so it was an RPC, web RPC call that was just almost like a self-documenting URLs, which is like what I feel like the web should be.

38:28 And that really demonstrates the power of the web and be able to basically call into the objects that you're publishing.

38:35 The Z object publisher lives again.

38:37 It lives again.

38:38 It definitely does.

38:40 But now I have homework, so that's cool.

38:42 But also I'll see what I can do about it.

38:44 But it also should mean less load on your servers.

38:46 That's true.

38:47 Because it's absolutely getting hammered.

38:49 Hammered.

38:49 So popular.

38:51 No, it is cool though.

38:52 It will be now.

38:54 Yeah, I know.

38:54 It will be now.

38:55 If you register this with your cloud or whatever other things support MCP servers, it'll often, like we just say, what did Python Bytes say about this?

39:05 Or tell me like, yeah, it'll just, that's all you got to say.

39:07 And it'll go, oh yeah, we got that MCP.

39:09 We're on top of it.

39:10 Yep.

39:10 I've been a long time user of the Talk Python MCP server as well.

39:13 Awesome.

39:13 Yeah.

39:13 Yeah.

39:14 So whatever homework I have for this one, I have also for that one.

39:16 That sounds awesome.

39:17 Hey, Michael.

39:18 One really quick more, one quick more announcement.

39:21 I promised you all a Rust course.

39:22 Very relevant.

39:23 Very relevant.

39:24 Yes.

39:24 You already gave it a bit of a shout out in terms of a concept.

39:27 So Christopher Trudeau and I teamed up to do an up and running with rust course.

39:32 So Christopher wrote this and it is super good.

39:35 It's, how long is it?

39:36 It is three hours long, called Up and Running with Rust.

39:40 It's available right now over at Talk Python.

39:42 And if you want to just start from the ground up and get a good foundation for rust, it goes through sort of pure rust angles.

39:51 And then it says, last thing, I know the dog is super excited about this.

39:56 Last thing.

39:56 Got very excited about this.

39:57 I know how he feels.

39:59 I totally understand how he feels.

40:01 So if you want to then maybe integrate that with Maturion or PyO3 and that kind of stuff, it goes through building out a Python library that is mixed Python and Rust as well.

40:12 So I encourage you to come over and check out the Up and Running with Rust course.

40:15 It's really good.

40:16 Chris has a ton of humor mixed in there, so you'll really enjoy that as well.

40:20 Yeah, he's a great presenter.

40:21 I love that.

40:22 Yeah.

40:22 I forgot the dog was even in the room.

40:26 He's so quiet sometimes.

40:27 I love that the dog is being part of the show.

40:30 Yeah.

40:30 Yeah.

40:31 Mushu approves of the up and running with the Rust course.

40:34 He fully endorses this course.

40:37 He's all about performance.

40:38 It's all about performance.

40:40 Check it out.

40:41 My dog barked as well, but she's outside and a little farther away.

40:44 I don't think it came through.

40:45 All right.

40:46 But.

40:46 All right.

40:46 Let's head to joke, Michael.

40:47 You got a joke for me for this week?

40:49 They already know.

40:50 They already know.

40:51 I feel this is more just a commentary on life on the internet.

40:55 So here's the joke.

40:57 and it has to do with Google.

40:58 So it's like there's this cartoon character.

41:02 It says Google harvests all my data.

41:04 And they embrace it, right?

41:05 They're like Google knows where I live, my browser history because I'm signed in, my face, my Gmail, my docs, all the things.

41:14 And yet it's still on all these web pages.

41:18 Ask if I'm a robot.

41:21 Sometimes it's so smart yet so stupid.

41:25 Please identify all the bicycles.

41:26 No, those weren't the bicycles.

41:28 Please identify all bio-riders.

41:31 What are you doing?

41:32 You know about me more than I know about me.

41:35 I've forgotten half of what you know about me.

41:37 So the joke is entitled, but they already know.

41:41 Yet they'll ask again.

41:43 Yes, they will.

41:43 It's not a full-on joke, more of just social commentary, internet commentary.

41:48 Kind of like going into the doctor and having to fill out those dating forms 20 more times. I'm sure they already know.

41:54 They already have this data. Why are we doing this again?

41:56 Are you allergic to any medications?

41:58 Nothing's changed the last 20 times I told you.

42:00 No, still not.

42:01 They already know.

42:02 The same ones.

42:03 Yeah, they already know.

42:04 All right.

42:04 Well, Michael, thank you again for being with us this week for Python Bytes.

42:08 We'll see you next time.

42:10 Yeah.

42:11 Thank you, Calvin.

42:12 And thank you, everyone.

42:12 Bye.

42:13 We'll see you all later.


Want to go deeper? Check our projects




Subscribe to Python Bytes