WEBVTT

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

00:00:04.760 --> 00:00:08.560
This is episode 359, recorded November 2nd.

00:00:08.960 --> 00:00:09.860
And I am Brian Okken.

00:00:10.120 --> 00:00:10.980
And I'm Michael Kennedy.

00:00:11.380 --> 00:00:13.900
This episode is sponsored by Scout APM.

00:00:14.280 --> 00:00:16.660
Listen to more about them a little later in the show.

00:00:17.040 --> 00:00:22.900
Also, you can connect with us, Michael, Brian, and Python, Python Bytes.

00:00:23.060 --> 00:00:28.540
So we're at mkennedy, @brianokken, and at Python Bytes, all on fostadon.org.

00:00:28.920 --> 00:00:37.260
And if you're listening in just your earbuds, you can join us live at pythonbytes.fm/live, and you can be part of the audience.

00:00:37.980 --> 00:00:39.280
So, Michael, what do you got for us?

00:00:39.520 --> 00:00:46.780
Well, I have a quick follow-up to your Fosstodon Mastodon statement real quick before we dive into the first item, which is very exciting.

00:00:47.100 --> 00:00:48.920
I know a lot of people will be excited to hear about it.

00:00:49.340 --> 00:00:57.780
But fosstodon.org, the instance of Mastodon that many of us Python people are on, has gone invite only.

00:00:58.200 --> 00:01:03.140
Of course, you don't need to be on Fossedon to participate in talking with us or interact.

00:01:03.520 --> 00:01:04.559
That's the whole point of Mastodon.

00:01:05.019 --> 00:01:09.840
However, a couple of people have said, hey, I'd really like to be on Fossedon and around

00:01:09.910 --> 00:01:11.700
you guys in that community, but it's invite only.

00:01:12.080 --> 00:01:18.660
I have a short-lived invite code for the listeners who promptly listen to our show if they want

00:01:18.660 --> 00:01:19.660
to join that later.

00:01:19.880 --> 00:01:20.300
Cool.

00:01:20.660 --> 00:01:21.820
Yeah, because it's invite only now.

00:01:22.100 --> 00:01:22.380
Okay.

00:01:22.740 --> 00:01:22.920
All right.

00:01:23.100 --> 00:01:23.680
On to the first item.

00:01:24.060 --> 00:01:24.280
PyCon.

00:01:25.020 --> 00:01:26.280
We all love PyCon, right?

00:01:26.540 --> 00:01:26.700
Yeah.

00:01:26.820 --> 00:01:32.080
And this is one of the things I look forward to most in the year in terms of events.

00:01:32.580 --> 00:01:33.060
More on that in a minute.

00:01:33.720 --> 00:01:37.980
But this is going to be, it's time for it to be in Pittsburgh, Pennsylvania.

00:01:38.500 --> 00:01:43.000
So you can see there's a little airplane with a banner flying by on the website that's saying

00:01:43.440 --> 00:01:43.580
Pittsburgh.

00:01:44.020 --> 00:01:46.060
So, and there's a snake on a building.

00:01:46.540 --> 00:01:48.700
Only once, it's not really the Python snake though.

00:01:48.800 --> 00:01:51.360
Its eye is like more eardroppy, not circular.

00:01:51.640 --> 00:01:54.660
Anyway, it's, there's a snake there by the community for the community.

00:01:55.100 --> 00:01:55.760
All excellent.

00:01:56.240 --> 00:01:57.820
and it's going to be a little later this year.

00:01:57.820 --> 00:01:58.980
I think it was April last year.

00:01:59.120 --> 00:02:01.040
It's going to be May 15th to 23rd

00:02:01.310 --> 00:02:03.620
in Pittsburgh, Pennsylvania, Tutorials.

00:02:03.960 --> 00:02:05.000
What was really nice this year

00:02:05.100 --> 00:02:08.259
is they actually have the subschedule time

00:02:08.570 --> 00:02:09.800
like prominently listed.

00:02:09.890 --> 00:02:11.600
I think the last time it was like,

00:02:11.630 --> 00:02:13.160
if you dug in, you could find

00:02:13.350 --> 00:02:16.000
what days the actual main conference was,

00:02:16.130 --> 00:02:17.540
but I'm not really sure

00:02:17.810 --> 00:02:19.220
if I want to do the sprints when are they,

00:02:19.360 --> 00:02:21.620
you know, like it just had the whole broad range.

00:02:21.780 --> 00:02:24.960
So this is like the main conference is May 17 to 19,

00:02:25.700 --> 00:02:28.600
Two days before that are tutorials and so on.

00:02:28.850 --> 00:02:28.960
Okay.

00:02:28.990 --> 00:02:35.260
So it was in a Salt Lake City in the last two years, previous prior to that, it was in Cleveland, Ohio.

00:02:35.920 --> 00:02:39.360
I do have a minor beef with the location here, like nothing against Pittsburgh.

00:02:39.640 --> 00:02:40.320
Pittsburgh is awesome.

00:02:40.530 --> 00:02:46.140
You know, I would love to go to Pittsburgh and meet people, but the goal of kind of moving PyCon around.

00:02:47.040 --> 00:02:53.080
So that different people, at least within the, within North America, have a chance to have PyCon sometimes near them.

00:02:53.520 --> 00:02:55.580
Seems like, well, it spent two years in Cleveland.

00:02:56.240 --> 00:02:59.540
Pittsburgh is only a two-hour drive from Cleveland.

00:03:00.140 --> 00:03:03.780
So it feels like it's kind of back in the same place again for now four years.

00:03:03.880 --> 00:03:06.960
And I would love to see it move more locations, right?

00:03:07.160 --> 00:03:11.520
Like maybe it could be in Mississippi or in somewhere like really, you know,

00:03:11.880 --> 00:03:17.600
different than a sort of short upper Midwest, you know,

00:03:17.820 --> 00:03:19.240
just outside of the East Coast there.

00:03:19.700 --> 00:03:23.440
On the other hand, East Coast, that's kind of the densest part of the U.S.

00:03:23.500 --> 00:03:25.740
So it does give a lot of people a chance to go to it.

00:03:25.900 --> 00:03:27.560
Are you calling people on the East Coast dense?

00:03:29.120 --> 00:03:29.480
Yes.

00:03:29.860 --> 00:03:31.560
They like to live in dense places.

00:03:31.690 --> 00:03:31.800
Okay.

00:03:32.300 --> 00:03:40.200
There's just, if you look at like light maps of the U.S. or just population maps, like there's way more people on the Eastern half than the Western half.

00:03:40.460 --> 00:03:41.700
And that's how we like it.

00:03:41.850 --> 00:03:42.780
All of us in Oregon.

00:03:43.100 --> 00:03:44.280
Don't, don't, don't move to Oregon.

00:03:44.420 --> 00:03:45.020
It's horrible here.

00:03:45.070 --> 00:03:45.200
Yeah.

00:03:45.320 --> 00:03:45.820
It's horrible.

00:03:46.080 --> 00:03:46.440
It's rain.

00:03:46.640 --> 00:03:48.100
It's really cold and rainy.

00:03:48.190 --> 00:03:49.860
I haven't seen the sun for six years, Brian.

00:03:50.680 --> 00:03:51.480
So people shouldn't come here.

00:03:51.580 --> 00:03:51.800
Terrible.

00:03:52.240 --> 00:03:52.300
Yeah.

00:03:52.640 --> 00:03:52.740
Okay.

00:03:52.860 --> 00:03:55.540
But the super excited, the call for proposals is open.

00:03:55.620 --> 00:04:00.320
There's like a bunch of instructions under this little permanent, collapse menu,

00:04:00.480 --> 00:04:04.820
but you can go to speaking and it says, proposing a talk, proposing a tutorial, a Sharla posters,

00:04:05.130 --> 00:04:05.440
et cetera.

00:04:05.940 --> 00:04:06.620
All this is good.

00:04:07.000 --> 00:04:12.580
One other thing I did want to highlight, and this, this makes me honestly really disappointed.

00:04:12.650 --> 00:04:14.300
So I hope people don't take this the wrong way.

00:04:14.620 --> 00:04:15.900
Health and safety guidelines.

00:04:16.480 --> 00:04:16.680
Okay.

00:04:16.980 --> 00:04:18.180
So we're nice people.

00:04:18.640 --> 00:04:22.079
It says, but us nice people are sick and diseased.

00:04:22.420 --> 00:04:31.600
many of us uh and masks are going to be 100 required and 100 enforced and i don't know you

00:04:31.720 --> 00:04:38.580
and i we were both there last year brian i kind of felt like you know from the cdc guidelines and

00:04:38.680 --> 00:04:45.380
from just the general society like kind of people have vaccines at least as options um i've had i

00:04:45.380 --> 00:04:52.320
just talked two weeks ago last week about how i got my fifth covid vaccine and i had kind of a

00:04:52.340 --> 00:04:58.740
health crisis is kind of over and i feel like this is not ideal i i would like to see it just be i

00:04:58.900 --> 00:05:06.700
i've seen other conferences like i think uh um the european ones often do whatever the local the

00:05:06.840 --> 00:05:13.560
local rules are um and i think that's what it ought to be if if the local rules are open then

00:05:13.960 --> 00:05:20.360
i mean i i guess my thoughts are if people are really concerned about it and i i legitimately

00:05:20.360 --> 00:05:25.440
understand if you're caring for somebody that's uh immunocompromised or if you are you're going to

00:05:25.440 --> 00:05:32.280
be concerned but your entire route to this place um like the airplane and everything there's going

00:05:32.280 --> 00:05:39.320
to be full a bunch of people not wearing masks and so uh i think max mass optional seems to make

00:05:39.460 --> 00:05:45.840
sense to me but i i think it yeah i agree with you 100 and i think this so let me just take a step

00:05:45.760 --> 00:05:50.220
back last year, I feel like the experience of PyCon was quite degraded.

00:05:50.510 --> 00:05:51.260
I had a great time.

00:05:51.330 --> 00:05:54.720
I really appreciated the spending the time with people I got to and meeting

00:05:54.800 --> 00:05:58.480
the people that I got to, but the ability to meet people, people and have

00:05:58.760 --> 00:06:00.820
conversations on like loud expo floor halls.

00:06:00.980 --> 00:06:06.200
It's hard to hear them because they were talking like this, you know?

00:06:07.420 --> 00:06:07.640
Okay.

00:06:07.900 --> 00:06:10.340
And so you want to interview people there?

00:06:10.600 --> 00:06:12.320
Like people are like, why are you taking your mask off?

00:06:12.330 --> 00:06:14.320
Like, well, I can't do a podcast with a mask on.

00:06:14.360 --> 00:06:15.760
it's not going to come out right.

00:06:15.840 --> 00:06:21.860
And so for me, 80% of the reason I go to PyCon is to meet people, to network, to record podcasts.

00:06:22.080 --> 00:06:28.780
I did like the seven different company series of, the startup row and the awesome

00:06:29.240 --> 00:06:33.400
episode with Sebastian Ramirez and Samuel Colvin and, and those types of things.

00:06:33.560 --> 00:06:34.280
Like, that's why I go.

00:06:34.300 --> 00:06:37.360
And I feel like the mass stuff takes away a lot of it.

00:06:37.640 --> 00:06:38.720
I'm a hundred percent supportive.

00:06:38.940 --> 00:06:41.040
If people want to wear a mask, it doesn't bother me.

00:06:41.520 --> 00:06:51.860
I think it would even be totally good to say there's a section of the conference where if you feel uncomfortable and you want to get away from all those non-mask people, like you can go over there.

00:06:52.210 --> 00:06:54.180
But I think, I know there's a bunch of people.

00:06:54.640 --> 00:06:59.620
I know there are people who are very still freaked out about COVID, very freaked out about traveling.

00:07:00.120 --> 00:07:05.000
But I think for every one of them, there's 10 people that are like, we can't live this way for the rest of our lives.

00:07:05.210 --> 00:07:06.260
We just got to get back to it.

00:07:06.800 --> 00:07:13.680
So the reason I care more than it just bothers me personally is I think this is not going

00:07:13.740 --> 00:07:17.900
to be healthy for Python, the PSF in the long term.

00:07:18.200 --> 00:07:19.560
I think it's going to cut.

00:07:19.720 --> 00:07:22.200
A lot of people I spoke to are like, I don't want to last year.

00:07:22.300 --> 00:07:24.340
They're like, I'm not sure if I'm going next year.

00:07:24.580 --> 00:07:26.440
If it's like this again, this is not great.

00:07:26.780 --> 00:07:28.160
The attendance, I looked.

00:07:28.200 --> 00:07:29.200
Do I have it pulled up here?

00:07:29.740 --> 00:07:29.840
No.

00:07:30.860 --> 00:07:33.540
But you can look on Wikipedia and I linked to it in the show notes.

00:07:33.860 --> 00:07:41.880
The prior years, it was like 3000 something, you know, 3,200 year over year over year was the attendance.

00:07:42.360 --> 00:07:44.440
And it was 2000 last year.

00:07:44.780 --> 00:07:44.900
Right.

00:07:45.140 --> 00:07:45.300
Yeah.

00:07:45.520 --> 00:07:52.400
And I think this is going to discourage more people from coming more than it will encourage the people who are really nervous about coming.

00:07:52.860 --> 00:08:02.020
And if it, you know, PyCon is the vast majority of income and revenue for the PSF, like not a little bit, almost all of it.

00:08:02.360 --> 00:08:08.040
And so when policies affect who's going, who's not that also, yeah, you found it right there.

00:08:08.320 --> 00:08:13.200
I think people have to really consider like, okay, is there some sort of middle ground?

00:08:13.420 --> 00:08:14.860
So I don't know the way it is right now.

00:08:15.000 --> 00:08:19.940
I'm probably not going to PyCon, which makes me a little bummed out, but it was just, I

00:08:20.040 --> 00:08:26.400
was so wiped out and worn out trying to have all those conversations, loud spaces through

00:08:26.520 --> 00:08:27.220
masks, et cetera.

00:08:27.490 --> 00:08:28.120
So we'll see.

00:08:28.500 --> 00:08:34.039
I'm not a hundred percent sure, but if you look at the, you look at the final thing here,

00:08:34.039 --> 00:08:35.620
it says there will be no rolling back.

00:08:36.700 --> 00:08:42.460
This is the most lenient version of the health and safety standards we're going to have.

00:08:42.750 --> 00:08:46.940
The only possibility is that we will have more restrictions potentially by the time

00:08:46.990 --> 00:08:47.860
the conference comes up.

00:08:48.200 --> 00:08:51.040
And for me, I don't know, it's makes me sad.

00:08:51.240 --> 00:08:52.840
I'm not, I'm not anti-mask.

00:08:53.280 --> 00:08:55.200
I'm not anti-vax as I already pointed out.

00:08:55.540 --> 00:09:00.500
I wore a mask happily when there was an emergency, but you know, COVID is not going away.

00:09:00.820 --> 00:09:05.420
Like is PyCon for the rest of our lives going to be this restrictive?

00:09:06.040 --> 00:09:09.660
Seems not like the best path, but I'm not in charge and no one asked me, Brian.

00:09:12.830 --> 00:09:14.820
Well, so anyway, this is my thoughts.

00:09:14.960 --> 00:09:16.160
I'm excited that PyCon's here.

00:09:16.160 --> 00:09:18.700
I hope people who want to go submit their talks.

00:09:19.240 --> 00:09:25.300
There's an online option, but there's a very small chance with this level of

00:09:25.380 --> 00:09:29.100
you must wear a mask you must stay away from people that it's going to be valuable for me to go

00:09:29.430 --> 00:09:35.180
and i'm probably not going to okay i haven't decided myself yet so yeah all right well well

00:09:35.320 --> 00:09:40.120
i'm sure this will come back it's in uh eight months from now seven months from now okay um

00:09:40.540 --> 00:09:46.220
for people wanting to to submit a talk uh the again the call for proposals is open and it is open

00:09:46.590 --> 00:09:53.300
until the uh end of the day anywhere so um on december 18th so you got from now or just december

00:09:53.320 --> 00:09:58.820
18 but don't wait until the 17th submit early because uh these poor people that are reviewing

00:09:59.360 --> 00:10:05.180
uh reviewing all of the proposals um i think it's good to get feedback early and start getting things

00:10:05.300 --> 00:10:11.280
in early so yeah i think they even they have traditionally had like submission meant as a

00:10:11.280 --> 00:10:14.180
mentor the right word but people to help you if you were doing your first time submission

00:10:14.540 --> 00:10:18.980
to work with you i don't know i didn't see that this time but i haven't dug into all the details so

00:10:19.040 --> 00:10:26.480
okay yeah yep awesome over you well uh we covered uh the Ruff formatter in september i believe

00:10:27.100 --> 00:10:32.460
and it's only been a month later a month and a half um but um the Ruff formatter is now

00:10:33.020 --> 00:10:39.160
we we covered it when it was alpha it was like you can play with it um and now uh it is um i'll

00:10:39.380 --> 00:10:47.520
scroll to the bottom they say um it is uh production ready so um the formatter is in a

00:10:47.380 --> 00:10:52.020
is still beta release but they consider it production ready and i've played with it enough

00:10:52.180 --> 00:10:58.720
it's pretty awesome so um what are some of the highlights uh it is so the black form or black

00:10:58.840 --> 00:11:05.360
formatter the Ruff formatter is mostly like black but faster so it's how much faster it's like 30

00:11:05.580 --> 00:11:11.920
times faster um and then there's other uh and black's already pretty darn fast there's like yapf

00:11:11.940 --> 00:11:15.540
which I never use, but apparently it's 100 times faster than YAPF.

00:11:17.160 --> 00:11:18.720
And very compatible.

00:11:19.400 --> 00:11:22.560
It's very compatible with black, but also they list some of the differences.

00:11:22.800 --> 00:11:24.620
So we've got was it?

00:11:24.800 --> 00:11:26.260
Oh, this is a different different one.

00:11:26.500 --> 00:11:27.780
So there's a link.

00:11:28.000 --> 00:11:31.120
It's on this document also of of what is different.

00:11:31.240 --> 00:11:34.880
So there's differences from black and in it.

00:11:34.980 --> 00:11:40.000
So it's very thoughtful to go through and none of these I would disagree with.

00:11:40.780 --> 00:11:44.140
So some reasonable changes from black,

00:11:44.280 --> 00:11:48.280
but just having a formatter for your entire team is what is really important, I think.

00:11:48.940 --> 00:11:51.040
So I also really like that recently

00:11:52.240 --> 00:11:53.800
rough is supported.

00:11:54.180 --> 00:11:56.860
So this is not part of the formatter, but that rough is built,

00:11:57.100 --> 00:12:02.640
brought in a lot more flake eight support and and and flake eight extensions.

00:12:03.140 --> 00:12:06.440
And then also I sort and PI upgrade are part of rough now also.

00:12:06.880 --> 00:12:09.680
But the Ruff format is just kind of like black, but faster.

00:12:10.000 --> 00:12:10.640
So why not?

00:12:12.360 --> 00:12:14.540
Anyway, there's some cool stuff about it.

00:12:14.660 --> 00:12:16.100
It's a little more configurable.

00:12:16.260 --> 00:12:18.820
There's a couple extra configurations you can do.

00:12:19.340 --> 00:12:22.020
I think that you covered that not too long ago.

00:12:22.920 --> 00:12:26.680
Yeah, I covered just the string side of things, which is nice.

00:12:26.880 --> 00:12:30.120
But yeah, it's not massively configurable,

00:12:30.300 --> 00:12:35.180
but there's a few areas that people seem to really care about changing or not changing.

00:12:35.640 --> 00:12:38.960
I also, since it's been widely adopted,

00:12:39.130 --> 00:12:43.940
we also have extensions for VS Code and PyCharm

00:12:44.210 --> 00:12:46.280
that you can, and IntelliJ PyCharm,

00:12:46.560 --> 00:12:50.100
that you can add on so that you can have the formatting done

00:12:50.130 --> 00:12:51.680
just right in your editor, which is great.

00:12:53.240 --> 00:12:54.700
Yeah, and you can do things like when you,

00:12:54.810 --> 00:12:56.200
I think in the PyCharm one,

00:12:56.230 --> 00:12:58.120
if you just hit the reformat code,

00:12:58.420 --> 00:12:59.900
I think it might even use Ruff format.

00:13:00.250 --> 00:13:00.980
I'm not entirely sure,

00:13:01.100 --> 00:13:04.060
but I think you can make Ruff format be the format,

00:13:04.840 --> 00:13:05.700
my code for me.

00:13:05.920 --> 00:13:06.260
Yeah.

00:13:06.640 --> 00:13:08.120
So I'm pretty excited about this.

00:13:09.060 --> 00:13:15.500
I wasn't going to roll it out to the team when it is in alpha, but if they say it's good,

00:13:15.720 --> 00:13:16.940
I'm good with it.

00:13:17.640 --> 00:13:20.280
I trust Charlie and team.

00:13:20.580 --> 00:13:23.280
Charlie and team now, so it's pretty exciting.

00:13:24.040 --> 00:13:31.640
Also, in the article we're linking to, he talks about why they wanted to do a formatter,

00:13:31.720 --> 00:13:33.980
but also it's kind of cool.

00:13:34.240 --> 00:13:39.580
talks about the astral tools tool chain so the company is called astral now and they talk about

00:13:40.040 --> 00:13:46.980
um how this is the first non-linting uh you know application that they've done so they are that

00:13:47.200 --> 00:13:54.120
they were planning on branching out and doing more things around python tool chains uh but um faster

00:13:54.260 --> 00:14:00.280
with building it with the rest so um this is this is the first so i i'm excited to see where they go

00:14:00.240 --> 00:14:06.700
with this. So excellent. Yeah. So, you know, they go on and on about how much faster it is.

00:14:07.300 --> 00:14:13.740
And that's, it's, it's interesting to me because the faster aspect is kind of a, it's like a

00:14:14.140 --> 00:14:20.360
sideshow amazing, but not necessarily why I would pick it. I know if you had 5 million lines of

00:14:20.450 --> 00:14:27.999
Python, yeah, it super, super matters, but most people don't, right? Like running across 350

00:14:28.020 --> 00:14:33.060
Python files that make up talk by then training, for example, website and APIs and stuff.

00:14:33.380 --> 00:14:36.280
And it literally is instant, which is like mind boggling.

00:14:36.320 --> 00:14:38.820
You say format this, that applies all these rules, all these changes.

00:14:39.280 --> 00:14:44.940
And it's just like done 27 files changed 324 not changed or whatever it says.

00:14:45.320 --> 00:14:46.520
So it's awesome that it's fast.

00:14:46.740 --> 00:14:48.800
I mean, if it were too slow, I would maybe not use it.

00:14:49.020 --> 00:14:50.960
But to me, it's the configurability, right?

00:14:51.160 --> 00:14:56.020
Like you can set the line length, you can set the string style if it really matters to you.

00:14:57.080 --> 00:15:26.320
Yeah, I think like for me, that's why I'm so excited about the Ruff formatter more than the actual speed, because I have a 32 inch 4K monitor. Do I want like a little thin column of code? Because, you know, I want 80 columns. No, like I've got it set to 120. And it still is only two thirds of the screen on a large font. You know, it's, it just makes me more productive. Right. And I think I last time I talked about this, I talked about how using the single quote is, you know,

00:15:26.400 --> 00:15:31.480
significantly fewer characters potentially when you're you're typing and if you have rsi like you

00:15:31.530 --> 00:15:37.600
always think about like keystrokes and all that kind of stuff so yeah so for me that's that's

00:15:37.600 --> 00:15:43.180
what counts yeah i uh for the string side i haven't talked about this for a while but there are

00:15:43.440 --> 00:15:47.760
there are some applications where you're using a lot of double quotes and you cannot use single

00:15:48.020 --> 00:15:53.019
quotes in in the thing that you're using in the string that you're passing so um if you're using

00:15:53.040 --> 00:15:54.660
a lot of double quotes and stuff.

00:15:54.790 --> 00:15:56.360
And I have a, so I have an application

00:15:56.630 --> 00:15:59.380
where the API itself uses a lot of,

00:15:59.990 --> 00:16:02.000
a lot of, we have to pass in double quotes

00:16:02.150 --> 00:16:03.240
into the API.

00:16:03.610 --> 00:16:06.420
So all of the strings that we're past setting up

00:16:06.760 --> 00:16:08.880
is single quoting makes way more sense.

00:16:09.160 --> 00:16:10.020
So yeah.

00:16:10.090 --> 00:16:11.760
And I also double checked one of the,

00:16:12.140 --> 00:16:13.720
one of the reasons I use double quotes

00:16:13.960 --> 00:16:15.380
is if I'm going to say,

00:16:15.780 --> 00:16:18.260
and it's the way it should be in your code

00:16:18.290 --> 00:16:19.900
where you need an apostrophe, right?

00:16:20.080 --> 00:16:21.140
Or possessiveness or whatever.

00:16:21.980 --> 00:16:26.200
So then you could have a single quote, but then backslash escape the single quote.

00:16:26.400 --> 00:16:28.580
But if you put double quotes, there's no need to escape it.

00:16:28.580 --> 00:16:34.820
And I check that if that, if it would go from double quotes and a back to a quote over to

00:16:34.920 --> 00:16:38.120
needing the escaped backslash rough, won't change it.

00:16:38.300 --> 00:16:40.340
So it'll be single quote, single quote, double quotes.

00:16:40.620 --> 00:16:41.100
It's fun.

00:16:41.500 --> 00:16:42.700
Double quote and keep going.

00:16:43.040 --> 00:16:44.740
I think that black does the same thing.

00:16:44.760 --> 00:16:48.120
I don't think that I'll have to check, but I don't think black will change it if there's

00:16:48.120 --> 00:16:48.780
an embedded one.

00:16:49.200 --> 00:16:49.660
So yeah.

00:16:49.860 --> 00:16:50.280
Yeah.

00:16:50.280 --> 00:16:50.620
I'm not sure.

00:16:50.700 --> 00:16:51.400
I wasn't necessarily.

00:16:51.540 --> 00:16:52.920
I don't know at all whether it will,

00:16:53.080 --> 00:16:54.860
but just thinking like if you say,

00:16:55.090 --> 00:16:55.860
please use single quotes,

00:16:55.980 --> 00:16:58.600
it's not like it starts putting escapes everywhere.

00:16:58.780 --> 00:16:58.880
- Yeah.

00:17:00.300 --> 00:17:01.420
- Whereas you can't do that in black.

00:17:02.520 --> 00:17:05.540
Marco out there also points out that Ruff has a plugin

00:17:05.630 --> 00:17:07.699
to help upgrade from NumPy one to two,

00:17:08.240 --> 00:17:08.819
which is pretty awesome.

00:17:09.150 --> 00:17:09.920
Okay, didn't know that.

00:17:10.020 --> 00:17:10.360
- Oh yeah.

00:17:10.560 --> 00:17:10.839
- That's cool.

00:17:11.189 --> 00:17:11.880
- Yeah, that's really cool.

00:17:12.180 --> 00:17:13.560
- That's pretty great actually.

00:17:14.100 --> 00:17:14.600
So cool.

00:17:14.680 --> 00:17:15.100
- Sure is.

00:17:15.470 --> 00:17:16.640
All right, well, what's next, Brian?

00:17:16.900 --> 00:17:18.760
- Well, we'd like to thank our sponsor.

00:17:19.160 --> 00:17:22.000
So this episode is brought to you by Scout APM.

00:17:22.280 --> 00:17:26.900
Are you tired of spending hours trying to find the root cause of issues impacting performance?

00:17:27.480 --> 00:17:31.340
Then you owe it to yourself to check out our sponsor this week, Scout APM.

00:17:31.600 --> 00:17:39.620
Scout APM is a leading application performance monitoring tool that helps you identify and solve performance abnormalities faster and easier.

00:17:40.300 --> 00:17:53.340
Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs, the dreaded N plus one queries problem common with ORMs and more directly to source code so that you can spend less time debugging and more time building.

00:17:53.780 --> 00:18:07.000
You'll love Scout because it's built for developers by developers. Scout makes it easy to get set up and deliver insights in less than four minutes. Seriously, you could pause this episode, set up Scout and be back at it without missing a beat.

00:18:07.340 --> 00:18:10.120
And the best part, Scout's pricing is affordable and straightforward.

00:18:10.640 --> 00:18:12.440
Only pay for the data you use.

00:18:12.880 --> 00:18:15.340
No hidden overage fees or per seat pricing.

00:18:15.900 --> 00:18:18.900
Start your free trial and get instant insights today.

00:18:19.460 --> 00:18:21.760
Visit pythonbytes.fm/scout.

00:18:22.120 --> 00:18:25.040
Please use our link because that truly supports the show.

00:18:25.420 --> 00:18:28.100
Thank you to Scout APM for supporting Python Bytes.

00:18:28.340 --> 00:18:28.880
Yeah, that's awesome.

00:18:29.240 --> 00:18:29.760
Thank you, Scout.

00:18:30.260 --> 00:18:35.360
And being able to look at your code and see like, okay, here's, these are the parts of

00:18:35.320 --> 00:18:40.440
my API or wherever else you're running that are slow or fast and it's in the data layer right now,

00:18:40.520 --> 00:18:47.180
like awesome stuff. So very, very cool service. Now, a couple of bits of feedback from Kim here.

00:18:47.580 --> 00:18:52.540
One is having been on the talk reviewing side several times of smaller regional conferences,

00:18:53.120 --> 00:18:58.940
picons, indeed, please submit your stuff as early as possible. It makes it better for the reviewers

00:18:59.560 --> 00:19:04.739
as well as you can get feedback sooner. And confirmation black will leave strings alone

00:19:04.760 --> 00:19:08.500
that have one type of quote inside of the other, which is cool as it should.

00:19:08.700 --> 00:19:08.880
Yeah.

00:19:09.260 --> 00:19:09.560
Thanks, Kim.

00:19:09.920 --> 00:19:10.200
All right.

00:19:11.020 --> 00:19:12.400
What do we got for the next one?

00:19:12.820 --> 00:19:14.400
This is so big, Brian.

00:19:14.700 --> 00:19:15.480
Is it really big?

00:19:16.340 --> 00:19:17.360
It's really big.

00:19:17.390 --> 00:19:23.280
This is what I'm, the title I put, nowhere is it written, but in our show notes, the

00:19:23.530 --> 00:19:30.719
title of the section will be gil minus minus semicolon because it's CPython and Python

00:19:30.740 --> 00:19:37.100
has the GIL but the python steering council has now formally accepted the removal of the GIL in

00:19:37.240 --> 00:19:42.600
python oh cool that is massive right well i thought it was i guess it is massive but i thought it was

00:19:42.780 --> 00:19:47.440
already decided but was it oh it was kind of like tentative that maybe or something i don't know

00:19:47.780 --> 00:19:51.640
there was i think pretty i think there was some pretty serious opposition to doing it because

00:19:52.260 --> 00:19:58.679
it has massive effects on all the c extensions which you know why did we have this whole two

00:19:58.580 --> 00:19:59.260
two to three drama.

00:19:59.760 --> 00:20:04.300
We had it because a bunch of the libraries that people use, right?

00:20:04.300 --> 00:20:09.180
When you say Python, you might mean the language or you might mean plus the 400, 500,000 other

00:20:09.400 --> 00:20:14.540
libraries you can use the ecosystem and the ecosystem would say, well, this thing that

00:20:14.920 --> 00:20:17.960
my library depends on doesn't support Python three.

00:20:18.120 --> 00:20:19.540
So I have to stay on Python two.

00:20:19.860 --> 00:20:21.400
And that went on insanely long.

00:20:21.600 --> 00:20:28.540
The same similar type of deal would be here on anything that has like a C layer that has

00:20:28.540 --> 00:20:33.880
form of concern of concurrency or being used in a library that might now use it concurrently when

00:20:33.880 --> 00:20:39.380
it wasn't designed for it. So it's, it is pretty significant knock on effects. Yeah. Okay. So this

00:20:39.380 --> 00:20:46.740
is PEP 703. It has officially been accepted, sort of, sort of. In short, this comes from,

00:20:47.760 --> 00:20:53.280
comes from Hugo on Mastodon. So again, follows on Mastodon. That's where a lot of the action is,

00:20:53.580 --> 00:21:06.580
But quotes the discussion over on discuss.python.org says, in short, the steering council accepts PEP 703, but with clear provisio that the rollout will be gradual and break as little as possible.

00:21:06.860 --> 00:21:15.320
And that we can roll back any change that turns out to be too disruptive, which includes potentially 100% rollback of PEP 703.

00:21:15.380 --> 00:21:23.220
So 100% rejection and reversal, if necessary, however unlikely or desirable, undesirable we expect that to be.

00:21:23.740 --> 00:21:24.140
Okay.

00:21:24.440 --> 00:21:24.680
Okay.

00:21:24.820 --> 00:21:28.900
So there's a couple of things to note, like go over to the discuss here.

00:21:29.360 --> 00:21:31.320
I had already pulled up, didn't I go to this guy?

00:21:31.680 --> 00:21:32.440
Let's go to the PEP.

00:21:32.720 --> 00:21:34.100
Now this is by Sam gross.

00:21:34.320 --> 00:21:36.540
And I've talked several times about how excellent.

00:21:36.600 --> 00:21:40.360
I think some of the work that he's been doing, because it's not just the Gil stuff, but

00:21:40.360 --> 00:21:46.440
a lot of the kind of Cinder and speed stuff has been inspired by, Sam gross and the

00:21:46.560 --> 00:21:47.060
folks over there.

00:21:47.620 --> 00:21:50.620
So it says CPython's global interpreter lock.

00:21:50.640 --> 00:21:55.620
the gil prevents multiple threads from executing python code at the same time you can have all the

00:21:55.660 --> 00:22:03.180
threads you like in python only one of them will execute a python um instruction instruction code

00:22:03.320 --> 00:22:09.500
like what you get out from when you say disassemble thing right like load adder or add to list that

00:22:09.620 --> 00:22:17.300
kind of thing um so this PEP to be very clear this is a very um small subset that only affects people

00:22:17.260 --> 00:22:24.380
that ask it to affect them this it proposes that adding a build not runtime but a compilation for

00:22:24.900 --> 00:22:31.040
the cpython runtime that will let python code run without the global interpreter lock and the

00:22:31.620 --> 00:22:37.760
necessary changes to make this possible right so when you compile it if you pass --disable

00:22:38.000 --> 00:22:43.300
gill then you'll get a special output of python that doesn't have the GIL that's pretty wild isn't

00:22:43.200 --> 00:22:50.880
Yeah, I'm hoping that we'll like mere humans that don't want to recompile it can get a distro somewhere with it.

00:22:51.060 --> 00:22:58.020
Yeah, I'm sure there'll be a like click here to alternative downloads, get the concurrent Python or something like that.

00:22:58.250 --> 00:22:58.400
Right.

00:22:58.550 --> 00:23:04.080
But the fact that it's not a not even a runtime flag, but a compile time flag is pretty wild.

00:23:04.500 --> 00:23:05.320
So let's see.

00:23:05.420 --> 00:23:07.960
There's a couple of things worth covering here.

00:23:08.840 --> 00:23:10.820
It's a really long, it's a really long path.

00:23:10.820 --> 00:23:11.380
So let's see.

00:23:11.740 --> 00:23:14.160
So the GIL effects Python library usability.

00:23:14.720 --> 00:23:16.720
And this is one of the things that's pretty interesting.

00:23:16.800 --> 00:23:20.780
It says, look, there's a lot of libraries like they, they just go on and on about machine

00:23:21.060 --> 00:23:24.400
learning libraries and the concurrency machine learning libraries need.

00:23:24.760 --> 00:23:29.040
Get the strong sense that Sam Gill and people he's working with do stuff with machine learning

00:23:29.240 --> 00:23:30.080
libraries of Python.

00:23:30.160 --> 00:23:33.700
And that's their main motivation here, but obviously it has broader implications.

00:23:33.920 --> 00:23:40.720
But the example here is PyTorch exposes a multi-processing based API called DataLower

00:23:40.740 --> 00:23:42.840
for building data input pipelines.

00:23:43.320 --> 00:23:47.000
It uses fork on Linux because it's better, et cetera, et cetera.

00:23:47.020 --> 00:23:50.200
And basically, if you're going to do the weird tricks

00:23:50.300 --> 00:23:52.240
you got to do underneath the covers in Python

00:23:52.680 --> 00:23:55.740
to make the async stuff truly parallel,

00:23:56.320 --> 00:23:58.460
as in I have 10 cores on my machine,

00:23:58.680 --> 00:24:01.140
I want to use them all with threads or something like that.

00:24:01.480 --> 00:24:05.540
However, the top-level API that you interact with

00:24:05.740 --> 00:24:07.420
is kind of janky.

00:24:07.780 --> 00:24:09.840
It has to take into account certain things

00:24:09.900 --> 00:24:13.740
like objects can't be shared across multi-processing processes, right?

00:24:13.900 --> 00:24:15.740
If it was threads, they could be, but they're not.

00:24:15.990 --> 00:24:17.340
So they can't be, et cetera.

00:24:17.760 --> 00:24:23.780
It says accessing GPUs within a data loader or worker quickly leads out of memory errors

00:24:24.090 --> 00:24:28.620
because of context, like unlike threads within a process and all these different things, right?

00:24:28.900 --> 00:24:33.220
So basically one of the motivations is allow people building libraries to build cleaner,

00:24:33.800 --> 00:24:38.500
more self-contained, i.e. like sharing objects within a process better, right?

00:24:38.560 --> 00:24:40.600
Not just I want better performance, which is obvious.

00:24:41.120 --> 00:24:42.760
More stuff about this.

00:24:42.980 --> 00:24:44.140
So yeah, you can look through it.

00:24:44.140 --> 00:24:46.240
Like I said, it's quite the deal.

00:24:46.250 --> 00:24:47.840
But one of the things that's interesting,

00:24:48.590 --> 00:24:52.220
as I touched on, a lot of the things in Cinder actually make sense here.

00:24:52.400 --> 00:24:57.700
So this immortalization stuff about objects that have to have reference counting.

00:24:58.180 --> 00:25:00.620
Because remember, the reference counting is what the GIL is about.

00:25:00.820 --> 00:25:03.520
The GIL is all about memory, not concurrency.

00:25:03.620 --> 00:25:04.800
It doesn't care about concurrency.

00:25:04.840 --> 00:25:08.500
It just needs the memory management to not be concurrent.

00:25:09.120 --> 00:25:12.300
So, well, that's a bit of a problem if you have more than one thread.

00:25:12.600 --> 00:25:13.680
So it's about limiting.

00:25:13.860 --> 00:25:19.720
It's about managing memory stuff, but making that not concurrent to make that better.

00:25:20.260 --> 00:25:25.020
So a lot of the changes here are like, well, how can we allow the memory stuff to be concurrent,

00:25:25.170 --> 00:25:25.280
basically?

00:25:25.550 --> 00:25:27.660
So one of them is immortalized objects.

00:25:28.080 --> 00:25:31.260
So for example, true, false, none, seven.

00:25:31.810 --> 00:25:34.640
None of those need to have a reference count.

00:25:34.980 --> 00:25:37.020
because they just get created at the start of the process.

00:25:37.320 --> 00:25:38.560
There's only one of them, right?

00:25:38.570 --> 00:25:40.440
There's no reason to like, oh, true's gone now.

00:25:40.580 --> 00:25:41.160
No one's using true.

00:25:41.230 --> 00:25:42.440
Oh, true's back, right?

00:25:42.660 --> 00:25:43.440
There's just one true.

00:25:44.140 --> 00:25:44.820
There's just one true.

00:25:45.000 --> 00:25:45.640
It's a singleton.

00:25:45.990 --> 00:25:48.540
And so all of those are what are now going to become

00:25:48.720 --> 00:25:49.740
what are called immortal objects.

00:25:50.440 --> 00:25:52.460
And pi increment and pi decrement,

00:25:52.500 --> 00:25:55.540
so basically adding and removing the number of users

00:25:55.610 --> 00:25:58.400
of that variable or object is a no op now, right?

00:25:58.520 --> 00:25:58.780
Okay.

00:25:59.200 --> 00:26:00.540
And that's good for you and me.

00:26:00.930 --> 00:26:02.220
When we pass true and false around,

00:26:02.720 --> 00:26:04.120
even if we're not doing it concurrently,

00:26:04.520 --> 00:26:07.800
It's just less instructions to like, yeah, use the structures.

00:26:08.040 --> 00:26:08.100
Right.

00:26:08.200 --> 00:26:10.520
And it's more shared memory, all those kinds of things.

00:26:10.790 --> 00:26:15.980
They also are adding this thing called biased reference counting, which allows, basically

00:26:16.130 --> 00:26:21.900
it says, look, we, the problem before was we had like one number that said number of references

00:26:22.080 --> 00:26:22.580
to this object.

00:26:22.710 --> 00:26:26.900
And when somebody wants to change it, you could either lock the thread, take a lock and lock

00:26:26.900 --> 00:26:31.600
it every time per object, which is kind of crazy, or you just don't allow anybody to change

00:26:31.820 --> 00:26:32.960
it more than one at a time.

00:26:33.180 --> 00:26:33.600
Hence the GIL.

00:26:33.920 --> 00:26:39.040
So this one says, well, let's change it so that on the thread that created the object,

00:26:39.620 --> 00:26:41.320
it behaves the same, right?

00:26:41.440 --> 00:26:43.200
There's no locks, none of that kind of stuff.

00:26:43.230 --> 00:26:45.560
It just works on it, references it directly.

00:26:45.650 --> 00:26:50.580
But if it's shared, there's like a secondary count, like others, other references or something

00:26:51.120 --> 00:26:57.300
called bias reference counting, where those are managed in a thread safe way.

00:26:57.680 --> 00:27:01.120
Because most of the time objects and things are not shared across threads,

00:27:01.300 --> 00:27:04.360
Even in a multi-threaded app, the little temporary variables and loop variables,

00:27:04.520 --> 00:27:06.460
those are still just on the one thread, right?

00:27:06.920 --> 00:27:07.860
Stuff that shared is way less.

00:27:08.140 --> 00:27:10.720
So the reference counting is changing to make that work.

00:27:11.360 --> 00:27:12.280
And what else?

00:27:13.000 --> 00:27:15.780
There's a bunch of pseudo code telling you this is some intense stuff.

00:27:16.100 --> 00:27:19.780
A bunch of things about memory management, how that works, garbage collection,

00:27:20.320 --> 00:27:21.060
et cetera, et cetera.

00:27:21.340 --> 00:27:22.840
So I'm going to stop.

00:27:23.120 --> 00:27:25.380
People can dive into it, but this is the big deal.

00:27:25.440 --> 00:27:29.460
I think some of these changes will find their way just into Python period,

00:27:29.660 --> 00:27:31.180
like the immortal objects.

00:27:31.600 --> 00:27:31.720
Yeah.

00:27:32.020 --> 00:27:34.180
There's no reason for that not to be in there.

00:27:34.180 --> 00:27:35.300
That would just be useful for everyone.

00:27:35.720 --> 00:27:37.740
But other ones like this by reference counting,

00:27:38.280 --> 00:27:39.700
maybe you'd be slower, maybe take more memory.

00:27:39.960 --> 00:27:41.460
So maybe you don't want that, for example.

00:27:41.680 --> 00:27:42.140
Yeah, maybe.

00:27:42.600 --> 00:27:43.140
What do you think?

00:27:43.520 --> 00:27:45.840
Oh, I think that removing the gil

00:27:45.980 --> 00:27:47.320
will be a sea change in Python.

00:27:48.220 --> 00:27:48.380
Sorry.

00:27:49.680 --> 00:27:50.240
I think you're right.

00:27:51.420 --> 00:27:51.980
I think you're right.

00:27:51.980 --> 00:27:53.360
I think it's exciting.

00:27:53.740 --> 00:27:56.100
I think, you know, I've said this a bunch of times,

00:27:56.340 --> 00:27:58.300
like I haven't even looked recently.

00:27:58.540 --> 00:28:05.160
I'm pretty sure this computer here has, I think, 10 cores that I'm on right now.

00:28:05.580 --> 00:28:09.800
And if I run Python code, as hard as it can possibly go, it's 10%, right?

00:28:10.120 --> 00:28:14.580
And that's just, it would be better if that wasn't completely baked into the runtime.

00:28:14.800 --> 00:28:17.680
I actually hope that it's just kind of a non-event.

00:28:18.040 --> 00:28:22.400
Like, it's a just, we just don't have a GIL anymore, and people can stop complaining about that.

00:28:22.660 --> 00:28:26.440
And I don't care if things get a little, I mean, I like things to go faster.

00:28:26.740 --> 00:28:28.800
I don't care if it goes a little slower because of this.

00:28:29.400 --> 00:28:30.920
It's going to go faster eventually anyway.

00:28:31.080 --> 00:28:33.500
Wait till the next round of CPUs coming out.

00:28:34.340 --> 00:28:34.460
Right.

00:28:34.740 --> 00:28:38.340
It's the next faster CPython release as well.

00:28:39.140 --> 00:28:47.920
And then also just having people in Python being able to get used to doing more asynchronous and threaded things.

00:28:49.080 --> 00:28:50.860
I think that's a good thing for the language.

00:28:51.380 --> 00:28:52.600
So, yeah, I'm excited.

00:28:53.120 --> 00:28:57.940
But a big part of me, I understand the going slow and we don't want to break everybody.

00:28:58.500 --> 00:29:02.560
But part of me was like, just, oh, just do it and we'll clean up the mess afterwards.

00:29:03.580 --> 00:29:03.700
Yeah.

00:29:04.080 --> 00:29:04.220
Yeah.

00:29:04.940 --> 00:29:06.140
I understand the caution.

00:29:06.440 --> 00:29:12.380
Well, if they get it as a compilation flag, it's nothing there to say that, oh, you couldn't

00:29:12.760 --> 00:29:18.060
possibly like that the way we compile Python that gets distributed in a few versions, right?

00:29:18.360 --> 00:29:18.560
Right.

00:29:18.780 --> 00:29:21.720
But eventually we're going to, eventually that won't be the case.

00:29:22.040 --> 00:29:24.000
Eventually, we're going to try to get rid of that.

00:29:24.240 --> 00:29:26.960
If it all goes well in a couple versions later or something,

00:29:28.280 --> 00:29:33.180
the default will be the no-gil version or something, with my guess.

00:29:33.860 --> 00:29:38.400
And there'll be a flag to say to add the GIL if you really need it still for a while.

00:29:38.480 --> 00:29:39.540
And then they'll work.

00:29:39.660 --> 00:29:40.260
Yep, excellent.

00:29:40.620 --> 00:29:40.720
Anyway.

00:29:41.960 --> 00:29:42.280
I agree.

00:29:42.340 --> 00:29:43.040
We'll see where it goes.

00:29:44.040 --> 00:29:46.640
There was just this thread on Mastodon, which you were copying on.

00:29:46.720 --> 00:29:53.420
I don't know if you saw it today, but asking what is Python 3.14 going to be called?

00:29:54.470 --> 00:29:59.400
Of course, it's going to be the symbol Python because it's 3.14, right?

00:29:59.540 --> 00:30:00.360
It's so incredible.

00:30:00.830 --> 00:30:04.560
So maybe in Python, it'll be the default.

00:30:04.630 --> 00:30:05.060
You never know.

00:30:06.340 --> 00:30:06.860
Yeah.

00:30:07.340 --> 00:30:09.940
You have to pause and do the I thing.

00:30:10.560 --> 00:30:10.960
Python.

00:30:12.460 --> 00:30:12.700
Exactly.

00:30:13.560 --> 00:30:13.820
Yeah.

00:30:14.660 --> 00:30:15.680
It's going to be fun to have.

00:30:15.720 --> 00:30:18.560
that episode is going to be nonstop when we,

00:30:19.040 --> 00:30:22.340
when it's time to talk about the upcoming release of Pi.

00:30:23.020 --> 00:30:23.500
Yeah.

00:30:24.300 --> 00:30:24.560
Yeah.

00:30:24.680 --> 00:30:24.860
The,

00:30:25.220 --> 00:30:27.740
the other follow on is like trying to guess when,

00:30:28.260 --> 00:30:28.740
when,

00:30:29.100 --> 00:30:34.540
when the release of 3.14.15 will come out.

00:30:34.880 --> 00:30:38.480
Like that'll be maybe a couple of years after it'd be like a security

00:30:38.620 --> 00:30:39.320
release or something.

00:30:40.380 --> 00:30:40.780
Yeah.

00:30:40.960 --> 00:30:41.060
So,

00:30:41.760 --> 00:30:42.000
ah,

00:30:42.280 --> 00:30:42.380
oh,

00:30:42.500 --> 00:30:42.560
well,

00:30:43.160 --> 00:30:43.920
it'll be good.

00:30:44.280 --> 00:30:45.000
Speaking of,

00:30:45.020 --> 00:30:51.920
I don't know what I was speaking of, but I want to cover why the Django admin is so ugly.

00:30:53.580 --> 00:30:54.760
I didn't say it was ugly.

00:30:55.420 --> 00:30:57.000
Vince Salvino says it's ugly.

00:30:57.240 --> 00:30:58.060
You're going to get mail.

00:30:58.980 --> 00:30:59.820
No, Vince will.

00:31:01.140 --> 00:31:07.140
Anyway, I've noticed this before and kind of I understand it now, but I remember trying.

00:31:07.720 --> 00:31:09.520
So I'm doing a Django project now.

00:31:09.860 --> 00:31:13.000
I remember jumping into Django like years ago,

00:31:13.640 --> 00:31:15.640
and I was surprised when I jumped in again

00:31:16.040 --> 00:31:18.800
and saw that the admin kind of looks the same

00:31:18.900 --> 00:31:19.940
as it did a long time ago.

00:31:21.240 --> 00:31:22.620
And it was kind of, you know,

00:31:22.780 --> 00:31:24.280
there's been some minor changes and stuff,

00:31:24.460 --> 00:31:26.540
but okay, this is actually a great article.

00:31:26.740 --> 00:31:28.040
Why is the Django admin ugly?

00:31:29.179 --> 00:31:30.960
There's some great quotes in here.

00:31:31.580 --> 00:31:32.580
I'm going to jump down to them.

00:31:33.340 --> 00:31:35.040
The Django admin is not ugly.

00:31:35.300 --> 00:31:37.480
Rather, no effort was made to make it beautiful,

00:31:37.640 --> 00:31:38.840
a beautiful end user tool.

00:31:38.940 --> 00:31:44.880
it looks like a developer made it oh okay i understand and that's from ken uh whitesel um

00:31:45.340 --> 00:31:51.800
the another one uh the admins recommended use is limited to an organization's internal management

00:31:52.000 --> 00:31:57.640
tool it's not intended for building your entire front end around um so the yeah yeah so that's

00:31:57.800 --> 00:32:03.180
basically the gist of this also the django admin was built for phil one of my favorite quotes um

00:32:03.200 --> 00:32:04.880
This is from Jacob Kaplan Moss.

00:32:05.340 --> 00:32:09.820
Phil being the, what, Phil was the Phil Cothen?

00:32:10.480 --> 00:32:12.200
Then editor of Lawrence.com.

00:32:12.380 --> 00:32:16.780
Yeah, because the history of Django is it's around like newspaper publishing.

00:32:18.140 --> 00:32:26.880
And so basically it's a database front end for people that are adminning a site.

00:32:27.700 --> 00:32:29.840
It's not intended for end user stuff.

00:32:30.540 --> 00:32:32.060
So I'm going to jump down.

00:32:33.020 --> 00:32:36.780
There was apparently a quote from 0.9 days of admin.

00:32:36.980 --> 00:32:37.620
It's not your app.

00:32:38.600 --> 00:32:41.660
And the gist of it, where am I going to find it?

00:32:41.760 --> 00:32:43.680
It comes from Curtis Maloney.

00:32:43.920 --> 00:32:47.440
It says, encouraging people to build their own management interface

00:32:48.040 --> 00:32:51.580
and treat the admin as a DB admin tool has saved a lot of people pain.

00:32:51.760 --> 00:32:55.380
The effort to customize it grows far faster than the payoffs.

00:32:55.760 --> 00:32:58.900
So the gist of it is it's intentionally not that pretty

00:32:58.920 --> 00:33:03.100
because they don't want you to intentionally try to make it pretty

00:33:03.360 --> 00:33:05.000
to expose it to end users.

00:33:05.880 --> 00:33:06.720
It's supposed to be ugly.

00:33:07.340 --> 00:33:08.400
It's not ugly.

00:33:08.620 --> 00:33:10.040
It's just not supposed to be pretty.

00:33:10.160 --> 00:33:11.500
Chris also says it's meant to be ugly.

00:33:13.100 --> 00:33:13.280
Yeah.

00:33:13.720 --> 00:33:20.580
Anyway, I appreciate the honesty of like, yeah, we know it looks like that,

00:33:20.660 --> 00:33:21.280
but it works.

00:33:22.160 --> 00:33:25.400
It's like the Craigslist of admin interfaces.

00:33:26.600 --> 00:33:27.800
Oh, it's fancy for Craigslist.

00:33:28.520 --> 00:33:28.700
Yeah.

00:33:28.740 --> 00:33:32.540
- Yeah, anyway, good write up, Vince, so thanks.

00:33:32.620 --> 00:33:34.340
- It is, and I think it's also pretty interesting

00:33:34.410 --> 00:33:35.700
to remind people, like, you know, really,

00:33:36.040 --> 00:33:38.160
it's meant for people running the website,

00:33:38.740 --> 00:33:40.280
not something that should be user-facing.

00:33:40.820 --> 00:33:43.200
- Well, yeah, and even that, like, if you're,

00:33:43.400 --> 00:33:45.000
you wouldn't, you'd have another interface

00:33:45.320 --> 00:33:47.140
for like writers writing stuff,

00:33:47.440 --> 00:33:50.800
but if there was like a quick typo or something like that,

00:33:50.900 --> 00:33:54.700
and somebody can just hop in and change the database, so.

00:33:55.320 --> 00:33:55.400
- Yeah.

00:33:55.500 --> 00:33:56.900
- And I have appreciated it.

00:33:57.060 --> 00:33:59.500
There's been a lot of things that I've put together

00:33:59.800 --> 00:34:02.420
that having the admin interface there

00:34:02.880 --> 00:34:04.700
is better than going right into the database,

00:34:05.400 --> 00:34:06.980
using SQL to change stuff.

00:34:08.640 --> 00:34:11.580
And often, I don't have any user-facing admin.

00:34:11.860 --> 00:34:16.200
It's just showing the data that's stored in there.

00:34:16.399 --> 00:34:18.040
So anyway, it's fine.

00:34:18.260 --> 00:34:18.560
Yeah.

00:34:18.840 --> 00:34:21.340
Blaze out there suggests maybe using Textual

00:34:21.360 --> 00:34:22.800
to create a TUI admin.

00:34:23.320 --> 00:34:23.820
That'll do it.

00:34:25.060 --> 00:34:25.159
Yeah.

00:34:25.520 --> 00:34:26.520
Let's replace it with something.

00:34:27.020 --> 00:34:27.139
Yeah.

00:34:28.000 --> 00:34:29.620
I'm not going to say you won't get normal.

00:34:30.080 --> 00:34:34.720
You definitely won't get regular users to fire up an SSH session and do we

00:34:34.740 --> 00:34:35.060
into it?

00:34:35.340 --> 00:34:35.580
No.

00:34:35.720 --> 00:34:35.800
Yeah.

00:34:36.000 --> 00:34:36.300
But I'm,

00:34:36.399 --> 00:34:36.620
I'm,

00:34:36.820 --> 00:34:38.840
I'm waiting for somebody to build like,

00:34:39.000 --> 00:34:43.399
cause textual can build textual can have web interfaces now too.

00:34:43.960 --> 00:34:44.179
Actually.

00:34:44.460 --> 00:34:44.540
Yeah.

00:34:44.840 --> 00:34:45.700
So you could have a,

00:34:45.780 --> 00:34:45.879
a,

00:34:46.320 --> 00:34:47.419
you could do a,

00:34:47.520 --> 00:34:47.620
a,

00:34:48.159 --> 00:34:52.020
like a skin on top of the Django admin and have it be a textual based

00:34:52.240 --> 00:34:52.360
thing.

00:34:52.399 --> 00:34:52.879
That'd be fun.

00:34:53.179 --> 00:34:53.480
Yeah.

00:34:54.000 --> 00:34:54.220
Indeed.

00:34:54.720 --> 00:34:55.260
Waiting for that.

00:34:55.480 --> 00:35:01.800
all right uh that's our items um uh do you have any extras for us i'm feeling extra today i do

00:35:02.190 --> 00:35:09.640
okay let's see first of all this is a two points in time sort of thing andy mckay on mastodon says

00:35:10.100 --> 00:35:20.039
uh what was it before it said the psf as in at the psf no longer is going to use x twitter i've

00:35:20.160 --> 00:35:25.940
you know so many places are saying x the place you know formerly known as twitter like what an

00:35:26.200 --> 00:35:30.920
insanely big fumble with branding like after six months that people can't just say the name like

00:35:31.020 --> 00:35:34.540
people say meta and people know what they're talking about they don't have they don't say

00:35:35.120 --> 00:35:39.180
x you know the thing that used to be twitter so i propose we just call it x twitter because a lot

00:35:39.180 --> 00:35:44.280
of us are not on x twitter as much and it has x and it also tells you it's twitter so anyway how

00:35:44.300 --> 00:35:44.900
How about Zitter?

00:35:45.240 --> 00:35:47.360
Like, just take off the TW.

00:35:47.620 --> 00:35:48.220
Just be a Zitter.

00:35:48.780 --> 00:35:49.340
Yeah, there you go.

00:35:50.579 --> 00:35:56.300
So the big news, really, the reason I bring this up is the at the PSF is now on Bostadon.org.

00:35:56.700 --> 00:35:58.700
So therefore on Mastodon in general.

00:35:59.100 --> 00:35:59.280
Nice.

00:35:59.600 --> 00:36:00.940
And I encourage you to go follow them.

00:36:01.000 --> 00:36:03.380
They have a lot of followers, I believe, already right away.

00:36:03.600 --> 00:36:03.880
Let's see.

00:36:04.280 --> 00:36:07.460
Yeah, 9,000 followers, which that might not sound like a lot.

00:36:07.580 --> 00:36:09.140
But for Mastodon, that's a lot.

00:36:09.500 --> 00:36:11.300
So we can get them a few more today.

00:36:11.500 --> 00:36:11.940
Check that out.

00:36:12.160 --> 00:36:12.460
Yeah.

00:36:12.800 --> 00:36:13.580
It's like dog years.

00:36:14.400 --> 00:36:15.280
Yes, exactly.

00:36:15.600 --> 00:36:22.500
So now the post is updated saying, oh, they might actually come back because they originally said they're leaving Twitter.

00:36:22.880 --> 00:36:23.720
They're leaving ex-Twitter.

00:36:23.980 --> 00:36:25.120
But they actually might still use it.

00:36:25.460 --> 00:36:26.260
Nobody's really sure anymore.

00:36:26.800 --> 00:36:28.360
But at least they are on Faucet On.

00:36:28.480 --> 00:36:28.820
So that's cool.

00:36:28.900 --> 00:36:29.320
Check them out.

00:36:29.860 --> 00:36:29.920
Yeah.

00:36:30.120 --> 00:36:34.100
I have a feeling that there's a lot of like Twitter people that are, it's right only.

00:36:34.360 --> 00:36:35.300
Like I'm a right only.

00:36:35.440 --> 00:36:37.020
I've got a Twitter account, but it's right only.

00:36:37.100 --> 00:36:39.520
I check it like once a month or something.

00:36:40.180 --> 00:36:42.040
Yeah, mine's kind of like regular expressions as well.

00:36:42.200 --> 00:36:42.480
Right only.

00:36:43.960 --> 00:36:43.980
yeah

00:36:44.980 --> 00:36:45.200
so

00:36:45.600 --> 00:36:45.740
I

00:36:45.940 --> 00:36:46.940
I will

00:36:46.960 --> 00:36:47.260
I do

00:36:47.520 --> 00:36:48.540
people do send me messages there

00:36:48.800 --> 00:36:49.500
and I appreciate that

00:36:49.600 --> 00:36:50.320
and I go check them out

00:36:50.460 --> 00:36:50.660
but

00:36:50.940 --> 00:36:51.540
in terms of like

00:36:51.640 --> 00:36:52.320
having conversations

00:36:52.920 --> 00:36:53.080
yeah

00:36:53.620 --> 00:36:53.720
okay

00:36:54.220 --> 00:36:55.300
so that's one

00:36:55.320 --> 00:36:55.760
I have others

00:36:56.260 --> 00:36:57.420
big new announcement

00:36:57.480 --> 00:36:58.140
for a new course

00:36:58.560 --> 00:36:59.680
data science jumpstart

00:36:59.700 --> 00:37:00.480
with 10 projects

00:37:00.780 --> 00:37:01.720
this is awesome

00:37:02.240 --> 00:37:02.380
yeah

00:37:02.780 --> 00:37:03.940
a little over 3 hours

00:37:04.200 --> 00:37:05.420
put together by Matt Harrison

00:37:05.500 --> 00:37:06.300
who knows his

00:37:06.700 --> 00:37:08.000
his data science things

00:37:08.280 --> 00:37:08.580
so

00:37:08.780 --> 00:37:09.480
a lot of cool stuff

00:37:09.560 --> 00:37:10.480
that you can learn through here

00:37:10.680 --> 00:37:11.560
basically exploring

00:37:11.580 --> 00:37:20.300
10 different data sets like working with student CSV information Excel integration merging merging

00:37:20.600 --> 00:37:25.560
data across different data sets like an Airbnb data set example and so on and so on so if people

00:37:25.660 --> 00:37:30.840
want to check that out they can see the link in the show notes so that's a really really fun one

00:37:31.180 --> 00:37:36.640
definitely encourage you to check it out all right we talked a lot about AI's chat AI's ChatGPT etc

00:37:36.660 --> 00:37:36.880
et cetera.

00:37:37.420 --> 00:37:39.860
Have you played with GPT for all?

00:37:40.200 --> 00:37:45.020
No, I believe this might even be some Python going strong here.

00:37:45.020 --> 00:37:46.040
Let me double check really quick.

00:37:46.300 --> 00:37:46.380
Yeah.

00:37:46.700 --> 00:37:47.580
13% at least.

00:37:47.980 --> 00:37:54.120
So GPT for all is, kind of a ChatGPT interface, but it's open source.

00:37:54.380 --> 00:37:54.680
It's free.

00:37:54.920 --> 00:37:56.240
It runs on the three main platforms.

00:37:56.940 --> 00:38:00.940
Windows OS, since OS X or OS X, no it's macOS, but whatever.

00:38:01.600 --> 00:38:02.180
And Ubuntu.

00:38:02.940 --> 00:38:06.560
so you can get a get for those, three platforms.

00:38:06.900 --> 00:38:11.980
And basically it gives you a list of maybe eight or nine different models that you can

00:38:12.180 --> 00:38:17.820
download and run locally without sharing your data with anyone else, just run them locally.

00:38:18.220 --> 00:38:22.740
And you could also try out the different, like the llama models versus the OpenAI type

00:38:22.960 --> 00:38:23.600
models and others.

00:38:24.180 --> 00:38:29.160
So if you want like a local and free and pretty good, actually, I tried it out and it gave

00:38:29.160 --> 00:38:31.320
me some really good answers for a couple of questions.

00:38:32.200 --> 00:38:34.860
I use the wizard model, which it gives you the,

00:38:35.360 --> 00:38:37.080
like it says, hey, give me some bullet points about this

00:38:37.280 --> 00:38:38.600
or give me some ideas on this.

00:38:38.660 --> 00:38:39.920
And it will like give you the thing.

00:38:39.960 --> 00:38:41.280
Then it gives you, like says hash.

00:38:41.600 --> 00:38:42.660
Here's why I suggested that.

00:38:42.740 --> 00:38:44.800
It highlights this and it features this aspect.

00:38:45.220 --> 00:38:47.080
This other thing does it in this way.

00:38:47.120 --> 00:38:48.700
And here's why I chose that one.

00:38:48.800 --> 00:38:50.160
And it's pretty interesting.

00:38:51.100 --> 00:38:52.100
And open source and free.

00:38:52.280 --> 00:38:53.660
So, you know, easy to try.

00:38:54.380 --> 00:38:54.840
Let's see.

00:38:55.240 --> 00:38:56.320
That's the same one.

00:38:56.680 --> 00:38:59.220
Finally, Brian, my last extra is in.

00:38:59.640 --> 00:39:01.240
I already handed this at the beginning.

00:39:01.600 --> 00:39:06.340
but in the show notes I have an invite if you want to be on Fosstodon again there's like a thousand

00:39:06.540 --> 00:39:12.280
instances on Mastodon go crazy pick the one that's for you but if Fosstodon like the at PSF folks

00:39:12.700 --> 00:39:17.140
they're on Fosstodon you require it's requiring an invite now so I have an invite that is good until

00:39:17.340 --> 00:39:24.340
November 7th and you can go and click it and accept this if you long as you like the policies

00:39:24.720 --> 00:39:30.160
don't make us look bad be nice that's what it's about that's why it's invite only yeah and when

00:39:30.180 --> 00:39:31.040
Can you take advantage of that?

00:39:31.120 --> 00:39:34.240
Be sure to subscribe or follow all of us.

00:39:34.920 --> 00:39:35.460
Yeah, absolutely.

00:39:35.640 --> 00:39:35.920
Follow us.

00:39:36.340 --> 00:39:36.420
Cool.

00:39:36.900 --> 00:39:37.020
Nice.

00:39:38.460 --> 00:39:39.720
Are you done with your extras?

00:39:40.140 --> 00:39:40.760
I'm done with my extras.

00:39:40.800 --> 00:39:41.200
You got anything?

00:39:41.360 --> 00:39:41.460
Okay.

00:39:42.280 --> 00:39:45.640
We're talking about PyCon, and I want to plug local conferences.

00:39:45.980 --> 00:39:51.400
So when people are thinking about the footprint of traveling across the country or traveling to a different country,

00:39:52.160 --> 00:39:54.340
I like the idea of more local conferences.

00:39:55.080 --> 00:39:57.880
And I like that, like, Pie Cascades is great,

00:39:58.140 --> 00:40:04.000
and it travels between Vancouver and Seattle and in Portland.

00:40:04.280 --> 00:40:05.340
It's going to be in Seattle next.

00:40:06.140 --> 00:40:10.060
This article I'm highlighting is talking about Copenhagen,

00:40:10.500 --> 00:40:12.240
Django Day Copenhagen, which has already passed,

00:40:12.480 --> 00:40:13.320
so don't try to go there.

00:40:14.200 --> 00:40:17.740
But it's just basically talking about how maybe it's better,

00:40:17.820 --> 00:40:19.060
maybe it would be better to,

00:40:19.680 --> 00:40:22.260
instead of shipping the people around to see speakers,

00:40:22.520 --> 00:40:24.760
maybe we could just ship the speakers around to the people.

00:40:25.480 --> 00:40:26.560
and doing that.

00:40:27.160 --> 00:40:28.540
I actually think it'd be great

00:40:28.620 --> 00:40:29.680
to have more local conferences

00:40:30.300 --> 00:40:31.660
that have more sponsorships

00:40:31.820 --> 00:40:32.620
that actually help out

00:40:32.760 --> 00:40:34.060
with the travel for speakers.

00:40:34.320 --> 00:40:34.680
That'd be great.

00:40:35.020 --> 00:40:36.180
So that's one of my extras.

00:40:36.720 --> 00:40:37.660
Yay, local conferences.

00:40:38.200 --> 00:40:38.900
I wanted to highlight

00:40:39.000 --> 00:40:41.460
what I was doing at 11 o'clock on Tuesday.

00:40:41.940 --> 00:40:43.260
I was getting ready for Halloween.

00:40:43.980 --> 00:40:44.620
Oh, that's spooky.

00:40:44.920 --> 00:40:46.060
On Fosstodon,

00:40:46.060 --> 00:40:48.640
I've got some pictures of our decorations.

00:40:49.080 --> 00:40:50.000
So we're getting ready for that.

00:40:50.920 --> 00:40:51.720
Speaking of Fosstodon,

00:40:52.840 --> 00:40:53.960
something I saw today

00:40:53.980 --> 00:40:57.860
was this awesome crossword puzzle

00:40:58.460 --> 00:41:00.660
with hints in regular expression.

00:41:01.540 --> 00:41:02.400
No way.

00:41:03.280 --> 00:41:04.160
This is great.

00:41:05.480 --> 00:41:09.760
We'll got a link to this person refreshing apathy.

00:41:10.760 --> 00:41:13.900
Got it from a MIT mystery hunt puzzle index,

00:41:14.540 --> 00:41:17.260
which includes both the puzzle, a puzzle link,

00:41:18.700 --> 00:41:20.600
but also the answer sheet is there.

00:41:20.680 --> 00:41:24.900
So this is just insane as far as the crossword puzzle goes.

00:41:25.740 --> 00:41:26.880
And it's not words.

00:41:26.930 --> 00:41:27.840
So in several years when you solve it,

00:41:27.870 --> 00:41:29.080
you can check and see if you got it right.

00:41:29.260 --> 00:41:30.420
Yeah, but it's not words.

00:41:30.520 --> 00:41:31.120
It's just random.

00:41:31.580 --> 00:41:35.400
I'd like to see it have actual words be fun to do that.

00:41:35.700 --> 00:41:36.960
So those are my extras.

00:41:37.340 --> 00:41:37.640
Excellent.

00:41:38.659 --> 00:41:40.140
That crossword puzzle is nuts.

00:41:40.210 --> 00:41:42.880
It reminds me of 25-way rock, paper, scissor.

00:41:45.180 --> 00:41:45.420
Yeah.

00:41:45.740 --> 00:41:46.540
Have you seen that?

00:41:46.780 --> 00:41:47.120
It's amazing.

00:41:47.340 --> 00:41:48.240
Yeah, it's pretty good.

00:41:48.500 --> 00:41:48.680
Yeah.

00:41:49.020 --> 00:41:49.220
All right.

00:41:49.740 --> 00:41:50.460
You ready for a joke?

00:41:50.580 --> 00:41:50.920
I am.

00:41:51.350 --> 00:41:57.280
So this one, says when you search YouTube for days to fix a specific bug.

00:41:57.720 --> 00:41:58.120
Okay.

00:41:58.340 --> 00:42:02.060
You know, my, my slogan is you're never hardcore enough for YouTube.

00:42:02.300 --> 00:42:06.540
Like if you search, if you watch three videos on something like 50% of what it's

00:42:06.620 --> 00:42:08.560
going to show you the rest of the time is just that.

00:42:08.860 --> 00:42:10.820
And like, I was just trying to assemble my furniture.

00:42:11.000 --> 00:42:14.980
I'm not the world's biggest fan of like furniture construction.

00:42:15.230 --> 00:42:16.660
Like all YouTube things you are now.

00:42:16.880 --> 00:42:18.200
So it's kind of that version.

00:42:18.240 --> 00:42:21.140
Like when you search YouTube for days to fix a specific bug,

00:42:22.240 --> 00:42:23.820
once it starts the video,

00:42:23.890 --> 00:42:26.820
it suggests not everyone should code recommended for you.

00:42:29.420 --> 00:42:29.940
That's good.

00:42:33.300 --> 00:42:33.900
So bad.

00:42:35.000 --> 00:42:35.940
You don't want me to code?

00:42:36.580 --> 00:42:38.160
In eight minutes of 47 seconds,

00:42:38.270 --> 00:42:39.720
you should abandon all hope.

00:42:40.040 --> 00:42:40.540
Says the video.

00:42:40.880 --> 00:42:41.560
How long it is.

00:42:41.870 --> 00:42:43.540
I kind of want to watch that video now though.

00:42:44.110 --> 00:42:44.780
Just trying to find out.

00:42:44.850 --> 00:42:45.280
I do too.

00:42:46.080 --> 00:42:48.080
It's not everyone should code by polymatter,

00:42:48.140 --> 00:42:49.720
apparently is what it says in the screenshot.

00:42:50.100 --> 00:42:50.360
Yeah.

00:42:50.550 --> 00:42:51.880
And they've got a black checkmark.

00:42:52.320 --> 00:42:52.480
Yeah.

00:42:52.940 --> 00:42:53.140
Awesome.

00:42:53.700 --> 00:42:56.020
Well, thanks again for a wonderful episode.

00:42:56.760 --> 00:42:58.980
And thanks Scout APM for sponsoring.

00:42:59.480 --> 00:43:01.880
And thanks everybody for showing up and watching the show.

00:43:02.220 --> 00:43:02.780
Yeah, you bet.

00:43:02.890 --> 00:43:03.200
Bye everyone.

00:43:03.460 --> 00:43:03.540
Bye.