Podchaser Logo
Home
#362: You can deprecate a global variable?

#362: You can deprecate a global variable?

Released Tuesday, 28th November 2023
Good episode? Give it some love!
#362: You can deprecate a global variable?

#362: You can deprecate a global variable?

#362: You can deprecate a global variable?

#362: You can deprecate a global variable?

Tuesday, 28th November 2023
Good episode? Give it some love!
Rate Episode

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.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features