Python Bytes - #432 How To Fix Your Computer
Episode Date: May 19, 2025Topics covered in this episode: pre-commit: install with uv PEP 773: A Python Installation Manager for Windows (Accepted) Changes for Textual The Best Programmers I Know Extras Joke Watch on YouTu...be 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. Brian #1: pre-commit: install with uv Adam Johnson uv tool works great at keeping tools you use on lots of projects up to date quickly, why not use it for pre-commit. The extension of pre-commit-uv will use uv to create virtual environments and install packages fore pre-commit. This speeds up initial pre-commit cache creation. However, Adam is recommending this flavor of using pre-commit because it’s just plain easier to install pre-commit and dependencies than the official pre-commit install guide. Win-win. Side note: No Adam, I’m not going to pronounce uv “uhv”, I’ll stick with “you vee”, even Astral tells me I’m wrong Michael #2: PEP 773: A Python Installation Manager for Windows (Accepted) via pycoders newsletter One manager to rule them all – PyManager. PEP 773 replaces all existing Windows installers (.exe “traditional” bundle, per-version Windows Store apps, and the separate py.exe launcher) with a single MSIX app called Python Install Manager (nick-named PyManager). PyManager should be mainstream by CPython 3.15, and the traditional installer disappears no earlier than 3.16 (≈ mid-2027). Simple, predictable commands. python → launches “the best” runtime already present or auto-installs the latest CPython if none is found. py → same launcher as today plus management sub-commands: py install, py uninstall, py list, py exec, py help. Optional python3 and python3.x aliases can be enabled by adding one extra PATH entry. Michael #3: Changes for Textual Bittersweet news: the business experiment ends, but the code lives on. Textual began as a hobby project layered on top of Rich, but it has grown into a mature, “makes-the-terminal-do-the-impossible” TUI framework with an active community and standout documentation. Despite Textual’s technical success, the team couldn’t pinpoint a single pain-point big enough to sustain a business model, so the company will wind down in the coming weeks. The projects themselves aren’t going anywhere: they’re stable, battle-tested, and will continue under the stewardship of the original author and the broader community. Brian #4: The Best Programmers I Know Matthias Endler “I have met a lot of developers in my life. Lately, I asked myself: “What does it take to be one of the best? What do they all have in common?”” The list Read the reference Know your tools really well Read the error message Break down problems Don’t be afraid to get your hands dirty Always help others Write Never stop learning Status doesn’t matter Build a reputation Have patience Never blame the computer Don’t be afraid to say “I don’t know” Don’t guess Keep it simple Each topic has a short discussion. So don’t just ready the bullet points, check out the article. Extras Brian: I had a great time in Munich last week. I a talk at a company event, met with tons of people, and had a great time. The best part was connecting with people from different divisions working on similar problems. I love the idea of internal conferences to get people to self organize by topic and meet people they wouldn’t otherwise, to share ideas. Also got started working on a second book on the plane trip back. Michael: Talk Python Clips (e.g. mullet) Embrace your cloud firewall (example). Python 3.14.0 beta 1 is here Congrats to the new PSF Fellows. Cancelled faster CPython https://bsky.app/profile/snarky.ca/post/3lp5w5j5tws2i Joke: How To Fix Your Computer
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 432, recorded May 19th, 2025. I'm Michael Kennedy.
And I am Brian Ocken.
And this episode is brought to you by NordLayer, awesome bolt-on security that you can add to all of your dev stations and servers and so on.
I'm going to tell you more about that later.
If you like social media things, you can stay up on a lot of announcements and follow the show. Follow us, Fostedon,
Mastodon, BlueSky, links are in the top of the show notes in the podcast player. Join
us live most days, most days at 10 a.m. Monday Pacific time, just Python Bytes.fm.live. Ryan
was being a world traveler,
so we didn't do it last week, but we're back at it.
And our email list is getting better and better.
So be sure to sign up as the friend of the show.
You'll get cool summaries and extra information
to get more out of the episode.
Like before, as in pre, not after Brian.
Yeah, as in pre, like pre-commit.
I'd like to cover an article
that from Adam Johnson pre commit install with UV and it's just a short
little short little tip but I didn't know you could do this. So pre commit
normally I've installed it before but I can't really remember how to and Adam
brings up that the install guide is maybe not the friendliest,
particularly for developers who don't use Python, but also anyway,
hmm, I guess precom is used for other stuff too. Right. So,
but you can use UV. So that's,
that's really the article talking about a couple of things, not only just use UV.
So you can use UV by saying UV tool install pre-commit. And now you have pre-commit installed for all of your projects
in one place. And then, but the recommendation also is to use with pre-commit UV. So this extra
thing is this with you is pre-commit UV. It says use UV to create virtual environments and install packages for pre commit and
Also comments that why would you do this because it speeds up the initial install and so the initial thing
And so if you've got it loaded on loaded on your local computer
the apparently the first run of pre commit with all of your extras
It'll probably be a little bit slower than later
because there's a pre-commit cache that goes on.
But for instance, if you're doing like Docker images
in your CI system, there might not be a cache there.
So the, and I might be just talking smoke
because there might be a way to get around it
with containers anyway.
However, if you really want that first initial one
to be a little bit faster anyway,
so using UV might be a good answer.
So anyway, also, so that's actually not why David,
or David Adam recommends this.
He recommends it just because it's an easier install.
And it sure is.
You just say-
The other thing is you don't even need Python installed
for that to work.
That's true.
Yep.
But UV Tool install pre-commit with
pre-commit UV and then you've just got pre-commit working. And yeah, right. You don't even need
Python already installed little UV. The UV packaging manager and all that stuff and caching
will just work. And I kind of love, I've been using UV tool for a lot of stuff lately. It's pretty slick.
So yeah, I just tried this out this morning.
Worked like a charm, love it.
Yeah, that's super neat.
And yeah, UV all the way.
I think they're doing great stuff.
I actually have a couple of things,
tangential or directly related to UV as well for the week.
So let's get to it.
The next thing that I have is kind of like that,
but it's not UV.
Ooh, hold on.
Hold that thought.
Here we go.
So this thing is PEP773 has been accepted by,
created by Steve Dower,
who does a lot of the Windows plus Python work,
core developer, but also works at Microsoft.
So it is a Python installation manager for Windows.
So it's, maybe I'm not quite getting it
right when I describe it this way,
but to me it feels very much like
an official Windows-based UV-like thing,
at least for managing the Python side of stuff, okay?
So it's put there as a one manager
to rule them all, PyManager.
So it goes under the colloquial name of PyManager,
but I believe its official name is something like the Python manager for Windows type
of thing, something like that. And the idea is there's right now multiple ways
to get Python onto your computer and they're unrelated and different. So I
could go to python.org and download it. That would give me a py launcher that I
can run and do things. Or I could go to the Windows Store and install it that way, which is another thing.
Or I could use win git or I could use new git to install it.
It's like, okay, great. What do I do? Right?
So the idea here is that this is one thing that does all the stuff that those do.
You don't have to think about it. You can get it those different ways.
So if somebody told you to go to the Windows Store and get Python, you would get PyManager as an MSIX,
which is the installer runtime for Windows.
Like the installer, it's like a PKG for Mac.
So you would get that there,
or you could go to python.org and download it,
and you would get the same thing
and the other ways you get it.
So it's kind of a similar way to get Python
that's consistent across all of them.
And what's cool about it is it's super of a similar way to get Python that's consistent across all of them.
And what's cool about it is it's super easy to use.
So if you just type the word Python, it will launch the best, end quotes, the best Python
runtime that either is already there or like here's where the UV stuff comes in or it'll
auto install the latest version of CPython if it's not there.
So at first it's kind of like a shell of Python and they used to have that and I think it said something
like, I don't know if you remember this Brian, but in Windows the early days used to
say you don't have Python, go install Python. If you type the word Python
you're like great, could you help me out or just okay I'll just go do that I guess.
So what this one now does it says okay great like UV virtual environment or UV
tool if you don't have Python,
it just says, great, we'll get the latest one, and we'll run that.
So that's pretty cool.
I thought for a while there was like, if you type Python,
it'll open a window to say, hey, do you want to install this?
And if you said, OK, it would take you to the store or something like that.
Yeah, maybe that's right.
It would take you to the store, wouldn't it?
Yeah.
Sometimes it just, yeah, I don't know.
There were some funky ways.
So it has, I believe
py is still there, but it's going to have the same sub commands as well and so on. So
like install, uninstall list, run. And one thing that's kind of nice is you can also
get Python three commands in Windows if you just add something to your path. Because traditionally,
I believe it's been a while since I've played with it in real detail.
But I think it used to be you had to type Python only,
like only Python to work.
And Python 3 didn't work on Windows, but on Mac and Linux,
only Python 3 worked.
Not Python by default. You know what I mean?
It's like, why are they different?
And so this also brings a little bit of unifying there.
OK, just in time for nobody to use Python 2.
Yes, exactly.
Yes, OK.
Yeah, maybe they're like, well, at least we should be consistent.
But I'm here for it.
I'd be fine to cancel Python 3 as a command.
Just go, you have to say Python 2 if you want Python 2.
Don't make the thing you should be doing harder than the thing
you shouldn't be doing.
Anyway, this should be mainstream by Python 3.15 and the traditional installers will disappear
in 3.16, like 2027.
So it's not a huge change right away, but I believe, what does it say?
I believe it says the top, where will this, this is just a standard, right?
It's not one of those things that's in a version of Python.
So soon, soon, soon. Yeah. Yeah. Two years. Be here before you
know it. Yes, it absolutely will. Well, before we move on. Yeah. Yeah. I'd like to thank Nordlayer
for sponsoring this episode. Nordlayer is a toggle ready network security platform built
for modern businesses. It combines VPN, access control, and threat protection
in one easy to use platform.
There's no hardware and no complex setup,
just secure connections and full control
in less than 10 minutes.
It's easy to start with quick deploy,
step-by-step onboarding, and 24-7 support.
It's easy to combine, works with existing setups
and all major platforms. And NordLayer is easy to combine, works with existing setups and all major platforms.
And NordLayer is easy to scale. Add users, features, or servers in a few clicks.
SSO and provisioning included. NordLayer provides zero trust network access,
based solutions, adds threat protection to keep malware, ransomware, and phishing
from reaching your endpoints, increases your threat intelligence to spot threats
before they escalate, and helps businesses achieve compliance. So if you are responsible for
the security of your software or data science team, you should definitely give NordLayer a look.
As PythonBytes listeners, you'll get an exclusive offer up to 22% off NordLayer yearly plans plus 10% on top with the coupon.
Just use code PythonBytes-10.
Try NordLayer risk-free with their 14-day money back guarantee.
Visit PythonBytes.fm slash NordLayer to get started.
Again, that's PythonBytes.fm slash NordLayer.
The link is in your podcast player's show notes.
Thank you to NordL for sponsoring Python bites.
Indeed.
Indeed.
Now, oh, I am up next.
So this one, this news broke last week, but like I said, we weren't recording last week.
So I'm going to, I'm going to announce it this week.
Maybe you've heard it by now but unfortunately, it's very sad to
me to hear this, but unfortunately Textualize, the company behind Rich and
Textual founded by Will McGoogan, is shutting down. So you know, it's
better to try something and fail than not try it all, right? So some of
the quotes from Will's post announcing this
is bittersweet news.
The business experiment ends, but the code lives on.
Obviously, it's super popular, right?
And if we go to GitHub somewhere,
what are we looking at for stars?
Yeah, 28,000 stars, super, super popular.
But as a business, it's no longer a thing.
So Will says, it began as a hobby project
layered on top of rich, but it grew into something
that looked impossible to do with terminals
and yet somehow it does it.
So despite the success, the team couldn't pinpoint
a single end point big enough to sustain a business model.
So the company is winding down probably about now,
said in a couple weeks, but that was a few weeks ago.
Projects themselves aren't going anywhere. They're stable, battle tested, and will continue.
So I want to say thank you to Will and everyone on the team for this.
It's a big contribution to the community and here, let's see.
Ooh, I don't even see a sponsor.
A sponsor option.
Will, put a sponsor option for us here so we can recommend people
go and sponsor the projects.
Yeah.
At a minimum, help them keep it going strong.
No, I love what Will has done with Rich and Textual.
And we're all rooting for Textualize.
And I don't, I mean, yeah, it's not going to stay a company anymore.
But I think having it be a company while it was made Textual into something like super cool.
They were able to focus on it and make it awesome.
So I appreciate everybody's work on that.
Yeah, absolutely, 100%.
Over to you, Brian.
All right, well, let's see.
I'd like to, I heard about this a few weeks ago,
actually, I think also.
Here's an article, let's see, updated in April.
So yeah, month ago.
It's an article by, I had name Mattias Endler the best programmers
I know and it's an interesting idea
For an article just the he was just saying I have met a lot of developers my life lately
I've asked myself. What does it take to be one of the best?
What do they all have in common and I kind of love this and I like the listy
There's I encourage you to go and read this article.
We've got a link in the show notes,
but I'm gonna jump around and read some of the topics.
So read the reference.
If there's one thing that I should have done
as a young programmer, it would have been
read the reference.
And like the Python standard library,
I admit I have not read all of the standard library,
Tamil spec, things like that. I would add have not read all of the standard library, tumble spec, things like
that. I would add to this that if you're going to do something new, jump down into beginner mode and
just read a beginner reference on something. Even if you're an expert Flask developer and you want
to switch to Fast API, go ahead and read the beginning tutorial and walk through the beginning
tutorial for Fast API. Things like that are helpful. All right, I'll go a little faster. The topics.
So read the reference, know your tools really well, read the error message. Getting good at
reading error messages is totally a totally good skill. Breakdown problems. Don't be afraid to get
your hands dirty. Always help others.
Write, blogging, talks, open source,
those help you get better.
Never stop learning.
Status doesn't matter.
Build a reputation.
Have patience.
Never blame the computer.
Don't be afraid to say I don't know.
Very important.
Don't BS to people.
That's AI's job.
If somebody comes to you, give them what you know.
Don't guess, keep it simple. Simple, and AI's job. If somebody comes to you, give them what you know. Don't guess,
keep it simple. Simple. And that's it. But really great commentary on each of these.
I love having this all put together as some good advice for software developers.
Yeah, it's easy to forget, right? It's also easy to not really know and wondering, are
they so productive? How do they know how that is implemented
or how that works internally in Python?
Like, well, they read it.
You know what I mean?
The status one is important, I think.
Don't assume that if you're just because you're,
I mean, there's so much complicated stuff in software
that it really doesn't take long of focusing on something
to become really one of the better people that understand how to use something, especially within your
company. So even if you're a junior developer, you might be the expert in
Tool X or something like that. And if you've got a company that's okay with it,
and hopefully you do, that's okay with people getting advice from all
layers, run with that. So yeah, some great advice.
Yeah, definitely. All right, some great advice. Definitely.
All right.
Well, that's it for our main item, Brian.
So let's talk about a little bit of security.
OK.
So how do you access your server if you're
running in the cloud and some sort of hosting, maybe even
a home lab that you somehow, for some reason,
have it accessible to the internet, things like that?
SSH, right?
That's almost universally.
Sometimes with Windows, you might be doing a remote things like that. SSH, right? That's almost universally. Sometimes with Windows, you might be doing remote desktop,
but probably SSH, yeah?
That's at least 80% of the stuff out there
is managed that way.
Yeah, look at this little quick answer.
How many SSH attacks can a public Linux server
expect per second?
Two, two attacks per second.
That's crazy.
No, sorry, I multiply it all.
Every two, every two seconds.
So that's like 30,000 attempts to hack your SSH.
And the reason, why do I bring this up?
This is one of my extras.
I've been listening to some security podcasts
and they're like, oh my gosh, here's what,
there's like, people are coming up with all these
crazy schemes to try to block their SSH.
Like, well, I know that I have like my business
and my my local
house as IP addresses are really stable. They're not static, but they're pretty
stable. So I'm gonna just set up a rule to only allow access to from those two.
You know? What if the power goes out and like the thing resets around? You know? I
mean, that's super dangerous. You might never ever get back to there. Other advice is, well, like, go into,
I don't even know how you do it,
go into the server and just shut it off,
but then use some admin tools, like an admin console,
or maybe even go in and just turn off the thing.
So anyway, I have a much better suggestion,
I think, for folks.
Almost everybody's hosting comes with what's called a cloud firewall.
You just log in from anywhere in the world using your 2FA,
and you have access to the dashboard for your cloud setup, right?
There's console.aws.com, there's console.hetsner.com, and so on.
And so just go in there and put your...
You can just restrict access to your SSH to your
current IP address.
And if for some reason your IP address changes or you're in a coffee shop and you want to
get access, just log in real quick and enter that IP address.
Chances are if you go back to that coffee shop again, it's still got the same IP address.
You only got to do it once.
It's super low effort and your tax go from 30,000 a day to zero, because those are coming from all over the world.
They're not coming from within the house.
They're not coming from your machine.
It'd be too late.
It's just to prevent the public stuff.
So embrace Cloud Firewalls, folks.
That's all I want to say.
Next.
This was last week, but caveats where I said.
Python beta 1 is here, 3.14 beta 1.
It is time for some beta pi.
Tasty.
Python 3.41, come on.
So people can check this out.
This is the preview of the first stable version.
I guess it really is just the first stable version
of Python 3.14, which is cool.
So check it out.
Can't believe we're already here again. Yeah, I know. Here we are. Also want to say there's a new batch of Python Software Foundation fellows
and I think there's like 10 folks or so in here. Charlie Marsh. Charlie Marsh. Yay. Obviously,
he's been doing session. Frank Wiles. Yeah, a lot of cool folks. Ivy, Fung, and other folks. I don't
want to read off everyone's name,
but congrats to everyone in there.
That's super cool.
Nice.
Not super cool.
Post from Mike Dropbooms.
Speaking on behalf, or for many, many people here, he is,
but it says, I'll just read you a little bit of it, Brian.
It's been a tough couple of days.
Microsoft's support for the faster CPy Python project
has been canceled yesterday, as of four days ago.
My heart goes out to the majority of the team
who was laid off.
I mean, that's actually a lot of people.
You look at the picture presuming that all those people
there are on the faster CPython team.
I'm not entirely sure they are.
But I know that included, you know, Mike,
some other folks.
It's not great, right?
It's, I can't remember where I read it.
There's some conversations, but someone said,
look, it's pretty short-sighted to bet the company on AI
as Microsoft is, and at the same time,
fire the team making the dominant language
for that technology better.
You know, you gotta maximize shareholder value, Brian,
but like, I don't know, 10 people or something,
how big of a deal is that on the scale of Microsoft?
Whatever.
So that's that.
And then also Brett Cannon says there were layoffs yesterday
and three Python core devs from the Faster C Python team
were caught in them.
If you know any jobs, please send them their way
to help them keep going strong, you know what I mean?
So I linked to that as well.
These are some insane people.
You really can't find something else
for these people to work on.
Yeah, exactly, exactly.
All right, back to better news.
So I just released, as in during this episode,
pushed the Go Public button for something
that was formerly known as Redknot,
but is now known as TY.
This is Astral's new type checker, equivalent of MyPy,
but also maybe even more important than that
is a runtime language server that handles very large code bases
and is more lenient than Pylance and others.
Oh, interesting.
Another thing that's super interesting,
the VS Code team, I don't think unreasonably,
but I think they're starting to crack down on
allowing a lot of these forks of VS Code access to some of the underlying infrastructure that are extensions, right?
Like, for example, Pylance, the runtime things, other tooling, a lot of the extensions that Microsoft makes aren't available to say Cursor or Windsurf or the 150,000 other free ones. So this might be an even better high performance replacement of things like the language server for the
Vibe coding platform as well. Anyway, it's a super cool interview with Carl
Carlmeyer and Charlie Marsh and people should check that out. That's nice
well, so what's T wise is that just because it's easy to type or
Type I think it's for type type. Yeah think of it as like thank you thank you yeah we
we made a lot of jokes about that during the show everyone says thank you to the astral folks for
making it better every time they run it yeah yeah so that episode is literally hot off the presses
check it out cool can't wait and something I've been doing that's pretty fun Brian is I've been
doing um I'm working on making a bunch of shorts like TikToks and YouTube shorts and stuff from the Talk Python episodes.
So I'm going to play a like a 15 second video. I think people are going to enjoy this. This is not exactly the joke, but it's kind of like the joke. Are you ready?
Yeah. Yeah. I guess if you use Postgres, you could just put it in a JSON field as well.
Oh yeah. They call that mullet schema, right? It's a business upfront and party
and back where the last column on your vertical is a JSON field.
I've never heard that.
That's incredible.
Oh, yeah.
It's like, yeah, we look real formal,
but don't look back there.
Got it in the ponytail today.
Yeah.
Amazing.
Isn't that amazing?
Yeah, anyway, so people should check out the channel,
obviously.
I'm doing some fun stuff there.
All right, that's it for my extras. Maybe let there. All right, that's it for my extras.
Maybe let me check.
Yes, that's it for my extras.
So I just got the joke left.
How about your extras, Andy?
Just a quick one. I wanted to pull up a screen.
Let's see. Picture of Munich.
I just wanted to mention the reason why we mentioned this at the beginning of the show,
but the reason why we didn't do it last week is I was in Munich, but I had a great time.
It was a work trip.
I was there to perform a talk
or present a talk at an internal conference.
And the reason why I'm bringing this up
is not just to humble brag that I was in Munich,
but yeah, it was fun.
Anyway, it was that I think it's just a really cool idea
that I was there for an internal company conference. And I think this is an awesome idea just to allow
we didn't have everybody over there, but everybody could submit talks. And if you got your talk
accepted, you go of course. But there was a it was like a two, two day two day event with like
three track three or four tracks, and just like a normal conference. We had talks and
everything and it was great. Everybody self-selected what they got to go to. And what I really
loved about this was it's difficult to get within a company all the people that care
about something together. And this allowed people to self-select into what they care
about. And so I had people coming up to me from different divisions
that we would have never interacted with before,
working on similar problems,
allow us to work together.
And I think it's definitely worthwhile for a company
to actually reduce costs by spending a little
to bring people together to talk about similar things.
Anyway, that's just my plug.
And then the other thing was flying back.
I couldn't sleep on the plane, so I had a ton of time to do something,
and I got started on a first draft for the second book I'd like to write.
I love it how just stepping away just a little bit.
Sometimes you'll be like, all right, that's it. I'm working on this project.
It just gives you that little bit of space from all the day-to-day.
That's cool.
Yeah, anyway, so it was good.
And if you look at that picture just to the left of that, that castle church thing, I've
had a really nice beer brewery, brow house evening one night over there.
I mean, it's a fun place.
Cool, cool.
All right.
Are we ready for jokes?
We are.
As a person who is known to be good with computers, sometimes you get dragged into tech support,
even though I don't know about you, I'm not especially good at tech support and I don't
necessarily desire to make that skill better.
I present you the quick and handy manual on how to fix your computer.
You ready?
Yeah.
Let's see, I can't zoom anymore than that.
Okay, so it gives you three options.
Do you have Windows? Do you have a Mac or do you have Lennox? So option one? It says Windows step one reboot
Did that fix it? No, well then proceed to the next step. All right. Next step is format hard drive
Reinstall Windows lose all your files quietly. Weep. Okay
Yeah, okay. See if I make this bigger. There we go.
The Apple one.
Step one, take it to the Apple store.
Did that fix it?
No?
Proceed to step two.
Step two is buy a new Mac, over draw your account, quietly weep.
Okay, well, Linux is more DYI, so let's see about that one.
This is step one.
Learn to code and see.
Recompile the kernel.
Build your own microprocessor out of spare silicon
you have laying around.
Recompile the kernel again.
Switch distros.
Recompile the kernel again, but this time using a CPU powered
by refracted light from Saturn.
Grow a giant beard.
Blame Sun Microsystems.
Turn your bedroom into a server closet
and spend 10 years falling asleep
to the sound of worrying fans.
Switch distros again.
Abandon all hygiene.
Write a regular expression that would make other programmers cry blood.
Learn to code in Java.
Recompile a kernel again, but this time wearing your lucky socks.
Did that fix it?
No.
Proceed to step two.
Revert back to using a Windows or Mac and quietly weep.
What do you think?
Yeah.
Plus it's 10 years later, so the
Macs are gonna be zipping by then. They definitely will. Well, if anyone needs to do tech support
for their family, I present the manual. Step by step guide. Step one and step two. Yeah, yeah,
it's funny. Definitely. All right, well, happy to have you back stateside even though you had a good
trip to Germany and we'll see everyone next week, huh? Good to be back. Thank you. Yeah, bye.