WEBVTT

00:00:00.020 --> 00:00:04.740
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.040 --> 00:00:09.260
This is episode 432, recorded May 19th, 2025.

00:00:09.700 --> 00:00:10.360
I am Michael Kennedy.

00:00:10.780 --> 00:00:11.740
And I am Brian Okken.

00:00:12.060 --> 00:00:14.560
And this episode is brought to you by NordLayer.

00:00:14.760 --> 00:00:20.580
Awesome bolt-on security that you can add to all of your dev stations and servers and so on.

00:00:20.860 --> 00:00:22.240
I'll tell you more about that later.

00:00:22.600 --> 00:00:27.560
If you like social media things, you can stay up on a lot of announcements and follow the show.

00:00:27.640 --> 00:00:34.660
follow us, Fosstodon, Mastodon, Bluesky, links at the top of the show notes in the podcast player.

00:00:35.060 --> 00:00:42.940
Join us live most days, most days, at 10 a.m. Monday Pacific time, just pythonbytes.fm/live.

00:00:43.600 --> 00:00:48.560
Brian was being a world traveler, so we didn't do it last week, but we're back at it.

00:00:48.980 --> 00:00:51.600
And our email list is getting better and better.

00:00:52.060 --> 00:00:54.060
So be sure to sign up as the friend of the show.

00:00:54.100 --> 00:01:04.640
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.

00:01:04.739 --> 00:01:22.280
I'd like to cover an article from Adam Johnson, pre-commit, install with uv. And it's just a 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.

00:01:22.940 --> 00:01:29.680
And Adam brings up that the install guide is maybe not the friendliest, particularly for developers who don't use Python.

00:01:30.180 --> 00:01:36.200
But also, anyway, I guess pre-commits used for other stuff too, right?

00:01:36.660 --> 00:01:39.340
So, but you can use uv.

00:01:39.700 --> 00:01:42.380
So that's really the article talking about a couple things.

00:01:42.560 --> 00:01:43.620
Not only just use uv.

00:01:43.900 --> 00:01:47.700
So you can use uv by saying uv tool install pre-commit.

00:01:47.860 --> 00:01:51.580
And now you have pre-commit installed for all of your projects in one place.

00:01:52.000 --> 00:01:57.480
And then, but the recommendation also is to use with pre-commit uv.

00:01:57.690 --> 00:02:02.680
So this extra thing is this with you is pre-commit uv.

00:02:03.050 --> 00:02:07.220
It says use uv to create virtual environments and install packages for pre-commit.

00:02:07.600 --> 00:02:10.539
And also comments that why would you do this?

00:02:10.660 --> 00:02:12.520
Because it speeds up the initial install.

00:02:12.840 --> 00:02:14.580
And so the initial thing.

00:02:15.020 --> 00:02:27.820
And so if you've got it loaded on your local computer, 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.

00:02:28.200 --> 00:02:34.580
But for instance, if you're doing like Docker images in your CI system, there might not be a cache there.

00:02:35.520 --> 00:02:42.560
So the, and I might be just talking smoke because there might be a way to get around it with containers anyway.

00:02:43.020 --> 00:02:49.000
However, if you really want that first initial one to be a little bit faster anyway, So using uv might be a good answer.

00:02:49.300 --> 00:02:55.000
So anyway, also, so that's not, that's actually not why David or David Adam recommends this.

00:02:55.120 --> 00:02:57.320
Yeah, he recommends it just because it's an easier install.

00:02:57.500 --> 00:02:58.080
And it sure is.

00:02:58.260 --> 00:03:01.380
The other thing is you don't even need Python installed for that to work.

00:03:01.980 --> 00:03:02.400
That's true.

00:03:02.760 --> 00:03:02.820
Yep.

00:03:03.420 --> 00:03:07.520
But uv tool, uv tool install pre-commit with pre-commit uv.

00:03:08.080 --> 00:03:10.060
And then you've just got pre-commit working.

00:03:10.800 --> 00:03:14.400
And yeah, you don't even need Python already installed.

00:03:14.700 --> 00:03:19.700
So the uv packaging manager and all that stuff and caching will just work.

00:03:20.020 --> 00:03:21.320
And I kind of love it.

00:03:21.400 --> 00:03:23.700
I've been using uv tool for a lot of stuff lately.

00:03:24.080 --> 00:03:24.900
It's pretty slick.

00:03:25.800 --> 00:03:27.640
So yeah, I just tried this out this morning.

00:03:28.300 --> 00:03:28.940
Worked like a charm.

00:03:29.320 --> 00:03:29.600
Love it.

00:03:29.820 --> 00:03:30.540
Yeah, that's super neat.

00:03:30.780 --> 00:03:31.880
And yeah, UV

00:03:31.880 --> 00:03:32.320
all the way.

00:03:32.460 --> 00:03:33.380
I think they're doing great stuff.

00:03:33.680 --> 00:03:38.600
I actually have a couple of things tangential or directly related to uv as well for the week.

00:03:38.760 --> 00:03:39.720
So let's get to it.

00:03:40.060 --> 00:03:43.520
The next thing that I have is kind of like that, but it's not uv.

00:03:44.140 --> 00:03:44.700
Hold on.

00:03:44.880 --> 00:03:45.540
Hold that thought.

00:03:45.740 --> 00:03:46.060
Here we go.

00:03:46.500 --> 00:03:58.420
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.

00:03:58.880 --> 00:04:01.840
So it is a Python installation manager for Windows.

00:04:02.400 --> 00:04:15.760
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?

00:04:16.239 --> 00:04:21.260
So it's put there as a one manager to rule them all, PyManager.

00:04:21.579 --> 00:04:31.080
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.

00:04:31.520 --> 00:04:38.280
And the idea is there's right now multiple ways to get Python onto your computer, and they're unrelated and different.

00:04:38.360 --> 00:04:44.640
So I could go to python.org and download it, And that would give me a PY launcher that I can run and do things.

00:04:44.780 --> 00:04:48.280
Or I could go to the Windows Store and install it that way, which is another thing.

00:04:48.400 --> 00:04:51.760
Or I could use WinGit or I could use NuGet to install it.

00:04:51.820 --> 00:04:54.140
It's like, okay, what do I do?

00:04:54.880 --> 00:04:54.960
Right?

00:04:55.270 --> 00:04:59.160
So the idea here is that this is one thing that does all the stuff that those do.

00:04:59.170 --> 00:05:00.260
You don't have to think about it.

00:05:00.500 --> 00:05:01.980
You can get it those different ways.

00:05:02.090 --> 00:05:08.640
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

00:05:08.640 --> 00:05:10.040
runtime.

00:05:10.540 --> 00:06:08.420
Windows, like the install, 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 easy to use. So if you just type the word Python, it will launch the best, in 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 in the early days you 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.

00:06:09.500 --> 00:06:10.100
So that's pretty cool.

00:06:10.380 --> 00:06:15.980
I thought there was for a while, there was like a, if you type Python, it'll like open a window to say, hey, do you want to install this?

00:06:16.100 --> 00:06:18.720
And you, if you said, okay, it would take you to the store or something.

00:06:18.940 --> 00:06:19.360
maybe that's

00:06:19.360 --> 00:06:19.420
right.

00:06:19.420 --> 00:06:20.940
It would take you to the store, wouldn't it?

00:06:21.300 --> 00:06:21.540
Yeah.

00:06:22.380 --> 00:06:22.740
Yeah.

00:06:22.960 --> 00:06:24.160
There was some funky ways.

00:06:24.580 --> 00:06:29.620
So it has, I believe py is still there, but it's going to have the same sub commands as well.

00:06:30.040 --> 00:06:30.580
And so on.

00:06:30.740 --> 00:06:33.400
So like install, uninstall list, run.

00:06:34.000 --> 00:06:39.740
And one thing that's kind of nice is you can also get Python three, commands in Windows if you just

00:06:39.740 --> 00:06:40.700
add something

00:06:40.700 --> 00:06:41.180
to your path.

00:06:41.500 --> 00:06:51.220
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.

00:06:51.370 --> 00:06:56.640
Python 3 didn't work on Windows, but on Mac and Linux, only Python 3 worked.

00:06:57.560 --> 00:06:59.260
Not Python by default.

00:06:59.440 --> 00:06:59.820
You know what I mean?

00:06:59.900 --> 00:07:00.880
It's like, why are they different?

00:07:01.420 --> 00:07:03.920
And so this also brings a little bit of unifying there.

00:07:04.100 --> 00:07:06.460
Okay, just in time for nobody to use Python 2.

00:07:06.820 --> 00:07:06.980
Yes,

00:07:07.070 --> 00:07:07.200
exactly.

00:07:08.000 --> 00:07:45.500
Exactly. Yes. Okay. Yeah. Maybe they're like, well, at least we should be consistent, but I'm, I'm here for it. Like I'd be fine to cancel Python three as a command and just go, you have to say Python two, if you want Python two, don't, don't make the thing you should be doing harder than the thing you shouldn't be doing. Anyway, this should be a mainstream by Python three 15 and the traditional installers will disappear in three 16, like 20, 27. 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.

00:07:45.960 --> 00:07:46.720
Soon, soon. Yeah.

00:07:47.880 --> 00:07:48.040
Two

00:07:48.040 --> 00:07:51.740
years. Be here before you know it. Yes, it absolutely will.

00:07:52.360 --> 00:07:54.700
Before we move on, yeah, take it away.

00:07:56.040 --> 00:08:09.140
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.

00:08:09.680 --> 00:08:30.100
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 scale, add users, features, or servers in a few clicks.

00:08:30.700 --> 00:08:32.780
SSO and provisioning included.

00:08:33.280 --> 00:08:48.220
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.

00:08:48.780 --> 00:08:56.440
So if you are responsible for the security of your software or data science team, you should definitely give NordLayer a look.

00:08:56.880 --> 00:09:06.440
As Python Bytes listeners, you'll get an exclusive offer up to 22% off NordLayer yearly plans, plus 10% on top with the coupon.

00:09:06.960 --> 00:09:09.440
Just use code pythonbytes-10.

00:09:09.920 --> 00:09:13.420
Try NordLayer risk-free with their 14-day money-back guarantee.

00:09:13.840 --> 00:09:16.860
Visit pythonbytes.fm/nordlayer to get started.

00:09:17.300 --> 00:09:21.020
Again, that's pythonbytes.fm/nordlayer.

00:09:21.210 --> 00:09:23.620
The link is in your podcast player's show notes.

00:09:23.980 --> 00:09:26.260
Thank you to NordLayer for sponsoring Python Bytes.

00:09:26.620 --> 00:09:26.740
Indeed,

00:09:26.920 --> 00:09:27.060
indeed.

00:09:27.840 --> 00:09:30.600
Now, oh, I am up next.

00:09:31.060 --> 00:09:40.560
So this one, this news broke last week, but like I said, we weren't recording last week, so I'm going to announce it this week.

00:09:41.900 --> 00:09:54.680
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 McGugan, is shutting down.

00:09:54.840 --> 00:10:00.960
So, you know, it's better to try something and fail than not try at all, right?

00:10:01.270 --> 00:10:09.020
So some of the quotes from Will's post announcing this is, Bittersweet news, the business experiment ends, but the code lives on.

00:10:09.320 --> 00:10:12.080
Obviously, it's super popular, right?

00:10:12.400 --> 00:10:16.480
And if we go to GitHub somewhere, what are we looking at for stars?

00:10:16.550 --> 00:10:19.180
Yeah, 28,000 stars, super, super popular.

00:10:19.640 --> 00:10:22.060
But as a business, it's no longer a thing.

00:10:22.100 --> 00:10:31.040
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 doesn't.

00:10:31.280 --> 00:10:37.440
So despite the success, the team couldn't pinpoint a single aim point big enough to sustain a business model.

00:10:37.610 --> 00:10:42.900
So the company is winding down probably about now, instead in a couple weeks, but that was a few weeks ago.

00:10:43.160 --> 00:10:44.560
Projects themselves aren't going anywhere.

00:10:44.810 --> 00:10:46.780
They're stable, battle tested, and will continue.

00:10:46.950 --> 00:10:50.740
So I want to say thank you, Will, and everyone on the team for this.

00:10:50.940 --> 00:10:53.240
It's a big contribution to the community.

00:10:53.580 --> 00:10:54.980
And here, let's see.

00:10:55.280 --> 00:10:56.420
Oh, I don't even see a sponsor.

00:10:56.780 --> 00:10:57.620
A sponsor option.

00:10:58.300 --> 00:10:59.820
Will, put a sponsor option for us here.

00:11:00.220 --> 00:11:02.260
So we can recommend people go and sponsor the projects.

00:11:03.019 --> 00:11:03.420
Yeah.

00:11:03.560 --> 00:11:03.640
Yeah.

00:11:04.380 --> 00:11:06.080
At a minimum, help them keep it going strong.

00:11:06.500 --> 00:11:09.560
No, I love what Will has done with Rich and Textual.

00:11:10.899 --> 00:11:13.000
And we're all rooting for Textualize.

00:11:13.300 --> 00:11:17.140
And I don't, I mean, yeah, it's not going to stay a company anymore.

00:11:17.580 --> 00:11:22.660
But I think having it be a company while it was made Textual into something like super cool.

00:11:22.900 --> 00:11:25.720
They were able to focus on it and make it awesome.

00:11:26.080 --> 00:11:27.800
So I appreciate everybody's work on that.

00:11:28.040 --> 00:11:28.280
Yeah,

00:11:28.520 --> 00:11:28.700
absolutely.

00:11:28.920 --> 00:11:29.300
A hundred percent.

00:11:30.300 --> 00:11:30.740
Over to you, Brian.

00:11:31.240 --> 00:11:31.600
All right.

00:11:31.800 --> 00:11:33.220
Well, let's see.

00:11:35.380 --> 00:11:38.420
I'd like to, I heard about this a few weeks ago, actually, I think.

00:11:38.560 --> 00:11:41.900
Also, here's an article, let's see, updated in April.

00:11:42.380 --> 00:11:43.480
So yeah, a month ago.

00:11:43.940 --> 00:11:47.080
It's an article by, I had the name, Matthias Endler.

00:11:47.400 --> 00:11:48.540
The best programmers I know.

00:11:48.980 --> 00:11:51.940
And it's an interesting idea for an article.

00:11:53.040 --> 00:11:55.740
He was just saying, I have met a lot of developers in my life.

00:11:56.060 --> 00:11:59.440
Lately, I've asked myself, what does it take to be one of the best?

00:11:59.800 --> 00:12:01.320
What do they all have in common?

00:12:01.700 --> 00:12:02.800
And I kind of love this.

00:12:03.100 --> 00:12:03.960
And I like the list.

00:12:04.480 --> 00:12:06.320
I encourage you to go and read this article.

00:12:06.820 --> 00:12:07.860
We've got a link in the show notes.

00:12:08.190 --> 00:12:12.120
But I'm going to jump around and read some of the topics.

00:12:12.720 --> 00:12:13.820
So read the reference.

00:12:14.160 --> 00:12:45.560
If there's one thing that I should have done as a young programmer, would have been read the reference and uh like the python standard library i admit i have not read all of the standard library um tumble spec things like that um i would add to this that if you're going to do something new uh jump down into beginner mode and just read a beginner reference on something like um even if you even if you're an expert flask developer and you want to switch to fast api uh go ahead and read the beginning tutorial and walk through the beginning tutorial for FastAPI.

00:12:45.710 --> 00:12:47.220
Things like that are helpful.

00:12:47.620 --> 00:12:49.200
All right, I'll go a little faster.

00:12:49.760 --> 00:12:55.380
The topics, so read the reference, know your tools really well, read the error message.

00:12:57.120 --> 00:13:01.080
Getting good at reading error messages is totally a good skill.

00:13:01.540 --> 00:13:03.880
Breakdown problems, don't be afraid to get your hands dirty.

00:13:04.240 --> 00:13:09.220
Always help others, write, blogging, talks, open source, those help you get better.

00:13:09.660 --> 00:13:37.360
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 an that's ai's job um if somebody comes to you give them what you know don't guess keep it simple simple and that's it so uh but uh really great commentary on each of these um i love uh love having this all put together as some good advice for for software developers so

00:13:37.360 --> 00:13:46.980
yeah it's easy to forget right it's also easy to not not really know and wondering are they so productive How do they know how that is implemented or how that works internally in Python?

00:13:47.220 --> 00:13:48.240
Like, well, they read it.

00:13:48.760 --> 00:13:49.300
You know what I mean?

00:13:50.280 --> 00:13:52.320
The status one is important, I think.

00:13:53.380 --> 00:14:06.760
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,

00:14:07.000 --> 00:14:07.720
especially

00:14:07.720 --> 00:14:08.620
within your company.

00:14:08.840 --> 00:14:14.000
So even if you're a junior developer, you might be the expert in ToolX or something like that.

00:14:14.320 --> 00:14:22.680
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.

00:14:22.940 --> 00:14:24.280
So yeah, some great advice.

00:14:24.600 --> 00:14:25.060
Yeah, definitely.

00:14:25.480 --> 00:14:25.920
All right.

00:14:26.100 --> 00:14:27.220
Well, that's

00:14:27.220 --> 00:14:28.020
it for our main item, Brian.

00:14:28.040 --> 00:14:30.280
So let's talk about a little bit of security.

00:14:30.660 --> 00:14:30.820
Okay.

00:14:30.900 --> 00:15:50.060
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 desktop, but probably SSH, yeah? 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 multiplied 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 lately 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 uh ip addresses are are pretty stable they're not static but they're pretty stable so i'm going to just set up a rule to only allow access to from those two you know what 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 um go into I don't even know how you do it.

00:15:50.200 --> 00:16:00.000
Go into the server and just shut it off, but then use some admin tool, like an admin console, or maybe even go in and just turn off the thing.

00:16:00.160 --> 00:16:03.400
So anyway, I have a much better suggestion, I think, for folks.

00:16:03.880 --> 00:16:08.220
Almost everybody's hosting comes with what's called a cloud firewall.

00:16:08.680 --> 00:16:15.100
You just log in from anywhere in the world using your 2FA, and you have access to the dashboard for your cloud setup, right?

00:16:15.220 --> 00:16:17.840
There's console.aws.com.

00:16:18.480 --> 00:16:21.200
There's console.hetsner.com and so on.

00:16:21.520 --> 00:16:28.120
And so just go in there and put your, you can just restrict access to your SSH to your current IP address.

00:16:28.740 --> 00:16:35.240
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.

00:16:35.700 --> 00:16:38.940
Chances are, if you go back to that coffee shop again, it's still got the same IP address.

00:16:38.970 --> 00:16:39.880
You only got to do it once.

00:16:39.980 --> 00:16:44.480
It's super low effort and your tax go from 30,000 a day to zero.

00:16:45.040 --> 00:16:46.740
Because those are coming from all over the world.

00:16:46.860 --> 00:16:49.020
They're not coming, you know, from within the house, right?

00:16:49.080 --> 00:16:51.440
They're not coming from your machine, like back, like

00:16:51.440 --> 00:16:52.200
you'd already be,

00:16:52.240 --> 00:16:53.020
it'd be too late, right?

00:16:53.120 --> 00:16:54.460
It's just to prevent the public stuff.

00:16:54.640 --> 00:16:56.460
So embrace cloud firewalls, folks.

00:16:56.800 --> 00:16:57.520
That's all I want to say.

00:16:57.800 --> 00:16:58.020
Okay.

00:16:58.420 --> 00:16:58.560
Okay.

00:16:58.940 --> 00:16:59.100
Next.

00:16:59.900 --> 00:17:01.640
This was last week, right?

00:17:02.010 --> 00:17:05.500
But caveat's where I said Python beta one is here.

00:17:05.699 --> 00:17:06.520
314 beta one.

00:17:07.060 --> 00:17:08.600
It is time for some beta pie.

00:17:09.800 --> 00:17:10.020
Tasty.

00:17:11.180 --> 00:17:12.220
Python 3.41.

00:17:12.380 --> 00:17:12.500
Come on.

00:17:13.220 --> 00:17:14.459
So people can check this out.

00:17:14.579 --> 00:17:18.160
This is the preview of the first stable version.

00:17:18.660 --> 00:17:22.280
I guess it really is just the first stable version of Python 3.14, which is cool.

00:17:22.439 --> 00:17:23.160
So check it out.

00:17:23.420 --> 00:17:24.800
Can't believe we're already here again.

00:17:25.100 --> 00:17:25.620
Yeah, I know.

00:17:25.990 --> 00:17:26.439
Here we are.

00:17:27.100 --> 00:17:32.840
Also, I want to say there's a new batch of Python Software Foundation fellows.

00:17:33.600 --> 00:17:35.760
And I think there's like 10 folks or so in here.

00:17:35.980 --> 00:17:36.620
Charlie Marsh.

00:17:36.820 --> 00:17:37.580
Charlie Marsh.

00:17:37.940 --> 00:17:38.560
Yeah, obviously.

00:17:39.160 --> 00:17:40.020
He's been doing such a great week.

00:17:40.020 --> 00:17:40.440
Frank Wiles.

00:17:40.880 --> 00:17:41.080
Yeah.

00:17:41.140 --> 00:17:41.560
A

00:17:41.560 --> 00:17:44.600
lot of cool folks, Ivy, Fung, and other folks.

00:17:44.810 --> 00:17:47.020
I don't want to read off everyone's name, but congrats to everyone in there.

00:17:47.140 --> 00:17:47.980
That's super cool.

00:17:49.380 --> 00:17:49.940
Not super cool.

00:17:50.220 --> 00:17:51.920
Post from Mike, drop booms.

00:17:52.360 --> 00:17:57.820
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.

00:17:58.020 --> 00:17:59.260
It's been a tough couple of days.

00:18:00.040 --> 00:18:06.380
Microsoft's support for the Faster CPython project has been canceled yesterday, as of four days ago.

00:18:06.580 --> 00:18:08.760
My heart goes out to the majority of the team who was laid off.

00:18:08.940 --> 00:18:10.800
I mean, that's actually a lot of people.

00:18:11.100 --> 00:18:15.360
You look at the picture, presuming that all those people there are on the faster C-Python team.

00:18:15.430 --> 00:18:16.440
I'm not entirely sure they are.

00:18:16.740 --> 00:18:19.480
But I know that included Vito, Mike, some other folks.

00:18:19.840 --> 00:18:21.580
It's not great, right?

00:18:22.260 --> 00:18:23.640
I can't remember where I read it.

00:18:23.680 --> 00:18:30.380
There's some conversations, but someone said, look, it's pretty short-sighted to bet the company on AI as Microsoft is.

00:18:30.800 --> 00:18:36.240
And at the same time, fire the team making the dominant language for that technology better.

00:18:37.320 --> 00:18:38.200
You got

00:18:38.200 --> 00:18:39.700
to maximize shareholder value, Brian.

00:18:39.780 --> 00:18:41.680
but like, I don't know, 10 people or something.

00:18:42.140 --> 00:18:43.760
How big of a deal is that on the scale of Microsoft?

00:18:44.140 --> 00:18:44.400
Exactly.

00:18:45.360 --> 00:18:46.220
So that's that.

00:18:46.360 --> 00:18:53.380
And then also Brett Cannon says there were layoffs yesterday and three Python core devs from the FasterCPython team were caught in them.

00:18:53.540 --> 00:18:57.760
If you know any jobs, please send them their way to help them keep going strong.

00:18:57.960 --> 00:18:58.220
You know what I mean?

00:18:58.540 --> 00:18:59.600
So I link to that as well.

00:19:00.760 --> 00:19:02.280
These are some insane people.

00:19:02.440 --> 00:19:03.100
You really can't find

00:19:03.100 --> 00:19:04.660
something else for these people to work on.

00:19:05.060 --> 00:19:05.600
Yeah, exactly.

00:19:06.080 --> 00:19:06.300
Exactly.

00:19:06.800 --> 00:19:07.100
All right.

00:19:08.160 --> 00:19:08.820
Back to better news.

00:19:09.120 --> 00:19:19.640
So I just released, as in during this episode, push the go public button for something that was formerly known as RedKnot, but is now known as ty.

00:19:20.260 --> 00:19:33.520
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.

00:19:33.940 --> 00:19:34.500
Oh, interesting.

00:19:34.940 --> 00:19:50.400
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?

00:19:50.640 --> 00:20:01.700
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.

00:20:02.080 --> 00:20:07.500
So this might be an even better high-performance replacement of things like the language server for the

00:20:07.500 --> 00:20:08.840
Vibeconing

00:20:08.840 --> 00:20:09.120
platform.

00:20:09.800 --> 00:20:15.780
Anyway, it's a super cool interview with Karl Meyer and Charlie Marsh, and people should check that out.

00:20:16.040 --> 00:20:16.520
That's nice.

00:20:16.880 --> 00:20:17.660
So what's TY?

00:20:18.060 --> 00:20:19.860
Is that just because it's easy to type?

00:20:21.300 --> 00:20:21.520
Type?

00:20:21.680 --> 00:20:22.340
I think it's for type.

00:20:22.660 --> 00:20:23.060
Type.

00:20:23.400 --> 00:20:23.500
Yeah.

00:20:23.900 --> 00:20:25.160
I think of it as like thank you.

00:20:25.420 --> 00:20:25.760
Thank you.

00:20:26.020 --> 00:20:26.860
Yeah, we

00:20:26.860 --> 00:20:28.960
made a lot of jokes about that during the show.

00:20:29.880 --> 00:20:33.840
Everyone says thank you to the astral folks for making it better every time they run it.

00:20:34.420 --> 00:20:34.520
Yeah.

00:20:34.630 --> 00:20:36.460
So that episode is literally hot off the presses.

00:20:36.730 --> 00:20:37.040
Check it out.

00:20:37.240 --> 00:20:37.420
Cool.

00:20:37.700 --> 00:20:37.880
Can't wait.

00:20:38.200 --> 00:20:48.700
And something I've been doing that's pretty fun, Brian, is I've been doing, I'm working on making a bunch of shorts like TikToks and YouTube shorts and stuff from

00:20:48.700 --> 00:20:49.380
the Talk Python

00:20:49.560 --> 00:20:49.680
episodes.

00:20:50.010 --> 00:20:52.860
So I'm going to play a 15 second video.

00:20:53.340 --> 00:20:54.380
I think people are going to enjoy this.

00:20:54.520 --> 00:20:56.700
This is not exactly the joke, but it's kind of like the joke.

00:20:56.820 --> 00:20:57.120
Are you ready?

00:20:57.440 --> 00:20:57.580
Yeah.

00:20:57.860 --> 00:20:57.940
Yeah.

00:20:58.120 --> 00:21:00.660
I guess if you use Postgres, you could just put it in a JSON field as well.

00:21:00.840 --> 00:21:01.100
Something like

00:21:01.100 --> 00:21:01.220
that.

00:21:01.260 --> 00:21:01.560
Oh, yeah.

00:21:01.840 --> 00:21:03.620
We call that mullet schema, right?

00:21:04.040 --> 00:21:08.420
It's business up front and partying back where the last column on the other table is a JSON field.

00:21:08.840 --> 00:21:09.540
I've never heard that.

00:21:09.700 --> 00:21:10.240
That's incredible.

00:21:10.920 --> 00:21:11.300
It's like, yeah,

00:21:11.360 --> 00:21:14.200
we look real formal, but don't look back there.

00:21:15.760 --> 00:21:16.780
Got it in a ponytail today.

00:21:17.220 --> 00:21:17.440
Yeah.

00:21:17.600 --> 00:21:17.800
Amazing.

00:21:18.160 --> 00:21:18.700
Isn't that amazing?

00:21:19.120 --> 00:21:19.220
Yeah.

00:21:19.380 --> 00:21:20.280
Anyway, so people

00:21:20.280 --> 00:21:22.460
should check out the channel, obviously.

00:21:22.540 --> 00:21:24.160
I'm doing some fun stuff there.

00:21:24.700 --> 00:21:24.820
All right.

00:21:24.900 --> 00:21:25.600
That's it for my extras.

00:21:26.600 --> 00:21:27.380
Maybe let me check.

00:21:27.680 --> 00:21:28.840
Yes, that's it for my extras.

00:21:29.080 --> 00:21:30.500
So I just got the joke left.

00:21:30.540 --> 00:21:31.320
How about your extras, Andy?

00:21:31.980 --> 00:21:32.580
Just a quick one.

00:21:32.600 --> 00:21:35.220
I wanted to pull up a screen.

00:21:35.960 --> 00:21:36.260
Let's see.

00:21:36.580 --> 00:21:37.000
Picture of Munich.

00:21:37.560 --> 00:21:46.060
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.

00:21:46.200 --> 00:21:46.800
It was a work trip.

00:21:47.400 --> 00:21:54.100
I was there to perform a talk or present a talk at an internal conference.

00:21:54.400 --> 00:22:00.200
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.

00:22:00.740 --> 00:22:03.480
Anyway, it was that I think it's just a really cool idea.

00:22:03.760 --> 00:22:06.340
I was there for an internal company conference.

00:22:06.960 --> 00:22:13.300
And I think this is an awesome idea just to allow – we didn't have everybody over there, but everybody could submit talks.

00:22:13.440 --> 00:22:15.880
And if you got your talk accepted, you go, of course.

00:22:16.380 --> 00:22:24.620
But it was like a two-day event with like three or four tracks and just like a normal conference.

00:22:24.780 --> 00:22:25.820
We had talks and everything.

00:22:26.220 --> 00:22:26.580
It was great.

00:22:26.900 --> 00:22:28.820
Everybody self-selected what they got to go through.

00:22:29.080 --> 00:22:38.020
And what I really loved about this was it's difficult to get within a company all the people that care about something together.

00:22:38.420 --> 00:22:41.900
And this allowed people to self-select into what they care about.

00:22:42.220 --> 00:22:47.800
And so I had people coming up to me from different divisions that we would have never interacted with before.

00:22:48.840 --> 00:22:51.420
Working on similar problems allow us to work together.

00:22:51.500 --> 00:22:59.480
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.

00:22:59.700 --> 00:23:01.060
Anyway, that's just my plug.

00:23:02.160 --> 00:23:04.420
And then the other thing was flying back.

00:23:05.020 --> 00:23:09.280
I couldn't sleep on the plane, so I had a ton of time to do something.

00:23:09.380 --> 00:23:13.440
and I got started on a first draft for the second book I'd like to.

00:23:13.660 --> 00:23:13.980
Ooh.

00:23:14.220 --> 00:23:14.340
Right.

00:23:14.720 --> 00:23:15.080
I

00:23:15.080 --> 00:23:18.420
love it how just stepping away just a little bit sometimes will be like, all right, that's it.

00:23:18.440 --> 00:23:19.600
I'm working on this project or

00:23:19.600 --> 00:23:19.820
something.

00:23:19.910 --> 00:23:20.220
It just

00:23:20.220 --> 00:23:21.620
gives you like that little bit of space

00:23:21.620 --> 00:23:22.040
from

00:23:22.040 --> 00:23:22.440
all

00:23:22.440 --> 00:23:23.040
the day-to-day.

00:23:23.460 --> 00:23:23.800
That's cool.

00:23:24.100 --> 00:23:24.280
Yeah.

00:23:24.600 --> 00:23:25.340
Anyway, so it was good.

00:23:26.040 --> 00:23:26.260
Great.

00:23:26.450 --> 00:23:36.920
And if you look at that picture just to the left of that Castle Church thing, I've had a really nice beer brewery, Brow House evening one night over there in Munich.

00:23:37.080 --> 00:23:37.620
It's a fun place.

00:23:37.940 --> 00:23:38.060
Yeah.

00:23:39.160 --> 00:23:41.280
Cool, cool. All right. Are we ready for jokes?

00:23:41.700 --> 00:23:42.280
We are.

00:23:43.320 --> 00:23:55.700
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.

00:23:56.060 --> 00:23:59.700
I present you the quick and handy manual on how to fix your computer.

00:24:00.180 --> 00:24:00.440
You ready?

00:24:00.860 --> 00:24:00.980
Yeah.

00:24:01.320 --> 00:24:02.520
I can't do any more than that.

00:24:02.590 --> 00:24:04.680
Okay. So it gives you three options.

00:24:04.870 --> 00:24:07.580
Do you have Windows? Do you have a Mac? Or do you have Linux?

00:24:08.200 --> 00:24:11.440
So option one, it says, Windows, step one, reboot.

00:24:11.940 --> 00:24:12.720
Did that fix it?

00:24:13.100 --> 00:24:13.220
No?

00:24:13.800 --> 00:24:15.280
Well, then proceed to the next step.

00:24:15.560 --> 00:24:20.600
All right, next step is format hard drive, reinstall Windows, lose all your files, quietly weep.

00:24:21.120 --> 00:24:21.300
Okay.

00:24:22.200 --> 00:24:22.520
Okay.

00:24:22.600 --> 00:24:22.720
Let's

00:24:22.720 --> 00:24:23.420
see if I can make this bigger.

00:24:23.820 --> 00:24:24.200
There we go.

00:24:24.800 --> 00:24:25.440
The Apple one.

00:24:26.580 --> 00:24:28.340
Step one, take it to the Apple store.

00:24:29.120 --> 00:24:29.880
Did that fix it?

00:24:30.300 --> 00:24:30.580
No?

00:24:30.740 --> 00:24:31.540
Proceeds to step two.

00:24:31.700 --> 00:24:36.360
Step two is buy a new Mac, overdraw your account, quietly weep.

00:24:37.480 --> 00:24:40.980
Okay, well, Linux is more DYI, so let's see about that one.

00:24:41.400 --> 00:24:42.260
This is step one.

00:24:42.870 --> 00:24:43.680
Learn to code in C.

00:24:44.120 --> 00:24:44.840
Recompile the kernel.

00:24:45.160 --> 00:24:48.420
Build your own microprocessor out of spare silicon you have laying around.

00:24:48.920 --> 00:24:49.920
Recompile the kernel again.

00:24:50.110 --> 00:24:50.700
Switch distros.

00:24:50.900 --> 00:24:55.900
Recompile the kernel again, but this time using a CPU powered by refracted light from Saturn.

00:24:56.540 --> 00:24:57.520
Grow a giant beard.

00:24:57.760 --> 00:24:59.140
Blame Sun Microsystems.

00:24:59.480 --> 00:25:03.860
Turn your bedroom into a server closet and spend 10 years falling asleep to the sound of whirring fans.

00:25:04.320 --> 00:25:05.120
Switch distros again.

00:25:05.440 --> 00:25:06.220
Abandon all hygiene.

00:25:06.660 --> 00:25:10.180
Write a regular expression that would make other programmers cry blood.

00:25:10.960 --> 00:25:11.960
Learn to code in Java.

00:25:12.260 --> 00:25:15.040
Recompile the kernel again, but this time wearing your lucky socks.

00:25:15.420 --> 00:25:16.100
Did that fix it?

00:25:16.420 --> 00:25:16.780
No.

00:25:17.040 --> 00:25:17.740
Proceed to step two.

00:25:18.120 --> 00:25:21.620
Revert back using Windows or Mac and quietly weep.

00:25:22.840 --> 00:25:23.300
What do you think?

00:25:23.560 --> 00:25:27.040
Yeah, plus it's 10 years later, so the Macs are going to be zipping by then.

00:25:27.940 --> 00:25:28.320
They definitely

00:25:28.320 --> 00:25:28.680
will.

00:25:29.620 --> 00:25:29.840
Wow.

00:25:30.620 --> 00:25:34.160
If anyone needs to do tech support for their family, I present the manual.

00:25:34.740 --> 00:25:35.380
Step-by-step guide.

00:25:35.480 --> 00:25:36.360
Step one and step two.

00:25:37.060 --> 00:25:37.640
yeah yeah

00:25:37.640 --> 00:25:47.480
it's funny definitely all right well happy to have you back stateside even though you had a good trip to germany and uh we'll see everyone next week huh good to be back thank you Bye.

