Python Bytes - #453 Python++
Episode Date: October 16, 2025Topics covered in this episode: * PyPI+* * uv-ship - a CLI-tool for shipping with uv* * How fast is 3.14?* * air - a new web framework built with FastAPI, Starlette, and Pydantic.* Extras Joke Wat...ch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: PyPI+ Very nice search and exploration tool for PyPI Minor but annoying bug: content-types ≠ content_types on PyPI+ but they are in Python itself. Minimum Python version seems to be interpreted as max Python version. See dependency graphs and more Examples content-types jinja-partials fastapi-chameleon Brian #2: uv-ship - a CLI-tool for shipping with uv “uv-ship is a lightweight companion to uv that removes the risky parts of cutting a release. It verifies the repo state, bumps your project metadata and optionally refreshes the changelog. It then commits, tags & pushes the result, while giving you the chance to review every step.” Michael #3: How fast is 3.14? by Miguel Grinberg A big focus on threaded vs. non-threaded Python Some times its faster, other times, it’s slower Brian #4: air - a new web framework built with FastAPI, Starlette, and Pydantic. An very new project in Alpha stage by Daniel & Audrey Felderoy, the “Two Scoops of Django” people. Air Tags are an interesting thing. Also Why? is amazing “Don't use AIR” “Every release could break your code! If you have to ask why you should use it, it's probably not for you.” “If you want to use Air, you can. But we don't recommend it.” “It'll likely infect you, your family, and your codebase with an evil web framework mind virus, , …” Extras Brian: Python 3.15a1 is available uv python install 3.15 already works Python lazy imports you can use today - one of two blog posts I threatened to write recently Testing against Python 3.14 - the other one Free Threading has some trove classifiers Michael: Blog post about the book: Talk Python in Production book is out! In particular, the extras are interesting. AI Usage TUI Show me your ls Helium Browser is interesting. But also has Python as a big role. GitHub says Languages Python 97.4% 👀 Shell 1.9% Other 0.7% Smallest Python release? 3.13.9 Joke: An unforgivable crime
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 453, recorded October 16th, 2025.
And I am Brian Ockin.
And I'm Michael Kennedy.
This episode is sponsored by us.
Check out Talk Python training.
Check out the complete Pytest course and other stuff over it.
So you've got TalkPython.fm and PythonTest.com is where you want to head.
And also, we want to thank our Patreon supporters because, yes, this episode is sponsored by us,
but we don't really pay ourselves, you guys do.
And the Patreon people do throw a few bucks our way.
And we really appreciate that.
So thanks.
Also, love getting tips and extra topics and stuff sent our way.
It doesn't matter whether we've heard it or not.
We appreciate it.
It's okay to just send it.
If you think it might be worth talking about on the show, send it our way.
and you can connect with us on Blue Sky and Mastodon and all of the places.
Yeah, more often than not, Brian, people say, I'm sure you've heard of, and we haven't heard of.
We haven't heard of it yet.
Because, unlike you guys, we don't have a good news podcast, about Python to listen to.
Exactly.
If you'd like to be a part of the show or watch past recordings, head on over to pythonbites.fm slash live, and you can be part of our audience.
We've done a couple that today's a Thursday at 10 sort of a day and various reasons,
but usually it's Monday at 10.
We'll let you know if that ever changes.
But you don't have to just memorize that because at Pythonbyst.fm.
It'll tell you when the next one is.
And speaking of next ones, we should talk about something interesting, Michael.
What do you got for us?
Yes.
You know, we've got Pi Pi Pi and just for new folks out there, not Pi Pi, not Pi, not Pi, not Pi Pi.
That's happening less.
People used to say, I installed it from Pi Pi a lot, and that's not so much the thing.
But the next one, IPI plus plus, well, one plus.
It's not quite a C++ plus plus.
Do you wish that Python had plus plus plus instead of plus equals one?
I don't really increment that much, actually.
Okay.
Your numbers just stay the same.
That's fine.
Well, I mean, in C++, we increment it all the time because that's how you do four loops.
True.
That's a good point, actually.
Yeah, you shouldn't be doing that in a four loop.
No.
No.
Okay.
I don't miss it that much, but, you know, plus plus used to be sort of the next thing.
So I want to talk about this thing called Pi Pi Pi plus the next one.
So this is just a different UI on top of Pi Pi search with some extra information.
And I ran across this and I don't know where I saw it, but it's really neat.
I really like it.
It's Discover all the packages with interactive pendency visualization.
So you can come in here.
And you can put in something like content types.
I talked about that recently.
This is a little library I have that given a file to tell you what like web content type or
mime type it needs to be and vice versa, as a little thing says.
And you click on it and it says, well, what is it?
Look, it shows you the author, the version, the license, the size.
How many things depend upon it?
Look at this.
So you can expand the section to see where it is.
And it's spinning and spinning.
I don't know what it's looking for.
But this dependence, I believe that means there's another package out there on Pi Pi
that depends on my package.
That's kind of cool.
You can also bump through the different releases and show you who is depending upon these
releases even.
It gives you a score.
Come over here, a health score of your project.
So this is something people ask about a lot or want to know about a lot.
Like, how do I decide if a library that I'm looking at or that Michael or Brian recommended
is a good thing or a bad thing?
I mean, obviously malware is something you should consider.
and supply chain attacks, but just is it well maintained?
Is it a good choice to build upon, right?
And so this has a rating, and apparently my content type thing, is 93 out of 100,
and it's getting dinged for mostly because it's pretty new.
It's not that old.
It's only got five releases, and I think I've created it beginning the year or something
like that.
Yeah.
And it also has no documentation.
I mean, it has documentation to read me, but it doesn't have a read-the-docs documentation
separate from what it just says in the read-me.
You know what I mean?
Yeah.
And so that's bringing down its score.
But it still has got an A, which is, you know, 93 out of 100.
That's pretty good.
What do you think of this thing?
Actually, I was poking around on it on my set, my own.
Search for Pytest check.
This is one of the things.
I've got more dependence on mine.
Okay.
And, well, you can do, I'll just, I can pop it up also.
I got Pied test check.
One of the things you can do is this is the first one.
I got an A, yay, 96%.
Yeah, 96.
You probably have documentation.
No, you don't.
What?
But it's also, like me, it has, well, you've got a lot more dependence, right?
Yeah, one of the things I think is kind of neat.
The dependence is fun.
I didn't really know how to look for that before.
There's probably a way.
But the dependent, like rating the dependencies also because there are dependency,
the things that you're bringing in have a score.
also and you can look at what their score is and and you can look at um like their dependent you know you can
just traverse down the dependency tree um and that's kind i think that's great i think actually your
score should somewhat include the score of your your dependence things you depend upon maybe
you know what i mean right like if if i have an a plus plus score but i depend on the thing that's
got an f well how stable is my thing you know yeah and also it's interesting that you can go by
version too because yeah sometimes you add or remove dependencies with versions too so it's kind of
there's a lot of stuff going on here yeah it's kind of fun absolutely this is really neat i i recommend
people check it out i think i'm going to use this for exploring packages i generally just default to get
up like i'll go to pi pi pi to see what it's if it's there and then i'm like okay just get me to get
up so i can get a real view of this thing you know what i mean yeah but i actually like this quite a bit
And so I might start using this as kind of a default way.
You know what you can do is you see how it's got the URL is just Pi PiPi Plus slash project slash project name.
Yeah.
You can set up a custom search, not shabang, but a custom search keyword in your browser.
So I could type like P plus space and then search whatever I put into my URL address bar would just pull up this page searching for whatever you put.
So you could make it basically a built-in search engine to your.
your browser. So I might do that actually. I haven't done it yet. Or just go up and change the
URL to whatever package name you want. I know, but then you got to go to the place. I'm talking
when you just have an open tab, right? Like I'm just in my browser. Like I want to search, does this
exist on Pi Pi Pi Pi. So right now I type Pi Pi space and then some package name and
then it will pull me up to the search results on Pi Pi Pi. Oh, you're hardcore. Okay.
Yeah, you could do that here, right? You can just say Pi Plus or whatever. Anyway, I really like it.
I would like to, what's weird about, there's something weird about this in that it has no attribution.
No, I can't tell who is behind it.
I can't tell if there's a GitHub project.
It literally is unknown.
What the heck?
There's no contact us.
There's no built by.
It's a little weird that it's like secretive like that.
And I don't know why.
I don't think it's dangerous because you don't install from here.
You know, it's just like a front end on top of existing data.
But there are just like weird bugs.
Like, for example, what would I write if I was writing?
Python, I'd write import, not pie test dash check.
I would write pie test underscore check, yeah?
Yeah.
Yeah.
Well, that doesn't exist if I search for it, even though they're equivalent.
So I have like one package called Jinja Partials, which is awesome.
I love this one.
And it's Ginger underscore Partials.
It is 95 by the way.
Hooray.
But if I put a ginger dash partials, nope, doesn't exist.
Couldn't see that.
There's no package called that.
And vice versa, I have a fast API chameleon that does have the dash.
But the Python thing is underscore.
So there's just like a little bit of weirdness like this.
And I would love to go, hey, whoever built this?
I want to use this thing.
It's cool.
But incredibly simple normalization on your search results would be so good.
You know what I mean?
Yeah.
So it looks like PiI does do that.
Like the undersc-search for both.
Yeah.
So Pi Pi-I.
Ninja partials.
Yeah.
And if I put the dash, yeah, it pulls up both.
Right.
It's, yeah, exactly.
So cool.
Exactly. So it should here. But other than that, this thing is quite neat.
So a fun place to play with an explorer packages.
All right. I think we're both covering some alpha things here because I'm going to talk about a couple more alpha things.
First off, well, I don't know if it's alpha.
A project called UV ship. Yep, it's zeroverse. I'm going to call it alpha.
But I'm kind of think it's sort of fun.
So I've got to, because of the, what, the update to 314, I want to make sure that all my projects, definitely all the ones I support, even the ones that I think I'm the only one using them.
I'd like to update stuff.
And I also, I've realized that I have like three shipping pipelines that I'm using.
Like, I've changed how I published a IPI over the years.
And I kind of want to go back to just one version.
And I like just being able to, I know there's a lot.
of a lot of opinions around this but I like to be able to make sure everything's pretty good
and then push a version number and then and do a remember whether I do a version first and then a
create a release on on get get hub and those two things kind of have to happen and one of those can
trigger the published to pi pi pi and i'm kind of going back and forth as to which one should
trigger that but anyway there's a pushing of a version that has to happen this uv ship tool is based on
based on UV, but it does a lot of this stuff.
It like, what does it do?
It says, it said it verifies the repo state,
so make sure that you don't have anything checked out
because you should be at the point not checking out,
and that you're on the right release branch
because there's some configuration you have to set up,
but it's the defaults are fine.
Verifies the repo state bumps your project metadata,
so it bumps your version number,
and refresh, you can have it update the change log,
and it even like pops up a dialogue that says you should go manually edit this right now
and then it commits tags pushes and all that stuff in and and each step of the way it reviews
so I haven't I've done the it has a dry run mode that it talks about so you can you can
UV tool install it so that it's everywhere and then you can do a dry run like next minor or next major
or next I can't remember the bug I always think of it as bug fix but it's something else patch
patch release um and then it just it's it pretends that it's doing it if you do the dry run and it tells you
everything that's doing it i'm like that's exactly what i wanted to do awesome so i think i think i'm
going to change my i'm going to try this out a little bit and i think i'm going to change my workflow
to be um the to make sure that i match this because it's a pretty pretty reasonable workflow so um
and that way i can when i want to when i'm done with something i can just go to the right branch and
just make it make it so so i like the idea of throwing it a tool uh a tool thing because i or as
a uv tool be have it installed everywhere because i don't really want to have that be a dependency on
my package because it's not really it's a it's a workflow thing but anyway uh uv tool um i take
took a look at the repo it's got 29 stars so far but it's pretty new looks like just kind of
started last week so um yeah from florian raths yeah it's really interesting that caught my attention
as well i i've got some old repos that only have 29 stars yeah yeah 29 not bad no it's off to a good
start it's it's pretty cool i like the idea i just learned that uv has this version bumping feature
and yeah it's it's quite nice i was i was using it as well i was surprised it doesn't have a ship
button you or uv publish isn't a thing though yeah it is is now oh there's i i you can do uv build and uv publish
And on top of that, you can do UV publish dash T and that will specify that you're using the token instead of your username.
So effectively setting the username like to underscore and underscore token underscore whatever you got to type if you just say like a twine publisher or whatever.
So yeah, it's got a really nice publish feature.
I mean, so it's kind of like twine then because I like right now, I want to move everything over to trusted publishing but I still have a couple things that are not.
Do you trust yourself? I mean, that's the question.
I don't actually. Sometimes I don't trust myself either. That is so true. That is so true.
Okay, before we move off this UV thing, really quick, I just learned yesterday. I was, I'm working on a project.
I have always projects going, these little projects that I'm playing with. And more and more, I'm building fun little utilities for me. And they should be installed UV tool install. I want them broadly. But I'm not ready to put them on Pi Pi for sure. I don't really even want to put them on GitHub. And so the
way I used to make those tools I would say UV tool install either the thing from
Pi Pi like content types or maybe which has an entry point script that you can
becomes a command right or I would put it on GitHub as a public repo and do the
plus the Git plus or whatever you do you know install it from there I just
learned yesterday that you can say UV tool install dash is it dash e I think
it's dash e dot from a GitHub repository with a project and that will install the
tool in editable modes. You just keep editing and the tool is like a public, like a machine-wide
command, but it's not coming from somewhere else. It's just coming from your working GitHub repo.
Oh, not a GitHub repo, but you're just your directory. I mean, you're, you're, you're,
you're, your directory. Yeah, yeah, yeah, yeah, that's what I mean. You're just your local
directory. Isn't that cool? Oh, cool. Kind of like, uh, kind of like you can do PIP install dashy
dot. Right. And it just installs the local thing. So yeah, exactly. It's exactly the same,
but it puts it into the, the UV tool installed workflow. So it becomes like managed.
in global.
That's pretty cool.
Yeah, because the PIP install dash E is like just
if you've activated that virtual environment sort of thing.
Yeah.
So very nice.
It's not a lot of harm in publishing to PIPI.
I mean, people can't give you negative stars or anything.
So.
Nope.
No, I just don't want to commit to having the thing the way it is.
I'm just want to play with it before I even decide I want to put out in the world.
You know what I mean?
But I want the coolness of the UV tool install equivalent that I don't have to, like,
juggle to find it.
Nice.
There it is.
Yep.
Okay.
Well, let's talk about the speed, the speed of the new Python.
We have a couple of new Python stories.
I know you got a new Python thing.
I got a new Python thing at the end in our extras.
But 314 has felt like such a, it's going to come.
It's going to happen.
But no, here we are.
We're just after the release of 314.
You know that because Halloween is coming.
So Miguel Grinberg wrote a nice article called Python 314 is here.
How fast is it?
It, am I surprised people to see what the graphs say?
There's a lot of graphs.
Okay.
It also has a caveat.
These are small scale benchmarks,
so please don't be mad at me if your use case is different than my use case.
You know what I mean?
That's how benchmarking goes.
It's always fraught with, yeah, it's faster if you loop like that.
But I do this other thing, and mine is slower.
So with that, as I said, there's a whole bunch of comparisons around here.
So one of the biggest ones, I think the theme that comes away from this more
and just there's some interesting trends is the
free threaded versus guild and can we call it guild that's like the opposite of
free threaded right the guild of python guild the gilded age of python so there's a big
comparison and sort of difference between the free threaded version and the standard
traditional style another thing that's interesting is 311 was a big speed bump
performance I think that was probably the biggest performance jump for python very much
period. Yeah. At least in the modern recent times, 311 is the year over year, the fastest jump,
I think. Part of the, that's really when this faster C-Python root came to be harvested, even though it
was done in 3-11 and 3-9 and 3-10 rather. And then it was almost flat, not 100% flat, but
almost flat. And 3-14 is a little bit better. But there's a really interesting drop here.
Also, Pi-P-P-Y, 3-1 is five times faster or something.
just eyeballing it on the graph, then 314.
So there's still that.
That said, I never run Pi Pi.
I'm not against it.
I like the project.
I think it's cool.
I think it's great.
People are doing that.
But just all my projects, it's like, well, this dependency doesn't work with it.
So nope, can't use it.
You know what I mean?
The whole two versus three problems.
Yeah, we haven't talked about it for a while.
So just in case people aren't sure, pipypypy.
And it is the project.
And it's not C-Python.
It's Python implemented in Python, correct?
exactly like that's yeah i believe so and it's odd that it's faster right but it's fully jit compiled
which is the deal that's why it's faster so but still 314 faster cool but this is this next
picture here is getting to the interesting comparison so you've got standard and you've got the
the microjit i guess that python has now right it's got the the find a couple of instructions
and do optimizations on it but not there's not a broad level optimization compared here and then there's
also free the free threaded Python. And across the board, I guess actually this picture is pretty
this is pretty positive. 313. Standard versus JIT basically no difference. Actually the JIT one's a little
bit slower on some of these. But again, these are really small micro benchmarks. So it doesn't
have a chance to like build up its it's sort of JIT advantage pays the startup cost of it, but not the
I don't know how much it's helping over time. Anyway, those are about the same. But the free
threaded version, probably 20% slower or more than regular Python.
And I thought free threading was supposed to be fast, Brian.
What's going on here?
Well, it's a benchmark that isn't using thread.
This, yes.
So what this is showing is it says, if you are running in the free threaded Python,
not all of, even if you're using threading, not all of your code is going to be multi-threaded.
Right?
Most of your go probably isn't, but some of it will.
And that part presumably is computationally heavy, so you'll get a big boost there.
But the parts where it's not, you actually pay a price to slow it down.
But here's the interesting takeaway from this graph is in 313, that's like 20, 25% slower.
It's a problem.
In 314, it's almost the same.
That's a really big deal.
It's a smidge.
The overhead is less.
It's a smidge slower to do one thread on free threaded Python, but it's removed so much of that.
You're paying a huge penalty in your regular code, right?
So that's actually really cool.
Now here's somewhere down here, if I go find more threads.
Okay.
They have the four, the multi-threaded one here.
There we go.
Now this is the graph.
There's a four-thread version that says we're going to do true multi-threading.
Look at the standard Python versus free-threaded.
Well, on, I tell which is better.
But on Linux, I think the four threads is, it's not quite four times faster, but it's pretty close.
It's a lot, lot better.
Yeah.
And also, this is true that 313 to 314, the 313 version is maybe double of this.
speed with four threads, the 314 is almost four times, like at least three times faster.
So it's a really good story.
I think the takeaway here is that 314 is not much faster, but the multi-threading doesn't have
so many penalties, but it does also have the benefits, which is exactly what you want.
Yeah.
There's still a compatibility story.
Can you use free threading because of your dependencies and so on?
But at least the runtime behavior is kind of in line with where you would expect.
So awesome.
It also looks, it's interesting that the, um, the using threads without threads, without free threading is, are, is, is faster on 14 than 30, like 14 got faster anyway, um, even if you're not free threading.
Yeah, that's awesome. Yeah. So there's a whole lot more stuff going on here and comments down here if you want to get into them. But, uh, that's the, that's the main takeaway. Oh, few. I thought you were going to tell me that like 14 was slower or something.
No, I don't think so. Not, but it's not a true. So here's the, it's not a tremendous. It's not a tremendous.
tremendous boost for the regular one that's not a reason not to upgrade right there's other benefits to it but
yeah and that also a guess makes sense why we still have two versions we're shipping two versions of python
yeah exactly luckily we have UV so it's it's it's like a no-op to use one or the other
yeah it's one extra character to type exactly yeah okay it's it's lighter than air to
switch maybe um speaking of air lighter than air here you go
So there's a new project, and it is pretty new.
So there's a project called Air from the Felderoy's, Daniel and Audrey.
And they're the folks that brought us two scoops of Django.
So this is a project called Air, and it is not that old either.
Looks like a month or so, maybe.
A lot of activity just recently.
But it's already up to 525 stars.
So we're watching it.
And what is, what is air?
Air is a new web framework that breathes fresh air into Python web development.
It's built on top of Fast API, Starlet and Pedantic.
And there is, I haven't really played with it, but it's, it's some interesting stuff.
One of the interesting things that is these air tags.
And I personally, not sure how I feel about this, but it's sort of fun.
Looking at it down at some examples, I'm guessing that these air tags are these things like air.html, air.h.1.
So you can sort of programmatically generate HTML from it.
But apparently if you want a mix of that, so you've got some stuff that's dynamic that you're using these air tag things to generate your HTML.
You can also do Jinja 2 templates at the same time.
And so that's kind of cool.
So you can kind of mix them out, wherever it makes sense in your.
application and i'd i'd love to hear more about like the thought process around this uh but uh interesting
and and from from some interesting people and i was taking a look at this and i'm like um uh plus
the the logo's kind of cute but the the if you go to why it's this is this is why i wanted to cover
this because it's awesome it says that air is uh it's it's highly unstable and experimental web
framework we've not officially launched to the public yet
Every release could break your code.
If you have to ask why you should use it,
you probably, it's probably not for you.
It gets better.
If you want to use air, you can, but we don't recommend it.
It's not enterprise ready and will likely never be,
at least definitely not before the official launch.
It also will likely infect you, your family and your codebases,
with an evil web framework mind virus.
This is good, distracting you that you'll never ship and everything.
So it's just, they recommend not using air, but I think it's just really good writing and maybe reverse psychology.
So kind of some fun mix of HTMLX friendly stuff, some of the best practices.
And I guess reminding folks, these folks are building websites all the time.
So I'm interested to watch what they come up with here.
Yeah, it looks very interesting.
We'll see if I have no air metaphors.
Yeah, no air.
Yeah, it's an interesting project.
All right.
Those are our main topics.
Do you have any extras?
I sure do.
I have a couple.
I can go through quick.
Some are quick.
Some are not as quick, but it's all pretty quick.
Okay.
So I already talked to the Talk Python and Production Book is out.
It's doing great.
By the way, Brian, something that is really kind of mind-blowing to me, but also really cool.
You come over here to the ratings, number one in software engineering on Amazon right now.
That's awesome.
I know.
I know.
That's great.
Thank you.
It's crazy.
So I just want to, the only thing is I've already announced that before, but it's doing
really well and I wrote a blog post sort of about some of the motivation behind it and some
of the different things that people can check out and so on.
So I'll link to that blog post.
Next, here's one of these little tools that I created that was telling you about that
would be really perfect to UV tool install dash E sort of thing.
Although I published it.
No, it's not on Pi Pi.
I don't believe.
Yeah, it is.
It is on Pi Pi Pi.
I have a couple going.
It's confusing.
So this one, here, let me give you a problem, okay, Brian.
You're working with your AI tools, your agentic AI.
And one of the never-ending problems of working with these is if you run out of credits,
you're either done for the month or you have to switch to pay-as-you-go billing.
Like, for example, I had the $16 a month purser plan, and then I started doing a whole bunch of projects.
It was super successful.
I'm like, I'm going to keep using this on the thing.
but I ran out of credits, so I had to switch.
I paid like $250 in credits, overage credits for a month,
which I paid gladly because it solved tons of problems.
If that was a person I hired to do that,
it would have both taken months instead of days,
and it would have taken more than $200.
That said, knowing, like, do I need to slow down
or am I going to have a whole bunch of leftover prepaid credits
with whatever plan you have?
Knowing that is really helpful.
So I created this really simple to-y that you run it,
And it's, you configure it to know what your renewal day is.
So if every month on the 16th, your credits renew, and it's the 24th of the prior month,
let's say, and you've used 30% of your credits.
If you keep going like that, are you going to run out or are you going to have a bunch
left?
In which case, maybe you tackle a bigger project that you, you know, you know, you know it's
going to burn up a bunch of credits, you know, waiting or something like that.
So all you do is you run this thing called AI usage.
You type in whatever percent your little tool tells you, like this picture here says,
you've used 35% of your credit. Okay, AI usage, 35. It says, cool, well, guess what? It's only
day 12 of 31 out of your renewal days. So if you've used 25%, that's actually, or whatever,
you know, this example is 25. So that's actually 13% less than if you were like on average
using all of them. And so you're going to have by the end only use 64%. So you're going to have like
35% more you can go grind on. So go be ambitious or choose a more expensive but better resulting
model or something like that. So that's a little utility I built for people. That's cool.
Thanks. Let me rephrase that. I built it for myself and then I just put it out there because
I thought people might find it useful. You built it for other people that you actually also find
useful. Exactly. All right. Then I did this little thread called show me your LS and unfortunately
I use sans-serif fonts so it just looks like it says show me your is.
You know, whatever. Like I can't do. I'm not changing my web fonts just for one post. Anyway,
I wrote a blog post called Show Me Your LS and just trying to encourage people like, hey, play with some of these fun tools and so on.
So if you look at the default terminal experience on Mac, even on a $3,000 Mac running 2025 latest OS, it's dreadful, you know what I mean?
Like, oh my gosh, it has like the folder name than dash bash, dash bash, dash bash, dash bash, just like, oh my God, what is this thing?
Just should put what I'm using out there now.
Right now, I'm using this one that basically shows icons for the different file types.
It uses the Git Ignore to show hidden or unhidden files and, like, developer conventions,
and it shows the file size and human readable sizes and stuff like that.
So I just thought I want to inspire people to play around a little.
So people can check that out.
Oh, yeah, so people want to check out this little blog post and get inspired about making your terminal better.
Also, have you heard of helium, the browser?
I think you mentioned maybe.
I don't know.
I think I have.
Okay, so it's the best privacy and unbiased ad blocker by default.
So it comes built in with ad block or ad block plus.
I don't know what, some kind of ad block.
One of the better ad blocks as part of the thing, and it's based on Chrome and so on.
And, you know, it's kind of neat.
It's basically a Chromium browser.
It's not pulling me away from Vivaldi at any moment right now.
I really like the way Vivaldi works and the customizations and the side tabs and all that kind of stuff.
But I was just poke around.
I'm always here for like understanding new browsers.
come over to the GitHub repo, see what it says about languages?
97.4% Python.
Oh, wow.
That's cool.
Yeah.
Yeah.
So it's not that the entire browser is Python because it just is wrapping chromium,
which is C, you see, C++, something like that.
But what's interesting is if you just look around,
it's full of all these little Python scripts to basically take chromium and build it
into an entire browser, which I thought was pretty interesting.
So people might want to look around this repo.
Yeah.
We could use a handful of forks then to make some cool stuff.
Yeah, exactly.
All right.
The last thing is super short.
I present to you the world's smallest Python, C-Python release.
3.13.9 final released yesterday.
It has literally one change in spec to get source lines.
And that change is to deal with the case when a decorator is followed by a comment and then the function.
Something about the lines gets messed up.
Amazing that they released it.
I mean, I know it's important for certain things,
but normally these things are just like scroll,
scroll, like changes, changes, changes, changes, changes.
So anyway, 3.13.9 is out, though it's likely it doesn't,
it's not something you need to rush out and install.
You shouldn't install 314 anyway.
Yeah, maybe it was just a schedule, whatever's in there.
Yeah, perhaps.
A couple weeks later.
All right, over to you.
Well, we have another release that I was going to talk about,
which is 315, so 315 Alpha 1.
is out already.
Hugo posted a couple days ago.
And major new features.
Okay, so it's pretty new stuff already,
but it's rolling out so people can,
there's a play with that dedicated profiling package
for profiling tools.
This one's actually kind of cool.
PEP 686.
Python now uses UTF8 as the default encoding.
It has kind of bugged to me that when I encode stuff,
it doesn't default to
UTF8, but now it does,
so that's good. Actually, it doesn't
really bug me that much because I usually just specify
what I usually specify the UTFA
encoding. Yeah, I do too, but you don't
want to forget, and it's not a
enumeration, it's a string, you've got to just type
utf dash 8.
Yeah, so there'll be less of
that typing now. It'll be good.
Anyway, one of the things that I think
while we were talking about last week
about testing, testing
for 314,
you may as well
get, you know, while you're mucking with your Toxany
file, you can go ahead and turn on
315 testing just in case something
something comes up in 315 that makes it
you have to modify it. I probably wouldn't put it in
CI right now or somehow put it in CI
that it doesn't stop you from shipping.
But for local testing, why not?
And to help you with local testing,
you can already PIP install it with or not
PIP install it, but you can UV Python install 315 because Astral's UV supports 315 now.
So that's cool.
I'm glad Astral exists.
Yeah.
I could never remember how to install the alpha releases and stuff.
And it just, it's easy now.
Okay.
We, I threatened to write a few blog posts.
So I did lazy imports.
We talked about it might come in.
It's a proposal that hasn't been accepted yet for 315.
But you can use, there's techniques for using lazy imports right now,
and these are not complicated.
This isn't something extra you install,
but I posted Python lazy imports you can use today on PythonTest.com.
And also, just a quick rundown of all the things that I mostly wrote it for me,
all the things I change when I add some testing for a new version.
so I updated testing against 314 and almost immediately got some feedback to add I tried to give a shout out.
Christian Klaus said, hey, you forgot free threading.
So I added a section to all the stuff I changed to support free threaded Python.
Nice.
Not the guild version.
Not the guild, but non-fish version.
So it's just mostly adding a 314T in a couple places.
But I was checking out, I'm like, well, do I need to do something special about the trove classifiers?
And I went and looked and there are, I didn't realize this before, there are, you can add a free threaded, free threading trove classifier now.
If you want to broadcast that you're supporting free threading on PIPI, you can add that.
And there's also, there's also how stable it is.
So you can, there's non-free-threaded stability, but apparently you can have stable, unstable,
beta resilient as far as free threading goes.
So if you're working on supporting it and it mostly works, you can sort of advertise that,
I guess.
Yeah, love listening.
I didn't know about the true classifiers either.
Going forward, that's going to be a thing.
Yeah.
And I guess that's it for extras.
All right.
I got a joke for you, obviously.
This one is a Linux joke.
Are you familiar with Arch Linux?
Vagely.
Like vaguely.
So I'm pretty much me as well.
But the Zen of Arch Linux is that it's the absolute minimal, most empty thing set up that then you choose like, oh, I want to have this kind of shell.
Oh, I want to have this feature.
And everything is adding it in, right?
Oh, okay.
Okay.
So there's, you know, some upside to that.
So anyway, the joke is here we have the small, presumably geeky little programmer.
hype in an orange jumpsuit in a jail set next to the biggest, toughest looking thug.
You can imagine.
The thug says, kill the man.
You, a little character looks over and says, I installed apt on Arch Linux.
Dude, what?
The guys creeped.
Like, the big thugs, like, all creed on.
What are you doing, bro?
God, get away from me.
It's good, right?
Yeah.
See, you got the comments.
Kind of want to do this now.
Go ahead.
Love it.
I love it.
how i can understand these jokes now someone says like i'm getting good at linux i know what it means
okay and what is that do you know apt yeah it's the it's the the thing you install it's like uh
the pip of of abu and stuff you know apt install okay just doubted myself for not using
linux for very long time so yeah dude don't get away from me you monster anyway i thought it was fun yeah
That's fun.
Yeah.
Plus the art is nice.
The art is lovely.
Yeah, the art is really good.
I think I appreciate art a little bit more now that there's a lot of like vibe and art.
You know, you see real art.
You're like, that's nice.
Yeah.
And this isn't art, but I was commented before we started recording.
I'm just loving the kind of the blue lighting that my robot is experiencing right now today.
That's nature's light.
Nature's light.
Yeah, it's cold out.
Anyway, awesome episode today again.
And thanks, Michael.
Thanks, everybody for listening.
We'll catch you next week.
Catch you later. Bye all.
