Python Bytes - #493 CalVer and LTS
Episode Date: August 26, 2026Topics covered in this episode: Web UIs for your reverse proxy Wagtail 8.0 is hot off the presses RISC-V is now officially supported by CPython Django’s annual releases make every version an LTS ...Extras Joke Watch on YouTube About the show Sponsored by Logfire from Pydantic: pythonbytes.fm/logfire Connect with the hosts Michael: Mastodon / BlueSky / X / LinkedIn Calvin: Mastodon / BlueSky / X / LinkedIn Show: Mastodon / BlueSky / X Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesday at 7am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: 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 Runs automatically in my system “upgrade” script: upgrade-output-2026.png 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
Transcript
Discussion (0)
Hello and welcome to Pythonbytes, 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 Parker.
And I'm Michael Kennedy.
Hey, Michael, glad for you to be here.
We are sponsored this episode by Logfire from Piedantic.
So make sure you check them out.
There are links in the show notes.
If you want to connect with Michael and I on the socials and the show itself, you can catch us on Massadon, Blue Sky, X, and LinkedIn.
and join us for the live stream.
Each week we record this live,
you can join in, comment,
be a part of the audience
at Pythonbytes.fm.fm. slash live.
It's usually Tuesday at 7 a.m. Pacific.
It's a little different,
but because of Django Khan.
And finally, if you want an 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.
I think we've got a web-heavy episode
except for one item in here,
And you're going to kick off the one right 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 Khan.
Thank you for the greetings.
And, Calvin, you're reporting live from Django Khan, yes?
I am live from Jenga.
I am in the hotel of Jango Khan here in downtown Chicago.
We are in the loop.
So those you've known, 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 Jango 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 actually in this episode included.
So it's very timely that DjangoCon is happening right now and lots of happening in the community.
Yeah, we've got a couple of Jingo topics actually.
You'd say it's a web-heavy episode, right?
It is.
Except for my one outlier.
We'll get to that.
We'll get to that one.
Right.
Well, let's talk about the first one.
So this is, I ran across this for something called traffic.
Are you familiar to traffic?
I am familiar with traffic.
Yeah, so traffic is, it's a reverse proxy like Inchinex 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 in terms of an internal URL.
And so it's going to like find those pieces and put it together.
So I ran across this thing called Traffic Manager.
Are you familiar to Traffic Manager?
I'm not feeling of traffic manager.
So I don't know about you.
Yeah, anyone who's ever used Kubernetes is using some kind of reverse
proxy.
Yeah, exactly.
I think traffic might be the most popular for that.
It's not the one we're using for Python bytes.
I'll say a bit more about that in a second.
But yeah, so this traffic manager is a visualization dashboard for your traffic server.
And if traffic is your front end server, your reverse proxy, whatever you call it,
it is the one choke point that all traffic is going through.
So it's a really good place to report on how things are going.
And of course, besides CDNs, which are their own deal.
But this is a really nice looking UI that it gives you all sorts of information.
How many requests?
How many routes do you got?
How many services is it serving?
What's the traffic?
What media are you hosting?
What else we got?
Route map, logs, crowd sec for security, I presume, TLS options, certificates.
All of that.
You can just see this live as a web dashboard over top of your.
infrastructure. It's really slick. I think that's pretty slick, right? What do you think?
I mean, 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 the better. And this looks wonderful for that. Yeah, I think it looks
great. It shows you how to run it just as an installer, but also on Docker, Podman, like on
bare metal Linux and still on. Yeah, it's, you can even edit, like static files and a few other things.
I think this is pretty cool.
So I saw that and I thought, oh, let me cover this.
I'm like, well, and I looked into traffic a little bit.
And traffic is great for certain class of problems, the ones I described at the opening.
But it's not a true, just front end thing.
Like, for example, it doesn't serve static files at all, right?
Or certain things.
So it's like a little bit, a lot of people could use it, but not everybody.
Well, what are the other options?
Well, the other options are InGenX, right, which is what we use for Python bytes.
I have an insane amount of EngineX config files.
There are 2,200 lines of EngineX config,
powering 33 containers on my server.
Oh my goodness.
So I'm a little committed to EngineX at this point.
And unlike many other things,
you can't run another server like traffic or caddy,
which I'm going to talk about next to it
because they all need Port 80.
You can't even set up TLS until you can get to,
you know what I mean?
Like it's, uh,
so it's a really hard cutover, basically, is what I'm saying.
So right now I'm sticking with EngineX and like, well, is there something like this for EngineX?
Because that is a full on front end story, right?
So I will introduce you to EngineX UI.
Guess is how you would pronounce it.
Yet another EngineX WebUI.
Apparently, there's others.
It's not the only one.
Yes, it's not the only one.
No.
But you can go to the demo, which is very confusing because it just takes you here and says,
you got to log in.
I'm like, huh, what do you think that's about?
Go back to the page that took you the demo.
Where's the username password?
Nah, but I'm a hacker.
I don't know if I told you over my spare time.
Admin, admin.
You may be a hacker too, because let's see if that gets us in.
Oh, sure enough.
Sure enough.
Logging successful.
There we go.
So this is actually even better than the traffic one, I think.
So it shows you stuff about your server.
This is your Linux machine running or Docker machine, running EngineX, the CPU stats,
network stats, disk I.
All that kind of, which is really cool, right?
Then you get over to EngineX and it shows you the max number of requests per second
that you can handle the max concurrent.
connections, the request per connection, which is like, uh, these are just like kind of stats.
And it shows you where the process is working. Is it cache processes, worker process, et cetera,
a live connections, all the stuff. That's really cool. It lets you manage your sites. Now,
at least the engine X one, I think actually the traffic one as well, but the engine X one
lets you edit your config. You can go over your managed sites here and you can say, uh, I could
even add a site, but I could go over here and edit the prime sponsor, whatever that is, but you can go
and put in, just start typing away in your engine X config here.
Set your upstream, set your server.
You can view the logs, which is pretty sweet, and all kinds of stuff.
Look at the certificates, configs, upstreams.
This one makes me nervous.
A little terminology just goes to your server.
I'm not a fan of that.
Like that was should be turned off.
Just there's no need.
There's no need for that.
A little bit of security risk there.
You know what?
I'm sure it's fine.
Everyone was just looking like, yeah, it would be mean to mess with this.
I mean, kind of reminds me of the old days of Webmen, which was riddled with security problems.
Like a C panel or something.
Yeah, right.
Exactly.
Yeah.
So anyway, what's cool, though, is I believe this as well.
Certainly the prior one, you can run it in Docker, just as a sidecar, Docker container.
So it's just in your Docker cluster set up there, which I think is pretty cool.
So this is one that looks pretty interesting.
And finally, I'm a fan of Caddy.
If I didn't have 2,000 lines of config, I'd have to migrate.
I'm starting over.
I'm pretty sure I would do Caddy.
Caddy looks great.
I've never used Caddy.
No, I've never used.
I mean, I've heard of it.
I've never used it.
I've been more on.
We've been using traffic quite a bit.
it and we historically use a lot of EngineX.
Yeah.
Yeah, same.
I mean, EngineX and then like, no about traffic.
But so this is really cool because it's its config file is supposed to be like just what
you need.
It's got kind of a Python vibe.
Like, yeah, you don't need a namespace, a static class and a static main void.
Like you could just, could we just put the thing that does the thing in there?
Which is really cool.
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 point in there.
and you make a request to it and it just does that, manages it like that.
So certainly a very neat setup.
I'd be like this is a pretty modern server.
So with that said, there's also CADDI UI, which is another one of these.
Of course there is, right?
Why wouldn't there be, lets you look at like a dashboard and then logs and like metrics for your server and so on.
It's like so dark mode that even the text on a black background is mostly dark.
So I wonder if there's not a limited audience for these UIs though, because if you're at a certain level,
you're going to have Prometheus Grafana and all these kinds of metrics streaming into a centralized observability platform where you can now correlate and trace.
Because you're still only getting the view from the web server.
I didn't know.
Did you see if they include any kind of web request tracing in there?
It could only go so far.
I didn't, I didn't see any.
Yeah.
No, I didn't see any.
I think that this is targeted at the home assistant crew, the one website, small project crew.
Although the traffic one talks about a lot of auto discovery of services and on that kind of stuff, which speaks not to it.
Yeah.
So the traffic one seems maybe to be the most pro of them all.
Very cool.
Anyway, there you go.
If you want a UI for your front-end web server, why not?
You can get it.
You can get it.
All right.
Well, let's head back into Django World.
And 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 hot news.
If we go into the Wagtail repository, take a look at the releases.
You'll see here six hours ago, 8.0 release for Wagtail.
So the Wagtail team has been very busy.
They have not 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 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 wagtails page as 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.
So that gives a lot more flexibility to the API and be able to have a fully headless wagtail if you wanted.
There's a global registry for permission policies plus full customizability for the remaining page views via the page view set.
Another big one to watch out for if you're migrating from prior to eight, so in the seven or in the sixth range,
AVIF and WebP images are no longer going to be auto-converted to PNG by default.
So that's something to watch out for on upgrade if you're depending on that specific behavior.
They're going to be treated more natively by the platform, but you may have some special behaviors linked in because you were depending on the auto-conversion.
I don't know how to feel about WebP images.
You know, I like to be on the cut of the edge of these things,
but I just feel like, I don't know,
it feels like they're everywhere, though.
I more and more see them all the major sites.
Yeah.
They're more efficient.
Almost all the ones on Python Byte's out of M are WebP.
I went through the Google page optimization stuff and, you know,
like Lighthouse, that's what's called?
Yeah.
All those things, right?
At the end of everyone has.
Yeah.
Yeah, all those things is like, you need to upgrade to WebP.
You need to upgrade.
I'm like, fine, I will upgrade to WebP.
And I went through it.
And yeah, I do think it's actually slightly.
a little bit better. Like, is it as big of a deal as they make?
Probably not. But sometimes it's really nice and so on. It does seem to work pretty seamlessly,
except for if I go to YouTube, like, for example, if I want to change the thumbnail for this
live version of our recording on a Google property, it will not allow me to upload a web peevip
file because it says it's not an image. I'm like, I'm not surprised. It's Google.
So there's places like that. Or if you try to set it as the poster for your podcast,
A lot of the podcast apps can't display WebP even though the platform.
Like there's just like a little hang up.
I imagine though it's like there are people like, I want WebP.
Stop turning it back into something else.
I put it there on purpose because Google told me to.
Yeah, because this is optimized.
It's funny.
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.
Thumbnail.
For example.
Right, right.
It's a little peer pressure to get folks to do the right thing.
we probably go a long way. So Google,
Google, if you're listening, go update your application to support WebP for that.
Exactly.
YouTube team. Just at a star dot web peak in there.
Come on, please.
So, and more importantly in this release, there are some five major security fixes.
The page admin API restrictions, document identification by a shot one hash,
the descendant collections and documents and images API, and the snippet copy permissions,
and the page translation endpoint have all had fixes.
the highlight of them here on the screen, but you can go see those in the release notes.
They're called out with the big security fix prefix there.
Also, of note is formalized.
They now have formalized Django 6.1 support, and the C-I now runs with UV and a lock file.
So the UV is takeover.
It's been successful in the Wagtail community.
Very cool.
Yeah, Wagtail's neat.
I'm glad it's getting the love.
And 8.0, that's a big release.
Yeah, and I think this will tie in with your later segment.
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,
all that lines up really, really well in the Wagtail community.
And we'll talk about it a little more when you get into the Django stuff as well.
Absolutely.
Well, before we get to that, though, maybe a quick thanks to our sponsor.
That sounds awesome.
Yeah, so thank you, Pydanek, and thank you, Logfire, their observability platform from Pied
So here's the situation.
Your AI agent failed at 2 a.m.
Was it the model, a tool call, the database?
Most observability tools can't tell you
because they only see part of the stack.
Identic log fire sees all of it,
one trace across all your agents,
LLMs, APIs, and databases.
Down to the infrastructure services, Kubernetes,
as well as hosts.
It's built on open telemetry with SDKs for Python, TypeScript,
and Rust, and it works with any hotel compatible language.
Every prompt, token count, cost right in your vector search
and API calls.
You query everything with a progress compatible SQL language, so super easy to do.
You get reports and slice and dice them.
And your coding agent can get there through the Logfire MCP server.
So stop guessing.
Read the trace.
Once you have it installed, you'll have the trace, right?
Logfire AI.
AI, it's still just engineering.
I'm actually going to close out the show with a little sidebar on that.
Visit Pythonbytes.fm.
slash logfire today and sign up.
you'll get 10 million records for free every month, no credit card acquired.
And we talked about last time, you can even click the onboard your project with your coding agent,
which instantly copse 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 minutes.
So thank you to Pidentic for supporting the show.
Can count feature.
I think they're downplaying that.
They need to put that front and center.
That's going to be a big deal.
Yeah.
That's the one that you all are chasing, right?
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.
So very cool.
Well, thanks Pidentic Logfire for being a sponsor.
This is the one non-webby thing on here, but could have a web implication.
So the Python Software Foundation has announced Risk 5 support is now officially supported by C-Python.
Why would anyone care?
So I'll get into that.
So Risk 5 is a CPU architecture and it's technically so important bits here.
It's now a tier 3 platform under PEP11.
So the rules for when they build, what they build, how they support,
fast something gets prioritized for fixes.
It all comes into play when saying it's a tier 3 platform.
But it does mean someone's watching and someone does care.
So this is specifically for 64-bit Linux.
So that means that if you've got single board computers,
kind of like Raspberry Pi's, but they're running alternate architectures like Risk Five,
which is quite a few of those out there on the market right now,
you can now depend on there being a Python 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 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 level languages.
So hopefully it opens up some of that IRT space to other folks.
So yeah, like the Risk Five is it's an open architecture that anyone can implement,
unlike the X86 and R, which are like closed.
But its market is projected to quadruple by 2032.
So we expect to see more news about Risk Five architectures and processors,
especially given all the hype around GPUs and things like that right now.
So what changes?
the push now maintained with a compatibility target.
C Python changes are going to be less likely to quietly break it.
That means that they got to take care of it.
Someone's 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 Rust compiled binary piece,
that's still on you to compile and roll 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 Python taking proactive measures
to ensure we have compatibility there.
See what else we got in here.
Yeah.
The one thing that folks may also think would be happening
is, for example, you familiar with SB 32 boards.
If you do any kind of home automation
or any kind of like hacking on hardware or IoT,
you've probably heard of the SP32 platform
or the Raspberry Pi Pico2 platform.
Those are Risk 5 processors,
but they are not 64-bit Linux risk process.
So there's not necessarily support yet for those embedded processors.
You're still going to want to use micropython or circuit Python for those kinds of applications.
But if you're using something like the Vision 5 board, there's a couple other boards out there on the market that are more like Raspberry pies.
You'll now have support.
You can embed those, put them at the edge.
There's reasons why you may do that.
For example, 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.
And I know not everyone cares.
But it does mean you could run Django on a Risk 5 processor now reliably and do and have
releases out there that will guarantee you to work.
So that's what the news is with Risk 5.
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 tiny devices.
Exactly.
We all run on.
Like, here's my $25.
ESP 32. 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.
Well, and there's been
recently there's been
shortage of Raspberry Pi-Pyves, for example.
So I think that helps
with the supply chain issues
potentially. And again,
from power and efficiency,
we see this thing quadrupling, we better make sure
Python's there. So I'm excited to see the
Python community making that happen. As well.
I'm as well. My experience working with
effectively micropython it's super cool in the language is python but there's a lot of stuff like
you want this library no no no no you don't get that right you get something that looks a little bit like
it and it sort of works like it but it's you know it's really tricky so the more it can just be
the same the better yeah so which i assume this will eventually real 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 maybe it becomes a little bit like a um anaconda like it's
It is the same Python, but it's more ready for you to actually do stuff with.
Who knows?
Yeah, yeah.
Well, speaking of supporting languages, I think you've got a little mixed up here.
Ah, let's talk about Django.
I mean, how do I get this?
I'm not even at the conference.
I know, but I saw it on there, like, I'm glad you're covering this because it's, I think
truly, again, important news.
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.
Yeah.
I always feel like with web frameworks, I'm just a flyer.
I'm like, well, let's try this.
Maybe it'll go unsupported in six months, or maybe it'll be still going strong.
I don't know.
But not with Django.
But exactly, not with Django.
And that has been true for a while.
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.
And others, these are the LTS or long-term versions.
And those, if you install and run on those, then you're going to get guaranteed simple
of years at least, right? Well, the news is, folks, Django is moving to an annual release cycle,
part one by our friend of the show, Carlton Gibson, and every release is going to be an LTS,
three years of support, supported version. Super cool, right? So I think that's really good. So let me
give you all the details. 2028, January 2028. It sounds so far away, but probably it'll be here
just like, oh, is it 2028? I guess, here we go. I'm sure we'll cover it then. But in 2028 and January,
there will be a new version of Django, and it won't be called 6.1, 7.0, or whatever the heck
that would have otherwise been called. It's going to be called Jingo 2028. So they're moving to
calendar versioning instead of semantic versioning. Big fan of calendar versioning. Yeah, I am too. I'm
generally a fan of calendar versioning as well. So we're going to have Django 2028, Django 29.
And you won't be able to play the game like, hey, what year was Jango 3 released?
Right.
Really a Django fan? Like, yeah. What year was Django, Django, a 2028 release? Like, I'll tell you what. I bet it was 2028.
Pretty amazing. So that's also helpful. It kind of give you a sense of like, oh, we're running on 2026 and it's 2031. This is probably not good, folks. It's probably not good.
So it can also kind of be a little bit of a marker. All right. So every release gets one year mainstream bug fixes, followed by two years of security and data loss fixes. The new release to support the last three years of Python versions. So there's this interchange of support guarantees.
with Python and the next Python release
starting its first year.
Calendar version begins 2028 and then from there,
the re-Jango version will be supported anytime
because years or a year long and it's three years of support.
So there we go.
And most importantly, maybe nothing changes
for a year and a half, right?
So existing commitments like 6.2 LTS
until there as they were before.
Anything else you wanna add to that?
I mean, you're at the confidence.
I think these are the kind of promises
that the community needs to make
so that business understands
this community is serious. 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, you know, you see this
a little bit in the WordPress community, a lot of it in the WordPress community. There's not
hard and fast like this should run on this version. There's a long-term support that's going to give
you bug fixes till this version. It's a little more Wild West, I feel like, over there,
compared to the Django community. I think I can make that as a fair statement. The Django community
is already committed to two long-term supports in any point in time. So like right now we've got
5-2 and 6-2 will be coming up. Now we're saying there's basically going to be three versions that
will be stable, supported, updated, 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
scheduled because stuff happened and now you got to deal with it. So I feel like that gives a big
boost again to the piece of mind of running Django, running Python, and doing this all in production
and knowing when things are going to happen.
I'm a huge fan.
And the calendar version of the boot,
I, again, love that because, you know,
immediately at a glance,
if you were three years out of date
and just about ready to run out of the end of life on LTS.
It's right in the name.
That's right there.
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.
But if I was a...
Yeah, most do, but I think there's a class of org that can't.
Exactly.
Or just won't.
They just have a don't.
touch it principle. Is it working? Just go touch it. It's working. I think this opens up just
every February. Just have a look. What does it cost to upgrade to the next version of Django? Do a little
automation. Give it a go. See how it works. And that gives you a really solid cadence of just staying
to date. And even though there's three-year support, I wouldn't have three-year gaps. I would have
one-year gaps because the number of issues you might run into are on average one-third as many.
So it just makes that little staying on top of it easier. Because if you're five years out and you're
here something is something catastrophic happens and you need to update for whatever reason,
well, you're all in the sudden, like, juggling a really big migration project, you know,
the house on fire. So get ahead of it. At this point, at this point, you can go three years and reliably
have your CIT 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 patched piece of software that can be
automated. Like it should be no hands on to make this now a very secure process. And if you're
doing CICD, maybe throw in some knocks and just get different versions or something like that, right?
Like, hey, might as well automate it.
Yeah, right. No, yeah, no when they're coming.
Get ahead of that curve.
And like, yeah, we've been doing unit tests and CI against the next version of general for two years or for two months.
So probably okay.
And that unless you're doing something really, you know, kind of off the wall,
Django releases are pretty non-events these days in general, which is awesome.
Well, do you have any extra events?
Do you have some extra events in here?
All right.
So a couple.
Over you.
Quick item here.
This one was interesting because the Python docs now document the time of built-in types.
This is not new per se because it's been buried in a wiki that's been aging for years and years
and years and years.
But it was never front and center and so people had to go look it up.
It was never like associated right with the documentation directly.
So this is just a migration from wiki to official docs.
And so you can see over here on the list operation.
A list copy has an O the Innsia.
complexity 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 these will give you all the hints
around complexity and gives it for all the various default types so you want to
know the complexity of a set compared to a dictionary you can see those things in
here the stir strings and byte arrays and memories so all all those are
basically baked in you can see in the big O
if you're into that kind of thing.
I was never a computer science major in college,
so I never learned about this until later in life.
But that's very helpful because I can kind of next level thinking on that.
Let me add one thing really quick.
I saw this as well and this is interesting.
I wish the list would have like find item as well.
I don't think it does though because then you could have put that against or does it.
Because then you put it against like dictionary or set.
You're like, oh, it's a million times faster and set.
That's weird.
Maybe we should use that.
So these are like really, especially for performance optimization.
Yeah, yeah, yeah. 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 C Python.
For example, do you find range on there if you can? There it is. So what's the length, the length or the men or the max? All right, like Len or men and max, all those is O of N.
Get Len. Get Len is one. Okay, that's pretty good. So it does know. I guess it's not the, been around a while.
No, no, but I still think men and max. Like so, for example, when you create,
a range, you say what is the starting value, what is the end in value, and what is the step, right?
Yeah. It should be able to answer 0 of 1 what the men and max are, right? Because it knows where it
starts. It knows that whether it's positive negative increment. It was in the arcs. It's like a field
of the object. So for example, somebody might go, well, 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, it should be 0.1, 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 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
thinking in Python.com. And the whole 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 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, games, and patterns,
I haven't read the book yet because it just released.
But I got to imagine knowing the author and everything that's going into this,
this must be a great place to start.
Yeah, Bruce does excellent work.
I read some of his books and he's been on Talk Python before as well on other panels.
So yeah, very cool.
Good job.
Better on the community, long time.
Michael, you got any extras?
I'm feeling a little extra.
So I feel a little extra.
Remember last time we talked about UV and it was those older security builds that were source only, but then I'm like, hey, UVs building them.
That's kind of cool.
So you want to upgrade them?
But then I did a listing of all of the stuff I had.
I'm like, oh, I've got like a 3.9.3, a 3.9.4, 3.9.5.
I'm kind of scared to see how many I have now.
Yes, exactly.
Like there's no scenario where I want like seven versions of 3.9.
I mean, one is enough, certainly of that one, right?
So I created this little program, a little shell utility you can run using UV run it if you like.
Pretty cool.
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 duplicate.
So a duplicate might be 3.9.3 and a 3.9.4, like I have two 3.9s, right?
And you could even say I want to just turn them down.
So I only have the latest of each major, I mean, it's not really a major version, but that's never going to be a 3.
a 40. So I'm going to call 3.8, the eight parts of the major version of Python. Anyway,
because we can't have a 4. It's too traumatic. So you can just say keep that or you can say
actually keep two. Like you could say I want 3.9.3 and 3.9.2, but no more than that as the
older ones, right? Yeah. So you can run that and I ran that here. I actually have a little
upgrade script that I've run on my computer periodically to grade home brew and that stuff.
And then like upgrade UV and then anything that's UV tool installed. And so now I've added this
thing into the mix and it says, pruning UVs pythons. It says, look, you've got 3145 free threaded
version and you've got 3147 free threaded. Why don't we drop the last one? It says you should
remove that, for example. So you just say yes and it takes away. So anyway, put that out there for
everyone to play with. That's awesome. If you go back to the script, I want to call out something.
I absolutely, the very top of your script, you're using the inline dependency. Yeah, yeah, the UV
run magic. I absolutely love. I think if you think about if you, you could have gone into Cloud
code and said, hey, cloud code, prune my old versions and given it like your kind of rule set.
And it would have run through and use tokens and found all the ones and use more tokens.
But here you're giving it a deterministic.
This is the way to write tools for your own agents and use that inline scripts.
I love that.
There's a good example, I think, of using exactly that.
That's good.
Now, UV runs.
It just works.
It just works.
I love it.
Yeah, yeah, it does.
And if I had dependencies, there's where it really shines.
Yeah.
Automatically manage that for me.
Yeah.
It's wonderful.
Yeah.
And on my older installs of my UV tool projects, it did like lose track of the virtual environment.
But apparently in the newer UV installs, it will like remap to the like across major version.
So like 3143 and 3147, it'll figure out, oh, we can just go to the 7, I believe.
Nice.
Anyway.
Yeah.
So it might be a little bit of a pain.
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.
All right.
Also, very quick AI thing.
We've not done any AI, so I would like that.
It's been an AI free episode so far.
It has, and this is super quick.
You know, when you think about O-Lama,
I always thought about O-Lama is for running local models, yeah?
Did you know that they have a cloud version?
I did know that, yes.
Yeah, but of course you do.
I knew you would.
But you can sign up for like $20 a month to get deep-sea,
Kimmy 3.
It's very, very inexpensive.
Yeah, GLM, 5.1, 5.2, all that kind of stuff.
As a thing you could just add.
So I'm using this to power my Hermes.
agent, which is really nice as an alternative to chat, DPP, which is also can be in the mix.
So I thought that was pretty interesting.
Yeah.
Yeah, especially with the ability to run like Kim and K3, the GLN552, the big ones.
Yeah, these things, you can't run them yourself.
So I've been doing like generally.
Yeah, I mean, if you have, if your room is loud, you might be able to run it.
But if it's quiet, you'll get away with them on the in video, the spark boxes.
Like, if you, not just one, but you, if you, if you, if you, if you, if you, if you, if you, if you, if you,
together, it will spread the memory across two of them.
You might feel you'll get one of these running.
Yeah, okay.
If you have an over $10,000 dedicated local A machine.
Yeah, yeah, maybe.
Then I consider you a special category.
Anyway, yeah, so people could check that.
Thanks to Jeff Triplett for showing me that.
That's a far more cost-effective way of doing it.
Couldn't be able to do this for a while until I break $10,000.
Although I still, I wouldn't hate having a couple of those spark machines.
Those are cool.
All right.
I would like to just go back and just have a little comment here.
And you know, feel free to jump in or not put your hand on the stove.
So we published, we published this to YouTube and got some comments there.
Some in favor of our position, others like, what do you mean?
Co-Bork's not doing it.
Like, co-work is great.
But more like, more of the comments were like, well, I think you're not taking the negative
side of AI seriously enough.
And it's fair.
I do, we periodically say it.
I feel like it's a little bit of a drag to just every week.
Like, yes, I realize this, anytime we mentioned LLOMs, yes, I realize that this lot of this
information was trained, taken to train with, and it was copyright theft.
Yes, I realize it's a data center used a lot of energy out there.
Like we've said that before plenty of times.
But I think also it's the reason I named it this, Codeberg puts head in sand, not just to
like dunk on Codeberg.
I mean, it's fun and all.
But the reason is over 90% of software these days, software development is done with AI,
Not exclusively, not like, no, just, hey, agent, go make, go make me, go make Google or whatever, right?
Not that.
Just keep making software.
Just, just pop out software until I tell you to stop, I guess.
Exactly.
Until my energy bill is too high.
But almost all of software these days is at least AI assisted in a significant way, 90% and above.
And it's only going up.
So when I say things like this, I'm trying to put this on people's radar, especially people are like, I'm not willing to like, I just don't even.
want to look at it. That is a choice, 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 is going to be very hard
to find a job. 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 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 as like,
I'm not trying to dunk on people who don't believe in it.
But I do think if you put your head in the sand,
it's going to have a negative consequence on your career.
I don't know.
How do you 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.
And it's true, I can't,
I don't want to imagine going back and not having an AI-assisted environment
because it is very enjoyable to get so much done
because I can guide these tools
that that way. If you like creating software, it's incredible. And I hate saying like, oh, now 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. It's not going back in the box. Right. It's not going back in the box. And was what,
maybe 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, well, at least,
more equitable.
And I would like to put out 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, we don't want to talk about
the web.
I could do that, 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 year 2000, I don't think.
So.
No, no, we're going to, we're going to be the pets.com for human knowledge.
Exactly. We have dancing monkeys spending a million dollars every 30 seconds. That was a Super Bowl ad around the dot-com days.
For those of you who are of an age. Exactly. It was my favorite one, I think. But look, I mean, I understand the drawbacks. I understand what is doing to software teams. I understand what the effects on like copyright information and the effects on people's jobs. But at the same time, it's 90 percent. It's really a challenge to ignore 90 percent of the industry.
And some of the comments are like, well, the people who can actually think and who aren't idiots.
It's like, you know what?
Not everyone who chooses to use these tools is a native.
That's a little bit of harsh perspective.
So I think it's worth, I don't know, I just want to put that out there because I feel like people are just like, oh, you're just flip it about it.
I'm like, no, it's just really transformational and significant.
And we're going to have to deal with it like it or not because it's not going back in the box.
Agreed.
Okay.
Now, after all that, are we actually ready for a joke?
I think we need a joke.
I'm ready for, I think we need a joke.
We need a joke.
And this, that was a little philosophical, wouldn't you say?
Okay.
Okay.
What do you have for me?
Well, did you ever read the Tao to Chen?
It's sort of the Tao, like the traditional Chinese one?
No.
Have you read the Tao of programming?
Ooh.
I would like to, I would like to do a guided reading of the Tao of programming.
All right.
We haven't done this raw.
So let's go over to the corporate wisdom.
I can't link to it because it's like a weird, God, this is like the oldest website.
It could be made in 19.
Is this hosted on GeoCities? What's going on here?
It might be and oh my gosh, it even has a gradient background.
Yes.
All right.
Let's see, I don't think I can get it to do like a reader view.
Oh well, let's do a couple of sections from book seven corporate wisdom from the TOW
programming, okay?
Okay.
So 7.1, the novice asked the master.
In the east, there is a great tree structure that men call corporate headquarters.
It is bloated out of shape with vice presidents and accountants.
It issues.
It issues a multitude of memos, each saying, go hence, or go hither.
Now, nobody knows what is meant.
Every year new names are put onto the branches, but all to no avail.
How can such an unnatural entity exist?
The master calmly replies,
you perceive this immense structure and are disturbed that it has no rational purpose.
Can you not take amusement from its endless gyrations?
Do you not enjoy the untroubled ease of programming beneath its sheltered branches?
Why are you bothered by it?
Where did you find this gym?
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,
ivory tower brought his latest invention to the master programmer to examine.
The magician wield a large black box into the master's office,
while the master waited in silence.
This is an integrated, distributed general purpose workstation,
began the magician.
E ergonomically designed with a proprietary operating system,
sixth generation languages,
and multiple state of the art user interfaces.
It took my assistance several hundred man years to construct it.
Is it not amazing?
The master raised an eyebrow slightly.
It is indeed amazing, he said.
Corporate headquarters has commanded, continued the magician,
that everyone used this workstation.
As the new platform for their programs,
do you agree to this?
Certainly, replied the master.
I will have it transported to the data center immediately.
And the magician returned to his tower, well pleased.
Several days later, a novice wandered into the office
of the master program.
He said, I cannot find the list
for my new program. Do you know where it might be? Yes, replied the master. The listings are stacked on the
platform in the data center. There you go. So this is a fun, a fun read. You can't do too much of it.
It's a, it's a thick, long joke, but we'll maybe come back to maintenance in a couple months or something.
We've got nine books so 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
there. Great one to end on. Indeed. All right. Well, very fun. Michael, and I'm going to go back
to DjangoCon. We'll talk to you all next week. Yeah, have a great time at JangoCon. And yeah,
see you next week. Sounds good. Bye.
