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


Transcript #382: A Simple Game

Return to episode page view on github
Recorded on Tuesday, May 7, 2024.

00:00 Hey, everyone. Hey, Brian.

00:02 Good to be back.

00:03 It's good to be back. I'm back in a place with somewhat controlled audio,

00:06 although I'm having a bunch of tree work done, and one of those giant tree grinding machines is literally outside my window.

00:12 However, I got a new microphone, and I believe it didn't even pick it up.

00:17 It's ridiculous.

00:18 So there's a bunch of onboard software stuff built into the mic, and it might not even affect us.

00:27 Does it have a bunch of AI in there so they can correct your grammar if you say something wrong?

00:31 That'd be cool.

00:31 That would be cool.

00:32 No, but it has noise gates and noise reduction and high-pass filters and stuff like that.

00:40 With that, let's go ahead and kick this off.

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

00:48 This is episode 382, recorded May 7th, 2024.

00:54 I don't know if you caught it last time, but I was a year behind last year.

00:57 So I said 2023 last time I was doing the show intro.

01:02 But no, it is in fact 2024, despite what I believe about time.

01:06 It seems like it's going too fast.

01:08 Nonetheless, May 7th, 2024.

01:10 I'm Michael Kennedy.

01:11 And I'm Brian Okken.

01:13 And this show is brought to you by Scout APM.

01:16 Check them out during their segment.

01:18 It really helps support the show.

01:19 Connect with us on Mastodon.

01:21 All three of us are over there.

01:22 Links are at the top of the show notes.

01:24 If you want to be part of the live recording, pythonbytes.fm/live.

01:28 Usually Tuesdays at 10 a.m. Pacific time.

01:31 And finally, Brian, I know we sometimes talk about our newsletter, but people are subscribing and they're getting a lot of value out of it.

01:37 So if you want an artisanal handcrafted digest of all the stuff we talked about in the show,

01:41 deliver an email form so it's permanent right there.

01:43 You can forward it, share it.

01:44 All you got to do is head over to pythonbytes.fm, click the newsletter link right in the center of the screen,

01:52 and then bring you to the friends of the show.

01:53 Keep your email private.

01:54 We don't share it.

01:55 We don't do anything weird with it.

01:58 We just want to be able to send you stuff about the show.

01:59 So people are really getting a lot out of this, Brian.

02:02 I checked last week the email that you sent.

02:04 Yeah.

02:05 Normal.

02:06 If you're doing good, if you're lucky, if people really want to hear from you,

02:10 there's a chance that about 20% of people will open emails that you send in the newsletter form to them.

02:16 The one you sent was like 95% opened.

02:18 That's awesome.

02:20 That is so awesome.

02:21 Thank you, everyone, for actually caring and subscribing.

02:24 So pythonbytes.fm, click on newsletter, and sign up for it.

02:28 That'd be great.

02:29 Yeah.

02:30 With that, yeah, go ahead.

02:31 One of the things I wanted to bring up is, so now there's two ways.

02:34 Then if there's something that you heard on the show, but you can't remember what it was,

02:37 you can search your inbox if you save it.

02:41 Save our old emails from us.

02:44 But we also, we haven't talked about it a lot, but the search box on pythonbytes.fm is excellent.

02:50 It searches both the show notes and the transcript.

02:54 So even if it wasn't listed, but it was said, it might find the right episode for you.

02:59 So it's pretty cool.

03:00 Yeah, absolutely.

03:00 Yeah, I use that.

03:01 I actually use that to decide, oh, if we talked about this thing before.

03:04 Three years and I already forgot about it, or should I cover it, right?

03:07 Yeah, exactly.

03:08 Amazing.

03:09 Amazing, amazing.

03:11 All right.

03:11 So we jump in to the first topic.

03:13 Well, I want to act on that information with a product called Act.

03:20 And it's from Necto.

03:22 Necto's, I think it's the person's, maybe just their name is Necto, and it's their Act.

03:28 N-E-K-T-O-S-A-C-T, but it's in the show notes or in the email that you'll get if you sign up.

03:34 Anyway, what it does, it's super cool.

03:37 It runs, what it's doing is it's running GitHub Actions locally.

03:41 So if you could set up, you could set up this.

03:45 What you have to do is you have to install it, and it's got great installation instructions.

03:50 I used Homebrew, but it's got installation instructions for Chocolaty or even GitHub CLI.

03:57 I could have used that or Mac boards, Scoop.

04:00 I didn't know what, I don't know what Wingate is.

04:03 Anyway, getting...

04:03 Wingate is, you know how on, for example, on Boutique, we have ApptGet, Debian Systems sort of thing?

04:10 So that is the, for a long time, Chocolaty was the package manager.

04:15 It was kind of like Homebrew, sort of external for Windows, and Wingate is like

04:20 the official Microsoft package manager for Windows.

04:22 Oh, okay.

04:23 It's kind of a new thing.

04:24 I don't use it very much because I don't use Windows enough that I care about that stuff,

04:28 but yeah, that's what it is.

04:29 Cool.

04:30 Well, so this project, really what it does is it's, you can run your workflows locally,

04:36 but you have to install it and you have to set up Docker locally.

04:40 So it could, because it uses Docker, which actually I kind of love anyway.

04:43 So what it's doing is it's running your actions.

04:46 It loads up a Docker image and runs your actions.

04:51 But the control over it's really pretty cool.

04:54 So I should have looked this up, but there's, you can, there's different runners,

04:59 but the way you run it is there's a bunch of different commands that you can run.

05:04 So you can run, run your pull requests or you can run a specific job.

05:08 There's a whole bunch of different, different parameters for this to be able to run different pieces.

05:14 I used it just to run.

05:16 I wanted to just check, check my test, test run within locally.

05:20 And because I wanted to play with the different test jobs and coverage, be able to run those individually.

05:26 And it really was slick and it's super fast, really easy to use.

05:30 It's really pretty cool.

05:32 It's also open source.

05:34 So nice.

05:35 We're going to link to the GitHub repo as well.

05:37 So you can check it out.

05:39 And it's, apparently I'm not the only one that loves it.

05:41 It's got 1.3 thousand stars.

05:43 So that's forks.

05:45 50,000.

05:45 Oh, that's forks.

05:46 There's 50,000 stars.

05:47 Nice.

05:48 It's awesome.

05:49 This is so awesome.

05:50 If you do a lot of with GitHub actions, this is so cool.

05:53 one, you can sort of test it and run it faster and iterate really quickly

05:58 till you get it dialed in, right?

05:59 Yeah.

05:59 Then the other thing, Brian, that might be interesting, there was, I don't know,

06:04 I'm kind of inspired a lot by what the 37 signals people are doing around deployment and stuff.

06:09 One of the things they did recently is they moved their continuous integration.

06:14 Maybe even using this, I don't know.

06:15 Moved their continuous integration to developer machines.

06:18 So instead of having, you know, one server where all the builds just queue up

06:23 behind each other.

06:23 It's like, everybody has a super high-end computer is oftentimes faster than the CI servers anyway.

06:29 So run it there is like a pre-commit hook sort of thing.

06:32 Yeah.

06:32 Or, you know, some sort of push, some kind of event locally.

06:36 And so this, it kind of lets you go down that workflow as well.

06:39 If you're like, we just want to distribute the compute so we can make our actions run a lot faster,

06:44 at least a good chunk of them, you know?

06:46 Very neat.

06:47 One of their ideas for this also is to use it as a local task runner instead of like make

06:53 or things like that, which is interesting.

06:56 You could have workflows that aren't reachable from CI that you can just run locally

07:00 through, through this if you're already using it.

07:02 That's really awesome.

07:03 This is great.

07:04 I love it.

07:04 All right.

07:05 Well, so since you brought up Docker, let's keep going.

07:08 Okay.

07:09 Let's keep going.

07:10 I'll get there in a second.

07:12 So I'm sure you're familiar with Ngrok.

07:14 We've talked about how Ngrok is awesome before and it solves a super interesting problem.

07:19 So Ngrok is a commercial project.

07:21 I'm a big fan of it.

07:22 I'm a pain user of it.

07:24 We'll see if I continue to be honestly after I read this out.

07:26 However, I'm a big fan of it, right?

07:30 So there's all these situations where you need to easily get access.

07:35 Something on your machine in terms of an API or a website needs access to the internet

07:40 just for testing or just for a demonstration purpose.

07:43 Like how often are you, you're in a Zoom meeting and somebody's like, hey,

07:47 I want to show you this new design and this new user interaction.

07:50 So let me share my screen.

07:51 And then they're like on a huge monitor and it's blurry and you're like,

07:54 I think I like it.

07:56 I don't know, you know.

07:57 But with Ngrok, you just say here, just everybody connect to my little local dev app

08:01 and click on this and see how you think it feels, right?

08:04 Or you want to debug a web hook which has to come from the internet to somewhere public

08:08 so you can just fire up an Ngrok endpoint or use SSH to tunnel what would be regular web requests

08:15 into your machine that turn back into web requests to hit Flask or FastAPI

08:18 or whatever it is, right?

08:20 I did it for web hooks a bunch recently and also for mobile apps.

08:24 Oh, yeah.

08:25 When Lauren and I were building out the mobile apps, they had to talk to

08:29 and just sort of do some callbacks and other things and we were testing out the API

08:32 and just like, here, we'll fire up an Ngrok and he'd be on his phone running the app,

08:38 clicking with it, debugging it, and it would be coming through the API hitting breakpoints in PyCharm.

08:43 Awesome, right?

08:43 Yeah.

08:44 But it's more of an individual type of tool and also closed source and paid.

08:50 Not that those are terrible, but they are, you know, that's what they are.

08:53 So I want to tell you about Porter, like P-O-T-R, which is an open source Ngrok alternative.

08:59 So the idea is exactly the same that I just described.

09:03 However, the way it works, don't watch the videos, they're very bad.

09:07 Go to the docs instead.

09:08 Similar though to Act, it has not as many, but 2000 stars.

09:14 How old is it?

09:15 Six months old for a six month old project.

09:17 That's pretty good.

09:18 Yeah.

09:19 So basically to set it up on the server, you have to have, it says a virtual machine.

09:23 You need a machine.

09:25 This could be, it could be a VM on the internet.

09:28 It could be a VM locally.

09:29 It could be a real machine sitting, you know, on a, on a beat up laptop in the corner

09:34 with a public IP.

09:35 Who knows?

09:36 Whatever.

09:36 You needed some kind of pretty lightweight machine, you know, $10, $5 digital ocean server.

09:41 You got to set up a cloud fair, Flare token for wildcard because it manages

09:46 subdomains automatically and GitHub credentials to log in.

09:50 And then that's it.

09:51 And the idea is that it actually does, it's built for teams as well.

09:56 So teams can manage different ways to call back into things and connect things

10:00 and so on.

10:01 So it's got like a whole team dashboard and people can set up the teams and whatnot.

10:06 But basically, you just set this up and you run a Docker container on a simple machine

10:11 and then all of a sudden you've got your own, very own ingrock where data also

10:16 is not going through ingrock but it's just private to you, of course, right?

10:19 Because it's HTTPS over to SSL and then back.

10:23 Okay.

10:24 So when you're, is that, is it setting up, like ingrock, does ingrock set up a Docker?

10:31 Does it go through dockers also?

10:32 No.

10:33 They run the server side for you.

10:36 Okay.

10:36 They probably use Docker but they completely manage the server side for you.

10:41 You just use a CLI that like talks to that thing and then sets up a connection,

10:45 an SSH connection back to you.

10:47 Okay.

10:47 And then when I'm debugging it, if I set a breakpoint or something, do I need to set that

10:52 in the Docker image or do I need to?

10:54 No, no.

10:54 The Docker image is just a pass-through.

10:56 Oh, okay.

10:57 Got it.

10:57 Yeah, yeah.

10:58 It really does work just kind of like ingrock.

11:00 Yeah, yeah, yeah.

11:01 It's super, super similar.

11:02 I haven't used it yet but I'm looking to start trying this out and then for the client,

11:07 you just, there's a couple ways to install it but pretty straightforward

11:10 and then you just, instead of saying Docker, sorry, instead of saying Docker

11:15 HTTP something, you say Porter HTTP something and off you go.

11:18 Nice.

11:19 All right.

11:19 Yeah.

11:19 Pretty cool.

11:21 It sure is.

11:22 You know what else is neat, Brian?

11:24 I think Scout is neat.

11:25 Scout.

11:26 Scout APM.

11:27 Scout APM is pretty awesome.

11:28 Let me tell you real quick about Scout APM.

11:32 They're big supporters of Python Bytes so we appreciate that very much.

11:36 So if you are tired of spending hours trying to find the root cause of issues

11:41 impacting your performance, then you owe it to yourself to check out Scout APM.

11:45 They're a leading Python application performance monitoring tool, APM, that helps you identify

11:51 and solve performance abnormalities faster and easier.

11:54 Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs,

11:59 and the dreaded N plus one queries that you can end up if you do lazy loading

12:04 in your ORM and then you say, oh no, why is it so slow?

12:07 Why are you doing 200 database queries for what should be one?

12:09 So you can find out things like that.

12:11 And it links it back directly to source code so you can spend less time in the debugger

12:15 and healing logs and just finding the problems and moving on.

12:18 And you'll love it because it's built for developers by developers.

12:21 It makes it easy to get set up.

12:23 Seriously, you can do it in less than four minutes.

12:25 So that's awesome.

12:26 And the best part is the pricing is straightforward.

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

12:35 And I just learned this, Brian.

12:37 They also have, they provide the pro version for free to all open source projects.

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

12:47 just shoot them a message or something on their pricing page about that.

12:50 So you can start your free trial and get instant insights today.

12:54 Visit pythonbytes.fm/scout.

12:56 The link is in your podcast player show notes as well.

12:59 And please use that link.

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

13:04 and then they'd stop supporting the show.

13:06 So please use our link pythonbytes.fm/scout.

13:08 Check them out.

13:09 It really supports the show.

13:11 Indeed, indeed.

13:12 What's next, Brian?

13:14 We've talked about type annotation a lot and I ran across this blog post

13:18 called Annotating Args and Keyword Args in Python.

13:21 And actually, I never tried that.

13:23 I've mostly just, if I have star args or star star kw args, just sort of leave it

13:31 as is.

13:31 I don't, I haven't tried type annotating those.

13:34 So I was intrigued as to how I would do that if I wanted to do that.

13:38 And there's a article about it from Redawan, I think.

13:44 What's his first name?

13:45 Anyway, Redawan Delaware.

13:47 Cool name.

13:48 And it's the, there's some problems with all the ways he tried that seemed obvious.

13:55 Like, sending, passing in a dictionary that he expected.

13:59 apparently my pie doesn't like that.

14:01 Or doing like a deck sort of describing the tuple or a dictionary that are coming in.

14:08 There were issues with those.

14:09 The, but I'm just going to hop to the end result.

14:12 Apparently, using, using information from PEP 589, 646, 655, and 692, there are features

14:21 like unpack and type dict along with typing that we're used to that are part

14:27 of the typing module.

14:28 And the, the result is kind of cool.

14:31 I mean, it's not terrible.

14:32 There's a couple, there's a pre 312 and a after 312 version.

14:36 I'm glad that he listed both.

14:38 But you, you set up a, a class for your keyword args and describe what the,

14:43 what the types are there in your keyword under type dict.

14:47 And then for the star args, it's an unpack, you say an unpack of a tuple

14:53 and then the types of the tuple.

14:54 So you can do good typing as to the, the types of things that you want to come into

15:00 star args or keyword args, which is kind of neat to make sure that, I mean,

15:05 you think of star args or keyword args as just anything can come in.

15:08 But if you really don't want just anything to come in, this would be great.

15:12 So I like this.

15:13 Yeah, it's cool.

15:14 It's a totally reasonable thing to think.

15:15 Like I want to pass one number or two numbers or a hundred numbers.

15:20 but whatever it is, I want to operate on numbers, right?

15:22 Yeah.

15:23 Or yeah, I want in this example, it's either integers or strings that I'm going to get in

15:28 or insert pools.

15:29 So I would have never come up with this.

15:32 The creator class derived from type dict with multiple values to then wrap that

15:37 as an unpacked of, okay, I'm awesome.

15:40 They have it.

15:40 Yeah.

15:41 But this is, this is amazing.

15:43 Yeah.

15:44 Seems like there could be an easier way, but anyway, so this is pretty cool

15:49 and he's got some great writing.

15:51 One of the other articles that I started down this rabbit hole was a more recent article

15:56 from April 27th called typos does what I thought type guard would do in Python

16:01 and I don't use either type guard or typos so I'm not sure what these are.

16:06 But if you are a type guard person, maybe you want to check this out.

16:09 Yeah.

16:10 Yeah.

16:10 All right.

16:11 That also looks cool.

16:11 Well done.

16:12 Well done.

16:13 All right.

16:13 I have one more item for us here and it's pretty awesome, Brian.

16:18 It's pretty awesome.

16:18 Awesome.

16:20 Ever since the, the guy behind just path got thinking about, hey, people should use

16:26 the featured on Python bytes episode number badge.

16:30 I'm like, oh, there's probably more to these badges than I give them credit.

16:33 I mean, I know I've seen plenty of badges, but there's a lot of badges.

16:35 So this is a GitHub repo with a thousand stars that is a curated list of GitHub badges

16:41 for your project.

16:42 And let me tell you, what are you interested in, Brian?

16:45 You want to talk about contacts?

16:46 You want to talk about groups, socials, operating systems?

16:49 Where are you streaming?

16:51 What kind of tests?

16:52 What kind of food do you want, for example?

16:54 Well, that's under the tests category.

16:56 I think that's the failed indent I'm right here.

16:59 I think that's all just one thing.

17:00 I don't think that's this level.

17:02 I think the test got unindented for some reason.

17:04 Okay.

17:04 What kind of terminal do you rock?

17:06 And so on.

17:07 Okay.

17:07 So I'll just go, I'll pick a couple just to give people a sense because I don't want to just read

17:11 a list of a bunch.

17:13 But like, for example, you see the scroll bar, Brian?

17:15 I mean, this is a lot.

17:17 So under contact, you've obviously got email, but you've got, if you want to be specific,

17:22 say, hit me in my Gmail or hit me up on my ProtonMail.

17:25 You can actually have those as badges.

17:27 You can have Signal, Telegram, Tutanota, Noda, however you say that, WhatsApp,

17:34 WeChat, all those things are pretty cool, right?

17:36 For groups, you know, Slack, Discord, Zoom.

17:39 Apparently, I think Zoom is getting into like, kind of trying to be more Slack-like,

17:42 even though I never use it for that.

17:43 Reddit and so on.

17:45 Under social, that would be Bitbuckets?

17:48 Social coding, I guess.

17:53 I don't know.

17:53 But, you know, GitLab, Instagram, Pinterest, Quora, Reddit, et cetera.

17:58 And then you've got some for the OS, right?

18:01 Not just really standard ones, but, you know, like CentOS or Deepin or, you know,

18:06 whatever.

18:06 But they also have their little icons that go with them, right?

18:09 Like the red hat is red, but it also has the hat.

18:11 That is the red hat one.

18:13 And I'll just go down a little bit and find some more of the uncommon ones

18:17 down here.

18:18 ETL, that sounds boring.

18:21 like mobile frameworks.

18:23 So they've got like Flutter, for example, like the app I was just talking about earlier

18:26 that Talk Python is built on Flutter.

18:28 We could have that or Ionic or Cordova or, you know, Xamarin, whatever you want.

18:32 So, isn't that cool?

18:34 Yeah, that's pretty fun.

18:35 What security platform is using?

18:37 Is it like, this is verified by Snyk?

18:39 And so on.

18:40 Anyway, so if you're thinking about your next project or your GitHub profile or whatever,

18:44 I present to you many, many GitHub badges for the taking.

18:47 Yeah, let's see if I can get like, like four rows of badges onto a project.

18:51 That'd be fun.

18:52 Exactly.

18:52 Exactly.

18:54 Well, any other extras?

18:56 Wait, this is one that wasn't your extra.

18:59 That's not an extra, but I do have extras.

19:01 Okay.

19:01 I'll go, I'll go ahead and go through them since I already got my stuff on the screen for us.

19:05 All right.

19:05 So this one comes from the Django Not folks.

19:10 So the Django Not program is a program to help people who are interested in Django become core contributors,

19:17 not just users of, but contributors to the Django code base.

19:23 So it's kind of like a mentorship program around that, which is excellent.

19:26 And you must act soon.

19:28 You have six days to apply.

19:31 So the, the session two application is open.

19:34 I actually interviewed Sarah, sorry, Sarah, Boyce, Sarah Boyce, and Tushar Gupta about their experiences running and coordinating the first one,

19:46 right?

19:46 back on Talk Python in March.

19:49 Yeah.

19:50 March this year.

19:52 So if you want to hear more about it and you think maybe I want to apply to it,

19:55 well, you've got six days to do so, to be part of it.

19:58 It doesn't cost anything, but there is an application process, which is cool.

20:01 That was fun.

20:03 And then I was on Django chat, the Django chat podcast with Will and Carlton.

20:10 And we talked all, yeah, I do too.

20:12 Those guys are both great.

20:14 And we talked all about this whole, new deployment style and self-hosted open source and all these different things that I've been sort of talking on and off on about the show here.

20:24 But we spent a good chunk of the show just talking about, you know, how,

20:28 how am I running things for Talk Python and for Python bytes and for a bunch of other stuff.

20:32 And then what are some external projects and some of the other advice?

20:36 And it's just really fun.

20:37 So we had a good time talking to people can check that out.

20:40 Extras for you.

20:41 Yeah.

20:42 I'm going to start off with some bad news and then some good news.

20:45 So I came across this.

20:47 It's from bleeping computer, but I saw it on a whole bunch of websites.

20:50 Fake job interviews, targets developers with new Python backdoor.

20:55 And it's just, it's just awful.

20:57 It's nefarious and evil.

20:59 And I, you know, the idea of a lot of viruses is to try to get people to run code,

21:05 you know, sneak in stuff to run code.

21:08 They're just going straight to developers and saying, Hey, as part of the interview process,

21:13 we'd like you to download like this repo and run the code in there.

21:17 And then I don't know what they're telling to do after that, but it's too late at that point.

21:21 At that point, they've just run the virus.

21:23 So that's just awful.

21:25 Anyway, be careful.

21:26 If you're, if you're doing a job interview and they say, Hey, go, go run some code.

21:30 Maybe don't, or look into it a little bit more.

21:33 I mean, it's so bad though, because it could just be, well, all you got to do is pip install the requirements and take this project and

21:39 then add this little feature and show us how you did it.

21:40 Right.

21:41 that already runs arbitrary code from the internet.

21:43 Yeah.

21:43 Oh yeah.

21:44 It could just awful.

21:45 That wouldn't.

21:46 Yeah.

21:46 Yikes.

21:48 Anyway.

21:48 Okay.

21:49 So that's bad news.

21:50 Good news.

21:51 Good news is this, this is the week that I'm going to switch the course.

21:54 the PI test course is a complete PI test course is going from a teachable to a new

22:01 platform podium.

22:01 and it's just, the reasoning is, the, you don't want to hear the reasoning,

22:06 but mostly it's the future of the, that I'm working with for more courses and more things I want to do with

22:13 people teaching PI test and other things fits better with podia platform

22:16 than, then, then with teachable.

22:18 So, to, to sort of celebrate the switch, I haven't made the switch yet.

22:23 It's going to happen this week, but you can already get to this new one.

22:26 It's at Python test.

22:27 Podia.com.

22:28 And now through Sunday, you get 25% off if you use the code PI test and,

22:34 and that's P Y T E S T.

22:36 And you can, find that link in the show notes also.

22:40 Okay.

22:41 So, and lastly, I know PyCon is coming up.

22:45 I won't be at PyCon, but I, I know a lot of great people will be.

22:49 And so to celebrate PyCon, I have a episode two 20 at Python test.

22:55 That's getting the most out of PyCon and some great, and some great tips from Rob Lubwick,

23:00 Rob Ludwick, about, you know, having fun at PyCon.

23:04 So check that out.

23:05 Indeed.

23:06 Yeah.

23:07 I'm going to be doing, probably a data science panel podcast.

23:11 That's also going to be live streamed with, the jet brains crew over there.

23:15 So that'll be a lot of fun.

23:17 Yeah.

23:17 And I will probably do Python bytes, but since you're not there, probably not an open space in person one,

23:23 probably just sneak away to a quiet spot and we'll do it like this.

23:26 Different background.

23:27 All right.

23:27 Awesome.

23:28 All right.

23:29 Is that it?

23:29 I had one more, one last minute one, which I thought was cool.

23:32 Just a, one I just threw in.

23:34 I saw this on Amazon just before we started recording.

23:37 Somebody named Orion Reed, posted this, bookmarklet, that, to visualize,

23:43 your DOM.

23:45 it's a JavaScript book market bookmarklet to visualize your DOM in 3d.

23:50 I love it.

23:51 So cool.

23:52 So it, it may seem just like silly, who cares?

23:57 But if you're looking at why is this thing overlapping that thing?

24:00 What about Z ordering?

24:02 Or why is, you know, this is actually contained in that versus next to that,

24:06 like all that kind of stuff you would see from this 3d rotational thing.

24:09 It's beautiful.

24:09 Yeah.

24:10 It's pretty, pretty neat.

24:11 So I'll link to that.

24:12 That's all my extras.

24:14 So, there's a question out there, Brian.

24:16 This is an important one.

24:17 who will carry the Python staff of power at PyCon and Brian, who will do this?

24:22 I don't know.

24:23 I don't know.

24:24 I know, but I think there's going to be a great disturbance in the forest is what I'm

24:29 feeling.

24:29 Speaking of which, how about a joke?

24:31 Yeah.

24:31 I have two jokes for people.

24:33 One, very heartfelt and sincere.

24:35 And we're going to close out the show with that.

24:37 But first one, a sneaky little game.

24:39 So this comes from Reddit and it's just on our slash program and humor.

24:42 It's just, just a little game.

24:44 And it says import random import OS randomly get a number.

24:47 Guess equals input.

24:49 Silly game.

24:49 Guess the number between one and 10 and it converts it to an end.

24:52 Right?

24:52 So you would think of course, if gas equals number, you won else.

24:56 Sorry.

24:56 You try again.

24:57 No, if gas equals number print, you won else.

25:01 OS dot remove.

25:02 So you could do it.

25:02 It's just terrible.

25:02 It would really work.

25:02 It would really work, but you could do it.

25:15 Like you could delete your user profile, you know, like stuff that doesn't require admin access.

25:21 Oh boy.

25:24 That's funny.

25:24 Just a silly little game.

25:25 All right.

25:26 Let's close this show out with something special.

25:29 I saw this come, come through the news a little bit.

25:32 So I think this is going to be a lot of fun, Brian.

25:35 I came across this.

25:36 Actually, you know, this came from Dan Bader.

25:38 He sent this over to me.

25:40 Just said, I think it was this said you wouldn't believe this.

25:42 Check this out.

25:43 And it's called permission granted.

25:45 A sad girl sings, sings the MIT open source license.

25:49 Like for real.

25:50 Okay.

25:51 Okay.

25:52 So it's AI generated, which is what makes it crazy.

25:54 And it probably has Python involved in there somehow.

25:57 And since AI generated content can't be copyrighted, we should be safe to plate.

26:02 Let's do it.

26:03 Let's do it.

26:03 We're going to close out the show.

26:04 It's two minutes.

26:05 You can listen to it if you want.

26:05 If not, feel free to mail, but into the show is we're playing this.

26:10 So here we go.

26:10 Permission is hereby granted free of charge.

26:16 To any person obtaining a copy of this software, associated documentation files,

26:29 the software to deal in the software without risk.

26:34 and to do so.

26:35 And to permit persons to whom the software is furnished to do so, subject to the following conditions.

26:59 The above copyright notice, the above copyright notice, and this permission notice,

27:08 shall be included in all copies or substantial portions of the software.

27:16 The software is provided.

27:20 software is provided as is, without warranty of any kind, express or implied.

27:31 according to the warrant, according to the warranties.

27:32 The warranties of merchant tabulating, the law is, the law is provided in all kinds of documents,

27:43 and the law is provided in all kinds of documents, and the law is provided in all kinds of documents,

27:46 and the law is provided in all kinds of documents, law enforcement.

27:48 So copyright holders, be liable for any claim, damages or other liability,

28:00 whether in an action of contract, toward or otherwise.

Back to show page