Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to
your earbuds. This is episode 359, recorded November 2nd. And I am Brian Okken.
And I'm Michael Kennedy.
This episode is sponsored by Scout APM. Listen to more about them a little later in the show.
Also, you can connect with us, Michael, Brian, and Python, Python Bytes. So we're at mkennedy,
at brianauken, and at pythonbytes, all on fostadon.org. 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. So, Michael, what do you got for us?
Well, I have a quick follow-up to your fostadon-mastadon statement real quick before we dive into the first
item, which is very exciting. I know a lot of people will be excited to hear about it. But
fostadon.org, the instance of mastadon that many of us Python people are on, has gone invite only.
Of course, you don't need to be on fostadon to participate in talking with us or interact.
That's the whole point of mastadon. However, a couple of people have said, hey, I'd really like
to be on fostadon and around you guys in that community, but it's invite only. I have a short-lived
invite code for the listeners who promptly listen to our show if they want to join that later.
Cool.
Yeah, because it's invite only now.
Okay.
All right. On to the first item. PyCon. Woo-hoo. We all love PyCon, right?
Yeah.
And this is one of the things I look forward to most in the year in terms of events. More
on that in a minute. But this is going to be, it's time for it to be in Pittsburgh, Pennsylvania.
So you can see there's a little airplane with a banner flying by on the website that's saying
it's going to be in Pittsburgh. So, and there's a snake on a building. Only once it's not really the
Python snake though. It's eye is like more, you're droppy, not circular. Anyway, it's, there's a snake there by the community for the community. All excellent.
And it's going to be a little later this year. I think it was April last year. It's going to be May 15th to 23rd in Pittsburgh, Pennsylvania tutorials. What was really nice this year is they actually have.
Uh, the sub schedule time, like prominently listed. I think the last time it was like, if you dug in, you could find what days the actual main constant conference was, but I'm not really sure if I want to do the sprints. When are they that you sort, you know, like it just had the whole broad range. So this is like the main conferences, May 17 to 19. Two days before that are tutorials and so on. Okay. So it was in, Salt Lake Sydney, the last two years previous prior to that, it was in Cleveland, Ohio.
I do have a minor beef with the location here, like nothing against Pittsburgh. Pittsburgh is awesome. You know, I would love to go to Pittsburgh and meet people, but, the, the goal of kind of moving PyCon around.
So that different people, at least within the, within North America, I've had a chance to have PyCon sometimes near them seems like, well, it's been two years in Cleveland.
You know, Pittsburgh is only a two hour drive from Cleveland. So it feels like it's kind of back in the same place again for, you know, now four years.
And I would love to see it move more, more locations, right? Like maybe, maybe it could be in Mississippi or in somewhere like really, you know, different than, a sort of, short mid upper Midwest, you know, like just outside of the East coast there.
On the other hand, East coast, that's kind of the densest part of the U S so it does give a lot of people a chance to go to it.
Are you calling people on the East coast dense?
Yes. They like to live in dense places.
Okay.
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.
And that's how we like it. All of us in Oregon. Don't, don't, don't move to Oregon. It's horrible here.
Yeah. It's horrible. It's rain. It's really cold and rainy. I haven't seen the sun for six years, Brian. So people shouldn't come here.
Terrible. Yeah.
Okay. But the super excited, the call for proposals is open. There's like a bunch of instructions under this little permanent, collapse menu, but you can go to speaking and it says,
proposing a talk, proposing a tutorial, a Sharla posters, et cetera. All this is good. One other thing I did want to highlight. And this, this makes me honestly really disappointed. So I hope people don't take this the wrong way.
health and safety guidelines. Okay. So we're nice people, it says, but us nice people are sick and diseased. Many of us, and masks are going to be 100% required and 100% enforced.
And I don't know, you and I, we were both there last year, Brian. I kind of felt like, you know, from the CDC guidelines and from just the general society, like kind of people have vaccines, at least as options. I've had, I just talked two weeks ago last week about how I got my fifth COVID vaccine and I had kind of a crappy weekend from it, but right.
I, I, I, I, I've seen other conferences, like I think, the European ones often do whatever the local, the local rules are. and I think that's what it ought to be. If you, if the local rules are open, then I mean, I, I guess my thoughts are if people are really concerned about it.
And I, I legitimately understand if you're caring for somebody that's, immunocompromised or if you are, you're going to be concerned, but your entire route to this place, like the airplane and everything, there's going to be full, a bunch of people not wearing masks. And so, I think max mass optional seems to make sense to me, but I, I think it, yeah, I agree with you a hundred percent. And I think this, so let me just take a step back last year.
I feel like the experience of PyCon was quite degraded. I had a great time. I really appreciated the spending the time with people I got to and meeting the people that I got to, but the ability to meet people, people and have conversations on like loud expo floor halls.
It's hard to hear them.
Cause they were talking like this, you know?
Um, okay.
And so, you want to interview people there?
Like people are like, why are you taking your mask off?
Like, well, I can't do a podcast with a mask on.
It's not going to come out.
Right.
And so for me, 80% of the reason I go to PyCon is to meet people, to network, to record podcasts.
I did like the, the seven different company series of, the startup row and the awesome episode with Sebastian Ramirez and Samuel Colvin.
And, and those types of things like, that's why I go.
And I feel like the mass stuff takes away a lot of it.
I'm a hundred percent supportive.
If people want to wear a mask, it doesn't bother me.
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-mass people, like you can go over there.
But I think, I know there's a bunch of people.
I know there are people who are, are very still freaked out about COVID, very freaked out about traveling.
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.
We just got to get back to it.
So yeah, I, the reason I care more than it just bothers me personally is I think this is not going to be healthy for Python, the PSF in the longterm.
I think it's going to cut a lot of people I spoke to are like, I don't want to last year.
They're like, I, I, I'm not sure if I'm going next year.
I, if it's like this again, I'm, this is not great.
The attendance I looked, do I have it pulled up here?
No.
Uh, but you can look on Wikipedia and I linked to it in the show notes.
The prior years, it was like 3000 something, you know, 3,200 year over year, over year was the attendance.
And it was 2000 last year.
Right.
Yeah.
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.
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.
And so when policies affect who's going, who's not that also, yeah, you found it right there.
Yeah.
I think people have to really consider like, okay, is there some sort of middle ground?
So I don't know the way it is right now, I'm probably not going to PyCon, which makes me a little bummed out, but it was just, I was so wiped out and worn out trying to have all those conversations, loud spaces through masks, et cetera.
So we'll see, I'm not a hundred percent sure, but, if you look at the, if you look at the final thing here, it says there will be no rolling back.
Um, this is the, the most lenient version of the health and safety standards we're going to have.
The only possibility is that we will have more restrictions potentially by the time the conference comes up.
And for me, I don't know, it's makes me sad.
I'm not, I'm not anti-mask.
I'm not anti-vax as I already pointed out.
I wore mask happily when there was an emergency, but you know, COVID is not going away.
Like is PyCon for the rest of our lives going to be this restrictive?
Seems not like the best path, but I'm not in charge and no one asked me, Brian.
Um, well, so anyway, this is, this is my thoughts.
I'm excited that PyCon's here.
I hope people who want to go.
submit their talks.
There's an online option, but there's a very small chance with this level of you must wear a mask.
You must stay away from people that it's going to be valuable for me to go.
And I'm probably not going to.
Okay.
I haven't decided myself yet.
So yeah.
All right.
Well, I'm sure this will come back.
It's in, eight months from now, seven months from now.
Okay.
Um, for people wanting to, to submit a talk, the, again, the call for proposals is open
and it is open until the, end of the day anywhere.
So, on December 18th.
So you got from now or December 18th, but don't wait until the 17th submit early because, these
poor people that are reviewing, reviewing all of the proposals.
Um, I think it's good to get feedback early and start getting things in early.
So yeah, I think they even, they have traditionally had like submission meant as a mentor, the right
word, but people to help you, if you were doing your first time submission 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.
Okay.
Yeah.
Yep.
Cool.
Awesome.
Over to you.
Well, we covered, the Ruff formatter in September, I believe.
And it's only been a month later, a month and a half.
Um, but, the Ruff formatter is now we, we covered it when it was alpha.
It was like, you can play with it.
Um, and now, it is, I'll scroll to the bottom.
Um, they say, it is, production ready.
So, the formatter is, is in a, is still beta released, but they consider it production
ready and I've played with it enough.
It's pretty awesome.
So, what are some of the highlights?
Uh, it is.
So the black form or black formatter, the Ruff formatter is mostly like black, but faster.
So it's how much faster.
It's like 30 times faster.
Um, and then there's other, and blacks already pretty darn fast.
There's like a YAPF, which I never use, but apparently it's a hundred times faster than
YAPF.
Um, and, very compatible.
It's very compatible with black, but also they list some of the differences.
So we've got, was it, oh, this is a different, different one.
So there's a link it's on this, this document also of, of what is different.
So there's, differences from black and, and it's so it, it's very thoughtful to go through.
And none of these I would disagree with.
Um, so, some, some reasonable changes from black, but how just having a formatter for your
entire team is what was really important.
I think.
Uh, so I also really liked that least recently, rough has, supported.
So this is not part of the formatter, but that rough is built, brought in a lot more flake
eight support and, and, and flake eight extensions.
And then also I sort and PI upgrade are part of rough now also, but the Ruff format is just
kind of like black, but faster.
So why not?
Um, anyway, there, there's some, some cool stuff about it.
It's more, a little more configurable.
There's a couple extra configurations you can do.
Um, I think that you covered that, not too long ago.
Um, yeah, I covered just the string side of things, which is nice, but yeah, there's,
it's not a massively configurable, but yeah, there's a few areas that people seem to really,
really care about changing.
Yeah.
We're not changing.
I also, since it's been wide, widely adopted, we also have extensions for VS Code
and, and, and PyCharm that you can end IntelliJ PyCharm that you can, you can add on
so that you can have the formatting done just right in your editor, which is great.
So, yeah.
And you can do things like when you, I think in the PyCharm one, if you just hit the reformat
code, I think it might even use Ruff format.
Not entirely sure, but I think you can make Ruff format be the,
you know, format my code for me.
Yeah.
Um, so I'm, I'm pretty excited about this.
Um, I wasn't going to roll it out to the team with when it is in alpha, but I'm,
if they, if they say it's good, I'm, I'm good with it.
Um, we, I trust Charlie, and the end team to Charlie and team now.
So it's pretty exciting.
Um, also kind of in this, the, the, the, the article we're linking to, he talks about,
um, why they, they wanted to do a formatter, but also, it's kind of
cool.
He talks about the Astral tools tool chain.
So the company is called Astral now, and they talk about, how this is the first non linting,
uh, you know, application that they've done.
So they are, they were planning on branching out and doing more things around Python tool
chains, but, faster with building it with the rest.
So, this is, this is the first, so I I'm excited to see where they go with this.
Mm-hmm.
So excellent.
Yeah.
So, you know, they go on and on about how much faster it is.
And that's, it's, it's interesting to me because the faster aspect is kind of, it's like
a sideshow amazing, but not necessarily why I would pick it.
I know if you had 5 million lines of Python.
Yeah.
It's super, super matters, but most people don't.
Right.
Um, like running across 350 Python files that make up talk by then training, for example,
website and APIs and stuff.
And it literally is instant, which is like mind boggling.
You say format this, that applies all these rules, all these changes.
And it's just like done 27 files changed 324 not changed or whatever it says.
So it's awesome that it's fast.
I mean, if it were too slow, I would maybe not use it, but to me, it's the configurability,
right?
The, like you can set the line length, you can set the string style if it really matters
to you.
Um, 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, 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, the last time I talked about this, I talked about how using the single quote
is, you know, significantly fewer characters potentially when you're, you're typing.
And if you have RSI, like you always think about like keystrokes and all that kind of
stuff.
So, yeah.
So for me, that's, that's, that's what counts.
Yeah.
I, for the, the string side, I haven't talked about this for a while, but there are,
there are some applications where you're using a lot of double quotes and you cannot use single
quotes in, in the thing that you're using in the string that you're passing.
So, if you're using a lot of double quotes and stuff and I have a, so I have an application
where the API itself uses a lot of, a lot of, we have to pass in double quotes into
the, the API.
So all of the strings that were passed setting up is single quoting makes way more sense.
So, yeah.
And I also double checked one of the, one of the reasons I use double quotes is if I'm going
to say, and it's the way it should be in your code where you needed an apostrophe, right.
Or possessiveness or whatever.
Uh, so then you could have a single quote, but then backslash escape the single quote.
But if you put double quotes, there's no need to escape it.
And I check that if that, if it would go from double quotes and a back to a quote, what over
to needing the escaped backslash rough, won't change it.
So it'll be single quote, single quote, double quotes.
It's fun.
Double quote and keep going.
I think that black does the same thing.
I don't think that I'll have to check, but I don't think black will change it if there's
an embedded one.
So yeah.
Yeah.
I'm not sure I wasn't necessarily, I don't know at all whether it will, but just thinking
like if you, if you say, please use single quotes, it's not like it starts putting escapes everywhere.
Yeah.
It was always getting that.
Yeah.
Um, whereas you can't do that in black.
Um, Marco out there also points out that rough has a plugin to help upgrade from numpy one
to two, which is pretty awesome.
Okay.
Didn't know that.
Oh yeah.
That's cool.
Yeah.
That's really cool.
That's pretty, pretty great actually.
So cool.
Sure is.
All right.
Well, what's next, Brian?
Well, we'd like to thank our sponsor.
So this episode is brought to you by scout APM.
Are you tired of spending hours trying to find the root cause of issues impacting performance?
Then you owe it to yourself to check out our sponsor this week.
Scout APM.
Scout APM is a leading application performance monitoring tool that helps you identify and
solve performance abnormalities faster and easier.
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.
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.
And the best part, scout's pricing is affordable and straightforward.
Only pay for the data you use.
No hidden overage fees or per seat pricing.
Start your free trial and get in instant insights today.
Visit pythonbytes.fm/scout.
Please use our link because that truly supports the show.
Thank you to scout APM for supporting Python bytes.
Yeah, that's awesome.
Thank you, scout.
And being able to look at your code and see like, okay, here's, these are the parts of my API or
wherever else you're running that are slow or fast.
And it's in the data layer right now, like awesome stuff.
So very, very cool service.
Now, a couple of bits of feedback from Kim here.
One is having been on the talk reviewing side several times of smaller regional conferences,
picons, indeed, please submit your stuff as early as possible.
It makes it better for the reviewers as well as you can get feedback sooner.
And confirmation black will leave strings alone that have one type of quote inside of the other,
which is cool as it should.
Yeah.
Thanks, Kim.
All right.
What have we got for the next one?
This is so big, Brian.
Is it really big?
It's really big.
This is what I'm, I'm, the title I put, I know where is it written, but in our show notes,
the title of the section will be Gil minus minus semicolon.
Because it's CPython and Python has the Gil, but the Python Steering Council has now formally
accepted the removal of the Gil in Python.
Oh, cool.
That is massive, right?
Well, I thought it was, I guess it is massive, but I thought it was already decided.
But was it, oh, it was kind of like tentative that maybe or something?
I don't know.
There was, I think pretty, I think there was some pretty serious opposition to doing it
because it has massive effects on all the C extensions, which, you know, why did we have
this whole two to three drama?
We had it because a bunch of the libraries that people use, right?
When you say Python, you might mean the language or you might mean plus the 400, 500,000 other
libraries you can use the ecosystem and the ecosystem would say, well, this thing that
my library depends on doesn't support Python three.
So I have to stay on Python two.
And that went on insanely long.
The same similar type of deal would be here on anything that has like a C layer that has
any form of concern of concurrency or being used in a library that might now use it concurrently
when it wasn't designed for it.
So it's, it is pretty significant knock on effects.
Yeah.
Okay.
So this is PEP 703.
It has officially been accepted.
Sort of.
In short, this comes from, comes from Hugo on Mastodon.
So again, follows on Mastodon.
That's where a lot of the action is.
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.
And that we can roll back any change that turns out to be too disruptive, which includes
potentially a hundred percent rollback of PEP 703.
So a hundred percent rejection and reversal if necessary, however unlikely or desirable,
undesirable we expect that to be.
Okay.
So there's a couple of things to note, like go over to the discuss here.
Actually, I had it already pulled up, didn't I?
Go to the, we'll just go to the PEP.
Now, this is by Sam Gross.
And I've talked several times about how excellent, I think, some of the work that he's been doing,
because it's not just the GIL stuff, but a lot of the kind of sender and speed stuff
has been inspired by Sam Gross and the folks over there.
So it says CPython's global interpreter lock, the GIL prevents multiple threads from executing
Python code at the same time.
You can have all the threads you like in Python.
Only one of them will execute a Python instruction, instruction code, like what you get out from
when you say disassemble thing, right?
Like load adder or add to list, that kind of thing.
So this PEP, to be very clear, this is a very small subset that only affects people that ask it to affect them.
This, it proposes that adding a build, not runtime, but a compilation for the CPython runtime
that will let Python code run without the global interpreter lock and the necessary changes to make this possible.
So when you compile it, if you pass --disable GIL, then you'll get a special output of Python
that doesn't have the GIL.
That's pretty wild, isn't it?
Yeah.
I'm hoping that we'll like mere humans that don't want to recompile it can get a distro somewhere with it.
Yeah.
I'm sure there'll be a like click here to alternative downloads, get the concurrent Python or something like that.
Right.
But the fact that it's not a, not even a runtime flag, but a com, a compile time flag, it's pretty wild.
So let's see, there's a couple of things worth covering here.
It's a really long, it's a really long PEP.
So let's see.
So the GIL effects Python library usability.
And this is one of the things that's pretty interesting.
It says, look, there's a lot of libraries.
Like they, they just go on and on about machine learning libraries and the concurrency machine learning libraries need.
Get the strong sense that Sam Gill and people he's working with do stuff with machine learning libraries and Python.
And that's their main motivation here.
But obviously it has broader implications.
But the example here is PyTorch exposes a multi-processing based API called DataLower for building data input pipelines.
It uses fork on Linux because it's better, et cetera, et cetera.
And basically, if you're going to do the weird tricks, you got to do underneath the covers in Python to make the async stuff truly parallel.
As in, I have 10 cores on my machine.
I want to use them all with threads or something like that.
Or however, it, the, the top level API that you interact with is kind of janky.
It has to take into account in certain things like objects can't be shared across multi-processing processes, right?
If it was threads, they could be, but they're not.
So they can't be, et cetera.
It says accessing GPUs within a data loader or worker quickly leads out of memory errors because context, like unlike threads within a process and all these different things.
Right.
So basically one of the motivations is allow people building libraries to build cleaner, more self-contained, i.e. like sharing objects within a process better.
Right.
Not just, I want better performance, which is obvious.
More stuff about, about this.
So yeah, you can look through it.
Like I said, it's, it's quite the, quite the deal.
But one of the things that's interesting, like I, as I touched on a lot of the things in Cinder actually makes sense here.
So this immortalization stuff about objects that have to have reference counting.
Because remember the reference counting is what the GIL is about.
The GIL is all about memory, not concurrency.
It doesn't care about concurrency.
It just needs the memory management to not be concurrent.
So, well, that's a bit of a problem if you have more than one thread.
So it's about limiting, it's about managing memory stuff, but not making that not concurrent to make that better.
So a lot of the changes here are like, well, how can we allow the memory stuff to be concurrent basically?
So one of them is immortalized objects.
So for example, true, false, none, seven, none of those need to have a reference count because they just get created at the start of the process.
There's only one of them, right?
There's no reason to like, oh, true's gone now.
No one's using true.
Oh, true's back.
There's just the one true.
There's just one true.
It's a singleton.
And so all of those are what are now going to become what are called immortal objects.
And pi increment and pi decrement, so basically adding and removing the number of users of that variable or object is a no op now, right?
Okay.
And that's good for you and me when we pass true and false around, even if we're not doing it concurrently, it's just less instructions to like use these structures, right?
And it's more shared memory, all those kinds of things.
They also are adding this thing called biased reference counting, which allows basically it says, look, we, the problem before was we had like one number that said number of references to this object.
And when somebody wants to change it, you could either lock the thread, take a lock and lock it every time per object, which is kind of crazy.
Or you just don't allow anybody to change it more than one at a time.
Hence the GIL.
So this one says, well, let's change it so that on the thread that created the object, it behaves the same, right?
There's no locks, none of that kind of stuff.
It just works on it, references it directly.
But if it's shared, there's like a secondary count, like others, other references or something called bias reference counting, where those are managed in a thread safe way.
Because most of the time objects and things are not shared across threads, even in a multi-threaded app, the little temporary variables and loop variables, those are still just on the one thread, right?
Stuff that shares way less.
So the reference counting is changing to make that work.
And what else?
There's a bunch of pseudocode telling you this is some intense stuff.
A bunch of things about memory management, how that works, garbage collection, et cetera, et cetera.
So I'm going to stop.
People can dive into it.
But this is the big deal.
I think some of these changes will find their way just into Python, period, like the immortal objects.
Yeah.
There's no reason for that not to be in there.
That would just be useful for everyone.
But other ones like this bias reference counting, maybe be slower, maybe take more memory.
So maybe you don't want that, for example.
Yeah, maybe.
What do you think?
Oh, I think that removing the GIL will be a sea change in Python.
Sorry.
You're right.
I think you're right.
I think it's exciting.
I think, you know, I've said this a bunch of times.
Like, I haven't even looked recently.
I'm pretty sure this computer here has, I think, 10 cores that I'm on right now.
And if I run Python code, as hard as it can possibly go, it's 10%.
Right?
And that's just, it would be better if that wasn't completely baked into the runtime.
I actually hope that it's just kind of a non-event.
Like, it's a just, we just don't have a GIL anymore.
People can stop complaining about that.
And I don't care if things get a little, I mean, I like things to go faster.
I don't care if it goes a little slower because of this.
It's going to go faster eventually anyway.
Wait till the next round of CPUs coming out.
Right.
It's the next faster CPython release.
Yeah.
Yeah, as well.
Yeah.
And then also just having people in Python being able to get used to doing more asynchronous and threaded things.
I think that's a good thing for the language.
So, yeah, I'm excited.
But a big part of me, I understand the going slow and we don't want to break everybody.
But part of me was like, just, oh, just do it.
And we'll clean up the mess afterwards.
Yeah.
I understand the caution.
Well, if they get it as a compilation flag, it's nothing there to say that, oh, you couldn't possibly make that the way we compile Python that gets distributed in a few versions.
Right.
But eventually that won't be the case.
Eventually we're going to try to get rid of that.
If it all goes well in a couple of versions later or something, the default will be the no-gil version or something with my guess.
And there'll be a flag to say to add the GIL if you really need it still for a while.
And then they'll work.
Yep.
Excellent.
Anyway.
I agree.
We'll see where it goes.
There was just this thread on Mastodon, which you were copied on.
I don't know if you saw it today.
But asking, what is Python 3.14 going to be called?
Of course.
It's going to be the symbol Python because it's 3.14, right?
It's so incredible.
So maybe in Python, it'll be the default.
You never know.
Yeah.
You have to pause and do the I thing.
Python.
Exactly.
Yeah.
It's going to be fun to have.
That episode is going to be nonstop when it's time to talk about the upcoming release of Python.
Yeah.
The other follow-on is like trying to guess when the release of 3.14.15 will come out.
Like that'll be maybe a couple years after.
It'll be like a security release or something.
Yeah.
So.
Oh, well.
It'll be good.
Speaking of.
I don't know.
Know what I was speaking of.
But I want to cover why the why the Django admin is so ugly.
I didn't say it was ugly.
Vince Salvino says it's ugly.
So you're going to get mail.
No, Vince will.
Anyway, I've noticed this before and kind of I understand it now, but I remember trying.
So I'm doing a Django project now.
I remember jumping into Django like years ago.
And I was surprised when I jumped in again and saw that the admin kind of looks the same as it did a long time ago.
And it was kind of, you know, there's been some minor changes and stuff.
But, okay, this is actually a great article.
Why is the Django admin ugly?
There's some great quotes in here.
I'm going to jump down to them.
The Django admin is not ugly.
Rather, no effort was made to make it beautiful.
A beautiful end user tool.
It looks like a developer made it.
Oh, okay.
I understand.
And that's from Ken Whitesell.
Another one, the admin's recommended use is limited to an organization's internal management tool.
It's not intended for building your entire front end around.
So that's basically the gist of this.
Also, the Django admin was built for Phil, one of my favorite quotes.
This is from Jacob Kaplan Moss.
Phil being the, what?
Phil was the Phil Cothen?
Then editor of Lawrence.com.
Yeah.
Because the history of Django is it's around like newspaper publishing.
And so it's for, basically it's a database front end for people that are adminning a site.
It's not intended for end user stuff.
So I'm going to jump down.
There was apparently a quote from 0.9 days of admin.
It's not your app.
And the gist of it, where am I going to find it?
It's from, comes from Curtis Maloney.
It says, encouraging people to build their own management interface and treat the admin as a DB admin tool has saved a lot of people pain.
The effort to customize it grows far faster than the payoffs.
So the gist of it is, it's intentionally not that pretty because they don't want you to intentionally try to make it pretty to expose it to end users.
It's supposed to be ugly.
It's not ugly.
It's just not supposed to be pretty.
Chris also says, it's meant to be ugly.
Yeah.
Anyway, I appreciate the honesty of like, yeah, we know it looks like that, but it works.
It's like the Craigslist of admin interfaces.
Oh, it's fancy for Craigslist.
Yeah.
Anyway, good write-up, Vince.
So thanks.
It is.
And I think it's also pretty interesting to remind people like, you know, really, it's meant for people running the website, not something that should be user-facing.
Well, yeah, and even that, like if you're, you wouldn't, you'd have another interface for like the writers writing stuff.
But if there was like a quick like typo or something like that, somebody can just hop in and change the database.
So, yeah.
And I've appreciated it.
There's been a lot of things that I've put together that having the admin interface there is better than going right into the database, you know, using SQL to change stuff.
And often I don't have any user-facing admin.
It's just showing the data that's stored in there.
So, anyway, it's fine.
Yeah.
Blaze out there suggests maybe like using Textual to create a TUI admin.
That'll do it.
Yeah, let's replace it with something.
Yeah.
I'm not going to say ugly.
You definitely won't get regular users to fire up an SSH session and TUI and do it.
No, yeah.
But I'm waiting for somebody to build like, because Textual can build, Textual can have web interfaces now too.
Actually, yeah.
So, you could do like a skin on top of the Django admin and have it be a Textual-based thing.
That'd be fun.
Yeah.
Indeed.
Waiting for that.
All right.
That's our items.
Do you have any extras for us?
I'm feeling extra today.
I do.
Okay.
Let's see.
First of all, this is a two points in time sort of thing.
Andy McKay on Mastodon says, what was it before?
It said the PSF, as in at the PSF, no longer is going to use X Twitter.
I've, you know, so many places are saying X.
The place, you know, formerly known as Twitter.
Like, what an insanely big fumble with branding, like after six months that people can't just say the name.
Like, people say Meta.
People know what they're talking about.
They don't have, they don't say X, you know, the thing that used to be Twitter.
So, I propose we just call it X Twitter.
Because a lot of us are not on X Twitter as much.
And it has X, and it also tells you it's Twitter.
So, anyway.
How about Zitter?
Like, just take off the TW, just be a Zitter.
Yeah, there you go.
So, the big news, really the reason I bring this up is the, at the PSF is now on Facedon.org.
So, therefore on Mastodon in general.
Nice.
And I encourage you to go follow them.
They have a lot of followers, I believe, already right away.
Let's see.
Yeah, 9,000 followers.
Which, that might not sound like a lot.
But for Mastodon, that's a lot.
So, we can get them a few more today.
Check that out.
Yeah.
That's like dark years.
Yes, exactly.
So, now the post is updated saying, oh, they might actually come back.
Because they originally said they're leaving Twitter.
They're leaving X Twitter.
But they actually might still use it.
Nobody's really sure anymore.
But at least they are on Facedon.
So, that's cool.
Check them out.
Yeah?
I have a feeling that there's a lot of, like, Twitter people that are, it's write-only.
Like, I'm a write-only.
I've got a Twitter account, but it's write-only.
I don't, I check it, like, once a month or something.
Yeah, mine's kind of like regular expressions as well.
Write-only.
Yeah.
So, I will, I do, people do send me messages there.
And I appreciate that.
And I go check them out.
But in terms of, like, having conversations.
Yeah.
Okay.
So, that's one.
I have others.
Big new announcement for a new course.
Data Science Jumpstart with 10 Projects.
Ooh.
This is awesome.
Yeah.
A little over three hours put together by Matt Harrison, who knows his data science things.
So, a lot of cool stuff that you can learn through here.
Basically exploring 10 different data sets.
Like working with student CSV information.
Excel integration.
Merging.
Merging data across different data sets.
Like an Airbnb data set example.
And so on and so on.
So, if people want to check that out, they can see the link in the show notes.
So, that's a really, really fun one.
Definitely encourage you to check it out.
All right.
We've talked a lot about AIs, chat AIs, ChatGPT, et cetera, et cetera.
Have you played with GPT for all?
No.
I believe this might even be some Python going strong here.
Let me double check really quick.
Yeah.
13% at least.
So, GPT for all is kind of a ChatGPT interface, but it's open source.
It's free.
It runs on the three main platforms.
Windows OS.
It says OS X or OS X.
No, it's macOS, but whatever.
And Ubuntu.
So, you can get for those three platforms.
And basically, it gives you a list of maybe eight or nine different models that you can download
and run locally without sharing your data with anyone else.
Just run them locally.
And you could also try out the different, like, the LLAMA models versus the open AI type models
and others.
So, if you want, like, a local and free and pretty good, actually.
I tried it out and it gave me some really good answers for a couple of questions.
I use the wizard model, which it gives you the, like, it says, hey, give me some bullet
points about this or give me some ideas on this.
And it will, like, give you the thing.
Then it gives you, like, says hash.
Here's why I suggested that.
It highlights this and it features this aspect.
This other thing does it in this way.
And here's why I chose that one.
And it's pretty interesting.
Nice.
And open source and free.
So, you know, easy to try.
Cool.
Let's see.
That's the same one.
Finally, Brian, my last extra is in.
I already hinted at this at the beginning.
But in the show notes, I have an invite.
If you want to be on Fostadon.
Again, there's like a thousand instances on Mastodon.
Go crazy.
Pick the one that's for you.
But if Fostadon, like the at PSF folks, they're on Fostadon.
It's requiring an invite now.
So, I have an invite that is good until November 7th.
And you can go and click it and accept this.
As long as you like the policies.
Don't make us look bad.
Be nice.
That's what it's about.
That's why it's invite only.
Yeah.
And when you take advantage of that, be sure to subscribe or follow all of us.
Yeah, absolutely.
Follow us.
Cool.
Nice.
Are you done with your extras?
I'm done with my extras.
You got anything?
Okay.
We're talking about PyCon and I want to plug local conferences.
So, when people are thinking about the footprint of traveling across the country or traveling to a different country, I like the idea of more local conferences.
And I like that PyCascades is great and it travels between Vancouver and Seattle and in Portland.
It's going to be in Seattle next.
This article I'm highlighting is talking about Copenhagen, Django Day Copenhagen, which has already passed.
So, don't try to go there.
But it's just basically talking about how maybe it's better.
Maybe it would be better to instead of shipping the people around to see speakers, maybe we could just ship the speakers around to the people and doing that.
I actually think it'd be great to have more local conferences that have more sponsorships that actually help out with the travel for speakers.
That'd be great.
So, that's one of my extras.
Yay, local conferences.
I wanted to highlight what I was doing at 11 o'clock on Tuesday.
I was getting ready for Halloween.
Oh, that's spooky.
On Fostadon, I've got some pictures of our decorations.
So, we're getting ready for that.
Speaking of Fostadon, something I saw today was this awesome crossword puzzle.
Wow.
Hints in regular expression.
No way.
This is great.
Well, I got a link to this person, refreshing apathy.
Got it from a MIT Mystery Hunt Puzzle Index, which includes both the puzzle, a puzzle link, but also the answer sheet is there.
So, this is just insane as far as a crossword puzzle goes.
And it's not words.
So, in seven or eight years when you solve it, you can check and see if you got it right.
Yeah, but it's not words.
It's just random.
I'd like to see it have actual words be fun to do that.
So, those are my extras.
Excellent.
That crossword puzzle is nuts.
It reminds me of 25-way rock, paper, scissor.
Yeah.
Have you seen that?
It's amazing.
Yeah, it's pretty good.
Yeah.
All right.
You ready for a joke?
I am.
So, this one says, when you search YouTube for days to fix a specific bug.
Okay.
You know, my, my slogan is you're never hardcore enough for YouTube.
Like if you search, if you watch three videos on something like 50% of what it's going to show
you the rest of the time is just that.
And like, I was just trying to assemble my furniture.
I'm not the world's biggest fan of like furniture construction.
Like all YouTube things you are now.
So, this is kind of that version.
Like when you search YouTube for days to fix a specific bug.
Once it starts, the video it suggests.
Not everyone should code.
I recommend it for you.
That's good.
So bad.
You don't want me to code?
In eight minutes and 47 seconds, you should abandon all hope.
Says the video.
It's how long it is.
I kind of want to watch that video now though.
Just trying to find out.
I know.
I do too.
It's not everyone should code by polymatter apparently is what it says in the screenshot.
Yeah.
And they've got a black check mark.
Yeah.
Awesome.
Well, thanks again for a wonderful episode and thanks Scout APM for sponsoring.
And thanks everybody for showing up and watching the show.
Yeah.
You bet.