Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #408: python-preference only-managed 3.13t

Return to episode page view on github
Recorded on Monday, Nov 4, 2024.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 408, recorded Monday, November 4th, 2024.

00:10 I'm Michael Kennedy.

00:11 And I'm Brian Okken.

00:12 And this episode is brought to you by Scout APM.

00:16 You can get Python and Django application performance monitoring and Codeium, a free AI code completion and chat tool.

00:23 That's pretty awesome.

00:24 So be sure to check them out.

00:25 We'll tell you more about both of them later.

00:27 Links are in the show notes.

00:28 You can connect with us on the socials.

00:31 Best place probably is Fostadon or Mastodon.

00:33 Sometimes people confuse this like, oh, you have to be on Fostadon.

00:36 Like, no, anywhere in Mastodon, anywhere in that social network is totally fine.

00:39 Doesn't matter where you are.

00:40 We'd be happy to chat with you there.

00:42 You can sometimes find us on X, sometimes on LinkedIn, but, you know, Mastodon maybe.

00:47 Watch the show live at pythonbytes.fm/live.

00:50 Be part of the audience.

00:51 Usually, Brian, usually at 10 a.m. on Mondays Pacific time, but not today, a little earlier.

00:57 Finally, if you want a artisanal, handcrafted digest of everything that we talked about written by hand for you by Brian Okken, just join our newsletter list.

01:07 Go to By The On By Side FM.

01:09 Click on newsletter.

01:10 We won't share your stuff.

01:11 Just for us to talk with you.

01:13 And with that, Brian, I believe we are ready to kick it off.

01:17 It's both earlier and slightly less early than you expected.

01:20 Yes.

01:21 Right?

01:22 It's 7.30 for our time in the morning.

01:24 But actually, that's, is that 8.30?

01:26 I don't know.

01:27 Like, time is weird.

01:27 It's been warped.

01:29 Yeah.

01:30 Time's on hold right now until the end of tomorrow.

01:32 But we'll see.

01:33 No, but time change.

01:35 But not, we're not going to talk about time change.

01:37 We're going to talk about GitHub Action Security.

01:40 So I ran across, let's pop this up.

01:44 I ran across Ned Batchelder's GitHub Action Security, Zizmor, Z-I-Z-M-O-R.

01:51 So it's not Ned's tool, but he came across it.

01:54 So we'll talk a little bit about what it does.

01:57 So it is, I'm going to pop over.

02:00 It is, Zizmor is, says it's a tool for finding security issues with GitHub Action setups.

02:08 So what are we talking about here?

02:11 Really, there's, get action workflows are something that I don't actually look at very often.

02:17 I update when I think I need to, but I haven't done a security audit of them.

02:20 So I think it's a decent idea to think about that.

02:23 And this article from Ned says he went through a lot of projects and did find some issues.

02:31 So I think he said he found some issues.

02:34 But he has, I mean, Ned supports a lot of projects.

02:38 So there was a bit of work.

02:40 So in his article, he also includes a script that he wrote to go through all of his repositories and to audits on them for their GitHub workflows.

02:51 So what do you do?

02:52 So this Zizmor tool, it's not a pip install.

02:57 It is something you can do cargo install or brew install, I think.

03:01 Yeah.

03:02 Or you can get it from source.

03:04 But hopefully one of those will work for you to install it.

03:08 And then you just point it at your YAML, your workflow YAML file so that it does an evaluation.

03:15 And then it does, it's looking, it's, this is still sort of in, I think they said that it was in alpha or, it says it's beta.

03:25 So it's in beta.

03:26 So it's in beta.

03:26 They're still working on it.

03:27 But there's, there's some things that they're looking for, like, like abandoned projects and things like that.

03:34 So I think this is a kind of a cool thing.

03:37 I don't really pay too much attention to, I sort of, I have to admit, I copy, I find another project, a Python project that's doing something similar that I want to do.

03:46 And I kind of copy what they're doing in their, their GitHub action workflow.

03:49 So like something like this is pretty good.

03:52 There is an audit rules page, so you can see what kind of things it's looking for.

03:56 And there's not much here yet, but I think they'll add more.

04:00 So anyway, that's a new tool.

04:03 Yeah, it looks great.

04:04 Looks, looks very good.

04:04 I think we want to stick with GitHub here.

04:07 So I want to tell you about some pretty exciting news, but also not just exciting news, a pretty powerful look into the open source world.

04:17 So the headline here, I ran across this and got a few plus ones from listeners, including Pat Decker.

04:25 So thank you, Pat, for sending this in.

04:26 This is the Octoverse Report, a.k.a.

04:29 GitHub.

04:29 AI leads Python to the top language as the number of global developers surge.

04:35 So we previously said Python is the number one language according to Stack Overflow questions, right?

04:41 This is Python is the number of link.

04:43 This is the number one language as a usage on GitHub, which is, I would say, more meaningful.

04:49 Maybe.

04:50 I don't know.

04:51 What does it mean to be number one of a language?

04:54 Is that lines of code?

04:55 Is that numbers of repositories?

04:56 Is that numbers of users?

04:57 There's many metrics that could be used, right?

04:59 Yeah, I don't know.

05:00 Yeah, I don't know.

05:01 This article is, you know, when I first saw it, I thought, oh, this would just be like

05:05 a little headline or something.

05:05 This is a 25-minute read according to Pocket.

05:09 So this is a serious beast.

05:11 And so I want to jump over to Pocket.

05:13 And why am I using Pocket in an omnivore?

05:15 Well, hang in for the extras at the end.

05:18 So let's see a couple of things here.

05:22 So first of all, this is for GitHub.

05:24 We have 518 million total projects on GitHub.

05:28 Wow.

05:29 With 25% year-over-year growth.

05:31 That's pretty crazy.

05:33 Over a billion contributions to public and open source projects.

05:37 That's not private ones.

05:38 I think something like 75 or 80% of contributions are to private repos.

05:41 But of the public and open source ones, that's a lot.

05:44 That's a lot.

05:44 And Python overtakes JavaScript as the number one language, which is pretty interesting.

05:49 So I highlighted a couple of things here because there's just too much here for me to keep in my head.

05:53 A rapidly growing number of developers worldwide, especially in Africa, Latin America, and Asia.

05:58 This suggests AI isn't just helping more people learn to write code or build software faster.

06:03 It's also attracting and helping more people become developers.

06:07 First-time open source contributions continue to show wide-scale interest in AI projects.

06:11 Importantly, we aren't seeing signs that AI has hurt open source with low-quality contributions.

06:17 Again, what metric?

06:19 But interesting, right?

06:20 That is interesting.

06:21 Yeah.

06:21 And the headline, at least for us, is Python is now the most used language on GitHub as a global open source activity continues to extend beyond traditional software development.

06:30 I've long thought that that's the magic of Python is it's not just, wow, this is a cool front-end framework.

06:37 Or, wow, this is a cool server language.

06:40 That many people coming from other areas that are not traditional developers really dive into it, right?

06:45 Yeah.

06:45 So we saw Python emerge for the first time as the most used language.

06:48 The rise of Python usage correlates with large communities of people joining open source community from across the STEM world rather than traditional community of software developers, right?

06:57 No big surprise there.

06:58 They also talk about where people are, where their developers are in the world.

07:03 There's three places that notably stand out.

07:06 And again, what is the metric here?

07:08 I wish they were a little more clear.

07:09 If you look at their heat map thing, then that would be the United States, by far, closely behind, would be India and then China.

07:19 And then after that, it tails off fast.

07:20 But is that divided by, is that per capita, right?

07:23 Like just maybe there's more people in China than, or in India or America.

07:28 But if you look at this, they've got some cool projections into, I think this is, they have over time, but they also have projections into the future.

07:36 Kind of like Stack Overflow Trends did when they came out with their big article.

07:39 So that's pretty interesting.

07:40 And you can sort of see where your place lands.

07:43 I think there's a lot of interesting things here.

07:45 Yeah.

07:45 Projecting into the future.

07:47 They're projecting that India is going to take over the United States and the U.S. is going to fall to number two.

07:51 But also Indonesia jumps up three places.

07:54 All right.

07:55 A lot of interesting stuff there.

07:56 Let's jump over and grab a few more of them.

08:01 Oh, no.

08:01 Go away thing.

08:02 Thing is so hard to navigate.

08:03 It's so big.

08:04 Okay.

08:04 So there continues to be an increase in first-time contributors.

08:07 We saw 1.4 million new developers globally join the open source community.

08:12 And yeah.

08:13 Notably, we didn't see, again, this is one of their metrics.

08:16 That was actually they called out.

08:17 Notably, we did not see a rise in rejected pull requests.

08:20 So anyway, there is a bunch to see here.

08:22 I think one more I'd like to hit on is the rise of Jupyter Notebooks.

08:26 If you look at their graph of Jupyter Notebooks on GitHub, it is the most Silicon Valley hockey stick dream you've ever seen, right?

08:36 There's a little glitch.

08:37 So that is 2020.

08:38 I don't know what happened in 2020.

08:40 Nobody remembers that anyway.

08:41 But no, just kidding.

08:42 Maybe a little pandemic.

08:44 Other than the pandemic, like this thing is just blasting off.

08:48 So this is really interesting to see.

08:49 Yeah.

08:50 And AI is maybe following a similar thing just ever so slightly behind.

08:55 Anyway, this is a deep article that has lots of insights across many, many aspects.

08:59 So that's my big item of the week.

09:02 And I think people should check it out.

09:03 It's pretty interesting.

09:04 Yeah.

09:04 That's interesting.

09:05 Comment from Liz from the audience.

09:09 My brother is a front-end dev and started learning Python last week because he's feeling the need to become full stack.

09:15 Maybe job security stuff.

09:17 Some of the JavaScript people are learning Python also, maybe.

09:20 Yeah.

09:21 Thanks for sharing, Liz.

09:22 Awesome.

09:22 Let me tell you real quick about Scout APM.

09:25 They're big supporters of Python Bytes.

09:28 So we appreciate that very much.

09:29 So if you are tired of spending hours trying to find the root cause of issues impacting your performance,

09:35 then you owe it to yourself to check out Scout APM.

09:38 They're a leading Python application performance monitoring tool, APM, that helps you identify and solve performance abnormalities faster and easier.

09:47 Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs,

09:52 and the dreaded N plus one queries that you can end up if you do lazy loading in your ORM.

09:58 And then you say, oh, no, why is it so slow?

10:00 Why are you doing 200 database queries for what should be one?

10:03 So you can find out things like that.

10:04 And it links it back directly to source code so you can spend less time in the debugger and

10:08 healing logs and just finding the problems and moving on.

10:11 And you'll love it because it's built for developers by developers.

10:14 It makes it easy to get set up.

10:16 Seriously, you can do it in less than four minutes.

10:18 So that's awesome.

10:19 And the best part is the pricing is straightforward.

10:22 You only pay for the data that you use with no hidden overage fees or per seat pricing.

10:28 And I just learned this, Brian.

10:30 They also have it.

10:31 They provide the pro version for free to all open source projects.

10:35 So if you're an open source maintainer and you want to have Scout APM for that project,

10:39 just shoot them a message or something on their pricing page about that.

10:42 So you can start your free trial and get instant insights today.

10:46 Visit pythonbytes.fm/Scout.

10:49 The link is in your podcast player show notes as well.

10:51 And please use that link.

10:52 Don't just search for them because otherwise they don't think you came from us.

10:56 And then they'd stop supporting the show.

10:58 So please use our link, pythonbytes.fm/Scout.

11:00 Check them out.

11:01 It really supports the show.

11:03 Yeah, I want to talk about Python 313 again.

11:06 We talked about Python 313 quite a bit on the show so far.

11:10 And we even talked about 14 last week.

11:13 But there's an article that I ran across from Bytecode saying, Python 313, what didn't make the headlines?

11:21 And there's a few things I want to call out that I actually missed also.

11:24 So I'm glad that they wrote this up.

11:26 So we had a whole bunch of nice new additions to the REPL.

11:31 So like multi-line code block or multi-line code editing and some colors and stuff.

11:37 But a lot of those have trickled down to PDB now.

11:40 So I didn't really, possibly I didn't notice this too much because I usually debug within VS Code or PyCharm.

11:49 But sometimes I do use PDB.

11:52 I'm glad it's around.

11:54 It's a nice Python.

11:56 PDB is the Python debugger if you're unfamiliar.

11:58 But what did PDB get?

12:01 It got multi-line editing, which is just cool.

12:04 It got code completion just like the REPL.

12:07 What's some other things?

12:09 Break accepts dotted paths.

12:11 I really know what that means.

12:13 So you can easily add breakpoints to any lib dynamically.

12:16 Oh, that makes sense.

12:17 Is it maybe like dot, dot, slash this or dot, dot, you know, kind of the relative imports?

12:23 Yeah.

12:24 Probably.

12:24 Anyway, mostly the first two I'm really pretty excited about.

12:28 Code completion and multi-line editing within PDB.

12:30 That's a great, great addition.

12:32 So cool to have those go into PDB as well.

12:36 Some.

12:37 And yeah, what else do I want to highlight?

12:40 There's a few other things in here that I thought were pretty cool.

12:44 There's Pathlib had some, a lot of performance optimizations, which is great.

12:50 Because I love, I use Pathlib all the time now.

12:54 So if it's a little bit faster, great.

12:57 Awesome.

12:57 I like that.

12:59 And SHUTIL, SHUTIL.

13:01 Yeah.

13:01 Yeah.

13:02 Do you use SHUTIL much?

13:03 Yeah, a little bit.

13:04 Not a ton.

13:04 But when I want it, it's like very welcome.

13:06 Yeah.

13:07 The SHUTIL or SHUTIL.

13:11 I never know how to pronounce that.

13:12 It's probably SHUTIL.

13:15 Anyway.

13:15 Yeah.

13:16 What did we say about that?

13:19 The SHUTIL module providing high-level file system operations such as recursive delete and copy has seen tweaks.

13:27 Many, many bugs were fixed and options were added.

13:30 You can choose how to handle symlinks.

13:33 Oh, that's cool.

13:33 Ooh.

13:35 Yeah.

13:36 I'm going to have to check that out.

13:38 That's great.

13:40 And then one of the things about virtual environments, which I did not know.

13:44 Scroll to the end.

13:46 So I've been enjoying this with, I've been, when creating virtual environments with UV, VENV, it creates a little dot get ignore so that the entire thing gets, your virtual environment directory gets ignored.

13:58 But Python-MVENV does that now.

14:01 The built-in virtual environment tool.

14:03 Nice.

14:04 Adds that as well.

14:04 Speaking of that, though, this is kind of a tangent, but I just learned, I can't, I think I can't remember where I learned it from.

14:12 Somebody on Mastodon, I think it may have been Jeff Triplett, but I'm not sure, said that one of the things I've noticed when I use a virtual environment created by UV is that it doesn't install PIP.

14:25 So PIP's not there.

14:26 So you use UV pip instead.

14:28 But you can have it install PIP.

14:30 You could just, oh, what is it?

14:33 You add a flag.

14:34 Dash-seed, I believe it is.

14:36 Dash-seed.

14:37 That's it.

14:37 I'm glad I didn't write it down.

14:39 So if you miss pip from a UV virtual environment, add it with Dash-seed.

14:45 So anyway, cool.

14:47 I'm glad that this article, ooh, RE functions such as find all, split, search, and sub, can now be interpreted, which performs short, repeated matches, can now be interpreted by the user.

15:01 Interrupted.

15:02 Ah, interrupted by user.

15:03 I read that wrong.

15:05 So some of these could go off and do things that are evil and stop your code, and now you can control C it.

15:14 That's good.

15:15 So there's lots of great new things in Python 3.13.

15:18 I've just jumped in and started using it, and I think it just works great.

15:22 Wow, that's very cool.

15:23 Yeah, I switched these in it as well.

15:25 Anyway.

15:26 All right.

15:26 And Python bytes the websites running on it too, by the way.

15:28 Oh, nice.

15:29 Why wouldn't it?

15:31 Yeah.

15:31 All right.

15:32 Shall we talk conferences, Brian?

15:34 Sure.

15:34 Let's talk conferences.

15:36 So I saw you had an extra on this, but I had already pipped it for the main one.

15:40 See that for double meaning there?

15:41 Oh, it works.

15:42 So PyCon US 2025 is now officially announced in terms of specific details.

15:49 It's pretty cool.

15:50 I'm pretty excited.

15:51 It's back in Pittsburgh because it's year two of the two-year deal.

15:55 So if you went last year, same deal.

15:57 If you didn't, well, we had a lot of fun there, so you can check it out.

16:00 There's many interesting things.

16:02 The website doesn't make it incredibly clear.

16:05 Oh, yeah.

16:06 Here, if you scroll down far enough.

16:06 Perfect.

16:07 The breakdown.

16:07 So if you go down here to the breakdown, I think this is probably the first question people

16:11 have.

16:12 There's two questions I imagine many people would have straight up here.

16:15 First one is, when is it?

16:16 Because it has a huge span of eight days that the conference is, but it's not really those

16:21 dates, depending on what you want to do.

16:23 For example, tutorials are May 14 and 15, 2025, but the main conference is 16 to 18.

16:28 There's a good chance that you will find me at the main conference.

16:32 I plan on going unless something comes up with family commitments or something I can't make,

16:36 you know?

16:36 But the plan right now for me is to go to the main conference, and that's pretty much it.

16:41 But how about you?

16:41 You think you might go this year?

16:42 I have a hair appointment on that date.

16:44 Well, I understand.

16:46 Your hair is pretty amazing these days, so it does need a lot of attention.

16:48 It's pretty far out.

16:50 I'm not sure.

16:51 I'm still on the fence with this one.

16:54 Yep.

16:54 Okay.

16:55 So that's question number one.

16:56 When is it?

16:57 Question number two.

16:58 Call for proposals.

17:00 No, that's number three.

17:01 Number two is, do I have to wear a mask all day?

17:04 Are we going to wait until like a different time?

17:07 Are we going to like, hey, let's pretend the world isn't the way it is, but it is a different

17:11 way?

17:11 No.

17:12 In fact, that's exactly the policy that I hoped it would be, and I strongly encourage

17:17 it just like the policy is masks are strongly encouraged, but not required.

17:20 Please respect people who choose to wear a mask.

17:22 Great.

17:23 If you don't want to, you don't have to.

17:25 Yeah.

17:25 That's great.

17:26 That seems reasonable.

17:27 That seems congruent with the world right now.

17:29 I might go extreme and wear like a mask and flight goggles and a hat.

17:34 I was going to say, put on like some ski gear, put on some goggles and a helmet and snorkel.

17:38 No, this is, I, yeah, snorkel.

17:40 Well, just bring your, your Apple vision pro put on your snorkel.

17:43 Yeah.

17:44 That'd be funny to put like a, like a COVID mask on the top of the snorkel at the end.

17:49 Yeah.

17:51 No, this, this is really good.

17:53 So they're taking lots of precautions, you know, as you hand sanitizing stations.

17:59 Conferences are full of germs, regardless of COVID.

18:01 Please have these kinds of things.

18:03 Right.

18:03 And things like, Hey, we have outdoor areas where eating will be available.

18:06 If anyone's listening and they're, they're in charge of this.

18:10 Chairs.

18:10 I encourage you.

18:11 Yes.

18:11 Chairs.

18:12 Please.

18:12 Last time there was a roof area with a, like a cover and it was beautiful.

18:17 You could see over the river and there were these tall, tall tables, no chairs.

18:21 And my back just hurt so much after carrying all the recording equipment on my back for half

18:26 a day.

18:26 I'm like, I just got to sit down somewhere.

18:27 There was literally not a single chair of like, could there just be a chair?

18:30 So chairs, please.

18:31 Some chairs.

18:32 But other than that, I think this is great.

18:34 So at least one chair with a tag on it.

18:36 This is for Michael.

18:37 Yeah, exactly.

18:38 Please reserved.

18:39 The dude's back hurts a lot.

18:40 Just look at him.

18:41 He's whinging over there.

18:42 All right.

18:42 And then somewhere in here, there's call for proposals.

18:45 Under speaking.

18:46 Yes.

18:47 Appears in a talk.

18:49 Important deadline.

18:49 We have just over a month.

18:52 But it's open now.

18:53 You can start.

18:54 Yeah.

18:54 Yeah.

18:54 So there it is.

18:55 Yeah.

18:55 There it is.

18:56 So awesome.

18:57 I'm excited.

18:57 I'm excited.

18:58 Oh, I can.

18:59 Now I'll be there.

19:00 Super excited.

19:01 I mean, I think I'll see a couple of talks.

19:03 Yeah.

19:04 See, look at that.

19:04 Okay.

19:05 Very good.

19:06 Plus the website is beautiful.

19:07 I like that.

19:08 It is.

19:08 I like that.

19:09 It's got a good, it's got a good fun vibe.

19:10 And I know you, have previously maybe still do skateboarding.

19:14 Look at that guy.

19:15 Just riding that rail there.

19:16 I mean, already you want to go, right?

19:18 Is there, they're probably gonna have skateboard, skateparks at the conference, I guess.

19:21 Yeah.

19:22 I would say why not.

19:23 I imagine why not.

19:24 Oh, the snakes.

19:25 Sweet half pipe.

19:27 Half pipe.

19:27 Yeah.

19:28 That's, what is the snake riding?

19:30 Anyway.

19:31 It's sort of a skate.

19:32 I think it's a skateboard with beans on the bottom.

19:35 Mm-hmm.

19:36 Oh, no.

19:36 Those are just, I don't know.

19:37 Those are just good wheels.

19:39 Yeah.

19:39 Well, we're trying to put a lot of meaning into this.

19:42 No.

19:44 Anyway.

19:45 Okay.

19:46 All right.

19:46 Well, before we get to our extras, let's quickly talk about Codeium.

19:51 This portion of Python Bytes is brought to you by Codeium, the AI tool of choice for professional

19:56 software developers.

19:57 That's C-O-D-E-I-U-M.

20:00 Codeium removes tedium from your development through a suite of state-of-the-art AI capabilities

20:05 available with extensions in all of your favorite IDEs.

20:09 Use Codeium in VS Code, the JetBrains IDEs, including PyCharm, Visual Studio Proper, Eclipse,

20:15 Xcode, NeoVim, Jupyter Notebooks, and more.

20:18 Uniquely, Codeium is fully enterprise-ready with over 1,000 paying enterprise customers, including

20:24 multiple regulated Fortune 500 companies in completely self-hosted air gap deployments.

20:30 Join over a million developers and use Codeium for free forever.

20:33 Once you see the value, then it's time to ask your company to consider a free trial of the

20:38 enterprise plan.

20:39 To learn more about Codeium and get started today for free, visit pythonbytes.fm/Codeium.

20:45 That is pythonbytes.fm/C-O-D-E-I-U-M.

20:49 Don't forget the E.

20:50 Or just click the link in your podcast player's show notes.

20:53 Thank you to Codeium for supporting Python Bytes.

20:56 How about extras?

20:56 How extra are you feeling?

20:58 I only got one extra.

20:59 And that is to say, this is from Jeff Triplett saying, please publish and share more.

21:07 And he did talk about this on Mastodon a little bit.

21:11 The thought is that he sees a lot of great ideas on Mastodon and people posting.

21:19 And the thought process and research and stuff that goes into publishing a couple of those

21:24 ideas and maybe their threads.

21:25 You're almost to a post.

21:27 Just write it up.

21:29 And I totally agree.

21:30 It's great to post on social media, but why not just write it on a blog and then do a snippet of it and link to it from Mastodon or whatever social you're posting it on.

21:42 Totally agree.

21:43 And encourage people to do that more.

21:45 And there's a little bit around it, like talking about he says he uses Grammarly because of dyslexia, which is I didn't know that about Jeff.

21:55 That's pretty cool.

21:56 And I don't mean to plug Grammarly, but it did help one of my kids get through college.

22:01 This episode is sponsored by Grammarly.

22:04 But if you don't want to pay for something, he's also recommending something called Language Tool.

22:09 There's a link to it in his post.

22:11 Pretty cool.

22:12 But also, you don't really need to do that.

22:15 It's fine to just, I mean, we're all nerds here.

22:17 Write up something you learned.

22:19 Post it on a blog and link to it in a Mastodon post or something.

22:25 Let us know about it.

22:26 And, you know, if there's something glaringly technical editors or technical errors, one of your readers will let you know to fix it.

22:37 But it's to be nice.

22:39 It's not to be mean.

22:40 And I encourage that, too.

22:42 I actually don't use any grammar checkers when I'm writing blog posts.

22:47 I just put it.

22:48 Nice.

22:48 Anyway.

22:49 Yeah, you and I both have our blogs on Hugo, which you write with Markdown.

22:53 And I have a little bit of a hack for folks if they also do that.

22:57 I've started writing my posts, my longer posts, at least, on something like Google Docs, where you get grammar checking and help and auto-complete and all that kind of stuff.

23:07 And I've found if you just control A, control C, and paste it into Typeora, it will markdownify everything.

23:14 Like, H2s become hash-hash things, and all the links become bracket links and folds, all that kind of stuff.

23:20 Really, really nice.

23:21 So if you want a little bit of support, but then you're also doing a markdown, that's a pretty sweet one.

23:25 Paste it to where?

23:26 Appfora?

23:27 Typeora.

23:27 Typeora.

23:28 Typeora.

23:29 What?

23:29 Typeora is an amazing markdown editor.

23:32 Yeah.

23:33 Appfora is really good.

23:34 I usually just use VS Code, and it does enough grammar and spelling checking for me.

23:39 Did you know that Typeora you can save as an EPUB file if you want?

23:43 Okay.

23:45 That's pretty cool.

23:45 I mean, all sorts of good stuff in there.

23:47 You can write an e-book.

23:49 Exactly.

23:49 Exactly.

23:50 Anyway, that's pretty good.

23:51 All right.

23:52 All right.

23:53 I got a couple extras, but I'll go quick.

23:54 I just recently had Stephanie Mullen on to talk about pre-commit hooks.

23:59 I think I talked about that.

24:01 That was going to be on, and now it has happened.

24:03 Now I'm talking about it having happened.

24:05 The reason I bring that up is one of the things that I just ran across is pre-commit UV.

24:10 So this is pretty cool.

24:12 From the Tox dev group.

24:14 Uses UV to create virtual environments and installing packages for pre-commit rather than regular ones.

24:20 So this is pretty cool.

24:21 So, you know, that's something that Tox and Nox and friends all do a lot of.

24:25 So pretty cool.

24:26 People can check that out if they like.

24:27 Nice.

24:28 Why?

24:28 Why, Brian, was I using Pocket?

24:30 Did you see how much I had to struggle with that thing?

24:33 That's because my favorite read later thing is shutting down.

24:38 Omnivore is shutting down.

24:39 Not because they went out of business because they were awesome, but because they got bought and they decided it's too expensive to run text-based highlights.

24:47 I don't know.

24:48 It doesn't seem that intense.

24:54 It's not profitable enough.

24:56 It's not.

24:57 And, I mean, get on it, folks.

25:00 Because one of people who started using it because we recommended it is pointing this out to me.

25:05 Omnivore will support exports of your data into JSON because what are you going to do with that until November 30th?

25:12 And then after that time, we will be deleting all of your data.

25:15 So, yeah, have fun with that.

25:17 There's a lot of options.

25:19 Readwise has been recommended.

25:20 Pocket is an option.

25:22 Instapaper.

25:22 I found some really cool open source self-hosted ones.

25:25 I'm like, no, Michael, you don't need more things to babysit.

25:28 Just log back into Pocket.

25:30 I've been using Pocket.

25:32 It works for me.

25:33 It's not great, but it works.

25:37 It's pretty good.

25:38 I didn't realize Instapaper was still around.

25:40 I was using that back in the day.

25:42 Yeah, I know.

25:43 Me too.

25:43 Back in the day.

25:45 It was a good one.

25:45 All right.

25:45 The voices, though, and that's what they were required by.

25:49 They were required by this thing called 11 Labs, which is all about creating Givit audio.

25:54 And I was pretty excited.

25:55 I'm like, oh, this might just make it even better.

25:57 Free text-to-speech and voice generated.

25:59 I'm like, okay, I could just download that and check it out, right?

26:01 But if you look at the pricing, it's ridiculous.

26:04 I mean, you get, for five bucks a month, you get 30 minutes of speech.

26:09 I mean, that's like e-book, audio book prices, but they don't generate the book.

26:13 They just speak it.

26:14 For $11, you get an hour and a half per month.

26:18 Okay.

26:18 If your only purpose is to read stuff in audio to somebody and say, like, you only get 30

26:23 minutes of it per month.

26:24 I don't know.

26:24 It's kind of weird.

26:25 But...

26:25 And the jump between that and 99 bucks.

26:28 11 to $99.

26:30 That's a big jump.

26:31 That's a month.

26:31 That's not a year.

26:32 To have it read you text off the internet.

26:35 That's pretty steep.

26:36 So I was kind of excited, but I'm like not excited.

26:39 So the text in the show notes is curse you, Omnivore.

26:42 Curse you.

26:43 Hey, I talked about moving to Hetzner and some of the US data centers and I played around

26:48 with that.

26:48 And you know what?

26:49 Python buys a run on Hetzner right now.

26:50 Oh, nice.

26:51 And talk Python and all the things.

26:53 Because of the whole new Docker cluster sort of portable across cloud thing that I did before,

26:58 it was pretty easy to just try it out.

27:01 And I'm like, hey, this works really well.

27:02 I'm going to try it because you get really nice new CPUs like AMD Epic CPUs.

27:09 and stuff along those lines, which is great.

27:11 And this is not a massive concern, but wow, are the prices good for this thing.

27:16 So for example, check this out.

27:17 We could go to the US and you could get it in Hillsborough or Ashland.

27:21 Ashland unfortunately makes more sense for consumers, but I wanted to run it locally

27:26 because Hillsborough is just outside of Portland.

27:28 Anyway, Ashland, but totally reasonable to run it for $13 a month or something or $20 a month.

27:34 Like for example, they have a $25 a month, 8 CPU, 16 gig server with 20 terabytes of bandwidth.

27:42 That is a $250 AWS server and a $300 Azure server for $25.

27:48 So anyway, pretty interesting stuff.

27:50 25 euro, but that's, yeah.

27:52 Yeah, that's true.

27:52 Euro, sorry.

27:53 They're pretty close.

27:54 Yeah.

27:54 E-bucks.

27:55 Euro bucks.

27:56 Okay.

27:57 Also, we've talked previously about free threader Python over and over, but there is now a pretty

28:05 awesome new thing that you can do with UV.

28:07 I know we're talking a lot about UV these days, but that's because it's making a big splash

28:11 and it's really cool.

28:11 UV, Python install, dash, dash preference, only managed.

28:16 And if 3.13 T will create you either install or create you a virtual environment on free

28:24 threaded Python.

28:25 How cool is that?

28:26 Okay.

28:26 We've been waiting for that.

28:27 So that's cool.

28:28 Yeah.

28:28 Yeah.

28:28 That's really neat.

28:29 So probably the quickest, you know, you can see I ran an example.

28:32 I'm linking to a mass on post, a screenshot I posted in 2.53 seconds to install free threaded

28:37 Python.

28:37 It's that close to, and that's of course why the pre-commit hooks want to use this to install

28:42 other things and so on.

28:43 Yeah.

28:44 That's pretty neat.

28:44 Also, remember if you're going to try something like that, you probably need to do a UV self

28:50 update first.

28:51 Yes.

28:52 That's a very good point, Brian, because it doesn't check remotely.

28:55 It just knows what's burnt into the binary of UV.

28:57 And if you don't UV self update, it will only possibly know the old one.

29:01 So yeah, that's, that's always the place to start with UV.

29:04 It seems.

29:05 Yeah.

29:05 I just updated a three through just the normal 313 the other day and it wouldn't work.

29:09 Like why not?

29:09 And it was because I needed to self update.

29:11 Yeah.

29:12 Good, good, good, good deal.

29:13 All right.

29:13 That wasn't very funny, but I have something.

29:15 I don't know.

29:16 We'll see if it's funny or not, but I have something for you.

29:17 You ready?

29:18 Ready to close out with a joke?

29:19 Yes.

29:20 All right.

29:20 So we have different kinds of chairs in life.

29:23 Did you know that, Brian?

29:24 Like you can have one of the gaming chairs.

29:27 You can have an, I have a slightly uncomfortable chair, so I don't move around away from my

29:31 mic and go like this and then like this and like sort of keeps me fixed, but it's not

29:35 that comfy.

29:36 But I would like to present to you two types of chairs that are in opposition to each other

29:40 or, no, this is a synergy.

29:41 Let's call this a synergy.

29:42 You have a coding chair, which looks like an office chair.

29:45 And you have the debugging chair, which looks like a toilet.

29:47 Just two of the different types of chairs you may try to sit in.

29:51 Yeah.

29:52 Actually, you know, if, if it's just the, the thought process is, take your laptop to

29:58 the bathroom.

29:58 I don't recommend it.

30:00 But, but if it's.

30:02 I can't leave the bathroom.

30:02 My bug is still out there.

30:04 No, I don't know.

30:04 Just get away from the keyboard for a while.

30:07 I agree.

30:08 Yeah.

30:09 Yeah.

30:10 I think the message here, the underlying reality of the joke is that sometimes

30:14 if you just step away, it unlocks, unlocks problems.

30:18 I know when I was doing this migration of all my, I set up, I, I couldn't get let's

30:22 encrypt to work and that was midnight or something.

30:25 Stupid let's encrypt.

30:26 I went to sleep.

30:27 I was like Docker let's encrypt combo of not working.

30:31 Woke up the next day.

30:32 I'm like, oh yeah, that'll do.

30:33 And I just typed in some different boom off of wind.

30:34 You know what I mean?

30:35 But I spent half an hour banging my head against it.

30:37 I, so if this has been, this hasn't happened to me for very long, but it's been

30:41 happened to me lately is, is I'll be stuck on an issue.

30:44 And then, and then I wake up early and I think, and I think about the, of one of the

30:48 possible, a possible solution, something I want to try in the code.

30:51 And I'm like, oh, what time is it?

30:54 I mean, if it's like just only like an hour before normal, it's fine.

30:57 But often it's like one in the morning.

30:58 Oh no.

30:59 I cannot get up right now.

31:01 I will be exhausted in the morning.

31:03 So just have to jot it down and go back to sleep.

31:06 Yeah.

31:07 Yeah.

31:07 Anyway, cool.

31:08 Well, great show as usual.

31:10 Thanks.

31:10 Thanks again, Michael.

31:11 Yeah, you bet.

31:12 Thank you for being here and thanks everyone for listening.

Back to show page