Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Hello and welcome to Python Bytes, where we
0:02
deliver Python news and headlines directly to your
0:04
earbuds. This is episode 362, recorded November 28th,
0:06
2023. I'm
0:11
Michael Kennedy. And I'm Brian Ocken. And this episode
0:13
is brought to you by Scout APM. We will
0:15
tell you more about them later, but please check
0:18
out what they're offering. It really helps support
0:20
the show. And if you want to connect with
0:22
us on the socials, the place we're all
0:24
hanging out at is mastodon,
0:26
fostodon.org specifically. I'm Adam
0:29
Kennedy. Brian is at Brian Ocken.
0:31
And the show is at Python Bytes. fostodon.org
0:33
is invite only. Of course, you can follow
0:35
us from any place on Mastodon. But if
0:37
you want to be part of it, just
0:39
shoot one of us a message. We can
0:41
send you an invite. Yep. Help you get over there to
0:43
hang out a little bit closer to home for us. And
0:46
finally, if you want to be part of the live
0:48
stream and see how the show is made, see
0:50
what we're doing, even the real mistakes
0:52
that we might edit out, check that
0:55
out PythonBytes.fm live, usually Tuesdays at 11pm.
0:58
And older videos are there as well. Let's kick
1:00
it off. What do you got? This is a gentle
1:03
ease back into the show. Over
1:06
the Thanksgiving break, I was thinking a lot about
1:08
kind of what I wanted to do for the
1:10
next year, starting to, you know, starting to think
1:13
about plans for how to, where
1:15
do I want to focus my time? And
1:17
I ran across this great post by Vadim.
1:22
Let's just say Vadim. Habits
1:25
of great software engineers.
1:27
And it's kind of,
1:29
there's a lot of great stuff
1:31
here. So also, nice index on
1:34
the right, which is cool. So
1:36
focusing beyond the code. So I'm not going to
1:39
go through all these. I'm going to go through,
1:41
there's like 12 or 13 listed, but
1:43
I'll go through a few of them. Focus
1:45
on the code. So I
1:47
don't know if I buy this, but he says, as a developer, you
1:49
code 20% of your time. You
1:52
should excel at coding nonetheless, but it won't be
1:54
enough to be great. I think I code more
1:56
than 20% of the time. I
1:58
would say too. Well, define. code, right?
2:00
Okay, so is coding, is that reading
2:02
code? Is that thinking about code? Is
2:05
that... Oh, the design part. Right. Or
2:07
is it actually I'm hitting keys on
2:09
keyboard? You know what I mean? Yeah,
2:11
that's true. Right? Because people say code
2:13
is read way more than it's written
2:16
and stuff, but I think for me, coding
2:18
is like the act of being in the
2:20
code and adding features or
2:22
evolving it, even if like I'm not keystroking
2:24
it at that moment. So, unclear,
2:27
but if that encompasses all,
2:29
then 20% is way too low agreed.
2:31
Okay. Well, I guess the point of
2:33
this, regardless of the percentage, is focusing
2:35
on the other parts of your job
2:37
also and focusing on,
2:40
you know, not just being a better software
2:42
engineer, but also... Well, being a better
2:44
software engineer encompasses more than just coding
2:47
well and knowing like knowing Python details
2:49
and things like that, like communication skills
2:51
and all that, design skills,
2:53
learning other, learning to read other people's code,
2:55
things like... Helping unblock your teammates who are
2:58
having a challenge. Instead of writing code yourself,
3:00
like I'm gonna help them get that problem
3:02
fixed or something, right? Like... Yeah. Yep.
3:05
All of a sudden. Well, and okay.
3:07
So, number two was efficiency and anti-fragility.
3:10
Not really a fan of the
3:12
anti-fragile word. I don't even really
3:14
know what it means, but I
3:16
guess... You get originally comes from Nassim
3:19
Talib and that whole philosophy, although I haven't
3:21
read a whole lot of that either. Anyway.
3:25
It's kind of about things that get better
3:27
the more they kind of get abused, right?
3:29
Like they sort of build up a resilience.
3:31
Well... I think it originally comes out of
3:34
like economics. Okay. Well, the next one is
3:36
one I really agree
3:38
with is the joy... Number three is the
3:40
joy of tinkering. Build projects, try out frameworks,
3:42
build stuff on the side, keeps
3:45
the spark alive. And
3:47
this is one I couldn't agree more.
3:50
It doesn't... For a while I was
3:52
often thinking about like what could I
3:54
build that I could actually release or
3:56
that I'd be proud of. That's great.
3:59
You could try... to at least do a side project
4:01
that tries to make money or something. But
4:04
if you just want to try out FastAPI,
4:06
for instance, just build something with FastAPI. Just
4:08
come up with a toy project and build
4:10
it and learn it. And it's fun. Even
4:12
if you never apply it to other stuff,
4:14
I've had so many times in my career
4:16
where I've had something that I tinkered with
4:19
just as a toy that suddenly I could
4:21
use. So I'm like, oh,
4:23
yeah, I've built wikis before and stuff like that.
4:26
Go ahead and do that for a
4:28
project. Or I've done
4:30
a flask gap on the side. So if I need
4:32
a flask gap at work, it's going to be pretty
4:34
easy. Things like that. Play
4:37
with toy projects. I say put that on top of
4:39
your list for 2024. More toy projects. I'll
4:43
go through the rest of these pretty
4:45
quick. Number four is knowing the why. Number
4:47
five, thinking and systems. Number
4:49
six, tech detox.
4:51
Recharging away for the
4:54
monitor. This makes you a better programmer.
4:56
Couldn't agree more. The
4:58
art of approximation. I didn't really know what this is
5:00
about. I didn't read this part.
5:02
Knowing important tech numbers. Anyway.
5:05
I actually want to cover that
5:07
as one of our items in
5:10
the future. There's a couple of hosts
5:13
or charts or whatever that somebody put up that
5:15
I think would be really interesting. So this is
5:17
like, what is the relative speed of L2 cache
5:20
versus RAM? RAM versus disk? What
5:22
is the cost of a CPU core
5:25
or a database operation on the
5:27
cloud, etc. But I
5:29
don't like some of the numbers there. I
5:31
think they're way skewed. So I want to come
5:33
up with my own table and then put them
5:35
both forward. So that's why I haven't covered it
5:37
yet. But that's what this is about, I think.
5:39
Okay. Well, what's funny is that the teaser at
5:41
the beginning of this
5:44
post says there's only eight, but there's more if
5:46
you read it. But there's a table of contents
5:48
on the right. So you could just look at
5:50
the table of contents. The last one, I
5:54
think, is the most important for me is
5:57
strong opinions loosely held. For
6:00
this, for me, this means that
6:03
I'm going to have a default approach to
6:05
test for a lot of problems and a
6:07
default way to do things. It just speeds
6:09
things up. It's like, if I don't care
6:12
about it, just do it quickly. You've got
6:14
an opinion how things are done. However, be
6:16
open-minded enough to when somebody approaches you and
6:18
says, hey, there's a better way to do
6:20
this, or keeping your eyes
6:22
open with the tinkering, trying new
6:25
ways to do things, be willing to
6:27
abandon your old, strong opinion and go,
6:29
oh, there's a better way. Cool. My
6:32
new opinion is this now. It pretty much
6:34
sums up our podcast. Yeah,
6:36
exactly. Nice
6:40
post thinking about
6:43
planning for your time allotment for
6:45
the upcoming year. Yeah. Lots
6:48
of feedback on this one. Jeff out
6:50
there says, tech numbers like LEET, 1337. Excuse
6:54
me. Yes. Those are
6:56
the important tech numbers. Those are the important ones. Yeah.
6:59
LEET, NOOB, all those things. And then Grant
7:01
following up on the anti-fragile says, number
7:03
two speaks more to reactor principles that
7:05
came about with the cloud. It could
7:07
be summed up as build with the
7:09
expectation that your K8 pods can be
7:11
nuked mid-task at any point. Yeah,
7:14
exactly. That you might just use
7:16
one VM, but it could die. But if
7:18
you know that it's always getting abused, you
7:20
would build failover and those types of things
7:22
into it, making it, hence, less fragile. I
7:24
think that's kind of that principle there. Yeah.
7:27
Okay. But also, if it's
7:29
a side project, if it's down once in a
7:32
while, it's fine. Yeah. It's
7:34
not a side project. Yeah. Right. Maybe
7:37
a habit of great software engineers. I don't know. I wonder how
7:39
many blogs run on Kubernetes. I
7:42
don't know what the answer is, but I bet too many. The answer is
7:44
too many. Too many. Too many
7:46
run on Kubernetes. Okay. Okay.
7:49
What do you got for us? I got
7:51
eight nines of time on my blog. Okay.
7:55
We probably do, Brian, because ours runs on a
7:57
CDN as a static file. Okay. That's
8:00
pretty good uptime, right? Yeah. And the database
8:02
doesn't need to be migrated for that business.
8:04
Does it? All right, moving on. We've covered
8:06
this enough. Let's talk about a new version
8:09
of Flask. So Flask obviously is a super
8:11
important web framework. Like everyone has heard of
8:13
Flask. It's kind of one of the two
8:15
main pillars that I would think of as
8:17
like the old guard pillars, right? There's Flask
8:20
and Django. And the debate for so many
8:22
years has been like, do you use Flask?
8:24
Do you use Django? What kind of web
8:26
developer are you? Well, Flask 3.0 was released
8:29
just a little while ago. That
8:31
three weeks ago, something like that. There's
8:33
also a 301 that is kind of
8:36
unreleased, but has like very, very minor
8:38
changes. So anyway, the changes for a
8:40
two to three release are not that
8:43
huge. Although I think the numbering probably
8:45
comes from this removed previously deprecated code
8:47
there. That's probably what pushed it from
8:49
a two to three rather than some
8:52
mega new feature. Yeah. Right.
8:54
Because it's like, hey, it's not
8:56
backwards compatible. Miguel Grinberg actually wrote
8:59
an interesting but controversial piece on
9:01
that. I'm not going to link to it, but
9:03
y'all can check that out. I just want to
9:05
cover the release here. But this actually this first
9:07
line, there's a lot of discussion about it, let's
9:09
say. Neutral there.
9:11
So some of the things that are interesting here though,
9:13
Brian, are not so much interesting because they're Flask. They're
9:15
just like, wait, what? You could do that? So
9:19
deprecated the dunder version attributes. So
9:21
frequently people will go to their
9:23
dunder init.py for their package and
9:25
put a dunder version global variable
9:27
and set it to a string
9:29
and then you can say, well,
9:31
what version is the thing? Well,
9:33
it's flask.dunder version is the version
9:35
and that's just a string, right?
9:38
Yeah. Yeah. So the idea is
9:40
that's deprecated. And now the
9:42
way you're supposed to get
9:44
the version of Flask is
9:46
using feature detection or with
9:49
importlib.medadata.version of quote flask,
9:51
which I had nothing like. Okay.
9:55
So cool that that might work, but
9:57
how in the world do you make
9:59
it possible? possible for a
10:01
package that comes out of it. If I wrote a
10:03
package and I wanted to say .version
10:05
of my package in import lib, how do
10:07
I put a number in there that makes
10:09
it the version, right? So do
10:12
I have it here? Yeah, basically you have
10:15
to go, if you use a pyproject.toml, at
10:17
least one way is, and you just set
10:19
the metadata category, set the version to something,
10:21
and that's that. Yeah. Okay. Yeah,
10:24
pretty cool. And so that's where that
10:26
value comes from when you say import
10:29
lib.meditated.version. Pretty cool. What's more
10:31
interesting is deprecated a global variable. How
10:33
do you duplicate a global variable? I
10:35
know how to duplicate a method, a
10:38
class, but a variable? But just delete
10:40
it. No, no, that's
10:42
removing it. You wanted to give a warning
10:44
when you access the variable. Hmm. Okay.
10:48
And the variable value is a string. Like,
10:50
okay, what? So I'm like, I got to
10:52
say that. So I went and I tracked
10:54
down the change log. I checked on the
10:56
PR that made this happen. I'm like, I
10:58
got to see the code. What is this? So
11:01
it says a deprecated dunder version. And
11:03
here you can see somewhere, you
11:05
can just see they literally, like
11:07
you said, they deleted the dunder
11:09
version variable, but they added a
11:12
function to the module called dunder
11:14
get adder. For some reason, I
11:16
thought that only applied to classes, but no, apparently modules. And
11:19
given that it comes in and it asks
11:21
for the version, it says
11:23
no. There's a warning
11:25
and then it calls the import
11:27
lib.version thing on itself. Interesting, huh?
11:29
Yeah, actually, this is a handy thing
11:31
to keep around. Yes, exactly. If
11:34
you're asking for a dunder version, it warns
11:36
and then it does the new thing. Otherwise,
11:38
it just says, no, we don't have one
11:40
of them. But yeah, that's wild, right? Yeah.
11:43
I love how dynamic Python is. It
11:45
was nuts. It was a global variable.
11:47
Now it's a function. Or a... How
11:49
it's a function call to a dunder
11:51
get adder method on the module. I
11:54
think I'm going to replace all
11:56
of my global function declarations as
11:58
get adder. abnormalities
14:00
faster and easier. It ties bottlenecks such
14:02
as memory leaks, slow database queries, and
14:04
background jobs, and of course the dreaded
14:06
n plus one quorum query problem, and
14:08
more directly to source code so that
14:10
you can spend less time debugging and
14:12
more time building. I don't know where
14:14
that fits in the 20% of your
14:17
code example, but I think this
14:19
kind of stuff counts too. You'll love Scout
14:21
because it's built for developers by developers, makes
14:23
it easy to get set up and deliver
14:26
insights in less than four minutes. Seriously, you
14:28
could be done by the time you're done
14:30
listening to this episode or live stream. So
14:32
start your free trial and get instant insights
14:34
today. Visit pythonbytes.fm slash scout.
14:36
Please use our link because it really
14:39
does support the show. If they
14:41
don't know you're coming from us, then they
14:43
might not sponsor us anymore. So please, pythonbytes.fm
14:45
slash scout to check it out. Thank you
14:48
to Scout APM for supporting Python Bytes. Off
14:50
to you, Brian. What's next? Well, next we've
14:52
got something fun. On
14:55
real Python, there's a post Build
14:59
Conway's Game of Life with Python from
15:02
Leodanos Ramos. And
15:04
I just couldn't resist because I think I
15:06
have a feeling that maybe there's some new,
15:08
like younger software folks that maybe aren't familiar
15:10
with Game of Life. You've got to live
15:12
a while to know about the Game of
15:14
Life. Well,
15:17
I hope everybody knows about it, but it's
15:19
a it's kind of fun. And so this
15:21
is just a fairly good walkthrough of if
15:23
you were gonna build Game of Life. And
15:25
it's one of the cool things about it
15:28
is built in on the command line. It's
15:31
using ArcParse, but also Curses. And
15:34
you've got a Curses version in the terminal
15:36
of Game of Life. And how cool
15:38
is that? It's pretty, pretty fun.
15:40
Looking through, I've seen some rather
15:43
awful implementations of Game of
15:45
Life over the years. Like
15:47
a little bit of Pearl Golf going on
15:49
sometimes. But the this
15:52
one looks pretty good. It walks
15:54
through setting up an entire
15:56
project using PyProject.toml, which
15:58
is great. Then talking
16:00
about the different splitting up
16:02
the implementation into a grid
16:04
in one module, the patterns
16:07
in another, different views, and
16:09
then the CLI in another. Just
16:12
the split up looks good for modularizing
16:15
the application. A
16:20
lot of times people want to play like build
16:22
games or something and this is a game that
16:24
you don't actually have to play, it just plays
16:26
itself. I
16:29
just wanted to highlight it, it's just a
16:31
fun walkthrough of implementing Game of Life.
16:34
Yeah, you already talked about these little projects
16:36
in your first thing, right? Here's a cool
16:38
little project that you can play around with
16:40
and I think games are a good way
16:42
to get into coding, not Doom, Half-Life, whatever.
16:44
I've been playing a ton of small ants,
16:46
by the way, also not a good way
16:48
to get into programming. It seems like something
16:50
that would take forever, but small ants is
16:52
awesome. However, I think this is like little
16:55
games, they're easy, you don't have to have
16:57
a huge amount of domain knowledge, you don't
16:59
have to know about databases and connection strings
17:01
and how do I embed the password and
17:03
how do I make it run, all that,
17:05
just have fun. Yeah, and one
17:08
of the fun things about this is
17:10
the hiding of, so it has a
17:12
life grid. So one of the, of
17:14
this project, almost all of the project
17:16
is going to be transferable to other
17:18
stuff, except for the cursors part. I'm
17:20
probably not going to write a whole bunch
17:22
of cursors applications, but that's the same thing
17:24
with most, a lot of games. Unless you
17:26
become a game developer, a lot of the
17:29
game development, it's using some sort of
17:32
user interface stuff that you're probably not going to
17:34
use for a lot of projects, unless you go
17:36
into using games, writing more games, which is great.
17:38
But having that isolated off to one
17:41
little part was actually, it's
17:43
pretty kind of nice to be able to set that.
17:46
Anyway, good implementation. Yeah, it is cool
17:48
to see how you might create that
17:50
little UI as well. I mean, usually
17:52
people are doing Unreal Engine, Unity,
17:55
Pygame, Arcade, one of these is like
17:57
quite, you quite deep down in those.
18:00
frameworks. Yeah. And it's just a little bit.
18:02
One of the things I wasn't sure about
18:04
tonight, so I didn't see any disclaimer at
18:06
the top. I did not run through this,
18:08
but was if I
18:10
didn't know that you could use curses
18:12
on Windows, for instance, so is this
18:14
a maybe somebody in the
18:16
audience knows if you could. Yeah, maybe someone
18:18
knows. It might be because of Windows terminal
18:20
versus command prompts. Oh, okay. Yeah, possibly.
18:23
But that's a guess. Zero
18:25
knowledge. Alright, enough of this fun, Brian. Let's
18:28
get down to business. Okay. All there's business
18:30
that is. This comes from Marco Gorelli.
18:32
And this is just a simple plugin
18:34
for polars. Now, if you don't know
18:37
polars, polars is like and as with
18:39
two major differences, it has a lazy
18:41
fluent API. So you can kind of
18:43
chain commands together and it doesn't actually
18:46
execute until you kind of work through
18:48
them, kind of generators and those sorts
18:50
of things. And it's written in Rust
18:52
to be super, super fast. So this
18:54
is a plugin for polars. And the
18:57
idea is it lets you answer questions
18:59
like how many business days between
19:01
now and then. So if like my
19:03
my payment system says you
19:05
get paid net 30, well, or you
19:07
get paid after 10 business days, but
19:10
one of those days is the 4th
19:12
of July and then there's the weekend
19:14
and then there's like how many days,
19:16
you know, well, calendar math is already
19:18
gnarly. If you want
19:20
to like throw in skipping weekends, skipping holidays,
19:23
even worse, right? So super simple.
19:26
This thing, the extension itself is written
19:28
in Rust. So it's kind of compatible
19:30
with polars. I believe polars has actually
19:32
a Rust API as well as a
19:34
Python API. So maybe this is available
19:36
there. I have zero information about that.
19:38
All you do is you
19:40
can even define your own holidays and weekends
19:43
like every Wednesday, I'm taking it off, whatever.
19:45
So the way it works is
19:47
you just go import polars
19:50
and then polars business somewhere down
19:53
here. You can go to grab
19:55
a column, say offset by and
19:58
just say five B.D. and
20:01
it'll skip by, you know, it'll go
20:03
through all the columns, figure out what
20:05
their dates are, and using vector math,
20:07
convert those to five days ahead by
20:09
however they offset. Like each one individually,
20:11
that's pretty awesome, right? Yeah, fun. Yeah,
20:13
I don't know how that works. That
20:16
sounds complicated. But yeah, so
20:18
you can put in like, what are your weekend days?
20:20
What are your, there's,
20:22
you know, obviously Saturday and Sunday is pretty
20:24
standard. But like, we have restaurants around here
20:26
that are closed on Sunday and Monday, they're
20:29
open on Friday and Saturday. So if
20:31
you're trying to like do business math
20:33
around, like that kind of schedule, like you
20:36
could just say Sunday, Monday for your weekend
20:38
and you're good to go. Nice. Yeah, like,
20:40
one of the things I was thinking about
20:42
was like, education wise, schools
20:44
often have like tons of, so
20:47
many times, so much time off.
20:49
Yeah, like in like, teacher non
20:51
work days, which are whatever
20:54
it's, the teachers are still working. It's just
20:56
the students aren't working. They should call it
20:58
student non work days. Yeah,
21:01
like my daughter is like, Oh, I don't have
21:03
school this week. No school this week. Why? Like,
21:05
oh, it's parent teacher conference. Oh,
21:07
my okay. Yeah, my daughter even calls,
21:10
they call it, her friends
21:12
call it, like no, no
21:14
school November. Yes, exactly. Exactly.
21:17
Anyway, so that would be good
21:19
for that. Or lots
21:21
of other businesses have wacky holidays.
21:24
So people can check this out. It's, it's,
21:26
you know, easy to understand, easy to adopt if it's
21:28
relevant to you. But it seems pretty cool. Yeah. All
21:31
right, Brian, how extra do you feel
21:33
today? I just have one extra. And
21:35
that is last week, you get what
21:38
I got convinced to do a Black
21:40
Friday sale for the complete
21:42
PyTest course. And it is one
21:45
word Black Friday, all caps, just
21:47
that and you get 50% off
21:49
of off the course.
21:51
So check it out. I'm in a
21:54
in over the break, I did a whole bunch on it. So
21:56
I've up to what chapter 13. Oh, chapter
21:58
three. Chapter 13 was
22:00
great. I wanted to talk about that a little bit.
22:02
Chapter 13 was on debugging. And
22:05
instead of just artificially adding errors
22:07
to the code, I decided to
22:09
do a test-driven development
22:12
little thing of writing a couple
22:14
tests first, doing the implementation, and
22:16
resisting the urge to refactor during
22:18
the implementation. And then once everything
22:20
was green, going back and doing
22:22
a refactoring. And then
22:25
explored... I enjoyed learning
22:27
this anyway. So it's
22:29
exploring testing, debugging,
22:32
using PyTest plus PDB for
22:34
the Python debugger. One
22:37
of the cool things about learning PDB is
22:39
you can use it with talks. So you
22:41
can debug an individual environment if maybe your
22:43
code's only failing on 3.8 or 3.9 or
22:45
something. So anyway,
22:47
that's still up. And that's my
22:49
extra. How about you? Very cool.
22:52
Yeah, congrats on getting Chapter 13
22:54
up. And I think debugging 13,
22:56
I think stuff could
22:58
go out. That's perfect. As long as you didn't release a
23:00
chapter on Friday the 13th, everything will be fine.
23:02
Right. I got a
23:05
few things. First, there was like a really
23:07
heartfelt message from Kenneth Wright that he posted
23:09
on X Twitter. And so I thought maybe
23:11
I'd just read that because it's, you know,
23:13
just kind of remind everyone of, you know,
23:15
how nice the community is and why we
23:17
all like to be here. You up for
23:19
that, Brian? Yeah. All right. Kenneth's
23:21
boos on things like requests and many other
23:23
projects says, Dear Python community, I hope this
23:25
letter finds you well and thriving in your
23:27
various endeavors. Python, my name is Kenneth Wright.
23:29
So I've been part of this vibrant community
23:31
for quite some time, contributing projects like Quest,
23:33
Pip, Envy, and among others. Today I
23:35
write to you not just as a fellow
23:37
Python enthusiast, but as someone who, like many
23:40
of you, have faced moments of uncertainty and
23:42
feared my journey with programming, it's a path
23:44
that while rewarding is often fraught with challenges
23:46
and moments of self-doubt. I'm reaching out to
23:48
share these feelings because I believe in the
23:50
power of our community to support and uplift
23:52
each other. In recent times, I found myself
23:55
grappling with a sense of fear, fear of
23:57
not living up to expectations, fear of the
23:59
unknown, or ever-evolving field and perhaps fear not
24:01
being able to contribute as significantly as I
24:03
have in the past. These are feelings
24:05
I'm sure many can relate to. But in
24:07
these times of vulnerability that I'm reminded
24:09
of the strength and compassion of the
24:11
Python community, that we're a group that
24:13
not only shares a love for programming
24:15
but also cares for the well-being of
24:17
its members, your support, encouragement, and willingness
24:19
to share knowledge and experiences have always
24:21
been a source of strength for me.
24:23
So reaching out to ask for your
24:25
understanding and continued support, not just for
24:27
me but for everyone in the community
24:30
facing similar challenges. It goes on. I'll let people read it,
24:32
link to it in the show notes. But I just think
24:34
that's kind of a nice message and I wanted
24:36
to amplify it a bit for Kenneth. Yeah. I
24:39
mean, obviously, he's someone who people, I know
24:41
many people look up to as like, wow,
24:43
look how much he's accomplished. And so if
24:45
you're feeling uncertain or like you're not
24:47
contributing enough or whatever, like if Kenneth also feels
24:49
that way, like, you know, maybe these are just
24:51
feelings people have and not so much things that
24:53
should stop you. All right. So
24:55
that's one. Last time I talked about Python
24:57
3.13, 0, alpha 1 being out. Well,
25:01
this time, since it was so close to when
25:03
3.2 or alpha 2 was coming out, alpha 2
25:05
is here as well. So I just wanted to
25:07
link over to that. Really
25:09
many of the features that they talk about, what's
25:12
coming in 3.13 really just has to
25:14
do with like deprecations and very concrete stuff.
25:16
But I know there's the Faster C Python
25:19
initiative making a lot of changes, although they're
25:21
not even at all mentioned here.
25:23
Just like we remove many deprecated things and
25:25
many of the dead batteries that we talked about
25:27
like Telnet lib, go find another way to
25:29
implement your Telnet client instead of the
25:31
standard library and so on. So
25:33
alpha 3 will be scheduled for
25:36
December 19th. So we can
25:38
round out our year with a third Python
25:40
3.13 alpha release. So
25:43
that's nice and quick. And finally,
25:45
as you touched on as well, thank you
25:47
to all the people who participated in the
25:49
Black Friday thing. We raised
25:51
a bunch of money for charity, which
25:53
is awesome. So really happy to have
25:55
done that. So just a bit of
25:57
a heartfelt thanks on my end for
25:59
people. All right, ready for a joke?
26:01
Yeah. The joke is called select star and
26:03
I think we can all relate to it.
26:06
Okay, so select star being theoretically a bad
26:08
thing. Can I get this image all the
26:10
way over? No, not really. Okay,
26:13
so the question here says, it's
26:15
a person. I think this is
26:17
Will Smith from iRobot kind of
26:19
type thing. Anyway, it doesn't really
26:21
matter. The developer says, can AI
26:23
really write efficient SQL queries? And
26:26
AI looks back at the developers. Can you? Maybe
26:29
not. And
26:32
of course, the title is select star, which is
26:34
like barring joins and other crazy group by stuff,
26:36
like pretty much like the worst thing you can
26:39
do for performance. Like give me everything. I don't
26:41
care if I use it, right? I know there's
26:43
like a 10 hell of a byte per row
26:45
description. I don't need that. Just
26:47
give it to me anyway. I think
26:50
this is like the ideal use case
26:52
for using an AI is optimizing SQL
26:54
queries. Yeah. Yeah.
26:56
Anyway, I know I wouldn't trust. I don't
26:58
trust myself with production SQL. So
27:02
can AI really write efficient SQL
27:04
queries? Can you? Okay,
27:07
well, see some agreement in the audience out there. It's
27:09
all very nice. I want to
27:11
add a just a funny thing that my
27:13
wife shared with me yesterday. And
27:17
as many of you know, or maybe you
27:19
don't know, I used to have short
27:21
hair and over the pandemic grew it
27:23
out. And now I have longish hair.
27:27
I would say that counts as long. And
27:30
so often it's pulled back,
27:32
but it's often not also. So I
27:34
wanted to share this funny thing that
27:36
my wife shared. So I admire those
27:39
with hairstyles. I don't have a hairstyle.
27:41
I have hair. Most
27:43
days it has zero caterpillars in it. That's
27:45
as good as it gets. So
27:49
girl women with like long flowing hair.
27:53
Honestly, the length is about the same as yours
27:55
right now. So that's pretty awesome. And apparently this
27:57
was that came up
27:59
by. cocks. So that's funny. Anyway.
28:01
Yeah, very good. Well, also a very
28:03
good episode. Good to be back with
28:05
you and with everyone. Yeah, thank you. Yeah,
28:07
you bet. Thanks everyone for listening. See you
28:09
later.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More