Python Bytes - #376 Every dunder method in a Python Lockbox
Episode Date: March 26, 2024Topics 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)
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.
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
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.
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
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
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.
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.
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
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.
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
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
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
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,
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
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
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.
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.
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
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.
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.
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.
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.
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
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.
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.
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.
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,
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
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.
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
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.
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
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,
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?
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
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
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.
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
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.
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
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.
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.
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
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.
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
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,
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,
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
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
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
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
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,
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.
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
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
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
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
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?
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.
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
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?
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.
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