Python Bytes - #376 Every dunder method in a Python Lockbox

Episode Date: March 26, 2024

Topics covered in this episode: 🤖 On Robots.txt niquests Every dunder method in Python Lockbox Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/376...

Transcript
Discussion (0)
Starting point is 00:00:00 Hello, and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 376, recorded March 26, 2024. I'm Michael Kennedy. And I am Brian Ocken. And this episode is brought to you all by Scout APM. I'll tell you more about them later. We appreciate the support. Connect with all of us, Brian, me, and the podcast over on Fostedon.org or Mastodon more broadly.
Starting point is 00:00:28 Links at the top of your podcast player show notes. Join us live if you like. We typically do this on Tuesdays at 10 a.m. Pacific time. Why is time so hard, Brian? Why is it so hard? Just go to PythonBytes.fm slash live to be part of the audience. See the older shows. All the older ones are there. And they are typically the same thing we ship we don't really overly edit it or
Starting point is 00:00:50 anything other than we do clean them up tighten them up a little so if you like the ones with bloopers included you can check that out there i wonder if i was a search engine and i was like trying to find bloopers would there be a way to not let me find them what do you think brian well i i hope we're trying so um actually i was yeah i was thinking about this of of i i kind of think that the ai stuff should have the best content out there to read from but but companies are making money from that and uh i'm not making like my blog posts i'm not getting any money from that um if if care about that, how do I stop them? So Jeff Triplett is thinking about that too. So he wrote up a blog post called on robots.txt.
Starting point is 00:01:34 So the idea was robots.txt is to stop search engines and stuff like that. But I don't actually want to stop search engines. I want search engines to find my stuff. I just don't want the ai stuff so um so uh jeff's been thinking about this um i've been thinking about it also so he collected a few links around this and one of the things here is um uh spent a lot of time thinking about robots.txt in theory it helps control what search engines and ai scrapers are allowed to visit um but uh but i need more confidence in its effectiveness in this post-ai apocalyptic world i love that uh anyway
Starting point is 00:02:14 um so there's a there's a bunch of there's these cropping up there's a lot of uh a lot of new stuff going on so um jeff has decided to use django robots but let's look at some of the links that he included so thanks jeff um so there's uh block uh block the bots that feed ai models by scraping your website so there's um there's a article by neil clark that has an example robots.txt and the idea is almost all of these different AI bots you've got to block them individually so you're going to set up these different different rules there so it'd be good to keep track of some of these places like maybe hopefully he keeps this up but there's there's also an article go ahead and block reb callers discussing why you might um and then a dark visitors i think this is going to
Starting point is 00:03:07 be one to keep track of to that it might hopefully they keep it keep it up but there's a big list of known uh ai bots to block and so maybe keeping up on this might be a good idea if you care about it um the uh jeff's note was that he um uh added it to the website django there's a couple different articles about um adding robots.txt to a django website there's one by will vincent and uh one by adam johnson both uh biggies in the uh django community so we'll link to those um and like uh like i said at the beginning um je Jeff said he went with a plugin called Django robots to, to populate that and control it through his admin interface. So there's a lot there.
Starting point is 00:03:51 One of the things not included is my blog is run by Hugo or run with Hugo. Anyway. Uh, so we're also linked. I'm going to also link to a, um, a, a, how to add robots.txt to your Hugo site. If you want to do that. Oh, nice. I don't think I've messed with my Hugo robots.txt to your Hugo site if you want to do that. Oh, nice. I don't think I've messed with my Hugo robots.txt. I have not yet, but I think I might.
Starting point is 00:04:10 And I guess I wanted to ask some questions before we moved on. One is, as a community, I think that there should be an easier way to say, don't scrape this if you're an AI, other than listing each one. We should have a standard for that. But what do you think of this? As a content creator, should I care about that? Should I, I mean, would you? You know, it's, it's such an interesting question. I think it's, it's pretty fraught, right? On one hand, I don't want to feed the AIs either, necessarily. I think that it's super awesome that you could go to chat GPT and say things like, you know, what is Python
Starting point is 00:04:45 by talk Python, think about this, or, you know, write me a, write me a summary of this in the style of a talk Python interview. Like that's, is that harming me? No, probably not. Is it creating some cool aspect like halo of the content creation side? Fact that chat GPT knows about those kinds of things. That's, that's kind of cool. I kind of on the plus side um i don't know i mean we have for you a lot of your content is i mean your open content is open but you're a lot of your content's behind a paywall with uh talk python training if somebody were to throw all of those trainings into a ai model yeah that would be different right yeah so yeah i mean i certainly certainly have a no robot, no index settings on certain aspects of the site there. It's also behind accounts and logins.
Starting point is 00:05:33 So somebody would have to be kind of maliciously doing that, which I imagine that's probably already been done. But it is. Yeah, that's a different that's a different kind of deal. Maybe the biggest case of this is the link tax that Australia, Spain, and Canada all tried to put onto the search engines and Facebook and social platforms. I'm getting this right. I think it's Canada. They all blur together. But Canada is the most recent one of these for sure and they passed a law saying well if one of these big american companies wants to send traffic we talked about
Starting point is 00:06:12 this one to send traffic to our our one of our new sites then they have to pay them for the the right of doing that uh maybe it is well it's like kind of like maybe it's australia i think it's australia i think it was facebook i'm sorry folks if I'm like crossing over companies and stuff, but I think Facebook just declined to renew their agreements with the Australian newspapers and saying, you know what, we're not going to send any more traffic and we're not going to allow any links to you whatsoever. And that's going to be a negative for those news companies as well, right? The fact that, I mean, they kind of had the shady deal where facebook would summarize a little bit so like maybe you don't need to click the link to go to it but now they're going to have no links whatsoever and they're not going to be in a better place because of that either so
Starting point is 00:06:52 it's really this you know damned if you do damned if you don't type of thing is what i'm trying to get at and like the the biggest example that playing out is with these news organizations and the social media and search engines yeah yeah except for i don't know the ais aren't i don't think they're linking back to the original content no you're you got a good point there that at least search engines and stuff and social media they credit you they send traffic to you whereas we're gonna have to reckon with the ai stuff in some way because it just says here's the answer and how did i get it i don't know maybe maybe that's your answer repurposed yeah right but you get zero credit for that right yeah that's a good point we're not probably going to solve that today maybe next week want to come back and solve it
Starting point is 00:07:33 next week yeah sure well if you were to be automating requests to these websites what is the most popular way to do that well it's right in the name requests and requests by kith writes uh has been migrated over it's like so popular it's migrated over to the psf itself right i don't remember where it said yeah it actually still has it says request is one of the most downloaded python packages today pulling in around 30 million downloads a week well and it's used by over a million repositories on GitHub. You can probably trust it. But there are things that it doesn't do, things that it's not necessarily wanting to like lead the bleeding edge on. I mean, just with that amount of usage,
Starting point is 00:08:16 you've got to be careful, right? So I'm going to point you at a fork of requests, night quests. I'm not sure, hopefully, ni quests instead of requests, ni. I'm not sure hopefully ni quests instead of requests ni i'm not i'm not sure i'm getting the reference here there's probably some cleverness to the name i'm sorry for not getting it there java so anyway it says requests but with http3 http2 multiplexed connections so if you're downloading you could create multiple connections to the server and download multiple streams i think that's what that means. System certificate authorities, certificate revocation. So if you want to control what certificates you trust, maybe there's some that have been known to be doing bad things or you just don't want to allow access to certain parts of the
Starting point is 00:08:56 internet, you can revoke those certificates and their authorities and so on. DNS over HTTPS, TLS, and QUIC. So if you want to have better control over how DNS works, if you want to escape what DNS is happening on your server and explicitly control it from your application, you can do that securely, which is awesome. It has async and await DNS security and does much pain removed, which is cool. So anyway, this is a pretty interesting thing. If you know requests, you basically know this, except for that it also has async versions which is kind of cool but yeah it's got like a great
Starting point is 00:09:29 long feature list and why they did this um yeah so worth looking at i think yeah definitely that's pretty cool yeah but a lot of those things like the certificate stuff or dns over hdps or dns security are areas you're like if we really need that as most people probably don't. But if you do, this looks pretty cool. Yeah. I think it's, um, I think my guess is that the name is based on the Knights of knee. So it'd be knee quests. I think so.
Starting point is 00:09:55 Knee quests. All right, let's go with it. Knee quests. Yeah. Because of course we have those themes, right? Yeah, of course we do. Now, Brian, we do have a sponsor for this episode, right? Yay.
Starting point is 00:10:06 Yay. Let me tell you real quick about Scout APM. They're big supporters of Python Bytes, so we appreciate that very much. So if you are tired of spending hours trying to find the root cause of issues impacting your performance, then you owe it to yourself to check out Scout APM. They're a leading Python application performance monitoring tool, APM, that helps you identify and solve performance abnormalities faster and easier. Scout APM ties bottlenecks such as memory leaks, slow database
Starting point is 00:10:36 queries, background jobs, and the dreaded N plus one queries that you can end up if you do lazy loading in your OEM, then you say oh no why is it so slow why are you doing 200 database queries for what should be one so you can find out things like that and it links it back directly to source code so you can spend less time in the debugger and tailing logs and just finding the problems and moving on and you'll love it because it's built for developers by developers it makes it easy to get. Seriously, you can do it in less than four minutes. So that's awesome. And the best part is the pricing is straightforward. You only pay for the data that you use with no hidden overage fees or per seat pricing. And I just learned this, Brian, they also have, they provide the pro version for free to all open source projects.
Starting point is 00:11:22 So if you're an open source maintainer and you want to have Scout APM for that project, just shoot them a message. There's something on their pricing page about that. So you can start your free trial and get instant insights today. Visit pythonbytes.fm slash Scout. The link is in your podcast player show notes as well. And please use that link.
Starting point is 00:11:40 Don't just search for them because otherwise they don't think you came from us. And then they'd stop supporting the show. So please use our link pythonbytes.fm slash scout. Check them out. It really supports the show. Indeed. Indeed.
Starting point is 00:11:52 Thank you, Brian. Yeah. Let's talk about it. Underscore has some funky meanings in Python. It's kind of lovely. We love the underscore. Yeah. I'm going to get a new keyboard where I have like on my keyboard here.
Starting point is 00:12:03 It has two independent buttons for the space key.'m gonna make this one just the underscore okay uh sure you can do that and you'll probably need it what could i do with it you could because of all of the dunder methods we have we have so many underscores that we called two underscores dunders in Python. So, and what are all these dunder methods for? So Trey Hunter has actually put together this really cool resource, every dunder method in Python. And actually, I mean, you know, I thought I knew quite a few
Starting point is 00:12:39 and I use probably repper and stir probably the most to make sure that my objects are representable or convertible to strings. But there's quite a few more. And so he goes through, like, here's our essentials for repper. And, oh, you know, he calls equality essential, but I don't really, I guess maybe I don't make my own custom data types as often as maybe I should, but there's the equal EQ that does equality and then repper that converts to rep. And it also used, it's also used with a stir if you didn't have a stir method, but you can have those be separate. So the other one that's common is a dunder initunder init for how you initialize classes, which, you know, to be honest, I use probably adders and data classes more than custom data classes.
Starting point is 00:13:33 So I don't really write that myself a lot, but I often use it in initializing another class if I derive from something else. Anyway, moving on. There's tons. He's got equality and hash ability. hash ability is is important if you if you're if you're creating an object that is should be hashable. That way you can create Why do you care about that you care about hash ability, because that means your objects can be used. If they're hashable that they can be used for, I think there's some other rules too, but you can use them for keys to dictionaries.
Starting point is 00:14:06 And there's tons of dictionaries in Python. So we've got- Maybe also sets. I'm not sure. I can't remember about sets. Yeah, probably. Yeah. But you also need to equal it.
Starting point is 00:14:17 I think there's less than you need also. Anyway, there's orderability. So you've got less than and greater than and all that. Type conversions and formatting. Tons around that. you don't think about type conversions that much right because you don't think about steen and all that stuff in python as much right but it is kind of cool i didn't know that i guess i i knew you could do this but i kind of forgot that you can so if if you say like int of something or bool of something, if that makes sense for your data type,
Starting point is 00:14:47 you can write your own Dunder method so that people can just use the built-in type conversion, which is pretty cool. I didn't know about this format thing, so that you can use the F strings appropriately if you've got the format. I think you can pass modifiers from the s string so like with a floating point number you can say like early for the modifier colon
Starting point is 00:15:11 point two f comma point two f and i'll be like comma separated two decimal i think you can take your own format specifier there i think that's what that's for okay i'll have to research that a little bit more anyway uh the the dunder methods methods around context managers uh which is actually kind of a funny thing i think that i've read a lot of tutorials around context managers and sometimes they like try to tell you how to build one up from scratch yeah i've never built one up from scratch i i always use like some of the wrappers and stuff to do context managers. Anyway, containers and collections, if you're going to do a container that you want length to work with or to iterate through, you need some tender methods for that. Callability is one I've used frequently.
Starting point is 00:15:58 You can create an object that's callable if your class has a call method, which is kind of fun to make callable objects. A bunch of arithmetic operators so you can overload things. InPlace, built-in function, built-in math functions, attribute access, all sorts of dunder methods for you. So anyway, if you're thinking of overloading a class so that or so that it can deal with different built in operators, check out Trey's article. Yeah, that's pretty nuts. Actually, I kind of am coming away from this the same feeling
Starting point is 00:16:34 as I think I knew these like, actually, no, there's more stuff. Yeah, there's a lot. I like the order ability,. It's because I often, at the very least, I want to be able to sort things. Yeah, yeah, indeed. Sorting is good. The one that I think is news to me, maybe the casting ones, but also the string formatting one.
Starting point is 00:16:56 Yeah. You could have a customer, like a user object. You could say like colon E for their email. I mean, not necessarily would do that exactly, but just weird, right? Yeah, I'll have to play with that. Yeah. All right. Let's talk about this next one. A lockbox. I don't think this is Python exactly. Oh, wait, I take it back. It is Python a hundred percent, but also even if it weren't, it's the
Starting point is 00:17:16 kind of thing that you would use as a Python person, not necessarily make it part of your app. So this takes a bit of, it takes a moment to get your head around. So lockbox is a forward proxy for making third-party API calls. And you're like, okay, keep talking. Maybe it all makes sense eventually. So here's the deal. If you're gonna integrate with some third-party thing,
Starting point is 00:17:39 think Zapier, if that, if this, then that, et cetera, et cetera. And those things are making API calls on your behalf. You have to give them the API calls for the destination thing they're integrating with. So the example they give is if you want to do a Zapier thing over to Slack or Jira or whatever, you give Zapier your Slack API key or your Jira API key, which may be fine. I mean, Zapier is certainly a trustworthy company. I've had the CEO on TalkPython a few times. He's great, but just on principle, you might not want to do that. You know what I mean?
Starting point is 00:18:16 Yeah. So that's what this thing is for. So instead of giving that third party like Zapier, if this and that, your tokens, what you can do is you can set up this lockbox thing and it's like an intermediary for this whole process so you can register an app in your lockbox and it gets its own just for this one purpose api key you give that to zapier so zapier calls lockbox lockbox calls slack or lockbox calls jira or whatever and it has a couple of advantages so you can do things like uh you can audit what actual traffic is being done so you can see exactly what let's just keep with zapier what zapier is doing on your behalf exactly what data
Starting point is 00:18:59 is passing if something's going wrong you could see that it's still playing zapier is charging you for too many zaps you can say i didn't use this many exactly here's how many zaps exactly you used yeah some of these are planned so you should be able to restrict access to external apis in a more fine-grained manner you know um rate limiting you know rate limiting on third-party api calls but the primary purpose of it is that the api keys are not exposed to anyone else they just live in this lockbox thing that you control and then you can of course throw them away right drawbacks are well you got to run your lockbox basically and so on but yeah it's pip install lockbox dash proxy and you set the sucker up and off it goes i think it's pretty cool yeah yeah interesting i yeah for
Starting point is 00:19:44 especially even if i didn't use this all the time to be able to add it later if i needed to to and off it goes. I think it's pretty cool. Yeah. Yeah. Interesting. Yeah. For especially, even if I didn't use this all the time to be able to add it later if I needed to, to intercept that and for especially for some monitoring purposes. Yeah.
Starting point is 00:19:55 It's an interesting idea. So yeah. Andrew out in the audience says nothing against Zapier, but that kind of feels like an indication that maybe it isn't a type of thing
Starting point is 00:20:02 you should be handing off to third parties. I may agree with you, although I maybe it isn't a type of thing you should be handing off to third parties. I may agree with you. Although I think in practice, a lot of people pass their keys all over the place to get stuff done, you know, especially less developer-y. The less developer-y you are, the more you're like, just click these things together and do it for me. What could go wrong? YOLO. Come on.
Starting point is 00:20:23 My password's the letter A. I don't see any problem here this is really more secure than that good thing we made all passwords password exactly that way i never forget it just says what's your password and i'm like well you gave me the hint right there perfect well as our items our main items so what else you got there um i got a couple extra since i want since i covered django a little bit earlier um i wanted to uh i ran across adam johnson's django join the community on mastodon i'm also working with django a lot lately so um having uh trying to follow some of the django people on mastodon is good so he's got a good
Starting point is 00:20:56 resource for people that want to uh if you're a django person you want to get started on mastodon um there's some some good people to follow some projects official accounts around django um and uh reminders to do a welcome post which um i still have forgotten to do so sorry people out there that don't know who i am anyway yeah the introductory post is a good idea but and to hit through it so uh that the the other one um uh extra said got sent in just this morning from kim van wijk um and it's a it's a a website called unmaintained.tech and essentially the idea is there's a badge and there's some description so basically if you want if you have some open source stuff that you're just you're just kind of done with and nobody wants to take it over, you can just link to this to tell people that you're not intending to maintain it.
Starting point is 00:21:51 People can still use it as a reference and read it, but no promises as to whether it's going to work because I'm done. So, interesting. Yeah. Some things are done. They're just done. Yeah. And it's okay. You don't have to take them down.
Starting point is 00:22:03 Just tell people that you're not working on it anymore. Interesting. Wasn't there a thing with GitHub where they were going to either take down or charge very, very briefly for things that had no activity over a two-year period or something like that? And they quickly rolled it back because people were like, stuff can be done. Don't do that. Okay. Yeah, I think that was pre-Microsoft takeover. Yeah, that might have... You know what I think it probably was when they were like, how are we going to pay for this stuff? We need to start getting rid of some of the storage of things that were just abandoned. And now they don't want to do that
Starting point is 00:22:35 because there's all that AI meat in there to eat. That's right. Well, speaking of takeovers, US sues Apple for illegal monopoly over smartphones, says The Verge. Now, I think the monopoly angle is a little bit of interesting here. I had some conversations on Mastodon.
Starting point is 00:22:54 People are like, oh, they only have 20% of the market. In the US, they have over 60%, 68%, 60%, something like that. But I think the real problem is there's nowhere else to go. Where do you go? You go to one, there's literally one other option in the entire world. I mean, I know technically there's like some Kickstarter that somebody could have like a hundred of other phones, but in practice, as an adult, you need a smartphone to live these days to function in
Starting point is 00:23:20 society. Like, well, you get this app to do this thing. Like, well, how do I get it on my phone? I have to hit the get see, I press number one, three times. I go, Hey, this app to do this thing like well how do i get it on my phone i have to hit to get c i press number one three times like okay you can't do this part of the world you're done and i think apple i think it's i don't know it's a little bit a little bit of a silly lawsuit in some senses that people don't really the people writing the lawsuit seem to be not very connected technically or deeply understand the problems here. I think there's some really legitimate causes and I'm here for this. I hope this makes a change because Apple is just such a bully. I have had such insanely bad experiences working with them, getting apps in the app store, which is crazy because you're like, I've spent, me and Lauren,
Starting point is 00:24:02 spent months writing the latest TalkPython app to just try to make the iPhone a little bit better, to make people who want to do our stuff enjoy doing it more on the iPhone. They're like, nope, we're rejecting that. And we have these rules. We need more money from you, even though you're already paying us a hundred dollars a month and making the platform better. You know, for example, I'm sure people think I'm cranky about this, but I just want to give a little background for people who haven't heard me rant about this. Like we submitted it and they said, well, it doesn't have in-app purchases. I said, that's okay. I don't really want to sell anything through here. My main, it's not like people are coming to the app and then they're becoming, I just,
Starting point is 00:24:36 this is for people who are already customers of mine already taking courses. I just want them to be able to do that better. Like no apps rejected, Interesting. But you have this clause 4.3.1 called reader apps that says if you bought material on the web, like a book, audio or video, you're allowed to consume that on the phone. And there's no in-app purchase required. We don't care. You don't count as that. You're something else. You're not as big as Amazon. So yeah, you don't get any special treatment. So what you're going to do is you're going to spend two weeks for two people full-time developing the in-app purchase so that you can sell a couple of courses a month, even though it costs you thousands and thousands of dollars to do
Starting point is 00:25:13 it, or you can't be part of this. The majority of your customers in the United States can't have your app, right? And just that we're going to, you know, grind it out on these little companies to get a couple hundred bucks and cost them tons of effort. Now it's harder to maintain the app. I want to, if I add a new course, I've got to like do more work and release new versions of the app just because of that. Like it's incredibly frustrating how they're just doing this. Does this even talk about that? Because when I read this, I was thinking i was thinking great i mean i felt this
Starting point is 00:25:45 i i love apple i've got got uh two yeah two or three computers i got the phone watch but i've i've thought hey i want to try a different watch oh it doesn't work with anything else uh yeah i can't really and i so i feel the the customer lock-in part um i'm not really happy about that but the other part that i is that part, and I don't know if the lawsuit covers that is this, this whole 30% tax that they want. I think, yeah, I think it does cover the lack of ability of using other payment processors and other payment processing, other delivery methods, all that kind of stuff. Like another really creepy thing that Apple is doing is they're going to allow only the big companies
Starting point is 00:26:25 to install apps on the, over the web directly and use their own payment processor directly, but only in Europe and only for companies that have had over a million downloads previously. So there's no way to get started ever. If you created a popular app now, you have to have done it last year, but if you don't have it yet how do you but then the then they're charging 27 for their fee for delivering your app but if they're not doing the processing and it doesn't go over their servers what is the 27 for again it's just to give them money it's bad so anyway there's a couple of videos uh from this guy called uh theo r. They're actually quite good. Both the lawsuit and another one. And then also the day after, this was yesterday, Brian, the EU rejects Apple's European App Store
Starting point is 00:27:13 changes. This is the one I just talked about with those, like some of those weird fees and other stuff, right? Company could be fined 10% of global revenue and 20% if they don't fix it after that. And so it's just one thing after another coming down on this company. That's just, you know, they make 85% of their money off in-app purchases from games. They should just make the rest of it free and not even make it a hassle for people. You know what I mean? It's just like, why are they doing all of these things to just for that,
Starting point is 00:27:40 that last little bit of stockholder value, you know? Yeah. But even the games part, why, why do that? Why are they taking 30% cut? It's just, it's too high. Yeah. You know, and honestly, I don't even, I don't even mind the 30%. What I mind is that they say that these kinds of apps can't exist or your app has to be completely rewritten so that you do start selling, even if you don't want to, or we won't accept it.
Starting point is 00:28:06 Right. It's if I wanted to sell it, I'd be like, all right, look, 30%. It's, it's rough, but it's digital project products. I'll live. But the fact that like, you can't even not, you can't even choose to not sell stuff. We're going to make you sell stuff. And that kind of, that kind of stuff is just, that's where I think like, okay, this is over line when, when it's that high of a percentage and you treat where i think like okay this is over line here when when
Starting point is 00:28:25 it's that high of a percentage and you treat people like that it's it's it's bad news bears that said i have like five apples of ices just in this room so i'm very conflicted yeah definitely so yeah yeah okay i have a few more things they're quicker i promise uh the psf is looking to hire somebody which is awesome for for PyPI support specialists. How cool is that? MARK MANDELMANN, That is cool. Yeah, I read about that. MARK MIRCHANDANI, It's kind of nuts
Starting point is 00:28:49 that all of PyPI, with, you know, you think of the infrastructure, the amount of bandwidth flowing through that thing, and how much traffic there is in that website, and that there's nobody whose job is to keep it running. It's kind of nuts. But yeah, so a PyPI support specialist is a job, a person that are looking
Starting point is 00:29:05 to join the team. So if you're interested in that, check it out. That'd be really cool. Let's see. Why is this looking like it looks here? There we go. We're going to do, this needs to go away. We're going to do a VS Code, ask me anything with Brian Clark, not Brian Ocken, Brian Clark and Cecil Phillip and me in 21 days. So if you want to be part of that YouTube only event, then the link is in the show notes. Check that out. You can submit questions ahead of time. So if you've got one, please, please do that. And lastly, a quick conference thing. Gareth Thomas said, hey, just let you all know, Pi Data Eindhoven 2024 will take place on the 11th of July and there's a call for proposals open. So if you're
Starting point is 00:29:47 interested in that, check it out. Okay, I've got one extra extra thing extra as you have an extra extra extra extra. And partly it's an apology. So I've been doing the emails for the show, but I kind of forgot last week. So I'll get the this week you'll get to or or we'll combine them into one or something like that. But how do you get the email?
Starting point is 00:30:07 So if you if you go to Python bytes and click on friends, you can fill out your name there and get the show notes in to your inbox if you want. So plus we'll sell it and make lots of ads. No, we don't sell your email or anything. We don't we don't sell it. We don't, we don't sell it. We don't even transfer it to other, other locations. That's pretty excellent. We got some good infrastructure set up.
Starting point is 00:30:30 They just, we don't even, I don't even look at them. So yeah, exactly. Well, if something goes wrong, do I bother looking at it? All right. Well, that's let's, let's, uh, wrap this up with a joke. Okay. So, you know, the windows, some of these different operating systems and ecosystems have more certifications than others, Like there's the network certifications for network
Starting point is 00:30:49 engineers and Windows has got a lot, right? So there's the Windows certified technician. It's a game. It's like a giant arcade that has a Windows on it. It says, can you make it work? Could you make it work? Battle your way through driver updates and registry edits on your quest to defeat the dreaded blue screen of death. And there's like a super excited guy with a toolbox ready to take on the Windows blue screen of death and hack the registry. Can you be a Windows certified engineer?
Starting point is 00:31:19 It's the hottest game of Dave and Buster's this year. Okay, but look at the controls. You got to be a Windows engineer with a trackpad and three buttons. Yeah, but look at the labels and the buttons. There's four buttons. You missed an important one. There's a big giant rollerball trackpad. What is that? Trackball.
Starting point is 00:31:42 Then there's three buttons, control, alt, and delete. But down at the bottom then there's there's three buttons control alt and delete but down at the bottom there's another one that says reboot it's like uh the bonus button yeah that's good i'll make this the the show the chapter art this is good yeah awesome all right well always fun thanks for being here brian thank you yeah thanks everyone for listening catch y'all later bye

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.