Python Bytes - #431 Nerd Gas
Episode Date: May 5, 2025Topics covered in this episode: pirel: Python release cycle in your terminal FastAPI Cloud Python's new t-strings Extras Joke Watch on YouTube About the show Sponsored by NordLayer: pythonbytes....fm/nordlayer Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: pirel: Python release cycle in your terminal pirel check shows release information about your active Python interpreter. If the active version is end-of-life, the program exits with code 1. If no active Python interpreter is found, the program exits with code 2. pirel list lists all Python releases in a table. Your active Python interpreter is highlighted. A picture is worth many words Brian #2: FastAPI Cloud Sebastián Ramírez, creator of FastAPI, announced today the formation of a new Company, FastAPI Cloud. Here’s the announcement blog post: FastAPI Cloud - By The Same Team Behind FastAPI There’s a wait list to try it out. Promises to turns deployment into fastapi login; fastapi deploy Side note: announcement includes quote from Daft Punk: Build Harder, Better, Faster, Stronger I just included this in a talk I’m gave last week (and will again next week), where I modify this to “Build Easier, Better, Faster, Stronger” Sebastian and I are both fans of the rocket emoji. BTW, we first covered FastAPI on episode 123 in 2019 Brian #3: Python's new t-strings Dave Peck, one of the authors of PEP 750, which will go into Python 3.14 We covered t-strings in ep 428 In article t-strings security benefits over f-strings How to work with t-strings A Pig Latin example Also, I think I have always done this wrong Is it the first consonant to the end? or the first consonant cluster? So… Brian → Rianbay? or Ianbray? BTW, this is an example of nerdgassing What’s next once t-strings ship? On thing that’s next (in Python 3.15, maybe, is using t-strings in shlex and subprocess) PEP 787 – Safer subprocess usage using t-strings deferred to 3.15 Michael #4: zev A simple CLI tool to help you remember terminal commands. Examples: # Find running processes zev 'show all running python processes' # File operations zev 'find all .py files modified in the last 24 hours' # System information zev 'show disk usage for current directory' # Network commands zev 'check if google.com is reachable' # Git operations zev 'show uncommitted changes in git' Again, picture worth many words: Extras Brian: Holy Grail turns 50 nerdgassing Michael: Transcripts are a bit better now. Zen is better now Joke: Can my friend come in?
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 431 recorded May 5th, 2025.
And I am Brian Ocken.
I am Michael Kennedy.
And this episode is sponsored by NordLayer.
Listen to their spot later in the show.
And if you'd like to connect with us, you can or suggest topics.
Please feel free to send us an email or head on over to either Mastodon
or BlueSky and the links to both of us and the show are in the show notes. And you can join this
episode live or join it live usually Mondays at 10 but sometimes other times. But head on over to
PythonBytes.fm slash live to sign up and see the schedule for the next one.
But also you can, that's on YouTube,
so you can watch them later if you'd like.
And I'd also like to encourage people
to sign up for the newsletter.
We send out a weekly email with all the links
from the show plus background information.
It's a lot of fun, so check that out.
Also, I think it'd be cool to have a cool first topic,
Michael, what you got?
This was a nice, easy one, easy to adopt, easy to appreciate, I think. So you and I, we spend a lot
of time talking about, here's the new things for this, and here's the new thing for Python,
and here's the new features, the next version, and test the alpha, test the beta. And we also
talk about when they go out of support, but I don't know how you feel I
Often that that sneaks up on me. I mean the fact that three eight is out of support seems wrong Yeah, but it is you know what I mean? Yeah, and so you might be sitting at your terminal just going what's that status again?
And so I present to you
Pyro P I R E L
And what it is is it's the release cycle of Python at your fingertips.
Oh, cool.
Yeah, so there's a little graphic here, I suppose. I can open up the image full size, perhaps.
And you just type whatever, doesn't matter how you have Python active, if it's the system one,
or if it's a virtual environment one, you can write PyRel check, and it'll give you a nice
summary of what's going on here. You can say you're using Python 313 which is actively maintained and it
will be this good for this long you can say pyro list it'll give you a list of
all of the last ten or so versions when they came and when they went so it's
it's pretty cool I mean that's more or less what it does,
but it tells you that you can get, you know,
go get a new Python version if yours is getting older.
And the status as well,
is it still getting feature updates?
Is it in bug fix level?
Is it security fixes?
Or is it YOLO?
I just can't be bothered out of.
Anyway, that's what this is.
What do you think?
I think that's pretty fun.
Yeah, also neat.
Yeah, and it uses the rocket emoji,
which will make a reappearance, right?
Yeah, I do like the rocket emoji.
Indeed.
So there's a little bit else you can do with it,
though it does not particularly interest me as a tool,
nonetheless.
You can also type Pyro guess and it will do
things like give you various trivia about the the release history of Python.
So for example it might ask when was Python 3.11 released or who is a release
manager for 3.6 and it gives you a multi-choice select and you can pick and
it'll tell if you're right or wrong. So if you like Python release history and
seeing the details you can do that. But I you if you're right or wrong. So if you like Python release history and
Seeing the details you can do that, but I think the pyro list and the pyro check is pretty cool
Yeah, I like it neat. Yeah, that's it. All right Well, um, I don't want to cover something that we've covered before kind of
Back to the back to the future back to we're gonna go back in time. This is episode
123 which when was that? That was like in May 26, 2019, we recorded it,
and it came out on the 29th.
Right, and we had no idea.
Things were different back then, 2019.
2019, different world.
But one of the things that started in that
was when we announced, well, we didn't announce it,
but we covered it on the show way back in 2019, the introduction to Fast API.
So we talked about it.
This new cool web framework called Fast API.
Well, Fast API has been growing and it's now the number one web framework, not
just across Python, but across everything.
So it's been an incredible thing to watch,
some great work out there.
Well today, Sebastian Ramirez,
the dude that created FastAPI in the first place,
he announced that he is forming FastAPI Labs,
a new company, and that they are,
the FastAPI Labs is a new company
and they're building FastAPI Cloud is a new company and they're building a FastAPI Cloud.
So we're gonna take a look at what does this mean?
It kind of means that you just get to build your fast,
if you do this, the promise is you build a FastAPI
application and you can just deploy it with
FastAPI deploy, just a single line.
And then they'll host it on their,
like a sub domain of the fastapi cloud.dev.
So kind of interesting.
I'm intrigued.
So I've definitely joined the wait list.
There is an announcement blog post
by the same team behind FastAPI.
So this is kind of an incredible,
he's built FastAPI up and it's not just Sebastian now,
there's other people working on it.
It's built on top of Pydantic and a couple of cool things
that I can't remember.
But the team is, the blog post talks about the problems
of deploying to the cloud.
Now there is documentation on the FastAPI,
and we've often commented
that the FastAPI documentation is excellent.
They've done a great job with documentation,
but it is not trivial to really deploy anything anymore,
aside from maybe a static site.
But you have to get concerned with a lot of stuff,
especially if you start
growing with security. And so they are looking at that security bit. So it's so far, it looks
like Patrick Armino, Alejandro Sanchez, Sophie VanLangen, sorry, and Sebastian, and probably more.
I'm not sure if that's part of the team
or if that's just, anyway, they might be,
I don't know how many people are in the company right now,
but he's promising to keep FastAPI open source
and to also, interesting in this is that
he doesn't want to have vendor lock-in,
so whatever processes they build up,
it won't make it so that you're stuck with FastAPI
without having, with their hosting.
So essentially this is hosting for FastAPI.
So kind of neat.
Yeah, congratulations, Sebastian and crew.
That's awesome.
Yeah.
It is a hassle to deploy things.
And presumably these folks know the best way to host FastAPI.
FastAPI might be tuned for the infrastructure
that they choose over time.
I'll have to look more into this, like, how do you host
a database and things like that.
But presumably, you can do things like use a CNAME
for your app at fastapicloud.com and get your own domain name and all that sort of stuff.
But very interesting.
Yeah, it is.
Also, interestingly, that was the first thing I thought is like, well, I probably don't
want to use their domain.
But for an API endpoint, for some internal tools and stuff, I might not care.
So I think some people-
That's a good point.
Yeah, you would care a whole lot less if it's just an API and it's not like your landing page or whatever. Yeah. Yeah. Anyway, cool stuff. Absolutely. Well, what else is cool, Brian?
What? Nord layer. Let me tell everyone about our sponsor and Nord layer here. So Nord layer is actually a pretty neat product. And this episode of Python Bites is brought to you by Nord layer. So it's a toggle ready network
security platform for modern businesses and combines VPNs like you would expect of course
from the parent company Nord. However, it's also access control, threat protection, visibility
into what's happening
in case you spot some sort of malware.
All of those in one easy use platform.
There's no hardware, no complex setup,
just secure connections and full control
in less than 10 minutes.
So it's easy to start with quick deployment,
step-by-step onboarding 24 seven support.
It's easy to combine.
It says it works with existing setups
in all major platforms and Nordlator is easy to scale.
Just add users, features, servers in a few clicks.
SSO and provisioning included.
If you want zero trust network access, you got it.
It provides those network zero trust solutions.
It adds threat protection to keep malware, ransomware,
and phishing from reaching your endpoints, including servers.
How cool is that?
Increases your threat intelligence to spot threats before they escalate and helps businesses
achieve HIPAA compliance and stuff.
So if you're responsible for security of your software or data science team, you should
definitely give NordLayer a look.
As Python bites listeners, you get an exclusive offer of up to 22% off Nord layer
yearly plans plus 10% off the top with a coupon and that coupon is Python Bytes dash 10.
If you visit the link in your show notes, you'll there's a landing page and it gives
you the code right there.
So Python Bytes dash 10, try Nord layer risk free with their 14 day money back guarantee.
Visit pythonbytes.fm slash Nord layer to get started
Link is in your podcast player show nuts. Thank you to Nord layer for supporting the show. All right
Next we you know going back in time a little less in time
This is just a couple episodes ago in episode 428
And we covered t-strings. So t-strings are gonna come in 3.14 in the Pi release.
So there is one of the authors, Dave Beck,
or Dave Peck, sorry, Dave, wrote an article
about the Python's new T strings.
And I'm kind of excited about it
because when we talked about it on the show,
I was, I'm excited about them,
but I also, they're like template strings,
but how are they different than F-strings?
When would I use one over the other?
And I got all these answers in this blog post.
So he talks about what's the big idea of T-strings,
and interestingly enough, we've loved F-strings
so much that they're used inappropriately.
And I didn't really realize that there's security problems.
So there's like comments on using f-strings
to take user data, user input, and fill in like maybe
a SQL statement.
Don't do that.
You wanna clean your user input first. But so people have
been using it and or possibly to use it to generate a web page. So you've got a possibility
of somebody inserting cross cross site scripting or other bad things that you don't expect
by just sticking sticking user data into HTML. So misusing F strings is one of the reasons why T strings
were kind of a cool thing.
So the template strings are a generalization of F strings
and they keep things separate.
So F strings actually create a string,
but T strings don't create, when you create a T string,
you don't get a T string, you get a, or a string,
you get a template object. And this't get a t-string you get a or a string you get a
template object and this template object has these two separate things you've got
it's got a i'm going to scroll down it's got a a strings section and a values and so it keeps it's a they're both tuples of of things of what's inside of it. And you can iterate through them.
There's all sorts of cool stuff you can do with templates, these template strings.
But this is a nice, really good walkthrough of kind of what's inside and why they're different
than F strings.
They're very different now.
But talking about there's inside, there's a, what's the value?
There's a interpolations are a thing that's in there.
So you might have, it might be a string, it might be other, it might be something else.
And the interpolations have all the pieces in place.
And you can even dive really deep into it and have things like what's the, what the
value of the variable that you passed in, the expression name, the conversion,
the format specifier,
even if you've got format specifiers on it.
And this is all sorts of nitty gritty detail,
but the gist I'm taking away
is they're just really kept separate.
So you've got like the template
and the things you're passing into the template
as completely separate things.
Why is that great?
Well, one of the great things about that is,
is you can, like in the example of SQL or HTML,
you can take the user data and check all of that
and run things over it.
So you can, if you've got user data
and you expected a string,
but you expected people to not be nefarious about it,
you can do like a safe HTML or something, and you expected a string, but you expected people to not be nefarious about it.
You can do like a safe HTML or something, convert like the brackets into something else,
strip out SQL statements so that they're not, it's not a, you know, escape things, escaping
things and making them cleaner.
One fun example in this, I love this, a fun example is how to create Pig Latin using template strings.
And so there's like this Pig Latin converter that takes a template and returns a string.
So you're able to have like a hello world and then you run Pig Latin on the template
and it converts the template into, we've got these converter functions, you can convert into actual string.
And I kind of, okay, I got it.
I went down a rabbit hole on this because this example says to convert, I kind of forgot
the rules of Pig Latin because it's been a while since I've been a kid.
But it says essentially, if the first character is a vowel, if the words in the word, the
first character is a vowel, then you append yay on the end. But if it's not a
vowel, you take the rest of the word and take the first character and put it
at the end and say a. And I don't think that's correct or I think it might be
correct but I forgot the rules. So I looked it up and
Big Latin sorry about this, but
Big Latin it says that it's not just the first constant, but it's the first constant cluster So I don't think this is the correct implementation
So well, as I said when that fits on one screen, yeah, so Brian would translate into
Ian Bray, not Ryan Bay.
You know, anyway, OK, the diversion.
But anyway, so there's some some great ideas for when when when we finally have T strings
and we ship Python 3.14, we can do things like possibly
he's having everything more safer, more flexible.
One of the things that's coming up possibly is,
oh, where'd it go?
787, so there's a proposal for safer sub-process usage
with like Schlex and Subpros, which I love Schlex,
but you could use, if those could be implemented
with T-strings, they'd be a lot safer.
So there are some, some security vulnerabilities in these things.
So it could simplify the implementation.
Right.
You don't want to ampersand, ampersand do other things as part of your command, right?
Yeah.
So, so this, and then, so having a lot of things that to take user input and create
other things, having them use T-strings might,
and having like some quick safe conversions, instead of having to convert user data ahead
of time, you can just grab the user data and stick it in a template string and then later
in your pipeline, clean up the user data. Those are pretty cool things. So there's also
some attribute things you can, there's other ways you can, since they're separate,
all the way until you do the conversion,
you can do like some cool attribute things
that he covers in the article too.
So anyway.
Yeah, looks like a great article.
Thanks, Dave.
I'm gonna have Paul Everett on TalkPython,
not this week, next week, to talk about T-strings.
So.
Perfect.
Yeah, we're gonna be diving into it some more.
Yeah, should be fun. Nice. Indeed. Let's go back to the terminal and this one I think is also
pretty interesting especially if you're learning the terminal or you're just like how do I do that
again? Zev. Have you heard of Zev? No. It's a simple CLI tool that helps you remember terminal
commands. So if you're sitting here and you're like,
you know, I don't really know what I'm doing
with this stuff.
I can type zev and it says, what do you wanna do?
It says, show all files in this directory
with human readable sizes.
And it says, okay, great.
Here are a couple of things you could do.
And it gives you a select list like ls-lh
or I think it was find is one of the options.
But basically it gives you a bunch of options
to do those types of things.
And off it goes.
Pretty cool, right?
Yeah.
Yeah.
So this project runs on top of LLM APIs like OpenAI,
Google Gemini or local Olamma.
So basically it sends that command over
and then it looks at all the responses. But it probably does a bunch of work to format it for you. But more
importantly it puts it right there in your terminal where you can just select
the answer and hit enter. You don't have to go to chat, copy it, move it back over,
run it. You know like that sort of round tripping. Yeah okay. Yeah so suggestions
that you might use are like show all running Python processes,
find all Python files modified in the last 24 hours,
show disk usage for the current directory,
check if google.com is reachable, et cetera, et cetera.
So yeah, pretty neat.
Does say everything's generated by LLMs, so careful.
Because you know how it goes, right?
It could be delete all files like this in this directory,
and in this directory part, it gets forgotten.
RM-RF star, OK.
Slash star.
Slash star.
Anyway, super simple, but you set up an LLM provider.
I recently wrote a really cool program that I'm, program, utility, simple tool,
that I use that I'm thinking of making public somehow,
but I also don't need another thing to babysit.
But basically, if you're in a Git repository,
you can just hit a command
and it will look at all the new files, the changed files,
and then correlate that with the local
LLM, coding-based LLM, and says,
create me a Git summary of everything.
Like the header and then actually a detailed summary
and what happened if you forgot all the things you did.
A little bit like this, but that's not out yet.
But this is cool.
I like to look at this.
What did I do on Friday to run on Monday?
Yeah, exactly.
You could totally do it.
And it says, and here it improves it in this way.
Oh, gosh, I did improve it in that way.
Look at the show. Aren't I smart? Exactly. You could totally do it. And it says, and here it improves it in this way. You're like, oh, gosh, I did improve it that way.
Look at the show.
Aren't I smart?
And before we carry on, looping back to your topic,
the T-strings, Henry Schreiner writes,
I've been wondering if this could be supported in the logging
module.
Since it's an actual type, it could be detected.
That would be cool, right?
Maybe have a slightly different output with more information about the parts of be detected. Yeah. That would be cool, right? Maybe have a slightly different output with more information
about the parts of the string.
Yeah.
Indeed.
All right.
Well, we're back to extras.
I really should have put up.
So one of the things I didn't cover about the t-strings.
We'll get to my extra first or second.
But in the t T string article, there is a link to a whole bunch of examples
of other non-silly examples of T strings.
We did, he just pig Latin in the article,
but there's a bunch of others too.
And one of them is a treatment of logging with T strings.
So check that out.
My extra really is, I kind of went,
speaking of rabbit holes, found out Monty Python and the Holy Grail turns 50 this year.
So 50 years ago, Monty Python. I can't believe that.
Bring out the Holy Hand grenade.
But what are the comments in here? I'm linking to an Ars Technica article.
the comments in here, which is, this is, I'm linking to an Ars Technica article. And I learned a new word today because they were, it says they were, MoneyPython and the Holy
Grail were nerd gassing before it was cool. So they were talking about nerd gassing and
one of the wonderful discussions in the movie is of using coconuts
There because they're supposedly riding horses. They don't have yet. Yeah, there's just some guy banging coconuts and
Somebody stops and says like where did you get the coconuts? Oh, we found them No, you couldn't have found them because like they're not native to England. They're tropical
So great discussion about coconuts and apparently that is nerdgassing. I didn't know the term.
So I looked that up. Nerdgassing was coined in 2008 by John Scalzi, a sci-fi author and blogger.
And nerdgassing is the venting nerd, venting, the venting that nerds emit when some often minor detail of a book or movie or TV show,
comic book, et cetera, either conflicts with canon
or hand waves through some suspect science.
And so I was totally nerd gassing in the,
in one of our topics when I went off on
what the correct rules for Pig Latin are.
Yes, you were.
And I do the same thing when people mess up that quote from Captain Picard
about may the force be with you.
Okay, so let's go on to the next...
Nice.
Please write us and tell me that that's wrong.
All right, this is it for your extras?
Yeah.
I would like to also point out for those as a follow-up
who don't know because Python,
the community has done a poor job of this.
All the logos for Python are snakes,
but the name Python came from Monty Python,
which is why it's relevant on this show.
Yes.
Yes.
And that's why we have wheels,
because they're wheels of cheese,
because they used to-
And the cheese shop for PyPI and all, yeah. The yeah the cheese kit I mean if you haven't seen the cheese kit from
money python you have to go watch the cheese kit because it's yeah that the
rabbit part is my favorite by far okay here's a quote there's not the joke
this is actually a real thing so it has a picture of Firefox and it says you
either die a hero or you live long enough to see yourself become a villain
and underneath it it shows the preferences in Firefox for website
advertising, allow websites to perform privacy, preserving ad management or
measurement.
This helps the site understand how their ads perform, et cetera, et cetera.
Like this is built into Firefox now.
And there was like some terms and use changes about how the stuff you
get you submit in Firefox is now being used and being shared and so on and
whoa right Firefox was like one of the last bastions of privacy like real
privacy the antithesis of Chrome which is you know tracking and correlating and
reselling everything yeah so both you Brian and me, we care about these things.
And for example, Brian use Vivaldi.
I use Vivaldi quite a bit.
But I also started using Zen, Zen browser.
That's what's actually on the screen right now.
And I love Zen browser because of it's such a clean,
nice little layout.
And it's based on Firefox as well.
So when this stuff got announced 10 months ago,
or whenever it was,
it was over on the Zen browser GitHub repo,
there was like, so what is Zen gonna do about this?
And at the time there wasn't a lot of clarity,
but now Zen 1.2.1 is out and it's got some features.
One of the things that it says,
if you go read the full release notes, da da da da da da, it's got some features. One of the things that it says, if you go read the full release notes,
da da da da da da, it's got some new features,
but in response to recent privacy concerns,
bracket about Firefox,
we've significantly strengthened Zen's privacy measures.
Previously, we only disassembled telemetry,
but other things were being done.
Now Firefox telemetry has been completely stripped out
of this.
Basically they've much like Vivaldi de-Google-ifies Chrome, Zen has had to go to the step of actually
de-mozilla-fying? I don't know, whatever what is the term here?
Extracting evil.
Extracting the in-poopification of... Yeah. and I don't necessarily blame Firefox
they are in a tough spot they've squandered their position quite badly
for quite a long time such that if the ruling against Google goes through they
lose 90% of their revenue overnight that's a problem but they're also doing
good things like starting to create like docs alternatives that we've covered before. But you know, yes things
things must be people must be resold and ads must be put upon people and that's
the way it seems to be. I don't know. I don't agree with it but that's how it is.
Anyway I'm happy to see Zen browser do this. Yeah there's all there's also a ton
of cool well there are a handful at least of cool
PyTest plugins that I use that started in Mozilla.
So, there's lots of great people
that have worked there over the years.
And I'm sure still do, a lot of people do.
And I suspect not all of them are super psyched
about turning on all the ad stuff, right?
Just like I'm sure there's people that still work at Google
that don't think they should have removed
Don't Be Evil from their tagline, but.
Yeah, but those people are evil.
Okay, let's keep going.
Just kidding, just kidding.
Please don't email me.
Yeah, email him.
It's Michael at.
Testandcode.com, okay.
Next, or you go to jail. No, such a fun episode with the that we did last week
Yeah, but but I pulled up this episode not because I care about that
But I've changed the way that transcripts work so previously we had you know transcripts are every word spoken for
30 minutes or however long the show is and I thought well that should go on its own page
you can go and check it out
but I would like you to be able to come to the page and hit command F and
Let you know what we said about I don't know AI or
Pork bun will just pick the sponsor because it doesn't show up too many times
but now the transcripts show up on the main page just as a
Section farther down
Okay, if you like, but it lets you click on the time link anywhere
and play it back as you go.
So if you find something in the transcript
and you're like, I just want to hear it,
you just click right there and boom, off it goes.
Put tons of effort into making these transcripts accurate
and good.
They're not perfect, please again, don't email me.
Say there is a imperfection I have discovered,
you were wrong.
But we make a lot of effort to say things like PyPI
are spelled correctly and other words are correct in here
so that when you search for them, they show up.
It also powers our search engine that you can just search
and even add to your browser that we talked about before.
But transcripts are slightly better
and the pages are slightly more useful.
So visit the website.
Yeah, and that helps us track every part of your life
because we know we don't do that.
We need just one cookie to get it started.
No, just kidding, we have no cookies.
OK, that's it for my extras.
Joke?
Yeah.
This is a re-envisioning of an old joke. I think it's pretty good. There's this
person running a china shop and there's a big sign that says China shop and then above it my code base and there's a
character here holding a
Giant angry looking bull by a nose ring and the person holding it says mind my friend comes with comes in with me and
the bull is labeled cursor.
Welcome to the era of AI, huh?
I'll just add that one feature.
Sure, we only need 27 changes.
You don't mind if we do, do we?
Interesting.
That's funny.
So why is this a flashback?
This joke actually comes from, this
is the original one from when George W. Bush was
president in the US, and the China shop was not code-based,
the China shop was social security.
Okay.
Yeah, something like that.
That's, I don't know, somewhere down here in this thread,
people talk about stuff, I don't know.
Anyway, I think it's a pretty appropriate joke,
it's pretty good.
Yeah, yeah, it's funny.
Good, good, good fun.
Yeah, indeed, indeed.
All right, well that's what I had for our joke.
Not absolutely hilarious, but amusing, I think.
If you want hilarious, you got to go back to 430, episode 430 last week.
Yeah.
Yeah.
Yeah.
And if you haven't listened to that, you have to watch that video because it's excellent.
That's right.
That's right.
Or you go to jail.
Or you go to jail.
Please.
Listen to it or you go to jail.
So, well, once again, wonderful episode.
Thanks everybody for listening and we'll see everybody next week.