Python Bytes - #456 You're so wrong
Episode Date: November 3, 2025Topics covered in this episode: The PSF has withdrawn a $1.5 million proposal to US government grant program A Binary Serializer for Pydantic Models T-strings: Python's Fifth String Formatting Tech...nique? Cronboard Extras Joke Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters 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. Brian #1: The PSF has withdrawn a $1.5 million proposal to US government grant program Related post from Simon Willison ARS Technica: Python plan to boost software security foiled by Trump admin’s anti-DEI rules The Register: Python Foundation goes ride or DEI, rejects government grant with strings attached In Jan 2025, the PSF submitted a proposal for a US NSF grant under the Safety, Security, and Privacy of Open Source Ecosystems program. After months of work by the PSF, the proposal was recommended for funding. If the PSF accepted it, however, they would need to agree to the some terms and conditions, including, affirming that the PSF doesn't support diversity. The restriction wouldn't just be around the security work, but around all activity of the PSF as a whole. And further, that any deemed violation would give the NSF the right to ask for the money back. That just won't work, as the PSF would have already spent the money. The PSF mission statement includes "The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers." The money would have obviously been very valuable, but the restrictions are just too unacceptable. The PSF withdrew the proposal. This couldn't have been an easy decision, that was a lot of money, but I think the PSF did the right thing. Michael #2: A Binary Serializer for Pydantic Models 7× Smaller Than JSON A compact binary serializer for Pydantic models that dramatically reduces RAM usage compared to JSON. The library is designed for high-load systems (e.g., Redis caching), where millions of models are stored in memory and every byte matters. It serializes Pydantic models into a minimal binary format and deserializes them back with zero extra metadata overhead. Target Audience: This project is intended for developers working with: high-load APIs in-memory caches (Redis, Memcached) message queues cost-sensitive environments where object size matters Brian #3: T-strings: Python's Fifth String Formatting Technique? Trey Hunner Python 3.14 has t-strings. How do they fit in with the rest of the string story? History percent-style (%) strings - been around for a very long time string.Template - and t.substitute() - from Python 2.4, but I don’t think I’ve ever used them bracket variables and .format() - Since Python 2.6 f-strings - Python 3.6 - Now I feel old. These still seem new to me t-strings - Python 3.14, but a totally different beast. These don’t return strings. Trey then covers a problem with f-strings in that the substitution happens at definition time. t-strings have substitution happen later. this is essentially “lazy string interpolation” This still takes a bit to get your head around, but I appreciate Trey taking a whack at the explanation. Michael #4: Cronboard Cronboard is a terminal application that allows you to manage and schedule cronjobs on local and remote servers. With Cronboard, you can easily add, edit, and delete cronjobs, as well as view their status. ✨ Features ✔️ Check cron jobs ✔️ Create cron jobs with validation and human-readable feedback ✔️ Pause and resume cron jobs ✔️ Edit existing cron jobs ✔️ Delete cron jobs ✔️ View formatted last and next run times ✔️ Accepts special expressions like @daily, @yearly, @monthly, etc. ✔️ Connect to servers using SSH, using password or SSH keys ✔️ Choose another user to manage cron jobs if you have the permissions to do so (sudo) Extras Brian: PEP 810: Explicit lazy imports, has been unanimously accepted by steering council Lean TDD book will be written in the open. TOC, some details, and a 10 page introduction are now available. Hoping for the first pass to be complete by the end of the year. I’d love feedback to help make it a great book, and keep it small-ish, on a very limited budget. Joke: You are so wrong!
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 456 recorded November 3rd, 2025. I am Michael Kennedy.
And I'm Brian, I'm getting Guns and Roses vibes. It's raining outside. It's November. Come on.
Guns and roses? That's one of their songs. That's like once they were kind of cool, then they, like, became some other band that was more of like, like, love ballots.
November rain. It's a Guns and Roses song.
Oh, okay, November rain.
Okay, got it.
I'm like, it's rainy in the Northwest.
That's just not that much news.
No, that's like, no, I got to go back.
We're going to do music.
That completely entirely encompasses all a Pearl Jam, all the Nirvana, all the sound
garden, period.
November rain?
Or rainy in the, no.
Rainy in the Northwest, like the whole grunge movement, right?
Yeah, definitely.
And I would just, I mean, look, I'm getting some support from the audience here.
Rhett out there is already saying November rain is one of the greatest, greatest rock ballads of all
time.
And I agree. Thank you, Rhett. Although I will throw a Tesla out there as, like, the greatest rock ballads of all time. Band. All right. Are we off track yet, Brian?
Yeah. This episode is brought to you. It is brought to you by us. We've got a bunch of fun things. We have Tesla the band, not the scientist, not the company. We both have awesome books. You should check them out. Brian, yours has been around for a while. I don't know if you're ever going to write another one, but we'll see. And how many people write the second book, right? You know, I'm, I imagine that.
you might do something like this.
And my book's going really well.
The Talk Python in production, like, hey, maybe we could do simplified, affordable,
but still fast and professional posting of our apps without hyperscale clouds and 100 services
and cloud engineers and all that.
And if you want to be part of this show live, you can join us live.
Are we changing times, Brian?
It's 11.
Yeah.
We're good now, isn't it?
Well, as far as my work schedule goes right now, 11 works.
All right, everyone.
I just want you to know what I'm out here doing for you.
So I'm going to go, I'm going to have to go back and edit 455 episodes where we said watch the live stream at Monday at 10 a.m.
I'm going to replace that with watch the live stream at Monday at 11 a.m.
You're not actually going to do that, are you?
No, I'm not going to have to do that.
None of us AI can do it for me.
That's not happening.
But going forward, if you want to join us for the live stream, please do so at exactly this time, 11 a.m.
I'm sure there's some sort of time zone weirdness because we just change time.
but Pacific standard time
until it becomes daily time.
We'd love to have you.
We'd love people in the audience
with feedback and thoughts
and all that kind of fun stuff.
Check out the newsletter.
It's really great.
We've been telling you about it.
Sign up PythonBiss out of FM slash.
I'll just go there and click the newsletter button.
All right, Brian.
What do you click in first?
So I want to talk about some news
that came out last week.
So there's on the wrong one.
There we go.
The PSF,
the PSF wanted to try to try
to get some money from the National Science Foundation.
Actually, so this was in January of January of 2025.
There was a really kind of an interesting grant under the safety, security, and privacy of
open source ecosystems program, which totally seems like a perfect thing for the PSF to try
to get some money for Seth and others to make sure that the PSF and Python code is all secure.
Yeah, especially I think the supply chain side, if I'm
remember correctly something like that um however and they put in a ton of work and uh and then they then
the the but our current administration says in order to to get this money you have to um you have
to agree that you will basically not have any sort of diversity anything is part of your whatever um
and you know what's going on they you have to affirm that we do not and will not during the term
of this financial assistance award,
operate any programs or advance any
or promote DEI or discriminatory,
equity, whatever.
All that normal, wacky politics stuff
that's going on in the U.S. right now.
Well, that's a tough bite for the PSF
because it wouldn't just be the security stuff.
It would be everything the PSF does.
And in the mission statement,
the mission statement of the Python Software Foundation
is to promote, protect,
and advance the Python programming language
gent to support and facilitate the growth of a diverse and international community of Python programmers.
Does that violate? We don't know. So they like, you know, checked with a bunch of people and
basically said it's too risky because if the administration decides you violated it, they can
take back the money, even if you've already spent it. That's crazy. And I'm glad basically the
PSF said too high for risk and we're not going to do that. So they, um, they say,
said no they took took back the proposal tough they basically they were going to win it it's my
understanding like it was yeah they turned turned down 1.5 million which if you think about it is
something like 25% of the revenue it's that's a really big significant chunk yeah i mean huge amount
of money and a small amount of money for the the national science foundation huge amount of money
for the PSF um it's it's unfortunate but um anyway uh we're going to link to the uh the PSF announcement
But there's also, Simon Wilson has a shorter and really good write-up.
He's part of the decision, too, and agrees with it.
Apparently, it was unanimous.
So he's on one of the board members who voted to reject the funding.
And then there's also articles from Ars Technica about this because it's big news.
And also, the register has an interesting article on it.
so we'll link to those.
Yeah, that is a little bit more broad coverage of inside baseball and Python
than we usually get.
Yeah, it's unfortunate, too.
So I'm going to bump up my donation to the PSF,
and there's a link in most of these,
at least in the main article,
and Simon Wilson has a link there.
Also, if you'd like to, if you think what they're doing is right and good stuff,
and I actually really love what everybody does,
but bringing Seth on board was pretty cool
and he's doing some neat things with security
and so are other people.
So, yeah, anyway, that's that.
Yeah, more security is good for us, but it's...
Gotta pay for it.
That's tricky.
Talk about serialization.
And there is no funding or nothing in the serialization, Brian.
It's just straight serialization, Brian.
So check this out.
So one thing that's really popular,
I don't know if you've heard of them before,
but Pidentic, it's pretty popular.
Some people use it for...
They have JSON and they want to get into Python objects.
They use this thing called Pidantic.
Yeah, it's kind of a big deal.
It is.
But here's what the Pidantic things do.
They exchange JSON, right?
And JSON can be extremely verbose,
aka it takes a lot of memory during caching.
So let's suppose I have a list of 1,000 customers.
Each customer has a street address, country, postal code, et cetera, et cetera, right?
Those words are repeated a thousand times, right?
How many customers I said, 100,000, whatever?
Right?
Those are very verbose.
It's great for humans.
It's way, way better than XML.
Thank you for XML mostly going away.
But it's still pretty verbose.
So when you say, like, maybe I want to use Pidentic models,
but then I want to store those things in like some kind of cached setup, right?
Like Reddest or a discash or a discash.
Like, man, I'm psyched about discash these days.
So many places I see that I can use it.
But if you put the JSON in there, then you're taking up a lot of space.
So this project announced on Reddit by a lucky,
to Yan is called, what's the actual project called?
It's called Pi Bintic, is then Piedantic.
So binary Pidentic, which is interesting.
So it says, I build a compact binary serializer
for Pidentic models that dramatically reduces
the RAM and or disk storage for caches compared to JSON.
The library is designed for high load systems,
like Redis caching Valki.
And if you're doing Redis, you can also look at Valki,
where millions of models are stored
of memory and every byte matters.
It serializes Pidentic models into minimum, minimal binary formats,
and decerellies them back with zero extra metadata overhead.
Cool.
If you look, is there a graph here?
No, there is the graph on the GitHub page.
So there's a graph about the size, but it's something like seven times smaller.
There's a bunch here, let's look.
It compares to JSON, which is, let's say, 35 gigs, and then Pibantic.
I'm having problems here, is 4.6, which is like 9.
eight times smaller than JSON, but that's pretty interesting.
But here's what is actually really crazy.
It's also four times smaller than message pack,
five times smaller than binary JSON,
and half as big as Protobuff.
Oh, interesting.
And Red out there's right there.
Thank you, Rhett, for the handoff.
So why not just use Protobuff?
Well, it's twice as small,
so it depends how much you are really worried about that, right?
And how much do you want to just serialize your Bidentic model?
So anyway, I thought this was interesting.
in a way that it would say, look, maybe we don't, maybe we don't just necessarily store everything in JSON, maybe is this pybantic thing, or but maybe, like, as Red is pointing out in the audience, like maybe you want something more interchangeable and more well-known, use protobuff.
But so it's a chance to talk about this new project, which is interesting, but also just to talk about there's interesting, well-known serialization formats that you can use.
Yeah, yeah. And I think we can get those numbers better. If we, like, we'd come up with a benchmark with really long.
names yeah get repeated like Boolean objects that are just like the street that I lived on when I
was a kid underscore underscore yeah street that I lived on underscore kid as a kid confirmed true
and so on right yeah we could crush it in anything that drops the yeah drop it so yeah someone
else out there say all these things sound kind of interesting until you need to open up a rest client
and debug the API I don't believe yes that's true and I don't believe that this is necessarily
an API exchange format.
This is a caching story, right?
Like, if I'm going to write it to diskcash or to Redis or Valki, you know, I'm probably
not going to look at it.
I'm just going, is it still there, or do I just throw it away, right?
Maybe you do, but maybe you don't.
Anyway, yes, everyone has pointed out some of that there are certainly tradeoffs of binary
data, but I think it's pretty interesting.
Yeah.
As, you know, look, the thing is, often the very first limit you hit when you're in any sort
of cloud computing environment is way, way.
Way sooner, memory than CPU.
Memory is so much more expensive than CPU.
And this can give you, you know, half, five times less scale in that regard.
So you might be, you know, that's where you start.
This is not when I'm just like prototyping my app.
Like, let's start with this, right?
This is where you're like, we could go from a $1,000 server to a $50 server
if we didn't have to store this much stuff in memory for caching and it would still be
faster, you know, that kind of thing.
Yeah.
Yeah.
And there's still like, I don't know if this would be used.
in those cases, but there's still non-web cases where memory is important.
Oh, right. What are you talking about?
And stuff like that, embedded systems.
There's stuff other than the web, no.
I know. I'm an old, old crafty guy that actually programs things.
Crazy. Now, here, what's your next thing? Tell us about it.
Okay. Well, this is T-strings. These are new. Actually, we've talked about T-strings before,
but now everybody can play with them because 3.4, 1.4.
3.14 is out.
Yeah, they're officially a thing.
And but they're a little,
I think we're going to cover them probably a few more times
because they're a little bit harder to get your head around
than everything else before.
So I really appreciate there's an article from T-String's fifth string
formatting technique.
There should be one and only one way to do things unless it has to do with strings.
Yeah, or, or yeah, lots of other things.
or pass or what else we're talking about?
So one of the cool things is,
and I hadn't really thought about this,
is the history of string formatting.
He goes through a very brief history.
Percent strings, I kind of remember those.
Yeah, I totally remember using those.
Like percent S and then percent and then the tuple to fill them in and stuff.
So those sorts of template strings.
You've got string.
Dot template, which I actually, to tell you the truth,
that came in in 2.4, and I don't think I ever used it.
because by 2.6, we had .format.
So Python, the dot format, we used a lot.
I used that a lot over the years.
It's still a useful one, actually.
Yeah, definitely.
And also in a lot of places where you might grab T-strings now,
they're still pretty useful because you can pass those around pretty well,
and then format them later.
And that's sort of that delayed actually formatting part,
where T-strings are going to be really cool.
So then we have F strings, of course, and everybody loves F strings.
I love them.
And what's interesting is I still think of F strings as a new thing, but they came in in
3.6.
That was so long ago.
I know.
That was real long ago.
It's wacky.
And then 314 has T strings.
And the different thing about T strings is they return a template.
They do not return a string.
So they are different beasts.
But the cool thing is, well, so why would you use them?
we've talked about this before but i kind of like that tray took a whack at explaining this they're
more like you might want to use i don't remember if you said it or somebody else it'll be very
useful for library authors and uh framework people to be using t-strings not sure how many people
like in your own code you'll use it because f strings are still pretty cool in format but um
but he gives an example of a dedent function that is the the issue with f strings is the uh when
you to like that the the interpolation of filling in the variables happens earlier and you can
delay it with templates essentially is what we're talking about and it goes through a de-dent example
and i actually i'm going to have to just play with it more because i still got lost but uh this is a good
good attempt and uh and and i think this is cool so um and then one of the neat things i love it when
people do this is why not if you're used to popping things on pipey i um he uh he went ahead
and called this Better Dedent and his example and threw it up on Pi.
So if you want to play with what he came up with, you can just install it, run it.
Okay.
Yeah, very fun.
I feel like he should create a, not just a bunch of separate little things that are for his examples,
but like a mega, like a morsels with a complex CLI that lets you dive into the different
examples.
I mean, he would have, but the grant got canceled.
Oh, I see.
Well, it's only the security features that wouldn't make it.
Oh, yeah, right, never mind.
No, that's actually a decent idea,
because he's got a lot of,
he's got a lot of cool stuff on the Python Morsel's site.
So, yeah, for sure.
For sure.
Okay, let's talk about something called
Cronboard, speaking of putting up
like a TIE or a CLE or a CLE sort of thing.
So, Brian, how many Cron jobs have you done?
At this time?
They have weird syntax.
I don't know if you're familiar with it,
but they have really weird little syntax that you can put in.
I don't know if there's a good example on this thing,
but like star, star, seven star.
Like, it's kind of hard to figure out like all the pieces,
understand what they mean, see what ones are on your machine and so on.
So this thing called Cronboard is a terminal app written with textual and rich
that is basically a shell-friendly or SSH-friendly tool for understanding and using,
like, look, telling me, like,
what particular things are on here as a cron job what are their settings you can see like it's
10 that 1-10 star star star 3 star and actually the little thing validates the expression how often
that actually means that runs and so on isn't this cool yeah it is cool yeah yeah i always
have to use some sort of tool to figure this out because i know i'm like no i'm going to get it
wrong look it's so messed it's so weird i admire the old graybeards that used to be able to just
do this in their head or on paper but
yeah not me that's right like this could definitely qualify for it's some form of elvish joke
yeah right i mean we put it on regular expressions but it could be on cron job expressions as well
yeah anyway that's all there is to it there's not a whole lot to say about it it's written in python
which is fun so do you have do you have um thinking about why you chose this maybe just for the fun of it
but do you do you have uh cron jobs and what you're doing on talk python not exactly i have
I sort of do, but a lot of it is like background.
It's more like a background task that checks every hour.
And so I've kind of kept it to that because I don't know.
I like, I'm sure people get this vibe about me.
But like I like stuff more cohesive and stuck together and just like focused and not all spread out all over the place.
Like, okay, so this script runs on that cron job and then this part checks the database and this thing over here.
You know what I mean?
So if I can cram it together and go, the part that needs that can also just run like a background thread.
And every now and then just go, does that need checked?
rebuild or re-indexed or whatever. But I could certainly see places where if I was more comfortable
with cron jobs, I would do a better job with them and things would probably be simpler. So there's
that. Yeah. Yeah, Cromboard. Check it out. Looks fun. Cool. We're on to extras. You're the only
extra. I got nothing. Okay. Well, there's some exciting news. I just heard this this morning.
Oh, because it just happened this morning. Barry Warsaw announced in PEP 810 explicit lazy imports.
We've been talking about this for a while, and it was not approved yet.
It was just a draft, but it is approved now.
So steering counsel happily and unanimously accepted a 10 explicit lazy imports.
They have some input for the authors, but basically a really nice commentary about a revise and resubmit
sort of acceptance from the academic side.
Like, we'll take it, but not as it is.
Yeah, it's okay.
Well, I mean, but that's kind of one of the cool things about the steering council, because you can do things like when you submit something, you can, like as this is done. Actually, this was a really, really well written, I thought, well written, PEP. But you can say things like, there's a few points, like, what keyword do you use? The PEP authors liked Lazy, but there was a couple other options. And the steering council went through and, like, tried to figure out if they could come up with a better name. I mean, if there's options, why not give it to the steering council and say, you guys, you guys, you guys, you guys,
can decide if you want but yeah um so pretty cool i wonder what that means for anybody that has a
global variable named lazy from the compatibility i mean if if it would be fine as long as they
don't use it in the import statement i think it probably would not do anything at all so i know the
early python parser had a hard time with disambiguating that kind of stuff but i think maybe the
peg parser is more advanced i know the peg parser is more advanced maybe it can handle it like in c sharp
they have certain words that they themselves are not keywords,
but taken as a pair, they are keywords,
like lazy space import.
So in C Sharp, you have yield return is a keyword thing,
but you can have a variable named yield as well,
and they will be understood as different by the parser.
And I think that that was not true in early Python,
but I could be wrong about that.
Well, luckily, we have listeners, like, and people, Hugo, is listening,
which is great and in the in the chat says lazy will be a soft keyword so you could reuse it later
okay good and also i forgot to give hugo a shout out as his post on on social media that um announced
that i the reason why i saw the announcement was from hugo so thanks hugo yeah awesome and thanks
for all the stuff you go you give us a lot of good pointers either directly or just by writing okay
cool yeah so i think i'm excited about the other thing which this is me not reading the pep
end to end, but I'm curious, I'm going to be curious to see how it unfolds with typing.
Because I know that you highlighted, you can say, if type checking, then you can do regular
imports versus lazy imports. But if the next line I write is, my function takes an object of one
of the things that was lazily imported, does that, like, execute its import effectively? I don't know.
We'll find out. We'll find out. I'm guessing the security, or the steering council probably
thought about that. I do. I would say so, because that was a real big problem.
when they were trying to change the way imports worked a little bit earlier
or things like Pidentic, you know, bringing that back around, right?
They're like, oh, this is going to be really bad.
We won't know what things are anymore.
Help.
Yeah.
Okay.
So that's the really big news for everybody.
And then I have really big news that mostly applies to me.
The big news is that I've started writing again.
And I've actually decided I am a big proponent of lean, like lean philosophy.
and everything.
And part of Lean is actually just getting the whole pipeline,
the entire chain, top to bottom, in place early.
And so I've decided to do that with the book.
So the entire purchase process, at least for this,
is already in place.
I've got a Lean TDD site up.
There's actually a table of contents figured out already.
I've got, I know what I'm going to write.
There's not much there yet.
There's like 10 pages written of introduction.
But if you want to get updates every time I go through it,
you can go ahead and grab a copy if you want and I'll send you
the well the system will send you updates every time I have something new
I'm also it took me what a year the process to
from I want to write a book to it's out for the Python testing
the pie test for both editions was a year and a half
I don't want to take that long I'd like to get this this one
through the first draft and a pretty good state of the first draft
it would be more like a beta thing by the end of the year that's my goal
So awesome. Congratulations. That's awesome. Thanks. And also with all of this extra junk around,
like the get making, getting a blanding page and all that stuff, wasn't tons of work. But it takes
away from writing. So I'm glad that I can get back to to writing and get this thing kicked out.
Yeah. People don't necessarily, even when it's your project, you don't think about how much those
little extra things are going to take. It's like, oh, I can just put this app up and, oh, people have
to reset their password. Oh, that means I got to support email. Oh, okay, well, how I'm going to
do email? I don't want to send email. But here.
I am writing an email service because apparently people have to log in or something, you know.
Yeah, and I'm also, I'm reviewing it.
One of the things I didn't, I'm not thrilled with how the Pytist book shows up on Kindles.
So I'm checking out the book from a Kindle.
That's where I'm doing my proofreading to make sure that that's like an e-book-first way to produce the book.
Yeah, awesome.
Love it.
All right, cool.
How about something funny?
Yeah, let's round it out with a joke, huh?
Yeah.
Okay, so we used to talk a lot about Stack Overflow, and Stack Overflow had this reputation, still does, just we talk about it less, that Stack Overflow people were kind of mean. You'd ask a question.
Well, the people in Stack Overflow, I think the actual Stack Overflow people were fine.
Yeah, I mean the community members, a lot of the people were, they would be quick to judge, quick to say, that question's already been asked and answered. It was asked three years ago, you know, not amazing, right?
And it can be really daunting, especially newcomers.
And so the feel for Stack Overflow might be,
you're absolutely wrong, might be a subtitle.
Right?
But these days, no, we can feel all good about it.
You are absolutely right, says Chad GPT.
See, it's good to be a program right now
because instead of you're absolutely wrong,
you're absolutely right.
They both could be wrong,
but they're sure that you're wrong or you're right,
depending on who you ask.
Yeah.
You know, my daughter even, like, ran into that.
She was like, she was stuck on some chemistry
homework and she like asked uh asked chat she asked something i don't know if i think it was chat gbt
and and she got like an answer back she's like that that just doesn't look right and it said
oh you're right it's wrong and then it came up with a different answer and she's like this is ridiculous
how do i trust it then yeah exactly i do think that's why it works better for programmers
than for many other groups because you can run the code and at least see if it runs or doesn't run
And that's a form of a check.
Or if you're doing some compile language, see if it compiles or parses or whatever.
Whereas if it does, like, a chemistry theory, you're like, well, I guess I could do a
year's worth of research and see if this is right or wrong, but I don't know.
You know, I mean, go to the lab and start doing experiments.
Like, it's just, it's just the feedback loop is real quick for us.
But it's still, you're absolutely right.
Like, no, I'm actually wrong.
Just, what are you doing?
Anyway, we live in weird times.
There's a fun joke about it.
Yeah.
Oh, I'm going to throw, I'm going to grab.
the screen again oh i already took it down never mind i'll do an extra next week another extra so
all right well with that we're gonna have something to look forward to right yeah yeah uh so
cool all right catch you later by brian thanks everyone
