WEBVTT

00:00:00.020 --> 00:00:04.620
<v Michael Kennedy>Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.380 --> 00:00:07.600
<v Michael Kennedy>This is episode 500,

00:00:08.240 --> 00:00:09.980
<v Michael Kennedy>recorded October 13th,

00:00:10.260 --> 00:00:11.160
<v Michael Kennedy>2026.

00:00:11.540 --> 00:00:12.560
<v Michael Kennedy>I'm Michael Kennedy.

00:00:12.960 --> 00:00:13.860
<v Calvin Hendryx-Parker>And I'm Calvin Hendryx-Parker.

00:00:14.300 --> 00:00:15.120
<v Nick Muoh>I'm Nick Muoh.

00:00:15.480 --> 00:00:16.059
<v Carol Willing>I'm Brett Cannon.

00:00:16.420 --> 00:00:19.800
<v Carol Willing>I'm Carol Willing, and I sometimes pretend I'm Brett Cannon.

00:00:20.140 --> 00:00:21.660
<v Calvin Hendryx-Parker>And I have no problems being Carol either,

00:00:21.820 --> 00:00:22.420
<v Calvin Hendryx-Parker>so there you go.

00:00:22.660 --> 00:00:22.940
<v Michael Kennedy>Everyone,

00:00:23.160 --> 00:00:25.000
<v Michael Kennedy>thank you so much for being here for this special episode.

00:00:25.700 --> 00:00:26.580
<v Michael Kennedy>Sign up to the newsletter,

00:00:26.880 --> 00:00:29.800
<v Michael Kennedy>social links, all that kind of stuff is at the top of the show notes.

00:00:29.980 --> 00:00:31.740
<v Michael Kennedy>So let's just go ahead and kick this off.

00:00:31.980 --> 00:00:34.560
<v Michael Kennedy>We've got a really awesome, almost 10 years.

00:00:34.650 --> 00:00:36.200
<v Michael Kennedy>I don't know if this is exactly 10 years or not,

00:00:36.380 --> 00:00:37.560
<v Michael Kennedy>but almost 10 years.

00:00:37.740 --> 00:00:40.420
<v Michael Kennedy>Certainly episode 500 is quite a thing.

00:00:40.760 --> 00:00:42.400
<v Michael Kennedy>So Python Bytes has been around a long time.

00:00:42.680 --> 00:00:45.620
<v Michael Kennedy>All of y'all have been here before in various ways.

00:00:46.180 --> 00:00:49.940
<v Michael Kennedy>The one big missing component here, the person we're missing is Brian Okken.

00:00:50.420 --> 00:00:51.320
<v Michael Kennedy>But don't worry,

00:00:51.700 --> 00:00:52.500
<v Michael Kennedy>Brian was supposed to be here.

00:00:52.640 --> 00:00:53.120
<v Michael Kennedy>Something came up,

00:00:53.320 --> 00:00:53.640
<v Michael Kennedy>couldn't make it.

00:00:53.780 --> 00:00:57.900
<v Michael Kennedy>So Calvin and I had a quick chat with him before and we'll splice that in.

00:00:57.980 --> 00:00:59.960
<v Michael Kennedy>So we're going to be hearing that in just a little bit.

00:01:00.500 --> 00:01:00.680
<v Michael Kennedy>Welcome,

00:01:00.920 --> 00:01:01.000
<v Michael Kennedy>everyone.

00:01:01.360 --> 00:01:03.240
<v Michael Kennedy>Thank you for taking the time to celebrate this milestone.

00:01:03.640 --> 00:01:03.880
<v Michael Kennedy>Calvin,

00:01:04.420 --> 00:01:05.680
<v Michael Kennedy>thanks for being here to keep it going.

00:01:06.040 --> 00:01:06.380
<v Calvin Hendryx-Parker>Love it.

00:01:06.480 --> 00:01:08.100
<v Calvin Hendryx-Parker>I'm glad to be the new co-host.

00:01:08.220 --> 00:01:10.580
<v Calvin Hendryx-Parker>And I'm excited for this crew for the 500 episode.

00:01:11.060 --> 00:01:14.880
<v Brett Cannon>And congratulations to all of you for getting us all the way to here.

00:01:15.260 --> 00:01:16.680
<v Michael Kennedy>Thanks for calling us old, Brent.

00:01:16.780 --> 00:01:17.240
<v Michael Kennedy>Appreciate it.

00:01:17.920 --> 00:01:18.820
<v Michael Kennedy>No, I really do appreciate it.

00:01:18.820 --> 00:01:19.420
<v Michael Kennedy>I'm just kidding, man.

00:01:19.420 --> 00:01:21.960
<v Brett Cannon>A person who's been doing Python was probably the, I think,

00:01:22.180 --> 00:01:25.160
<v Brett Cannon>at least officially the longest maybe on this call.

00:01:25.160 --> 00:01:26.440
<v Brett Cannon>I don't know, Caroline, I can duke it out.

00:01:27.100 --> 00:01:28.780
<v Calvin Hendryx-Parker>2000 when I started using Python.

00:01:29.240 --> 00:01:29.340
<v Brett Cannon>Oh,

00:01:29.540 --> 00:01:29.740
<v Brett Cannon>all right.

00:01:29.960 --> 00:01:30.420
<v Brett Cannon>Calvin wins.

00:01:30.860 --> 00:01:31.040
<v Carol Willing>No,

00:01:31.260 --> 00:01:31.860
<v Carol Willing>go Calvin.

00:01:32.460 --> 00:01:33.000
<v Carol Willing>That's an accomplishment.

00:01:33.020 --> 00:01:33.180
<v Carol Willing>Wait,

00:01:33.400 --> 00:01:33.480
<v Carol Willing>no.

00:01:33.840 --> 00:01:34.500
<v Brett Cannon>Win in 2000.

00:01:34.600 --> 00:01:35.720
<v Brett Cannon>I started in 2000 as well.

00:01:36.040 --> 00:01:41.080
<v Calvin Hendryx-Parker>So it would have been early 2000, so probably like a February or March.

00:01:41.560 --> 00:01:41.980
<v Brett Cannon>You beat me.

00:01:42.140 --> 00:01:42.760
<v Brett Cannon>I started in fall.

00:01:43.180 --> 00:01:43.360
<v Calvin Hendryx-Parker>Okay.

00:01:44.660 --> 00:01:44.980
<v Michael Kennedy>Wow.

00:01:45.120 --> 00:01:45.360
<v Michael Kennedy>All right.

00:01:45.520 --> 00:01:46.500
<v Michael Kennedy>Wow, that's crazy.

00:01:46.540 --> 00:01:48.080
<v Calvin Hendryx-Parker>Now we've established the pecking order.

00:01:48.260 --> 00:01:51.340
<v Calvin Hendryx-Parker>I'm sure I sit above Brett for most things.

00:01:52.280 --> 00:01:53.300
<v Calvin Hendryx-Parker>I'm not in the Python world.

00:01:53.760 --> 00:01:54.060
<v Michael Kennedy>Amazing.

00:01:54.600 --> 00:01:57.280
<v Michael Kennedy>Calvin, I was just thinking as I was getting ready for this show,

00:01:57.460 --> 00:01:59.160
<v Michael Kennedy>we're on almost month

00:01:59.440 --> 00:01:59.620
<v Michael Kennedy>four,

00:02:00.010 --> 00:02:02.640
<v Michael Kennedy>if not past it, of you and I hosting the show together.

00:02:02.670 --> 00:02:03.580
<v Michael Kennedy>It feels like we just started,

00:02:03.800 --> 00:02:04.720
<v Michael Kennedy>but thanks for being here as well.

00:02:04.760 --> 00:02:05.220
<v Calvin Hendryx-Parker>It's been great.

00:02:05.370 --> 00:02:07.000
<v Calvin Hendryx-Parker>I really enjoyed jumping in.

00:02:07.160 --> 00:02:11.760
<v Calvin Hendryx-Parker>And this has been kind of a passion for me, a future dream that I thought would never

00:02:11.830 --> 00:02:12.140
<v Calvin Hendryx-Parker>come true.

00:02:12.210 --> 00:02:12.760
<v Calvin Hendryx-Parker>And here I am.

00:02:12.930 --> 00:02:13.320
<v Calvin Hendryx-Parker>I love it.

00:02:13.480 --> 00:02:13.800
<v Calvin Hendryx-Parker>Thank you, Michael.

00:02:14.260 --> 00:02:15.860
<v Michael Kennedy>Yeah, it's awesome to be here with you as well.

00:02:16.420 --> 00:02:16.740
<v Michael Kennedy>And now,

00:02:16.920 --> 00:02:17.520
<v Michael Kennedy>like I said before,

00:02:17.800 --> 00:02:19.900
<v Michael Kennedy>Brian wasn't able to join us in real time,

00:02:20.180 --> 00:02:21.400
<v Michael Kennedy>but Calvin and I

00:02:21.340 --> 00:02:24.860
<v Michael Kennedy>got the chance to speak with him beforehand to make sure he was part of the show.

00:02:25.200 --> 00:02:25.740
<v Michael Kennedy>Let's have

00:02:25.880 --> 00:02:26.940
<v Michael Kennedy>that conversation with Brian.

00:02:27.660 --> 00:02:28.260
<v Calvin Hendryx-Parker>Oh my goodness.

00:02:28.500 --> 00:02:30.920
<v Calvin Hendryx-Parker>It is Brian Okken. Thank you for joining us for the

00:02:31.020 --> 00:02:31.600
<v Calvin Hendryx-Parker>500 episode.

00:02:32.000 --> 00:02:32.960
<v Brian Okken>Blast from the past.

00:02:33.280 --> 00:02:34.400
<v Michael Kennedy>Brian Okken. Yeah,

00:02:34.620 --> 00:02:34.780
<v Michael Kennedy>man.

00:02:35.060 --> 00:02:36.080
<v Michael Kennedy>It's definitely a blast from the past.

00:02:36.080 --> 00:02:37.080
<v Michael Kennedy>It's good to have you back in the show.

00:02:37.480 --> 00:02:37.780
<v Brian Okken>500.

00:02:38.040 --> 00:02:39.060
<v Brian Okken>That's a big number,

00:02:39.220 --> 00:02:39.320
<v Brian Okken>man.

00:02:39.480 --> 00:02:40.740
<v Calvin Hendryx-Parker>And a lot's happened

00:02:40.900 --> 00:02:42.260
<v Calvin Hendryx-Parker>since you left.

00:02:42.480 --> 00:02:43.420
<v Calvin Hendryx-Parker>You published a book.

00:02:43.640 --> 00:02:44.360
<v Brian Okken>I did.

00:02:44.580 --> 00:02:46.200
<v Brian Okken>It's right there.

00:02:46.380 --> 00:02:46.520
<v Calvin Hendryx-Parker>Yes,

00:02:46.700 --> 00:02:47.120
<v Calvin Hendryx-Parker>it is.

00:02:47.460 --> 00:02:48.060
<v Brian Okken>Lean TDD.

00:02:48.280 --> 00:02:48.959
<v Michael Kennedy>We have the

00:02:48.980 --> 00:02:56.060
<v Michael Kennedy>number one lean tdd author of for the pipe for the python bytes list and it may be the biggest

00:02:56.340 --> 00:03:00.960
<v Brian Okken>new release of test driven development book in august of last of this year i don't know

00:03:02.820 --> 00:03:07.720
<v Michael Kennedy>yes very very no no honestly it's it's a very good book and you and i we just got back from

00:03:08.080 --> 00:03:12.920
<v Michael Kennedy>hanging out in san francisco together of all the things we ironically just randomly stayed at the

00:03:13.060 --> 00:03:18.940
<v Brian Okken>same hotel for yeah it was it was actually kind of surreal we spent so michael and i um live in

00:03:18.960 --> 00:03:20.200
<v Brian Okken>or near Portland.

00:03:20.600 --> 00:03:23.700
<v Brian Okken>And we usually see each other at conferences somewhere else.

00:03:24.960 --> 00:03:25.700
<v Michael Kennedy>You know what it is?

00:03:25.840 --> 00:03:26.560
<v Michael Kennedy>It's so weird.

00:03:26.740 --> 00:03:27.940
<v Michael Kennedy>I have so many friends like that.

00:03:28.100 --> 00:03:30.300
<v Michael Kennedy>And it's because you don't have family.

00:03:30.510 --> 00:03:31.320
<v Michael Kennedy>You don't have the kids.

00:03:31.390 --> 00:03:32.640
<v Michael Kennedy>You don't have all this, you know,

00:03:32.890 --> 00:03:34.060
<v Michael Kennedy>you could just kind of hang out and do whatever.

00:03:34.640 --> 00:03:35.360
<v Michael Kennedy>Conferences are awesome.

00:03:35.530 --> 00:03:36.640
<v Michael Kennedy>I think conferences are awesome.

00:03:36.940 --> 00:03:39.200
<v Calvin Hendryx-Parker>I mean, that's how I met most of you all

00:03:39.370 --> 00:03:41.280
<v Calvin Hendryx-Parker>is because of going to great Python conferences.

00:03:42.180 --> 00:03:42.360
<v Brian Okken>Yeah.

00:03:42.660 --> 00:03:43.340
<v Brian Okken>And Calvin,

00:03:43.760 --> 00:03:43.840
<v Brian Okken>yeah,

00:03:44.140 --> 00:03:45.260
<v Brian Okken>that Python party,

00:03:45.540 --> 00:03:45.680
<v Brian Okken>man,

00:03:45.690 --> 00:03:47.400
<v Brian Okken>it was the most epic party I've ever been to.

00:03:47.620 --> 00:03:48.520
<v Brian Okken>So it was good.

00:03:48.760 --> 00:03:54.060
<v Calvin Hendryx-Parker>which one you're talking you're talking about select city yeah that was a really good one yeah

00:03:54.310 --> 00:03:58.260
<v Calvin Hendryx-Parker>the one that took over the top of the top of the bit the top of the top of the video

00:03:59.060 --> 00:04:05.860
<v Brian Okken>no it was good plus i met um like on his name the brown bag guy um oh chris williams yeah yeah chris

00:04:05.940 --> 00:04:09.900
<v Calvin Hendryx-Parker>williams was there i mean we had charlie marsh there we had brett actually who's on the show

00:04:10.180 --> 00:04:15.460
<v Brian Okken>was there so yeah he was really good yeah yeah and all and all those a lot of a lot of people

00:04:15.480 --> 00:04:22.180
<v Brian Okken>had just started their um like startups that are going fantastic yeah yeah that was the rust wave

00:04:22.620 --> 00:04:28.300
<v Brian Okken>we haven't really seen the ai wave party yet yeah it's the it no the ai wave is waving people

00:04:28.500 --> 00:04:34.400
<v Brian Okken>goodbye when they get laid off because of it no well you know what seriously though we were just

00:04:34.540 --> 00:04:39.600
<v Michael Kennedy>both in san francisco were you blown away at how many billboards were about ai that was weird things

00:04:39.660 --> 00:04:45.180
<v Michael Kennedy>it was like going into a like a sci-fi futuristic movie or something it was well like because there

00:04:45.420 --> 00:04:50.500
<v Brian Okken>wasn't anything else there was it took over the like i'm not sure i'm i mean i'm glad there weren't

00:04:50.560 --> 00:04:57.580
<v Brian Okken>like cigarette billboards and alcohol billboards and and or like right you know the dispensary

00:04:57.780 --> 00:05:05.460
<v Brian Okken>billboards divorce lawyers but having it all be like targeted towards stuff that uh just as i i

00:05:05.460 --> 00:05:11.260
<v Brian Okken>still think it's a small percentage um uh ai is changing a lot but it's um it is sort of it's a

00:05:11.480 --> 00:05:16.960
<v Brian Okken>kind of a middle upper middle class and higher sort of a phenomenon i don't i don't know if it's

00:05:17.120 --> 00:05:23.740
<v Brian Okken>affecting everybody really other than it's taken over your search window anyway um yeah i i had a

00:05:23.960 --> 00:05:28.120
<v Michael Kennedy>airport i had a ride to the airport i don't know maybe 25 minutes or something like that i mean

00:05:28.260 --> 00:05:31.560
<v Michael Kennedy>in san francisco it could be three hours or it could be 10 minutes depending on the traffic but

00:05:31.580 --> 00:05:32.980
<v Michael Kennedy>It was, I think, 25 minutes.

00:05:33.260 --> 00:05:35.080
<v Michael Kennedy>And I think it was full of billboards.

00:05:35.190 --> 00:05:40.140
<v Michael Kennedy>I think literally every single billboard I saw, at least that I noticed, was some kind of, if not AI,

00:05:40.360 --> 00:05:41.000
<v Michael Kennedy>AI adjacent.

00:05:41.500 --> 00:05:44.940
<v Michael Kennedy>Or there's all these companies that are like, yeah, we're the AI markdown editor.

00:05:45.120 --> 00:05:46.860
<v Michael Kennedy>Like, you were just a markdown editor last year.

00:05:46.980 --> 00:05:47.420
<v Michael Kennedy>Come on now.

00:05:47.630 --> 00:05:48.040
<v Michael Kennedy>You know what I mean?

00:05:48.060 --> 00:05:49.260
<v Michael Kennedy>Like that kind of thing as well.

00:05:49.400 --> 00:05:50.040
<v Brian Okken>I don't get why.

00:05:50.140 --> 00:05:51.140
<v Brian Okken>Who are they trying to convince?

00:05:52.200 --> 00:05:52.560
<v Calvin Hendryx-Parker>Investors.

00:05:52.960 --> 00:05:54.320
<v Calvin Hendryx-Parker>I think they're trying to convince investors.

00:05:54.480 --> 00:05:57.840
<v Calvin Hendryx-Parker>Anyone who's involved in this hype right now is raising money.

00:05:58.160 --> 00:05:58.380
<v Brian Okken>Yeah.

00:05:58.590 --> 00:05:58.940
<v Brian Okken>I don't know.

00:05:59.040 --> 00:06:02.800
<v Michael Kennedy>How does your framework desktop in the basement feel about this,

00:06:02.960 --> 00:06:03.080
<v Michael Kennedy>Colin?

00:06:03.540 --> 00:06:04.500
<v Calvin Hendryx-Parker>He's fine. He's right over here.

00:06:05.360 --> 00:06:07.040
<v Calvin Hendryx-Parker>He's on the standing desk over here.

00:06:07.570 --> 00:06:09.600
<v Calvin Hendryx-Parker>The local models are running just fine.

00:06:09.960 --> 00:06:10.520
<v Calvin Hendryx-Parker>A little hiccup.

00:06:10.910 --> 00:06:12.820
<v Calvin Hendryx-Parker>So I use it with Home Assistant in the house,

00:06:13.200 --> 00:06:16.360
<v Calvin Hendryx-Parker>which is another fine Python project that everyone should go check out.

00:06:16.760 --> 00:06:18.600
<v Calvin Hendryx-Parker>And you got a little confused this morning

00:06:18.940 --> 00:06:21.100
<v Calvin Hendryx-Parker>and thought that it couldn't control the home.

00:06:21.210 --> 00:06:23.540
<v Calvin Hendryx-Parker>Like I was using Qwen 3.8 27B,

00:06:23.750 --> 00:06:26.020
<v Calvin Hendryx-Parker>the one that's kind of all over the news today.

00:06:26.600 --> 00:06:29.560
<v Calvin Hendryx-Parker>And I just kind of forgot that it could actually control stuff.

00:06:29.940 --> 00:06:33.460
<v Calvin Hendryx-Parker>Maybe that's a good direction to go versus like take over all the things.

00:06:33.860 --> 00:06:34.900
<v Calvin Hendryx-Parker>But it does work.

00:06:35.080 --> 00:06:35.560
<v Calvin Hendryx-Parker>Works really well.

00:06:35.740 --> 00:06:35.980
<v Michael Kennedy>Yeah.

00:06:36.220 --> 00:06:36.400
<v Michael Kennedy>Awesome.

00:06:36.740 --> 00:06:36.820
<v Michael Kennedy>Yeah.

00:06:36.820 --> 00:06:40.740
<v Michael Kennedy>We got to get used to a non-deterministic world where like stuff just, it used to work yesterday.

00:06:40.940 --> 00:06:42.360
<v Michael Kennedy>Now it doesn't necessarily work.

00:06:42.440 --> 00:06:43.880
<v Michael Kennedy>Well, what's nice is you can have a discussion.

00:06:44.290 --> 00:06:46.240
<v Calvin Hendryx-Parker>Like I've got the home assistant voice set up.

00:06:46.450 --> 00:06:50.640
<v Calvin Hendryx-Parker>And so you can actually talk back and forth with the little box on the desk as opposed to kind of,

00:06:50.920 --> 00:06:56.240
<v Calvin Hendryx-Parker>I don't know, I won't utter the Amazon version of that box because it'll start going off.

00:06:56.460 --> 00:06:58.500
<v Calvin Hendryx-Parker>but you can't really have a discussion with those boxes,

00:06:58.580 --> 00:07:00.140
<v Calvin Hendryx-Parker>but you can have a discussion with Quinn 38.

00:07:00.480 --> 00:07:00.840
<v Brian Okken>Oh, really?

00:07:01.220 --> 00:07:01.360
<v Calvin Hendryx-Parker>Yeah.

00:07:02.760 --> 00:07:03.500
<v Calvin Hendryx-Parker>You can go back and forth.

00:07:03.600 --> 00:07:04.380
<v Calvin Hendryx-Parker>I can interrupt it.

00:07:04.500 --> 00:07:04.880
<v Calvin Hendryx-Parker>I can,

00:07:05.120 --> 00:07:06.160
<v Calvin Hendryx-Parker>you know, it's all sitting on my desk,

00:07:06.360 --> 00:07:09.040
<v Calvin Hendryx-Parker>but just the satellite one dev board,

00:07:09.440 --> 00:07:11.080
<v Calvin Hendryx-Parker>which is getting a 1.1 release

00:07:11.780 --> 00:07:13.860
<v Calvin Hendryx-Parker>and their pre-orders are open now.

00:07:14.320 --> 00:07:15.660
<v Brian Okken>So you're talking to it?

00:07:15.840 --> 00:07:16.460
<v Calvin Hendryx-Parker>I'm talking to it.

00:07:16.640 --> 00:07:17.280
<v Calvin Hendryx-Parker>Talking to my home assistant.

00:07:17.620 --> 00:07:17.820
<v Brian Okken>Okay.

00:07:18.180 --> 00:07:18.820
<v Calvin Hendryx-Parker>Do you have arguments?

00:07:19.280 --> 00:07:19.600
<v Calvin Hendryx-Parker>All local.

00:07:20.880 --> 00:07:24.759
<v Calvin Hendryx-Parker>So it precedes like a prompt into the model

00:07:25.100 --> 00:07:29.120
<v Calvin Hendryx-Parker>and it precedes all of the devices that are in your home

00:07:29.520 --> 00:07:30.380
<v Calvin Hendryx-Parker>that home assistant knows

00:07:30.900 --> 00:07:33.200
<v Calvin Hendryx-Parker>with a preference for a specific room you're in.

00:07:33.320 --> 00:07:34.080
<v Calvin Hendryx-Parker>So if I'm in the study

00:07:34.460 --> 00:07:36.720
<v Calvin Hendryx-Parker>and the home assistant voice box is in the study,

00:07:36.780 --> 00:07:37.820
<v Calvin Hendryx-Parker>I've told it it's in the study,

00:07:38.240 --> 00:07:39.400
<v Calvin Hendryx-Parker>I can just say, turn off the lights

00:07:39.680 --> 00:07:40.660
<v Calvin Hendryx-Parker>and it knows it's in the study.

00:07:40.760 --> 00:07:41.420
<v Calvin Hendryx-Parker>There's lights in the study

00:07:41.460 --> 00:07:42.280
<v Calvin Hendryx-Parker>and it turns off the lights.

00:07:42.639 --> 00:07:42.960
<v Brian Okken>Interesting.

00:07:43.780 --> 00:07:43.860
<v Calvin Hendryx-Parker>Yeah.

00:07:44.140 --> 00:07:44.640
<v Michael Kennedy>That is clever.

00:07:44.760 --> 00:07:45.880
<v Brian Okken>Here I'm back in the dark ages.

00:07:46.020 --> 00:07:47.900
<v Brian Okken>I like go over to the wall and push a button.

00:07:48.120 --> 00:07:48.440
<v Calvin Hendryx-Parker>A wall?

00:07:49.660 --> 00:07:50.720
<v Michael Kennedy>You could hurt your finger doing that.

00:07:50.820 --> 00:07:51.120
<v Michael Kennedy>Don't do that.

00:07:52.080 --> 00:07:52.560
<v Michael Kennedy>Touch that.

00:07:52.760 --> 00:07:54.380
<v Brian Okken>They're conveniently located though.

00:07:54.600 --> 00:07:55.760
<v Brian Okken>I mean, it's designed well.

00:07:55.920 --> 00:07:59.880
<v Brian Okken>So the place where I enter the room is where the switch is.

00:08:00.900 --> 00:08:02.480
<v Brian Okken>It's got incredible technology.

00:08:03.199 --> 00:08:04.160
<v Brian Okken>It's kind of nice.

00:08:05.379 --> 00:08:06.800
<v Calvin Hendryx-Parker>Yeah, I just added it into the air.

00:08:07.060 --> 00:08:09.920
<v Brian Okken>What happens when the Wi-Fi goes down?

00:08:10.999 --> 00:08:12.580
<v Calvin Hendryx-Parker>Well, that's on battery backup.

00:08:13.120 --> 00:08:15.020
<v Calvin Hendryx-Parker>And the Internet's not required.

00:08:15.760 --> 00:08:17.020
<v Calvin Hendryx-Parker>All the access points are PoE.

00:08:17.440 --> 00:08:18.660
<v Calvin Hendryx-Parker>There's a big battery in the basement,

00:08:19.320 --> 00:08:20.240
<v Calvin Hendryx-Parker>hooked up to the home assistant.

00:08:20.720 --> 00:08:21.440
<v Calvin Hendryx-Parker>It's all central.

00:08:21.700 --> 00:08:22.860
<v Calvin Hendryx-Parker>There's a battery up here on the framework.

00:08:23.460 --> 00:08:26.620
<v Calvin Hendryx-Parker>So I can last a couple hours without any Wi-Fi,

00:08:27.160 --> 00:08:27.260
<v Calvin Hendryx-Parker>internet,

00:08:27.500 --> 00:08:29.220
<v Calvin Hendryx-Parker>or power and still talk to my house.

00:08:29.520 --> 00:08:29.660
<v Brian Okken>Okay,

00:08:30.120 --> 00:08:30.320
<v Brian Okken>nice.

00:08:31.040 --> 00:08:33.740
<v Brian Okken>I talk to my house too, but it just doesn't talk back.

00:08:34.340 --> 00:08:35.159
<v Calvin Hendryx-Parker>Mine can talk back.

00:08:35.880 --> 00:08:38.860
<v Brian Okken>Hey, I wanted to say just thank you for stepping in.

00:08:40.759 --> 00:08:44.680
<v Brian Okken>So I sort of just jumped out of Python Bytes without letting people know.

00:08:45.060 --> 00:08:46.460
<v Brian Okken>And there was no hard feelings or anything.

00:08:46.660 --> 00:08:48.340
<v Brian Okken>Michael and I are definitely still friends.

00:08:48.660 --> 00:08:49.560
<v Brian Okken>He didn't kick me out.

00:08:50.580 --> 00:08:54.820
<v Brian Okken>But it was this book and also my day job is pretty exciting.

00:08:55.140 --> 00:08:57.860
<v Brian Okken>So I just sort of wanted to do other stuff.

00:08:58.520 --> 00:09:03.080
<v Brian Okken>I really enjoyed Python Bytes and I'm glad it's not stopped just because I've stopped.

00:09:03.200 --> 00:09:05.480
<v Calvin Hendryx-Parker>I really enjoyed doing it.

00:09:05.580 --> 00:09:06.820
<v Calvin Hendryx-Parker>You had a great run.

00:09:06.900 --> 00:09:08.020
<v Calvin Hendryx-Parker>I mean, how many episodes,

00:09:08.480 --> 00:09:11.360
<v Calvin Hendryx-Parker>10 years nearly of Brian's voice in my earbuds.

00:09:12.060 --> 00:09:15.420
<v Calvin Hendryx-Parker>And now my Python Bytes, I'm like, oh, that's my voice.

00:09:15.960 --> 00:09:19.300
<v Brian Okken>It was funny when I was watching PyBay.

00:09:19.560 --> 00:09:22.840
<v Brian Okken>I was in the audience waiting for Michael Kennedy.

00:09:22.920 --> 00:09:23.720
<v Brian Okken>I sat down right now.

00:09:24.400 --> 00:09:25.220
<v Brian Okken>I kind of entered late.

00:09:25.500 --> 00:09:26.160
<v Brian Okken>Sorry about that, Michael.

00:09:26.440 --> 00:09:27.280
<v Brian Okken>But sat down,

00:09:27.520 --> 00:09:28.260
<v Brian Okken>and he's up there.

00:09:28.260 --> 00:09:29.120
<v Brian Okken>And I said, oh,

00:09:29.440 --> 00:09:30.320
<v Brian Okken>that guy's kind of famous.

00:09:31.980 --> 00:09:35.900
<v Brian Okken>And the person sitting next to me turned around and said, yeah, you're kind of famous too,

00:09:36.100 --> 00:09:36.240
<v Brian Okken>man.

00:09:37.399 --> 00:09:38.320
<v Brian Okken>So I'm like,

00:09:38.520 --> 00:09:39.700
<v Brian Okken>no, not like Michael famous.

00:09:41.480 --> 00:09:42.240
<v Michael Kennedy>Thanks for coming to talk.

00:09:42.260 --> 00:09:45.320
<v Michael Kennedy>And your talk on Lean TD was really, really good.

00:09:45.720 --> 00:09:47.480
<v Michael Kennedy>I think people really appreciated it as well.

00:09:47.520 --> 00:09:48.300
<v Brian Okken>I'm waiting for that.

00:09:48.720 --> 00:09:51.600
<v Brian Okken>One of the fun things about it is I got to talk about my career.

00:09:52.060 --> 00:09:52.660
<v Brian Okken>So I,

00:09:53.060 --> 00:09:55.280
<v Brian Okken>well, I didn't get to, I decided to.

00:09:55.460 --> 00:09:56.180
<v Brian Okken>So the first few,

00:09:56.380 --> 00:09:57.620
<v Brian Okken>like maybe five minutes of the talk

00:09:57.840 --> 00:10:00.720
<v Brian Okken>are discussing my career in test and measurement,

00:10:00.980 --> 00:10:01.720
<v Brian Okken>the RF world.

00:10:01.940 --> 00:10:02.380
<v Brian Okken>That was fun.

00:10:02.540 --> 00:10:06.340
<v Michael Kennedy>Yeah, if you want Brian's full story leading up to Lean TDD,

00:10:06.819 --> 00:10:08.820
<v Michael Kennedy>eventually the videos for those talks should be out.

00:10:09.080 --> 00:10:12.340
<v Brian Okken>And I do look forward to coming back for Python Byte's

00:10:12.920 --> 00:10:14.260
<v Brian Okken>1,000th episode as well.

00:10:14.640 --> 00:10:14.740
<v Brian Okken>Nice.

00:10:16.100 --> 00:10:16.240
<v Michael Kennedy>Oh,

00:10:16.420 --> 00:10:16.480
<v Michael Kennedy>yeah,

00:10:16.720 --> 00:10:16.860
<v Michael Kennedy>yeah.

00:10:17.020 --> 00:10:18.980
<v Michael Kennedy>We're going to have to start doing more than one episode.

00:10:19.900 --> 00:10:20.340
<v Michael Kennedy>On the decade.

00:10:20.720 --> 00:10:21.480
<v Michael Kennedy>No, I'm sure,

00:10:21.700 --> 00:10:21.900
<v Michael Kennedy>honestly.

00:10:22.780 --> 00:10:23.780
<v Michael Kennedy>It's very possible,

00:10:23.980 --> 00:10:24.860
<v Michael Kennedy>which is very insane,

00:10:25.020 --> 00:10:25.140
<v Michael Kennedy>honestly.

00:10:27.500 --> 00:10:30.580
<v Michael Kennedy>Let's wrap this part out, this section out with just,

00:10:30.740 --> 00:10:32.220
<v Michael Kennedy>we can maybe each look back.

00:10:32.480 --> 00:10:34.000
<v Michael Kennedy>Think back to an innocent time.

00:10:34.440 --> 00:10:36.780
<v Michael Kennedy>AI was a thing we made fun of because it was bad.

00:10:36.940 --> 00:10:37.640
<v Michael Kennedy>There was no COVID,

00:10:37.940 --> 00:10:38.600
<v Michael Kennedy>none of this stuff.

00:10:39.020 --> 00:10:40.180
<v Michael Kennedy>Back to 2016,

00:10:40.640 --> 00:10:41.960
<v Michael Kennedy>2017 when we started this.

00:10:42.459 --> 00:10:45.320
<v Michael Kennedy>What's something notable that you all have seen change?

00:10:45.640 --> 00:10:46.740
<v Michael Kennedy>I'll give you the final word.

00:10:46.800 --> 00:10:47.480
<v Michael Kennedy>So Calvin,

00:10:47.680 --> 00:10:49.300
<v Michael Kennedy>something from 2016,

00:10:49.600 --> 00:10:49.820
<v Michael Kennedy>17,

00:10:50.000 --> 00:10:51.860
<v Michael Kennedy>that era that really stands out for you.

00:10:52.399 --> 00:10:53.860
<v Calvin Hendryx-Parker>So anything from 2016,

00:10:54.020 --> 00:10:54.340
<v Calvin Hendryx-Parker>2017,

00:10:54.660 --> 00:10:55.240
<v Calvin Hendryx-Parker>around that time

00:10:55.660 --> 00:10:56.860
<v Calvin Hendryx-Parker>when you all started the podcast,

00:10:57.160 --> 00:10:58.980
<v Calvin Hendryx-Parker>I think the biggest thing that's changed for me

00:10:59.000 --> 00:11:01.320
<v Calvin Hendryx-Parker>has been packaging gotten way more sane.

00:11:01.620 --> 00:11:03.020
<v Calvin Hendryx-Parker>So I'm super excited about that.

00:11:03.400 --> 00:11:04.220
<v Calvin Hendryx-Parker>And the community is still here.

00:11:05.080 --> 00:11:06.040
<v Calvin Hendryx-Parker>PyCon still goes strong,

00:11:06.840 --> 00:11:09.220
<v Calvin Hendryx-Parker>even though we had a few years in there of weirdness

00:11:10.020 --> 00:11:10.660
<v Calvin Hendryx-Parker>around the world.

00:11:11.000 --> 00:11:12.040
<v Calvin Hendryx-Parker>And so I'm glad we're all still here.

00:11:12.260 --> 00:11:12.460
<v Michael Kennedy>Yeah,

00:11:12.800 --> 00:11:14.100
<v Michael Kennedy>packaging has absolutely changed.

00:11:14.440 --> 00:11:15.600
<v Michael Kennedy>It still has a little ways to go.

00:11:15.760 --> 00:11:16.160
<v Michael Kennedy>Way better.

00:11:16.160 --> 00:11:16.600
<v Michael Kennedy>But what was it better?

00:11:16.680 --> 00:11:22.020
<v Michael Kennedy>I'm still waiting for Python --build --arm my file someday.

00:11:22.460 --> 00:11:22.560
<v Michael Kennedy>Right.

00:11:22.760 --> 00:11:22.960
<v Brian Okken>The,

00:11:23.280 --> 00:11:23.340
<v Brian Okken>the,

00:11:23.550 --> 00:11:23.960
<v Brian Okken>a couple,

00:11:24.120 --> 00:11:24.760
<v Brian Okken>there's a lot of stuff,

00:11:24.960 --> 00:11:27.840
<v Brian Okken>but of course we don't really talk about Python

00:11:28.080 --> 00:11:28.880
<v Brian Okken>two seven anymore,

00:11:29.280 --> 00:11:29.820
<v Brian Okken>which is nice.

00:11:30.120 --> 00:11:30.320
<v Brian Okken>Um,

00:11:30.530 --> 00:11:30.640
<v Brian Okken>um,

00:11:30.900 --> 00:11:32.780
<v Brian Okken>it's just gone or,

00:11:33.020 --> 00:11:33.440
<v Brian Okken>you know, hopefully,

00:11:33.940 --> 00:11:35.880
<v Brian Okken>and we'll get comments that people are saying

00:11:35.960 --> 00:11:37.480
<v Brian Okken>like, I still have to deal with it, man.

00:11:37.960 --> 00:11:39.860
<v Brian Okken>I'm sorry if you still have to deal with it.

00:11:40.110 --> 00:11:40.240
<v Brian Okken>Uh,

00:11:40.560 --> 00:11:42.600
<v Brian Okken>the other thing, packaging is a huge thing.

00:11:42.660 --> 00:11:43.060
<v Brian Okken>I was just,

00:11:43.240 --> 00:11:44.900
<v Brian Okken>I did,

00:11:45.160 --> 00:11:47.720
<v Brian Okken>I've been updating a Python plugin or pytest plugin,

00:11:48.160 --> 00:11:49.540
<v Brian Okken>pytest check recently.

00:11:50.100 --> 00:11:53.280
<v Brian Okken>And the release process is push a tag.

00:11:54.080 --> 00:11:55.000
<v Brian Okken>And then this,

00:11:55.400 --> 00:11:56.180
<v Brian Okken>it's because it's this,

00:11:56.790 --> 00:12:00.600
<v Brian Okken>the server builds it and talks with PyPI and does that.

00:12:00.670 --> 00:12:04.600
<v Brian Okken>And I don't have to use Twine anymore by myself or anything like that.

00:12:04.670 --> 00:12:05.200
<v Brian Okken>And the package,

00:12:05.520 --> 00:12:05.620
<v Brian Okken>like,

00:12:05.800 --> 00:12:08.200
<v Brian Okken>I'll have to just, I guess I'm marrying Calvin.

00:12:08.680 --> 00:12:11.100
<v Brian Okken>The packaging system is something,

00:12:11.280 --> 00:12:13.140
<v Brian Okken>it's so easy now that I don't think about it.

00:12:13.360 --> 00:12:15.780
<v Brian Okken>Once I get it set up for a project, I just don't think about it.

00:12:16.300 --> 00:12:17.960
<v Michael Kennedy>Yeah, and Nox and Tox.

00:12:18.450 --> 00:12:18.800
<v Michael Kennedy>Oh, I still,

00:12:19.020 --> 00:12:19.300
<v Brian Okken>yeah,

00:12:19.560 --> 00:12:20.240
<v Brian Okken>Tox is great.

00:12:20.330 --> 00:12:20.880
<v Brian Okken>I like Tox.

00:12:21.260 --> 00:12:22.540
<v Calvin Hendryx-Parker>We're just not left unsupervised.

00:12:23.480 --> 00:12:23.920
<v Brian Okken>Unsupervised.

00:12:24.480 --> 00:12:29.460
<v Michael Kennedy>Well, I was going to say, the thing that I was going to add is the two versus three wars

00:12:29.900 --> 00:12:31.440
<v Michael Kennedy>and how many of us survived.

00:12:31.960 --> 00:12:32.560
<v Michael Kennedy>But honestly,

00:12:32.780 --> 00:12:36.240
<v Michael Kennedy>if you weren't around in that time or you weren't working in Python at the time,

00:12:36.460 --> 00:12:43.480
<v Michael Kennedy>It was a long drawn out period where it was not entirely clear that Python was ever going to make it to Python 3.

00:12:43.640 --> 00:12:46.240
<v Michael Kennedy>And then it would be permanently stuck in an older way.

00:12:46.540 --> 00:12:49.980
<v Michael Kennedy>It was more shaky than I think people give it credit for being.

00:12:50.060 --> 00:12:54.260
<v Brian Okken>And also, we just made a change that would have made the 2 to 3 transition easier.

00:12:54.600 --> 00:12:56.320
<v Brian Okken>The making UTF-8 default.

00:12:56.820 --> 00:12:58.840
<v Brian Okken>That should have been from the start.

00:12:58.960 --> 00:13:00.540
<v Brian Okken>Just say it would have been a lot easier.

00:13:02.040 --> 00:13:04.140
<v Calvin Hendryx-Parker>So many cannot decode exceptions.

00:13:06.080 --> 00:13:08.360
<v Michael Kennedy>Yeah, I was going to pick the two to three wars as well,

00:13:08.560 --> 00:13:09.900
<v Michael Kennedy>but as a joke, of course.

00:13:09.950 --> 00:13:11.320
<v Michael Kennedy>But honestly, that was a serious,

00:13:11.500 --> 00:13:12.100
<v Michael Kennedy>serious thing.

00:13:12.290 --> 00:13:13.520
<v Michael Kennedy>But I think I'll go for performance.

00:13:14.040 --> 00:13:15.400
<v Michael Kennedy>Python has got a lot faster.

00:13:15.820 --> 00:13:21.640
<v Michael Kennedy>The Python 310 Foundation and 311 especially made it quite a bit faster.

00:13:22.540 --> 00:13:23.240
<v Michael Kennedy>And, you know,

00:13:23.440 --> 00:13:25.000
<v Michael Kennedy>there's still continues today.

00:13:25.480 --> 00:13:26.720
<v Michael Kennedy>There was a lot of, well, Python's too slow.

00:13:26.720 --> 00:13:30.220
<v Michael Kennedy>We can't choose this for our project because obviously we got to use Go

00:13:30.470 --> 00:13:34.000
<v Michael Kennedy>because that was the hot thing at the time before Rust really kicked into gear

00:13:34.330 --> 00:13:35.660
<v Michael Kennedy>because we need better async.

00:13:35.840 --> 00:13:41.920
<v Michael Kennedy>need faster x y and z and i think it's it's come a long way uh one final thing uh the or at least

00:13:41.920 --> 00:13:49.960
<v Brian Okken>for me the um is that uh py test isn't considered niche anymore um it's uh pretty it's pretty obvious

00:13:50.050 --> 00:13:55.040
<v Brian Okken>that people go with py test it's you don't have to defend it anymore which is cool and there was

00:13:55.040 --> 00:13:59.860
<v Michael Kennedy>a book that probably helped maybe yeah who knows a couple couple books well i just want to take

00:14:00.240 --> 00:14:05.800
<v Michael Kennedy>before before we wrap it up brian i just want to say you know thank you for 10 years of hard work

00:14:05.820 --> 00:14:09.980
<v Michael Kennedy>People from the outside are like, oh, we just jump on for like 20 minutes or sometimes an hour.

00:14:10.100 --> 00:14:10.700
<v Michael Kennedy>Then you get complaints.

00:14:10.740 --> 00:14:11.640
<v Michael Kennedy>And it goes back to 20 minutes.

00:14:12.240 --> 00:14:14.360
<v Michael Kennedy>No, you just jump on for a while and you have a quick chat.

00:14:14.420 --> 00:14:19.100
<v Michael Kennedy>And there's so much behind the scenes that takes a lot of work to put this show together and keep it flowing.

00:14:19.720 --> 00:14:19.760
<v Calvin Hendryx-Parker>Yeah.

00:14:20.000 --> 00:14:20.600
<v Michael Kennedy>Thanks for the hard work.

00:14:21.000 --> 00:14:21.400
<v Brian Okken>Oh, you bet.

00:14:21.560 --> 00:14:21.780
<v Brian Okken>Thank you.

00:14:22.640 --> 00:14:23.280
<v Brian Okken>And yeah,

00:14:23.440 --> 00:14:24.420
<v Brian Okken>thank you for keeping it going.

00:14:24.900 --> 00:14:28.120
<v Brian Okken>So I'll just throw out also that Python people is going to come back.

00:14:28.280 --> 00:14:32.540
<v Brian Okken>So I am going to do the podcasting thing more again.

00:14:32.840 --> 00:14:34.260
<v Michael Kennedy>Well, you know, let us know in the episodes.

00:14:34.460 --> 00:14:34.560
<v Michael Kennedy>Well,

00:14:35.020 --> 00:14:36.660
<v Michael Kennedy>shout it out in the extras as you know how it goes.

00:14:37.040 --> 00:14:37.860
<v Brian Okken>So thanks a lot.

00:14:38.050 --> 00:14:38.340
<v Michael Kennedy>See you later.

00:14:39.060 --> 00:14:39.300
<v Michael Kennedy>Awesome.

00:14:39.530 --> 00:14:40.440
<v Michael Kennedy>Thank you so much, Brian,

00:14:40.620 --> 00:14:42.860
<v Michael Kennedy>for being here and being in the show.

00:14:43.380 --> 00:14:45.920
<v Michael Kennedy>Now let's get back to our group celebration.

00:14:46.960 --> 00:14:48.400
<v Michael Kennedy>All right, let's jump straight into the items.

00:14:49.360 --> 00:14:50.240
<v Michael Kennedy>And Nick,

00:14:50.730 --> 00:14:54.320
<v Michael Kennedy>you have the probably most popular topic

00:14:54.450 --> 00:14:57.240
<v Michael Kennedy>if you look at the derivative or second derivative

00:14:57.420 --> 00:14:59.740
<v Michael Kennedy>of how fast it's got attention lately.

00:14:59.860 --> 00:15:00.160
<v Nick Muoh>Yeah.

00:15:00.230 --> 00:15:01.320
<v Michael Kennedy>Tell us about this.

00:15:01.440 --> 00:15:01.800
<v Michael Kennedy>This is crazy.

00:15:01.940 --> 00:15:04.600
<v Nick Muoh>If you have not heard about JEV,

00:15:04.760 --> 00:15:14.760
<v Nick Muoh>you have been living under a rock because it's the new kid in the block and it has made quite his presence known.

00:15:15.180 --> 00:15:16.700
<v Nick Muoh>It's been raving all over Twitter,

00:15:16.960 --> 00:15:17.640
<v Nick Muoh>X, Reddit.

00:15:18.280 --> 00:15:23.200
<v Nick Muoh>And what it is, is a new type of AI model that is not like your usual LLM.

00:15:24.280 --> 00:15:27.240
<v Nick Muoh>the folks from TypeSafe AI,

00:15:27.490 --> 00:15:31.880
<v Nick Muoh>these are the creators of JEV, I'll call it a system one decision model.

00:15:31.970 --> 00:15:35.100
<v Nick Muoh>And so system one, if you've read the book, Thinking Fast,

00:15:35.320 --> 00:15:35.840
<v Nick Muoh>Thinking Slow,

00:15:36.260 --> 00:15:36.600
<v Nick Muoh>they're like two

00:15:36.670 --> 00:15:37.460
<v Nick Muoh>different system types,

00:15:37.970 --> 00:15:39.480
<v Nick Muoh>the system one and system two.

00:15:39.920 --> 00:15:43.600
<v Nick Muoh>So JEV is like very focused on the system one

00:15:43.990 --> 00:15:45.380
<v Nick Muoh>type of inference.

00:15:45.870 --> 00:15:47.740
<v Nick Muoh>And what this means is that you have,

00:15:48.150 --> 00:15:49.660
<v Nick Muoh>instead of generating text,

00:15:50.420 --> 00:15:51.619
<v Nick Muoh>like a QN

00:15:51.640 --> 00:16:00.380
<v Nick Muoh>model or a ChatGPT model instead it makes decisions on either yes or no offers like gives

00:16:00.380 --> 00:16:06.060
<v Nick Muoh>you score probabilities for a rank of choices or it gives you like a score for like how how much

00:16:06.180 --> 00:16:11.260
<v Nick Muoh>something is like a range of like a range score about how some how much something is so it's very

00:16:11.620 --> 00:16:17.279
<v Nick Muoh>interesting and even though it sounds limited the use cases have been quite insane Vincent from

00:16:17.720 --> 00:16:25.120
<v Nick Muoh>Marimo did a video about it and he was benchmarking it against traditional LLMs because for the long,

00:16:25.200 --> 00:16:32.740
<v Nick Muoh>I'm a data scientist working and I work with a lot of ML models and classification is one of the

00:16:32.740 --> 00:16:35.160
<v Nick Muoh>things that, depending on the situation,

00:16:35.360 --> 00:16:36.800
<v Nick Muoh>can be really hard, can be really simple.

00:16:37.280 --> 00:16:38.020
<v Nick Muoh>And here comes

00:16:38.220 --> 00:16:42.260
<v Nick Muoh>this JEV model that is like a general classifier.

00:16:42.490 --> 00:16:45.679
<v Nick Muoh>And so he benchmarked it against a couple of

00:16:45.700 --> 00:16:49.620
<v Nick Muoh>real-world data sets and beat all of them.

00:16:49.790 --> 00:16:52.720
<v Nick Muoh>In most cases, he beat all of them. He even brought

00:16:53.070 --> 00:16:56.160
<v Nick Muoh>like an interesting trick he learned called SetFit.

00:16:56.320 --> 00:16:58.100
<v Nick Muoh>You should watch the video. He does a great

00:16:58.540 --> 00:17:05.120
<v Nick Muoh>explanation of it that allows you to train like very basic LLM models like BERT or

00:17:06.240 --> 00:17:09.560
<v Nick Muoh>QN embedding models and uses it for classification.

00:17:10.420 --> 00:17:12.959
<v Nick Muoh>Jev still does it better in terms of accuracy

00:17:12.959 --> 00:17:14.620
<v Nick Muoh>and so much cheaper.

00:17:15.199 --> 00:17:16.220
<v Nick Muoh>Now, the reason why I brought it up

00:17:16.360 --> 00:17:18.560
<v Nick Muoh>was because the use of JEV,

00:17:18.650 --> 00:17:19.880
<v Nick Muoh>even though it's really cheap,

00:17:20.130 --> 00:17:21.660
<v Nick Muoh>really fast, is really interesting.

00:17:22.020 --> 00:17:23.780
<v Nick Muoh>But there is another interesting point

00:17:23.920 --> 00:17:25.380
<v Nick Muoh>that Vincent made,

00:17:25.560 --> 00:17:27.699
<v Nick Muoh>whereby in most companies,

00:17:28.020 --> 00:17:29.800
<v Nick Muoh>there's a lot of data that is unlabeled

00:17:30.140 --> 00:17:32.080
<v Nick Muoh>and it is going to be more cost-effective

00:17:32.320 --> 00:17:33.680
<v Nick Muoh>to train your own local model

00:17:34.160 --> 00:17:35.860
<v Nick Muoh>on your own proprietary data

00:17:36.440 --> 00:17:38.220
<v Nick Muoh>than it is to use a general model,

00:17:38.320 --> 00:17:41.040
<v Nick Muoh>even if something as cheap and fast as JEV.

00:17:41.260 --> 00:17:51.180
<v Nick Muoh>So what you could do is to take the JEV model and help you create more accurate data sets,

00:17:51.620 --> 00:17:53.000
<v Nick Muoh>get you more cleaner labels.

00:17:53.600 --> 00:17:55.300
<v Michael Kennedy>Is that kind of like supervised learning,

00:17:55.520 --> 00:17:56.700
<v Michael Kennedy>but you use JEV as the supervisor?

00:17:57.580 --> 00:17:57.940
<v Nick Muoh>Yeah, exactly.

00:17:58.220 --> 00:18:04.460
<v Nick Muoh>So you take some general class and then you create a better data set so you can train supervised models.

00:18:05.100 --> 00:18:15.120
<v Nick Muoh>And this is how you like eke out a lot more performance and get better efficiency on very specific tasks to your like business.

00:18:15.440 --> 00:18:17.300
<v Nick Muoh>So that's one of the topics I wanted to bring up.

00:18:17.460 --> 00:18:18.740
<v Nick Muoh>It's a really interesting video.

00:18:19.320 --> 00:18:20.600
<v Nick Muoh>Jev is a really interesting model.

00:18:21.580 --> 00:18:22.580
<v Nick Muoh>You guys should go check it out.

00:18:22.920 --> 00:18:24.980
<v Michael Kennedy>I've seen all this excitement about Jev and I'm like,

00:18:25.400 --> 00:18:27.020
<v Michael Kennedy>I really want to have a use case for Jev.

00:18:28.520 --> 00:18:30.420
<v Michael Kennedy>So I haven't had to use it, but I'm glad to hear that you have.

00:18:30.480 --> 00:18:31.160
<v Michael Kennedy>And that's really cool.

00:18:31.280 --> 00:18:32.060
<v Michael Kennedy>What do the rest of y'all think?

00:18:32.400 --> 00:18:39.460
<v Calvin Hendryx-Parker>Well, it's interesting that the number of classifier models that other labs are coming out with now, a lot of them are taking Quinn and fine tuning it to be a classifier.

00:18:39.470 --> 00:18:42.220
<v Calvin Hendryx-Parker>I think Microsoft just announced that's the one they're deploying,

00:18:43.060 --> 00:18:48.840
<v Calvin Hendryx-Parker>which I kind of like because I don't know these type secret folks or type secure folks very well.

00:18:49.060 --> 00:18:49.120
<v Calvin Hendryx-Parker>But,

00:18:49.390 --> 00:18:52.460
<v Calvin Hendryx-Parker>you know, you're sending them all their data because there's no option to use it locally.

00:18:52.840 --> 00:18:53.020
<v Nick Muoh>Yeah.

00:18:53.380 --> 00:18:57.120
<v Brett Cannon>Yeah, I think it was kind of interesting because when I first heard about Jev, it was like,

00:18:57.280 --> 00:18:57.800
<v Brett Cannon>what's the big deal?

00:18:58.020 --> 00:19:01.720
<v Brett Cannon>And I understood then I learned that all it did was the very key thing was,

00:19:01.800 --> 00:19:02.600
<v Brett Cannon>is does classification,

00:19:02.960 --> 00:19:03.040
<v Brett Cannon>right?

00:19:03.180 --> 00:19:06.260
<v Brett Cannon>It's not an open-ended write me this code is like answer this.

00:19:06.300 --> 00:19:06.400
<v Brett Cannon>Yes,

00:19:06.560 --> 00:19:07.760
<v Brett Cannon>no question or put,

00:19:07.980 --> 00:19:08.240
<v Brett Cannon>put every,

00:19:08.500 --> 00:19:09.660
<v Brett Cannon>put these things in a bucket.

00:19:09.880 --> 00:19:09.980
<v Brett Cannon>Right.

00:19:10.200 --> 00:19:15.320
<v Brett Cannon>And I think Nick's point about like using that as a quick and dirty way to

00:19:15.980 --> 00:19:19.620
<v Brett Cannon>label some data so that you can do your own training model with like scikit

00:19:19.760 --> 00:19:19.920
<v Brett Cannon>learn,

00:19:20.360 --> 00:19:23.340
<v Brett Cannon>which I will always give a shout out to because it's still my wife's favorite

00:19:23.640 --> 00:19:24.580
<v Brett Cannon>Python library in the world.

00:19:25.680 --> 00:19:26.760
<v Brett Cannon>It is a great thing, right?

00:19:26.840 --> 00:19:27.960
<v Brett Cannon>because I think it's one of these things

00:19:28.040 --> 00:19:29.120
<v Brett Cannon>we're also really starting to learn

00:19:29.340 --> 00:19:32.100
<v Brett Cannon>is using LLMs to help you

00:19:32.700 --> 00:19:34.200
<v Brett Cannon>build the automation for things

00:19:34.800 --> 00:19:36.500
<v Brett Cannon>is a better use of your time and money

00:19:36.820 --> 00:19:37.300
<v Brett Cannon>slash tokens

00:19:37.940 --> 00:19:39.700
<v Brett Cannon>than it is to like ask the models

00:19:39.840 --> 00:19:40.980
<v Brett Cannon>to do the same thing over and over

00:19:41.380 --> 00:19:42.220
<v Brett Cannon>rather than like, yeah,

00:19:42.400 --> 00:19:43.320
<v Brett Cannon>let's use it to help that,

00:19:43.740 --> 00:19:46.080
<v Brett Cannon>like use second learn to actually do like full,

00:19:46.200 --> 00:19:47.520
<v Brett Cannon>like I'm going to use the long term here.

00:19:47.600 --> 00:19:48.620
<v Brett Cannon>So I'm going to try to use the right term,

00:19:48.900 --> 00:19:50.280
<v Brett Cannon>but use second learn to build the local model

00:19:50.360 --> 00:19:51.320
<v Brett Cannon>that you need to do the classification.

00:19:51.760 --> 00:19:51.880
<v Nick Muoh>Yeah.

00:19:52.200 --> 00:19:53.160
<v Brett Cannon>That'll be the fastest, cheapest,

00:19:53.540 --> 00:19:54.840
<v Brett Cannon>best reproducible way to do it.

00:19:54.980 --> 00:19:56.380
<v Brett Cannon>And I think it's great that this is kind of

00:19:56.320 --> 00:19:59.320
<v Brett Cannon>helping push that narrative down more and more to more people.

00:19:59.840 --> 00:19:59.960
<v Nick Muoh>Yeah,

00:20:00.180 --> 00:20:04.940
<v Nick Muoh>it's so much more efficient to have like a model like Jev or a local model than

00:20:04.940 --> 00:20:07.420
<v Nick Muoh>to have like Opus running your like home assistant,

00:20:08.140 --> 00:20:08.240
<v Nick Muoh>right?

00:20:09.500 --> 00:20:12.340
<v Nick Muoh>That's like very cost, like cost not inefficient,

00:20:13.140 --> 00:20:13.640
<v Nick Muoh>cost efficient.

00:20:14.080 --> 00:20:14.380
<v Carol Willing>Yeah.

00:20:14.670 --> 00:20:20.040
<v Carol Willing>I mean, I think it seems like it would be something that could be used with like spaCy when you're

00:20:20.280 --> 00:20:23.720
<v Carol Willing>annotating parts of natural language.

00:20:24.460 --> 00:20:27.300
<v Carol Willing>And I think there's some creative ways that,

00:20:27.600 --> 00:20:29.760
<v Carol Willing>you know, you can get decision maybe on a

00:20:29.920 --> 00:20:30.980
<v Carol Willing>first pass or something.

00:20:31.600 --> 00:20:35.660
<v Carol Willing>And I'm looking forward to looking at some of the research because I have heard there's

00:20:35.660 --> 00:20:38.120
<v Carol Willing>a few others at the top of my head.

00:20:38.120 --> 00:20:39.160
<v Carol Willing>I can't name them,

00:20:39.400 --> 00:20:45.080
<v Carol Willing>but some former folks from DeepMind are doing something in the UK,

00:20:45.260 --> 00:20:45.380
<v Carol Willing>I

00:20:45.480 --> 00:20:46.120
<v Carol Willing>believe as well.

00:20:46.400 --> 00:20:46.900
<v Carol Willing>So yeah,

00:20:47.300 --> 00:20:48.620
<v Calvin Hendryx-Parker>the real feature here is speed.

00:20:48.920 --> 00:20:53.480
<v Calvin Hendryx-Parker>The fact that you can feed it just hundreds of thousands of rows and get answers in microseconds

00:20:53.560 --> 00:20:54.140
<v Calvin Hendryx-Parker>and milliseconds.

00:20:54.200 --> 00:20:59.180
<v Michael Kennedy>yeah yeah that's not a normal ai sort of experience right that's a big deal though

00:20:59.960 --> 00:21:05.840
<v Michael Kennedy>it's a huge deal all right awesome i definitely think that's a a good pick brett tell us about

00:21:05.890 --> 00:21:11.840
<v Brett Cannon>this new council yeah i know uh what the heck am i talking about uh so for those you didn't hear

00:21:12.380 --> 00:21:18.479
<v Brett Cannon>um first two weeks of september we had an election i think uh this was covered on python bytes uh for

00:21:18.500 --> 00:21:19.680
<v Brett Cannon>Python Packaging Council.

00:21:19.960 --> 00:21:20.500
<v Brett Cannon>It is the

00:21:20.620 --> 00:21:21.240
<v Brett Cannon>inaugural one.

00:21:22.460 --> 00:21:24.400
<v Brett Cannon>And it was all set up via

00:21:24.560 --> 00:21:25.260
<v Brett Cannon>PEP772.

00:21:25.780 --> 00:21:26.420
<v Brett Cannon>And the

00:21:26.540 --> 00:21:27.000
<v Brett Cannon>elections happened.

00:21:27.200 --> 00:21:28.340
<v Brett Cannon>It was open to all

00:21:28.540 --> 00:21:30.360
<v Brett Cannon>PSF members who

00:21:31.420 --> 00:21:32.380
<v Brett Cannon>basically said

00:21:32.380 --> 00:21:33.240
<v Brett Cannon>they wanted to vote in it.

00:21:33.600 --> 00:21:34.320
<v Brett Cannon>And it

00:21:34.340 --> 00:21:34.460
<v Brett Cannon>happened.

00:21:34.700 --> 00:21:36.420
<v Brett Cannon>It ended on the

00:21:36.560 --> 00:21:38.300
<v Brett Cannon>15th or 16th, probably depending on where you

00:21:38.460 --> 00:21:39.040
<v Brett Cannon>were on the planet.

00:21:40.400 --> 00:21:41.340
<v Brett Cannon>I ended up on it.

00:21:42.420 --> 00:21:43.340
<v Brett Cannon>Ended up on it.

00:21:43.680 --> 00:21:44.460
<v Brett Cannon>Dolled stuff as well.

00:21:44.680 --> 00:21:44.920
<v Brett Cannon>Henry

00:21:45.620 --> 00:21:47.200
<v Brett Cannon>Schreiner and Ralph Gomers.

00:21:47.700 --> 00:21:51.880
<v Brett Cannon>So we're all in this inaugural council.

00:21:52.560 --> 00:21:56.700
<v Brett Cannon>Perdune and I are on it for two years as the top vote getters.

00:21:57.010 --> 00:22:00.160
<v Brett Cannon>And then Donald, Henry, and Ralph are going to be out for a year.

00:22:00.320 --> 00:22:01.360
<v Brett Cannon>And then going forward after that,

00:22:01.620 --> 00:22:03.640
<v Brett Cannon>all people on it are going to serve for two years.

00:22:04.640 --> 00:22:07.620
<v Brett Cannon>So interesting thing with this is it's the first one.

00:22:08.110 --> 00:22:11.340
<v Brett Cannon>I will say we've already met four times and actually already had to meet with the steering council.

00:22:11.700 --> 00:22:14.460
<v Brett Cannon>And a lot of it's been around logistics and how to organize ourselves.

00:22:15.220 --> 00:22:17.700
<v Brett Cannon>As any of you have had to start anything like this from scratch,

00:22:17.960 --> 00:22:19.720
<v Brett Cannon>it's about where are we going to keep our notes?

00:22:20.320 --> 00:22:21.900
<v Brett Cannon>Where are we going to let people reach us?

00:22:22.080 --> 00:22:22.760
<v Brett Cannon>And that kind of stuff.

00:22:22.980 --> 00:22:24.420
<v Brett Cannon>So we're still figuring things out.

00:22:25.040 --> 00:22:27.320
<v Brett Cannon>The one thing I will say about this council is

00:22:27.760 --> 00:22:32.260
<v Brett Cannon>it is explicitly meant to be in charge of the sentence specifications

00:22:32.900 --> 00:22:35.160
<v Brett Cannon>and the whole website in general for packaging up python.org

00:22:36.020 --> 00:22:37.780
<v Brett Cannon>where you can go and read about all the specs

00:22:38.450 --> 00:22:42.000
<v Brett Cannon>relating to the kind of the PyPI slash PyPA side of the world.

00:22:42.920 --> 00:22:43.240
<v Brett Cannon>But otherwise,

00:22:43.960 --> 00:22:45.920
<v Brett Cannon>PEP772, which established this council,

00:22:46.600 --> 00:22:48.400
<v Brett Cannon>did not try to dictate what this council is going to do.

00:22:48.540 --> 00:22:54.280
<v Brett Cannon>So we are actually also currently talking about what do we want to see our function be, right?

00:22:54.440 --> 00:22:59.980
<v Brett Cannon>Because we're under the auspices of the PSF, hence why they ran the election.

00:23:00.500 --> 00:23:03.820
<v Brett Cannon>But we're trying to figure out how do we represent people,

00:23:04.000 --> 00:23:04.140
<v Brett Cannon>basically,

00:23:04.480 --> 00:23:04.560
<v Brett Cannon>right?

00:23:04.620 --> 00:23:06.100
<v Brett Cannon>Like we represent specs,

00:23:06.270 --> 00:23:10.360
<v Brett Cannon>but we also want to somehow act as like the public point, I think,

00:23:10.640 --> 00:23:14.280
<v Brett Cannon>for and I'm speaking for myself as generalizing for my fellow council members.

00:23:14.880 --> 00:23:15.040
<v Brett Cannon>Basically,

00:23:15.200 --> 00:23:17.040
<v Brett Cannon>it's kind of the public face of packaging in Python,

00:23:17.260 --> 00:23:17.340
<v Brett Cannon>right?

00:23:17.500 --> 00:23:21.280
<v Brett Cannon>Who can you go talk to to maybe get funding to make something better?

00:23:21.720 --> 00:23:29.820
<v Brett Cannon>Or if we need to go talk to like integrators like the links distros or conda or anyone else who integrates Python and a bunch of other stuff.

00:23:30.160 --> 00:23:32.520
<v Brett Cannon>who can you go talk to to get some answers,

00:23:33.070 --> 00:23:36.680
<v Brett Cannon>get some questions answered or kind of talk to them to figure out what they need and all that stuff.

00:23:36.860 --> 00:23:39.080
<v Brett Cannon>Kind of similar to what the SC does around the language,

00:23:39.880 --> 00:23:41.060
<v Brett Cannon>but obviously it's basically about packaging.

00:23:41.760 --> 00:23:42.340
<v Brett Cannon>And probably honestly,

00:23:42.760 --> 00:23:44.420
<v Brett Cannon>I'm going to guess a little bit around workflow as well,

00:23:44.930 --> 00:23:48.020
<v Brett Cannon>because it doesn't fall basically stuff that doesn't fall under the language that way.

00:23:48.980 --> 00:23:49.260
<v Brett Cannon>But yeah,

00:23:49.470 --> 00:23:53.020
<v Brett Cannon>it was just basically I noticed admin and also I figured I'd bring that up.

00:23:53.960 --> 00:23:54.200
<v Brett Cannon>And yeah,

00:23:54.420 --> 00:23:56.040
<v Brett Cannon>it's as I said, we've just been going.

00:23:56.960 --> 00:23:59.560
<v Brett Cannon>We have a issue tracker on GitHub.

00:23:59.740 --> 00:24:02.480
<v Brett Cannon>We haven't made public yet because we're getting our initial notes and stuff set up,

00:24:02.640 --> 00:24:02.840
<v Brett Cannon>but we're

00:24:02.840 --> 00:24:04.340
<v Brett Cannon>going to try to be as transparent as possible.

00:24:05.020 --> 00:24:09.060
<v Brett Cannon>So like we're planning to keep our media notes up there and keep track of what we're going

00:24:09.060 --> 00:24:12.520
<v Brett Cannon>to talk about, what's on deck and all that and be accessible.

00:24:13.480 --> 00:24:16.240
<v Brett Cannon>Discuss the Python.org is where a lot of the packaging discussions happen.

00:24:16.660 --> 00:24:17.620
<v Brett Cannon>So you can find us there.

00:24:18.220 --> 00:24:18.680
<v Brett Cannon>And yeah,

00:24:19.160 --> 00:24:22.119
<v Brett Cannon>we're getting going, but we have high hopes that we can hopefully up the throughput

00:24:22.140 --> 00:24:29.960
<v Brett Cannon>a bit on stuff because poor Paul Moore used to be the vanilla dictator for packaging.

00:24:30.630 --> 00:24:36.200
<v Brett Cannon>Now it gets a bit of a break and at least spreading across the five of us will start

00:24:36.200 --> 00:24:36.800
<v Brett Cannon>some things a bit.

00:24:37.120 --> 00:24:41.280
<v Brett Cannon>And we can keep doing stuff such as talking about wheel variants.

00:24:41.510 --> 00:24:45.900
<v Brett Cannon>And I know there's wheel next being proposed and a whole bunch of kind of big projects that

00:24:46.080 --> 00:24:49.160
<v Brett Cannon>hopefully we can help go forward and make packaging for Python just better for everybody.

00:24:49.320 --> 00:24:52.880
<v Calvin Hendryx-Parker>Well, because packaging has always been such a simple and easy story in the Python world.

00:24:53.220 --> 00:24:54.640
<v Brett Cannon>So simple and so easy.

00:24:54.900 --> 00:24:55.300
<v Brett Cannon>I know.

00:24:55.920 --> 00:25:00.700
<v Brett Cannon>C and Fortran and all these other languages made it so easy for us to integrate that I

00:25:00.800 --> 00:25:01.940
<v Brett Cannon>don't know why anyone's ever complained.

00:25:02.160 --> 00:25:03.220
<v Calvin Hendryx-Parker>I'm glad you all are here.

00:25:03.560 --> 00:25:12.680
<v Nick Muoh>Yeah, but I will say like the journey of Python packaging from like cheese to eggs to wheels,

00:25:13.280 --> 00:25:18.300
<v Nick Muoh>it's actually been pretty amazing to see the evolution of Python packaging.

00:25:18.400 --> 00:25:18.980
<v Nick Muoh>So thanks,

00:25:19.300 --> 00:25:21.100
<v Nick Muoh>Brett, for championing that.

00:25:21.190 --> 00:25:22.800
<v Nick Muoh>I feel like you care so much about that.

00:25:23.220 --> 00:25:28.040
<v Nick Muoh>And that's why it's still you and others are making it such a pleasant,

00:25:28.260 --> 00:25:29.180
<v Nick Muoh>at least more pleasant

00:25:29.740 --> 00:25:30.100
<v Nick Muoh>experience.

00:25:30.680 --> 00:25:31.120
<v Brett Cannon>Well, thank you.

00:25:31.120 --> 00:25:32.040
<v Brett Cannon>I appreciate the kind words.

00:25:32.240 --> 00:25:32.400
<v Brett Cannon>Yeah,

00:25:32.580 --> 00:25:34.980
<v Brett Cannon>it has been a bit of a journey for packaging and Python in general,

00:25:35.160 --> 00:25:35.280
<v Brett Cannon>right?

00:25:35.360 --> 00:25:40.000
<v Brett Cannon>Like the creation of the Cheeshop slash Python Packaging Index,

00:25:40.260 --> 00:25:40.960
<v Brett Cannon>because people were too worried

00:25:41.080 --> 00:25:42.980
<v Brett Cannon>we'd upset managers if we called it the Cheeshop.

00:25:43.320 --> 00:25:44.500
<v Brett Cannon>FYI, if you go to a 404,

00:25:44.840 --> 00:25:47.660
<v Brett Cannon>it still links to the Cheeshop sketch on YouTube from Monty Python.

00:25:48.000 --> 00:25:48.320
<v Brett Cannon>for a reason.

00:25:48.720 --> 00:25:49.880
<v Calvin Hendryx-Parker>I'm glad that's still there

00:25:49.940 --> 00:25:52.060
<v Calvin Hendryx-Parker>because I will, being of an age,

00:25:52.140 --> 00:25:53.680
<v Calvin Hendryx-Parker>I will still call it the cheese shop.

00:25:55.160 --> 00:25:56.100
<v Brett Cannon>Yeah, you've got to do it

00:25:56.320 --> 00:25:56.960
<v Brett Cannon>on PyPI, though.

00:25:57.240 --> 00:25:58.160
<v Michael Kennedy>Oh, PyPI, okay.

00:25:58.360 --> 00:25:59.240
<v Brett Cannon>Sorry if I said Python.

00:25:59.480 --> 00:26:00.000
<v Brett Cannon>That was my

00:26:00.240 --> 00:26:00.300
<v Brett Cannon>mistake.

00:26:00.460 --> 00:26:00.720
<v Michael Kennedy>No, no.

00:26:01.900 --> 00:26:02.760
<v Calvin Hendryx-Parker>Yes, there it is.

00:26:03.220 --> 00:26:03.500
<v Brett Cannon>There you go.

00:26:05.840 --> 00:26:06.740
<v Brett Cannon>But yeah, it's been a journey,

00:26:06.980 --> 00:26:07.840
<v Brett Cannon>right? And it's been very driven

00:26:07.900 --> 00:26:08.880
<v Brett Cannon>by the community and,

00:26:09.240 --> 00:26:09.800
<v Brett Cannon>to be frank,

00:26:10.100 --> 00:26:11.280
<v Brett Cannon>very much driven by volunteers.

00:26:12.380 --> 00:26:13.900
<v Brett Cannon>So it's moved at the space,

00:26:14.160 --> 00:26:15.879
<v Brett Cannon>the speed of people having time

00:26:15.900 --> 00:26:16.200
<v Brett Cannon>to help,

00:26:16.550 --> 00:26:17.840
<v Brett Cannon>but it's been progressing

00:26:18.130 --> 00:26:19.660
<v Brett Cannon>forward and it's something I think everyone cares about.

00:26:20.040 --> 00:26:21.820
<v Brett Cannon>And as I kind of joked, doing the best

00:26:21.830 --> 00:26:23.840
<v Brett Cannon>we can in the face of Python being the glue

00:26:23.980 --> 00:26:25.760
<v Brett Cannon>language of the internet means we have to

00:26:25.860 --> 00:26:27.700
<v Brett Cannon>integrate with some languages who do not really

00:26:28.000 --> 00:26:29.800
<v Brett Cannon>have their up together in terms of

00:26:30.040 --> 00:26:30.780
<v Brett Cannon>packaging themselves.

00:26:31.170 --> 00:26:31.780
<v Brett Cannon>And so how do we

00:26:31.900 --> 00:26:32.540
<v Brett Cannon>work around that,

00:26:32.720 --> 00:26:33.020
<v Brett Cannon>right? Like

00:26:33.780 --> 00:26:35.700
<v Brett Cannon>we can go to the C community or

00:26:35.800 --> 00:26:37.840
<v Brett Cannon>C++ or any of these other compiled languages

00:26:37.870 --> 00:26:38.140
<v Brett Cannon>and go like,

00:26:38.360 --> 00:26:38.420
<v Brett Cannon>well,

00:26:38.580 --> 00:26:39.320
<v Brett Cannon>hey, how do you package?

00:26:39.520 --> 00:26:39.580
<v Brett Cannon>Like,

00:26:39.920 --> 00:26:40.080
<v Brett Cannon>oh,

00:26:40.400 --> 00:26:40.740
<v Brett Cannon>shell scripts.

00:26:41.540 --> 00:26:41.660
<v Brett Cannon>Oh,

00:26:41.910 --> 00:26:42.320
<v Brett Cannon>okay, great.

00:26:42.610 --> 00:26:43.640
<v Brett Cannon>So how do we integrate with that?

00:26:43.800 --> 00:26:43.920
<v Brett Cannon>Right?

00:26:44.140 --> 00:26:45.340
<v Brett Cannon>So it's been quite the journey.

00:26:45.740 --> 00:26:52.900
<v Brett Cannon>And I would like to think we've gotten to a point where the ergonomics are good and it's not painful anymore.

00:26:54.020 --> 00:26:58.780
<v Brett Cannon>But I think there's some opportunities for it to be better and definitely faster.

00:26:59.480 --> 00:27:01.140
<v Brett Cannon>And obviously the work's not done.

00:27:01.440 --> 00:27:01.660
<v Carol Willing>Yeah,

00:27:01.900 --> 00:27:02.180
<v Carol Willing>I mean,

00:27:02.440 --> 00:27:03.620
<v Carol Willing>it's been, I mean,

00:27:03.840 --> 00:27:05.880
<v Carol Willing>just the council itself,

00:27:06.740 --> 00:27:11.880
<v Carol Willing>it's been a multi-year journey just to get the PEP approved and written.

00:27:12.780 --> 00:27:12.980
<v Carol Willing>And,

00:27:14.100 --> 00:27:25.220
<v Carol Willing>you know, it was great to see the number of folks that ran for the Packaging Council and really pleased by the people that were elected or chosen.

00:27:26.530 --> 00:27:30.200
<v Carol Willing>I think it's a really great cross section of historical knowledge,

00:27:31.020 --> 00:27:32.020
<v Carol Willing>scientific knowledge,

00:27:33.360 --> 00:27:33.580
<v Carol Willing>you know,

00:27:33.940 --> 00:27:36.000
<v Carol Willing>across a number of different tools.

00:27:37.040 --> 00:27:38.500
<v Carol Willing>And, you know,

00:27:38.840 --> 00:27:44.180
<v Carol Willing>having Brett having been part of the steering council when we did the inaugural steering council,

00:27:44.660 --> 00:27:46.100
<v Carol Willing>bootstrapping something like this,

00:27:46.260 --> 00:27:47.420
<v Carol Willing>there's some knowledge in there.

00:27:47.440 --> 00:27:48.420
<v Carol Willing>So that's awesome.

00:27:48.860 --> 00:27:52.240
<v Carol Willing>But one of the things I'm super happy about is,

00:27:52.620 --> 00:27:52.840
<v Carol Willing>you know,

00:27:53.000 --> 00:27:56.940
<v Carol Willing>having more emphasis on the standards and,

00:27:58.320 --> 00:28:00.580
<v Carol Willing>you know, there's going to be different tool implementations.

00:28:00.740 --> 00:28:01.300
<v Carol Willing>and that's great.

00:28:01.630 --> 00:28:04.680
<v Carol Willing>I would love to see us get more of a focus

00:28:05.060 --> 00:28:06.940
<v Carol Willing>on the consumers of packages

00:28:07.580 --> 00:28:10.740
<v Carol Willing>and people who are using our packages on a day-to-day

00:28:11.120 --> 00:28:12.720
<v Carol Willing>and making that more pleasant

00:28:13.090 --> 00:28:15.560
<v Carol Willing>like when you're using a GPU and other things

00:28:15.820 --> 00:28:17.260
<v Carol Willing>because the landscape has changed.

00:28:17.760 --> 00:28:20.800
<v Carol Willing>So thank you, Brett, for continuing to serve us.

00:28:21.300 --> 00:28:21.480
<v Michael Kennedy>Yeah,

00:28:21.700 --> 00:28:21.960
<v Michael Kennedy>thanks, Brett.

00:28:22.560 --> 00:28:25.220
<v Michael Kennedy>You have this legacy of launching councils.

00:28:25.760 --> 00:28:26.620
<v Michael Kennedy>So that's very cool.

00:28:27.780 --> 00:28:31.200
<v Michael Kennedy>I feel like it seemed like packaging was kind of solved.

00:28:31.310 --> 00:28:33.680
<v Michael Kennedy>And then uv came along and we're like, well, now it's really solved.

00:28:34.020 --> 00:28:35.100
<v Michael Kennedy>But then we also have AI,

00:28:35.700 --> 00:28:39.620
<v Michael Kennedy>which means CUDA and all the crazy stuff that Wheel Next is trying to solve.

00:28:39.790 --> 00:28:44.680
<v Michael Kennedy>And we've got the brand new PEP that got accepted for Emscripten and WebAssembly,

00:28:45.060 --> 00:28:46.180
<v Michael Kennedy>which is a whole nother angle.

00:28:46.540 --> 00:28:48.400
<v Michael Kennedy>And so I don't feel like it's solved for sure.

00:28:48.720 --> 00:28:48.960
<v Carol Willing>Well,

00:28:49.140 --> 00:28:51.120
<v Carol Willing>and Pixie has done a great job,

00:28:51.380 --> 00:28:51.460
<v Carol Willing>too,

00:28:51.620 --> 00:28:52.880
<v Carol Willing>in the scientific community.

00:28:53.140 --> 00:28:53.420
<v Carol Willing>So,

00:28:53.780 --> 00:28:57.400
<v Carol Willing>I mean, I think tools are kind of reflecting their users,

00:28:57.940 --> 00:29:00.420
<v Carol Willing>and I think the standards are what makes that possible.

00:29:00.900 --> 00:29:06.140
<v Carol Willing>So it's great to see more domains being represented within packaging.

00:29:06.400 --> 00:29:06.880
<v Nick Muoh>A question,

00:29:07.620 --> 00:29:14.820
<v Nick Muoh>Brett, is the council going to be consulting or working with our security developer in residence?

00:29:15.210 --> 00:29:15.680
<v Nick Muoh>Because of like,

00:29:16.100 --> 00:29:17.340
<v Nick Muoh>as you know, like we have all these,

00:29:17.530 --> 00:29:19.200
<v Nick Muoh>we have more CVEs being,

00:29:19.880 --> 00:29:20.520
<v Nick Muoh>you know, issued,

00:29:20.920 --> 00:29:22.420
<v Nick Muoh>especially attacking packaging.

00:29:23.080 --> 00:29:23.320
<v Brett Cannon>Yeah.

00:29:23.510 --> 00:29:23.660
<v Brett Cannon>So,

00:29:25.590 --> 00:29:25.780
<v Brett Cannon>yeah,

00:29:26.020 --> 00:29:26.920
<v Brett Cannon>there's Seth Michael Larson,

00:29:27.400 --> 00:29:30.460
<v Brett Cannon>who's the security developer in residence for Python itself.

00:29:30.940 --> 00:29:32.440
<v Brett Cannon>There's Michael Fiedler,

00:29:32.590 --> 00:29:34.640
<v Brett Cannon>who works on PyPI directly.

00:29:35.640 --> 00:29:36.040
<v Brett Cannon>And yeah,

00:29:37.130 --> 00:29:38.040
<v Brett Cannon>pretty much everyone on the council

00:29:38.150 --> 00:29:41.000
<v Brett Cannon>either knows either of them directly personally

00:29:41.930 --> 00:29:45.740
<v Brett Cannon>or because we're working under the PSF in a way,

00:29:46.860 --> 00:29:48.640
<v Brett Cannon>we know we can always just ask like,

00:29:48.750 --> 00:29:50.660
<v Brett Cannon>hey, can we talk to Mike about something or whatever?

00:29:51.250 --> 00:29:54.120
<v Brett Cannon>But I message Mike and Seth directly about stuff.

00:29:55.200 --> 00:29:56.560
<v Brett Cannon>So it's definitely there.

00:29:57.120 --> 00:30:00.060
<v Brett Cannon>And for instance, I will say part of my platform for running

00:30:00.400 --> 00:30:01.860
<v Brett Cannon>was on secure supply chain,

00:30:02.110 --> 00:30:02.240
<v Brett Cannon>right?

00:30:02.480 --> 00:30:08.020
<v Brett Cannon>So I will say I personally am interested slash invested in trying to see that improve.

00:30:08.200 --> 00:30:12.000
<v Brett Cannon>So security and how packaging plays into that is definitely going to be a thing.

00:30:12.280 --> 00:30:13.520
<v Brett Cannon>Now, I will say we,

00:30:14.100 --> 00:30:16.660
<v Brett Cannon>PyPI does not refer to us or vice versa.

00:30:17.080 --> 00:30:18.940
<v Brett Cannon>So it's very much going to be a collaboration.

00:30:20.060 --> 00:30:23.700
<v Brett Cannon>But we are definitely aware that it is something that we want to work with PyPI to make sure

00:30:23.700 --> 00:30:26.560
<v Brett Cannon>that anything we do will work well for them and everyone else in the ecosystem,

00:30:26.760 --> 00:30:26.820
<v Brett Cannon>right?

00:30:27.120 --> 00:30:29.800
<v Brett Cannon>Because as Carol pointed out, we have a pretty good, I think,

00:30:30.180 --> 00:30:31.200
<v Brett Cannon>breadth of coverage for the

00:30:31.200 --> 00:30:35.860
<v Brett Cannon>very broad community that we have in Python on this council to make sure that all corners,

00:30:36.200 --> 00:30:37.320
<v Brett Cannon>whether it's scripting,

00:30:37.780 --> 00:30:38.000
<v Brett Cannon>web,

00:30:38.360 --> 00:30:38.820
<v Brett Cannon>data science,

00:30:39.540 --> 00:30:40.780
<v Brett Cannon>or an LLM,

00:30:41.120 --> 00:30:43.260
<v Brett Cannon>you name it, I think someone on this

00:30:43.400 --> 00:30:46.000
<v Brett Cannon>council has a connection to somebody to make sure that we cover all the bases.

00:30:46.260 --> 00:30:46.820
<v Brett Cannon>And that includes

00:30:47.040 --> 00:30:47.200
<v Brett Cannon>security.

00:30:47.620 --> 00:30:50.920
<v Brett Cannon>And it's definitely something we have top of mind to make sure that we address.

00:30:51.280 --> 00:30:51.380
<v Brett Cannon>So.

00:30:51.740 --> 00:30:51.840
<v Michael Kennedy>Yeah.

00:30:52.220 --> 00:30:53.020
<v Michael Kennedy>That's a good question.

00:30:53.620 --> 00:30:57.519
<v Michael Kennedy>The security side of any sort of packaging is definitely so front

00:30:57.540 --> 00:31:04.380
<v Calvin Hendryx-Parker>center these days you know but you know else is many many parsing many things speed michael speed

00:31:04.540 --> 00:31:10.560
<v Calvin Hendryx-Parker>is the feature we've talked about this before and it's interesting nick brought up jev we brought up

00:31:10.560 --> 00:31:15.180
<v Calvin Hendryx-Parker>the fact like this speed is a feature for like the a lot of the astral tools like rough and uv

00:31:15.780 --> 00:31:21.860
<v Calvin Hendryx-Parker>but most folks don't think of python as being fast at parsing json the this article here is a blog

00:31:21.840 --> 00:31:27.500
<v Calvin Hendryx-Parker>post from Daniel Lemire. He benchmarks a new wrapper around SIMD JSON,

00:31:27.720 --> 00:31:29.260
<v Calvin Hendryx-Parker>which is a C++ library

00:31:29.280 --> 00:31:29.980
<v Calvin Hendryx-Parker>I've never used,

00:31:30.140 --> 00:31:35.780
<v Calvin Hendryx-Parker>but he wrote a fast SIMD JSON wrapper around it and actually demonstrates parsing

00:31:36.100 --> 00:31:39.640
<v Calvin Hendryx-Parker>tens of gigabytes of JSON per second in Python.

00:31:40.160 --> 00:31:40.260
<v Calvin Hendryx-Parker>Now,

00:31:40.560 --> 00:31:40.900
<v Calvin Hendryx-Parker>there's a trick,

00:31:41.400 --> 00:31:41.560
<v Calvin Hendryx-Parker>obviously.

00:31:42.200 --> 00:31:43.080
<v Calvin Hendryx-Parker>Doing things in

00:31:43.280 --> 00:31:44.980
<v Calvin Hendryx-Parker>async, you know, is always not necessarily straightforward.

00:31:45.140 --> 00:31:46.280
<v Calvin Hendryx-Parker>Doing things threading is

00:31:46.420 --> 00:31:47.080
<v Calvin Hendryx-Parker>obviously never straightforward.

00:31:47.840 --> 00:31:50.220
<v Calvin Hendryx-Parker>Free threading brings a new wrinkle to all this, and a lot of

00:31:50.120 --> 00:31:55.840
<v Calvin Hendryx-Parker>folks have probably not tried out the free threading capabilities of Python 3.14 and now 3.15.

00:31:56.200 --> 00:32:00.360
<v Calvin Hendryx-Parker>This is actually a really good example, or at least a toy use case where boy, does it make a

00:32:00.660 --> 00:32:00.980
<v Calvin Hendryx-Parker>big difference.

00:32:01.280 --> 00:32:02.520
<v Calvin Hendryx-Parker>So he goes through,

00:32:03.740 --> 00:32:06.020
<v Calvin Hendryx-Parker>he's got a dual Xeon 64 core machine.

00:32:06.630 --> 00:32:07.440
<v Calvin Hendryx-Parker>So he's actually able

00:32:07.440 --> 00:32:14.520
<v Calvin Hendryx-Parker>to take that free threading and spread this workload across 64 different cores simultaneously.

00:32:15.160 --> 00:32:20.520
<v Calvin Hendryx-Parker>This is a GitHub archive snapshot of, I think, what, eight hours of GitHub data,

00:32:21.090 --> 00:32:21.440
<v Calvin Hendryx-Parker>which turns out

00:32:21.440 --> 00:32:25.040
<v Calvin Hendryx-Parker>to be about 7.6 gigabytes of JSON decompressed,

00:32:25.410 --> 00:32:26.820
<v Calvin Hendryx-Parker>2.2 million events,

00:32:27.440 --> 00:32:27.940
<v Calvin Hendryx-Parker>runs it through.

00:32:28.300 --> 00:32:28.860
<v Calvin Hendryx-Parker>The very

00:32:29.060 --> 00:32:31.560
<v Calvin Hendryx-Parker>first one he did was basically a non-threaded,

00:32:31.990 --> 00:32:32.120
<v Calvin Hendryx-Parker>non,

00:32:32.580 --> 00:32:34.440
<v Calvin Hendryx-Parker>it's like single-threaded version of this.

00:32:35.050 --> 00:32:37.060
<v Calvin Hendryx-Parker>So if you are looking at the standard JSON library,

00:32:37.630 --> 00:32:41.419
<v Calvin Hendryx-Parker>it only basically takes about 42 seconds to

00:32:41.440 --> 00:32:47.160
<v Calvin Hendryx-Parker>parsed the whole set, which are basically new line return JSON messages for every pull request that

00:32:47.160 --> 00:32:47.920
<v Calvin Hendryx-Parker>has happened in GitHub.

00:32:48.420 --> 00:32:51.940
<v Calvin Hendryx-Parker>So you can see here 0.18 gigabytes per second of throughput.

00:32:52.460 --> 00:32:52.580
<v Calvin Hendryx-Parker>The

00:32:53.200 --> 00:32:56.120
<v Calvin Hendryx-Parker>wrapper, he does the same thing for ORJSON,

00:32:57.160 --> 00:32:58.140
<v Calvin Hendryx-Parker>fast SIMD,

00:32:58.400 --> 00:33:00.280
<v Calvin Hendryx-Parker>JSON map mini, which is another approach he

00:33:00.400 --> 00:33:00.500
<v Calvin Hendryx-Parker>took.

00:33:00.780 --> 00:33:01.740
<v Calvin Hendryx-Parker>And then the lazy views,

00:33:01.920 --> 00:33:04.740
<v Calvin Hendryx-Parker>which is basically don't actually construct the dictionaries until I

00:33:04.940 --> 00:33:06.200
<v Calvin Hendryx-Parker>ask for them version of this.

00:33:06.640 --> 00:33:10.380
<v Calvin Hendryx-Parker>That got the 2.13 gigabytes per second. So that's obviously not as

00:33:10.320 --> 00:33:12.000
<v Calvin Hendryx-Parker>as fast as tens of gigabytes per second,

00:33:12.430 --> 00:33:13.880
<v Calvin Hendryx-Parker>then moving into free threading.

00:33:13.890 --> 00:33:16.720
<v Calvin Hendryx-Parker>So if you open up and start using all 64 cores,

00:33:17.280 --> 00:33:18.380
<v Calvin Hendryx-Parker>and still in one process,

00:33:18.940 --> 00:33:19.680
<v Calvin Hendryx-Parker>one Python process,

00:33:19.960 --> 00:33:21.800
<v Calvin Hendryx-Parker>64 cores on free threading,

00:33:23.120 --> 00:33:28.140
<v Calvin Hendryx-Parker>65.7 gigabytes per second of reading in that JSON file.

00:33:28.520 --> 00:33:30.240
<v Calvin Hendryx-Parker>So I think you could see some magic here

00:33:30.240 --> 00:33:33.660
<v Calvin Hendryx-Parker>if you combined a large JSON workload with tools like JEV,

00:33:34.020 --> 00:33:35.700
<v Calvin Hendryx-Parker>where you wanted to do some real-time processing

00:33:35.890 --> 00:33:38.240
<v Calvin Hendryx-Parker>and pull back the results as fast as possible.

00:33:38.800 --> 00:33:40.880
<v Calvin Hendryx-Parker>This is a very valid use case for this,

00:33:41.460 --> 00:33:42.220
<v Calvin Hendryx-Parker>but it's only one of many.

00:33:42.740 --> 00:33:45.420
<v Calvin Hendryx-Parker>The other bit here, he uses that there's a lazy trick

00:33:45.440 --> 00:33:46.140
<v Calvin Hendryx-Parker>in here, which I mentioned,

00:33:46.320 --> 00:33:48.500
<v Calvin Hendryx-Parker>which he doesn't instantiate the dictionaries

00:33:48.620 --> 00:33:49.500
<v Calvin Hendryx-Parker>until they're asked for.

00:33:49.860 --> 00:33:51.260
<v Calvin Hendryx-Parker>But in many cases that may be useful.

00:33:51.660 --> 00:33:54.320
<v Calvin Hendryx-Parker>You may only want to filter or pull back portions

00:33:54.440 --> 00:33:55.840
<v Calvin Hendryx-Parker>of the data and not the whole dataset.

00:33:56.040 --> 00:33:57.480
<v Calvin Hendryx-Parker>'Cause like for example, in this use case,

00:33:57.820 --> 00:34:01.380
<v Calvin Hendryx-Parker>I think each message is about 3K inside that dataset.

00:34:01.740 --> 00:34:04.580
<v Calvin Hendryx-Parker>So fairly large object each time.

00:34:05.180 --> 00:34:05.700
<v Calvin Hendryx-Parker>Let's see here.

00:34:06.320 --> 00:34:11.879
<v Calvin Hendryx-Parker>basically a 31 times speed up over single chord regular speed,

00:34:12.220 --> 00:34:12.840
<v Calvin Hendryx-Parker>which is pretty incredible.

00:34:14.060 --> 00:34:17.840
<v Calvin Hendryx-Parker>It's also a simple, you kind of got to take this a little bit of grain of salt.

00:34:18.080 --> 00:34:18.580
<v Calvin Hendryx-Parker>It's a simple use

00:34:18.780 --> 00:34:18.940
<v Calvin Hendryx-Parker>case,

00:34:19.679 --> 00:34:22.520
<v Calvin Hendryx-Parker>but if you've got the work that looks kind of like this, you may want to check out,

00:34:22.720 --> 00:34:22.960
<v Calvin Hendryx-Parker>he's what

00:34:22.990 --> 00:34:28.060
<v Calvin Hendryx-Parker>the maintainer of this wrapper around the simdjson library itself.

00:34:28.590 --> 00:34:29.260
<v Calvin Hendryx-Parker>The benchmarks,

00:34:29.800 --> 00:34:30.620
<v Calvin Hendryx-Parker>he links to them

00:34:30.790 --> 00:34:34.040
<v Calvin Hendryx-Parker>in the code. So in that blog post, you'll see the code used in the blog post.

00:34:34.500 --> 00:34:35.260
<v Calvin Hendryx-Parker>Here's all the,

00:34:35.379 --> 00:34:39.340
<v Calvin Hendryx-Parker>if you wanted to reproduce this yourself on your own hardware and see how that goes.

00:34:40.100 --> 00:34:40.980
<v Calvin Hendryx-Parker>And it's

00:34:41.120 --> 00:34:45.020
<v Calvin Hendryx-Parker>available on PyPI as fast as MDJSON.

00:34:45.179 --> 00:34:45.460
<v Calvin Hendryx-Parker>Actually,

00:34:45.679 --> 00:34:47.700
<v Calvin Hendryx-Parker>there's a new release since I looked at this

00:34:48.110 --> 00:34:48.679
<v Calvin Hendryx-Parker>an hour ago.

00:34:48.929 --> 00:34:52.540
<v Calvin Hendryx-Parker>So very active work going into this. I think it's getting a little bit of attention

00:34:52.850 --> 00:34:54.840
<v Calvin Hendryx-Parker>out there in the internets.

00:34:55.480 --> 00:34:56.240
<v Michael Kennedy>I'm impressed.

00:34:56.780 --> 00:34:57.240
<v Michael Kennedy>That's pretty awesome.

00:34:57.480 --> 00:34:59.640
<v Calvin Hendryx-Parker>And kind of a not explored free

00:34:59.760 --> 00:35:03.299
<v Calvin Hendryx-Parker>threading much because I don't have this kind of a workload. But boy, does that make a great

00:35:03.320 --> 00:35:09.080
<v Calvin Hendryx-Parker>argument for python is not slow once we got unleashed upon all the cores yeah i mean there's

00:35:09.080 --> 00:35:15.300
<v Brett Cannon>an old saying in the community right python's fast enough and yeah he really is and prototype it and

00:35:15.300 --> 00:35:19.620
<v Brett Cannon>if it's not fast enough then you start to look at what you have to do speed up and i think free

00:35:19.780 --> 00:35:23.000
<v Brett Cannon>threading adds a new wrinkle to it because originally it was always the answer yeah make

00:35:23.000 --> 00:35:26.840
<v Brett Cannon>sure you're using the proper data structure and algorithms right that usually got people most of

00:35:26.840 --> 00:35:30.820
<v Brett Cannon>the way and then at the end you'd throw in that extra wrapper traditionally would have been in

00:35:30.840 --> 00:35:32.460
<v Brett Cannon>like C or C++ nowadays,

00:35:32.900 --> 00:35:33.300
<v Brett Cannon>probably Rust.

00:35:33.640 --> 00:35:33.880
<v Calvin Hendryx-Parker>Probably Rust,

00:35:34.050 --> 00:35:34.140
<v Calvin Hendryx-Parker>yeah.

00:35:34.190 --> 00:35:35.800
<v Brett Cannon>But I think free threading throws in a new,

00:35:36.300 --> 00:35:36.620
<v Brett Cannon>well,

00:35:36.840 --> 00:35:38.020
<v Brett Cannon>can you go multi-threaded

00:35:38.140 --> 00:35:39.000
<v Brett Cannon>and get a win that way,

00:35:39.270 --> 00:35:39.380
<v Brett Cannon>right?

00:35:39.700 --> 00:35:40.740
<v Brett Cannon>And because, I mean,

00:35:41.040 --> 00:35:42.900
<v Brett Cannon>you want to make sure you go down

00:35:43.100 --> 00:35:45.080
<v Brett Cannon>the ladder of complexity,

00:35:45.400 --> 00:35:45.540
<v Brett Cannon>right?

00:35:45.590 --> 00:35:47.760
<v Brett Cannon>And the shortest one is write data structures,

00:35:48.100 --> 00:35:48.500
<v Brett Cannon>write algorithm,

00:35:48.880 --> 00:35:50.100
<v Brett Cannon>then it's throw in free threading,

00:35:50.500 --> 00:35:51.720
<v Brett Cannon>then you start talking about

00:35:51.750 --> 00:35:52.900
<v Brett Cannon>whether or not you want to go all the way out

00:35:53.060 --> 00:35:53.760
<v Brett Cannon>to a whole other language.

00:35:54.260 --> 00:35:54.340
<v Calvin Hendryx-Parker>Yeah,

00:35:54.530 --> 00:35:56.740
<v Calvin Hendryx-Parker>because each step gets progressively

00:35:57.030 --> 00:35:58.980
<v Calvin Hendryx-Parker>more difficult to triage and debug.

00:35:59.500 --> 00:35:59.860
<v Brett Cannon>Exactly.

00:36:00.340 --> 00:36:02.380
<v Brett Cannon>But I think that's a good point to me, Calvin.

00:36:02.500 --> 00:36:02.740
<v Brett Cannon>It's like,

00:36:02.970 --> 00:36:04.240
<v Brett Cannon>I think this is what's going to start happening

00:36:04.270 --> 00:36:06.500
<v Brett Cannon>is people are going to start using free threading,

00:36:06.660 --> 00:36:07.340
<v Brett Cannon>especially in the libraries

00:36:07.490 --> 00:36:08.960
<v Brett Cannon>where you directly don't have to maintain

00:36:09.370 --> 00:36:10.340
<v Brett Cannon>or manage the complexity

00:36:10.700 --> 00:36:11.960
<v Brett Cannon>and it will take care of it for you.

00:36:12.360 --> 00:36:12.940
<v Brett Cannon>In which case,

00:36:13.310 --> 00:36:14.740
<v Brett Cannon>I think things start to open up a bit

00:36:14.830 --> 00:36:16.620
<v Brett Cannon>under these new free threading builds.

00:36:17.080 --> 00:36:18.200
<v Calvin Hendryx-Parker>And IO is always a big one,

00:36:18.380 --> 00:36:18.440
<v Calvin Hendryx-Parker>right?

00:36:18.740 --> 00:36:21.640
<v Calvin Hendryx-Parker>How could we massively split apart a file,

00:36:21.980 --> 00:36:24.500
<v Calvin Hendryx-Parker>the giant file and do something fast with it with Python?

00:36:24.880 --> 00:36:25.480
<v Calvin Hendryx-Parker>So these benchmarks,

00:36:25.720 --> 00:36:26.420
<v Calvin Hendryx-Parker>I'll also note,

00:36:26.780 --> 00:36:28.460
<v Calvin Hendryx-Parker>this was post reading it into memory

00:36:28.680 --> 00:36:30.300
<v Calvin Hendryx-Parker>and then doing the processing

00:36:30.320 --> 00:36:32.920
<v Calvin Hendryx-Parker>timing started. So it was all in memory and then processed.

00:36:33.160 --> 00:36:36.080
<v Calvin Hendryx-Parker>So there was no IO from disk involved

00:36:36.100 --> 00:36:36.600
<v Calvin Hendryx-Parker>in those benchmarks.

00:36:37.040 --> 00:36:42.380
<v Carol Willing>Is there a similar library in Rust that maybe got compared to this?

00:36:42.680 --> 00:36:42.780
<v Carol Willing>Because

00:36:43.140 --> 00:36:43.980
<v Carol Willing>it seems pretty cool,

00:36:44.140 --> 00:36:48.860
<v Carol Willing>but it seems like a natural intention would be to do something similar in Rust.

00:36:49.280 --> 00:36:49.400
<v Michael Kennedy>Oh,

00:36:49.580 --> 00:36:50.780
<v Michael Kennedy>our JSON might be Rust.

00:36:51.300 --> 00:36:52.800
<v Michael Kennedy>That was in part of it.

00:36:53.600 --> 00:36:55.000
<v Michael Kennedy>It was in the second part.

00:36:55.160 --> 00:36:56.660
<v Calvin Hendryx-Parker>It was in the second part. They'd benchmarked it.

00:36:56.820 --> 00:36:58.180
<v Calvin Hendryx-Parker>This one is C++.

00:36:59.100 --> 00:36:59.400
<v Carol Willing>Right.

00:36:59.820 --> 00:36:59.960
<v Calvin Hendryx-Parker>Yeah.

00:37:00.220 --> 00:37:01.120
<v Carol Willing>It's only a matter of days,

00:37:01.360 --> 00:37:01.420
<v Carol Willing>right?

00:37:01.560 --> 00:37:02.360
<v Calvin Hendryx-Parker>Then this will be rust.

00:37:04.960 --> 00:37:05.080
<v Brett Cannon>Yeah.

00:37:05.080 --> 00:37:07.340
<v Calvin Hendryx-Parker>I'll just tell my agent to go port it right now.

00:37:07.640 --> 00:37:07.760
<v Brett Cannon>Yeah.

00:37:07.870 --> 00:37:12.080
<v Brett Cannon>Like I'm sure someone's wrapped, maybe, or Jason's wrapped around Surday or something,

00:37:12.300 --> 00:37:13.320
<v Brett Cannon>because I know today's a big one.

00:37:13.420 --> 00:37:14.700
<v Brett Cannon>Or Armin just wrote,

00:37:14.860 --> 00:37:17.000
<v Brett Cannon>Armin Roenacker just released a new,

00:37:17.240 --> 00:37:18.260
<v Brett Cannon>Jason,

00:37:18.440 --> 00:37:22.540
<v Brett Cannon>a new alternative to Surday for very specific reasons.

00:37:22.900 --> 00:37:23.040
<v Brett Cannon>Yeah.

00:37:23.420 --> 00:37:24.900
<v Brett Cannon>It'd be interesting to know what that would be.

00:37:24.900 --> 00:37:27.520
<v Calvin Hendryx-Parker>We're talking tens of gigabytes per second.

00:37:28.040 --> 00:37:28.120
<v Brett Cannon>Yeah.

00:37:28.200 --> 00:37:29.460
<v Calvin Hendryx-Parker>If you have those kinds of problems,

00:37:29.760 --> 00:37:31.100
<v Calvin Hendryx-Parker>I'd love to talk to you actually,

00:37:31.760 --> 00:37:32.060
<v Calvin Hendryx-Parker>because that sounds

00:37:32.220 --> 00:37:32.520
<v Calvin Hendryx-Parker>pretty cool.

00:37:32.960 --> 00:37:33.380
<v Carol Willing>Very cool.

00:37:33.740 --> 00:37:37.020
<v Michael Kennedy>I am pretty sure that ORJSON is Rust.

00:37:37.280 --> 00:37:38.020
<v Calvin Hendryx-Parker>I think it is.

00:37:38.040 --> 00:37:39.120
<v Michael Kennedy>It's 55% Python,

00:37:39.280 --> 00:37:40.140
<v Michael Kennedy>44% Rust.

00:37:40.300 --> 00:37:41.120
<v Michael Kennedy>It could be written in shell.

00:37:41.320 --> 00:37:41.680
<v Michael Kennedy>I don't know.

00:37:41.960 --> 00:37:43.780
<v Michael Kennedy>The core, it could be like the tight loop could be in shell.

00:37:43.860 --> 00:37:44.420
<v Michael Kennedy>It's 1% shell,

00:37:44.760 --> 00:37:45.380
<v Michael Kennedy>but unlikely.

00:37:46.320 --> 00:37:51.140
<v Calvin Hendryx-Parker>I mean, that's how we used to distribute installers was the executable compressed archives that

00:37:51.220 --> 00:37:52.120
<v Calvin Hendryx-Parker>would look like a shell script.

00:37:52.160 --> 00:37:52.400
<v Calvin Hendryx-Parker>You just,

00:37:52.700 --> 00:37:52.840
<v Calvin Hendryx-Parker>you know,

00:37:53.220 --> 00:37:54.620
<v Calvin Hendryx-Parker>sh passed the script.

00:37:55.020 --> 00:37:55.500
<v Michael Kennedy>That's funny.

00:37:55.660 --> 00:37:56.080
<v Michael Kennedy>All right, well,

00:37:56.560 --> 00:37:59.620
<v Michael Kennedy>let's get on to something totally different and talk about speed.

00:38:00.020 --> 00:38:01.000
<v Calvin Hendryx-Parker>Okay, speed sounds great.

00:38:01.420 --> 00:38:01.800
<v Calvin Hendryx-Parker>Let's do it, Michael.

00:38:02.020 --> 00:38:02.940
<v Michael Kennedy>Let's do it, speed.

00:38:03.540 --> 00:38:07.620
<v Michael Kennedy>So I want to come back to a former fellow Portlander,

00:38:07.830 --> 00:38:08.440
<v Michael Kennedy>Miguel Grinberg,

00:38:08.660 --> 00:38:10.120
<v Michael Kennedy>who's now, I believe, in Ireland,

00:38:10.340 --> 00:38:10.620
<v Michael Kennedy>Scotland,

00:38:10.780 --> 00:38:11.420
<v Michael Kennedy>one of those two places,

00:38:11.910 --> 00:38:12.780
<v Michael Kennedy>unless he's moved again.

00:38:13.200 --> 00:38:18.580
<v Michael Kennedy>But he has a yearly Python performance benchmark that he puts out.

00:38:18.770 --> 00:38:24.720
<v Michael Kennedy>So I thought, hey, it's kind of 315 week if you count seven-day rolling window instead of a calendar week.

00:38:25.000 --> 00:38:28.760
<v Michael Kennedy>So we just had Python 3.15 come out and he said it's time again for this.

00:38:28.790 --> 00:38:29.580
<v Michael Kennedy>So I thought, you know what?

00:38:29.800 --> 00:38:31.560
<v Michael Kennedy>Let's have a look and just talk real quick about it.

00:38:31.640 --> 00:38:32.340
<v Michael Kennedy>This one will be pretty short.

00:38:32.740 --> 00:38:34.600
<v Michael Kennedy>It's got some interesting things.

00:38:34.780 --> 00:38:37.080
<v Michael Kennedy>It's not a super complex benchmark,

00:38:37.480 --> 00:38:38.520
<v Michael Kennedy>so keep that in mind.

00:38:38.980 --> 00:38:41.420
<v Michael Kennedy>But it does involve a whole bunch of versions,

00:38:41.620 --> 00:38:42.080
<v Michael Kennedy>all the,

00:38:42.280 --> 00:38:44.780
<v Michael Kennedy>hold on, even one of the unsupported

00:38:44.930 --> 00:38:45.800
<v Michael Kennedy>older 3.10s.

00:38:45.800 --> 00:38:48.380
<v Michael Kennedy>I don't know, 3.10 sounds still pretty new to me, but it's not.

00:38:48.580 --> 00:38:53.220
<v Michael Kennedy>And PyPy, the JIT compiled version or JIT running version for JIT.

00:38:53.460 --> 00:38:54.740
<v Michael Kennedy>and node and rust.

00:38:54.980 --> 00:38:55.640
<v Michael Kennedy>It also says,

00:38:55.860 --> 00:38:57.380
<v Michael Kennedy>well, let's take the regular CPython,

00:38:57.900 --> 00:38:59.060
<v Michael Kennedy>the one with the experimental

00:38:59.300 --> 00:39:00.880
<v Michael Kennedy>JIT and the one with free threading,

00:39:01.260 --> 00:39:02.400
<v Michael Kennedy>and then do all those comparisons.

00:39:02.920 --> 00:39:04.160
<v Michael Kennedy>So let's look through.

00:39:04.380 --> 00:39:04.480
<v Michael Kennedy>It

00:39:04.580 --> 00:39:08.420
<v Michael Kennedy>says, hey, we're just going to do a single threaded Fibonacci type of pretty big Fibonacci,

00:39:08.760 --> 00:39:08.940
<v Michael Kennedy>depending

00:39:09.160 --> 00:39:10.260
<v Michael Kennedy>on how you write it, I suppose,

00:39:10.600 --> 00:39:11.280
<v Michael Kennedy>40 numbers.

00:39:11.760 --> 00:39:15.160
<v Michael Kennedy>Fibonacci gets big fast, but you can memoize it and stuff

00:39:15.180 --> 00:39:16.220
<v Michael Kennedy>and it's a lot quicker.

00:39:16.440 --> 00:39:18.460
<v Michael Kennedy>But I imagine this is trying to make it hard, right?

00:39:18.760 --> 00:39:19.300
<v Michael Kennedy>Well, yeah, because

00:39:19.220 --> 00:39:22.500
<v Michael Kennedy>it takes 15 seconds to answer the question on Python 3.10.

00:39:22.730 --> 00:39:23.580
<v Michael Kennedy>So there's a bunch of charts,

00:39:23.610 --> 00:39:24.560
<v Michael Kennedy>you can go look at the article.

00:39:25.070 --> 00:39:28.920
<v Michael Kennedy>But if you think about performance of even 3.10, which had some of

00:39:29.000 --> 00:39:31.000
<v Michael Kennedy>that faster CPython work done to it,

00:39:31.220 --> 00:39:34.480
<v Michael Kennedy>it's 44% as fast as today's Python.

00:39:34.860 --> 00:39:37.440
<v Michael Kennedy>So we've gotten 56% faster.

00:39:37.740 --> 00:39:39.040
<v Michael Kennedy>That's a significant improvement,

00:39:39.390 --> 00:39:41.240
<v Michael Kennedy>even just for this sort of straightforward stuff. And there's a

00:39:41.340 --> 00:39:42.720
<v Michael Kennedy>lot of things that are not factored in here.

00:39:42.940 --> 00:39:46.060
<v Michael Kennedy>But then 3.11 was 1.7 times faster.

00:39:46.520 --> 00:39:47.040
<v Michael Kennedy>You'll see that

00:39:47.180 --> 00:39:52.120
<v Michael Kennedy>3.11 and I think 3.14 are the two that make really big jumps a lot of the times here.

00:39:52.500 --> 00:39:53.840
<v Michael Kennedy>So we've got 3.11,

00:39:54.140 --> 00:39:55.920
<v Michael Kennedy>which is 1.7 times faster.

00:39:56.280 --> 00:40:01.600
<v Michael Kennedy>And then the jump from 14 to 15 is only 3% faster.

00:40:01.760 --> 00:40:03.420
<v Michael Kennedy>So not dramatically faster,

00:40:03.800 --> 00:40:05.160
<v Michael Kennedy>but that's for this particular benchmark.

00:40:05.360 --> 00:40:07.480
<v Michael Kennedy>There's other areas where it would be dramatically faster.

00:40:07.900 --> 00:40:09.240
<v Michael Kennedy>And PyPy312,

00:40:09.780 --> 00:40:11.220
<v Michael Kennedy>5.5 times as fast.

00:40:11.620 --> 00:40:13.020
<v Michael Kennedy>Node, not as fast,

00:40:13.400 --> 00:40:14.680
<v Michael Kennedy>but almost five times faster.

00:40:14.900 --> 00:40:15.060
<v Michael Kennedy>Rust,

00:40:15.320 --> 00:40:17.020
<v Michael Kennedy>you know, just a little 77 times faster.

00:40:17.920 --> 00:40:18.200
<v Michael Kennedy>I don't know.

00:40:19.020 --> 00:40:21.380
<v Michael Kennedy>I'll pull up the graph for you all.

00:40:21.580 --> 00:40:23.160
<v Michael Kennedy>Quick thoughts before I go on to the next one.

00:40:23.380 --> 00:40:23.800
<v Michael Kennedy>Anyone have thoughts?

00:40:24.180 --> 00:40:28.420
<v Nick Muoh>It still amazes me how PyPy consistently is,

00:40:29.100 --> 00:40:30.240
<v Nick Muoh>at least with these kinds of workloads,

00:40:31.079 --> 00:40:32.720
<v Nick Muoh>showcases how performant it is.

00:40:33.340 --> 00:40:33.760
<v Michael Kennedy>I know.

00:40:33.760 --> 00:40:35.740
<v Michael Kennedy>I always think I should really check this out.

00:40:35.910 --> 00:40:37.600
<v Michael Kennedy>But I think the challenge is

00:40:38.060 --> 00:40:40.000
<v Michael Kennedy>then you want to go and import some library

00:40:40.200 --> 00:40:41.540
<v Michael Kennedy>and it's incompatible with PyPy.

00:40:41.630 --> 00:40:43.880
<v Michael Kennedy>And you're like, well, it goes from pretty,

00:40:44.080 --> 00:40:46.580
<v Michael Kennedy>you know, five times faster to impossible and doesn't run.

00:40:46.650 --> 00:40:46.960
<v Michael Kennedy>Like, oh,

00:40:47.320 --> 00:40:48.340
<v Michael Kennedy>I'm not doing that, you know?

00:40:48.560 --> 00:40:52.780
<v Nick Muoh>I do remember announcements with the latest release of PyPy

00:40:53.100 --> 00:40:58.020
<v Nick Muoh>that they're trying to interface better with the CPython EBI

00:40:58.420 --> 00:41:02.020
<v Nick Muoh>so that external libraries can just like work in PyPy.

00:41:02.320 --> 00:41:04.660
<v Nick Muoh>So that's an exciting news, but still, it's so amazing.

00:41:04.960 --> 00:41:08.860
<v Nick Muoh>What surprises me is Node still being faster than Python.

00:41:09.330 --> 00:41:10.460
<v Nick Muoh>And I really,

00:41:10.700 --> 00:41:12.880
<v Nick Muoh>I have respect for TypeScript and JavaScript,

00:41:13.280 --> 00:41:14.780
<v Nick Muoh>But still, it still amazes me.

00:41:14.860 --> 00:41:16.980
<v Nick Muoh>It just makes me realize how much engineering

00:41:17.200 --> 00:41:19.900
<v Nick Muoh>went to the V8 engine.

00:41:20.100 --> 00:41:20.180
<v Nick Muoh>Yeah.

00:41:20.200 --> 00:41:21.140
<v Nick Muoh>It's amazing.

00:41:22.040 --> 00:41:24.560
<v Brett Cannon>It's decades of fully funded,

00:41:24.900 --> 00:41:25.920
<v Brett Cannon>full team support

00:41:26.550 --> 00:41:27.320
<v Brett Cannon>versus Python,

00:41:27.700 --> 00:41:30.200
<v Brett Cannon>which as Michael alluded to, right?

00:41:30.800 --> 00:41:33.000
<v Brett Cannon>Just started maybe five,

00:41:33.160 --> 00:41:33.780
<v Brett Cannon>six years ago,

00:41:34.080 --> 00:41:35.300
<v Brett Cannon>getting external funded,

00:41:35.700 --> 00:41:37.740
<v Brett Cannon>let's make it faster kind of performance stuff,

00:41:38.000 --> 00:41:38.120
<v Brett Cannon>right?

00:41:38.200 --> 00:41:39.980
<v Brett Cannon>And having people like that and stuff

00:41:40.100 --> 00:41:42.100
<v Brett Cannon>start to bring stuff out from Cinder and all that, right?

00:41:42.280 --> 00:41:42.360
<v Brett Cannon>Yeah.

00:41:42.980 --> 00:41:43.680
<v Brett Cannon>It's, it's,

00:41:43.900 --> 00:41:44.780
<v Brett Cannon>it's timelines.

00:41:45.000 --> 00:41:45.600
<v Brett Cannon>The other thing though,

00:41:46.060 --> 00:41:49.900
<v Brett Cannon>is Michael's not shown us what the JIT numbers are with the experimental

00:41:50.140 --> 00:41:50.240
<v Brett Cannon>JIT.

00:41:50.560 --> 00:41:51.520
<v Brett Cannon>So we'll also keep going.

00:41:51.620 --> 00:41:52.040
<v Brett Cannon>Let's keep going.

00:41:52.540 --> 00:41:52.920
<v Michael Kennedy>Let's see.

00:41:53.320 --> 00:41:54.740
<v Michael Kennedy>So yeah.

00:41:54.740 --> 00:41:55.440
<v Michael Kennedy>So we've got the,

00:41:55.840 --> 00:41:57.860
<v Michael Kennedy>the next graph is we've got the standard,

00:41:58.060 --> 00:41:59.160
<v Michael Kennedy>which is just what you get when

00:41:59.160 --> 00:41:59.680
<v Michael Kennedy>you write Python.

00:41:59.840 --> 00:42:02.520
<v Michael Kennedy>Then you've got the experimental JIT, which you can turn on and the free threading.

00:42:02.820 --> 00:42:03.800
<v Michael Kennedy>And this is single threaded.

00:42:04.020 --> 00:42:06.520
<v Michael Kennedy>So the free threading will not get better,

00:42:06.960 --> 00:42:07.760
<v Michael Kennedy>but if it doesn't get worse,

00:42:08.160 --> 00:42:08.580
<v Michael Kennedy>that's actually

00:42:08.580 --> 00:42:09.400
<v Michael Kennedy>a huge improvement.

00:42:09.800 --> 00:42:11.400
<v Michael Kennedy>And I think that's actually the biggest takeaway

00:42:11.980 --> 00:42:13.980
<v Michael Kennedy>from this one is for this Fibonacci thing.

00:42:14.460 --> 00:42:15.740
<v Michael Kennedy>It really doesn't that much of a difference,

00:42:15.940 --> 00:42:17.340
<v Michael Kennedy>but Python 3.13,

00:42:17.600 --> 00:42:18.640
<v Michael Kennedy>free threading was,

00:42:18.780 --> 00:42:19.800
<v Michael Kennedy>I don't know, 20% slower.

00:42:20.220 --> 00:42:23.320
<v Michael Kennedy>And now free threading is actually just on par

00:42:23.700 --> 00:42:25.020
<v Michael Kennedy>with regular CPython.

00:42:25.040 --> 00:42:25.320
<v Michael Kennedy>That's great.

00:42:26.260 --> 00:42:27.460
<v Michael Kennedy>That's actually really good.

00:42:27.580 --> 00:42:28.720
<v Michael Kennedy>And the JIT, as Brett points out,

00:42:28.740 --> 00:42:29.720
<v Michael Kennedy>is like 20% faster.

00:42:30.020 --> 00:42:31.340
<v Calvin Hendryx-Parker>Yeah, I think Nick brought it up

00:42:31.340 --> 00:42:32.120
<v Calvin Hendryx-Parker>with like the compatibility.

00:42:32.500 --> 00:42:34.720
<v Calvin Hendryx-Parker>Like PyPy had problems with importing

00:42:35.120 --> 00:42:36.300
<v Calvin Hendryx-Parker>some package you want to use.

00:42:36.740 --> 00:42:38.080
<v Calvin Hendryx-Parker>Now, even the folks over at EVE Online

00:42:38.200 --> 00:42:39.080
<v Calvin Hendryx-Parker>are like, we're fast enough.

00:42:39.320 --> 00:42:39.520
<v Calvin Hendryx-Parker>finally,

00:42:39.960 --> 00:42:41.540
<v Calvin Hendryx-Parker>let's just use the box Python.

00:42:42.380 --> 00:42:43.420
<v Calvin Hendryx-Parker>And now we've got all the benefits

00:42:43.580 --> 00:42:45.580
<v Calvin Hendryx-Parker>of a giant library of ecosystem stuff.

00:42:46.380 --> 00:42:46.700
<v Michael Kennedy>Exactly.

00:42:46.860 --> 00:42:47.180
<v Michael Kennedy>Guess what?

00:42:47.640 --> 00:42:48.220
<v Michael Kennedy>If we upgrade,

00:42:48.620 --> 00:42:50.500
<v Michael Kennedy>all right, let's go a little farther.

00:42:50.600 --> 00:42:51.300
<v Michael Kennedy>So the next one is the bubble sort.

00:42:51.300 --> 00:42:52.380
<v Calvin Hendryx-Parker>That was always a sketchy path.

00:42:52.460 --> 00:42:55.020
<v Calvin Hendryx-Parker>Like they were on such an experimental version of Python

00:42:55.500 --> 00:42:56.400
<v Calvin Hendryx-Parker>with their whole production.

00:42:56.640 --> 00:42:57.220
<v Calvin Hendryx-Parker>That is impressive.

00:42:57.819 --> 00:42:58.140
<v Michael Kennedy>Yeah.

00:42:58.420 --> 00:43:00.700
<v Brett Cannon>They stuck it out with Stackless for a long time.

00:43:00.960 --> 00:43:01.420
<v Calvin Hendryx-Parker>Long time.

00:43:01.780 --> 00:43:02.380
<v Calvin Hendryx-Parker>Long time.

00:43:02.720 --> 00:43:03.320
<v Michael Kennedy>Until this year.

00:43:03.680 --> 00:43:04.900
<v Michael Kennedy>Yeah, I just had them on Talk Python.

00:43:05.140 --> 00:43:05.660
<v Michael Kennedy>So yeah.

00:43:06.060 --> 00:43:06.200
<v Michael Kennedy>All right.

00:43:06.220 --> 00:43:08.720
<v Michael Kennedy>The next one is the Fibonacci with four threads.

00:43:08.980 --> 00:43:10.580
<v Michael Kennedy>I think this gets pretty interesting

00:43:10.920 --> 00:43:13.680
<v Michael Kennedy>and it shows some really interesting improvements.

00:43:14.220 --> 00:43:16.200
<v Michael Kennedy>So we've got maybe if you run four threads

00:43:16.410 --> 00:43:17.640
<v Michael Kennedy>to answer the Fibonacci question

00:43:18.080 --> 00:43:19.920
<v Michael Kennedy>compared to the others like JIT and standard,

00:43:20.200 --> 00:43:21.280
<v Michael Kennedy>it's, I don't know,

00:43:21.620 --> 00:43:21.840
<v Michael Kennedy>20,

00:43:22.080 --> 00:43:23.940
<v Michael Kennedy>25% time it takes.

00:43:24.040 --> 00:43:24.880
<v Michael Kennedy>So that's four times faster,

00:43:25.280 --> 00:43:26.740
<v Michael Kennedy>which if you add four threads

00:43:26.920 --> 00:43:27.960
<v Michael Kennedy>and you get four times faster,

00:43:28.300 --> 00:43:28.840
<v Michael Kennedy>wow, that's good.

00:43:28.980 --> 00:43:29.380
<v Calvin Hendryx-Parker>That's pretty good.

00:43:29.660 --> 00:43:30.900
<v Michael Kennedy>People who haven't done multi-threading before,

00:43:31.130 --> 00:43:33.680
<v Michael Kennedy>you rarely get as many times improvement

00:43:33.900 --> 00:43:35.660
<v Michael Kennedy>as you have CPUs you've added to it, right?

00:43:35.800 --> 00:43:37.300
<v Michael Kennedy>There's a lot of coordination and other things.

00:43:37.740 --> 00:43:38.620
<v Brett Cannon>It is usually not linear.

00:43:38.700 --> 00:43:39.060
<v Brett Cannon>So,

00:43:39.380 --> 00:43:39.580
<v Nick Muoh>yeah,

00:43:40.100 --> 00:43:41.160
<v Nick Muoh>this is actually pretty impressive.

00:43:42.280 --> 00:43:52.140
<v Nick Muoh>Just shows like for the longest time is actually kind of amazing that the language like Python that is compared to like C or Java is not as fast,

00:43:52.300 --> 00:43:56.380
<v Nick Muoh>was able to like garner the attention and love of so many people.

00:43:56.940 --> 00:43:58.860
<v Nick Muoh>And it was good enough for so many things.

00:43:59.420 --> 00:44:03.880
<v Nick Muoh>And now it's just like getting better and better now. It's actually quite remarkable.

00:44:04.220 --> 00:44:04.640
<v Nick Muoh>Absolutely.

00:44:05.200 --> 00:44:10.820
<v Michael Kennedy>And also the JIT from 3.14 to 3.15 has gotten quite a bit better as well.

00:44:11.060 --> 00:44:11.540
<v Michael Kennedy>So that's

00:44:11.610 --> 00:44:12.000
<v Michael Kennedy>pretty interesting.

00:44:12.580 --> 00:44:13.100
<v Michael Kennedy>What else,

00:44:13.260 --> 00:44:14.980
<v Michael Kennedy>what else do we got to take away from here? I don't know.

00:44:15.240 --> 00:44:15.940
<v Calvin Hendryx-Parker>I would say.

00:44:16.210 --> 00:44:19.720
<v Calvin Hendryx-Parker>What was it, Brett, who said like Python is like the second best choice for everything. I think

00:44:19.900 --> 00:44:20.580
<v Calvin Hendryx-Parker>that's not true anymore.

00:44:20.960 --> 00:44:21.160
<v Michael Kennedy>Yeah.

00:44:21.410 --> 00:44:22.020
<v Michael Kennedy>I don't think it's,

00:44:22.210 --> 00:44:22.640
<v Michael Kennedy>I don't know.

00:44:23.040 --> 00:44:24.020
<v Michael Kennedy>There's certainly.

00:44:24.120 --> 00:44:28.580
<v Nick Muoh>Well, your AI will probably always choose Python for certain projects.

00:44:28.920 --> 00:44:30.100
<v Calvin Hendryx-Parker>So it's really the first

00:44:30.280 --> 00:44:30.700
<v Nick Muoh>choice for everything.

00:44:30.740 --> 00:44:31.380
<v Calvin Hendryx-Parker>It's the first choice.

00:44:31.550 --> 00:44:31.680
<v Calvin Hendryx-Parker>Yeah.

00:44:32.060 --> 00:44:33.860
<v Michael Kennedy>Yeah, it's head-to-head on JavaScript,

00:44:34.050 --> 00:44:35.440
<v Michael Kennedy>or if you ask it to do a web thing,

00:44:35.490 --> 00:44:37.380
<v Michael Kennedy>it probably does JavaScript if you don't guide it.

00:44:37.610 --> 00:44:39.220
<v Michael Kennedy>But if you ask it to do any sort of data thing,

00:44:39.310 --> 00:44:40.140
<v Michael Kennedy>it's definitely doing Python.

00:44:40.620 --> 00:44:42.720
<v Nick Muoh>Yeah, playwright is Python.

00:44:43.919 --> 00:44:47.300
<v Brett Cannon>And to be fair to PyPy, right,

00:44:47.450 --> 00:44:49.260
<v Brett Cannon>they also have to keep up with the language,

00:44:49.570 --> 00:44:49.660
<v Brett Cannon>right,

00:44:49.860 --> 00:44:50.520
<v Brett Cannon>intended to change,

00:44:50.720 --> 00:44:53.620
<v Brett Cannon>hence why they're not on 3.14 or 3.15,

00:44:53.840 --> 00:44:57.300
<v Brett Cannon>while the built-in JIT just gets to piggyback on all the other work.

00:44:58.059 --> 00:44:58.780
<v Michael Kennedy>Yeah, 100%.

00:44:58.800 --> 00:45:01.620
<v Brett Cannon>JIT comparison is not a direct one-to-one that way because of that.

00:45:01.820 --> 00:45:06.440
<v Michael Kennedy>I also want to give a quick shout out to some of the new things we got that are utterly untested here.

00:45:06.780 --> 00:45:08.000
<v Michael Kennedy>This is, I wrote one function,

00:45:08.240 --> 00:45:09.860
<v Michael Kennedy>and in that one function,

00:45:10.120 --> 00:45:12.700
<v Michael Kennedy>I ran it a bunch, sometimes with threads, sometimes with JIT,

00:45:12.880 --> 00:45:13.280
<v Michael Kennedy>sometimes without,

00:45:13.540 --> 00:45:14.460
<v Michael Kennedy>and it did a thing,

00:45:14.660 --> 00:45:14.780
<v Michael Kennedy>right?

00:45:15.100 --> 00:45:24.340
<v Michael Kennedy>What we don't see is we don't see the effect of lazy imports for really large applications or things that need super quick startup time, and then they're gone like a CLI tool.

00:45:24.720 --> 00:45:31.500
<v Michael Kennedy>We don't see the specialized and adaptive interpreter or even the JIT really get to kick in very much because it's one or two functions.

00:45:31.740 --> 00:45:33.560
<v Michael Kennedy>if you had 10,000 functions

00:45:34.040 --> 00:45:35.680
<v Michael Kennedy>and it was a big, interesting application,

00:45:36.120 --> 00:45:37.960
<v Michael Kennedy>those could also really start to make a difference.

00:45:38.860 --> 00:45:39.880
<v Brett Cannon>So the PSA,

00:45:40.060 --> 00:45:40.200
<v Nick Muoh>guys,

00:45:40.760 --> 00:45:42.740
<v Nick Muoh>the PSA is just upgrade your Python

00:45:43.000 --> 00:45:45.560
<v Nick Muoh>and you get performance for lunch.

00:45:45.560 --> 00:45:45.780
<v Nick Muoh>Oh, yeah.

00:45:46.180 --> 00:45:46.920
<v Brett Cannon>You will save money.

00:45:47.340 --> 00:45:47.540
<v Nick Muoh>Yeah.

00:45:47.920 --> 00:45:49.200
<v Nick Muoh>This is like legitimate free lunch.

00:45:49.560 --> 00:45:52.160
<v Brett Cannon>Yeah, no, I've had this discussion with people

00:45:52.420 --> 00:45:54.540
<v Brett Cannon>like when their managers don't want to punt

00:45:54.680 --> 00:45:55.700
<v Brett Cannon>and put off upgrading,

00:45:56.020 --> 00:45:57.340
<v Brett Cannon>the way to sell it to management is

00:45:57.680 --> 00:45:58.460
<v Brett Cannon>you will save money.

00:45:58.780 --> 00:45:59.700
<v Brett Cannon>Python will be faster.

00:45:59.800 --> 00:46:01.640
<v Brett Cannon>we'll use less memory very likely as well.

00:46:02.100 --> 00:46:03.720
<v Brett Cannon>And thus we will do more with less.

00:46:04.080 --> 00:46:05.260
<v Brett Cannon>So either we can scale higher

00:46:05.740 --> 00:46:07.420
<v Brett Cannon>or we can do the same things with less machines.

00:46:07.980 --> 00:46:09.700
<v Brett Cannon>So why not let us upgrade,

00:46:10.000 --> 00:46:10.060
<v Brett Cannon>please?

00:46:10.520 --> 00:46:11.400
<v Brett Cannon>So it's less of a pain

00:46:11.520 --> 00:46:13.740
<v Brett Cannon>because we only get to upgrade every two or four or five years.

00:46:14.040 --> 00:46:15.500
<v Brett Cannon>And it's a big hassle.

00:46:15.580 --> 00:46:16.920
<v Brett Cannon>It's like, no, upgrade continuously

00:46:16.960 --> 00:46:17.800
<v Brett Cannon>and you'll keep getting these ones.

00:46:18.100 --> 00:46:18.340
<v Carol Willing>Well,

00:46:18.560 --> 00:46:21.060
<v Carol Willing>and your libraries get far quicker too.

00:46:21.360 --> 00:46:24.040
<v Carol Willing>Like Napari using lazy imports

00:46:24.240 --> 00:46:26.700
<v Carol Willing>is far better than on a version

00:46:26.900 --> 00:46:28.520
<v Carol Willing>that can't use lazy imports.

00:46:28.620 --> 00:46:28.940
<v Carol Willing>So,

00:46:29.590 --> 00:46:29.720
<v Brett Cannon>yeah.

00:46:30.200 --> 00:46:36.100
<v Brett Cannon>And to quickly touch on what Michael said about the difficulty of judging performance on these micro benchmarks.

00:46:36.630 --> 00:46:36.760
<v Brett Cannon>Right.

00:46:36.810 --> 00:46:41.880
<v Brett Cannon>This is one reason PyPerformance that is used for benchmarking CPython and Python in general,

00:46:42.320 --> 00:46:53.620
<v Brett Cannon>tries to do benchmarks that are pulled from real world code and tries to be somewhat representative of actual work close to an extent while not taking hours and hours and hours to run.

00:46:53.960 --> 00:46:58.560
<v Brett Cannon>But another point that actually came up during the development 3.15 was the garbage collector,

00:46:59.020 --> 00:46:59.100
<v Brett Cannon>right?

00:46:59.270 --> 00:47:01.580
<v Brett Cannon>There was the incremental garbage collector put in.

00:47:01.940 --> 00:47:04.820
<v Brett Cannon>And we found out after people started to test with it,

00:47:05.140 --> 00:47:07.500
<v Brett Cannon>that it actually didn't work in large,

00:47:07.740 --> 00:47:11.280
<v Brett Cannon>certain key workloads and actually led to larger garbage collector pauses.

00:47:11.480 --> 00:47:14.740
<v Brett Cannon>Because I don't know how many people know this, but Python kind of has two garbage collectors,

00:47:14.960 --> 00:47:15.020
<v Brett Cannon>right?

00:47:15.100 --> 00:47:16.440
<v Brett Cannon>There's reference counting for most stuff,

00:47:16.700 --> 00:47:17.940
<v Brett Cannon>but then we have a garbage collector look for

00:47:18.060 --> 00:47:20.160
<v Brett Cannon>cycles because reference counting can't handle cycles.

00:47:20.700 --> 00:47:22.380
<v Brett Cannon>And we've had a generational one for a long time.

00:47:22.740 --> 00:47:26.840
<v Brett Cannon>and incremental will get to less pauses and hopefully better performance but we found out

00:47:26.840 --> 00:47:32.840
<v Brett Cannon>the one we did actually did make things better for most people but for certain people the the

00:47:33.160 --> 00:47:37.840
<v Brett Cannon>degenerate cases like the really bad edge case ones it was really slow and bad so we actually had to

00:47:37.900 --> 00:47:43.080
<v Brett Cannon>roll it back and um and mark shanning for instance currently has a proposal on how to kind of fix

00:47:43.200 --> 00:47:46.880
<v Brett Cannon>that but there's another point that it's really hard to measure unless people actually do this

00:47:46.940 --> 00:47:52.460
<v Brett Cannon>which is why we will always say as a psa from the python dev team please test the alphas and the

00:47:52.480 --> 00:47:52.820
<v Brett Cannon>And please,

00:47:53.130 --> 00:47:56.880
<v Brett Cannon>please at least test the release candidates on actual workloads to let us know

00:47:56.970 --> 00:47:58.080
<v Brett Cannon>where things may have gone wrong.

00:47:58.320 --> 00:48:01.360
<v Brett Cannon>Because if someone hadn't tested that and told us ahead of time, we would have shipped

00:48:01.900 --> 00:48:03.300
<v Brett Cannon>and we actually did in 3.14,

00:48:04.220 --> 00:48:06.100
<v Brett Cannon>a garbage collector that needed to get rolled back.

00:48:06.260 --> 00:48:08.140
<v Brett Cannon>So it just didn't hit people really badly.

00:48:08.420 --> 00:48:08.660
<v Michael Kennedy>Absolutely.

00:48:09.000 --> 00:48:11.960
<v Michael Kennedy>All right, let's have Carol close it out.

00:48:12.980 --> 00:48:14.340
<v Carol Willing>And our favorite topic,

00:48:15.160 --> 00:48:17.900
<v Carol Willing>artificial intelligence and tools around it.

00:48:18.980 --> 00:48:19.020
<v Carol Willing>So,

00:48:19.740 --> 00:48:19.900
<v Carol Willing>you know,

00:48:20.080 --> 00:48:24.840
<v Carol Willing>after being in the scientific ecosystem and data science and Jupyter ecosystem,

00:48:25.640 --> 00:48:25.820
<v Carol Willing>you know,

00:48:26.000 --> 00:48:28.400
<v Carol Willing>I've watched the evolution of,

00:48:28.560 --> 00:48:29.700
<v Carol Willing>you know, machine learning,

00:48:30.100 --> 00:48:30.560
<v Carol Willing>deep learning.

00:48:31.110 --> 00:48:32.700
<v Carol Willing>We call AI now.

00:48:33.840 --> 00:48:40.540
<v Carol Willing>And one of the things Paul Everitt and I have been sort of talking over the past year about,

00:48:41.040 --> 00:48:41.120
<v Carol Willing>hey,

00:48:41.480 --> 00:48:46.300
<v Carol Willing>you know, so much of it is built on top of the work that we've done with Python,

00:48:46.760 --> 00:48:51.620
<v Carol Willing>that it would be great to have a community benefit from it,

00:48:52.060 --> 00:48:54.000
<v Carol Willing>not just large corporations

00:48:55.500 --> 00:48:58.360
<v Carol Willing>steering the future of these tools.

00:48:58.880 --> 00:49:00.560
<v Carol Willing>And so back in March,

00:49:01.860 --> 00:49:03.720
<v Carol Willing>Georgie and Paul and I sat down and we

00:49:03.880 --> 00:49:09.400
<v Carol Willing>started talking about, hey, how could we use more local capacity?

00:49:09.690 --> 00:49:12.140
<v Carol Willing>How could we improve privacy,

00:49:13.180 --> 00:49:13.640
<v Carol Willing>security,

00:49:14.420 --> 00:49:18.300
<v Carol Willing>not leaking your data out to other services.

00:49:19.040 --> 00:49:23.140
<v Carol Willing>And Paul did a keynote back at

00:49:23.380 --> 00:49:27.140
<v Carol Willing>EuroPython this year and introduced what we're calling Satyrn.

00:49:27.780 --> 00:49:28.760
<v Carol Willing>And really,

00:49:28.970 --> 00:49:31.360
<v Carol Willing>Satyrn is looking at

00:49:31.760 --> 00:49:33.520
<v Carol Willing>doing AI your way,

00:49:33.980 --> 00:49:37.820
<v Carol Willing>which doesn't exclude the use of foundational models,

00:49:38.460 --> 00:49:39.960
<v Carol Willing>but really emphasizes

00:49:39.960 --> 00:49:47.800
<v Carol Willing>is that there's a spectrum of ways that you can use large language models and agents to suit your

00:49:48.120 --> 00:49:50.700
<v Carol Willing>particular workflow because one size does not fit all.

00:49:51.020 --> 00:49:54.200
<v Carol Willing>And from that EuroPython keynote,

00:49:54.390 --> 00:49:54.760
<v Carol Willing>he had a

00:49:54.880 --> 00:49:55.500
<v Carol Willing>call to action,

00:49:56.720 --> 00:49:58.920
<v Carol Willing>mostly for the Europe community,

00:49:59.380 --> 00:50:02.860
<v Carol Willing>but it has expanded out from that to kind of create

00:50:02.940 --> 00:50:10.500
<v Carol Willing>a collective of individuals that are passionate about making it Python first and trying to make

00:50:10.780 --> 00:50:12.600
<v Carol Willing>transparent and trusted AI.

00:50:13.600 --> 00:50:18.760
<v Carol Willing>So I've kind of helped with the effort to kind of get the scaffolding in

00:50:19.000 --> 00:50:19.280
<v Carol Willing>place.

00:50:19.600 --> 00:50:26.540
<v Carol Willing>And I'm happy to say that when 3.15 got released, there was also a model that up on

00:50:26.600 --> 00:50:35.280
<v Carol Willing>hugging face that the Satyrn team has trained on 315 that can run locally as well as on other

00:50:35.540 --> 00:50:35.640
<v Carol Willing>things.

00:50:36.140 --> 00:50:41.120
<v Carol Willing>And I think one of the key things is while we look at local first,

00:50:41.650 --> 00:50:43.100
<v Carol Willing>we're also looking at

00:50:43.480 --> 00:50:43.940
<v Carol Willing>trust first.

00:50:44.500 --> 00:50:44.720
<v Carol Willing>And,

00:50:45.260 --> 00:50:52.440
<v Carol Willing>you know, I could go back to my icon keynote back in 2023 when ChatGPT was still

00:50:52.340 --> 00:50:52.700
<v Carol Willing>in beta.

00:50:53.180 --> 00:50:55.880
<v Carol Willing>And one of the things that bothered me was,

00:50:56.170 --> 00:50:59.260
<v Carol Willing>do I trust this large language model?

00:50:59.570 --> 00:50:59.820
<v Carol Willing>Do I

00:51:00.000 --> 00:51:01.080
<v Carol Willing>trust how it was trained?

00:51:01.310 --> 00:51:02.460
<v Carol Willing>Do I trust it,

00:51:02.800 --> 00:51:03.060
<v Carol Willing>you know,

00:51:03.300 --> 00:51:04.340
<v Carol Willing>to be unbiased?

00:51:04.720 --> 00:51:07.100
<v Carol Willing>And while there's a lot of value

00:51:07.340 --> 00:51:07.560
<v Carol Willing>in it,

00:51:07.750 --> 00:51:11.620
<v Carol Willing>you still have to verify that it's doing what you think it's doing.

00:51:12.100 --> 00:51:13.620
<v Carol Willing>And so I think having

00:51:14.040 --> 00:51:15.920
<v Carol Willing>more options where,

00:51:16.600 --> 00:51:18.580
<v Carol Willing>you know, you don't always need a sledgehammer.

00:51:18.820 --> 00:51:20.340
<v Carol Willing>Sometimes a hammer is good enough.

00:51:20.680 --> 00:51:21.880
<v Carol Willing>And in this case,

00:51:22.120 --> 00:51:25.860
<v Carol Willing>sometimes you can get a lot of good stuff the last six months out of local models.

00:51:26.340 --> 00:51:26.640
<v Carol Willing>And,

00:51:27.540 --> 00:51:27.780
<v Carol Willing>you know,

00:51:28.050 --> 00:51:35.460
<v Carol Willing>the other key component is one of the keys that has made Python so successful is the language,

00:51:36.090 --> 00:51:37.560
<v Carol Willing>the ecosystem of libraries,

00:51:38.060 --> 00:51:44.300
<v Carol Willing>but also the huge commitment the community has about sharing learning materials,

00:51:44.860 --> 00:51:45.900
<v Carol Willing>educating each other,

00:51:46.760 --> 00:51:47.580
<v Carol Willing>spreading the knowledge.

00:51:48.000 --> 00:51:54.040
<v Carol Willing>And if all Satyrn did was provide these education and learning opportunities,

00:51:54.630 --> 00:51:58.580
<v Carol Willing>which is a big part of what we're taking from Jupyter,

00:51:58.920 --> 00:52:01.800
<v Carol Willing>Jupyter really helped accelerate learning,

00:52:02.060 --> 00:52:03.840
<v Carol Willing>sharing learning materials with folks.

00:52:04.120 --> 00:52:04.540
<v Carol Willing>And,

00:52:05.030 --> 00:52:05.380
<v Carol Willing>you know,

00:52:05.760 --> 00:52:09.300
<v Carol Willing>there's a team around sharing educational content,

00:52:09.710 --> 00:52:11.380
<v Carol Willing>both created by the team,

00:52:11.760 --> 00:52:15.260
<v Carol Willing>as well as highlighting things that are available within the community.

00:52:15.470 --> 00:52:17.120
<v Carol Willing>So it's still in the early stages,

00:52:17.620 --> 00:52:20.780
<v Carol Willing>but I think there's good energy behind it.

00:52:21.060 --> 00:52:24.360
<v Carol Willing>And I would love to see it grow more and more.

00:52:24.760 --> 00:52:37.200
<v Carol Willing>And the reason we kind of started in Europe was we felt like the continent as a whole was more focused on security,

00:52:37.580 --> 00:52:37.740
<v Carol Willing>privacy,

00:52:39.380 --> 00:52:41.140
<v Carol Willing>and the goal impact of AI.

00:52:41.960 --> 00:52:43.140
<v Michael Kennedy>Well, and being a European,

00:52:43.540 --> 00:52:50.720
<v Michael Kennedy>how much do you want to say our entire AI future hangs on large American tech companies or Chinese companies?

00:52:51.420 --> 00:52:53.500
<v Michael Kennedy>Maybe we should have some say in this, something like that, right?

00:52:53.640 --> 00:52:54.020
<v Carol Willing>Yeah,

00:52:54.420 --> 00:52:54.860
<v Carol Willing>well, I think,

00:52:55.040 --> 00:52:57.000
<v Carol Willing>I mean, everybody should have a say in it.

00:52:57.200 --> 00:52:59.180
<v Carol Willing>And I think, you know,

00:52:59.600 --> 00:53:01.560
<v Carol Willing>some of the large companies,

00:53:01.940 --> 00:53:02.500
<v Carol Willing>let's face it,

00:53:02.680 --> 00:53:08.440
<v Carol Willing>they're beholden to their shareholders or investors to maximize profits,

00:53:08.960 --> 00:53:16.280
<v Carol Willing>which doesn't always align with maximizing responsibility to the community and ethics and other things.

00:53:16.400 --> 00:53:16.720
<v Carol Willing>So,

00:53:17.660 --> 00:53:20.160
<v Carol Willing>you know, I think alternatives are always good.

00:53:20.380 --> 00:53:22.820
<v Carol Willing>It helps push ecosystems forward.

00:53:23.140 --> 00:53:28.820
<v Carol Willing>There's a lot of great stuff happening in bioscience and medical applications,

00:53:29.520 --> 00:53:34.740
<v Carol Willing>particularly with rare diseases that the foundational models have been hugely helpful for.

00:53:35.220 --> 00:53:35.940
<v Carol Willing>And so,

00:53:36.480 --> 00:53:38.140
<v Carol Willing>you know, it's not one or the other.

00:53:39.000 --> 00:53:41.720
<v Carol Willing>There's a spectrum of use cases.

00:53:42.300 --> 00:53:44.220
<v Carol Willing>There should be a spectrum of tools and approaches.

00:53:44.840 --> 00:53:48.480
<v Carol Willing>And as we navigate the understanding of it,

00:53:48.640 --> 00:53:50.760
<v Carol Willing>sharing that becomes more and more important,

00:53:51.160 --> 00:53:52.440
<v Carol Willing>which Python bites.

00:53:52.980 --> 00:53:55.740
<v Carol Willing>And Python to me for sharing this on a regular basis.

00:53:56.280 --> 00:53:58.020
<v Calvin Hendryx-Parker>I love the fact there's two models.

00:53:58.120 --> 00:54:06.320
<v Calvin Hendryx-Parker>You've got the smaller Ornith model and then the other one based on that Quinn 3827B powerhouse of a local model.

00:54:06.580 --> 00:54:07.660
<v Calvin Hendryx-Parker>I can't wait to try both of them.

00:54:08.020 --> 00:54:08.160
<v Carol Willing>Yeah.

00:54:08.320 --> 00:54:09.520
<v Carol Willing>I mean, it's pretty interesting.

00:54:09.680 --> 00:54:13.880
<v Carol Willing>And there's teams that, if you join the Discord,

00:54:14.260 --> 00:54:18.320
<v Carol Willing>that are working on these, how do you test and train?

00:54:19.580 --> 00:54:26.560
<v Carol Willing>And so we're trying to be open by default and the information and the workflows.

00:54:26.580 --> 00:54:26.900
<v Carol Willing>So,

00:54:27.420 --> 00:54:28.540
<v Carol Willing>you know, definitely reach out.

00:54:28.920 --> 00:54:31.780
<v Carol Willing>And yeah, it's got some good energy behind it.

00:54:32.020 --> 00:54:35.140
<v Calvin Hendryx-Parker>Are there other languages who are interested in participating?

00:54:36.360 --> 00:54:37.120
<v Carol Willing>I don't know.

00:54:37.450 --> 00:54:38.660
<v Carol Willing>I mean, there might be.

00:54:39.010 --> 00:54:41.640
<v Carol Willing>I mean, I could see maybe Rust having some interest,

00:54:42.140 --> 00:54:46.920
<v Carol Willing>but for now we've kind of scoped it to Python and,

00:54:47.840 --> 00:54:48.020
<v Carol Willing>you know,

00:54:48.380 --> 00:54:50.040
<v Carol Willing>trying to train something specifically

00:54:50.060 --> 00:54:56.740
<v Carol Willing>on Python 3.15 and the use cases that, you know, are new with 3.15 was something that

00:54:56.840 --> 00:54:57.680
<v Carol Willing>was really interesting.

00:54:58.030 --> 00:54:59.100
<v Carol Willing>But that's a really good question.

00:54:59.500 --> 00:55:01.500
<v Nick Muoh>I wonder where my R fellas,

00:55:02.080 --> 00:55:03.760
<v Nick Muoh>like the R language are,

00:55:03.920 --> 00:55:05.960
<v Nick Muoh>that would be a good language to add under

00:55:06.460 --> 00:55:06.840
<v Nick Muoh>the Satyrn.

00:55:06.840 --> 00:55:07.220
<v Nick Muoh>You know,

00:55:07.400 --> 00:55:07.940
<v Carol Willing>yeah.

00:55:08.630 --> 00:55:09.000
<v Carol Willing>I mean,

00:55:09.320 --> 00:55:09.700
<v Carol Willing>in fact,

00:55:10.600 --> 00:55:12.920
<v Carol Willing>Posit is having sort of a hackathon,

00:55:13.400 --> 00:55:15.460
<v Carol Willing>I think, in November that I'm going

00:55:15.640 --> 00:55:15.760
<v Carol Willing>to.

00:55:15.810 --> 00:55:19.740
<v Carol Willing>So that might be a great thing to kind of kick around the tires on.

00:55:19.940 --> 00:55:20.140
<v Nick Muoh>Yeah,

00:55:20.510 --> 00:55:21.640
<v Carol Willing>I want you to say, personally,

00:55:21.860 --> 00:55:26.620
<v Nick Muoh>I've always had trouble running local AI models,

00:55:27.270 --> 00:55:34.700
<v Nick Muoh>mainly because sometimes it was always hard to know which models could actually fit into my consumer-grade hardware.

00:55:35.380 --> 00:55:38.780
<v Nick Muoh>And so navigating that has always been not the fun part.

00:55:39.050 --> 00:55:45.300
<v Nick Muoh>So I'm really looking forward to participating in this because I believe you guys will probably do a better job of discussing.

00:55:45.780 --> 00:55:47.780
<v Nick Muoh>These are the kind of hardware you can run.

00:55:48.140 --> 00:55:50.360
<v Nick Muoh>This is the kind of models that can run on that hardware.

00:55:50.920 --> 00:55:52.040
<v Nick Muoh>This is some use cases,

00:55:52.260 --> 00:55:55.120
<v Nick Muoh>something as simple as categorizing or,

00:55:55.380 --> 00:55:55.960
<v Nick Muoh>you know,

00:55:56.360 --> 00:56:00.620
<v Nick Muoh>categorizing like your files to like helping you run a small,

00:56:01.120 --> 00:56:02.640
<v Nick Muoh>like automated business or something.

00:56:02.820 --> 00:56:04.820
<v Nick Muoh>That'll be cool to see what you guys do.

00:56:05.220 --> 00:56:09.480
<v Carol Willing>Well, and looping back to the start where you were talking about Marimo,

00:56:09.840 --> 00:56:16.480
<v Carol Willing>we've actually used some of the Marimo hub and the GPU access there to do some of this training.

00:56:17.320 --> 00:56:18.060
<v Carol Willing>So,

00:56:18.260 --> 00:56:21.140
<v Carol Willing>you know, so it doesn't have to be just your local laptop.

00:56:21.380 --> 00:56:21.980
<v Carol Willing>It can be,

00:56:22.440 --> 00:56:22.640
<v Carol Willing>you know,

00:56:23.000 --> 00:56:24.580
<v Carol Willing>something that is a little beefier.

00:56:25.380 --> 00:56:26.900
<v Michael Kennedy>Yeah, and looking at the size of the models,

00:56:27.120 --> 00:56:28.100
<v Michael Kennedy>they're not ginormous.

00:56:28.200 --> 00:56:28.300
<v Michael Kennedy>No.

00:56:28.360 --> 00:56:29.760
<v Michael Kennedy>You know, they're 10 billion parameters,

00:56:30.200 --> 00:56:30.940
<v Michael Kennedy>28 billion parameters.

00:56:31.240 --> 00:56:34.060
<v Michael Kennedy>These are plausible on decent local machines.

00:56:34.540 --> 00:56:34.740
<v Carol Willing>Yeah.

00:56:35.060 --> 00:56:38.980
<v Carol Willing>I mean, they definitely work on my GPU Linux box.

00:56:40.100 --> 00:56:42.800
<v Carol Willing>You can get it to work on a Mac as well.

00:56:42.880 --> 00:56:44.780
<v Carol Willing>It's a little bit, you know,

00:56:45.060 --> 00:56:45.580
<v Carol Willing>a little bit harder.

00:56:45.980 --> 00:56:47.240
<v Michael Kennedy>Got to submit it to the app store.

00:56:47.280 --> 00:56:52.400
<v Calvin Hendryx-Parker>see if they approve it yeah no i think you just have to get the mlx you know version of the training

00:56:52.540 --> 00:56:56.980
<v Calvin Hendryx-Parker>done so you can accelerate it on the on the max yeah luckily i've got a Linux box here too so let's

00:56:57.000 --> 00:57:01.860
<v Brett Cannon>throw it on there cool let us know what you find out i just realized we're running out of planets

00:57:02.100 --> 00:57:10.320
<v Carol Willing>to rename with a y i did i was not the namer uh that would be paul no i'm just glad you said

00:57:10.960 --> 00:57:16.640
<v Brett Cannon>after jupiter yeah i mean uranus is like one of the last ones with the u in it and yeah yeah

00:57:16.700 --> 00:57:21.380
<v Michael Kennedy>number out yeah yeah yeah yeah good point brett it's brett it's gonna be okay we're going out to

00:57:21.380 --> 00:57:29.860
<v Michael Kennedy>the orc cloud yeah fine yeah s2 s7 y5 i know you thought that was a u but no it's the y one

00:57:30.360 --> 00:57:35.460
<v Michael Kennedy>it'll be good it'll be good all right well this is super interesting and the naming i guess

00:57:35.720 --> 00:57:42.920
<v Carol Willing>probably came off of jupiter uh that i think when paul was looking at it yeah i mean definitely some

00:57:42.940 --> 00:57:46.960
<v Carol Willing>of the things that Jupyter did in terms of accelerating the community.

00:57:47.780 --> 00:57:48.700
<v Carol Willing>He wanted,

00:57:49.360 --> 00:57:49.540
<v Carol Willing>you know,

00:57:49.760 --> 00:57:53.720
<v Carol Willing>that ability to share knowledge as well as build things.

00:57:54.220 --> 00:57:54.600
<v Carol Willing>And,

00:57:54.980 --> 00:57:55.900
<v Carol Willing>you know,

00:57:56.320 --> 00:57:58.020
<v Carol Willing>the Y just seemed to make

00:57:58.120 --> 00:58:01.620
<v Carol Willing>sense. Plus there are other Satyrns out there, Satyrn AIs and whatnot.

00:58:01.830 --> 00:58:03.580
<v Carol Willing>So why not add the Y?

00:58:03.700 --> 00:58:03.800
<v Michael Kennedy>Yeah.

00:58:03.970 --> 00:58:05.320
<v Michael Kennedy>Why not? Why not? Cool.

00:58:05.560 --> 00:58:07.460
<v Michael Kennedy>Well, we're just about out of time,

00:58:07.960 --> 00:58:09.260
<v Michael Kennedy>but I've got a couple of

00:58:09.280 --> 00:58:14.200
<v Michael Kennedy>extras i'm gonna trim mine back but i know brett you want to there's some little release or

00:58:14.290 --> 00:58:19.900
<v Brett Cannon>something you wanted to talk about what is this i think you already talked about it yeah 315.0

00:58:20.100 --> 00:58:26.300
<v Brett Cannon>finals gone out so 310 also hit eol about a week prior i think two weeks prior i can't remember

00:58:26.720 --> 00:58:33.560
<v Brett Cannon>uh but yeah after the unfortunate new tradition of having a third rc happened um finals out it's

00:58:33.580 --> 00:58:41.240
<v Brett Cannon>good it's done uh obviously we're already working on 3.15.1 which should hopefully come out typically

00:58:41.540 --> 00:58:45.580
<v Brett Cannon>historically we do it in november um but then we'll be on the usual two-month cadence for

00:58:45.920 --> 00:58:51.080
<v Brett Cannon>bugfish releases but they're 15s out um a lot of great stuff in it as i know has been covered here

00:58:51.380 --> 00:58:56.380
<v Carol Willing>and download however you download your latest python i'm gonna give a huge shout out to trey

00:58:56.400 --> 00:59:02.020
<v Carol Willing>hunter who has some really good what's new in 315 that,

00:59:02.360 --> 00:59:02.560
<v Carol Willing>you know,

00:59:02.940 --> 00:59:04.920
<v Carol Willing>web developers and folks that

00:59:05.100 --> 00:59:10.680
<v Carol Willing>are maybe not as focused on some of the scientific benefits for some of the performance stuff.

00:59:11.100 --> 00:59:12.360
<v Carol Willing>It's really well done.

00:59:12.540 --> 00:59:14.800
<v Calvin Hendryx-Parker>And Barry Warsaw's what's newt,

00:59:15.000 --> 00:59:16.140
<v Calvin Hendryx-Parker>if you want to do a dungeon

00:59:16.420 --> 00:59:17.160
<v Calvin Hendryx-Parker>crawler version of it.

00:59:17.320 --> 00:59:18.700
<v Carol Willing>That was so awesome.

00:59:19.100 --> 00:59:20.460
<v Carol Willing>I really enjoyed that.

00:59:20.600 --> 00:59:21.760
<v Calvin Hendryx-Parker>That is fun. It was really fun.

00:59:22.220 --> 00:59:22.380
<v Calvin Hendryx-Parker>Agreed.

00:59:22.520 --> 00:59:22.620
<v Michael Kennedy>Yeah.

00:59:22.800 --> 00:59:23.200
<v Michael Kennedy>I was thinking,

00:59:23.640 --> 00:59:26.220
<v Michael Kennedy>could I make a visual version to overlay on that? I don't know.

00:59:26.340 --> 00:59:26.680
<v Michael Kennedy>We'll see.

00:59:26.980 --> 00:59:28.120
<v Michael Kennedy>I will not be doing that.

00:59:28.560 --> 00:59:30.780
<v Michael Kennedy>But I do want to give a quick shout out to this as an extra.

00:59:30.900 --> 00:59:31.800
<v Michael Kennedy>Have you all seen this?

00:59:32.820 --> 00:59:33.280
<v Michael Kennedy>This is insane.

00:59:33.900 --> 00:59:35.740
<v Michael Kennedy>This craft apps thing.

00:59:35.960 --> 00:59:37.800
<v Michael Kennedy>I think the guy's name is Ben.

00:59:38.040 --> 00:59:38.820
<v Calvin Hendryx-Parker>I thought it hit the news.

00:59:39.160 --> 00:59:39.260
<v Calvin Hendryx-Parker>Yeah.

00:59:39.660 --> 00:59:39.700
<v Brett Cannon>Yeah.

00:59:40.060 --> 00:59:43.960
<v Michael Kennedy>This guy had a big falling out with Adobe over the subscription stuff.

00:59:44.140 --> 00:59:44.220
<v Michael Kennedy>Surprise.

00:59:44.880 --> 00:59:45.440
<v Michael Kennedy>And said, well,

00:59:45.620 --> 00:59:46.320
<v Michael Kennedy>you know what I'm going to do?

00:59:46.600 --> 00:59:47.880
<v Michael Kennedy>I'm going to recreate Photoshop.

00:59:48.920 --> 00:59:50.700
<v Michael Kennedy>And I don't even know the apps that well.

00:59:50.760 --> 00:59:51.020
<v Michael Kennedy>Let me see.

00:59:51.340 --> 00:59:52.120
<v Michael Kennedy>I'm going to recreate Photoshop.

00:59:52.740 --> 00:59:55.120
<v Michael Kennedy>And I'm going to create Illustrator.

00:59:55.840 --> 00:59:57.760
<v Michael Kennedy>And a bunch of others,

00:59:58.960 --> 01:00:01.340
<v Michael Kennedy>Lightroom, I don't know, a bunch of these, Acrobat,

01:00:01.710 --> 01:00:02.460
<v Michael Kennedy>and recreated them.

01:00:02.890 --> 01:00:03.600
<v Brett Cannon>A whole creative suite.

01:00:04.160 --> 01:00:04.440
<v Michael Kennedy>Almost.

01:00:04.780 --> 01:00:05.520
<v Michael Kennedy>It's missing Audition.

01:00:05.650 --> 01:00:07.340
<v Michael Kennedy>I can't wait for him to do Audition.

01:00:07.460 --> 01:00:07.820
<v Michael Kennedy>Let's go.

01:00:08.440 --> 01:00:11.940
<v Michael Kennedy>Because I pay a ton of money to edit this podcast and other stuff with Audition.

01:00:12.160 --> 01:00:13.100
<v Michael Kennedy>But yesterday,

01:00:13.410 --> 01:00:15.780
<v Michael Kennedy>when I was like, I'm going to throw this up here as a thing they're talking about.

01:00:16.180 --> 01:00:16.720
<v Michael Kennedy>There were 12.

01:00:17.100 --> 01:00:17.760
<v Michael Kennedy>Today is 13.

01:00:18.739 --> 01:00:21.520
<v Michael Kennedy>And I got to check real quick and see what the 13th is.

01:00:21.570 --> 01:00:22.980
<v Michael Kennedy>But it has Microsoft Word,

01:00:23.280 --> 01:00:23.740
<v Michael Kennedy>PowerPoint,

01:00:24.460 --> 01:00:24.860
<v Michael Kennedy>and Excel.

01:00:25.540 --> 01:00:27.040
<v Michael Kennedy>I got the little deck craft thing.

01:00:27.420 --> 01:00:28.300
<v Michael Kennedy>I know it's not the same,

01:00:28.640 --> 01:00:30.400
<v Michael Kennedy>but I opened up my talk that I gave

01:00:30.530 --> 01:00:32.580
<v Michael Kennedy>with all the animations and gradients and stuff

01:00:32.960 --> 01:00:35.900
<v Michael Kennedy>for PiBay and it presented it just fine.

01:00:36.130 --> 01:00:36.540
<v Michael Kennedy>I don't know.

01:00:36.810 --> 01:00:38.040
<v Michael Kennedy>I don't know that it edits as well.

01:00:38.180 --> 01:00:39.040
<v Michael Kennedy>But anyway, I just,

01:00:39.220 --> 01:00:39.900
<v Michael Kennedy>I think,

01:00:40.090 --> 01:00:41.800
<v Michael Kennedy>I wanted to give this a bit of a shout out

01:00:42.040 --> 01:00:42.720
<v Michael Kennedy>because it's just,

01:00:42.940 --> 01:00:44.080
<v Michael Kennedy>it's a weird time.

01:00:44.190 --> 01:00:44.720
<v Michael Kennedy>And I think this,

01:00:44.980 --> 01:00:45.100
<v Michael Kennedy>you know,

01:00:45.290 --> 01:00:47.780
<v Michael Kennedy>looking back 10 years and looking forward 10 years,

01:00:48.020 --> 01:00:49.360
<v Michael Kennedy>like this is kind of an interesting thing

01:00:49.470 --> 01:00:50.680
<v Michael Kennedy>at the inflection point.

01:00:50.940 --> 01:00:52.280
<v Brett Cannon>Well, and especially because they talked about

01:00:52.280 --> 01:00:54.100
<v Brett Cannon>how they tried to do this as clean room,

01:00:54.320 --> 01:00:54.420
<v Brett Cannon>right?

01:00:54.600 --> 01:00:56.300
<v Brett Cannon>I think there's no source code to look at here.

01:00:56.390 --> 01:00:56.680
<v Brett Cannon>They literally,

01:00:56.870 --> 01:00:57.220
<v Brett Cannon>I think,

01:00:57.450 --> 01:00:59.360
<v Brett Cannon>threw a model at it and said,

01:01:00.299 --> 01:01:02.140
<v Brett Cannon>here's the thing I want you to reimplement.

01:01:02.520 --> 01:01:03.380
<v Brett Cannon>Go reimplement it.

01:01:03.800 --> 01:01:05.300
<v Michael Kennedy>And here's the UI.

01:01:05.620 --> 01:01:06.940
<v Michael Kennedy>Here's its feature list to make that.

01:01:07.839 --> 01:01:09.900
<v Brett Cannon>Go read the publicity material,

01:01:10.060 --> 01:01:10.140
<v Brett Cannon>right?

01:01:10.580 --> 01:01:13.520
<v Brett Cannon>There's a lot of documentation about how Photoshop is supposed to work.

01:01:13.920 --> 01:01:15.660
<v Brett Cannon>And if you give it access on the browser version,

01:01:15.860 --> 01:01:18.140
<v Brett Cannon>you can click through it and all that and crank away at it.

01:01:18.260 --> 01:01:21.760
<v Brett Cannon>Now, I'd be kind of curious as to how much their token budget was to pull that off.

01:01:22.020 --> 01:01:22.740
<v Nick Muoh>Very much curious.

01:01:23.200 --> 01:01:24.120
<v Michael Kennedy>High. Very high.

01:01:24.360 --> 01:01:25.220
<v Brett Cannon>Very high, I'm sure.

01:01:26.360 --> 01:01:30.120
<v Brett Cannon>Because Cloud re-implemented a C compiler for the Linux kernel,

01:01:30.240 --> 01:01:33.040
<v Brett Cannon>and it cost them hundreds of thousands of dollars for something.

01:01:34.200 --> 01:01:34.320
<v Calvin Hendryx-Parker>Wow.

01:01:34.620 --> 01:01:38.680
<v Brett Cannon>But it's still kind of cool that this is what you theoretically can do

01:01:38.800 --> 01:01:41.140
<v Brett Cannon>with appropriate budget with LLMs.

01:01:41.500 --> 01:01:43.820
<v Michael Kennedy>We talked about way back when.

01:01:44.920 --> 01:01:45.060
<v Calvin Hendryx-Parker>Yeah.

01:01:45.440 --> 01:01:48.100
<v Michael Kennedy>I mean, way back to March, we talked about a clean room rewrite,

01:01:49.300 --> 01:01:50.980
<v Michael Kennedy>and this was for Chardet.

01:01:51.380 --> 01:01:51.600
<v Brett Cannon>Yes.

01:01:52.060 --> 01:01:54.240
<v Michael Kennedy>And this was like a big to-do.

01:01:54.410 --> 01:01:55.660
<v Michael Kennedy>And this was just a library.

01:01:55.860 --> 01:01:59.080
<v Michael Kennedy>Now we're like, oh, let's just redo giant suites of apps.

01:01:59.430 --> 01:01:59.660
<v Michael Kennedy>You know?

01:02:00.150 --> 01:02:04.680
<v Nick Muoh>Yeah, it's a very interesting world we are entering for software.

01:02:05.360 --> 01:02:05.800
<v Nick Muoh>Very,

01:02:06.400 --> 01:02:11.520
<v Nick Muoh>I think a lot of the companies that their software was their moats

01:02:11.670 --> 01:02:15.220
<v Nick Muoh>because they put so much investment to it

01:02:15.450 --> 01:02:17.500
<v Nick Muoh>and the time it would take to reimplement it,

01:02:18.820 --> 01:02:19.700
<v Nick Muoh>deter competitors.

01:02:20.400 --> 01:02:20.900
<v Nick Muoh>But with AI,

01:02:21.400 --> 01:02:22.440
<v Nick Muoh>it's very interesting.

01:02:22.580 --> 01:02:25.440
<v Nick Muoh>Now, somebody could create a DaVinci Resolve

01:02:25.820 --> 01:02:28.720
<v Nick Muoh>specific to their own podcasting editing needs,

01:02:28.750 --> 01:02:31.080
<v Nick Muoh>and they don't need DaVinci Resolve

01:02:31.220 --> 01:02:33.580
<v Nick Muoh>or all the other ones that exist.

01:02:34.300 --> 01:02:35.640
<v Nick Muoh>So it's very interesting,

01:02:36.500 --> 01:02:39.480
<v Nick Muoh>the era of personal software we're entering into.

01:02:39.640 --> 01:02:40.000
<v Michael Kennedy>Absolutely.

01:02:40.950 --> 01:02:41.880
<v Michael Kennedy>Even if I never use this,

01:02:41.950 --> 01:02:43.560
<v Michael Kennedy>I hope this puts pressure on companies

01:02:43.570 --> 01:02:45.220
<v Michael Kennedy>to be more on top of things,

01:02:45.510 --> 01:02:46.100
<v Michael Kennedy>newer versions,

01:02:46.280 --> 01:02:46.860
<v Michael Kennedy>less expensive.

01:02:47.660 --> 01:02:50.060
<v Brett Cannon>Yeah, and I think for desktop software specifically,

01:02:50.380 --> 01:02:57.140
<v Brett Cannon>right where you can have where the actual desktop app gives the model something to work against to

01:02:57.340 --> 01:03:02.900
<v Brett Cannon>verify that it's working appropriately and the outcomes are what you expect is of versus like

01:03:03.200 --> 01:03:07.460
<v Brett Cannon>i'm going to re-implement slack or something it's like well there's all back end on that one that's

01:03:07.560 --> 01:03:12.400
<v Brett Cannon>way more complicated to try to recreate just based on how slack looks on the front end but for

01:03:13.100 --> 01:03:17.220
<v Brett Cannon>photoshop on this desktop right once again if you've got the token budget it can just turn away

01:03:17.240 --> 01:03:20.780
<v Brett Cannon>for quite a while and eventually just get probably a good enough axillin.

01:03:21.110 --> 01:03:21.380
<v Brett Cannon>I mean,

01:03:21.760 --> 01:03:22.280
<v Brett Cannon>or you just go use

01:03:22.380 --> 01:03:22.580
<v Brett Cannon>GIMP.

01:03:22.850 --> 01:03:23.120
<v Brett Cannon>I mean,

01:03:24.060 --> 01:03:24.120
<v Michael Kennedy>yeah.

01:03:24.520 --> 01:03:27.980
<v Michael Kennedy>I mean, how many features do you use of any given app? Probably 10%, right? If

01:03:27.980 --> 01:03:29.100
<v Michael Kennedy>you just say I'm building it for me.

01:03:29.500 --> 01:03:31.580
<v Michael Kennedy>Yeah. Like to Nick's point, just make it for you. Yep.

01:03:31.900 --> 01:03:32.020
<v Michael Kennedy>All

01:03:32.040 --> 01:03:32.120
<v Michael Kennedy>right.

01:03:32.300 --> 01:03:32.400
<v Michael Kennedy>Well,

01:03:32.760 --> 01:03:36.300
<v Michael Kennedy>that's enough of this, but I do think it's a really bizarre and interesting thing that

01:03:36.410 --> 01:03:39.400
<v Michael Kennedy>happened this week. Anyone else got something I want to shout out before we get to the joke?

01:03:39.660 --> 01:03:41.740
<v Calvin Hendryx-Parker>I got a real time update for Nick.

01:03:42.200 --> 01:03:45.380
<v Calvin Hendryx-Parker>Nick asked about how he could know what models he could run

01:03:45.680 --> 01:03:46.520
<v Calvin Hendryx-Parker>on his hardware.

01:03:47.260 --> 01:03:48.820
<v Calvin Hendryx-Parker>I've got the screen up here for

01:03:49.779 --> 01:03:51.400
<v Calvin Hendryx-Parker>llmfit.org, and that's actually

01:03:51.480 --> 01:03:53.240
<v Calvin Hendryx-Parker>a TUI app that you can

01:03:53.900 --> 01:03:55.420
<v Calvin Hendryx-Parker>just load up. It detects your

01:03:55.660 --> 01:03:55.840
<v Calvin Hendryx-Parker>hardware.

01:03:56.130 --> 01:03:57.460
<v Calvin Hendryx-Parker>So, Michael, if you wanted to put that

01:03:57.600 --> 01:03:58.120
<v Calvin Hendryx-Parker>up on the screen.

01:03:58.400 --> 01:03:59.460
<v Michael Kennedy>All right, give me something to search for.

01:03:59.540 --> 01:04:00.980
<v Calvin Hendryx-Parker>What am I looking for? No, I shared.

01:04:01.070 --> 01:04:01.780
<v Calvin Hendryx-Parker>No, I shared it already.

01:04:02.060 --> 01:04:02.800
<v Michael Kennedy>Oh, your screen.

01:04:03.130 --> 01:04:04.000
<v Calvin Hendryx-Parker>Yeah, my screen.

01:04:05.200 --> 01:04:05.500
<v Michael Kennedy>There we go.

01:04:06.070 --> 01:04:06.160
<v Calvin Hendryx-Parker>So,

01:04:06.450 --> 01:04:07.000
<v Calvin Hendryx-Parker>it detects

01:04:07.050 --> 01:04:07.500
<v Calvin Hendryx-Parker>your hardware.

01:04:08.060 --> 01:04:08.940
<v Calvin Hendryx-Parker>It loads up a whole bunch

01:04:08.950 --> 01:04:10.020
<v Calvin Hendryx-Parker>of models from different providers,

01:04:10.340 --> 01:04:10.820
<v Calvin Hendryx-Parker>like Olama,

01:04:11.160 --> 01:04:11.660
<v Calvin Hendryx-Parker>Lama CPP,

01:04:12.120 --> 01:04:12.860
<v Calvin Hendryx-Parker>MLX, Docker

01:04:13.040 --> 01:04:13.960
<v Calvin Hendryx-Parker>Runner Models, LM Studios,

01:04:14.380 --> 01:04:15.360
<v Calvin Hendryx-Parker>and

01:04:15.380 --> 01:04:20.540
<v Calvin Hendryx-Parker>you just filter for what models would run best and give you scores so you can actually see where it

01:04:20.540 --> 01:04:21.360
<v Calvin Hendryx-Parker>might be better fits.

01:04:22.160 --> 01:04:25.620
<v Calvin Hendryx-Parker>I mean be careful you're downloading potentially random models from

01:04:25.820 --> 01:04:30.020
<v Calvin Hendryx-Parker>potentially random places so you probably want to be careful which providers you pull those models

01:04:30.200 --> 01:04:34.940
<v Calvin Hendryx-Parker>in from but it's a cool little tool to see like what what actually would perform and is there a

01:04:34.980 --> 01:04:39.460
<v Calvin Hendryx-Parker>better version of that model that I'm already using that I should be using based on like quantization

01:04:39.980 --> 01:04:45.340
<v Calvin Hendryx-Parker>and the MLX optimization all those kinds of pieces so I thought that'd be pretty cool for folks who

01:04:45.360 --> 01:04:46.420
<v Calvin Hendryx-Parker>what model should I run?

01:04:46.840 --> 01:04:48.700
<v Calvin Hendryx-Parker>And the other one I got on my extras is the,

01:04:49.140 --> 01:04:50.380
<v Calvin Hendryx-Parker>my standard uv report,

01:04:50.920 --> 01:04:53.400
<v Calvin Hendryx-Parker>UV 0.13 makes Python 3.15,

01:04:53.930 --> 01:04:54.280
<v Calvin Hendryx-Parker>the default.

01:04:54.900 --> 01:04:56.520
<v Calvin Hendryx-Parker>So we keep it right up.

01:04:56.760 --> 01:04:57.000
<v Michael Kennedy>Awesome.

01:04:57.200 --> 01:05:01.280
<v Michael Kennedy>I've already run uv Python install 3.15, dash,

01:05:01.450 --> 01:05:01.540
<v Michael Kennedy>dash,

01:05:01.800 --> 01:05:01.920
<v Michael Kennedy>default,

01:05:02.160 --> 01:05:02.680
<v Michael Kennedy>I'm good to go.

01:05:02.960 --> 01:05:03.740
<v Calvin Hendryx-Parker>Ooh, I need to do that.

01:05:04.680 --> 01:05:05.720
<v Michael Kennedy>That way if you just type Python,

01:05:05.850 --> 01:05:07.680
<v Michael Kennedy>it falls to that one rather than some other system.

01:05:07.720 --> 01:05:08.260
<v Michael Kennedy>That's what I want.

01:05:08.700 --> 01:05:09.620
<v Brett Cannon>Or if you're on Windows,

01:05:09.830 --> 01:05:10.520
<v Brett Cannon>use the PyManager,

01:05:10.660 --> 01:05:12.780
<v Brett Cannon>just type PyManager install 3.15.

01:05:13.340 --> 01:05:14.540
<v Brett Cannon>T, get the free threaded version.

01:05:14.760 --> 01:05:14.980
<v Michael Kennedy>Ooh.

01:05:16.680 --> 01:05:17.560
<v Carol Willing>Brett, one-upping.

01:05:19.540 --> 01:05:19.820
<v Calvin Hendryx-Parker>All right.

01:05:20.040 --> 01:05:20.780
<v Michael Kennedy>How about a joke?

01:05:21.200 --> 01:05:22.240
<v Brett Cannon>I give Steve the call out.

01:05:22.380 --> 01:05:25.640
<v Brett Cannon>He does all that, but I just know Windows has its own built-in manager

01:05:25.760 --> 01:05:26.680
<v Brett Cannon>that comes from Python.org,

01:05:26.880 --> 01:05:28.220
<v Brett Cannon>and Steve put a lot of time on it.

01:05:28.400 --> 01:05:32.000
<v Brett Cannon>And it's my North Star dream to get that on every major tier one

01:05:32.120 --> 01:05:34.620
<v Brett Cannon>or maybe even tier two platforms for Python someday.

01:05:35.020 --> 01:05:35.760
<v Calvin Hendryx-Parker>That would be awesome.

01:05:36.700 --> 01:05:40.240
<v Calvin Hendryx-Parker>Before we go on, you should give Nick a moment for at least one of his items on there.

01:05:40.300 --> 01:05:40.860
<v Calvin Hendryx-Parker>I think it's really important.

01:05:41.200 --> 01:05:41.560
<v Michael Kennedy>Oh, okay.

01:05:41.780 --> 01:05:42.800
<v Michael Kennedy>I didn't know you have some, Nick.

01:05:42.800 --> 01:05:42.980
<v Michael Kennedy>Go ahead.

01:05:43.240 --> 01:05:43.600
<v Nick Muoh>Oh, yeah.

01:05:44.000 --> 01:05:47.040
<v Nick Muoh>I just wanted to quickly call out Black Python Devs.

01:05:47.440 --> 01:05:48.840
<v Nick Muoh>I'm wearing the T-shirt here.

01:05:49.720 --> 01:05:51.980
<v Nick Muoh>One of the amazing things that one of our members,

01:05:52.160 --> 01:05:52.460
<v Nick Muoh>Emmanuel,

01:05:52.620 --> 01:05:54.320
<v Nick Muoh>is doing is taking our

01:05:55.360 --> 01:05:59.660
<v Nick Muoh>Python Dev student ambassadors and going across campuses in Africa.

01:06:00.380 --> 01:06:06.980
<v Nick Muoh>So this is a really important initiative because if you guys don't know the continent of Africa,

01:06:07.660 --> 01:06:10.760
<v Nick Muoh>so many countries and so many youths there,

01:06:11.180 --> 01:06:13.460
<v Nick Muoh>we want to promote Python.

01:06:13.600 --> 01:06:16.700
<v Nick Muoh>for the next generation of Python developers.

01:06:16.880 --> 01:06:19.000
<v Nick Muoh>I think one of the CEOs of Anaconda

01:06:19.260 --> 01:06:22.020
<v Nick Muoh>says that he wants a world

01:06:22.200 --> 01:06:24.500
<v Nick Muoh>where the next billion users are Python users,

01:06:24.720 --> 01:06:25.460
<v Nick Muoh>something like that.

01:06:25.980 --> 01:06:29.240
<v Nick Muoh>Some of those users will be in Africa.

01:06:29.480 --> 01:06:31.820
<v Nick Muoh>So this is an amazing campaign.

01:06:32.480 --> 01:06:34.760
<v Nick Muoh>And if you go to Black Python devs

01:06:35.520 --> 01:06:36.900
<v Nick Muoh>and the links will be in the show notes,

01:06:36.900 --> 01:06:39.000
<v Nick Muoh>you can support that initiative.

01:06:39.540 --> 01:06:41.560
<v Carol Willing>And I'm going to also shout out

01:06:41.580 --> 01:06:43.780
<v Carol Willing>with Black Python Devs at PyOhio,

01:06:43.960 --> 01:06:46.260
<v Carol Willing>they did a leadership summit again.

01:06:46.920 --> 01:06:47.940
<v Carol Willing>And I mean,

01:06:48.260 --> 01:06:49.260
<v Carol Willing>looking at the leaders

01:06:49.760 --> 01:06:52.740
<v Carol Willing>that Python Devs has over the years grown,

01:06:53.980 --> 01:06:56.440
<v Carol Willing>they have something really good going on

01:06:56.780 --> 01:06:58.960
<v Carol Willing>and seeing those leaders emerge

01:06:59.200 --> 01:07:00.920
<v Carol Willing>has been super rewarding

01:07:01.540 --> 01:07:03.840
<v Carol Willing>and, you know, doing the good stuff.

01:07:04.100 --> 01:07:04.320
<v Michael Kennedy>Awesome.

01:07:04.640 --> 01:07:05.200
<v Nick Muoh>Yeah, thank you.

01:07:05.500 --> 01:07:05.660
<v Michael Kennedy>Yeah,

01:07:05.900 --> 01:07:06.160
<v Michael Kennedy>thanks, Nick.

01:07:06.560 --> 01:07:07.620
<v Michael Kennedy>Anything else?

01:07:08.220 --> 01:07:10.860
<v Michael Kennedy>All right, I got a quick short joke here for us.

01:07:11.160 --> 01:07:12.480
<v Michael Kennedy>This comes to us from Derek Chambers,

01:07:12.680 --> 01:07:14.840
<v Michael Kennedy>sent us in, said, well,

01:07:15.060 --> 01:07:16.320
<v Michael Kennedy>I felt this way at some point.

01:07:16.500 --> 01:07:19.680
<v Michael Kennedy>So theoretically, a person's applying for a job, trying to look good.

01:07:19.980 --> 01:07:24.360
<v Michael Kennedy>Interviewer says, says here on your resume that you're an exceptional Python developer.

01:07:24.500 --> 01:07:25.140
<v Michael Kennedy>Can you prove it?

01:07:25.380 --> 01:07:25.460
<v Michael Kennedy>Oh,

01:07:25.640 --> 01:07:25.840
<v Michael Kennedy>sure,

01:07:26.260 --> 01:07:27.260
<v Michael Kennedy>says the interviewee.

01:07:27.560 --> 01:07:28.340
<v Michael Kennedy>Run any of my code.

01:07:28.380 --> 01:07:29.820
<v Michael Kennedy>It raises exceptions a lot of the time.

01:07:30.900 --> 01:07:32.180
<v Calvin Hendryx-Parker>Oh, I'm a sucker for a good dad joke.

01:07:32.420 --> 01:07:32.660
<v Michael Kennedy>Dot, dot, dot, bang.

01:07:33.160 --> 01:07:34.200
<v Calvin Hendryx-Parker>I love it.

01:07:34.540 --> 01:07:39.020
<v Brett Cannon>I also feel like I just reached dad level because I figured out the punchline before you got there.

01:07:39.100 --> 01:07:39.480
<v Brett Cannon>I was like, oh,

01:07:39.640 --> 01:07:41.040
<v Brett Cannon>wow, I finally leveled up my dad.

01:07:41.180 --> 01:07:42.580
<v Brett Cannon>Joke level is being an actual dad.

01:07:42.720 --> 01:07:43.120
<v Brett Cannon>There you go.

01:07:43.540 --> 01:07:45.280
<v Brett Cannon>I feel like now the new point is parenthood.

01:07:46.200 --> 01:07:46.580
<v Michael Kennedy>That's right.

01:07:46.920 --> 01:07:47.000
<v Michael Kennedy>Absolutely.

01:07:47.720 --> 01:07:47.840
<v Michael Kennedy>All right.

01:07:47.860 --> 01:07:47.960
<v Michael Kennedy>Well,

01:07:48.460 --> 01:07:48.660
<v Michael Kennedy>Nick,

01:07:49.080 --> 01:07:49.300
<v Michael Kennedy>Brett,

01:07:49.700 --> 01:07:49.960
<v Michael Kennedy>Carol,

01:07:50.260 --> 01:07:51.320
<v Michael Kennedy>thank you so much for being here.

01:07:51.480 --> 01:07:53.460
<v Michael Kennedy>It's really nice that you came to celebrate this.

01:07:53.640 --> 01:07:54.140
<v Michael Kennedy>And Calvin,

01:07:54.560 --> 01:07:54.900
<v Michael Kennedy>thanks for helping.

01:07:55.380 --> 01:07:56.020
<v Calvin Hendryx-Parker>Happy 500.

01:07:56.520 --> 01:07:56.760
<v Carol Willing>Yeah.

01:07:56.980 --> 01:07:57.740
<v Carol Willing>Happy 500.

01:07:58.140 --> 01:07:59.440
<v Carol Willing>And happy thank you to Brian,

01:07:59.860 --> 01:07:59.980
<v Carol Willing>too.

01:08:00.420 --> 01:08:00.660
<v Michael Kennedy>Absolutely.

01:08:00.900 --> 01:08:01.560
<v Michael Kennedy>Thank you to Brian.

01:08:02.060 --> 01:08:02.280
<v Michael Kennedy>Bye, all.