Python Bytes - #446 State of Python 2025
Episode Date: August 25, 2025Topics covered in this episode: * pypistats.org was down, is now back, and there’s a CLI* * State of Python 2025* * wrapt: A Python module for decorators, wrappers and monkey patching.* pysentry ...Extras Joke Watch 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. Brian #1: pypistats.org was down, is now back, and there’s a CLI pypistats.org is a cool site to check the download stats for Python packages. It was down for a while, like 3 weeks? A couple days ago, Hugo van Kemenade announced that it was back up. With some changes in stewardship “pypistats.org is back online! 🚀📈 Thanks to @jezdez for suggesting the @ThePSF takes stewardship and connecting the right people, to @EWDurbin for migrating, and of course to Christopher Flynn for creating and running it for all these years!” Hugo has a CLI version, pypistats You can give it a command for what you want to search for recent,overall, python_major, python_minor, system Then either a package name, a directory path, or if nothing, it will grab the current directory package via pyproject.toml or setup.cfg very cool Michael #2: State of Python 2025 Michael’s Themes Python people use Python: 86% of respondents use Python as their main language We are mostly brand-new programmers: Exactly 50% of respondents have less than two years of professional coding experience Data science is now over half of all Python Most still use older Python versions despite benefits of newer releases: Compelling math to make the change. Python web devs resurgence Forward-looking trends Agentic AI will be wild Async, await, and threading are becoming core to Python Python GUIs and mobile are rising Actionable ideas Action 1: Learn uv Action 2: Use the latest Python Action 3: Learn agentic AI Action 4: Learn to read basic Rust Action 5: Invest in understanding threading Action 6: Remember the newbies Brian #3: wrapt: A Python module for decorators, wrappers and monkey patching. “The aim of the wrapt module is to provide a transparent object proxy for Python, which can be used as the basis for the construction of function wrappers and decorator functions. An easy to use decorator factory is provided to make it simple to create your own decorators that will behave correctly in any situation they may be used.” Why not just use functools.wraps()? “The wrapt module focuses very much on correctness. It therefore goes way beyond existing mechanisms such as functools.wraps() to ensure that decorators preserve introspectability, signatures, type checking abilities etc. The decorators that can be constructed using this module will work in far more scenarios than typical decorators and provide more predictable and consistent behaviour.” There’s a bunch of blog posts from 2014 / 2015 (and kept updated) that talk about how wrapt solves many issues with traditional ways to decorate and patch things in Python, including “How you implemented your Python decorator is wrong”. Docs are pretty good, with everything from simple wrappers to an example of building a wrapper to handle thread synchronization Michael #4: pysentry via Owen Lamont Install via uv tool install pysentry-rs Scan your Python dependencies for known security vulnerabilities with Rust-powered scanner. PySentry audits Python projects for known security vulnerabilities by analyzing dependency files (uv.lock, poetry.lock, Pipfile.lock, pyproject.toml, Pipfile, requirements.txt) and cross-referencing them against multiple vulnerability databases. It provides comprehensive reporting with support for various output formats and filtering options. Key Features: Multiple Project Formats: Supports uv.lock, poetry.lock, Pipfile.lock, pyproject.toml, Pipfile, and requirements.txt files External Resolver Integration: Leverages uv and pip-tools for accurate requirements.txt constraint solving Multiple Data Sources: PyPA Advisory Database (default) PyPI JSON API OSV.dev (Open Source Vulnerabilities) Flexible Output for different workflows: Human-readable, JSON, SARIF, and Markdown formats Performance Focused: Written in Rust for speed Async/concurrent processing Multi-tier intelligent caching (vulnerability data + resolved dependencies) Comprehensive Filtering: Severity levels (low, medium, high, critical) Dependency scopes (main only vs all [optional, dev, prod, etc] dependencies) Direct vs. transitive dependencies Enterprise Ready: SARIF output for IDE/CI integration I tried it on pythonbytes.fm and found only one issue, sadly can’t be fixed: PYSENTRY SECURITY AUDIT ======================= SUMMARY: 89 packages scanned • 1 vulnerable • 1 vulnerabilities found SEVERITY: 1 LOW UNFIXABLE: 1 vulnerabilities cannot be fixed VULNERABILITIES --------------- 1. PYSEC-2022-43059 aiohttp v3.12.15 [LOW] [source: pypa-zip] AIOHTTP 3.8.1 can report a "ValueError: Invalid IPv6 URL" outcome, which can lead to a Denial of Service (DoS). NOTE:... Scan completed Extras Michael: I’ve been rumbling with rumdl. Ruben fixed one of my complaints about it with issue #58. Config seems like it might be off. Here’s mine .rumdl.toml. I’ve been using it on the upcoming Talk Python in Production book Read the first third online and get notified when its out. 20 or so Markdown files 45,000 words of content I asked if 3.13.6 would be the last 3.13 release? No. Thanks Hugo. Python 3.13.7 is now out. Joke: Marked for destruction
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 446, recorded August 25th, 2025. I am Michael Kennedy.
And I'm Brian Ockin.
And this episode is brought to you by many cool services and products.
Can you imagine a course that teaches you how to use PiTest, an entire library of 270 hours of courses about all Python things,
a pie test book, and Patreon supporters. Thank you all.
Check out Brian's courses, Michael's courses, Patreon supporters, check out Patreon and all that.
Thank you.
And I actually have another thing that kind of falls into that category that's pretty awesome.
I'm going to talk about later.
If you want to connect with us on the socials, Mass out on Blue Sky is probably where we spend most of our time.
Brian, me, the show, we all got accounts.
And you can watch us live on YouTube at PythonBytes.fm.
slash live. If the live show is going on, it should say a big banner across the top. Hey, we're
live. Click here to go to it. And if not, you'll just see all the past live streams. So much appreciated
typically Monday at 10 a.m. Pacific time. And you should definitely subscribe to the newsletter because
you'll get a custom email from Brian talking about all the different things we covered and not just a list
of what we've covered, but diving into extra details, extra links, more background info. Very cool. Also, very
cool are statistics yeah so about these things well we have um there's it there's a website
called pi pi stats dot org and it's it's it's nice it's you pop into it and it just says
analytics for pi pi pi packages so let's uh let's pick one by test check um it's my favorite um
little thing that i support and then it you what you get is you get these um i'm pretty
sure we covered this before but you get the download statistics so that's not really the news
It is a cool website.
You should check it out if you haven't checked out before.
And you can also check out the top packages, which ones are the most downloaded by day, by week, by month.
And that's all fun, but there's some details in the individual package that you might want to know if you're supporting stuff.
So like, for example, what system for Pytest check?
It looks like it's pretty much all Linux, 97.5% Linux, which makes sense.
It's a test tool, so a lot of the tests are running in the server in not other places.
But the package supports Windows anyway.
But if I wanted to like, you know, bail on Windows, I probably wouldn't be a terror.
I mean, I don't think very many people would be met because.
Now, 1% of the people would be pretty upset.
Yeah, well, you know, so maybe I'll leave it.
It isn't OS specific anyway.
But some things are, you know.
So, okay, so why am I bringing this up?
If this is, this is old news, you should know about it anyway.
But one of the things is a few weeks ago, it went down.
This is a volunteer supported site.
And it was by C.R. Flynn.
I'm sorry, I don't know his name.
But anyway, posted that, hey, pytastat.org is down.
Somebody reported that like three weeks ago.
But, and so I noticed that and Hugo mentioned it and I saw what was going on.
But just a couple days ago, Hugo announced, hey, Pi Pi PiStats is back online and it's more
supported now.
So thanks to Janice and the PSF, thanks to Janice for suggesting that the PSF takes stewardship
and connecting the right people like E Durbin for migrating.
And of course, Christopher Flynn.
Oh, Christopher Flynn was created it.
But a lot of people were involved, or at least a handful of people were involved, to get it back online and get it going.
And I didn't realize, so that's cool.
It's back online, works great, and I really appreciate it because I don't use it all the time, but occasionally, and I'd like to use it.
I didn't know that there was a CLI for it.
So Hugo put together a project called Pi PiStats, same name, but without the dot org, but you can PIP install it, and you can run it on the command line.
And it's super neat.
You can actually, you can run it on the command line and you get, you get some, you can pass it like Python.
I'm showing on the screen, Python Minor.
So it shows which Python versions are being being downloaded.
But you can do other stuff.
You can, what do I have a list?
Look it up.
You can do Python Major, Python Minor, the system, overall downloads, recent downloads.
So it's a pretty interesting information.
some new things that just got released are the ability to you were always able to pass in like a name so just on the command line type in a package name and get the stats but now you can also point it at a directory or not pointed in anything and it'll if you're in the current directory for a project and it'll just look up pipe project at toml or set up cfg and look it up so uh really cool that um that hugo extended that command line thing to be able to look up that information
That's cool.
And it tells you what is the popularity of the packages you're using basically?
Yeah, well, the popularity, but also just different stuff.
So like here's a, like for Pillow, for example, it shows an example of, and this is in black and white on the readme, but if you do it on the command line, it's color.
So the color output is really kind of nice.
Nice.
But you can figure out like start and end dates.
So if you want a particular date, you know, for you want to zoom in.
on dates how many downloads last month and whatnot um and the the different things like um the what
python version is good it's kind of cool because you a lot that's one of those things of like
is it you think it'll be okay if i completely removed support for 3.8 if i want to bump up to 3.10 or
something but looking at pillow for example it's um it's still uh you know 5% of the people are using
uh 3.8 um and some people are still using 3.8 um and some people are still using 3.
So maybe they should still support it.
I'm not sure.
Maybe they support it or maybe they could be the pebble thrown in the water
to create the wave that causes those people to upgrade.
Yeah.
There's some cool flags for the command line thing like last month or picking in April,
picking a date, easy to read stuff.
And there's an API for it or like a package, importable package that you can do it.
programmatically. So anyway, cool tool. Very cool. All right, let's jump over and talk about
the state of Python 2025 according to the PSF JetBrains survey. Ooh, neat. This article is
written by a little known guy named to Michael Kennedy. I actually worked with, yeah, I
worked with JetBrains and they're like, hey, you want to write this? I'm like, yeah, sure,
they'll be great. So basically what I did is I went through all of the, all of the survey results.
and pulled out the headlines and like the trends
and like, what jumped out at me, right?
You know, you and I've done this together before, Brian,
where we just pull up the survey results
and do it on the show.
I did this with like way more time and effort
in written form and then we'll do it on the show, how's that?
So I think this is maybe like 4,000 words.
It's like quite a write-up, right?
So I wanna just, I don't wanna go through all of it.
You guys can read it, but I do wanna pull up
some interesting trends.
So the first trend, I think,
that's pretty wild is that Python people use Python and you're like, oh, Michael, obviously.
But if you had a JavaScript survey, you would ask, do you use JavaScript? And a lot of people that do Python would say, yeah, I use JavaScript.
A lot of people who do, I don't know, dot net use JavaScript, right? Either as little utilities for Node or as because they need a website that has interactivity.
So I think it's noteworthy that of the people that are in the Python space, they're not there as a secondary purpose.
They're there because of Python, not because, like, they've got some library that they need to work on, right?
So 86% of people who are Python people use Python, like, as their, that's their main thing, right?
As their main.
And then 14 is secondary, so.
Yeah, yeah.
So, like, maybe they have to support tools in Python, but that's not really what they do.
The other one that I think is wild is that I think what we maybe have mentioned in this.
I know I mentioned this on Talk Python before, but people out there are mostly brand new.
I've seen this once before, but it continues to be true, even more so, and it blows my mind.
How many years of professional coding experience do you have?
Less than two, one to two years, like zero to two years of programming, that's 50% of the people.
Wow.
50% of the people in the Python space just started.
And if you're one of those 50% listening, thanks for listening.
I know a lot of people listen to our podcast so that they can just,
jump into the community and get up to speed.
So that's pretty awesome.
But this has tons of consequences, right?
Like if you're creating tutorials and you're just like,
hey, yeah, install that make a V&V
and then install the package for local editing.
Now we get started the tutorials.
Like, hold on, you gotta realize you're talking to people
that are just getting started like half of them.
And I think that has a lot of implications for tooling,
for tutorials, for presentations, et cetera.
Yeah, but this is also, this question is how many years
of professional coding, not necessarily how many years of coding.
There's, yeah, there's a more
results in there that are like how much experience you have with Python at all and it's like
really quite low okay so this so but this is also noteworthy in the sense that like not just how
much time do they have with Python but how much they have time professionally coding at all yeah right
yeah and I'm noticing that that a lot with people I teach as well I get a lot of on the the Python
test community get a lot of questions that say I don't know if I can ask this here but
basically I don't have any CS background and so I don't know what a like a lock is or something
like that so I'm like yeah sure yeah talk about that yeah exactly yeah and it's it's fine another one
I don't know I've always thought of like a Python community being broken into thirds like one thirds or
web API one third data science and one third like catch all others you know automation little
tools whatever well that is no longer valid data science is now half
of Python.
51% is probably 51% AI too because you know with AI you can go over 100% that's right
absolutely you don't need a data up now this does include like data engineers who I got a
message from so many saying you can I don't want to be grouped in with data science like
okay but you also don't belong in web and you don't belong in other I don't think I don't know
it's but you know that does include some data engineering but none the what nonetheless this is a
significant portion, another thing to keep in mind.
Okay, so does this survey include the, like, the LLM people?
Yeah, yeah, oh, absolutely.
Yeah, yeah, definitely.
I think a lot of this is people getting into machine learning and so on.
Okay, this is, I think the last main thing I wanted to, I know, two more things real quick.
The other one is, and this one, I think I want to put out there as a, if you were in this group, reconsider.
Twitter. Most people, 83% use a major version older of Python or older. I mean, we're at the end of
313 and it's like 83% are like 312 or below. And not just at the end of 313.
Well, no, not in the end of like support. I mean, we're about to have 314 is what I mean.
Yeah, right. That's what I mean. Like it's 313 is not, it's about to no longer be the latest is
what I'm saying. So this is pretty wild. And I did some quick math, just like, you know,
Some people like, well, it works fine for me.
I don't really need to be any better.
Like, I don't need the new tools.
So 311, let's say 311 is fine.
Or let's say 310, 310 is fine.
Even 3.9, it's supported for another couple of years, right?
Probably, maybe one.
But there's, I did, like, let me do some quick math here.
Just see if I can put this in perspective for people.
Like, in addition to just you might need to be on the later version to have some of the newer tooling, right?
Some of the new libraries and so on that decide to drop the old one so they can adopt some feature, right?
Yeah.
I said, well, what if you're on 311?
48% of the people currently using 311.
If they upgraded to 313, their code would run 11% faster
and use 10 to 15% less memory.
Yeah.
If you're on 310, you get a 42% speed increase
and 20 to 30% less memory just by changing the Python you're running on.
Chances are, it's extremely minimal or zero upgrade cost.
You just got to try it out.
Yeah, this is like no code changes.
Just change the interpreter.
Exactly.
Just change the.
the start command or what's installed.
So what if you're a medium business?
I did a little research like vendor.com and stuff.
It said the average AWS bill for a medium sized business is $2.3 million a year.
And EC2 represents 50 to 70% of that.
And if you're paying for a bunch of cloud machines or cloud compute in whatever form and you
get those boosts I talked about, well, your small business just saved $420,000 to $420,000
by just changing from 310 to 313.
Wow.
If you're a large-scale business, like a large enterprise,
you save $5.6 million by just switching to run on the newer version of Python.
So anyway, I think these are like really, really interesting.
And then the last one is there's a big research in Python web development, I think.
Over the years, this has been trending down.
45, 43, 42%, but it's back, baby.
And not just are people using, saying that they're doing a little more web development,
But if you look at things like CSS or HTML in terms of how much they're used,
they jumped, I think it's like 15% up year over year.
Not a like 30 to 45%, but the increase from what it was to the new one is like a 15% growth
from what it was previously.
So like all in databases just across the board.
So I think that's really interesting because there had been like a long, slow trend
of kind of like Python's less for web, Python's less for web, probably more.
more JavaScript, and it's like, it's back.
So I think that's pretty interesting.
And then there's a bunch of, like, guidance that I gave for people at the end, like,
okay, now that you know all this stuff, here are some actions, some actionable things you
can do to take advantage of these trends and whatnot.
So I've said enough about this.
People can check it out.
It's a super long and interesting article, I think.
Yeah.
Okay, cool.
I can't wait to check this out.
Yeah, indeed.
All right.
Over to you.
Well, I'd like to swap.
out and take a look at RAPT. Actually, I couldn't resist. So I'm going to talk about a package called
RAPT and I went ahead and looked at the PIPI stats. And it's used a lot. So it's the, I don't know,
numbers, percent wise or where it is at the top packages or something. But it's downloaded
almost five, what, five million, four point eight million daily downloads. That's pretty good,
pretty big. So a pretty popular package. So what is wrapped?
RAPT is, I can't believe we actually haven't talked about this yet,
but RAPT is a Python module for decorators, wrappers, and monkey patching.
And to be honest, the first time I ran across RAPT, I thought,
well, wait, don't we have Fug Tools Raps?
That's what I've been using before.
However, so let's talk about RAPT a little bit.
The aim of the module is to provide a transparent object proxy for Python.
Yep, wrappers, which can be used as a basis for constructing,
of construction of functional wrapper, function wrappers, and decorator functions.
Right, got it.
FunkTools Raps, right?
No, apparently.
So the RAP module focuses very much on correctness.
It therefore goes way beyond the existing mechanisms such as Func Tools Raps to ensure
decorators preserve introspectability, signatures, type checking abilities.
Okay.
Yeah, because sometimes you like, let's say if you, one of the examples, I can't remember
where it is in the, in the docs.
But if you, if something that is in a package is implemented as a property, not a method,
or then the return value is different than if it was just a function.
But, and Funk Tools Raps gets that wrong, but RAPT, I think PrunkTools Raps gets that wrong,
but RAPT gets it correct.
It has it behave and signature-wise look the same, which is pretty cool.
Which I know about this.
I just always battling.
This decorator doesn't have the right.
You know, it transforms the type of signature of this function, so then you get some warning.
I'm like, I don't care.
It's a web function.
No one's going to call it directly, but it's just an IDE warning.
I'm like, ah, make it go away.
And to be fair, the main reason why I usually am reaching for, if I reach for Funk Tools
Raps, is because it makes the name of the function be correct, and it isn't the silly little
function.
It changes the name, and it changes the dock string.
So if anybody's looking at the name or the dock string, it gets corrected.
And if that's enough for you, yeah, that's fine.
But it's kind of interesting looking at some of the history.
So I was looking back.
There's a blog that the creator of this wrote Graham Dumpleton.
And this goes, this is back from apparently originally, if we go to the blog, it's from originally from 2014.
He started writing these and he's kept him updated.
So last update was five years ago, but originally.
original 2014. Anyway, how you implement your Python decorators is wrong. I was interested. One of the
reasons why I was interested in this is the idea that it was around monkey patching. And monkey
patching is the original thought process as to why he wrote this. He was monkey patching things
and it was incorrect. And interesting discussion over there on the blog about monkey patching
and why it's not just for testing. I use it a lot for testing, but it could be, there's a lot of other
use cases too interesting series of blog posts about it so um pretty fun to take a look um one of the one
of the amazing examples in the docs which i thought was really pretty awesome there's some some really
easy examples that you'll get right away and then it goes like pretty deep so let's say you've got
asynchronous code or um um multi-threaded code and uh you want to synchronize uh synchronize those with
locks you can he's got this write up which is you know it's a kind of a link they're
right up but it's not too bad and the end result if you scroll to the answer at the bottom is you've got
you can just have like synchronized um you set up these locks and you decorate each function that you
want synchronized with a synchronized decorator and it just works so um it's kind of fun to be able to do
things like uh like um put extra extra abilities around something like lock grabbing a lock or something
like that yeah that's really cool we're going to need more of that as free threaded python becomes
the thing we have to get used to that those concerns yeah and also um the other one of the other
my concerns with jumping to um from funk tools wrapped to wrap to uh wrapped are a w rapt was i was
worried about speed because it's doing a lot so is it kind of slow and um and apparently not uh
to ensure the overhead as minimal as possible as c extension module is used if it's available
an automatic fallback to a Python implementation is provided if the target system doesn't have isn't extended for that target system.
But for my use cases, as we've seen, most of my users are in Linux, so we're probably fine there.
So anyway, it's really neat, very neat.
Let's see, what is next?
Owen Lamont, it's back with a good recommendation for us.
Okay.
Yeah, he says, you should check out PiCentry.
So I did check out PiCentry, and it's quite neat.
So what is PiCentry?
It scans your Python dependencies for known vulnerabilities, and it's rest-based, so it's fast,
and it might get VC funding.
So what it does is you go into a folder, a project, I'm not sure if it needs an active virtual
environment or just the files, but we'll scan UV lock, poetry lock, piplock, pieproject.comal,
pip file, and requirements.
txt look for specific versions of dependencies that you are specifying there and it'll cross-check
them with a bunch of vulnerability databases not just typo squatting type stuff but just hey there was
this vulnerability reported in the jango admin you should update because you don't want to be you
want to participate in that kind of fun right you're not about that life so pretty cool um yeah it has
multiple data sources, the PiPA advisory database, PiPi, JSON API, OSV, Dev, open source
vulnerabilities, and so on. Yeah, and it's pretty neat. So you can specify different levels.
Dependency scopes are supported, like Dev versus Main, direct versus transitive dependencies,
that kind of thing. I ran it on our setup on Pythonbytes.fm, which apparently,
now, one thing really quick here is it actually has more than, it says,
High Century Security Audit.
Summary, 89 packages scanned, one vulnerable, one vulnerability found.
Ah, Brian, what's going on?
There's actually more than 89 packages for our website, but I don't know why.
Maybe there's just no information about some unpopular ones, and so that's why they didn't show up.
They weren't scanned.
I don't know.
I don't know why it's less, but that's my injecture.
It says there's one unfixed, low severity CVE found, and it's unfixable.
Great.
That's why it's still there.
What is it? It is an AIO-HDP. If an invalid IPV6 URL is passed to it, it will go bonkers.
I don't care. This is the dependency of a dependency of a dependency that internally calls an API to its own service, and it uses AIO-HDP to do that.
No one's going to pass an invalid IPV6 URL to that thing, because it's not even part of our code. It just happens to be, we ask the service to do something.
And it goes, okay, I got to call my API in the cloud and do that, right?
But here it is.
So you can decide, is it an issue or not.
But still, that's pretty cool, right?
You could just run this on your project out periodically,
or you could maybe run as part of CICD and get like warnings.
Hey, maybe you shouldn't put this in production.
It says there's a CVE severity level 10 out of 10 remote code execution,
no author required.
Let's not do that.
Yeah.
Interesting.
Yeah.
One thing to be aware of, you don't UV tool install pie century.
you install PyeCentry dash RS to be.
So just be careful on the install.
I don't know what's at PYCentry,
but I presume it's not this.
Oh, okay.
So you have to be careful of what you're installing?
Yeah, just look at the website,
and there's the same,
the name of the command and the package are different.
Yeah, and I know that that happens,
but it always like.
I don't like it.
I don't like it.
Just pick a different package name, people.
Come on.
One quick extra for me is that we,
I talked about this last week that our testing code is being offline to archived or whatever.
It's not going offline, I don't think.
So, Michael, last week, Michael convinced me to think about archiving it away.
So you'll be able to go to testincode.com and find it in for the foreseeable future, I think,
looking into ways to offload it to somewhere else.
But there's some pretty cool things that make it seamless.
So I think that as I get time in the next couple of months,
it'll transition over and nobody will know the difference,
except for maybe the website will look different other than that.
Also, I've gotten a whole bunch of great comments.
So a lot of people have gone over to the contact page.
And so in the episodes I've said,
hey, you can go over to PythonTest.com,
and there's a contact page, and you can reach me if you want.
I'm not really fishing for compliments.
But a lot of people have said,
hey, I've enjoyed this podcast and thanks
and just some nice emails have come in.
So that's cool.
So thank you, everybody.
Very nice.
And I'm glad to see you're keeping it online.
That's cool.
Actually, somebody contacted me and said,
I was worried, so I downloaded all the episodes.
So you don't have to do that.
Very proactive.
Okay.
Michael, how about extras for you?
I have some extras.
I have some rumdo follow-up.
This is the, the Mar-E.
Markdown Lentor that we talked about previously.
Let me do it in reverse order.
So I'm actually almost ready to release my Talk Python in Production book,
which I've been working on.
It's about 300 pages now.
You're going to release it as an ebook initially.
If it's worthwhile, I'll eventually do a print.
But certainly an ebook that you can get.
So you can read about the first third of it online, which is fun.
So if people are interested, they can go through and read the first
seven chapters, I think, which is exactly what's in the book. And then you'll be able to actually
buy the rest of the book, right? Pretty soon. So why am I starting out with this? Well, one,
I encourage you right now, it's not quite released yet. Go click on buy the book. Please put
your name in and email address to say, I'm interested when this comes out and I'll email you
very, very soon. But the reason I'm talking about this is I've been grinding on that thing with
like 45,000 words worth of markdown with Rumdell. And I have some reports.
It's been going really well, actually.
The thing works great.
It's found some issues.
Some of them I didn't like.
I didn't like the fixes it was proposing.
Like, we talked about it word wrapping at, like, line 80 or whatever you set it at.
And I'm like, no.
Because in my markdown editor is it shows that kind of formatting.
I want it to just wrap around and not be like weird, no wrapping, wrapping.
So you can turn those kinds of things on.
Yeah, exactly.
The other thing is, I pointed out that there was a bug.
and not sort of looking up the directory tree
to find the config file if you're down in the guts.
And so Rubin very kindly said,
you know what, that's a good idea, I'll fix it
and just released a fix that made it a little bit better.
There's a lot of traction going on here.
That would have bugged me too.
Yeah.
Yeah, I'm like, well, the reason it bug me is I was,
there's like the book and then there's a source folder
full of all the markdown,
then there's other folders that are like output and assets and so on.
And I was down in the lower one
and I ran out on accident,
and it completely formatted and changed everything based on the defaults of the tool,
not all the specs I said.
And I'm like, no, no, no, no.
You know how much work is this going to?
Luckily, I just rolled it back and get, but I'm like, it was easier to apply the few changes
that I wanted to keep than to redo, you know, all those things.
Anyway, that's fixed now.
So it's awesome.
And then finally, I thought maybe people would be interested in the config that I was using,
that I am using, and I turned off a bunch of things.
things and added comments to what I turned off, like line wrapping, for example.
And also, I don't know where I got the config file.
I got it from somewhere, but some of the settings were not right.
Like, I can't remember exactly what it was, but maybe they were not under a global tag or
some weird thing and the Tommel.
So I put mine up and it seems to work if people want to borrow it.
So anyway.
Cool.
So that's in the show notes, right?
That is all in the, yeah, that's all in the show notes.
I've made it a gist and you can get it from the gist.
If you get it just that easy.
It's just that easy.
That is right. Okay. And then I think... Oh, yeah, one more thing. Remember, last time I speculated, could Python 3136 be the final 313 before 314? No.
The answer is no. No. The answer is a hard no. The answer is actually no. 317 was released before you talked about 316. Because 316 came out. I wrote it in the show notes. And then I didn't look for a few days.
If we did the show and 317 it already come out.
Well, that's a hard no.
313.7, right.
Yeah, sorry, 3137.
But here's the thing interesting.
Why?
Why is that the case?
It is a emergency bug fix for an issue or a problem introduced in 3136.
So in 3136 there was something that went wrong.
And they're like, ah, what was it?
a regression in the SSL module between 3.135 through 136 reading from a TLS encrypted connection block.
That actually sounds like you really want that to work.
Yeah.
Well, so don't predict it again because the next one will just be, the reason it'll be to make Michael wrong.
Exactly.
Yeah.
How about that for a release note, huh?
Okay.
That's it for all my extras.
Okay.
Are you ready for a joke or you got something else for us first?
It's like 98 degrees here.
Yes, I'm ready for a joke.
I know. Neither of us have air conditioning in our current setup right now. I'm above the garage in this
separate building that has literally no AC. I have to close the windows because the road noise is my little spa time,
my sauna time. And I am in a house that used to have lovely air conditioning and it picked the hottest weekend
of the year to break. Because when else would it break? All right. Well, it's going to be fine, Brian.
Don't you worry about it. You know why? Because this planet is marked for death.
Okay. So says the Silver Surfer. Now, I don't even know what show The Silver Surfer is from.
You know, it's one of those like Marvel or Avenger type shows. But the Silver Surfer appears and
says, your planet is marked for death. And people say, can we ask why? Well, the Silver Surfer says
because your planet's beings chose JavaScript as the primary language of web development,
clearly a fatal flaw. What is wrong with him? We're going to have to just finish you off.
You're clearly not worthy.
That's good.
Yeah.
I can come up with some other reasons that it might pick as well right now.
You know what?
The Silver Surfer is not a fan of Fronten Frameworks.
I'll tell you what, though, like it's not, at least my frustration with all this kind of stuff
is not the JavaScript is a language for front-end development.
It's that it's the only language ever.
After 25, 30 years of front-end web development, of code running in browsers, that it's the only
language that's and we have web we've had web assembly for 10 years it's fairly ridiculous anyway
thank you silver surfer for putting us out of her misery yeah maybe not no no pat says you should
come visit iowa by the way lovely weather and not melting there all right thank you pat
yeah indeed and with that ryan thanks for a lovely show as always bye everyone bye
