Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to
your earbuds. This is episode 332, recorded Tuesday, April 18th, 2023. I'm Michael Kennedy.
And I am Brian Okken.
And this episode is brought to you by InfluxDB from Influx Data. We will tell you more about them
later. Connect with us over on Mastodon. We're all on Facedon, at Mkennedy, at Brian Okken,
and at Python Bytes. And if you want to be part of the live show, pythonbytes.fm/live.
Crush that bell and you'll get notified when we go live, usually Tuesday, 11 a.m. Pacific time,
like it is now.
Well, just a reminder that I think it's really important for people to subscribe because
sometimes it's not at Tuesday at 11, usually, but sometimes it's not. So get notified. First,
I want to talk about, I don't know, H-U-A-K. It's a project. I think it's HWAC.
HWAC?
I would have guessed HWAC.
Yeah.
HWAC.
HWAC? I'm not sure. But it was suggested to us by Owen on Mastodon. So thank you, Owen.
And I gave a look at this. So this HWAC is a Python package manager written in Rust. So we've got a lot
of tools in Python now getting written in Rust. And I think it's cool. I mean, why not?
So anyway, it's inspired by Cargo. And actually, so my first, I've tried this twice so far. And
my first take on it was not as, was sort of lukewarm, but I tried it again today. And there's
some really cool stuff here. So I want to like highlight a few things. There's some decent
documentation, but it's just, it's just the early stages of the project. I don't know how
old it is, but they have a disclaimer that it's in an experimental state. But I think there's
a bunch of it that's already quite usable. You can, it's just a pip install, but it installs
the Rust tools and stuff with it. And you can create a new project and init a project. And
that's where like the people are picky about what goes in your project Toml. So, or PyProject
Toml. And I, I am picky also. So it isn't, the init isn't quite exactly what I would want,
but it's pretty good. So it's a, it's a decent mix where it's initializing, but there's so much
more you can do. So if I go to the, let's go to the main documentation. These are all the
workflows.
I just want to comment on something right there. Notice the walk distinguishes between library and
application, like projects, projects default to library type, but you can pass a --app
flag. And I think that is pretty excellent because so, so many of these tools, they either have a,
a tendency for, you know, like hip ENV seems to have a tendency for apps where some of the others
have tendencies for libraries and you don't really want to say, well, my tool can only be
used for building libraries, but not apps, right? Like pinning specific versions versus greater than
type of versions and that, that kind of stuff in your file. So I think that that's a cool aspect
they've considered here.
It is. And I'm, I'm, I'll be curious to know what, what that, what that affects,
what it affects downstream. So we'll have to play with that. There's even like, so apparently there's
a no VCS flag so that you can generate projects without get, which is cool, but the assumption is
it's going to be get. And the assumption is it's a, well, right. You said assumption is a library,
but it can, can do applications too. Nice. So the, yeah, there's, so things like,
once you have it initialized, there's other stuff that I didn't even think that a workflow tool would
be good for. But this is pretty cool. Like adding a dependency. I know poetry does this sort of a thing
where you can say, you know, you know, add some dependency and it adds it to your PI project,
Toml. This does that, but it's, it's nice that it's a, I don't know. It's just sort of the workflow
seems nicer to me. You can activate a virtual environment, even if you didn't create it with this
tool. just pretty nice. you can use, I'm going to go through the list. The list is pretty
big. you can add a dependency. You can build your project in it. I tried the build and it, it
builds it. It like creates a new virtual environment and builds it in a fresh virtual environment. So
that's a really clean way. It's like building with talks almost. it's a real clean way to build.
It's kind of cool. completion said generating a shell completion. I'm not sure I
need that, but oh, well, cleaning everything when you're working with projects, sometimes you
just have tons of stuff around. So a clean option is pretty nice. linting and fixing linting and
fixing lints. And so I tried this. I like, I'm like, okay, I have this new project, tried linting.
And at first, one of the things that did it installed, rough, right off the bat
and then ran it, which is cool. Oh, the other thing I thought was pretty neat when I added
something. So I added pie test to a project and that added pie test to the dependency list, but it also
installed it in my virtual environment. It's like, so it figures you don't have it yet. Let's install
it. So there's a whole bunch of these things like, publishing. so it's kind of a, it's kind
of a poetry like thing, but if poetry doesn't really float your boat, maybe this does.
most of this works for me and actually, to be honest, the stuff I've worked with so far,
I think this is as, this is as close as, as reading my mind as any, workflow tool has
gotten so far. So this is pretty cool, pretty close to what I was thinking about as a cool thing,
even lists Python versions. So if you say, walk, I got to understand the name
because my brain, even if I don't talk about it, my brain needs to know what to call it.
and, so if you say Python list, it'll list all the Python versions on your, on your machine
that it can find. So it's kind of cool. Yeah. Cool. It also has update to update the project's
dependencies, which is pretty neat, which probably the pin, pin numbers and stuff like kind of like
pip-tools, pip dash compile. Yeah. I tried update first and I said, you don't have any dependencies
yet. So I'm like, okay, well I'll add some dependencies. So yeah, nice. Pretty cool. Oh,
yeah. I can get behind checking this out. This looks pretty neat. And it's kind of a theme. It's
going to be a bit of a theme on this show with what I got coming up as well. Although we didn't
coordinate this. It's, it is, painful out there, by the way, just has a bit of a nightmare. It's about
pre-force when here's no get that could also go for source safe or any of these other types of
systems that like lock a file, you know, the centralized version control. Someone locks a
file cause they're editing it. Then they go on vacation. That's always a good time.
Yeah. Yeah. The, the, the no get part is, I it's important to me for somebody trying
stuff out because if I'm just trying a bunch of stuff out, playing with a project,
sometimes I want to see how the whole build and the whole workflow works without actually
setting up a get repo. Yeah. So I'm cool with it. Yeah. Anyway. Cool. All right. Well,
we're not going to start with more packaging. Let's start with law. And I suppose as usual,
we should say we're not lawyers. Don't take our advice, but that's certainly not mine, but I'll tell
you, there's a blog post written by PSF over on pyfound.blogspot.com. It still kind of blows my mind
that PSF doesn't have its own domain for blog posts. But anyway, the EU proposes proposed CRA law
may have unintended consequences for the Python ecosystem. So we've talked about this before,
um, just bringing awareness to what that law, the cyber resilience act, basically holding companies
liable for shipping bugs and vulnerabilities in their code in Europe has for the open source ecosystem.
And so the PSF has come out with a strong statement of this is broken. If you don't fix it,
bad, bad things are going to happen. I'll, I'll jump ahead just a little bit before we go along.
It says, let's see if I can find the phrase here. This as written would make it impossible in practice
for the PSF to continue to provide Python and the PyPI ecosystem to the European public. Sound bad?
That sounds kind of bad to me. Like, Hey Europe, how about we just cut Python off? Ironically, dear Python,
you were invented there, but too bad because you hate it. So let's go through what the PSF says. I've already,
highlighted this, some of these issues. And I think maybe even Penfield was the one that sent this over.
I can't remember exactly who sent it over the beginning, but so their blog post starts out and says,
the PSF has found issues that put the mission of their organization and the health of the open source
software community at risk through the cyber resilience act. CRA says, if the proposed law is
enforced, as it's currently written, the authors of open source components might bear legal and financial
responsibility for the way their components are applied in someone else's commercial project.
So let me give you something really simple, Brian, that just came to mind. Suppose I write the most
awesome SQL library ever, ever. So here's what you can do. It takes, it takes a connection string and it
connects to the database. Okay. And then you can issue SQL commands to that database. And I've got all the
security patched. I've got, I made sure that there's no like SSL vulnerabilities and it's underlying
communication. Somebody goes and writes that and they write the query select star from users where
username equals quote plus inputted username, right? Yeah. That would be a SQL injection vulnerability
just waiting to happen. Is it my fault? They, they concatenated user input and then pass that as trusted
commands to their database. No, I can, there's no way I could have known that. And yet I, as the writer of
this awesome, it's called MK SQL, whatever library, I'm now on the hook companies that are, and individuals
who were, had their data exposed can now sue me directly for providing MK SQL to the world. That's
what this law says. No. Yeah. And as, and, and so says the existing language makes no differentiation
between independent authors who have never been paid for the supply of software and corporate tech
behemoths selling products in exchange for payment to end users. We, the PSF believe that increased
liability should be carefully assigned to the entity that has entered into a commercial agreement with
the customer, not the open source people who built the software. Right. So that is.
I like, I'm going to go, this is terrible. So somebody goes off and like, at looking at a new tool and
see a typo or something and do a fix or, or even just like, you know, actually help out for a while
and then move on. They're still going to be liable forever. Like this doesn't make sense.
That's exactly what it says. So Brandon has the same thought that I had actually out there.
So I see a new open source license coming and saying that this can be used anywhere but the EU.
Yeah. I mean, I have 250 GitHub repos. Many of them are private. Some of them are public. Good chunk of
them are public. And I have a couple of things on PyPI. They're all minor, nothing, you know,
notable or anything, but they are being used. If this goes into effect, there's a reasonable
expectation. You know what? Those small libraries, it's not even worth having them. They're just,
I'm yanking it from PyPI. I haven't come to that decision, but like, why would you want to risk it?
Yeah. It's a, this is, yeah. So here, that's why we put like this, this software provided as is with
no warranties. Yeah. And I was actually wondering about that as well. And this kind of goes back to
what Brandon said and what you just said is, doesn't the license that's a, that's also a legal agreement,
right? And so when the CRA clashes with the Mozilla open source license, for example, or MIT license or
whatever, it says kind of what you said, who wins, you know? So it says the PSF does not sell software.
We provide, but we provide a public square for developers to download code, talk about code
and host components so that other entities may include it in their software. And so specifically
people may be wondering like, well, okay, it's all vague. They call out two activities that could be
affected by the CRA. It says we host and provide the core Python programming language, standard library,
interpreter to any who wish to use it free of charge. By the way, downloaded over 300 million
times a day, which is, I had no idea it was that much. That's insane. We host the Python,
we host PyPI, right? And nobody pays us to do this. None of that. But that's the way the law is
stated. It's a problem. Let me see if I can find the actual. Yeah. So here we go. We believe there
are two phrases in the CRA that cast too wide of a net. In article 16, a natural or legal person
other than the manufacturer, the importer or distributor that carries out substantial modifications.
So I guess a typo is not it. Substantial modifications of a project with digital elements
shall be considered a manufacturer for the purpose of this regulation and hence held responsible.
Secondly, by providing software platform through which the manufacturer monetizes other services
is not specific enough, right? For example, they say, well, what if you have, you create an open
source thing, you don't charge for it, but maybe you have classes on it or other types of things,
right? Then in a sense, in the indirect sense, you're making money and modifying the software.
So there's just, it's, it's a little bit, I don't know, it feels to me, especially this,
this line above where they talk about like it, it was, we believe you should distinguish between
unpaid and independent open source contributors and corporate tech behemoth selling products.
To me, the GDPR felt very much like we're going after Fang. We're going after Facebook, Google,
Apple, Microsoft, these big companies that are just harvesting our data reselling. I'm clearly,
obviously not them, but it was, you know, targeted very much at these large organizations,
but had consequences for everybody. This seems a little bit similar, right? Not exactly the same,
but like, look at these huge tech companies are making billions. There's most valuable companies
in the world and just, they're unleashing viruses on people and they should take, there should be some
accountability. Yeah. That doesn't, that doesn't really seem to have taken into account like,
oh, it could also be an extinction level event for open source in Europe. Sounds bad.
Yeah. Well, I mean, and I don't know where they were coming from, but I kind of, I mean,
I kind of get the idea of like, let's say for instance, the Google play store or the Apple store
where, these companies are, are like provided, they're just hosting stuff written by other people,
but they're taking a 30% cut or more. So it's, I think it's reasonable for customers to expect
that the stuff they get is not horrible, like a virus or stealing stuff or whatever, or unintentional
stealing at least. but the, that doesn't, I mean, it seems like this to the two models are the
same, but they're not, we're not PSF isn't taking it there. Well, they are taking a 30% cut of free.
Um, but exactly. Yeah. Yeah. I think another area where they probably had this in mind is like
hardware vendors that have a software component that just let them turn into garbage immediately.
Like I've got this streaming video camera that'll tell me if something's happening on my house and
within two weeks it has a vulnerability. There's no updates ever, or I get a router and after a year,
it's no longer supported and it gets hacked and take over, you know, those kinds of things.
Totally reasonable. Holding every open source contributor who touches software liable seems
stupid. Like genuinely, I don't understand what the Eagles, yeah, I don't get it.
Yeah. So, all right. That, well, anyway, not the best news, but I think it's important to let people
know, right? Like, at the bottom, there is a call to action that says PSF members and Python
users in Europe may wish to write to their MEP voicing their concerns about the proposed CRA law
before April 26th. While amendments that will protect the public open source repositories are
still being considered. So take action folks. can't really write to them cause I don't have a
representative in Europe, but I hope people do.
What's an MEP? I don't know. I have no idea. I'm sure it's like a congressman type of thing.
And the, the, the link, that we're going to provide in the show notes does have a link that
the bottom of the article has a, has a link to the, write your MEP. So.
Yep. Write your MEP. Cool.
All right. Members of European parliament is that acronym we're looking for.
What is not trying to wipe out the open source community is our sponsor. In fact,
quite the opposite. So this episode is, Python Bytes is brought to you by influx data,
the makers of influx DB. Influx DB is a database purpose built for handling time series data at a
massive scale for real time analytics and developers can ingest store and analyze all types of time
series data metrics, events, traces in a single platform. So dear listener, let me ask you a
question. How would boundless cardinality and lightning fast SQL queries impact the way that
you develop real-time apps? Influx DB processes, large time series data sets and provides low latency
SQL queries of not the kind with the plus name, just time series, making it a go-to choice for
developers building real-time applications and seeking crucial insights for developer efficiency.
It helps you create IOT analytics and cloud applications using timestamp data rapidly and
at scale. Influx DB is designed to ingest millions of data points in real time with unlimited cardinality.
Influx DB streamlines building once and deploying across various products and environments from the
edge on-premise and to the cloud. So try it for free at pythonbytes.fm/influx DB.
The link is in your podcast show notes. Thank you to influx data for supporting the show.
Keeping our podcast going strong. Yeah, thank you. All right. Over to you, Brian.
Well, I want to create a little chaos.
Arms? I don't know. Anyway, so chaos engineering.
Don't be mucking around here, man.
Yeah, it's all the rage with all the Netflix kids. So chaos engineering is a style of taking down parts of your system or injecting issues into your system just to make sure that your system is resilient. There's a lot of experiment. There's a lot of books on it, articles on it. But how do you do it? What kind of tools do you use? And one of the tools is the chaos.
That's toolkit that we're highlighting. Now this is suggested by the maintainer. Sylvain. And I'm not going to attempt your last name, Sylvain. But thank you for suggesting this. It's an open source project. That is that works with Python. I don't know what it's written in. But it's a I think it's Python. But I don't know. So the idea is you can run experiments against your system. And you can write those experiments in JSON or YAML files. And so you can run experiments.
You can orchestrate and collaborate with people. And you can orchestrate through the code. So that's nice. It's extensible. You can build on it. It's got an open API that you can extend it. You can automate it through CI pipelines.
And like I said, it's all open source. There's a whole bunch of cool stuff you can do with it. I'm just touching the surface. But one of the examples in the documentation, which I can't find right now, but I was reading the other, there's installation tutorials and references.
But one of the ideas was that I'm like, you should totally, I didn't ever consider this is do an experiment where you have your system running, and then you artificially make an SSL certificate expire.
How does your system deal with that? And I think that's an awesome thing to highlight, because we've all been there with like a system that we're a third party project that we're using, or our own, we think it's fine. And, and then the SSL certificate expires, and the whole thing just doesn't work for and you lose all your customers until you fix that. So testing for that is great. But there's also other things to like taking down and taking out database or region or whatever. So yeah.
Yeah. And how do you unit test for that kind of stuff, right? Like, how do you unit test that the SSL certificate's no longer valid? And then it is again, you know, like that kind of stuff, that infrastructure level stuff is really hard. And chaos engineering, I think, largely originated around how do we break the cloud? So that, and then what happens to our app? Not how does our app break, but if the infrastructure pieces that our app expects to be there, if those start to go down in weird ways, like how do you
survive that?
Yeah, that's kind of net, I think that came out of Netflix, but maybe they weren't the original original, I certainly was popularized out of Netflix.
Yeah, so some really cool stuff. And it's at your fingertips with just like a pip install, I think so.
Excellent. Yes, it is 98% Python, 1% Docker file, and 1% make file. So pure Python.
Yeah, yeah. So cool stuff. And lots of examples. And there's already examples there. And that's one of the ways they like people to help out is whether or not you extend the tool, extending examples for how to use it to test part of your system. I think that's pretty neat.
And one of the reasons why I wanted to highlight this is a lot of chaos engineering is around large corporations, like places like Netflix or big services. But there's little guys like Michael Kennedy that's running Talk Python training and a couple podcasts. And we would all be sad if something happened.
And he can't, he can't, he can't hire reams of people to, to test all this stuff. So having these tools available for, for everybody. And yeah, these things, these tools can be used for companies too. But it's, it's nice to have things like this around for people like you and me.
Yeah, absolutely. Thanks. I, I do also see it as kind of one of these things that brings like some of the tools and techniques from really large organizations that have a team that could build up custom tools like Netflix to do this kind of stuff.
You know, kind of like Docker and Kubernetes gives you crazy infrastructure DevOps abilities that used to just live at Google in places like that. Right. So it's a little bit like that for breaking things in your, in your cloud and your infrastructure.
Yeah. And I, I definitely want to get, I think this is a perfect topic to go deep in on, on test and code. So I'm going to try to get Sylvain on the, on the show to talk about it. We can jump in deeply. So.
Yeah. That sounds great. I definitely look forward to it.
Well, what you got for us next?
I got a pep. Now to be clear, this PEP is in draft standard and it is 12 days old. So it is not super old, but it is PEP 711. This is the tie back to what you started with Brian.
Sort of a little bit of packaging and managing and deploying Python things like libraries and stuff called PyBI, a standard format for distributing Python binaries.
So what that really is by Nathaniel Smith. And I'm actually going to have Nathaniel on talk Python in one and a half hours.
So if you're watching the live version of this and you care about this, you can drop in on that live stream about an hour after this show ends. But if not, if you're just listening, then, you know, check out talk Python.
If you want to dive into this for the, about the same timeframe. Anyway, the idea is so many of the tools that we work with, including walk.
I imagine assume that Python is installed and now how do we manage dependencies? How do we manage environments? How do we isolate environments? Right.
How do we update the dependencies of a given isolated environment? This is steps back a little bit and says, what if you don't have Python?
What if you have the wrong version of Python? How do we get that to you? What if you could pip install Python 3.11?
Oh, wait, no, pip install Python 3.12 and just express your runtime as a binary dependency, not download it, compile source like PyInv does, then takes forever.
Hope that your system is set up right. But how do you, how do you get Python on your system in a way that is kind of like Python wheels?
So have a bunch of prebuilt binary versions of Python on PyPI. So you literally install it over that. That's the proposal, right? That's the idea.
So the abstract is short and sweet. It says like wheels, but for prebuilt Python, instead of a prebuilt Python package, it's a prebuilt Python interpreter.
Okay. So that is pretty interesting. This is the end goal.
I want this.
I want it too. And I'll bring up a discuss thread here in just a second.
End goal pypi.org has prebuilt packages for all Python versions of on all popular platforms.
So automated tools can easily grab them and set them up. Right.
So wouldn't it be cool if we could just do that for the Python runtime itself?
That would also mean, I imagine, that you wouldn't have to be an administrator or have access to run sudo on your system.
Well, I hope, but maybe.
Because you can pip install --user, right?
Oh, yeah.
So you could just do that to like a local location because you get this isolated little binary.
And Jeremy Page out there points out that PyBI exists now. It can be installed with the POSI tool.
So yes, indeed. Jumping over to the announcement, PyBI and POSI by Nathaniel Smith.
So this is a, I would, looking in from the outside, I would say this is probably a proof of concept level version of this.
But really, you know, for the PEP to be accepted and for people really to leverage it, I would imagine, you know, you probably need Python.
Like the full buy-in of the Python folks themselves, right? The core developers and so on, right?
But anyway, so much like walk POSI, P-O-S-I, POSI, POSI, I don't know.
That tool would allow you to run CLI commands that initialize your system with the right version.
Not so much your system, but a particular localized, kind of like virtual environment, even though it doesn't use virtual environment, but give you one of these, right?
So it's riffing on Kushal's PEP582, which is the Dunder PyPackages folder.
Instead of having virtual environments, it could just be kind of like a NodePackages equivalent, which I still would like to see that.
That would be nice.
So he said, whoops, come back here, said, got me thinking historically, tools that have started with the assumption that you already have Python, now you want a management, means every tool needs to be prepared to cope with every possible way of installing and managing Python.
And the beginner workflows, beginner-friendly workflows, has to be the part of the interpreter, right?
So you've got to install the interpreter, make sure you have the right version of Python, and then you can start using, like, let's say, Hatch or Poetry or pip-tools or whatever, right?
And if your tester wants to use ToxNox, then you're on your own figuring out how to get all those interpreters installed.
If you use PyNV, that compiles it from source, so that's got to work on your system.
That's slow, right?
But what if we went the other way around and just uploaded CPython to PyPI so you could pip install Python?
So technically, pip won't work because that's part of Python, right?
So that's what this POSY thing is.
It lets you basically say, I want this version of Python.
And you could also build out projects.
So you can say, I'm going to use various packages, and I want this version of Python.
And it will bundle up a thing that, when you install it, has the right version of Python and the right packages.
So it's kind of a step in a pretty interesting direction, I would say.
You scroll down, down, down, down.
There are 71 replies in this announcement thread.
But Paul Moore, one of the core developers on pip, says, this is beyond awesome.
I hadn't realized you were actively working on this.
That's pretty good.
Frederick says, really nice to see this.
The direction of the path per package is really the right direction.
The fact that it requires Rust, the way it is now, it requires having Rust installed, which is kind of just like kicking the having Python installed to a different corner.
You know, like, oh, you don't have to have Python installed to run this.
You just have to have the Rust compiler installed.
You're like, no.
Why?
I'm sure that you could compile a binary for a platform and hand it out and say, here's the one for macOS.
As long as you have this tool on your system, you can run it.
You don't need the runtime tools, right?
You could distribute that and let it kind of bootstrap your system, right?
I imagine.
Well, yeah, so I got lost with the Posey thing.
So I'll have to try to read up on this and try to understand what's going on.
But I guess I don't get it.
Are we not going to have Pip?
We're going to have Posey instead?
Or is this just a, we don't know?
I need to talk to Nathaniel more about this.
Okay.
But from reading this announcement and reading the things, the way to think of it is kind of like Docker.
Okay.
So with Docker, you don't create a Docker image and then run it as a container and then decide, oh, I want to make changes.
So you don't like log into the container and make changes.
You just shut it down, restart it, rebuild the image with new settings, and then you rerun the container.
They're a kind of real, right?
Yeah.
But this is some of the early phases of trying to figure out the workflows of all this and everything.
So that's great.
So what you would do here from what I've read is you would say, I have, I want this version of Python and these dependencies, and it has a lock file and everything.
You can sort of see down here in this section, it creates a pyproject.toml that describes the environment and some aliases to run it similar as hatch environments.
And then you run it.
Right.
And if there's some kind of change, instead of trying to actually change the environment.
So there's no virtual environment, for example, there's just, here's the thing you run.
You want to upgrade a request, say, it's in there.
You want to upgrade requests.
You just create a new one of these, a new build of this that has the updated dependency expressed in it.
And then you run that again.
Right.
So you rebuild the environment rather than edit it.
Right.
So what, what role is that going back to your question?
What role does pip have in that?
Probably less.
I'm not entirely sure, but maybe pip is involved in the building, but not in the distributing.
You know what I mean?
To build up the environment that you would get might, might involve pip.
But anyway, it's pretty interesting.
There's a bunch of comments here that people can, can check out below.
And it's not universally.
Absolutely.
Everyone's like, yes, do this now.
But most of them are like, this certainly blew my mind.
Count me in on how, how we could explore to do this.
And Pimple also points out like, this is somewhat related to Conda, right?
So Conda is another way that people get different versions of Python and bring along the dependencies.
And so there's some, some talking here about how this might work together, maybe to be something
that Conda could use or how those two projects might work together.
So anyway, it is a PEP 7.11.
And there is this, I'm going to call it proof of concept.
Maybe I'm not categorizing that right, but this proof of concept with a POSY tool to make
this happen.
I just realized it was 7.11.
So there needs to be like a Slurpee logo for this.
Yeah.
I don't think PEPs generally have logos, but yeah, I certainly.
Sure.
I think we might just have some image art for our episode.
All right.
Anyway, nice, nice work.
Nathaniel, talk to you soon about this, but it looks interesting.
Oh, I'm looking forward to listening to that episode.
Nice.
Yeah.
Cool.
Is that it for all of our items?
I believe it is.
It is.
Got any extras?
Extras.
I just want to let people know that we're going to both be, the plan is, both of us in
a couple of days are going to be heading off to PyCon.
And so hopefully people will see us.
I think on, I think the plan is for Saturday that there's going to be a, a ask me anything
thing at the PyCharm booth.
And then following that, I, the current plan that things are, things may change, but the
current plan is that'll be set sometime Saturday.
And then also I'm going to be giving away some books.
So there's going to be some, pie test books giving away and, and I'll be signing
some.
So if you happen to be also, if you've got one of the old copies or new copies or whatever,
it doesn't matter.
If you want to bring your own for me to sign, go for it.
Um, I don't know why people want me to write in their book, but sure.
Um, I'll do it.
So also gotten some new stickers.
Uh, I'm looking forward to giving those out.
So, yeah, I don't, I don't have like, I'm not speaking, but if you see me, I'll
it's fine to interrupt whatever I'm doing and ask for some stickers.
So, and we will be doing some form of live Python bytes from there, which will not be
at the standard time because it's over on Tuesday, not on Tuesday.
It does not intersect any known Tuesday.
So, yeah.
So we're going to be doing that.
Absolutely.
I'll probably do some other podcast recording.
I'll be going around.
I'm also doing an ask me anything, giving away some courses.
So yeah, should be a lot of fun and do that at the jet brains booth and other live events
as well.
So come find us and try to, we'll try to live stream, assuming that the internet is good
enough there.
We'll try to live stream our recording.
There's the people who are not at the conference can still check that out.
Well, is it joke time?
Yes, it is joke time.
It is definitely joke time.
So, or do you have some extras?
I don't, good question.
I don't have any extras.
Uh, I have almost have an extra, but I'm not ready.
Uh, that'll be in the next, next one.
So, okay.
Good stuff.
Um, so this one has to do with interns here and maybe try to describe what you're seeing
here in this picture, Brian.
So there's, there's first off, you see like, somebody from like their balcony or something
looking over at somebody else's balcony and somebody throws like some water or something
out of their window.
And then you pan over and there's like a, like a forest fire going.
A raging Canyon fire in somewhere like California or somewhere like that.
Right.
Yeah.
So there's, it clearly requires at least a fire truck, if not one of those airplanes
that come by and drops water.
So there's the, the water is just, you know, like a mixing bowl worth of water.
And the title is intern helping senior devs fix a severe bug in production.
Yeah.
It's like, it's, and also the, the, the other title is that it's the effort that counts.
So, and this is good and it is funny and make you laugh, but there are 43 really good comments.
So there's different things that says, okay.
So someone comments when I was an intern, I get paged during the night as an escalation when
the senior engineers couldn't fix production because they didn't know how.
Yeah.
It was a crappy company.
And then someone replies, plan A, check if someone supplied a solution on Stack Overflow.
Plan B, it was the intern.
Place the blame there.
I like, but it's not water.
It's gasoline.
Yeah.
It's not water.
It's gasoline.
That is actually really, really good.
I love it so much.
So another one follow up that is actually the intern knows way too much about the problem,
probably involved in causing it.
Yeah.
So anyway, it's, the joke is funny.
The conversations throughout the comments here on Reddit are, they're fantastic.
So I encourage you to go check out that joke.
Yeah.
Funny.
Nice.
All right.
Well, Brian, thanks for being here.
Thanks to everyone.
Thank you.
Who participated in the live stream and just for showing up and listening.
We really, really do appreciate it.
Yeah.
We do.
Yep.