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

#493: CalVer and LTS

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

About the show

Sponsored by Logfire from Pydantic: pythonbytes.fm/logfire Connect with the hosts

Michael #1: Web UIs for your reverse proxy

Traefik, nginx, and Caddy all sit in front of a lot of self-hosted infrastructure, and all three are configured by hand-editing files. Three active projects put a control plane on top: Traefik Manager (Python + Flask), Nginx UI (Go + Vue), and caddy/ui (React + Node). All three are additive rather than replacements - none of them take ownership of your config away from you - which is the part that matters when the thing has write access to production routing.

  • Traefik Manager is the Python one: Flask 3.1 and Gunicorn for the control plane, a lightweight Go agent for remote instances, currently v1.10.0 with an Android companion app.
  • Nginx UI is a single Go binary at 11.3k stars, with a block-style config editor, an Ace editor doing LLM completion on nginx syntax, and an MCP server so agents can drive it.
  • caddy/ui runs as two containers next to your existing Caddy, reads and writes your Caddyfile directly, and uses Caddy's /adapt API to validate before reload - no Docker socket required.
  • Each one edits the config the underlying server already reads, so your files stay the source of truth and you can drop the UI without unwinding anything.
  • Undo is a first-class feature across all three - timestamped backups with optional Git history, config version compare and restore, Caddyfile snapshots with one-click rollback.
  • Observability is where they diverge: Traefik Manager does CrowdSec and a visual route map, Nginx UI does server metrics, caddy/ui streams access logs over SSE and pulls p50/p95/p99 off Caddy's Prometheus endpoint.
  • Maturity spread is wide - Nginx UI has 11.3k stars, caddy/ui has 4 and was built in a single Claude session - and caddy/ui ships with auth off by default, so set CADDY_UI_USER and JWT_SECRET before it goes anywhere near a public interface.

Calvin #2: Wagtail 8.0 is hot off the presses

Link: https://github.com/wagtail/wagtail/releases/tag/v8.0

  • Custom base page models are now supported, so projects aren't locked into subclassing Wagtail's Page as shipped (Matt Westcott).
  • New v3 REST API handles both read and write CMS operations, a first for Wagtail's API.
  • A global registry for permission policies, plus full customizability for the remaining page views via PageViewSet.
  • AVIF and WebP images are no longer auto-converted to PNG by default, a real behavior change to watch on upgrade.
  • Five security fixes: page admin API restrictions, document identification by SHA1 hash, descendant collections in the Documents/Images API, snippet copy permissions, and the page translation endpoint.
  • Formalized Django 6.1 support, and CI now runs on uv with a lockfile.

Sponsor: Logfire from Pydantic

Your AI agent failed at 2am. Was it the model? A tool call? The database? Most observability tools can't tell you, because they only see part of your stack. Pydantic Logfire sees all of it. One trace across your agents, LLMs, APIs, and database. Down to the infrastructure: services, Kubernetes, and hosts. It's built on OpenTelemetry, with SDKs for Python, TypeScript, and Rust, and it works with any OTel-compatible language. Every prompt, token count, and cost, right next to your vector searches and API calls. You query everything with Postgres-compatible SQL. And so can your coding agent, through the Logfire MCP server. Stop guessing. Read the trace. Pydantic Logfire. AI, it's still just engineering. Visit pythonbytes.fm/logfire today and sign up today. Get 10M records free every month, no card required. You can even click “Onboard with your coding agent” to copy a prompt to have claude or codex integrate Logfire into your app. Thanks to Pydantic for supporting the show.

Calvin #3: RISC-V is now officially supported by CPython

Link: https://blog.python.org/2026/08/riscv-now-officially-supported/

  • CPython added RISC-V as a tier 3 platform under PEP 11, specifically the 64-bit Linux target riscv64-unknown-linux-gnu.
  • RISC-V is an open ISA anyone can implement, unlike x86 and ARM, and its market is projected to quadruple by 2032.
  • The RISE Project donated real RISC-V machines for buildbots; the author's work was funded by a Sovereign Tech Agency fellowship.
  • What changes: the port is now a maintained compatibility target, so CPython changes are less likely to quietly break it. What doesn't: no python.org installers, no binary wheel parity for native extensions.
  • Next up: RISC-V runners in CPython CI for pre-merge feedback, then a push toward tier 2, plus architecture-specific optimizations.
  • The ask is testing. If you have RISC-V hardware, build CPython, run your test suite, file what breaks. Tier 3 is the weakest support tier. PEP 11 tier 3 requires a core developer contact and a buildbot, but failures on tier 3 platforms explicitly do not block a release. Saying "ongoing CI/testing expectations" oversells it. The honest bit is "someone is now on the hook for it, and breakage gets noticed," not "it's guaranteed working." Worth the caveat that this is Linux SBCs, not microcontrollers. A VisionFive 2 counts, an ESP32-C6 or Pico 2 does not. Those are 32-bit non-Linux parts where MicroPython is still the answer.

Michael #4: Django’s annual releases make every version an LTS

Starting with Django 2028, Django will move to one January feature release per year, adopt calendar-based version numbers, and support every release for three years. The old distinction between standard and LTS releases disappears, giving teams a predictable annual upgrade path that aligns more closely with Python’s own release and support cadence.

  • Every Django release becomes the safe, long-supported choice, so teams no longer need to wait for a specially designated LTS version or absorb two years of changes at once.
  • Each release gets one year of mainstream bug fixes followed by two years of security and data-loss fixes.
  • New releases support the three latest Python versions and add the next Python release during their first year.
  • Calendar versioning begins with Django 2028, followed by Django 2029 and so on.
  • Three Django versions will be supported at any time, giving third-party packages a clearer rolling target.
  • Nothing changes before 2028, and existing commitments for Django 5.2 LTS and 6.2 LTS remain in place.

Extras

Calvin:

  • The Python docs now document the time complexity of built-in types https://docs.python.org/3.16/library/time-complexity.html
  • Thinking in Python - Bruce Eckel's free book https://thinkinginpython.com/ Michael:
  • prune_uv_pythons.py - Prune uv-managed Python installs, keeping only the newest patch per minor version
  • Started using Ollama cloud models for my Hermes assistant. Thanks to Jeff Triplett I learned they are not just local models.

Joke: The Tao of Programming - Book Seven: Corporate Wisdom

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 493, recorded on Tuesday, August 25th, 2026. I'm Calvin Hendricks

00:11 Parker. And I'm Michael Kennedy. Hey, Michael. Glad for you to be here. We are sponsored this episode by Logfire from Pydantic, so make sure you check them out. There are links in the show notes.

00:22 If you want to connect with Michael and I on the socials and the show itself, you can catch us on Mastodon, Bluesky, X, and LinkedIn. And join us for the live stream. Each week we record this live,

00:33 you can join in, comment, be a part of the audience at pythonbytes.fm/live. It's usually Tuesday at 7 a.m. Pacific. It's a little different, but because of DjangoCon. And finally, if you want an

00:46 artisanal handcrafted digest of every week's show notes in your email form, add your name to our friends of the show list and we'll never share it to anyone else michael let's dig in uh i think we got a web heavy episode except for one item in here and you're going to kick off with one right

01:01 now yeah i'm going to put it in reverse or race mode if you know the british radio joke yeah well first of all hello Django con thank you for the greetings and uh calvin you're reporting live from

01:12 jango con yeah i am live from jigger i am in the hotel of Django con here in downtown chicago we are in the loop. So those of you who know Chicago area, right on the river, it has been a great conference. This is day two. We've had some excellent keynotes. Don Wages, Sarah from the

01:27 Django community gave some excellent keynotes each day. And there's been some lightning talks are also one of my favorite things. So a couple rounds of lightning talks have already happened, one of which you're going to cover as part of one of your news items. So there's a lot of Django news

01:40 actually in this episode included. So it's very timely that DjangoCon is happening right now and and lots that's happening in the community.

01:46 Yeah, we've got a couple of Django topics actually.

01:49 You did say it's a web heavy episode, right?

01:50 It is, except for my one outlier.

01:52 We'll get to that.

01:53 We'll get to that one.

01:54 Right, well, let's talk about the first one.

01:56 So this is, I ran across this for something called Traefik.

02:00 Are you familiar with Traefik?

02:01 I am familiar with Traefik.

02:02 Yeah, so Traefik is, it's a reverse proxy like Nginx or Caddy, but it's a little more focused on microservices and like I've got a Kubernetes cluster and stuff is coming and going, and maybe it's recycled and now it's in a different location

02:16 in terms of an internal URL.

02:18 And so it's gonna like find those pieces and put it together.

02:21 So I ran across this thing called Traefik Manager.

02:25 Are you familiar with Traefik Manager?

02:27 I'm not familiar with Traefik Manager.

02:28 So I don't know about you.

02:29 Yeah, anyone who's ever used Kubernetes is using some kind of reverse proxy.

02:32 Yeah, this would be, yeah, exactly.

02:34 I think Traefik might be the most popular for that.

02:37 It's not the one we're using for Python Bytes.

02:39 I'll say a bit more about that in a second, but yeah.

02:41 So this Traefik manager is a visualization dashboard for your Traefik server.

02:47 And if Traefik is your front end server, your reverse proxy, whatever you call it, it is the one choke point that all Traefik is going through.

02:54 So it's a really good place to report on how things are going.

02:57 Of course, besides CDNs, which are, you know, their own deal.

03:00 But this is a really nice looking UI that you can, it gives you all sorts of information.

03:07 How many requests, how many routes do you got?

03:09 How many services is it serving?

03:11 What's the Traefik?

03:13 What media are you hosting?

03:15 What else we got?

03:17 Route map, logs, CrowdSec for security, I presume, TLS options, certificates.

03:23 All of that.

03:24 You can just see this live as a web dashboard over top of your infrastructure.

03:28 It's really slick.

03:29 I think that's pretty slick, right?

03:30 What do you think?

03:30 I think having that available just at your fingertips to be able to diagnose, triage, understand patterns, especially when something goes wrong, having more bandwidth of data coming in as the human making some decisions is better and this

03:44 looks wonderful for that yeah it looks great and it shows you how to run it just as an installer but also on docker podman and like on bare metal Linux and so on yeah it's you can even edit like static

03:56 files and a few other things so i think this is pretty cool so i saw that i thought oh let me cover this i'm like well and i looked into Traefik a little bit and Traefik is great for a certain

04:05 class of problems, the ones I described at the opening, but it's not a true just front end thing.

04:12 Like for example, it doesn't serve static files at all, right? Or certain things. So it's like a little bit, you can, a lot of people could use it, but not everybody. Well, what are the other options? Well, the other options are Nginx, right? Which is what we use for Python bytes. I have an

04:27 insane amount of Nginx config files. There are 2,200 lines of Nginx config powering 33 containers on my server oh my goodness i'm a little committed to nginx at this point and unlike many other

04:40 things you can't run another server like Traefik or caddy which i'm going to talk about next to it because they all need port 80 like you can't even set up tls until you can get to you know what i

04:50 mean like it's uh so it's a really hard cut over basically is what i'm saying so right now i'm

04:55 sticking with nginx and like well is there something like this for nginx because that is a full on front end story, right?

05:02 So I will introduce you to Nginx UI.

05:05 Guess is how you would pronounce it?

05:07 Yet another Nginx web UI.

05:09 There's others.

05:10 It's not the only one.

05:10 Yes, it's not the only one, no.

05:12 But you can go to the demo, which is very confusing 'cause it just takes you here and says, you gotta log in.

05:16 I'm like, huh, what do you think that's about?

05:18 Go back to the page that took you the demo.

05:19 Where's the username and password?

05:20 Nah, but I'm a hacker.

05:22 I didn't know if that told you in my spare time.

05:25 Admin, admin, admin.

05:26 You may be a hacker too because let's see if that gets us in.

05:29 Sure enough.

05:30 Sure enough, login successful.

05:32 There we go.

05:33 So this is actually even better than the Traefik one, I think.

05:36 So it shows you stuff about your server.

05:38 This is your Linux machine running, or Docker machine, running Nginx.

05:42 The CPU stats, network stats, disc IO, all that kind of, which is really cool, right?

05:47 Then you get over to Nginx and it shows you the max number of requests per second you can handle, the max concurrent connections, the request per connection, which is like these are just like kind of stats.

05:58 And it shows you where the process is working.

06:01 Is it cache processes, worker process, et cetera, alive connections, all this stuff.

06:06 That's really cool.

06:07 It lets you manage your sites.

06:08 Now, at least the Nginx one, I think actually the Traefik one as well, but the Nginx one lets you edit your config.

06:15 You can go over your manage sites here and you can say, I could even add a site, but I could go over here and edit the prime sponsor, whatever that is.

06:23 But you can go and put in, just start typing away in your Nginx config here.

06:28 Set your upstream, set your server.

06:30 You can view the logs, which is pretty sweet, and all kinds of stuff.

06:34 Look at the certificates, configs, upstreams.

06:37 This one makes me nervous.

06:38 A little terminology just goes to your server.

06:39 I'm not a fan of that.

06:40 Like, that should be turned off.

06:41 Just, there's no need.

06:42 There's no need for that.

06:43 A little bit of security risk there.

06:45 You know what?

06:45 I'm sure it's fine.

06:46 Everyone was just looking like, yeah, it would be mean to mess with this.

06:48 It kind of reminds me of the old days of Webman, which was riddled with security problems.

06:53 like a C panel or something.

06:55 Yeah, right.

06:56 Exactly.

06:57 Yeah.

06:57 So anyway, what's cool though is I believe this as well.

07:00 Certainly the prior one, you can run it in Docker just as a sidecar Docker container.

07:05 So it's just in your Docker cluster set up there, which I think is pretty cool.

07:08 So this is one that looks pretty interesting.

07:10 And finally, I'm a fan of Caddy.

07:12 If I didn't have 2,000 lines of config, I'd have to migrate.

07:15 I'm starting over.

07:16 I'm pretty sure I would do Caddy.

07:17 Caddy looks great.

07:18 I've never used Caddy.

07:19 No, I've never used.

07:19 I mean, I've heard of it.

07:20 I've never used it.

07:21 I've been more on.

07:22 We've been using Traefik quite a bit, and we historically use a lot of Nginx.

07:26 Yeah, same.

07:27 I mean, Nginx and then like, no bad Traefik.

07:29 But, so this is really cool because it's config file is supposed to be like, just what you need.

07:35 It's got kind of a Python vibe.

07:36 Like, yeah, you don't need a namespace, a static class, and a static main void.

07:40 Like you could just, could we just put the thing that does the thing in there?

07:44 Which is really cool.

07:44 And it also does auto, automatically does, it's in order to get SSL, All you got to do is turn it on and have the IP address pointing there and you make a request to it.

07:54 And it just does that, manages it like that.

07:56 So certainly a very neat setup.

07:59 I feel like this is a pretty modern server.

08:02 So with that said, there's also CATI UI, which is another one of these.

08:06 Of course there is, right?

08:07 Because why wouldn't there be?

08:08 Let's say you look at like a dashboard and then logs and like metrics for your server and so on.

08:13 It's like so dark mode that even the text on a black background is mostly dark.

08:17 So I wonder if there's not a limited audience for these UIs though, because if you're at a certain level, you're gonna have Prometheus, Grafana, and all these kinds of metrics streaming into a centralized observability platform

08:30 where you can now correlate and trace, but you're still only getting a view from the web server.

08:35 I didn't know, did you see if they include any kind of web request tracing in there?

08:40 It could only go so far.

08:41 I didn't see any.

08:43 Yeah. - No, I didn't see any.

08:44 I think that this is targeted at the Home Assistant crew, The one website, small project crew.

08:53 Although the Traefik one talks about a lot of auto discovery of services and that kind of stuff, which speaks not to it.

09:02 So the Traefik one seems maybe to be the most pro of them all.

09:06 Very cool.

09:07 Anyway, there you go.

09:09 If you want a UI for your front-end web server, why not?

09:12 You can get it.

09:13 You can get it.

09:13 All right, well, let's head back into Django world.

09:17 in the Django world, there's a brand new release that released, I think it's like literally, I'll dive in, we're at Wagtail land now. Wagtail did an 8.0 release today. So this is very, very

09:28 hot news. If we go into the Wagtail repository, take a look at the releases, you'll see here eight, six hours ago, 8.0 release for Wagtail. So the Wagtail team has been very busy. They have not

09:40 even completed the release blog for this yet, which will come out tomorrow, depending on when this comes out, you should see that news tomorrow. But if you're a Wagtail user, you can rejoice that

09:49 there is the 8.0 version out right now. Some new stuff that is inside of Wagtail. We've got custom base page models are now supported. So projects aren't locked into subclassing Wagtail's page as

10:02 shipped. So you get a little more flexibility to having your own custom base page models. I think that's going to be a big win for folks who want to do more customized things and not feel so constrained. The V3 REST API handles both read and write operations for the CMS,

10:16 so that gives a lot more flexibility to the API and be able to have a fully headless wag tail if you wanted. There's a global registry for permission policies plus full customizability for the remaining page views via the

10:28 page view set. Another big one to watch out for if you're migrating from prior to eight, so in the seven or the six range, AVIF and WebP images are no longer are going to be auto-converted to PNG by default.

10:40 So that's something to watch out for on Upgrade if you're depending on that specific behavior.

10:43 They're going to be treated more natively by the platform, but you may have some special behaviors because you were depending on the auto-conversion.

10:50 I don't know how to feel about WebP images.

10:53 You know, I like to be on the cut edge of these things, but I just feel like, I don't know, I feel like they're everywhere though.

10:57 I more and more see them all the major sites.

11:00 Yeah, almost all the ones on Python by Set.fm are WebP.

11:04 I went through the Google page optimization stuff and you know like lighthouse is that what it's called yeah all those things right yeah all those things it's like you need to upgrade to webp you need to upgrade i'm like fine i will upgrade to

11:16 webp and i went through it and yeah they i do think it's actually a slightly a little bit better like is it as big of a deal as they make uh probably not but sometimes it's really nice and and so on it does seem to work pretty seamlessly except for if i go to youtube like for example if

11:29 i want to change the thumbnail for this live version of our recording yeah on a google property it will not allow me to upload a web P file because it says it's not an image.

11:38 I'm like, I'm not surprised.

11:39 It's Google.

11:42 So there's places like that, like, or if you try to set it as the poster for your podcast, a lot of the podcast apps can't display web P even though the platform can't, like, there's just like a little hang up.

11:52 I imagine though it's like, there are people like, I want web P stop turning it back into something else.

11:56 I put it there on purpose.

11:58 Cause Google told me to.

11:59 Cause you did it.

11:59 Cause this is optimized.

12:00 It was funny because a lot of platforms are just a little behind the times on what image because obviously they're trying to protect their platforms and not allow random images or random not images to be uploaded as images so i think a little uh thumbnail.exe for example right

12:14 right it's a little peer pressure to get folks to do the right thing would probably go a long way so google google if you're listening go update your uh application to support webp for that exactly

12:24 youtube team just yeah add a star.webp in there come on let's do it so and more importantly in

12:29 in this release, there are some five major security fixes. The page admin API restrictions, document identification by a SHA-1 hash, the descendant collections and documents and images

12:41 API, and the snippet copy permissions, and the page translation endpoint have all had fixes. I highlighted them here on the screen, but you can go see those in the release notes. They're called

12:50 out with the big security fix prefix there. Also of note is formalized. They now have formalized django 6.1 support and the ci now runs with uh uv and a lock file so the uv is takeover is it's

13:04 been successful in the wagtail community very cool yeah wagtail is neat i'm glad it's getting the love and april that's a big release yeah and i think this will tie in with your later segment the

13:16 the intentionality and the sophistication by which they tie themselves to specific releases so that you know you are well supported by the community, by the bug fixes, by the maintainers.

13:27 All that lines up really, really well in the Wagtail community.

13:29 And we'll talk about it a little more when you get into the Django stuff as well.

13:33 Absolutely.

13:33 Well, before we get to that, though, maybe a quick thanks to our sponsor.

13:38 That sounds awesome.

13:39 Yeah.

13:39 So thank you, Pydantic and thank you, Logfire, their observability platform from Pydantic.

13:45 So here's the situation.

13:46 Your AI agent failed at 2 a.m.

13:49 Was it the model, a tool call, the database?

13:52 Most observability tools can't tell you because they only see part of the stack.

13:55 Pydantic Logfire sees all of it.

13:57 One trace across all your agents, LLMs, APIs, and databases.

14:01 Down to the infrastructure, services, Kubernetes, as well as hosts.

14:05 It's built on open telemetry with SDKs for Python, TypeScript, and Rust.

14:09 And it works with any hotel compatible language.

14:12 Every prompt, token count, cost right in your vector searches and API calls.

14:16 You query everything with a Postgres compatible SQL language.

14:21 So super easy to do.

14:23 You get reports and slice and dice them.

14:25 And your coding agent can get there through the Logfire MCP server.

14:30 So stop guessing.

14:31 Read the trace.

14:32 Once you have it installed, you'll have the trace, right?

14:34 Logfire AI.

14:35 AI, it's still just engineering.

14:37 I'm actually going to close out the show with a little sidebar on that.

14:41 But visit pythonbytes.fm/logfire today and sign up.

14:44 You'll get 10 million records for free every month.

14:45 no card acquired. And we talked about last time, you can even click the onboard your project with your coding agent, which instantly copies a markdown block. You just paste into cloud or codex and it will go on it. I'm on it. You're going to have a log fire in your app. So give me 10

15:00 minutes. So thank you to Pydantic for supporting the show.

15:03 And count feature. I think they're downplaying that. They need to put that front and center.

15:06 That's going to be a big deal.

15:07 Yeah. That's the one that you all are chasing, right?

15:10 Yeah, totally right now. So I don't want to turn this into a full segment, but I think that There's a lot to be said for having that just right out of the box with their tools.

15:19 So very cool.

15:19 Well, thanks Pydantic Logfire for being a sponsor.

15:23 This is the one non-webby thing on here, but could have a web implication.

15:28 So the Python Software Foundation has announced RISC-V support is now officially supported by CPython.

15:35 Why would anyone care?

15:37 So I'll get into that.

15:38 So RISC-V is a CPU architecture, and it's technically so important fits here.

15:45 It's now a tier three platform under PEP 11.

15:48 So the rules for when they build, what they build, how they support, fast-summing gets prioritized for fixes, all comes into play when saying it's a tier three platform.

15:57 But it does mean someone's watching and someone does care.

16:00 So this is specifically for 64-bit Linux.

16:03 So that means that if you've got single board computers, kind of like Raspberry Pis, but they're running alternate architectures like RISC-V, which there's quite a few of those out there on the market right now, you can now depend on there being a Python

16:16 build that will run on your architecture and not having it be kind of a maybe it'll work. So this opens up a lot of things in like maybe the IoT space, the home automation space. There's a lot of

16:28 at-edge computing applications here where now Python can be a number one potentially choice for the coding, application building, deploying at edge, and you're not relying on just maybe lower

16:41 level languages. So hopefully this opens up some of that IRT space to other folks. So yeah, like the RISC-V is an open architecture that anyone can implement, unlike the x86 and ARM, which are like

16:53 closed. But its market is projected to quadruple by 2032. So we expect to see more news about RISC-V of architectures and processors, especially given all the hype around GPUs and things like that

17:05 right now. So what changes? The push now maintained with a compatibility target. CPython changes are going to be less likely to quietly break it. That means that they got to take care of it. Someone's

17:16 basically watching. What you don't get, there are no Python.org installers yet and no binary wheel parity for native extensions. So if you've got an extension that depends on a C compiled or a

17:27 Rust compiled binary piece that's still on you to compile and enroll your own. But at least this is a step in the right direction. And if their market share is going to quadruple, it's nice to see

17:38 Python taking proactive measures to ensure we have compatibility there. See what else we got in here.

17:43 Yeah. The one thing that folks may also think would be happening is, for example, you're familiar with SP32 boards. If you do any kind of home automation or any kind of like hacking on hardware

17:54 or IoT. You've probably heard of the SP32 platform or the Raspberry pypyco, Pico2 platform. Those are RISC-V processors, but they are not 64-bit Linux RISC processors. So there's not necessarily support

18:07 yet for those embedded processors. You're still going to want to use MicroPython or CircuitPython for those kinds of applications. But if you're using something like the Vision 5 board, there's

18:19 a couple other boards out there on the market that are more like Raspberry Pis. You'll now have support. You can embed those, put them at the edge. There's reasons why you may do that. For example,

18:27 costs, supply, demand, power, efficiency, energy usage, a lot of special cases here. But again, I think it's kind of exciting news. I'm a nerd when it comes to like hardware and architectures,

18:40 and I know not everyone cares, but it does mean you could run Django on a RISC-V processor now reliably and have releases out there that will guarantee to work. So that's what the news is

18:50 the risk five i love it yeah that's really cool it's easy to think okay mac Linux windows arm x86 that's what we got to support right but there's a bunch of little little tiny devices exactly

19:01 we all run on like here's my 25 esp32 if it were 64 then i'd be even more excited i run circuit python on it but yeah the ability to reach all these little so many little niche things

19:14 well and there's been recently there's been shortage of raspberry pi vives for example So I think that helps with the supply chain issues potentially.

19:23 And again, from power and efficiency, we see this thing quadrupling.

19:27 We better make sure Python's there.

19:29 So I'm excited to see the Python community making that happen.

19:31 As well.

19:32 I'm as well.

19:33 My experience working with effectively MicroPython, it's super cool in the language.

19:37 It's Python, but there's a lot of stuff like, you want this library?

19:40 No, no, no, no, no.

19:41 You don't get that.

19:41 You get something that looks a little bit like it and it sort of works like it, but it's really tricky.

19:46 So the more it can just be the same, the better.

19:48 Yeah. So I assume this will eventually trickle down into, who knows, maybe MicroPython will kind of just disintegrate, fade into the background, just genuine support for the architecture now that this is here.

19:58 Maybe it becomes a little bit like an anaconda. It is the same Python, but it's more ready for you to actually do stuff with. Who knows?

20:06 Yeah. Yeah. Well, speaking of supporting languages, I think you've got a little mixed up here.

20:12 Let's talk about Django. I mean, how do I get this? I'm not even at the conference.

20:16 I know, but I saw it on there.

20:18 Like, honestly, I'm glad you're covering this because it's, I think truly, again, important news.

20:22 It speaks to the volumes of how the communities are supporting the software that we're putting out and the vibrancy and viability of open source.

20:31 Yeah, I always feel like with web frameworks, I'm just a flyer.

20:33 I'm like, well, let's try this.

20:35 Maybe it'll go unsupported in six months or maybe it'll be still going strong.

20:38 I don't know, but it's But not with Django.

20:40 But exactly, not with Django.

20:42 And that has been true for a while.

20:44 However, Django's had this sort of multi-stage release where it's like, well, some of the things are just feature releases and they won't last that long.

20:53 And others, these are the LTS or long-term versions.

20:56 And those, if you install and run on those, then you're going to get guaranteed 12 years at least, right?

21:02 Well, the news is, folks, Django is moving to an annual release cycle, part one, by our friend of the show, Carlton Gibson.

21:09 and every release is going to be an LTS, three years of supported version.

21:14 Super cool, right?

21:15 So I think that's really good.

21:17 So let me give you all the details.

21:20 2028, January, 2028.

21:22 It sounds so far away, but probably it'll be here just like, oh, is it 2028?

21:26 I guess, here we go.

21:27 I'm sure we'll cover it then.

21:28 But in 2028 in January, there will be a new version of Django and it won't be called 6.1, 7.0 or whatever the heck it would have otherwise been called.

21:38 It's going to be called Django 2028.

21:41 So they're moving to calendar versioning instead of semantic versioning.

21:44 Big fan of calendar versioning.

21:45 Yeah, I am too.

21:46 I'm generally a fan of calendar versioning as well.

21:49 So we're going to have Django 2028, Django 2029.

21:52 And you won't be able to play the game like, hey, what year was Django 3 released?

21:58 I'm really a Django fan like, yeah.

21:59 What year was Django 2028 released?

22:02 Like, I'll tell you what, I bet it was 2028.

22:04 Pretty amazing.

22:05 So that's also helpful.

22:06 Kind of give you a sense of like, oh, we're running on 2026 and it's 2031.

22:10 This is probably not good, folks.

22:12 It's probably not good.

22:13 So it can also kind of be a little bit of a marker.

22:16 All right.

22:16 So every release gets one-year mainstream bug fixes, followed by two years of security and data loss fixes.

22:21 The new release to support the last three years of Python versions.

22:25 So there's this interchange of support guarantees with Python and the next Python release during its first year.

22:31 Calendar version begins in 2028.

22:33 And then from there, three Django versions will be supported anytime because years are a year long and it's three years of support.

22:40 So there we go.

22:41 And most importantly, maybe nothing changes for a year and a half.

22:45 So existing commitments like 6.2 LTS still there as they were before.

22:49 Anything else you want to add to that?

22:51 I think these are the kind of promises that the community needs to make so that business understands that this community is serious.

22:59 If you've got software projects where you are just wishy-washy around what versions you're going to support, what versions it runs on.

23:06 You see this a little bit in the WordPress community, a lot of it in the WordPress community.

23:10 There's not hard and fast, like this should run on this version.

23:13 There's a long-term support that's going to give you bug fixes till this version.

23:17 It's a little more Wild West, I feel like, over there compared to the Django community.

23:21 I think I can make that as a fair statement.

23:22 The Django community is already committed to two long-term supports at any point in time.

23:27 So like right now we've got 5.2 and 6.2 will be coming up.

23:30 Now we're saying there's basically gonna be three versions that will be stable, supported, updated.

23:34 And you have now time in your enterprise planning to make sure you get your software updated to follow the schedule on your schedule and not the emergency schedule because stuff happened and now you gotta deal with it.

23:48 So I feel like that gives a big boost again to the peace of mind of running Django, running Python and doing this all in production and knowing when things are going to happen.

23:57 I'm a huge fan.

23:59 And the calendar version in the boot.

24:00 I, again, love that because, you know, immediately at a glance, if you're three years out of date and just about ready to run out of end of life on LTS, it's right in the name.

24:10 That's right there.

24:11 If I were running an organization based on Django, I would probably just be flipping to the new version pretty much mid-January or something like that.

24:18 I think most do.

24:19 Yeah, most do, but I think there's a class of org that can't.

24:23 Exactly.

24:24 Or just won't.

24:24 They just have a don't touch it principle.

24:26 Is it working?

24:26 Just don't touch it.

24:27 It's working.

24:28 I think this opens up just every February.

24:32 Just have a look.

24:33 What does it cost to upgrade to the next version of Django?

24:35 Do a little automation.

24:37 Give it a go.

24:38 See how it works.

24:38 And that gives you a really solid cadence of just staying to date.

24:43 And even though there's three-year support, I wouldn't have three-year gaps.

24:46 I would have one-year gaps because the number of issues you might run into are, on average, one-third as many.

24:51 So it just makes that little staying on top of it easier.

24:54 Because if you're five years out and you hear something is something catastrophic happens and you need to update for whatever reason, well, you're all of a sudden like juggling a really big migration project, you know, the house on fire.

25:04 So get ahead of it.

25:06 At this point, you can go three years and reliably have your CID pipeline build, you know, once a week, a seven day back off and know you're going to get the security fixes and the peace of mind of always having a patch piece of software that can be automated.

25:19 Like it should be no hands on to make this now a very secure process.

25:23 And if you're doing CI, CD, maybe throw in some knocks and just get different versions or something like that, right?

25:28 Like, hey, might as well automate.

25:30 Yeah, know when they're coming.

25:33 Get ahead of that curve.

25:34 Yeah, we've been doing unit tests in CI against the next version of Django for two months, so probably okay.

25:41 And that, unless you're doing something really kind of off the wall, Django releases are pretty non-events these days in general, which is awesome.

25:48 Well, do you have any extra events?

25:50 Do you have some extra events in here, Michael?

25:53 So a couple quick item here.

25:56 This one was interesting because the Python docs now document the time of built-in types.

26:02 This is not new per se because it's been buried in a wiki that's been aging for years and years and years.

26:09 But it was never front and center.

26:10 And so people had to go look it up.

26:11 It was never associated with the documentation directly.

26:14 So this is just a migration from wiki to official docs.

26:18 And so you can see over here on the list operation, a list copy has an O the N complexity.

26:25 And so if you are evaluating how you might implement specific algorithms, this may matter if you're in a very performance based environment or you're just trying to be more efficient about your coding.

26:36 These will give you all the hints around complexity and gives it for all the various default types.

26:41 So you want to know the complexity of a set compared to a dictionary.

26:44 You can see those things in here.

26:46 The strings and byte arrays and memories.

26:49 So all those are basically baked in.

26:50 You can see in the big O quotation if you're into that kind of thing.

26:55 I was never a computer science major in college.

26:58 So I never learned about this until later in life.

27:01 But that's very helpful because again, kind of next level thinking on that.

27:05 Let me add one thing really quick.

27:07 I saw this as well and this is interesting.

27:08 I wish the list would have like find item as well.

27:12 I don't think it does though.

27:13 because then you could have put that against, or does it?

27:15 Because then you can put it against like dictionary or set.

27:17 You're like, oh, it's a million times faster in set.

27:19 That's weird.

27:20 Maybe we should use that.

27:21 So these are like...

27:22 Especially for performance optimization.

27:24 Yeah, yeah, yeah.

27:25 So it could give people a little bit of an idea, but also I think having this listed here might encourage some new contributions to CPython.

27:33 For example, find range on there if you can.

27:36 There it is.

27:37 So what's the length or the min or the max?

27:40 Like len or min and max, all those.

27:43 is O of N.

27:44 Oh, Gitlin is one.

27:46 Okay, that's pretty good.

27:47 So it does know.

27:48 I guess it's not the...

27:49 It's been around a while.

27:50 No, no, but I still think min and max.

27:52 So for example, when you create a range, you say, what is the starting value?

27:56 What is the N in value?

27:57 And what is the step, right?

27:58 Yeah.

27:58 It should be able to answer O of one what the min and max are, right?

28:03 Because it knows where it starts.

28:04 It knows whether it's positive or negative.

28:06 It was in the arcs.

28:07 It's like a field of the object.

28:10 So for example, somebody might go, why the heck is that determined by the, like, if I have a million items in my range, why is it a million computations when it could just be just like Len looks up the length? Well, one. Yeah,

28:21 it should be oh one. Right. And so I think there might be some like some interesting interplay of performance in the next version of Python for these kinds of things. The other thing I wanted to let

28:30 everyone know about a friend of Python and the language, Bruce Eccle has released his thinking in Python book. So you can go to, I believe the address is thinkinginpython.com. And the whole

28:42 book's here. And he's a great author. I mean, he's been famous for doing this kind of work for decades now in multiple communities. And it's Creative Commons, freely readable online. And

28:53 there's a GitHub with all the examples and solutions in it. But if you're learning Python and you want to know about the insights, idioms, and patterns, this is, I haven't read the book yet because it just released.

29:03 But I got to imagine knowing the author and everything that's going into this, this must be a great place to start.

29:08 Yeah, Bruce does excellent work.

29:10 I've read some of his books and he's been on Talk Python before as well

29:13 and some other panels.

29:14 So yeah, very cool.

29:15 Good job.

29:15 Been around the community, long time.

29:17 Michael, you got any extras?

29:19 I'm feeling a little extra.

29:20 So Are you feeling a little extra?

29:22 Remember last time we talked about uv and it was those older security builds that were source only, but then I'm like, hey, uv is building them.

29:31 That's kind of cool.

29:31 Do you want to upgrade them?

29:33 But then I did a listing of all of the stuff I had.

29:35 I'm like, oh, I've got like a 3.9.3, a 3.94, 3.9.5.

29:40 Like, no.

29:41 I'm kind of scared to see how many I have now.

29:43 Yes, exactly.

29:44 There's like, there's no scenario where I want like seven versions of 3.9.

29:48 I mean, one is enough, certainly of that one.

29:50 Right?

29:51 So I created this little program, little shell utility you can run using, you can uv run it if you like.

29:57 Pretty cool.

29:58 And what it does basically is it goes through and it says, find me all of the uv installed pythons and show me which ones are duplicates.

30:06 So a duplicate might be 3.9.3 and a 3.9.4.

30:09 Like I have two 3.9s, right?

30:11 And you can even say, I want to just print them down.

30:13 So I only have the latest of each major.

30:15 I mean, it's not really a major version, but there's never going to be a three, the four O so I'm going to call 3.8, the eight parts of the major version.

30:23 Anyway, cause we can't have a four.

30:26 It's too, too traumatic.

30:27 So you can just say keep that, or you can say actually keep two.

30:29 You could say I want 3.9.3 and 3.9.2, but no more than that as the older ones, right?

30:35 Anyway, so you can run that, and I ran that here.

30:37 I actually have a little upgrade script that I've run on my computer periodically to upgrade homebrew and that stuff, and then upgrade uv, and then anything that's uv tool installed.

30:45 And so now I've added this thing into the mix, and it says pruning UVs pythons.

30:49 It says, look, you've got 3.14.5 free threaded version, and you've got 3.14.7 free threaded.

30:57 Why don't we drop the last one?

30:58 It says you should remove that, for example.

30:59 So you just say yes, and it takes away.

31:01 So anyway, put that out there for everyone to play with.

31:03 That's awesome.

31:03 If you go back to the script, I want to call out something.

31:06 I absolutely, the very top of your script, you're using the inline dependencies.

31:09 Yeah, yeah.

31:10 The uv run magic.

31:11 I absolutely love.

31:12 I think if you think about, if you could have gone into Claude Code and said, hey, Claude Code, prune my old versions and given it like your kind of rule set.

31:20 And it would have run through and used tokens and found all the ones and use more tokens.

31:24 But here you're giving it a deterministic.

31:26 This is the way to write.

31:27 tools for your own agents and use that that inline script i love that i think there's a good example i think of using exactly that that's good now yeah uv run works it just works i love it yeah yeah it

31:37 does and if i had dependencies that's where it really shines yeah automatically manage that for me yeah yeah it's wonderful yeah and on my older installs of my uv tool projects it did like lose

31:47 track of the virtual environment but apparently in the newer uv installs it will like remap to the like across major versions to like 3.14.3 and 3.14.7, it'll figure out, oh, we can just go to the seven, I believe.

32:00 Nice.

32:00 Anyway, yeah, so it might be a little bit of a pain after you might have to reinstall a few things on the older virtual environments, but I think it's in the future going to be less painful.

32:09 All right, also, very quick AI thing.

32:11 We've not done any AI, so I would like that.

32:13 It's been an AI-free episode so far.

32:15 It has, and this is super quick.

32:16 You know, when you think about Olama, I always thought about Olama as for running local models.

32:21 Yeah?

32:21 Yeah.

32:21 Did you know that they have a cloud version?

32:23 I did know that.

32:24 Yes.

32:24 Yeah, of course you do.

32:26 I knew you would.

32:28 But you can sign up for like $20 a month to get DeepSea, Kimi 3.

32:32 It's very, very inexpensive.

32:33 Yeah, GLM, 5.1, 5.2, all that kind of stuff as a thing you could just add.

32:38 So I'm using this to power my Hermes agent, which is really nice, as an alternative to ChatGPT, which also can be in the mix.

32:46 So I thought that was pretty interesting.

32:48 Yeah.

32:48 Yeah, especially with your ability to run like Kimi K3.

32:51 uh the glm five two the big ones uh yeah yeah these things you couldn't run them yourself so i've been doing like generally yeah i mean if you have if you're if your room is loud you might

33:02 be able to run it but if it's quiet you'll get away with them on the nvidia the spark boxes like if you not not just one but you if you if you daisy chain those things together it will spread

33:13 the memory across two of them you might be able to get one of these running yeah okay if you have an over $10,000 dedicated local AI machine,

33:22 then I consider you a special category.

33:24 Anyway, yeah, so people can check that.

33:27 Thanks to Jeff Triplett for showing me that.

33:28 That's a far more cost-effective way of doing it.

33:31 Couldn't be able to do this for a while until I break $10,000.

33:34 Although I still, I wouldn't hate having a couple of those Spark machines.

33:36 Those are cool.

33:37 All right, I would like to just go back and just have a little comment here.

33:40 And feel free to jump in or not put your hand on the stove.

33:43 So we published this to YouTube and got some comments there, some in favor of our position.

33:52 Others like, what do you mean CodeWork's not doing?

33:54 Like CodeWork is great.

33:55 But more like, more of the comments were like, well, I think you're not taking the negative side of AI seriously enough.

34:03 And it's fair.

34:04 I do, we periodically say it.

34:06 I feel like it's a little bit of a drag to just every week.

34:09 Like, yes, I realize this.

34:11 Anytime we mentioned LLMs, yes, I realize that this, A lot of this information was trained, taken to train with, and it was copyright theft.

34:19 Yes, I realized it's a data center that uses a lot of energy.

34:22 Out there, like we've said that before plenty of times.

34:24 But I think also it's the reason I named it this, Codeberg puts head in sand.

34:28 Not just to like dunk on Codeberg.

34:30 I mean, it's fun and all.

34:31 But the reason is over 90% of software these days, software development is done with AI.

34:38 Not exclusively, not like, no, just, hey, agent, go make me, go make Google or whatever.

34:44 Just keep making software.

34:45 Just pump out software until I tell you to stop, I guess.

34:48 Exactly.

34:50 Until my energy bill is too high.

34:52 But almost all of software these days is at least AI-assisted in a significant way.

34:57 90% and above.

34:58 And it's only going up.

35:00 So when I say things like this, I'm trying to put this on people's radar, especially people who are like, I'm not willing to, I just don't even want to look at it.

35:08 That is a choice.

35:09 But if you want a job as a professional software developer in five years, if you're like, I'm not going to touch AI, I will bet you it's going to be very hard to find a job.

35:17 I already know companies are saying, we're not hiring unless you at least are willing to use AI somewhat, or this is a skill that needs to be learned. And it is an important part, even if

35:28 you don't like it. It's like saying, I don't like object-oriented programming, but all of a sudden everything is Java and C-sharp. You're like, well, they only have objects. So you're going to have to just do a little bit of it. You know what I mean? Anyway, I just wanted to put that as a comment.

35:41 is like i'm not trying to dunk on people who don't believe in it but i do think if if you put your head in the sand it's it's gonna have a negative consequence on your career i don't know how do you

35:50 feel about this calvin if you want to say yeah i think to be eyes wide open and pragmatic pragmatic about our position on this in this trip i can't i don't want to imagine going back and not having an

35:59 ai assisted environment because it is very enjoyable to get so much done um because i can guide these tools that that way if you like creating software it's incredible and i hate saying like oh now

36:11 we're being complacent in our usage of say like copyright infringed material that has gone into the trainings models but i don't know how we can i don't know i don't know what you can do about that i don't it's not going back in the box right it's not going back in the box um and was what maybe

36:26 there was an issue with the copyright law to begin with and maybe there's a way people need to we can compensate people so that this is fair uh well at least more equitable and i would like to put out

36:38 there that some ai companies are doing that but the most haven't i would imagine yeah but i just think this it's like around the dot-com boom saying ah we don't want to talk about the web could do that

36:49 but a lot of the stuff is happening on the web right now like and i think this is bigger in terms of the sort of transformational wave like 90 right 90 of software development wasn't the web in the

37:00 the year 2000. I don't think so. No, no, we're going to, we're going to be the pets.com for

37:04 human knowledge. Exactly. We have dancing monkeys spending a million dollars every 30 seconds.

37:09 That was a, that was a Superbowl ad around the dot com days. For those of you who are of an age.

37:14 Yeah, exactly. It was my favorite one, I think. But look, I mean, I understand the drawbacks.

37:19 I understand what it's doing to software teams. I understand what it, the effects on like copyright right information and the effects on people's jobs.

37:28 But at the same time, it's 90%, it's really a challenge to ignore 90% of the industry.

37:35 And some of the comments are like, well, the people who can actually think and who aren't idiots.

37:39 It's like, you know what?

37:40 Not everyone who chooses to use these tools is a need.

37:42 That's a little bit harsh perspective.

37:44 So I think it's worth, I don't know, I just want to put that out there 'cause I feel like people are just like, oh, you're just flippant about it.

37:51 I'm like, no, it's just really transformational significant and we're going to have to deal with it like it or not because it's not going back in the box agree okay now there we go after all that are we actually ready for a joke i think

38:03 i'm ready for i'm ready for i think we need a joke we need a joke and this that was a little

38:07 philosophical wouldn't you say i would okay okay what do you offer me well did you ever read the tau to ten sort of the tau like the traditional chinese one no have you read the

38:18 tau of programming oh i would like to i would like to do a guided reading of the tau programming We haven't done this for a while.

38:25 So let's go over to the corporate wisdom.

38:27 I can't link to it because it's like a weird, God, this is like the oldest website that could be made in 1995.

38:34 Is this hosted on GeoCities?

38:35 What is going on here?

38:36 It might be, and oh my gosh, it even has a gradient background.

38:39 Yes.

38:40 All right, let's see.

38:42 I don't think I can get it to do like a reader view.

38:44 Oh, well, let's do a couple of sections from book seven, corporate wisdom from the Tao of programming, okay?

38:51 Okay.

38:52 7.1 The Novice Asks the Master: In the East, there is a great tree, structure that men call "corporate headquarters."

38:58 It is bloated out of shape with vice presidents and accountants.

39:01 Its issues, it issues a multitude of memos, each saying "go hence" or "go hither."

39:06 Nah, nobody knows what is meant.

39:08 Every year new names are put onto the branches, but all to no avail.

39:12 How can such an unnatural entity exist?

39:15 The Master calmly replies: You perceive this immense structure and are disturbed that it has no rational purpose.

39:21 you not take amusement from its endless gyrations? Do you not enjoy the untroubled ease of programming

39:28 beneath its sheltered branches? Why are you bothered by its uselessness? Where did you find this gem?

39:34 Oh, it's so good, isn't it? Oh my gosh. I'll do a little bit of, I think, I think 7.3. I'll do a little 7.3, then we'll call it. The magician of the ivory tower brought his latest invention to

39:45 the master programmer to examine. The magician wheeled a large black box into the master's office while the master waited in silence.

39:52 This is an integrated, distributed, general-purpose workstation, began the magician.

39:56 Ergonomically designed with a proprietary operating system, sixth-generation languages, and multiple state-of-the-art user interfaces.

40:03 It took my assistants several hundred man years to construct it.

40:07 Is it not amazing?

40:08 The master raised an eyebrow slightly.

40:10 It is indeed amazing, he said.

40:12 Corporate Headquarters has commanded, continued the magician, that everyone use this workstation.

40:16 As a new platform for their programs, do you agree to this?

40:19 Certainly, replied the master.

40:20 I will have it transported to the data center immediately.

40:24 And the magician returned to his tower, well pleased.

40:26 Several days later, a novice wandered into the office of the master program and said, I cannot find the listing for my new program.

40:32 Do you know where it might be?

40:33 Yes, replied the master.

40:34 The listings are stacked on the platform in the data center.

40:37 There you go.

40:39 So this is a fun read.

40:41 You can't do too much of it.

40:43 It's a thick, long joke, but we'll maybe come back to maintenance in a couple months or something.

40:48 books we can go through here let's fake the master programmer though a program be three lines long someday it will have to be maintained all right yeah that's a good that's a good one right there

40:58 great one great one great one to end on indeed all right well very fun michael and uh i'm gonna go back to Django con we'll talk to you all next week yeah have a great time at Django con and yeah see you next week sounds good bye


Want to go deeper? Check our courses




Subscribe to Python Bytes