Transcript #357: Python 3.7 EOLed, We Hadn't Noticed
Return to episode page view on github00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:04 This is episode 357, recorded October 17th, and I am Brian Okken.
00:10 And I am Michael Kennedy.
00:11 And our show is sponsored by us.
00:14 Check out Talk Python Training, of course.
00:16 There's wonderful courses from Michael and other people, including myself.
00:21 And Patreon supporters, of course.
00:25 We love Patreon supporters.
00:27 We haven't really talked to him much lately, sending out emails.
00:30 I should do that more.
00:31 And lastly, the complete pytest course.
00:35 Please check it out if you want to learn pytest the fastest way possible.
00:38 And you can connect with us on Mastodon, on Mastodon, on Fosstodon, both of those.
00:45 And Michael's at M. Kennedy.
00:49 I'm at Brian Okken.
00:50 And the show is at Python Bytes.
00:52 And you can also listen live if you head over to pythonbytes.fm.
00:57 And you can watch it when we live stream, as we are right now.
01:00 Absolutely.
01:01 So, Michael, let's kick it off with something hot.
01:04 Let's kick it off.
01:05 I want to talk about a couple of, well, something I've learned from Glyph when I was at PyBay.
01:12 Was that last weekend?
01:13 Two weekends?
01:13 Last weekend, I guess.
01:14 Glyph gave a really cool talk.
01:16 Some of the talks are starting to show up on YouTube, but his talk is not there yet.
01:21 Or I would link to it.
01:22 And it was something along the lines of like, how to program your computer with Python, which sounds silly because we're all pretty good Python programmers.
01:30 Like you should think, okay, well, I could do that.
01:32 But this was about, how do I automate stuff?
01:34 How do I plug into things?
01:37 Like how can I automate keynote to extract show notes out to put into another document or PowerPoint or, you know, things along those lines.
01:48 And one of the things that he both created and talked about was this thing called Quick Mac Hotkey.
01:55 Because you might want to have your Python not have a UI you're interacting with, but just be chilling in the background.
02:01 And if you had a certain hotkey, it does the thing, right?
02:03 Yeah.
02:04 Yeah.
02:05 So this Quick Mac Hotkey does that.
02:07 And basically it's super simple to use.
02:10 It's just a set of minimal Python bindings for macOS framework APIs using, what does it use for it to pull this off?
02:19 Look through here.
02:20 Oh yeah.
02:21 Py OBJC, I believe is what it's using.
02:24 So you just super easy to write some code.
02:27 You want to have a function that's called when a keystroke is down.
02:31 You just give it the decorator quick hotkey and you say the virtual key is the X.
02:36 The modifier is command control option.
02:39 So just hit all three of those plus X, you know, something that's most likely not going to interfere with some other behavior.
02:46 And then boom, off it goes.
02:47 And look how simple that code is.
02:49 Isn't that nice?
02:49 Yeah.
02:50 Yeah.
02:51 That's pretty cool.
02:52 Although I don't know if I can find my command control and hotkey at the same time.
02:56 But cool.
02:58 Yeah.
02:58 I use a Windows keyboard, unfortunately, because there's no ergonomic Mac keyboards.
03:03 Like, you know, apparently Apple hates people and they want them to have RSI for the rest of their life.
03:07 But doesn't they only make these?
03:08 Does the window key map to the command key?
03:10 Yeah.
03:11 The window keys is just the command key.
03:12 Yeah.
03:12 Okay.
03:13 So it's nothing too fancy.
03:15 So there's not a lot of depth.
03:16 And we got to dive into this other than how cool is it if you want to just add hotkeys here?
03:21 Yeah.
03:22 So off you go.
03:23 Okay.
03:23 So when you install it, does it just run all the time or something?
03:26 I think whenever your app is running.
03:29 Okay.
03:30 Like, so you can see the last line of this example.
03:32 It says app helper dot run event loop.
03:33 Okay.
03:34 So that's just like set there in the background and just wait for events.
03:37 For example, it's this quick hotkey callback when somebody presses that.
03:41 So one of those, though, could be exit.
03:43 You know, and just, you know, I don't know how you exit the event loop.
03:46 Either raise an exception or just just exit or who knows.
03:49 There's got to be a way to get out of there.
03:51 Reboot your computer.
03:52 Exactly.
03:53 It's like Vim.
03:54 You're just in there.
03:55 Nice.
03:57 All right.
03:58 Over to you.
03:59 Well, I'm going to talk about command lines applications a little bit because Simon Wilson
04:04 had things I've learned about building CLI tools in Python.
04:08 And I really kind of like all the stuff he covered.
04:12 I really like them.
04:13 I mean, this isn't a super in-depth like how to write CLI tools, but some of the things like
04:19 just high level when you're writing command line applications, it's good to be rather consistent
04:25 with other command line applications to make it easy to use because it's going to be used
04:30 by people that like CLIs, right?
04:32 So a couple of options things here.
04:36 Be consistent with the terms.
04:39 Well, you have to kind of understand the terms, but there's commands, there's arguments, there's
04:43 options and flags, and sometimes flags are options.
04:47 Yeah.
04:48 Anyway.
04:48 So commands that have our, he's using CLI applications.
04:53 So the, he actually talks about CLI and also using a cookie cutter template that he lists
05:00 at click app on Simon W on GitHub, but the, or yeah, cookie cutter template to build these,
05:08 which is cool.
05:09 I like typer, which is built on top of CLI.
05:13 So anyway, but these are, these are still good, good advice, like make sure that your
05:18 options, what, you know, what options are and then make sure you have like a short character.
05:23 So if you have --port also include like a dash P as a short version, because people
05:31 are used to that.
05:32 There's a mostly just a lot of description around making sure your flags and options and stuff
05:40 are consistent.
05:40 And I actually think people ought to get used to writing more CLI apps because especially
05:46 for utilities for yourself and for a team, they're great because you'll use it all the
05:52 time and it's, it's, you get used to it.
05:55 It's easier than building a GUI application.
05:58 So consistency is everything.
06:00 Try to be consistent with it.
06:01 One of the great things, the great advice here.
06:04 So is he pay attention to your help message.
06:08 So, a lot of CLI tools like typer and click kind of build a help for you so that it
06:16 prints out like the options and stuff that you can, you can list, which is great, but you
06:21 have to go in and add things like, put examples.
06:25 So example uses of like the entire application or the entire option and how to use it.
06:31 this is extremely helpful and I really appreciate it even just for myself so that,
06:37 like six months from now I can remember how to use it, things like that.
06:41 So include options in the help.
06:42 And then the other thing is, the lastly, Oh, examples, examples in help.
06:48 And, there's a couple other things.
06:51 Oh, include the output of your help in your online documentation.
06:55 And there's ways to automate that.
06:56 But I think that's great to just list it because I'm looking for it when I'm looking at the,
07:01 like at the bottom of the read me or something.
07:03 the lastly, is if you have a CLI that's being used by other people, make sure that you
07:11 version it appropriately because, because it is an API.
07:16 A command line interface is, can be used by other programs.
07:19 So treat it as an API, even if the other user is somebody's fingers.
07:23 because if things change, people should know about it.
07:26 So anyway, good, good application or a good article about building command line applications.
07:32 And then his, cool cookie cutter template for click apps.
07:36 It's nice.
07:37 Excellent.
07:37 Yeah.
07:38 Nice work, Simon.
07:38 A couple of pieces of real time followup here.
07:42 One audience is on point today.
07:45 So Kim out there says rich, rich click is also fantastic if you use click.
07:50 And I definitely agree on that.
07:52 So it's like click, but all the help messages and stuff are in color using, you know, rich
07:58 and like little info boxes and stuff.
08:01 And then Rhett who, Rhett, who was on talk Python to talk about programming, Mac apps, macOS apps
08:08 highlights that, you know, this quick hockey thing sounds like a good opportunity for a rumps menu bar app.
08:16 So rumps is awesome.
08:17 I was actually thinking of adding this hockey thing exactly for one of my rumps menu bar apps,
08:23 which is just an unfair level of easy for building a Mac app that just runs in your menu bar.
08:29 Oh, cool.
08:30 Yeah.
08:30 We've talked about that, but it's been a while.
08:32 It has been a while, but you've got it for me.
08:34 I've got to go up and find it and like, make it do the thing.
08:36 I'm like, you know what?
08:37 A hot key.
08:38 Oh yeah.
08:39 Here we go.
08:40 Now it's on now.
08:42 It's going to the next level.
08:43 So yeah.
08:44 Yeah.
08:44 Super cool.
08:45 All right.
08:45 That's not what I want to talk about, but some good real time followup.
08:47 What I want to talk about is warp.
08:49 And this is also an item from PI bay indirectly.
08:52 I ran into Elvis who works there.
08:54 And have you heard of warp Brian?
08:56 No.
08:57 Well, I mean warp speed.
08:59 Yes, I know.
09:00 Okay.
09:00 Got to resist the star Wars references.
09:02 it's, it's super cool.
09:04 So what terminal do you use?
09:06 Like when you go to use the built-in Mac one, do you use iterm two or what's your story?
09:11 Well, I use the built-in Mac one, on Mac and then on windows, I use, the, what?
09:18 The windows terminal.
09:18 Well, that was a good one.
09:22 No, the, the get bash, get for windows bash comes with bash.
09:27 So I use that.
09:28 Okay.
09:28 Yeah.
09:29 You should check out the windows terminal and then plug the get for bash into it.
09:32 You get like, it behaves better and you can pick from like nine different shells and like
09:36 things that run inside the windows terminal.
09:38 Anyway, windows terminal is awesome, but we don't have windows terminal on Mac, which is
09:43 just fine.
09:43 Cause we have iterm and other things, but I want to tell you about warp because warp is
09:47 a new terminal.
09:49 it's got quite a bit of energy behind it and it's, it's awesome.
09:54 so I think there's 30 people working on this project if I remember correctly, but there's,
09:58 there's a good number of people that are working on building this new terminal based on rust.
10:04 And it even is, programmed in metal shaders.
10:07 Metals are like the open GL direct X Mac equivalent for making it super, super fast.
10:12 But basically like there's a bunch of shortcomings that always drove me crazy about the terminal
10:17 and a lot of things that are pretty nice here.
10:19 So it's a free thing for individuals.
10:21 If you're a company, you got to pay for it if you want to company features.
10:24 but it's, it's worth checking out.
10:27 So for example, if you write something, Brian, like I write, some multi-line command and
10:33 you're like, Oh no, I forgot the quote at the beginning.
10:36 You know, how do you fix it in I term left arrow, left arrow, left arrow, left arrow, left
10:41 arrow.
10:41 Like even home doesn't work, you know, left arrow, left arrow, left arrow.
10:44 You wait and get back there and you type the quote, right arrow, right arrow to get the focus
10:48 back, like clicking where you want to be doesn't work.
10:52 Right.
10:53 For example.
10:53 Well, he's used Vim key bindings and just go there with Vim.
10:57 Do you have Vim key bindings in the mat at the standard terminal?
11:01 Yes.
11:01 Everywhere.
11:02 Yeah.
11:03 Okay.
11:03 All right.
11:05 But awesome.
11:06 Well, so this one, like basically all the, stuff you type at the bottom or wherever you're
11:11 typing is like a full on editor, which also has Vim key bindings.
11:15 Yay.
11:15 Okay.
11:16 Okay.
11:16 No, go ahead.
11:17 Okay.
11:17 you can turn them on if you want, but you can basically click in there and edit pieces.
11:22 Like you can double click.
11:23 It'll select a word.
11:23 You start typing or places that super cool.
11:26 it has like a kind of a new way to like keep your input focused in one area, which is
11:32 really nice.
11:33 So instead of it just being at the bottom of the screen, you can have it like always at the
11:36 top or always at the bottom.
11:38 one of the things that's cool is like it treats the output of every command as,
11:43 a solid as one thing.
11:45 So if I do like an LS and there's like 50 lines and I tail a catalog or something, then there's
11:51 like a thousand lines.
11:52 And then if you want to go back, you can actually just go back by selecting each block of that.
11:57 So go back a thousand lines, go back 50 lines, do a search.
12:00 You can search just that 50 line section from that one command, even though your terminal is
12:04 full of junk.
12:05 Super, super cool.
12:06 it does tons of autocomplete, which is super neat.
12:09 let's see one thing else.
12:12 you can, if you do some kind of command, you're just talking about like Simon asking
12:16 ChatGPT for what does like a command mean.
12:19 So if you said like LS dash one, what does the one mean?
12:23 You know, you hover over the one, it'll like pop up a little documentation for what dash
12:28 one means.
12:29 Oh, that's cool.
12:30 Yeah.
12:30 also as AI built in, if you want, I haven't used that very much, but you could like say
12:34 hash, how do I, you know, write this kind of loop in bash or whatever.
12:38 And it'll, it'll print it out for you, but I don't use that one too much.
12:42 But anyway, super, super cool.
12:44 a lot of interesting things.
12:46 It has the control R history, kind of like, like McFly, which I've talked a lot
12:52 about how cool McFly is.
12:53 So even the single try for a few weeks, really enjoying it so far.
12:56 Cool.
12:57 Love to try.
12:57 So people can check that out and yeah, pretty neat.
13:01 Kim says, we've come a long way from a few years ago when windows terminal and awesome
13:05 is in the same sentence.
13:06 it's, I, yeah, I thought it was a joke also.
13:10 I didn't, I can't believe that you said that, but no windows terminal is it's, I don't
13:15 want to be on Wikipedia, but it is definitely, definitely nice.
13:19 So I'm not on my windows machine and I'm not sharing my terminal anyway, but let's see if
13:24 I can get it to show, hockey.
13:27 So like, and it doesn't really show it great, but you can click on this, like you set what
13:31 the default shell is that you want it to do, but you can click this.
13:35 It'll be like the bash shell, the, power shell, whatever that thing's playing music.
13:42 I can't take it.
13:43 But yeah, anyway, the windows, yeah.
13:45 Check out windows terminal.
13:46 It's actually good.
13:46 And Kim is right.
13:47 We've come a long ways, but yeah.
13:49 Okay.
13:50 All right.
13:51 All right.
13:51 Mm-hmm.
13:52 You convinced me, I think.
13:53 So let's try it.
13:54 Give it a, give it a try.
13:55 Give it a try.
13:56 All right.
13:57 What's your final thing?
13:57 People should check out warp.
13:59 It's, it's pretty neat.
13:59 I will.
14:00 Yeah.
14:00 Oh, hold on.
14:01 One more important thing here.
14:03 Mac only for the moment for people, but they're working on Linux and windows.
14:07 So you can like sign up to get notified if you're not a Mac person.
14:10 So just that caveat for now.
14:13 I, did you, I three, Python 3.7 end of life.
14:17 And I didn't even notice.
14:19 What?
14:20 So.
14:21 That was a good one.
14:22 That was one of the good ones.
14:23 You can trust that one.
14:25 So 3.7 end of life was in June and June 27th.
14:29 no, that was the first release.
14:31 End of, no, end of life also.
14:32 End of life.
14:33 6.27.
14:34 23.
14:34 Interesting.
14:35 But why did I not notice it?
14:37 I didn't notice it because everybody's like three, like you said, 3.7 was one of the good
14:41 ones.
14:42 We got, we have data classes in there.
14:44 f-strings came in 3.6 and they got improved in 3.7.
14:47 And then they, they got improved in 3.10 again.
14:49 and all sorts of stuff, but, but it is something to pay attention to, that
14:55 I had noticed the first notice today.
14:57 I was looking at the, VS Code announcement for the new, what was this?
15:03 Python for Visual Studio Code, October, 2020 release mentions, that, the 3.7 support
15:11 is still, it's still probably works, but they're deprecating 3.7 in support.
15:16 So just to be aware, I was also surprised if it didn't work because what was removed
15:23 in 3.8 that was in 3.7, like syntax wise, not functional wise.
15:29 I, I can't think of anything.
15:30 yeah.
15:32 So I, so there's a couple of projects or several projects that I'm supporting where I support
15:38 down to 3.7.
15:39 I dropped 3.6 a while ago.
15:42 but one of the things that catches me a lot, the, the, the remaining thing that catches
15:46 me, is, is annotations and specific.
15:50 I want to cover like if you really want to still support 3.7, or didn't know that it was this
15:56 easy, at least for the code I write.
15:58 The main thing is, is I like to use union types.
16:02 So, like to use this or type for unions.
16:05 And this came in in 3.10.
16:08 However, it, I, I can't find this documented anywhere, but to get it to work down to 3.7,
16:13 you can do, from futures from future import annotations.
16:18 And we've been used to using the from future for various things for a while, but it looks
16:23 like, like 3.7 might be the end of needing from future for a while.
16:27 I don't know.
16:28 Maybe they'll come up with something else that they're backboarding, but it doesn't look like
16:31 there's anything else right now, up to 3.12 that you need to go back down.
16:36 It's just, just, just annotations so far.
16:39 So, and I guess I want to show a little bit of an example for the annotations.
16:45 So, data for data classes, data classes are awesome because you can type the, the variable
16:51 that you're in using.
16:52 And, and then I often like to have it be none by default, which, so a string, it's going
16:59 to be a string or it's none.
17:00 So the, or none is easy just to do the, or none.
17:03 And I know you can do optional, but this is just visually more pleasing to me.
17:07 and to get that to work down to 3.7, it's, yeah, it's just the from future important
17:13 annotations and it'll work all the way down to 3.7.
17:15 So it's just what I wanted to mention.
17:17 and, I think that it's also good to be aware, I guess that, that, 3.7 is end
17:24 of life because some of the things you depend on might start dropping support for 3.7.
17:29 It's fair game at this point.
17:31 So, I mean, open source projects, they're a fair game to drop support for, everything
17:36 below 3.12 if they want to.
17:38 No one's, no one signed a contract with anyone here.
17:41 They can do what they want.
17:42 Yeah.
17:42 But it's, it's good to be aware of.
17:44 So.
17:44 It certainly is.
17:46 It certainly is.
17:46 That's a cool graph you got there too.
17:48 Yeah.
17:48 Yeah.
17:49 Is that in the, is that in the show notes?
17:50 Yeah.
17:50 It's from devguide.python.org, with the versions.
17:54 yeah.
17:55 Christian Lederman says, walrus was introduced in 3.8.
18:00 I don't know if you can do a from future import walrus.
18:04 I don't think so, but it's too bad.
18:06 If you do, you have to do an emoji, not the actual word walrus, but you got to put the
18:09 emoji of a walrus and then it'll work.
18:11 Well, I'm waiting for like emoji operators.
18:14 so that'd be fun to have.
18:17 Yeah.
18:18 Have to put not just can put, but you have to put emojis in your code.
18:22 So what happens when the cat raises its paw against an integer?
18:25 Oh, let me tell you, that one's really awesome.
18:27 Yeah.
18:28 yeah.
18:29 Some of those conversations like, Christian was saying that I think we're like, or I was
18:33 saying, you know, what is in three, seven, that's not in three, eight.
18:37 And those are all true.
18:38 All those things like there are new things, but if you wrote three, seven code and then
18:43 ran it against three, eight, it should still validate in my pie.
18:46 It should still work in Python, right?
18:49 There's no thing that was in three, seven that because my pie is not supporting it, it'll say,
18:54 well, that used to work and it doesn't work anymore because Python is pretty awesome and
18:58 stable like that.
18:59 There might have been, there was one point, I think it was in three, nine though, where
19:03 like the asyncio co-routine decorator was removed that caused all sorts of drama for me because
19:10 some library I was using didn't use the word async.
19:12 They just used the decorators, but even that a decorator should still validate in my pie with
19:17 that context.
19:18 Right.
19:18 So, yeah, I guess I want to, I'll, maybe I'll revisit my opinion of, supporting three,
19:24 eight or three, seven because, so we, we, we can use the wall.
19:28 Wallruss operator in three, eight, but Henry Schreiner also noticed that notes that,
19:33 the, the equal for f-strings so that you can say, like X equal and it'll print the
19:40 X equal.
19:41 That's super handy.
19:42 yeah, it's good for debugging.
19:43 Yeah.
19:44 And just having, having that stuff in your, in your code, like that'd be great.
19:48 So.
19:49 Yeah.
19:49 And these things are super small and subtle, like the wallruss operator.
19:52 I take, I took the website down with the wallruss operator once I said, I told that story
19:56 before.
19:56 Yeah.
19:57 Like not even the main website, just, it was in a little utility, but it got parsed
20:01 by the route finding thing and killed it.
20:03 All right.
20:04 Well, that's it for items, huh?
20:05 Yeah, it is.
20:06 Awesome.
20:07 Extras.
20:07 I got a couple since I got my screen up.
20:10 just one of the examples I showed was from a new plugin that I just released, called
20:16 pytest Paramscope.
20:17 and this allows you to, for parameterized fixtures or for parameterized tests to have
20:24 a startup, a startup that goes, a setup that happens before all the parameters and a teardown
20:29 that happens at the end.
20:30 It's still, the API is up, there's a warning here because there's the, the API might change
20:36 with respect to teardown, working on yield, yield functions for that.
20:41 I also, I was going to cover this as a full thing.
20:44 Oh yeah.
20:45 This is just sort of how you use it.
20:46 You get like a setup and teardown.
20:48 Oh no, this is, this is how I want to do it.
20:50 This is the change that I might do of adding yield.
20:52 So anyway, Simon Wilson, wrote a article called, stop defining people.
21:00 No, not Simon Wilson.
21:01 Sorry, Josh Simmons.
21:03 sorry, Josh, wrote an article called, stop defining people by what they are not.
21:10 and he was referring to non-code contributors and I kind of agree.
21:15 So I wanted to highlight this article.
21:16 This is, this is great.
21:18 Just basically saying all contributions are awesome and trying to, and elevating code
21:24 contributor contributors above non-code contributors is just not right.
21:29 So don't do that.
21:30 also it's just referring, I mean, if somebody only writes, just mostly helps with your
21:36 test code, you don't have to call them.
21:39 I mean, you can say somebody that's contributing test code.
21:42 You don't have to say, oh, that's non-code.
21:44 Well, that's, that's still code.
21:45 But anyway, you know what I mean?
21:46 people helping with documentation is great help.
21:50 People helping with writing tutorials is great help.
21:52 Everything is good.
21:53 So anyway, sometimes it's more important to have a good example so people can get started
21:58 quickly.
21:58 Oh yeah.
21:59 And like enjoy the project rather than like one more feature, you know?
22:02 Yeah.
22:03 And also things like, cleaning, triaging issues and answering questions and keeping,
22:09 you know, making sure that all the issues are closed when their things get fixed and all
22:13 that sort of stuff is, is it's tons of work.
22:15 So it's great help.
22:16 So yeah, absolutely.
22:18 Do you have any extras?
22:19 I got a couple quick ones here.
22:21 So open AI has released the beta version of their Python SDK.
22:26 It's pretty exciting.
22:27 So if you don't want to implement your own raw HTTP JSON parsing and hope that you got everything
22:35 right, you can just go there, start calling the functions that they write for you.
22:38 And it should be going nicely.
22:40 So it's still in beta, but people can check that out.
22:43 That's pretty awesome.
22:44 I think, was it here?
22:45 I can't remember somewhere.
22:46 No, it wasn't here.
22:47 Maybe it was on the linked article.
22:48 There was somewhere where there's a bunch of people whinging, like, why can't people just
22:52 call HTTP?
22:53 They're so lazy.
22:54 They want a library for it.
22:56 Like, you know what?
22:56 Maybe like let somebody else handle the evolution of that API.
23:00 You just call a stable Python set of functions and not worry about that.
23:04 Wouldn't call that lazy.
23:05 I would call that PyPI and call it awesome.
23:08 Anyway, so people are into open AI.
23:10 What do you need Python for?
23:12 Just call the raw C API.
23:15 Exactly.
23:16 Can I just do this with like a bunch of bash scripts and some curl?
23:20 Let's go.
23:20 All right.
23:21 So, sad news here is ChatGPT.
23:27 Oh, no.
23:27 Stack Overflow.
23:28 Probably because partly of ChatGPT.
23:30 Get that in order right there.
23:32 Stack Overflow is laying off 28% of their staff.
23:36 It's kind of surprising, huh?
23:37 Yeah.
23:37 Which turns out to be 100 to 200 people.
23:41 Like a lot of people.
23:42 Not like they had four people and they laid one of them off.
23:44 But it was really important.
23:50 What exactly would you say you do here?
23:52 No.
23:52 I didn't know that Stack Overflow had so many people working for them, though.
23:57 I know.
23:57 It was founded just by Joel Spolsky and Coding Horror Guy, whose name I don't remember.
24:04 Anyway.
24:05 But yeah, it's growing to be super, super big.
24:06 And I don't know, I always sometimes wonder, like, do you really need a thousand people to run that website?
24:11 I mean, maybe, but maybe you just don't.
24:14 Anyway, that's a whole different discussion.
24:16 But so there's some interesting conversation saying maybe this is because of ChatGPT and Google Copilot and all these other things.
24:25 Like, instead of going to Stack Overflow to go, how do I connect this type of thing to that type of database?
24:31 You can just ask your coding assistant or your chat buddy and you'll get a great example.
24:38 Oftentimes more specific, right?
24:40 Like, yeah, but I'm using this version.
24:42 Oh, well, if it's that version, you've got to pass this argument too.
24:44 Right.
24:45 Thanks.
24:45 Got it.
24:46 You know?
24:46 So this is pretty interesting.
24:49 Kind of odd or weird, like six months ago, Stack Overflow wrote a blog post that said, what's different about these layoffs in the tech industry?
24:57 Not us.
24:58 We're fine.
24:59 Everyone else.
25:00 And then, you know, six months later, you know, go back and read your own article, sadly.
25:05 So that's an interesting thing to be aware of, I guess.
25:09 Yeah.
25:10 Yuri Silovanov just pointed out or posted on the XT that UVloop18 is here with Python 2nd.
25:19 Python 3.12 support.
25:21 So I was trying to use 3.12 on a couple of the Talk Python things and the websites are like, nope.
25:27 UV loop, no.
25:29 AIO HTTP, definitely not going to work on Python 3.12, which is, I think AIO HTTP still doesn't work.
25:35 And sadly, some rummy dependency that I have is like using that library, which itself is not being upgraded to 3.12, at least as of like a few days ago.
25:45 So this gets me halfway there, the two things that wouldn't install.
25:48 One more to go.
25:49 Hanging in there for AIO HTTP.
25:51 Come on now.
25:51 Yeah.
25:52 Good news nonetheless.
25:52 Thanks, Yuri, for doing that.
25:54 Oh, and thanks, Kim, for reminding us that it was Jeff Atwood.
25:57 Yes, of course it was.
25:59 Thank you, Kim.
25:59 That's the guy that went by Coding Horror.
26:01 That's what happens when you have too popular of a nickname that you've given yourself, like Coding Horror.
26:06 Yeah.
26:06 In your blog.
26:07 Yeah.
26:07 Plus that logo or icon that he's got.
26:10 I can just see it in my head.
26:12 Yeah, too.
26:13 I can't.
26:13 Like the hair on fire.
26:14 Yeah.
26:14 Developer picture.
26:15 Yep.
26:15 Yeah.
26:16 All right.
26:16 Those are all my extras that I got for now.
26:18 Yeah.
26:20 Ready for a joke?
26:21 I am.
26:21 We might even have two jokes, but we'll see about that.
26:24 Yeah, I've got one I wanted to share also.
26:25 All right.
26:26 So this one comes from Command Line Magic, but was pointed out to us by Lizzie.
26:30 I said, I love it.
26:32 Hey, I'm Kennedy.
26:33 Maybe for the show.
26:34 And the Command Line Magic says, I've always read that global variables are bad.
26:39 So this is the Star Trek thing.
26:41 And can I make it bigger?
26:42 Yes.
26:42 The Star Trek thing shows, I can't remember this character's name, this woman scientist on a shuttle.
26:49 This is all from Star Trek.
26:50 And they're like going right through the near the edge of the sun to do some studying.
26:57 And she wants to be real careful to make sure that, you know, this ship doesn't melt.
27:01 So she says, computer, notify me if temperatures get too hot.
27:05 Beep, beep.
27:06 Please define hot, says the computer.
27:08 Let's say 1.9 million Kelvin.
27:10 Okay.
27:10 Fair.
27:11 Later, Captain Picard is at the like the little food making thing, you know, that materializes food.
27:18 It says, tea, Earl Grey, hot.
27:20 It just melts.
27:22 It just like, yeah, sets it at 1.9 million Kelvin in his captain's quarters.
27:26 Yeah, that's awesome.
27:28 Isn't that good?
27:29 Yeah, I like it.
27:30 Yeah.
27:31 A little too hot.
27:31 Somebody should test this.
27:32 Yeah, a little too hot.
27:33 Maybe that tea was real hot.
27:35 Yeah.
27:35 All right.
27:36 What's your joke?
27:36 So my daughter shared this with me and I just like, I haven't stopped giggling about
27:42 it.
27:42 So did you, have you, you've been to the Oregon Zoo, right?
27:46 Yes.
27:46 Yeah.
27:47 Did you, do you know there's a new exhibit there?
27:49 Ah, no.
27:51 It's just a baguette in a cage.
27:53 Oh.
27:53 It's bred in captivity.
27:55 Oh my gosh.
27:56 Bred in captivity.
27:58 Yeah.
27:59 That's hard to do.
28:00 You know, a lot of times you try, but it just doesn't happen, does it?
28:04 I guess they pulled it off.
28:04 Yeah.
28:05 Awesome.
28:06 So.
28:06 This bad, bad dad joke.
28:08 Those are very bad dad jokes.
28:10 But I was just thinking about going to the zoo.
28:12 I haven't been there since maybe a year.
28:14 I was thinking about taking my daughter back there.
28:16 So.
28:16 What's weird is we, we almost always go to zoo lights.
28:20 So.
28:21 Yeah.
28:21 But I, so I see a lot of animals, but they're all in, they're all in lights instead of actual,
28:27 the actual animals.
28:28 Exactly.
28:28 We need to go.
28:29 Yeah.
28:30 Just put them on the wall and have them flashing for Christmas.
28:34 That's right.
28:34 Yeah.
28:34 I actually, I really appreciate.
28:36 During COVID, they like started doing the drive-through zoo lights and they still do it like partway.
28:45 So you can do drive through for a couple of days or something.
28:48 And then they switched.
28:48 Okay.
28:49 The walking.
28:49 I like driving through.
28:51 It's nice.
28:51 So.
28:51 Yeah.
28:52 It was nice.
28:52 Definitely nice.
28:53 All right.
28:54 Well, we're coming up on the end of the year.
28:56 So we'll have to get a report on the zoo lights.
28:58 Yeah.
28:59 All right.
29:00 And the bread and captivity bread.
29:02 Bread.
29:02 Bread.
29:03 Bye.
29:04 All right.