WEBVTT
00:00:00.001 -->
00:00:04.640Hello and welcome to Python Bytes, where we deliver Python news and headlines directly
00:00:04.640 -->
00:00:12.820to your earbuds. This is episode 400. How about that? I'm Michael Kennedy.
00:00:12.820 -->
00:00:13.860And I'm Brian Okken.
00:00:13.860 -->
00:00:18.740And this episode is brought to you by Scout APM. Check them out. Links in the podcast player's
00:00:18.740 -->
00:00:22.940show notes are on the website, and we'll tell you more about them later. Connect with us over
00:00:22.940 -->
00:00:28.860on Mastodon. Links in the show notes. And hopefully you're watching us live now on Mondays. Usually
00:00:28.860 -->
00:00:33.780you can find out by going to pythonbytes.fm/live. And usually we have the next one
00:00:33.780 -->
00:00:38.800scheduled and you get notified about that. And for those of you who would like, even if you missed
00:00:38.800 -->
00:00:45.860the show, a quick digest, an artisanal handcrafted digest of all the things we talked about for the
00:00:45.860 -->
00:00:50.780week, just become a friend of the show, sign up for the newsletter, pythonbytes.fm, click on newsletter.
00:00:50.780 -->
00:00:56.340Well, before we get into the topics, officially, Brian, I think we got to say a little bit something
00:00:56.340 -->
00:00:59.260about 400. Yeah, it's quite a big number.
00:00:59.260 -->
00:01:01.400So big that you wore an amazing hat with a butterfly.
00:01:01.400 -->
00:01:02.020Yeah.
00:01:02.020 -->
00:01:08.540That's a cool hat. Well, I honestly, I want to start by saying one, thanks to you. Two,
00:01:08.540 -->
00:01:13.640thanks to the thousands and thousands of people who listen every week. Make this possible,
00:01:13.640 -->
00:01:15.400honestly. And I really, really appreciate it.
00:01:15.640 -->
00:01:21.080Yeah. Thanks to you too. Whatever year it was when we started, you reached out to me and said,
00:01:21.080 -->
00:01:25.480hey, well, do you feel like doing a podcast together? And I really wouldn't have thought
00:01:25.480 -->
00:01:27.840we would have been at 400 episodes. It's pretty cool.
00:01:27.840 -->
00:01:32.600I know. It's incredible. And I thought, well, we don't have really any guests or a lot of like,
00:01:32.600 -->
00:01:38.500you know, forum stuff. So let's celebrate this. I asked ChatGPT to say, I said, look,
00:01:38.500 -->
00:01:43.120there's this big milestone. Could you just give us a quick celebration sort of thing? And I think
00:01:43.120 -->
00:01:46.140there's a few things that are notable before I read this off. It's pretty short.
00:01:46.440 -->
00:01:51.100Okay. But I think it's notable that it knows about you, knows about me, knows about the show,
00:01:51.100 -->
00:01:55.600knows about what the show is about and the topics we've covered. So anyway, here we go. This is
00:01:55.600 -->
00:02:02.900ChatGPT celebrates episode 400 of Python Bytes. Welcome to the big 400 Pythonistas. It's hard to
00:02:02.900 -->
00:02:07.360believe we're celebrating the 400th episode of Python Bytes. From the early days of byte-sized
00:02:07.360 -->
00:02:11.840Python news to becoming the source of all things Python, it's been a wild ride. We've laughed over the
00:02:11.840 -->
00:02:16.420quirks, gasped at new libraries and said farewell to the GIL together. Whether you're
00:02:16.420 -->
00:02:20.680a seasoned developer, a curious learner, or just here for the witty banter, you've been an essential
00:02:20.680 -->
00:02:26.820part of this journey. To Michael and Brian, you've built a community that turns import this in more
00:02:26.820 -->
00:02:32.540than just Zen. It's a family of passionate Pythonistas. Your dedication, insight, and humor makes this show
00:02:32.540 -->
00:02:37.360more than just tech news. It's a weekly celebration of what we love about Python and why we keep coming
00:02:37.360 -->
00:02:43.340back for more. Here's to the next 400 episodes. May your code be bug-free, your test pass on the first
00:02:43.340 -->
00:02:47.520run, and your Python version. Always be up to date. Rocket snake emoji.
00:02:47.520 -->
00:02:49.120That's pretty good, isn't it? Actually.
00:02:49.120 -->
00:02:53.100Yeah, yeah. I'm touched. ChatGPT, I didn't know you loved me that much.
00:02:53.100 -->
00:02:54.500I know. Thank you, ChatGPT.
00:02:54.500 -->
00:02:56.060And Michael, that's just touching.
00:02:56.060 -->
00:02:58.160It is.
00:02:58.160 -->
00:03:01.000It's pretty cool, actually. I like that. Turn your,
00:03:01.000 -->
00:03:03.740turns import this into more than just Zen.
00:03:04.040 -->
00:03:09.080Indeed. I see some thank you out in the audience, and thank you, all you guys out there.
00:03:09.080 -->
00:03:12.880With that, shall we talk about whatever you want to talk about first?
00:03:12.880 -->
00:03:13.720Sure.
00:03:13.720 -->
00:03:16.720As we've done 399 other times, apparently.
00:03:16.720 -->
00:03:23.900Yeah. Let's talk about Python, specifically Python 3.13. It's just right around the corner.
00:03:24.560 -->
00:03:32.820The official release is scheduled for the 3.13.0. It's supposed to come out on October 1st. That's
00:03:32.820 -->
00:03:39.300just right around the corner. That's hard to believe. So 3.13.0 candidate release, or RC2,
00:03:39.300 -->
00:03:48.340is out. So that was released September 6th, a few days ago. And I'm linking to a, oh, I didn't link
00:03:48.340 -->
00:03:54.640to the right thing. But there is, oh, well, I'll just talk about it here. Anyway, it comes out October
00:03:54.640 -->
00:04:02.4001st. Lucas Lenga, which we will link to his post, has a post to talk about it as well. Also talks about
00:04:02.400 -->
00:04:12.620a few other releases. There's security releases for 3.12, 3.11, 3.10, 3.9, and 3.8. That's a lot
00:04:12.620 -->
00:04:17.120of releases. And an interesting thing about the older releases, I'll cover those first,
00:04:17.460 -->
00:04:28.320is that 3.12 has a Mac release. It has binary releases. And the Mac release is only for 10.13
00:04:28.320 -->
00:04:34.300or newer. If you've kept up to date fairly recently, it should be fine. Because I looked at mine and it
00:04:34.300 -->
00:04:44.000was way past that. But there are limits to the macOS binary version. And all the others, like 3.11
00:04:44.000 -->
00:04:49.7403.11 through 3.8, they don't have binary distributions built, which is interesting.
00:04:49.740 -->
00:04:56.940But anyway, so what we're really excited about is 3.13. Of course, it's coming out right around the
00:04:56.940 -->
00:05:03.800corner. There's a call to action here that is a strong encouragement for third-party Python projects
00:05:03.800 -->
00:05:09.260and maintainers of third-party projects to prepare your projects. Because people will be upgrading in
00:05:09.260 -->
00:05:14.660October because all the last upgrades have been so easy, people are going to upgrade. So make sure your
00:05:14.660 -->
00:05:20.560your projects are ready. Go ahead and start testing on them. And if there's any issues,
00:05:20.560 -->
00:05:29.060submit to the bug tracker. And then also, please keep in mind that the RC2 is a preview release.
00:05:29.300 -->
00:05:34.820So it's close to the final release, but it's not recommended for production environments. So yes,
00:05:34.820 -->
00:05:39.360test with it. Don't run in production yet. So that's cool. The one thing that I thought was
00:05:39.360 -->
00:05:48.060interesting. So I've kind of migrated. We talked about this recently is upgrading your local Python
00:05:48.060 -->
00:05:54.280Python with uv Python. You can't use that for 3.13. So you still have to use python.org or some
00:05:54.280 -->
00:05:58.840other mechanism to install 3.13. You can't do that through uv Python yet.
00:05:58.840 -->
00:06:03.660Yet. Yeah. Actually, one of my items touches on that. So we'll talk about that shortly.
00:06:03.660 -->
00:06:08.760Okay. So yeah. Yay. I'm excited. Yay. Henry's running around in the audience says,
00:06:08.760 -->
00:06:16.500we're also going to have to change building wheels with 3.12 to be 10.13 plus and see how build
00:06:16.500 -->
00:06:20.660wheels. Interesting. You know, you think about the cascading effects of all these requirements,
00:06:20.660 -->
00:06:25.800you know, and 10.13 being the macOS version. Yeah. Was that, was that when they split and
00:06:25.800 -->
00:06:33.220didn't like the Intel versus whatever the other thing is, or. I think it may have been, but the
00:06:33.220 -->
00:06:37.580current version does support the Intel ones. I'm pretty sure it's just, well, as of today,
00:06:37.580 -->
00:06:44.380they're supposed to announce a lot of that Apple's, Apple intelligence, their AI. Oh boy. So that I
00:06:44.380 -->
00:06:48.080believe is going to be one of the hard splits as well as like that stuff. I don't think it's going
00:06:48.080 -->
00:06:52.740to work on Intel, but we'll see what they say. Okay. I think that's literally going on right now.
00:06:52.740 -->
00:06:57.700As we speak the Apple keynote thing, which is a weird one hour ad that people look forward to.
00:06:57.700 -->
00:07:03.540Okay. Such is the world we live in. All right. Let's carry on with a pretty sweet transition
00:07:03.540 -->
00:07:10.600from uv to talking more uv here. So I wrote up, you know, we've been talking about uv recently and I
00:07:10.600 -->
00:07:15.460couple of different, there's a kind of a little mini extra, extra, extra all around one topic. So
00:07:15.460 -->
00:07:22.640I wrote up an article about how I'm using the uv Python thing that you just mentioned, Brian,
00:07:22.640 -->
00:07:29.680using that to basically dramatically improve how we build Docker images. One of which runs or
00:07:29.680 -->
00:07:35.500several of which I guess run Python bytes, Python bytes set of M gives you the RSS feed, the files,
00:07:35.500 -->
00:07:40.140all that kind of stuff. Right. Yeah. So people can check that out, but the short and long of it is
00:07:40.140 -->
00:07:44.540if you get down to the bottom one, it comes with an example, a little flask app, multi, multi-tier,
00:07:44.540 -->
00:07:51.080well, multi-image, not multi-tier flask app that shows how to go from basic Ubuntu image to having
00:07:51.080 -->
00:07:56.420whatever version of Python you want with the virtual environment set up on it, including setting up
00:07:56.420 -->
00:08:02.460your dependencies and a web server and all of that in seven seconds from nothing like a dash,
00:08:02.460 -->
00:08:07.040dash, no cash style, a build. And that gives you a base image. You can just kind of keep chilling.
00:08:07.040 -->
00:08:11.500And then if you depend, you take an app and you build it on top of that, like a flask app or some
00:08:11.500 -->
00:08:17.380other kind of Python app, I got it building around seven to eight, 700 to 800 milliseconds. So less than
00:08:17.380 -->
00:08:25.780a second, which is awesome. Hey, so, you know, we talked about this back on 396 and 398. And we've been
00:08:25.780 -->
00:08:31.480kind of hitting a lot, but I just recently had Charlie Marsh from astral on, and we talked about
00:08:31.480 -->
00:08:38.760this and I asked him things like, so I see you don't have the, it didn't have the latest 312 for
00:08:38.760 -->
00:08:46.240a couple of days. And, I noticed that you don't have a 313 and basically his thinking. I,
00:08:46.240 -->
00:08:53.840if I remember it correctly is more or less, we plan on supporting a version before it becomes final,
00:08:53.880 -->
00:08:59.740before it becomes stable and gets released. So by the time 313 gold, gold master, right?
00:08:59.740 -->
00:09:05.440Whatever it comes after the official 313 zero release, I guess comes out. It should be available
00:09:05.440 -->
00:09:07.880in uv, but I'm not sure how much before then.
00:09:07.880 -->
00:09:13.840Yeah. Well, and we also heard from, so Henry Schreiner says 313 just got merged in, in the same
00:09:13.840 -->
00:09:20.100place, which is, which is that Python built standalone. Also the 313 T is now in a PR.
00:09:20.100 -->
00:09:25.580So it, Oh, interesting. We should free threaded version. Yeah. So hopefully, yeah, I think,
00:09:25.580 -->
00:09:31.060and that was my final thing to point out is if people are like, well, okay, when I say uv Python
00:09:31.060 -->
00:09:37.200or what I actually, I don't say uv Python necessarily. What I do is I create a virtual environment with UV
00:09:37.200 -->
00:09:42.080and I just, I want it. I tell it, I wanted this version of Python. Oh, okay. Right. And it goes,
00:09:42.080 -->
00:09:46.000Oh, you want that version of Python? Either we've already cached it or if we don't, we'll just download
00:09:46.000 -->
00:09:52.660it from Python build standalone and then put it there for you. So if your common working artifact
00:09:52.660 -->
00:09:56.660is a virtual environment, then you don't have to necessarily have, it doesn't even matter if you
00:09:56.660 -->
00:10:00.940have system Python, like literally you could not have Python on your machine and this would still
00:10:00.940 -->
00:10:06.260get you a virtual environment with the right version of Python that you ask. But the source of all this
00:10:06.260 -->
00:10:13.400also, I learned about this from talking to Charlie last week is, Python build standalone. If you look
00:10:13.400 -->
00:10:21.560at the releases and like, let's see, for example, on the latest release, there's 773 different builds.
00:10:21.560 -->
00:10:27.860There's something. Wow. Look at that. So you can see here, there's cPython 3, 10, 14 with something
00:10:27.860 -->
00:10:35.060on x86, 64, four PCs on windows with this thing. You know, there's just so many variations. So basically
00:10:35.060 -->
00:10:40.200when you say uv create me a virtual environment with this Python, it's going to go on through those 773,
00:10:40.200 -->
00:10:44.360find the one that's the right bit and just download it and put it there if it's not already cached.
00:10:44.360 -->
00:10:50.040So anyway, that's the whole story. Okay. Okay. So that thing has that, that one thing has,
00:10:50.040 -->
00:10:55.400has a, 3, 13. It just hasn't been released yet then. So, or I guess we're waiting on that release.
00:10:55.400 -->
00:11:00.920Yeah. So, so thank you, Henry. That, that, gives us some more information. I imagine that it's really
00:11:00.920 -->
00:11:07.000down to just what Python build standalone is doing. And then uv just give me the list of options and,
00:11:07.000 -->
00:11:10.440and let me find things that, you know, match this operating system. Something like that.
00:11:10.440 -->
00:11:15.000Well, it sounds like both of us went down the same rabbit hole, but it is kind of neat to find out
00:11:15.000 -->
00:11:20.120where the source of this is so that I know that wasn't that hidden, but it did take a little bit of
00:11:20.120 -->
00:11:23.160looking to figure out. Yeah. Well, they could have been building
00:11:23.160 -->
00:11:27.160it themselves. You don't know right now. Like you don't know what setting it. There's all sorts of stuff
00:11:27.160 -->
00:11:32.840that's interesting. And there's also, I recall correctly, Charlie said there are different
00:11:32.840 -->
00:11:38.920build optimization settings for Python build standalone, then say what you get off of python.org
00:11:38.920 -->
00:11:44.760or out of homebrew. It's, it's interesting. For example, like profile guided optimizations and things
00:11:44.760 -->
00:11:49.080like that. And I don't remember which had, which, which is better, but I feel like the build standalone
00:11:49.080 -->
00:11:54.520came out pretty strong there. Yeah. Before we move on, Brian, let me tell you real quick about
00:11:54.520 -->
00:12:01.080scout APM. They're big supporters of Python bytes. So we appreciate that very much. So if you are tired
00:12:01.080 -->
00:12:06.280of spending hours trying to find the root cause of issues impacting your performance, then you owe it
00:12:06.280 -->
00:12:12.440to yourself to check out scout APM. They're a leading Python application performance monitoring tool,
00:12:12.440 -->
00:12:19.400APM, that helps you identify and solve performance abnormalities faster and easier. Scout APM ties
00:12:19.400 -->
00:12:24.840bottlenecks such as memory leaks, slow database queries, background jobs, and the dreaded N+1 queries
00:12:24.840 -->
00:12:31.000that you can end up if you do lazy loading in your ORM. And then you say, oh no, why is it so slow?
00:12:31.000 -->
00:12:34.760Why are you doing 200 database queries for what should be one? So you can find out things like that.
00:12:34.760 -->
00:12:39.320And it links it back directly to source code. So you can spend less time in the debugger and
00:12:39.320 -->
00:12:43.640healing logs and just finding the problems and moving on. And you'll love it because it's built
00:12:43.640 -->
00:12:48.520for developers by developers. It makes it easy to get set up. Seriously, you can do it in less than
00:12:48.520 -->
00:12:54.520four minutes. So that's awesome. And the best part is the pricing is straightforward. You only pay for the
00:12:54.520 -->
00:13:01.640data that you use with no hidden overage fees or per seat pricing. And I just learned this, Brian. They also have,
00:13:02.200 -->
00:13:07.480they provide the pro version for free to all open source projects. So if you're an open source
00:13:07.480 -->
00:13:12.520maintainer and you want to have scout APM for that project, just shoot them a message or something on
00:13:12.520 -->
00:13:18.120their pricing page about that. So you can start your free trial and get instant insights today. Visit
00:13:18.760 -->
00:13:23.960fm.com/scout. The link is in your podcast player show notes as well. And please use that link. Don't
00:13:23.960 -->
00:13:29.080just search for them because otherwise they don't think you came from us and then they'd stop supporting
00:13:29.080 -->
00:13:34.280the show. So please use our link by them by set of him slash scout. Check them out. It really supports
00:13:34.280 -->
00:13:40.840the show. All right. Over to you. Cool. Cool. I wanted to talk about read the docs for a little bit. So
00:13:40.840 -->
00:13:44.920it just seems like, you know, read the docs been around forever, right?
00:13:44.920 -->
00:13:54.040Yeah. So, so there's an article by Eric culture, 10 years of sustainable open source. And it's a,
00:13:54.040 -->
00:14:01.960it's a little bit of some, some cool history here. so one, I, we totally rely on, read the docs,
00:14:01.960 -->
00:14:10.280um, and, and the, all the tools around it. So read the docs apparently started in a, with a 40 hour,
00:14:10.280 -->
00:14:18.12048 hour open source sprint in 2010, 48 hours. Wow. So two days, I guess, and it grew to become a
00:14:18.120 -->
00:14:24.840successful part of the Python, Python ecosystem and other, open source projects. And, yeah,
00:14:24.840 -->
00:14:30.760obviously it's just been around 2010. but I guess that's, that's about the time that I really started,
00:14:30.760 -->
00:14:35.480uh, jumping in and being part of the Python community and not just part of just a user of
00:14:35.480 -->
00:14:40.680Python, but, but part of the community. So, so that's why it looks like, it seems like it's
00:14:40.680 -->
00:14:47.880been there forever for me. and in 2014 they created read. So read the docs.org is the open source
00:14:47.880 -->
00:14:56.200thing. Read the docs.com, com was the, is in 2014 and there's links to the announcements from
00:14:56.200 -->
00:15:01.8802010 for announcing read the docs and the announcement for, read, read the docs for
00:15:01.880 -->
00:15:10.760business, the.com. So this is kind of an interesting story about how to make a, a, a service that, that helps,
00:15:10.760 -->
00:15:15.480open source communities all over the place, and how to make that sustainable. So they're still
00:15:15.480 -->
00:15:22.200sustainable, which is cool. So what is the sustainability model? How do they do that? Because there's, there's four full-time
00:15:22.200 -->
00:15:28.280people working on this, which is not that big. I mean, four people, there's probably a lot of, volunteer
00:15:28.280 -->
00:15:35.560volunteers on the open source site also. but for full-time people, that's pretty cool. Anyway, there's, the.org
00:15:35.560 -->
00:15:44.040side has, single non-tracking ads. And I think they were one of the first that I was aware of that did, did like a single,
00:15:44.040 -->
00:15:50.040just like ethic ad ethical ads or something that just had ads, but it wasn't tracking you at all,
00:15:50.040 -->
00:15:55.800which is how ads should be, I think. and I, I'm totally okay with that to help them sustain their
00:15:55.800 -->
00:16:01.720model. And then the.com is a paid service that helps companies for private repos and additional,
00:16:01.720 -->
00:16:08.040they have other benefits also, but sort of read the docs for companies. and then it also talks about
00:16:08.040 -->
00:16:12.520things that didn't work, which I love this. I love the discussing the parts that didn't work.
00:16:12.520 -->
00:16:18.760I like, have you tried this? one of the things was, just trying on trying, donations and
00:16:18.760 -->
00:16:24.280other optional support, and it just didn't work at all. That left people with, mental health issues
00:16:24.280 -->
00:16:30.600and burnout. This is, that's terrible. the other thing was, consulting services where you
00:16:30.600 -->
00:16:35.880think about that, like maybe offer services for people that to pay, but, the bad downside of
00:16:35.880 -->
00:16:41.160that was it took away from, time that they wanted to work on the main project. they
00:16:41.160 -->
00:16:45.880experimented with grant funding and that was cool. Cause they got some, like a blob of money at a time,
00:16:45.880 -->
00:16:51.320but it's a one-time thing and it's not that easy to keep going and getting more grants. So the current
00:16:51.320 -->
00:16:57.720model is the paid service plus the advertising. And, that's cool. they talk about some lessons
00:16:57.720 -->
00:17:02.280learned, which is neat. basically, you don't get extra points for being bootstrapped.
00:17:02.280 -->
00:17:08.200people will compare you to VC funded companies anyway, which is it's, it's cool that they call it
00:17:08.200 -->
00:17:13.880out because that's obvious, but also sometimes not obvious. even if you're community driven,
00:17:13.880 -->
00:17:19.640bootstrapped, you don't get any points for that. We, we still expect you to be perfect. the other
00:17:19.640 -->
00:17:25.960thing was, that keeping trust in the community was the most important thing. and, yeah,
00:17:25.960 -->
00:17:32.280it, they said it's cliche, but trust is hard to earn and easy to lose. definitely. and they,
00:17:32.280 -->
00:17:38.760they can't, can't maximize profits. unless you keep trusting the, with the community, which,
00:17:38.760 -->
00:17:44.040definitely, support that. the one part that I thought was one of the reasons why I
00:17:44.040 -->
00:17:50.360highlighted this is because this is a lesson I think that can go, not just for people trying to sustain a,
00:17:50.360 -->
00:17:55.560uh, funding model, but just, lots of open source projects can, can listen to this.
00:17:55.560 -->
00:18:00.600And the lesson is contribution is easier in less complex parts of the code base.
00:18:00.600 -->
00:18:05.480So they've noticed that they've got, they've got their core stuff, the read the docs.org repo,
00:18:05.480 -->
00:18:11.320uh, the core stuff that is got some complex stuff in it and it's hard to get people to help out,
00:18:11.320 -->
00:18:17.880but there's other things like contributions to this Sphinx theme or extensions or small Python or
00:18:17.880 -->
00:18:23.800JavaScript projects that are work alongside of it that are easier to get people to contribute to.
00:18:23.800 -->
00:18:29.720Cause they're, they're smaller, less, I guess, less complicated bits of code. I think a lot of
00:18:29.720 -->
00:18:35.720open source projects probably could do something like that of separating out whether the code is and say,
00:18:35.720 -->
00:18:40.200if you'd like to contribute, maybe don't touch this part. Cause it's kind of hairy and you might,
00:18:40.200 -->
00:18:45.400it takes a while to get into, you can, but it's going to be difficult. and,
00:18:45.400 -->
00:18:51.480I've noticed that with lots of projects. So anyway, congratulations to all of them for 10 years.
00:18:51.480 -->
00:18:57.080That's awesome. And, and then I was reading something and I found, I learned something is that
00:18:57.080 -->
00:19:03.800there's, there's, I kind of associate read the docs with Sphinx only, but that's not true. there is
00:19:03.800 -->
00:19:09.560now, there was a, effort to separate some of the customization and they have a different build process
00:19:09.560 -->
00:19:15.560going on now and you can, the Sphinx or the read the docs build system now supports any
00:19:15.560 -->
00:19:20.920documentation tool or it should, which I didn't know about. So that's, yeah, that's cool.
00:19:20.920 -->
00:19:26.760Almost like a general static site platform. Probably. Yeah. Yeah. Anyway. Yeah. Congratulations.
00:19:26.760 -->
00:19:32.200It's a pretty important section of the Python community and also got some cool Python,
00:19:32.200 -->
00:19:38.360some Portland ties as well, which is cool. Yeah. Yeah. Really helps humanize the Python space.
00:19:38.360 -->
00:19:45.320Wouldn't you say Brian? Yeah. Which is what I want to talk about next. This project by Hugo. I know you've
00:19:45.320 -->
00:19:51.080pointed this out before Brian, I believe I can actually get to him. There we go. Hugo van Kenamande,
00:19:51.080 -->
00:19:59.480CPython core developer and mini, mini project maintainer. One of projects is humanize. And I recently,
00:19:59.480 -->
00:20:05.720when I've written this codes for in ice and, you know, small scale before, because I kind of needed it.
00:20:05.720 -->
00:20:11.880And if I knew about this, I just wouldn't, but also I recently just started using it and it's super
00:20:11.880 -->
00:20:16.920simple, super easy to adopt. You see examples of it right here on the GitHub screen. If you visit their
00:20:16.920 -->
00:20:22.600GitHub repo, right. And see where it says seven months ago, last week, last year, that kind of stuff,
00:20:22.600 -->
00:20:27.880instead of just putting a date. Yeah. It's that kind of stuff that humanize does, but for different
00:20:27.880 -->
00:20:33.000things. So if I go over to, I love all these ties from falling on from you, from read the docs. If I go over to
00:20:33.000 -->
00:20:39.560read the docs for them and I wait apparently and it comes up. Okay. So then they basically have four
00:20:39.560 -->
00:20:44.120areas that are relevant. It works in different languages, many, many different languages, which
00:20:44.120 -->
00:20:49.320is cool. It mostly works in numbers, but as I pointed out, it also works on time. So if we look at time,
00:20:49.320 -->
00:20:56.760it has a natural date. Some of these don't have great examples. For example, the time and file size could
00:20:56.760 -->
00:21:04.040have really nice dates. So the one I mentioned with the GitHub is natural delta. It would say things like
00:21:04.040 -->
00:21:12.120a year ago or two years ago, or in 13 seconds, stuff like that. It has a similar natural time
00:21:12.120 -->
00:21:18.200and precise deltas. If you want those kinds of things also as for file size. So it'll say things like 300
00:21:18.200 -->
00:21:25.800bytes, 3.0 megabytes, 2.9 kilobytes or whatever. Right. So you can just give it a number and tell
00:21:25.800 -->
00:21:30.920it, you know, here's how many bytes it is. Make this friendly and it'll kind of figure out the right
00:21:30.920 -->
00:21:36.360scales, a megabyte, kilobyte. You don't want 0.000 megabytes. You just want, you know,
00:21:36.360 -->
00:21:42.680switch that to kilobytes or bytes. Right. So file size is cool. But the one that has tons of stuff going on
00:21:42.680 -->
00:21:49.160is number. So you can have an associated press style number. I guess this must be the way they're
00:21:49.160 -->
00:21:54.600a convention when you're writing articles on how to speak about numbers. So if it's a small number, use
00:21:54.600 -->
00:22:02.920written out words like F I V E for five. But if it's, you know, one zero zero one two one seven, you don't
00:22:02.920 -->
00:22:08.040you don't write that out as a huge long thing. You just put the straight number. Right. So I think the cutoff is
00:22:08.040 -->
00:22:13.72010, which is pretty cool. It has clamp. And so you can talk about percentiles. For example,
00:22:13.720 -->
00:22:20.680if you say a really, really small number and you say the floor is 0.01%, it'll, or just that number
00:22:20.680 -->
00:22:27.400as a ratio, it'll say the number that you have for this, the value is less than 0.01. Oh, nice. Or you
00:22:27.400 -->
00:22:32.920can do it as a percent here. And then you can say this one, this particular value is greater than 99%, or it's
00:22:32.920 -->
00:22:38.600in the top 10%, or you can just say like under 1 million, which is pretty awesome. Right?
00:22:38.600 -->
00:22:43.240Yeah. Yeah. So what else have we got here? Fractional. So this just takes, you know,
00:22:43.240 -->
00:22:47.240floating point numbers and puts them into fractions like one and three tenths or one and a third or
00:22:47.240 -->
00:22:52.920something like that into comma, this one I would just do with formatting, but you can have it put commas
00:22:52.920 -->
00:23:00.520in for separators into word. This one is really nice. So if I have one with seven zeros, it'll say 1.0 million.
00:23:00.520 -->
00:23:07.480Or if you put in 1.2 billion, but as like integers, it'll just say 1.2 billion or all kinds of things.
00:23:07.480 -->
00:23:14.040You give it precisions, et cetera. Nice. Right? It's very cool. I like that the scientific stuff.
00:23:14.040 -->
00:23:21.640The scientific is good. The metric is really nice. If you give it a base measurement, like Watts or
00:23:21.640 -->
00:23:27.640grams or something, and then you say, give me this number in that unit system. So for example,
00:23:27.640 -->
00:23:34.600if you save 1500 in terms of volts, it'll give you 1.5 kilovolts. That's pretty fancy. Yeah. Or
00:23:34.600 -->
00:23:39.720Watts and you give it some huge number or say this many megawatts or really, really small one micro.
00:23:39.720 -->
00:23:43.640I don't know what F is in metric because to me that's Fahrenheit. So whatever.
00:23:43.640 -->
00:23:44.600Yeah.
00:23:44.600 -->
00:23:50.440And the micro stuff is cool. Cause I always have to hunt it down. I have no idea how to type a micro symbol.
00:23:50.600 -->
00:23:59.400Yeah. So click to the scientific one or the 10 to the powers are pretty cool. The 10 to the minus one
00:23:59.400 -->
00:24:05.800with a little superscript. That's neat. Yeah. Yeah. Instead of having 10 E three, it actually has 10
00:24:05.800 -->
00:24:12.040superscript three. So a thousand is one times 10 to the three with actual three. Like you would write it,
00:24:12.040 -->
00:24:16.520not the way computers have to write it. So yeah, it's really nice. Anyway, it's just, if you need this kind
00:24:16.520 -->
00:24:22.280of stuff really easy to adopt and understand, if not, then you know, it's still interesting. However,
00:24:22.280 -->
00:24:26.520if someone is out there looking to contribute to this project, I would say more examples.
00:24:26.520 -->
00:24:32.200The numbers have awesome examples and all the other ones are kind of, you may or may not even know what
00:24:32.200 -->
00:24:36.600it's going to do. So, Hey, put together some examples as a PR and ship them over to you guys.
00:24:36.600 -->
00:24:37.560That'd be cool.
00:24:37.560 -->
00:24:41.400And you know, documentation contributions are usually very welcome.
00:24:41.400 -->
00:24:44.440So, so yes, indeed. All right. Extras, Brian.
00:24:44.440 -->
00:24:50.760I just have one extra. I wanted to shout out. So I talked about that. I thought test podcast is going
00:24:50.760 -->
00:24:57.080to go back to testing code, even though. So it is. So I finally finished that migration and actually put
00:24:57.080 -->
00:25:05.000out an episode. So 222 is the 222 is the second episode of a two part series that started in June.
00:25:06.120 -->
00:25:06.520Sorry.
00:25:06.520 -->
00:25:13.880Serious cliffhanger, serious cliffhanger. So, yeah, this, so that's there. And then I got
00:25:13.880 -->
00:25:18.280a question. I sent out an email and said, Hey, finally have another episode out. And somebody said,
00:25:18.280 -->
00:25:23.640you should do transcripts. And, I guess I hadn't announced that, but transcripts are there.
00:25:23.640 -->
00:25:29.240I've had transcripts in the last, I don't know, like the last 30 episodes or something. So,
00:25:29.240 -->
00:25:34.600transcripts are AI generated. So they're not perfect. Like this is great. I gotta find one of these,
00:25:34.600 -->
00:25:41.800uh, DB dot PI. That's fine. But there's like some, some dot pies that show up as dot PI and some dot
00:25:41.800 -->
00:25:50.200E I E is some, dot DB, like actually spelling out the DOT. This is terrible. Oh, API dot P I E.
00:25:50.200 -->
00:25:55.800This is hilarious. So, I could go through and try to fix this stuff. but I'm going to probably
00:25:55.800 -->
00:26:01.320try to hire my kid to go do it for me. but anyway, so they're there. That's all I wanted to say is
00:26:01.320 -->
00:26:07.560it's in it. I'm not doing this weekly. I actually talked to, to a friend of mine, Michael
00:26:07.560 -->
00:26:13.720Kennedy. and he said, he said, it'd be kind of cool to, to do seasons. And so I'm kicking
00:26:13.720 -->
00:26:17.720around the idea of doing seasons. Yeah. Well, themes. I like it. I think it'd be great. Yeah.
00:26:17.720 -->
00:26:23.480Anyway, that's just my extra. Awesome. I have a couple of quick, code in the castle event is
00:26:23.480 -->
00:26:28.360almost over and it's almost, booked and happening. So if you want to be part of it,
00:26:28.360 -->
00:26:33.640I'll put a link in there, please. last kind of last call. So check that out. Yeah, I know.
00:26:33.640 -->
00:26:40.200All right. We got some interesting email. That's it. I think I covered the Anaconda code plugin for
00:26:40.200 -->
00:26:46.040Excel, how it runs locally. It runs on PI script, all these good things. Cause you other features. Well,
00:26:46.040 -->
00:26:51.240um, look who sent this in. I want to make sure I give some credits. This was by
00:26:51.240 -->
00:26:59.000rude Vanderham. Thank you for sending this in the sub project created. And basically when you have these
00:26:59.000 -->
00:27:05.320Excel, Python bits of code, you have to write all the code in one function and things like that. And
00:27:05.320 -->
00:27:10.840there's other limitations as well. So basically he made it so you can have a lot more,
00:27:11.480 -->
00:27:16.840or formatting variability, I suppose. And then you just have this bit of code that will just run a
00:27:16.840 -->
00:27:21.800whole set of different bits of code that you can have into your workbook, which is kind of interesting.
00:27:21.800 -->
00:27:27.880So as a follow to that, people are interested, they can check that out and just a quick out shout out to
00:27:27.880 -->
00:27:34.920iStats menu. Do you iStats menu, Brian, for your Mac? No, if you want a real time stats for what your Mac is
00:27:34.920 -->
00:27:40.280up to as they just released a new version looks super cool. I'm just starting to play with it. So obvious
00:27:40.280 -->
00:27:45.480things like CPU and stuff. But if you hover over them, it'll give you tons of detail. Like macOS
00:27:45.480 -->
00:27:50.440is kind of hard to get a lot of these pieces of information, but it'll have uptime. It'll have
00:27:50.440 -->
00:27:55.640like how much power your CPU is pulling out of, or your computer's pulling out of the wall, which is
00:27:55.640 -->
00:28:00.120kind of interesting as a, you know, how hard is it working? Like how many Watts is it pulling? And so
00:28:00.120 -->
00:28:09.640anyway, that's cool. That's cool. Yeah. People can check it out. It's pretty nice. Nice. Yeah. That's it. And you want to close it out with a joke.
00:28:09.640 -->
00:28:15.320Aren't big episode 400? Definitely. All right. This is sort of in the theme of I'm learning
00:28:15.320 -->
00:28:21.320new programming languages, right? Mostly as beginners says, comes from dev humor says, beginner programmers,
00:28:21.320 -->
00:28:25.880when they learn a new programming language, just a shock. Is this Morty? I don't know. I think so.
00:28:25.880 -->
00:28:28.760Anyway. Well, that just sounds like Python with extra steps.
00:28:28.760 -->
00:28:38.680Yeah. Yeah, exactly. Exactly. That's cool. But why all the stuff there? Anyway, thanks for episode
00:28:38.680 -->
00:28:43.560400. Thank you everyone for listening. Thank you, Scott APM for supporting the show. Check them out as well.
00:28:43.560 -->
00:28:45.400Thank you. Yep. See you, Brian. Bye.