Transcript #415: Just put the fries in the bag bro
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 415, recorded December 23rd, 2024.
00:09 And I am Brian Okken.
00:11 And I'm Michael Kennedy.
00:12 And we're excited that today's episode is sponsored by us.
00:16 So check out Talk Python Training and PythonTest.com, where we have courses there.
00:23 And also, thank you to Patreon supporters.
00:25 If you'd like to connect with the show and talk with us or give us suggestions to go on the show, look for the links in the show notes for all of the Mastodon or Blue Sky links.
00:36 We check those, and we're on both of those.
00:39 You think it's a little disingenuous that we have Blue Sky, even though we live in Oregon and it's winter?
00:43 And we haven't seen a Blue Sky for a very long time.
00:46 Hey, I saw Blue Sky like three days ago.
00:49 Maybe it was a couple weeks ago.
00:51 Okay, we have them once in a while.
00:55 And if you're listening to this in your podcast player, thank you and share it with a friend.
01:01 And also, occasionally, it may be fun to switch over and watch us live.
01:06 So go to pythonbytes.fm/live and you can see when we're going to record next.
01:11 Except for on weird days like today where I contacted Michael and said, hey, can we record early?
01:16 So we did.
01:17 Well, it's Christmas Eve Eve.
01:21 Which makes it, which makes the schedule a little wacky.
01:24 Yeah.
01:25 And while we're on that, Brian, this is our last episode of the year.
01:28 Next episode, we'll just put a little seasons greeting or something.
01:32 And so people have to appreciate this one for all of 2024, right?
01:36 Because this is it.
01:37 Yeah.
01:37 Yeah.
01:38 And I really had fun this year.
01:40 So I'm grateful for everybody to stick around.
01:42 Stick it around.
01:43 Yes, I am too.
01:44 And the final thing I want to say is, if you haven't already, why don't you head over to
01:49 pythonbytes.fm and click on newsletter and sign up for the newsletter so that you can get all
01:54 of the links that we talk about in the show and some commentary around it and some notes
01:59 just delivered right to your inbox.
02:02 So that would be nice.
02:03 So everyone needs some artisanal notes.
02:05 Artisanal notes.
02:06 Yes.
02:07 Fresh Oregon artisanal made in Oregon.
02:10 So probably still dripping wet.
02:13 Maybe a little moss on it.
02:15 Yeah, exactly.
02:16 Well, why don't you take it off with the first topic, Michael?
02:20 All right, let's do it.
02:21 So I would like to talk about durable software.
02:25 Honestly, this is something I don't hear a ton of in the Python space.
02:29 So I thought I'd shine a little light.
02:31 Both projects that I'm highlighting today for the main topics on my end are sub 500 GitHub
02:38 stars.
02:38 So they're used by people, but they're not major projects.
02:41 But I think they could be really useful.
02:44 And so I'm kind of shining a light on on some up and coming ones, let's say.
02:49 So the first one is DbOS transact pi.
02:53 And the H2 is ultralight durable execution in Python.
02:57 So what the heck does that mean?
02:58 What is durable?
02:59 Like does it have try except somewhere?
03:01 No, more than that.
03:02 Way, way more than just error handling.
03:04 So what you do, imagine, Brian, that you've got some long running process.
03:09 Like one step of this process is I want to wait until a file shows up in this directory.
03:16 And then when it does, we're going to process it, save it over here.
03:19 Some other system, maybe you don't have direct conversation, like direct connections with, does
03:24 some things, processes it, gives you a response.
03:26 Then you take on the next step.
03:27 Like it's like a long running, it's not just going to happen all at once, right?
03:31 And also it has to keep going.
03:34 You know, if it's long running and you've got to restart your server or you want to deploy
03:38 a new version of the app, or there's even a bunch of stuff.
03:40 If you're doing API style things where the worker processes periodically get restarted for
03:48 memory in case they get hung up just to keep them sort of fresh, right?
03:51 So there's all sorts of reasons your long running thing might get shut down in the middle.
03:55 So that's what this thing handles.
03:57 So you write a Python function, you give it a workflow decorator, and then it calls a bunch
04:01 of sub functions to do its steps and they're decorated with at step.
04:05 And then what happens is when this runs each step before, and then basically what workflow
04:12 is happening, what step is running, what data was passed into it is serialized into a Postgres,
04:18 right?
04:19 And so if it crashes, it just goes, oh, well, what workflows do I have going?
04:22 Oh, I see these.
04:24 And this one is at step five.
04:25 And here's the status.
04:25 So just run step five again.
04:27 Wow.
04:27 And off it goes.
04:28 Okay.
04:28 Isn't that cool?
04:29 That's really cool.
04:30 It's not something I totally need all the time.
04:33 You know, it's not something I feel like is a real common thing.
04:36 But if you were doing like a lot of email, I'm sitting on an email process, right?
04:40 I'm managing myself, which no, I'm not.
04:43 But well, I guess with less mucking sort of indirectly with the self-husted thing.
04:48 Anyway, you know, you're contacting a bunch of things or you're calling a bunch of APIs
04:52 or you're uploading a bunch of files over an API, like over S3 or something.
04:56 And the thing goes down.
04:57 You know, you could do this to just go, all right, well, where was I?
05:00 Pick it up and keep going.
05:01 So let's see.
05:02 It says, all you need to do is use a Postgres database to connect to it.
05:05 There's no need for a workflow server, which is cool.
05:08 And apparently there's this thing called AWS Step Functions, because of course there are at AWS.
05:14 If there's any sort of possible type of programming or execution, there's a AWS service for it.
05:21 Anyway, it says it's 25 times faster than that, which I guess is good.
05:24 More cool features.
05:25 Schedule jobs.
05:26 Run your workflows exactly once per time interval.
05:29 So on job sort of deal.
05:31 Exactly once event processing.
05:32 Use a workflow to process incoming events.
05:35 For example, a Kafka topic exactly once.
05:38 That's pretty cool.
05:39 In observability, all workflows are automatically emit open telemetry traces.
05:44 So you can, anything that integrates with open telemetry, which is a bunch of the different systems out there,
05:48 like air monitoring and sentry type things, plug that in.
05:51 That's pretty cool.
05:52 So it clearly works on the cloud.
05:55 Does it, could it work as a local thing as well?
05:58 Yeah, it just needs a Postgres database.
06:00 So if you, if you could run a Postgres database or if you can run Docker,
06:03 then you could just run the Postgres image locally.
06:06 And you know, it's the same, just same port, same connection string.
06:09 Cool.
06:10 Yeah.
06:10 There you go.
06:11 Over to you.
06:12 I was just thinking about like recently you mentioned going through and doing,
06:17 redoing a lot of the, the transcripts.
06:20 Could it possibly do something like this to, if it ever dies to restart it.
06:24 Yeah, exactly.
06:25 If you're doing or video file processing.
06:27 Yeah.
06:28 If you want, that's a super common.
06:29 You know, I want to run conversions for these files, but it's going to take two days.
06:35 Yeah.
06:35 The audience says, that sounds interesting.
06:38 I've been trying to adopt Airflow for a particular set of scheduled jobs I have,
06:41 but it's super complicated to set up.
06:43 Yeah.
06:43 Very cool.
06:45 I want to talk about a survey a little bit that I didn't know about, and I'm still a little confused.
06:50 But there's a, there's an article on engineering at meta called typed Python in 2024.
06:57 Well-adopted yet usability challenges persist.
07:01 But, and I'll get into the topic a little bit, but I was a little confused by the survey.
07:07 It says this summer, JetBrains meta and Microsoft collaborated, collaborated to conduct a comprehensive survey on the state of Python typing.
07:15 And perhaps I just missed that, or it wasn't the results were announced,
07:19 or maybe this is the announcement.
07:20 Because this is not the JetBrains developer survey.
07:22 This is something else.
07:23 This is a survey that happened through July, through October, beginning of October, I guess.
07:31 Anyway, so back to the topic at hand.
07:34 So the, the idea is 10 years after the introduction of PEP 484 with, I didn't, can't believe it's been 10 years.
07:42 We surveyed the current state of Python type systems and the tool developed tools developers are using.
07:48 And like I said, it's a, it was a JetBrains meta Microsoft thing.
07:52 So the findings, 88% of respondents always or often use types in their Python code.
08:00 The IDE tooling documentation and catching bugs are drivers for the high adoption of types in survey responses.
08:08 So, and we'll get to the, there's a, there's a couple other things in here too,
08:12 but I wanted to highlight this because like catching bugs, that's, that's what I thought people would use this for.
08:19 Using PyPy or mypy and, and other, you know, other tools to, to check for type errors.
08:27 But I think that the big, the big wins are in documentation and IDE tooling.
08:33 I, I started using it for documentation primarily to document how somebody should use a method to,
08:42 and I think it's super helpful to say, yeah, it's going to be a list of strings that you're going to pass in here.
08:47 It just helps to understand how, especially for non-obvious things.
08:52 Is it going to be a tuple?
08:53 Is it a list?
08:54 I guess it doesn't matter.
08:55 It's an iterable.
08:56 But that's really helpful.
08:58 Then the IDE tooling came out, came along and started making it a lot easier just to, to have type hints and everything work right.
09:06 When using you, now I don't have to hop over to another screen or another, like find the definition of a function to find out what's in there.
09:14 I can get type hints to help me and the, the pop-up dialogues, the, whatever, what the code, what are those things called?
09:22 Anyway.
09:23 The ones where it's in a separate file?
09:25 No.
09:26 Yeah.
09:26 Well, like if you, if you start typing a function and you hit print, print, print, and it's in the ID tells you.
09:31 Oh, autocomplete.
09:32 Yeah.
09:33 Autocomplete stuff.
09:34 It's really helpful to be able to know, oh yeah, it's going to go in here.
09:38 I wish that there was a way to shorten it because some stuff that has so many.
09:42 So I'm using all the time.
09:44 And there's, there's so many arguments that it's like this big giant blob thing and it's not helpful.
09:49 But anyway.
09:50 Got to decrease your font size there, you know?
09:52 Maybe.
09:53 Or just like, yeah, just the, the standard.
09:56 Library stuff that I'm using all the time.
09:58 Don't keep popping that up.
09:59 I don't need type hints for print.
10:01 Just saying.
10:02 So, or I need type hints.
10:05 I just don't need that pop-up.
10:07 Anyway.
10:07 So interesting survey.
10:09 The, the, one of the interesting things here was that people were using it even for personal stuff, just personal projects.
10:18 66% of respondents said they use, still use type hints always or often.
10:25 And 78% of professionals.
10:27 That makes sense.
10:28 It was, it'd be more when, with your work code than personal code.
10:31 But I'm finding that myself.
10:33 I'm, I'm using it even for personal stuff.
10:35 I'm using type, type hints.
10:36 So a little bit of interesting things on which IDs are people using.
10:41 It's a little different from, from the developer survey.
10:43 But maybe they had a different set of list, list set that people could choose from.
10:48 So mostly VS Code, PyCharm up there, plus Emacs and NeoVim.
10:53 Emacs or NeoVim and other.
10:55 But like the developer survey had, had mostly what, oh, IDE was VS Code, PyCharm, Vim, Jupyter, Notebooks.
11:04 Anyway.
11:05 So had probably just more selection or something.
11:08 I think there was more, there were many options in the PSF one.
11:11 Yeah.
11:12 The PyCharm was the same, but VS Code was smaller.
11:16 Interesting.
11:17 Yeah.
11:17 It's a different audience as well.
11:18 Who knows?
11:18 Yeah.
11:19 Anyway.
11:19 So I, what are the real takeaways here though, for, for me as a trainer and other people that
11:28 try to teach people is I think we need to do a better job at teaching.
11:31 Some of the reasons why people are not using types and are what we've got not required for
11:39 my project, lack of familiarity.
11:41 They're too complex and it's hard to, hard to use or set up and push back from coworkers
11:48 or co-maintainers is the, is like 50, 50 people.
11:53 Anyway.
11:55 Oh wow.
11:55 It's not percent because the top is 150.
11:58 So I'm not sure what's going on here.
11:59 So that's otherwise known as 33%.
12:03 34.
12:05 I don't know.
12:05 But the, what I found is that, that I, there were, I always run into something that's complex
12:14 like a, you know, a, a, a pytest fixture.
12:18 I don't know.
12:18 I still don't know how to type those correctly.
12:21 But you can type, you can do type hints for most things.
12:24 And if you run into complex stuff, just don't worry about it.
12:27 Move on.
12:27 That's my recommendation.
12:30 There's, you can jump, go down that rabbit hole and try to try to do things.
12:34 But I think that that's something that people would train when training.
12:38 teach people how to use type hints in simple things like this.
12:41 Hey, if it's an int, do this.
12:43 But I think it's important to maybe say, Hey, sometimes it's complex.
12:48 Just like there's, there's ways to do that, but you also don't need to worry about it.
12:53 People can look up the docs for that.
12:55 I do appreciate the, the addition of not having to import like capital list and capital, you
13:03 know, whatever the other ones.
13:05 Yeah.
13:05 Like dict and set and all them.
13:08 Yeah.
13:08 Yeah.
13:08 And you can just do lowercase list and dict and stuff like that now, which is better.
13:13 That's 310 and above.
13:14 Yeah.
13:14 So anyway, some interesting information here on the, on typing.
13:18 Nice.
13:19 Awesome.
13:20 Well, you know what?
13:21 I think we just, more typing.
13:22 Let's just, it's all typing all to close out 2024.
13:28 So I would like to talk about RightTyper.
13:31 Okay.
13:32 R-I-G-H-T typer.
13:33 A fast and efficient type assistant for Python, including tensor shape interfaces and data science
13:40 thingies.
13:40 So what the heck is this?
13:41 So you're saying, Brian, that a lot of developers will write types when they write their functions.
13:47 But if you adopt a code base and it doesn't have typing or you have some colleague who
13:54 utterly resists it, resists adding types, like I will not do this.
13:58 But as a group, you've decided, yeah, we're doing it.
14:00 And somehow that person still works there.
14:01 You could use this thing, right?
14:04 So this would be good for old projects, just untyped projects, whatever.
14:08 You know, a lot of examples of projects that didn't have typing were things that traditionally
14:13 supported two and three, Python two and three.
14:16 Oh yeah.
14:16 Right.
14:16 And like, like, well, we can't have types because we want to support Python two.
14:20 And now they're like, you know what?
14:21 Take, take a hike Python two.
14:23 Maybe it's time to add types to them.
14:25 Right.
14:25 So that's what this thing could do.
14:26 So what you do is you run your Python program.
14:30 You say like Python three dash M RightTyper.
14:32 And then you can even use, do it via testing.
14:35 I've never seen a nested dash M.
14:37 I love it.
14:37 Okay.
14:37 So Python dash M RightTyper dash M py test dash continue on collect.
14:43 All right.
14:43 You could do that.
14:44 And what it will do in this case is it'll run all of your tests and it'll look at the
14:48 data exchanged for each function.
14:50 And then it will create the signatures of those functions with typing automatically.
14:56 Oh, wow.
14:57 Yeah.
14:57 So it efficiently computes type annotation coverage for files and directories in it in
15:02 first shapes of annotations for data science thingies.
15:04 Like I said, numpy jacks, py torch, et cetera, compatible with jacks typing, beartype and typeguard.
15:11 We've covered beartype and typeguard.
15:12 Both.
15:13 Awesome.
15:13 Jacks typing.
15:14 Don't know jacks.
15:15 Apparently there are some other tools like monkey type and py annotate.
15:20 But if you look at the timing performance, it's pretty good.
15:23 So it's like significantly faster than some of these tools.
15:27 Right.
15:27 So near zero overhead.
15:29 So you can kind of run it on a complicated app and so on.
15:31 Okay.
15:32 This looks great.
15:33 Yeah.
15:33 And you can run a particular script.
15:35 And then what it'll do is it'll output, I believe, a separate file.
15:41 And it says, look, you just had def barnacle.
15:43 It took an X.
15:44 But no, that X is a colon numpy.ndarray.
15:48 And this function returns an ndarray.
15:50 Right?
15:50 Yeah.
15:51 That's cool.
15:52 Or if you want to have it annotate bear type, remember bear type will verify that it's
15:57 actually right at runtime.
15:58 You can have it do that sort of deal.
16:00 Or even if you have a partially annotated, but not entirely annotated thing, it will annotate
16:05 that as well.
16:05 Yeah.
16:06 So you can specify the output top files, whether or not overwrite your files.
16:10 Obviously, the assumption would be that that is in source control.
16:14 You've committed it.
16:15 You run this and override it.
16:16 Then you look at the diff and you decide.
16:18 I think that would be the best way to use it.
16:19 Right?
16:20 That way you can view the diff and go, looks good.
16:23 Accept that change.
16:24 Looks good.
16:24 Accept that change.
16:25 I don't know about that one.
16:26 Skip that change.
16:26 You know, that kind of deal.
16:28 Yeah.
16:29 Anyway, I think this is pretty awesome and it could be real helpful for people.
16:33 It's kind of one of those tools you don't use often.
16:35 It's like Fluent or one of these other upgrade things.
16:39 It's like, well, I ran it once.
16:40 I got the old code to the new code.
16:42 Now I just work new code style.
16:43 But at the same time, that's real serious drudgery that you could avoid.
16:47 Yeah.
16:47 Now I got to try it on my code base is partly, like I said, I sometimes trip up on fixtures
16:54 and maybe it'll tell me how to type it.
16:56 I bet it'll tell you.
16:57 Yeah.
16:57 I don't know what to put for fixtures either, but it'll probably discover it.
17:00 Yeah.
17:01 Yeah.
17:01 Christian now in the audience points out faster than monkey types, Smiley.
17:04 Love it.
17:06 Oh, this is neat.
17:07 I'm looking forward to playing with that.
17:10 Cool.
17:10 Indeed.
17:11 All right.
17:11 It's getting to the end of the year.
17:13 I'm feeling a little lazy.
17:14 Are you?
17:15 No.
17:15 Tell us more.
17:16 No, I'm not.
17:17 But maybe Trey Hunter is.
17:20 So Trey Hunter wrote a blog post called Lazy Self-Installing Python Scripts with UV.
17:26 And I think that time is right for us to go back to using our own personal scripts more
17:31 because it's now so much easier with UV and Python.
17:35 So I used, I mean, I thought about this.
17:38 I used to have my own bin, the home directory bin directory full of a whole bunch of little
17:42 scripts.
17:42 I got a bin.
17:43 I got a tilde bin.
17:44 Come on now.
17:45 Yeah.
17:45 Tilde bin.
17:46 So I've got, I actually, to be honest, I haven't done this much lately because it's not
17:53 trivial with Python.
17:54 And I don't really write a lot of bash anymore or anything.
17:58 I mean, a little bit, but nothing I want to keep around.
18:02 Anyway, but that's a, there's a lot of everyday Python, everyday tasks that maybe, maybe would
18:08 help to, to code up with Python and it's easier now.
18:12 So Trey walks through, starts out with talking about how you can, how you do this with just
18:18 creating a file in a bin directory.
18:22 It has to be in your path.
18:23 So that's, I don't remember if he talks about that or not, but you have to possibly modify
18:28 your .zhrc or your bash RC or something.
18:31 To get, to get your home directory bin in your path.
18:35 But after it's there, you can stick a file in there and change the permissions on it, the
18:41 execute bit.
18:42 And, oh yeah.
18:43 And then make sure that it's a, it's a directory in your path variable.
18:47 And then, and then you can just run it whenever you want from any directory.
18:52 The, the, the, the slight differences of the, what pound bang.
18:57 what do you, I don't know what you call this thing.
18:59 Shebang.
19:00 Shebang.
19:00 The shebang at the top.
19:02 He has an example of just, using, user bin, ENV Python three.
19:07 And that's, that works fine for, for things that without dependencies.
19:11 So just a little Python script, which is actually still pretty useful.
19:15 the, the, it's interesting.
19:18 The example though, he says, his script, like my script.py, but then he has an example
19:24 of a bin zero that, just prints out 80 zeros, which is kind of cool.
19:28 but that, that really wouldn't be zero dot pi.
19:32 That would just be zero.
19:33 So you just take off the dot pi so you can just type it.
19:36 so the problem that he wants to talk about in this is, with dependencies.
19:40 And he has an example that uses, that he uses, he normalizes audio, of a given
19:46 video file with the FFm peg, and, and great tool, but yeah, it's something you have
19:53 to install.
19:53 So, or it depends, the script depends on FFm peg, normalize, and the FFm peg
20:01 utility.
20:02 So how do you deal with this?
20:03 He said he used to be using pip X, but now UV makes it super easy.
20:08 You don't have to, you don't, it doesn't even have to be installed to write the script.
20:12 You use the, the, the shebang again, but instead of, of Python, you call dash S or
20:20 dash capital S UV run and --script.
20:23 And then you, you have these three slashes with script in there and then three slashes
20:28 at the end, all in comments, but then you can require which Python.
20:32 So you can say requires Python and dependencies.
20:34 And it looks, it looks like there's a bunch of, I wonder how much of the, pipe project
20:39 that Toml syntax goes in here, but this is very Toml like, but you got your, dependencies
20:44 there and it just runs it.
20:46 So what it, yeah.
20:47 And by the way, not only does it install the dependencies when you run it, if they're not
20:52 there, it will install Python.
20:54 If Python 312 is not there.
20:56 Yeah.
20:56 And it checks it, everyone like, like say you haven't run something for a few weeks and
21:02 there's been, it's not the correct versions anymore.
21:04 They, somebody's taking something down.
21:06 It'll check it and get the right thing.
21:07 And it happens so fast that you don't have to worry about it if you're connected with a
21:11 connection.
21:12 But, the, so I tried this morning and I was thrilled to see the, it says like
21:18 reading that it's, it's the output of your script.
21:21 But then it also says, reading inline script metadata from, and then it has the title
21:29 of the script.
21:29 And I have a lot of scripts that I pipe the output to stuff.
21:32 So I was hoping that, that I wanted to like, what's going to mess up my output.
21:36 It doesn't, it, this, this reading inline stuff, comes out on standard error.
21:40 So.
21:41 And can I, can I add a, one more command flag?
21:45 Okay.
21:46 To what Trey is suggesting here.
21:48 You go back up to the env dash, UV command.
21:51 Yeah.
21:52 With the capital S just added dash lowercase Q and all that goes away.
21:56 It's the same output.
21:57 So what's the dash?
21:59 Dash is that just script or something?
22:01 I guess I've, I've never used to, I just tell it to run the script.
22:04 So I don't know what the dash test is.
22:05 The dash Q will get rid of, get rid of that.
22:08 It'll get rid of the, the management output of UV.
22:11 Yeah.
22:12 Cause I don't really care about that.
22:13 Yeah.
22:13 Like you don't want that.
22:14 Not in this.
22:16 I think if you're trying to, this is really nice because it's a super simple way to,
22:20 long as somebody has UV, that's all you need to start distributing like utilities to
22:23 them.
22:24 But the, you don't want them necessarily to see the.
22:26 Actually.
22:27 So I might, I think I'll probably leave it on because, so that I can see that it, it's,
22:34 what it's pulling from and, where it's like when it updates things or something,
22:39 if it has to install something, it'll output that.
22:41 But then it doesn't mess up the output.
22:44 Like I said, it's, it's going to standard error.
22:45 So if your pipe standard out to something else, it'll still work fine.
22:49 So, anyway, cool to, to write up like how to use command line utilities now with Python.
22:55 So yeah, you've got UV tool install for the packages with entry points, all sorts of nice
23:00 stuff.
23:00 Yeah.
23:01 UV everywhere.
23:02 All right.
23:05 Those are our items.
23:06 I've only got one extra that I want to talk about.
23:09 Do you have any?
23:10 Yeah, go first.
23:10 I got a couple.
23:11 Okay.
23:11 this is pretty quick.
23:13 I really appreciate, I forget what this is called.
23:16 so anyway, I've got, the complete PyTorce course of, of course I've split it up.
23:23 So many people can buy it in payments if they want it, but it's, it's like 59 bucks.
23:26 So on a python test.com, there's also a new, the, the new discord community is going really
23:33 great.
23:33 it's a one-time admission just to help with the costs of everything.
23:37 and then, a really quick hello.
23:40 Anyway, I've priced these where I think they're completely reasonable for people.
23:44 However, you might not live, have a software engineering job and live in Oregon, or
23:50 the U S.
23:51 so I was really thrilled the other day, somebody from India just got out of college,
23:56 doesn't have a job yet, but is, or maybe they have a starter job, but they're, they looked
24:02 at this wherever they live.
24:03 And they said, this is too much for me.
24:05 Can I get a discount?
24:06 I don't have like the regional pricing set up.
24:09 So I really parity, they pricing parity.
24:11 That's it.
24:12 So I really appreciate that.
24:13 So if you can find me on a LinkedIn or, or a blue sky or master don and just ask or,
24:20 and, and I'll, I'll work with you.
24:22 So just, I appreciate people reaching out.
24:25 That's it.
24:25 Excellent.
24:26 Excellent.
24:27 All right.
24:27 I have a couple here.
24:29 Let's, I'll go through them quick over the blue sky.
24:32 We've got Hugo VK says, Hey, Python 314 alpha three is out.
24:38 And it's got the links to the, what's new and so on.
24:41 And reasons I don't understand pictures of very delicious looking cake, which I'm here for.
24:46 But anyway, people can check that out.
24:48 That was from a couple of days ago.
24:51 Yeah.
24:51 Maybe a week, quite a week ago, five days ago.
24:54 So the testing of Python 314 continues.
24:57 Remember, I believe it's, there's supposed to be seven total releases before it goes to
25:02 beta and gets kind of locked down ish.
25:04 So you got that.
25:05 It's not cake.
25:06 It's pie 3.14.
25:08 Oh my gosh.
25:10 How did I miss it?
25:11 How did I miss it?
25:13 All right.
25:13 One thing that drives me crazy.
25:15 If you're a Mac person is there's almost always a command you can hit for settings.
25:21 That is the same command comma, any app you want.
25:23 The settings for command comma, unless it's just disrespect in its own self.
25:27 It has no self-respect.
25:28 Command comma will bring up whatever settings it has.
25:30 Web browser, word editor, whatever.
25:33 That's, but check for update is all over the map.
25:35 Some apps automatically check for updates.
25:37 Some only tell you there's an update.
25:39 If you check for it, Firefox and Zen browser only do it.
25:42 If you pull the about screen and show it, then it'll tell you.
25:46 But on Vivaldi, if you pull the about screen, it won't tell you if there's an update.
25:49 Like it's all, all annoying.
25:50 So I went through and I added a check for update hotkey.
25:55 So this is a kind of a cool trick.
25:56 I thought people would appreciate it.
25:58 If you go to macOS, you go to settings, you go to keyboard, you go to keyboard shortcuts,
26:03 then you go to app shortcuts and pick out individual apps and say, I want this menu, whatever the
26:08 menu text is, along with case sensitive spaces, everything is super annoying.
26:13 You can't edit it.
26:13 So get it right.
26:14 Is it a capital four?
26:15 Check for updates or a lowercase four?
26:17 Check for updates.
26:18 You got to get that right.
26:19 But then you can just say control you and then you can go or whatever you want to pick.
26:22 And then if you just like in any app, if you set up the ones you cared about checking,
26:26 you just hit check for updates and it pulls it up.
26:27 It's kind of nice.
26:28 I'm just still blown away that I never knew that command comma was the settings thing.
26:33 It's almost every Apple command comma will do what you're looking for.
26:37 Okay.
26:38 Yeah.
26:38 Yeah.
26:39 But there's no update equivalent.
26:40 So control you now is from my computer.
26:42 Okay.
26:43 So I got Firefox, OBS, VS Code, Zen Browser, SourceTree.
26:47 SourceTree is one of those that it'll go months without telling you there's an update.
26:50 But if you check, there's almost always an update.
26:52 All right.
26:53 On to the next thing.
26:53 What do we got next?
26:54 Oh, I just wanted to talk about something really kind of fun and interesting on Talk Python.
27:00 I got two things on Talk Python real quick here.
27:01 But this is a fun web, more, not so much a Talk Python thing, just like a fun web design,
27:08 thinking about URLs.
27:09 So check this out, Ron.
27:10 We can go to any episode here.
27:12 So Peter Wang, it was on and Peter Wang is super fun.
27:15 If you look at that episode page, you can see there's a thumbnail, like a social media image
27:20 of that, which is also the YouTube thumbnail, right?
27:23 Yeah.
27:24 And let me see if I can make this wider so you can see it's going to be small.
27:28 But up here, if I just type .jpg on the end of the URL, I get the thumbnail.
27:34 And if I just type VTT, which is Web VTT transcripts, I get the transcripts.
27:39 Oh, cool.
27:40 Isn't that fun?
27:41 Yeah.
27:41 I want to encourage people to think more about, like, instead of having a bunch of different
27:45 ways to get things, just, you know, think about, like, resource.
27:48 I don't know what you call it.
27:49 It's a little bit REST-ish.
27:51 But I think it's neat.
27:52 Like, maybe if I had a JSON representation, I could just put .json on the end and it would
27:56 represent the data of the podcast as JSON.
27:58 I don't really know what I would put there.
28:00 But anyway, I thought, I just want to encourage people, you can play that at Talk Python, but
28:04 encourage people to just think about making cool little URL API interactivity bits that
28:10 way.
28:10 Neat.
28:10 I like it.
28:11 Yeah.
28:11 Thanks.
28:12 All right.
28:12 Next, I did a mega write-up.
28:15 You can see that on the Talk Python blog, talkpython.fm/blog, 16 minutes reading time,
28:20 it suggests, for this.
28:21 I wrote up an in-depth analysis of the top Talk Python episodes, top five.
28:27 And I even did a little Jupyter notebook action to come up with where are they on the scale
28:31 and how does that compare against the average number of downloads?
28:33 Number one is awesome text tricks with NLP and Spacey with Vincent Wormerdome.
28:39 Number two, this one really surprised me.
28:41 It was so popular.
28:42 Being a developer with ADHD with Chris Branding.
28:46 Awesome episode.
28:47 I didn't expect to be popular.
28:49 Version APIs with Stanislav.
28:52 Handis and beyond with Wes McKinney.
28:54 That's not surprising.
28:55 And the State of Flask and Palance with David Lord.
28:57 So those are the top five.
28:58 But just super detailed dive into what was covered, what was important and stuff.
29:03 So I did that Sunday?
29:05 Yeah, Sunday morning.
29:06 The house was quiet.
29:07 People were chilling.
29:07 So I'm going to write.
29:09 Well, I mean, it's a 16-minute read with everybody with ADHD.
29:13 I don't think anybody's going to read the whole thing.
29:15 Yeah, maybe the people who were served by that podcast were not.
29:20 No.
29:20 You could always listen to the episodes, but it highlights what was covered.
29:24 No, I think that's cool.
29:25 Yeah.
29:26 Neat.
29:26 Yeah.
29:26 Thanks.
29:27 Okay.
29:27 Now we're down.
29:28 Oh, wait.
29:29 No.
29:29 One more thing.
29:30 Since we talked about...
29:31 I wasn't originally going to point this out.
29:32 But since we talked about typing so much, and you talked about teaching and typing, I have
29:36 a four and a half hour course called Rock Solid Python and Type Hints and Tools.
29:40 Oh, cool.
29:40 So over at Talk Python, I'll put that link in the show notes and people can check that
29:44 out.
29:44 This is one of my absolute favorite courses of all of our 50 or so courses.
29:48 And it's a good one.
29:49 This type of stuff is really neat.
29:51 Neat.
29:52 Okay.
29:52 Are you ready for the joke?
29:53 I am.
29:54 This one, if you've heard of lolcode, some of these joke languages, this is one of them,
30:00 but it's a little bit more Python oriented, I guess I'll say.
30:04 Let me see if I can zoom in for making it a little legible.
30:06 So we come down here and there's a table chart.
30:10 So it's like an alternative language.
30:12 So if you want to write Python like code, but you don't like it.
30:17 So you've got like return.
30:19 Instead of writing return, you can say it's given.
30:21 And if you want to say plus one, it says riz.
30:26 So this is called Python with riz or no, that's not exactly.
30:29 That's its description.
30:30 Pygat.
30:31 And I'm not in this world very much.
30:33 It kind of goes off a lot of like Twitch stream type of terminology.
30:39 So you've got print.
30:41 And instead of print, you yap.
30:42 For true, you get Aurora.
30:44 For false, it's cooked.
30:45 You bop instead of def.
30:47 And then for while loops, it's let him cook.
30:49 Just let him cook.
30:52 So for example, a wild shoe would be let him cook, Aurora.
30:55 Import is glaze.
30:57 Let's see.
30:59 If, L, if, else is chat.
31:02 Is this real?
31:02 Yo, chat.
31:03 Only in Ohio.
31:04 Okay.
31:05 That's funny.
31:06 Oh, glass is skibbity.
31:08 I actually get that reference.
31:10 Break is just put the fries in the bag, bro.
31:14 Raise is crash out.
31:20 Okay.
31:20 And then assert.
31:21 I love assert.
31:22 Assert is sus.
31:23 Yeah.
31:24 It's pretty sus.
31:25 Oh.
31:26 Sus, I think we should add to the language, maybe.
31:30 Yeah, sus is pretty good.
31:31 Yeah.
31:32 Okay.
31:32 Let's see.
31:33 All right.
31:33 So now let's look at an example.
31:35 Okay.
31:35 So we've got here.
31:36 We've got here on the left.
31:38 We've got glaze numpy.
31:40 Ah, N, P.
31:41 Lock in random glaze choice.
31:43 And then skibbity, D, Rizzly.
31:45 And plus pass, I guess.
31:47 Anyway.
31:48 Duke Dennis equals zero.
31:49 Says let him cook, Aurora.
31:50 Just let him cook.
31:51 And chat.
31:52 Is this real cooked?
31:53 Crash out error.
31:56 Only in Ohio.
31:57 Just put it in the fries, bro.
31:59 Just put the fries in the bag, bro.
32:01 Ah, this is good.
32:03 I think it really runs.
32:04 I'm pretty sure.
32:05 Well, I think that we should have like a conversion that you can take some code and convert it to this.
32:12 Yeah, yeah.
32:13 Like a transpiler sort of thing.
32:15 Yeah, yeah.
32:15 Just an upgrader.
32:16 Like a two to three, but a pie to gap.
32:19 Yeah.
32:19 Skibbity Rizzler.
32:20 Pluh.
32:21 Just put the fries in the bag, bro.
32:25 That might be my favorite.
32:28 Or let him cook.
32:30 Just let him cook.
32:31 Chat, is this real?
32:33 This is good.
32:35 Crash out.
32:35 Crash out.
32:36 All right.
32:37 Well, you ready to crash out on this episode?
32:38 I am.
32:39 Just put them in the fries, bro.
32:40 Put the fries in the bag, bro.
32:42 Indeed.
32:43 Well, awesome.
32:44 All right.
32:45 Well, thanks everybody for a wonderful 2024.
32:48 And we're going to, like I said, we'll have a short thank you episode next week, possibly.
32:54 Possibly.
32:55 And then, but we'll see everybody in 2025.