Brought to you by Talk Python Courses and Six Feet Up consulting

#500: Episode 500!

Published Wed, Oct 14, 2026, recorded Tue, Oct 13, 2026
0:00
01:08:03
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Brian #1: A quick chat with Brian looking back

Nick #2: Jev and the Case for Boring ML

Vincent Warmerdam from marimo benchmarked Jev, a new "System 1" decision model from TypeSafe AI. In his video It handles classification without the latency or token cost of generative LLMs, which raises a practical question for data teams: where does this fit alongside traditional machine learning?

  • He tested Jev against classical machine learning models to see if its speed and accuracy hold up on real-world datasets.
  • General LLMs work well for reasoning, but generating full token streams just to assign a category adds unnecessary latency and cloud cost.
  • Jev avoids generation entirely by evaluating the input and returning only the decision, which makes it much faster and cheaper than standard chat APIs.
  • It consistently outperformed eight-shot sentence transformer setups like SetFit out of the box, especially on datasets with dozens of target categories.
  • Traditional models like logistic regression still matter because they run in single-digit milliseconds on basic CPUs, cost nothing per inference, and keep private data within your own network.
  • You cannot fine-tune Jev directly, so standard models remain the better choice when your data contains internal company acronyms, product names, or domain slang.
  • The most practical approach is using Jev to bootstrap initial labels or audit bad training data, then training a small model you can own and run locally.

Brett #3: Announcing the 2026 Python Packaging Council Election Results!

The inaugural Python packaging council (PPC) has been elected and started meeting!

  • Introduced via PEP 772
  • 5 members elected
    • Top 2 vote-getters get two-year terms
    • Other 3 get one-year terms
    • All members will get two-year terms going forward, staggering the elections
  • There have been 4 meetings far as well as a meeting with the SC
  • As the inaugural packaging council still working out basic logistics like how to take notes
  • Also working out what the packaging council should do as PEP 772 explicitly says packaging.python.org falls under the PPC, but otherwise tries not to dictate what the PPC is in charge of

Calvin #4: Parsing JSON at tens of gigabytes per second in Python

  • Daniel Lemire (Oct 12) benchmarks fastsimdjson 0.6.0, a Python binding for simdjson on PyPI, repo at simdjson/fastpysimdjson. Its map_many function runs a callback per JSON line across N threads.
  • Workload: Eight hours of GH Archive data, 7.6 GB and 2.2M events. The task counts event types and looks up the target repo's language for each opened PR, and it only touches a few fields per event.
  • Lazy trick: With lazy=True, the whole event is parsed but Python objects are created only for the fields you access. The idea comes from Tyler Kennedy's pysimdjson.
  • Single core: stdlib json gets 0.18 GB/s (about 42 s for the whole set), orjson 0.42, msgspec 1.29, fastsimdjson lazy 2.13 (3.6 s).
  • 64 cores: stdlib json gets 3.17 GB/s, msgspec 24.6, fastsimdjson eager 29.8, and fastsimdjson lazy 65.7. That's the full 7.6 GB in about 0.12 s, roughly 31x its own single-core speed.
  • Requires free-threading: It ran on Python 3.14.6 free-threaded (3.14t) on a 64-core dual-Xeon box.
  • Grain of salt:
    • It's one machine and one dataset.
    • It's an embarrassingly parallel job with per-thread counters.
    • The lazy win only shows up when you read a few fields from big objects.
    • msgspec was handed a schema declaring only the needed fields.
    • The post itself doesn't say whether this generalizes.

Michael #5: Grinberg's annual benchmark says 3.15 is flat, but the JIT finally pays off

Miguel Grinberg ran his annual release-eve benchmark, comparing Python 3.15.0rc3 against every interpreter back to 3.10, plus PyPy, Node.js, and Rust, using his usual two CPU-bound programs: recursive Fibonacci and bubble sort. The standard 3.15 interpreter lands within noise of 3.14 on his workloads, while the experimental JIT build is roughly 20 to 28 percent faster and finally beats the standard interpreter, which has not happened before. The free-threaded build holds up well in the 4-thread tests. He is candid that the workloads are just Fibonacci and bubble sort, and the official release lands days after his measurements.

  • It is an independent, workload-based counterpoint to the official 7-8 percent JIT geometric-mean claim, from a series with real trend data back to 3.10.
  • He did the same exercise for 3.12, 3.13, and 3.14, so there is a multi-year trend line to draw on.
  • Methodology is two hand-picked CPU-bound programs, recursive Fibonacci plus bubble sort, not a pyperformance-style suite, which cuts both ways.
  • PyPy 3.12 still runs circles around every CPython in the single-threaded tests, and Rust is about 77x faster on Fibonacci.
  • The JIT gain is real in these numbers, but the JIT stays experimental, so he will not use it in production yet.
  • Free-threaded fibo at 4 threads ran about 4.5x faster than the standard interpreter with the GIL.
  • His verdict: not worth rushing an upgrade for speed alone, though lazy imports may tempt production projects.

Carol #6: Transparent and trusted AI Our Way - Satyrn AI

Paul Everitt, Georgi Ker and I were discussing Python, its community and AI back in March at the JetBrains PyTV event. Python is the foundational language for data science and AI tools. We wanted something that reflects the Python community's strengths: language and learning.

  • Mission: https://satyrn.ai/mission/
  • Python 3.15 trained model is on Hugging Face
  • After Paul's Europython keynote, he asked for folks to join the community (think of it as a collective of individuals putting their talents together
  • We used some of the organizational tips from Jupyter and JupyterHub's early days on scaling community and emphasizing leveling up individuals
  • Paul will be keynoting in Africa and sharing progress made by a team of dedicated volunteers
  • Putting AI tools and knowledge in the hands of Pythonistas makes good sense and over time will benefit people (A theme that I have spoken about since PyCon 2023 and most recently PyCon JP 2026

Extras

Michael:

  • Adobe Creative Suite was mostly cloned in Rust
    • ArtCraft released seven free, open-source desktop apps that mirror the Adobe lineup: PhotoCraft for Photoshop, VectorCraft, FilmCraft, LightCraft, PrintCraft, EffectCraft, and DesignCraft. Everything is written from scratch in Rust with WebAssembly builds for the browser, and developer Brandon Thomas says the apps are AI-built clean-room reimplementations, a claim Ars Technica covered alongside the predictable skepticism.
      • The clean-room story matters: reimplementing Adobe from public specs and behavior with AI is legally defensible, and building the apps for agents to drive, not just humans, is a genuinely different design bet.
      • PhotoCraft already shows real depth: layers, masks, adjustment layers, layer styles, and real PSD support, with over 1,700 tests and dual CPU and GPU compositors tested against each other.
      • The agent story: an MCP server and JSON control protocol let an agent headless-edit documents or drive the live app, useful for bulk edits and first drafts.
      • Tradeoffs are real: reviewers call most of the apps super early alpha, and trade dress claims from Adobe remain a live legal risk even for clean-room code.
      • Sustainability matters: the founder says token sales from their ArtCraft AI model fund the work so it does not become an orphaned small-team project.
      • What happens when open-source alternatives that once took years of community work can be built by a model in weeks?
    • Reminds me of the chardet story we covered awhile ago. The reason I put this topic here is I think it encapsulates a lot of what's happening in the industry for devs now. Building software has changed, creating is easy - sustaining is hard, owning an idea is more fleeting than before, Rust obviously, MCP and CLIs. It's just an interesting bridge from the first 500 episodes and the next 500 likely.

Calvin:

Nick:

Brett:

Joke:

  • Exceptional by Derrick Chambers
    • Interviewer: It says here on your résumé that you’re an “exceptional Python developer.” Can you prove it?
    • Me: Sure. Run any of my code. It raises exceptions a lot of the time.

Episode Transcript

Collapse transcript

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

00:05 This is episode 500, recorded October 13th,

00:10 2026.

00:11 I'm Michael Kennedy.

00:12 And I'm Calvin Hendryx-Parker.

00:14 I'm Nick Muoh.

00:15 I'm Brett Cannon.

00:16 I'm Carol Willing, and I sometimes pretend I'm Brett Cannon.

00:20 And I have no problems being Carol either, so there you go.

00:22 Everyone, thank you so much for being here for this special episode.

00:25 Sign up to the newsletter, social links, all that kind of stuff is at the top of the show notes.

00:29 So let's just go ahead and kick this off.

00:31 We've got a really awesome, almost 10 years.

00:34 I don't know if this is exactly 10 years or not, but almost 10 years.

00:37 Certainly episode 500 is quite a thing.

00:40 So Python Bytes has been around a long time.

00:42 All of y'all have been here before in various ways.

00:46 The one big missing component here, the person we're missing is Brian Okken.

00:50 But don't worry, Brian was supposed to be here.

00:52 Something came up, couldn't make it.

00:53 So Calvin and I had a quick chat with him before and we'll splice that in.

00:57 So we're going to be hearing that in just a little bit.

01:00 Welcome, everyone.

01:01 Thank you for taking the time to celebrate this milestone.

01:03 Calvin, thanks for being here to keep it going.

01:06 Love it.

01:06 I'm glad to be the new co-host.

01:08 And I'm excited for this crew for the 500 episode.

01:11 And congratulations to all of you for getting us all the way to here.

01:15 Thanks for calling us old, Brent.

01:16 Appreciate it.

01:17 No, I really do appreciate it.

01:18 I'm just kidding, man.

01:19 A person who's been doing Python was probably the, I think,

01:22 at least officially the longest maybe on this call.

01:25 I don't know, Caroline, I can duke it out.

01:27 2000 when I started using Python.

01:29 Oh, all right.

01:29 Calvin wins.

01:30 No, go Calvin.

01:32 That's an accomplishment.

01:33 Wait, no.

01:33 Win in 2000.

01:34 I started in 2000 as well.

01:36 So it would have been early 2000, so probably like a February or March.

01:41 You beat me.

01:42 I started in fall.

01:43 Okay.

01:44 Wow.

01:45 All right.

01:45 Wow, that's crazy.

01:46 Now we've established the pecking order.

01:48 I'm sure I sit above Brett for most things.

01:52 I'm not in the Python world.

01:53 Amazing.

01:54 Calvin, I was just thinking as I was getting ready for this show,

01:57 we're on almost month four, if not past it, of you and I hosting the show together.

02:02 It feels like we just started, but thanks for being here as well.

02:04 It's been great.

02:05 I really enjoyed jumping in.

02:07 And this has been kind of a passion for me, a future dream that I thought would never

02:11 come true.

02:12 And here I am.

02:12 I love it.

02:13 Thank you, Michael.

02:14 Yeah, it's awesome to be here with you as well.

02:16 And now, like I said before, Brian wasn't able to join us in real time,

02:20 but Calvin and I got the chance to speak with him beforehand to make sure he was part of the show.

02:25 Let's have that conversation with Brian.

02:27 Oh my goodness.

02:28 It is Brian Okken. Thank you for joining us for the

02:31 500 episode.

02:32 Blast from the past.

02:33 Brian Okken. Yeah, man.

02:35 It's definitely a blast from the past.

02:36 It's good to have you back in the show.

02:37 500.

02:38 That's a big number, man.

02:39 And a lot's happened since you left.

02:42 You published a book.

02:43 I did.

02:44 It's right there.

02:46 Yes, it is.

02:47 Lean TDD.

02:48 We have the number one lean tdd author of for the pipe for the python bytes list and it may be the biggest

02:56 new release of test driven development book in august of last of this year i don't know

03:02 yes very very no no honestly it's it's a very good book and you and i we just got back from

03:08 hanging out in san francisco together of all the things we ironically just randomly stayed at the

03:13 same hotel for yeah it was it was actually kind of surreal we spent so michael and i um live in

03:18 or near Portland.

03:20 And we usually see each other at conferences somewhere else.

03:24 You know what it is?

03:25 It's so weird.

03:26 I have so many friends like that.

03:28 And it's because you don't have family.

03:30 You don't have the kids.

03:31 You don't have all this, you know, you could just kind of hang out and do whatever.

03:34 Conferences are awesome.

03:35 I think conferences are awesome.

03:36 I mean, that's how I met most of you all is because of going to great Python conferences.

03:42 Yeah.

03:42 And Calvin, yeah, that Python party,

03:45 man, it was the most epic party I've ever been to.

03:47 So it was good.

03:48 which one you're talking you're talking about select city yeah that was a really good one yeah

03:54 the one that took over the top of the top of the bit the top of the top of the video

03:59 no it was good plus i met um like on his name the brown bag guy um oh chris williams yeah yeah chris

04:05 williams was there i mean we had charlie marsh there we had brett actually who's on the show

04:10 was there so yeah he was really good yeah yeah and all and all those a lot of a lot of people

04:15 had just started their um like startups that are going fantastic yeah yeah that was the rust wave

04:22 we haven't really seen the ai wave party yet yeah it's the it no the ai wave is waving people

04:28 goodbye when they get laid off because of it no well you know what seriously though we were just

04:34 both in san francisco were you blown away at how many billboards were about ai that was weird things

04:39 it was like going into a like a sci-fi futuristic movie or something it was well like because there

04:45 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

04:50 like cigarette billboards and alcohol billboards and and or like right you know the dispensary

04:57 billboards divorce lawyers but having it all be like targeted towards stuff that uh just as i i

05:05 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

05:11 kind of a middle upper middle class and higher sort of a phenomenon i don't i don't know if it's

05:17 affecting everybody really other than it's taken over your search window anyway um yeah i i had a

05:23 airport i had a ride to the airport i don't know maybe 25 minutes or something like that i mean

05:28 in san francisco it could be three hours or it could be 10 minutes depending on the traffic but

05:31 It was, I think, 25 minutes.

05:33 And I think it was full of billboards.

05:35 I think literally every single billboard I saw, at least that I noticed, was some kind of, if not AI,

05:40 AI adjacent.

05:41 Or there's all these companies that are like, yeah, we're the AI markdown editor.

05:45 Like, you were just a markdown editor last year.

05:46 Come on now.

05:47 You know what I mean?

05:48 Like that kind of thing as well.

05:49 I don't get why.

05:50 Who are they trying to convince?

05:52 Investors.

05:52 I think they're trying to convince investors.

05:54 Anyone who's involved in this hype right now is raising money.

05:58 Yeah.

05:58 I don't know.

05:59 How does your framework desktop in the basement feel about this,

06:02 Colin?

06:03 He's fine. He's right over here.

06:05 He's on the standing desk over here.

06:07 The local models are running just fine.

06:09 A little hiccup.

06:10 So I use it with Home Assistant in the house, which is another fine Python project that everyone should go check out.

06:16 And you got a little confused this morning and thought that it couldn't control the home.

06:21 Like I was using Qwen 3.8 27B, the one that's kind of all over the news today.

06:26 And I just kind of forgot that it could actually control stuff.

06:29 Maybe that's a good direction to go versus like take over all the things.

06:33 But it does work.

06:35 Works really well.

06:35 Yeah.

06:36 Awesome.

06:36 Yeah.

06:36 We got to get used to a non-deterministic world where like stuff just, it used to work yesterday.

06:40 Now it doesn't necessarily work.

06:42 Well, what's nice is you can have a discussion.

06:44 Like I've got the home assistant voice set up.

06:46 And so you can actually talk back and forth with the little box on the desk as opposed to kind of,

06:50 I don't know, I won't utter the Amazon version of that box because it'll start going off.

06:56 but you can't really have a discussion with those boxes,

06:58 but you can have a discussion with Quinn 38.

07:00 Oh, really?

07:01 Yeah.

07:02 You can go back and forth.

07:03 I can interrupt it.

07:04 I can, you know, it's all sitting on my desk,

07:06 but just the satellite one dev board, which is getting a 1.1 release

07:11 and their pre-orders are open now.

07:14 So you're talking to it?

07:15 I'm talking to it.

07:16 Talking to my home assistant.

07:17 Okay.

07:18 Do you have arguments?

07:19 All local.

07:20 So it precedes like a prompt into the model and it precedes all of the devices that are in your home

07:29 that home assistant knows with a preference for a specific room you're in.

07:33 So if I'm in the study and the home assistant voice box is in the study,

07:36 I've told it it's in the study, I can just say, turn off the lights

07:39 and it knows it's in the study.

07:40 There's lights in the study and it turns off the lights.

07:42 Interesting.

07:43 Yeah.

07:44 That is clever.

07:44 Here I'm back in the dark ages.

07:46 I like go over to the wall and push a button.

07:48 A wall?

07:49 You could hurt your finger doing that.

07:50 Don't do that.

07:52 Touch that.

07:52 They're conveniently located though.

07:54 I mean, it's designed well.

07:55 So the place where I enter the room is where the switch is.

08:00 It's got incredible technology.

08:03 It's kind of nice.

08:05 Yeah, I just added it into the air.

08:07 What happens when the Wi-Fi goes down?

08:10 Well, that's on battery backup.

08:13 And the Internet's not required.

08:15 All the access points are PoE.

08:17 There's a big battery in the basement, hooked up to the home assistant.

08:20 It's all central.

08:21 There's a battery up here on the framework.

08:23 So I can last a couple hours without any Wi-Fi,

08:27 internet, or power and still talk to my house.

08:29 Okay, nice.

08:31 I talk to my house too, but it just doesn't talk back.

08:34 Mine can talk back.

08:35 Hey, I wanted to say just thank you for stepping in.

08:40 So I sort of just jumped out of Python Bytes without letting people know.

08:45 And there was no hard feelings or anything.

08:46 Michael and I are definitely still friends.

08:48 He didn't kick me out.

08:50 But it was this book and also my day job is pretty exciting.

08:55 So I just sort of wanted to do other stuff.

08:58 I really enjoyed Python Bytes and I'm glad it's not stopped just because I've stopped.

09:03 I really enjoyed doing it.

09:05 You had a great run.

09:06 I mean, how many episodes, 10 years nearly of Brian's voice in my earbuds.

09:12 And now my Python Bytes, I'm like, oh, that's my voice.

09:15 It was funny when I was watching PyBay.

09:19 I was in the audience waiting for Michael Kennedy.

09:22 I sat down right now.

09:24 I kind of entered late.

09:25 Sorry about that, Michael.

09:26 But sat down, and he's up there.

09:28 And I said, oh, that guy's kind of famous.

09:31 And the person sitting next to me turned around and said, yeah, you're kind of famous too,

09:36 man.

09:37 So I'm like, no, not like Michael famous.

09:41 Thanks for coming to talk.

09:42 And your talk on Lean TD was really, really good.

09:45 I think people really appreciated it as well.

09:47 I'm waiting for that.

09:48 One of the fun things about it is I got to talk about my career.

09:52 So I, well, I didn't get to, I decided to.

09:55 So the first few, like maybe five minutes of the talk

09:57 are discussing my career in test and measurement, the RF world.

10:01 That was fun.

10:02 Yeah, if you want Brian's full story leading up to Lean TDD,

10:06 eventually the videos for those talks should be out.

10:09 And I do look forward to coming back for Python Byte's 1,000th episode as well.

10:14 Nice.

10:16 Oh, yeah, yeah.

10:17 We're going to have to start doing more than one episode.

10:19 On the decade.

10:20 No, I'm sure, honestly.

10:22 It's very possible, which is very insane,

10:25 honestly.

10:27 Let's wrap this part out, this section out with just,

10:30 we can maybe each look back.

10:32 Think back to an innocent time.

10:34 AI was a thing we made fun of because it was bad.

10:36 There was no COVID, none of this stuff.

10:39 Back to 2016, 2017 when we started this.

10:42 What's something notable that you all have seen change?

10:45 I'll give you the final word.

10:46 So Calvin, something from 2016, 17,

10:50 that era that really stands out for you.

10:52 So anything from 2016, 2017,

10:54 around that time when you all started the podcast,

10:57 I think the biggest thing that's changed for me

10:59 has been packaging gotten way more sane.

11:01 So I'm super excited about that.

11:03 And the community is still here.

11:05 PyCon still goes strong, even though we had a few years in there of weirdness

11:10 around the world.

11:11 And so I'm glad we're all still here.

11:12 Yeah, packaging has absolutely changed.

11:14 It still has a little ways to go.

11:15 Way better.

11:16 But what was it better?

11:16 I'm still waiting for Python --build --arm my file someday.

11:22 Right.

11:22 The, the, a couple, there's a lot of stuff,

11:24 but of course we don't really talk about Python two seven anymore,

11:29 which is nice.

11:30 um, it's just gone or, you know, hopefully,

11:33 and we'll get comments that people are saying like, I still have to deal with it, man.

11:37 I'm sorry if you still have to deal with it.

11:40 the other thing, packaging is a huge thing.

11:42 I was just, I did, I've been updating a Python plugin or pytest plugin,

11:48 pytest check recently.

11:50 And the release process is push a tag.

11:54 And then this, it's because it's this, the server builds it and talks with PyPI and does that.

12:00 And I don't have to use Twine anymore by myself or anything like that.

12:04 And the package, like, I'll have to just, I guess I'm marrying Calvin.

12:08 The packaging system is something, it's so easy now that I don't think about it.

12:13 Once I get it set up for a project, I just don't think about it.

12:16 Yeah, and Nox and Tox.

12:18 Oh, I still, yeah, Tox is great.

12:20 I like Tox.

12:21 We're just not left unsupervised.

12:23 Unsupervised.

12:24 Well, I was going to say, the thing that I was going to add is the two versus three wars

12:29 and how many of us survived.

12:31 But honestly, if you weren't around in that time or you weren't working in Python at the time,

12:36 It was a long drawn out period where it was not entirely clear that Python was ever going to make it to Python 3.

12:43 And then it would be permanently stuck in an older way.

12:46 It was more shaky than I think people give it credit for being.

12:50 And also, we just made a change that would have made the 2 to 3 transition easier.

12:54 The making UTF-8 default.

12:56 That should have been from the start.

12:58 Just say it would have been a lot easier.

13:02 So many cannot decode exceptions.

13:06 Yeah, I was going to pick the two to three wars as well,

13:08 but as a joke, of course.

13:09 But honestly, that was a serious, serious thing.

13:12 But I think I'll go for performance.

13:14 Python has got a lot faster.

13:15 The Python 310 Foundation and 311 especially made it quite a bit faster.

13:22 And, you know, there's still continues today.

13:25 There was a lot of, well, Python's too slow.

13:26 We can't choose this for our project because obviously we got to use Go

13:30 because that was the hot thing at the time before Rust really kicked into gear

13:34 because we need better async.

13:35 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

13:41 for me the um is that uh py test isn't considered niche anymore um it's uh pretty it's pretty obvious

13:50 that people go with py test it's you don't have to defend it anymore which is cool and there was

13:55 a book that probably helped maybe yeah who knows a couple couple books well i just want to take

14:00 before before we wrap it up brian i just want to say you know thank you for 10 years of hard work

14:05 People from the outside are like, oh, we just jump on for like 20 minutes or sometimes an hour.

14:10 Then you get complaints.

14:10 And it goes back to 20 minutes.

14:12 No, you just jump on for a while and you have a quick chat.

14:14 And there's so much behind the scenes that takes a lot of work to put this show together and keep it flowing.

14:19 Yeah.

14:20 Thanks for the hard work.

14:21 Oh, you bet.

14:21 Thank you.

14:22 And yeah, thank you for keeping it going.

14:24 So I'll just throw out also that Python people is going to come back.

14:28 So I am going to do the podcasting thing more again.

14:32 Well, you know, let us know in the episodes.

14:34 Well, shout it out in the extras as you know how it goes.

14:37 So thanks a lot.

14:38 See you later.

14:39 Awesome.

14:39 Thank you so much, Brian, for being here and being in the show.

14:43 Now let's get back to our group celebration.

14:46 All right, let's jump straight into the items.

14:49 And Nick, you have the probably most popular topic

14:54 if you look at the derivative or second derivative of how fast it's got attention lately.

14:59 Yeah.

15:00 Tell us about this.

15:01 This is crazy.

15:01 If you have not heard about JEV, you have been living under a rock because it's the new kid in the block and it has made quite his presence known.

15:15 It's been raving all over Twitter, X, Reddit.

15:18 And what it is, is a new type of AI model that is not like your usual LLM.

15:24 the folks from TypeSafe AI, these are the creators of JEV, I'll call it a system one decision model.

15:31 And so system one, if you've read the book, Thinking Fast, Thinking Slow,

15:36 they're like two different system types, the system one and system two.

15:39 So JEV is like very focused on the system one type of inference.

15:45 And what this means is that you have, instead of generating text,

15:50 like a QN model or a ChatGPT model instead it makes decisions on either yes or no offers like gives

16:00 you score probabilities for a rank of choices or it gives you like a score for like how how much

16:06 something is like a range of like a range score about how some how much something is so it's very

16:11 interesting and even though it sounds limited the use cases have been quite insane Vincent from

16:17 Marimo did a video about it and he was benchmarking it against traditional LLMs because for the long,

16:25 I'm a data scientist working and I work with a lot of ML models and classification is one of the

16:32 things that, depending on the situation, can be really hard, can be really simple.

16:37 And here comes this JEV model that is like a general classifier.

16:42 And so he benchmarked it against a couple of real-world data sets and beat all of them.

16:49 In most cases, he beat all of them. He even brought like an interesting trick he learned called SetFit.

16:56 You should watch the video. He does a great explanation of it that allows you to train like very basic LLM models like BERT or

17:06 QN embedding models and uses it for classification.

17:10 Jev still does it better in terms of accuracy and so much cheaper.

17:15 Now, the reason why I brought it up was because the use of JEV,

17:18 even though it's really cheap, really fast, is really interesting.

17:22 But there is another interesting point that Vincent made,

17:25 whereby in most companies, there's a lot of data that is unlabeled

17:30 and it is going to be more cost-effective to train your own local model

17:34 on your own proprietary data than it is to use a general model,

17:38 even if something as cheap and fast as JEV.

17:41 So what you could do is to take the JEV model and help you create more accurate data sets,

17:51 get you more cleaner labels.

17:53 Is that kind of like supervised learning, but you use JEV as the supervisor?

17:57 Yeah, exactly.

17:58 So you take some general class and then you create a better data set so you can train supervised models.

18:05 And this is how you like eke out a lot more performance and get better efficiency on very specific tasks to your like business.

18:15 So that's one of the topics I wanted to bring up.

18:17 It's a really interesting video.

18:19 Jev is a really interesting model.

18:21 You guys should go check it out.

18:22 I've seen all this excitement about Jev and I'm like,

18:25 I really want to have a use case for Jev.

18:28 So I haven't had to use it, but I'm glad to hear that you have.

18:30 And that's really cool.

18:31 What do the rest of y'all think?

18:32 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.

18:39 I think Microsoft just announced that's the one they're deploying,

18:43 which I kind of like because I don't know these type secret folks or type secure folks very well.

18:49 But, you know, you're sending them all their data because there's no option to use it locally.

18:52 Yeah.

18:53 Yeah, I think it was kind of interesting because when I first heard about Jev, it was like,

18:57 what's the big deal?

18:58 And I understood then I learned that all it did was the very key thing was,

19:01 is does classification, right?

19:03 It's not an open-ended write me this code is like answer this.

19:06 Yes, no question or put, put every,

19:08 put these things in a bucket.

19:09 Right.

19:10 And I think Nick's point about like using that as a quick and dirty way to

19:15 label some data so that you can do your own training model with like scikit

19:19 learn, which I will always give a shout out to because it's still my wife's favorite

19:23 Python library in the world.

19:25 It is a great thing, right?

19:26 because I think it's one of these things we're also really starting to learn

19:29 is using LLMs to help you build the automation for things

19:34 is a better use of your time and money slash tokens

19:37 than it is to like ask the models to do the same thing over and over

19:41 rather than like, yeah, let's use it to help that,

19:43 like use second learn to actually do like full, like I'm going to use the long term here.

19:47 So I'm going to try to use the right term, but use second learn to build the local model

19:50 that you need to do the classification.

19:51 Yeah.

19:52 That'll be the fastest, cheapest, best reproducible way to do it.

19:54 And I think it's great that this is kind of helping push that narrative down more and more to more people.

19:59 Yeah, it's so much more efficient to have like a model like Jev or a local model than

20:04 to have like Opus running your like home assistant, right?

20:09 That's like very cost, like cost not inefficient, cost efficient.

20:14 Yeah.

20:14 I mean, I think it seems like it would be something that could be used with like spaCy when you're

20:20 annotating parts of natural language.

20:24 And I think there's some creative ways that, you know, you can get decision maybe on a

20:29 first pass or something.

20:31 And I'm looking forward to looking at some of the research because I have heard there's

20:35 a few others at the top of my head.

20:38 I can't name them, but some former folks from DeepMind are doing something in the UK,

20:45 I believe as well.

20:46 So yeah, the real feature here is speed.

20:48 The fact that you can feed it just hundreds of thousands of rows and get answers in microseconds

20:53 and milliseconds.

20:54 yeah yeah that's not a normal ai sort of experience right that's a big deal though

20:59 it's a huge deal all right awesome i definitely think that's a a good pick brett tell us about

21:05 this new council yeah i know uh what the heck am i talking about uh so for those you didn't hear

21:12 um first two weeks of september we had an election i think uh this was covered on python bytes uh for

21:18 Python Packaging Council.

21:19 It is the inaugural one.

21:22 And it was all set up via PEP772.

21:25 And the elections happened.

21:27 It was open to all PSF members who basically said

21:32 they wanted to vote in it.

21:33 And it happened.

21:34 It ended on the 15th or 16th, probably depending on where you

21:38 were on the planet.

21:40 I ended up on it.

21:42 Ended up on it.

21:43 Dolled stuff as well.

21:44 Henry Schreiner and Ralph Gomers.

21:47 So we're all in this inaugural council.

21:52 Perdune and I are on it for two years as the top vote getters.

21:57 And then Donald, Henry, and Ralph are going to be out for a year.

22:00 And then going forward after that, all people on it are going to serve for two years.

22:04 So interesting thing with this is it's the first one.

22:08 I will say we've already met four times and actually already had to meet with the steering council.

22:11 And a lot of it's been around logistics and how to organize ourselves.

22:15 As any of you have had to start anything like this from scratch,

22:17 it's about where are we going to keep our notes?

22:20 Where are we going to let people reach us?

22:22 And that kind of stuff.

22:22 So we're still figuring things out.

22:25 The one thing I will say about this council is it is explicitly meant to be in charge of the sentence specifications

22:32 and the whole website in general for packaging up python.org

22:36 where you can go and read about all the specs relating to the kind of the PyPI slash PyPA side of the world.

22:42 But otherwise, PEP772, which established this council,

22:46 did not try to dictate what this council is going to do.

22:48 So we are actually also currently talking about what do we want to see our function be, right?

22:54 Because we're under the auspices of the PSF, hence why they ran the election.

23:00 But we're trying to figure out how do we represent people,

23:04 basically, right?

23:04 Like we represent specs, but we also want to somehow act as like the public point, I think,

23:10 for and I'm speaking for myself as generalizing for my fellow council members.

23:14 Basically, it's kind of the public face of packaging in Python,

23:17 right?

23:17 Who can you go talk to to maybe get funding to make something better?

23:21 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.

23:30 who can you go talk to to get some answers, get some questions answered or kind of talk to them to figure out what they need and all that stuff.

23:36 Kind of similar to what the SC does around the language,

23:39 but obviously it's basically about packaging.

23:41 And probably honestly, I'm going to guess a little bit around workflow as well,

23:44 because it doesn't fall basically stuff that doesn't fall under the language that way.

23:48 But yeah, it was just basically I noticed admin and also I figured I'd bring that up.

23:53 And yeah, it's as I said, we've just been going.

23:56 We have a issue tracker on GitHub.

23:59 We haven't made public yet because we're getting our initial notes and stuff set up,

24:02 but we're going to try to be as transparent as possible.

24:05 So like we're planning to keep our media notes up there and keep track of what we're going

24:09 to talk about, what's on deck and all that and be accessible.

24:13 Discuss the Python.org is where a lot of the packaging discussions happen.

24:16 So you can find us there.

24:18 And yeah, we're getting going, but we have high hopes that we can hopefully up the throughput

24:22 a bit on stuff because poor Paul Moore used to be the vanilla dictator for packaging.

24:30 Now it gets a bit of a break and at least spreading across the five of us will start

24:36 some things a bit.

24:37 And we can keep doing stuff such as talking about wheel variants.

24:41 And I know there's wheel next being proposed and a whole bunch of kind of big projects that

24:46 hopefully we can help go forward and make packaging for Python just better for everybody.

24:49 Well, because packaging has always been such a simple and easy story in the Python world.

24:53 So simple and so easy.

24:54 I know.

24:55 C and Fortran and all these other languages made it so easy for us to integrate that I

25:00 don't know why anyone's ever complained.

25:02 I'm glad you all are here.

25:03 Yeah, but I will say like the journey of Python packaging from like cheese to eggs to wheels,

25:13 it's actually been pretty amazing to see the evolution of Python packaging.

25:18 So thanks, Brett, for championing that.

25:21 I feel like you care so much about that.

25:23 And that's why it's still you and others are making it such a pleasant,

25:28 at least more pleasant experience.

25:30 Well, thank you.

25:31 I appreciate the kind words.

25:32 Yeah, it has been a bit of a journey for packaging and Python in general,

25:35 right?

25:35 Like the creation of the Cheeshop slash Python Packaging Index,

25:40 because people were too worried we'd upset managers if we called it the Cheeshop.

25:43 FYI, if you go to a 404, it still links to the Cheeshop sketch on YouTube from Monty Python.

25:48 for a reason.

25:48 I'm glad that's still there because I will, being of an age,

25:52 I will still call it the cheese shop.

25:55 Yeah, you've got to do it on PyPI, though.

25:57 Oh, PyPI, okay.

25:58 Sorry if I said Python.

25:59 That was my mistake.

26:00 No, no.

26:01 Yes, there it is.

26:03 There you go.

26:05 But yeah, it's been a journey, right? And it's been very driven

26:07 by the community and, to be frank, very much driven by volunteers.

26:12 So it's moved at the space, the speed of people having time

26:15 to help, but it's been progressing forward and it's something I think everyone cares about.

26:20 And as I kind of joked, doing the best we can in the face of Python being the glue

26:23 language of the internet means we have to integrate with some languages who do not really

26:28 have their up together in terms of packaging themselves.

26:31 And so how do we work around that, right? Like

26:33 we can go to the C community or C++ or any of these other compiled languages

26:37 and go like, well, hey, how do you package?

26:39 Like, oh, shell scripts.

26:41 Oh, okay, great.

26:42 So how do we integrate with that?

26:43 Right?

26:44 So it's been quite the journey.

26:45 And I would like to think we've gotten to a point where the ergonomics are good and it's not painful anymore.

26:54 But I think there's some opportunities for it to be better and definitely faster.

26:59 And obviously the work's not done.

27:01 Yeah, I mean, it's been, I mean,

27:03 just the council itself, it's been a multi-year journey just to get the PEP approved and written.

27:12 And, 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.

27:26 I think it's a really great cross section of historical knowledge,

27:31 scientific knowledge, you know, across a number of different tools.

27:37 And, you know, having Brett having been part of the steering council when we did the inaugural steering council,

27:44 bootstrapping something like this, there's some knowledge in there.

27:47 So that's awesome.

27:48 But one of the things I'm super happy about is, you know,

27:53 having more emphasis on the standards and, you know, there's going to be different tool implementations.

28:00 and that's great.

28:01 I would love to see us get more of a focus on the consumers of packages

28:07 and people who are using our packages on a day-to-day and making that more pleasant

28:13 like when you're using a GPU and other things because the landscape has changed.

28:17 So thank you, Brett, for continuing to serve us.

28:21 Yeah, thanks, Brett.

28:22 You have this legacy of launching councils.

28:25 So that's very cool.

28:27 I feel like it seemed like packaging was kind of solved.

28:31 And then uv came along and we're like, well, now it's really solved.

28:34 But then we also have AI, which means CUDA and all the crazy stuff that Wheel Next is trying to solve.

28:39 And we've got the brand new PEP that got accepted for Emscripten and WebAssembly,

28:45 which is a whole nother angle.

28:46 And so I don't feel like it's solved for sure.

28:48 Well, and Pixie has done a great job, too,

28:51 in the scientific community.

28:53 So, I mean, I think tools are kind of reflecting their users,

28:57 and I think the standards are what makes that possible.

29:00 So it's great to see more domains being represented within packaging.

29:06 A question, Brett, is the council going to be consulting or working with our security developer in residence?

29:15 Because of like, as you know, like we have all these,

29:17 we have more CVEs being, you know, issued, especially attacking packaging.

29:23 Yeah.

29:23 So, yeah, there's Seth Michael Larson,

29:27 who's the security developer in residence for Python itself.

29:30 There's Michael Fiedler, who works on PyPI directly.

29:35 And yeah, pretty much everyone on the council

29:38 either knows either of them directly personally or because we're working under the PSF in a way,

29:46 we know we can always just ask like, hey, can we talk to Mike about something or whatever?

29:51 But I message Mike and Seth directly about stuff.

29:55 So it's definitely there.

29:57 And for instance, I will say part of my platform for running

30:00 was on secure supply chain, right?

30:02 So I will say I personally am interested slash invested in trying to see that improve.

30:08 So security and how packaging plays into that is definitely going to be a thing.

30:12 Now, I will say we, PyPI does not refer to us or vice versa.

30:17 So it's very much going to be a collaboration.

30:20 But we are definitely aware that it is something that we want to work with PyPI to make sure

30:23 that anything we do will work well for them and everyone else in the ecosystem,

30:26 right?

30:27 Because as Carol pointed out, we have a pretty good, I think,

30:30 breadth of coverage for the very broad community that we have in Python on this council to make sure that all corners,

30:36 whether it's scripting, web, data science,

30:39 or an LLM, you name it, I think someone on this

30:43 council has a connection to somebody to make sure that we cover all the bases.

30:46 And that includes security.

30:47 And it's definitely something we have top of mind to make sure that we address.

30:51 So.

30:51 Yeah.

30:52 That's a good question.

30:53 The security side of any sort of packaging is definitely so front

30:57 center these days you know but you know else is many many parsing many things speed michael speed

31:04 is the feature we've talked about this before and it's interesting nick brought up jev we brought up

31:10 the fact like this speed is a feature for like the a lot of the astral tools like rough and uv

31:15 but most folks don't think of python as being fast at parsing json the this article here is a blog

31:21 post from Daniel Lemire. He benchmarks a new wrapper around SIMD JSON,

31:27 which is a C++ library I've never used,

31:30 but he wrote a fast SIMD JSON wrapper around it and actually demonstrates parsing

31:36 tens of gigabytes of JSON per second in Python.

31:40 Now, there's a trick, obviously.

31:42 Doing things in async, you know, is always not necessarily straightforward.

31:45 Doing things threading is obviously never straightforward.

31:47 Free threading brings a new wrinkle to all this, and a lot of

31:50 folks have probably not tried out the free threading capabilities of Python 3.14 and now 3.15.

31:56 This is actually a really good example, or at least a toy use case where boy, does it make a

32:00 big difference.

32:01 So he goes through, he's got a dual Xeon 64 core machine.

32:06 So he's actually able to take that free threading and spread this workload across 64 different cores simultaneously.

32:15 This is a GitHub archive snapshot of, I think, what, eight hours of GitHub data,

32:21 which turns out to be about 7.6 gigabytes of JSON decompressed,

32:25 2.2 million events, runs it through.

32:28 The very first one he did was basically a non-threaded,

32:31 non, it's like single-threaded version of this.

32:35 So if you are looking at the standard JSON library,

32:37 it only basically takes about 42 seconds to parsed the whole set, which are basically new line return JSON messages for every pull request that

32:47 has happened in GitHub.

32:48 So you can see here 0.18 gigabytes per second of throughput.

32:52 The wrapper, he does the same thing for ORJSON,

32:57 fast SIMD, JSON map mini, which is another approach he

33:00 took.

33:00 And then the lazy views, which is basically don't actually construct the dictionaries until I

33:04 ask for them version of this.

33:06 That got the 2.13 gigabytes per second. So that's obviously not as

33:10 as fast as tens of gigabytes per second, then moving into free threading.

33:13 So if you open up and start using all 64 cores,

33:17 and still in one process, one Python process,

33:19 64 cores on free threading, 65.7 gigabytes per second of reading in that JSON file.

33:28 So I think you could see some magic here if you combined a large JSON workload with tools like JEV,

33:34 where you wanted to do some real-time processing

33:35 and pull back the results as fast as possible.

33:38 This is a very valid use case for this, but it's only one of many.

33:42 The other bit here, he uses that there's a lazy trick

33:45 in here, which I mentioned, which he doesn't instantiate the dictionaries

33:48 until they're asked for.

33:49 But in many cases that may be useful.

33:51 You may only want to filter or pull back portions

33:54 of the data and not the whole dataset.

33:56 'Cause like for example, in this use case, I think each message is about 3K inside that dataset.

34:01 So fairly large object each time.

34:05 Let's see here.

34:06 basically a 31 times speed up over single chord regular speed,

34:12 which is pretty incredible.

34:14 It's also a simple, you kind of got to take this a little bit of grain of salt.

34:18 It's a simple use case,

34:19 but if you've got the work that looks kind of like this, you may want to check out,

34:22 he's what the maintainer of this wrapper around the simdjson library itself.

34:28 The benchmarks, he links to them

34:30 in the code. So in that blog post, you'll see the code used in the blog post.

34:34 Here's all the, if you wanted to reproduce this yourself on your own hardware and see how that goes.

34:40 And it's available on PyPI as fast as MDJSON.

34:45 Actually, there's a new release since I looked at this

34:48 an hour ago.

34:48 So very active work going into this. I think it's getting a little bit of attention

34:52 out there in the internets.

34:55 I'm impressed.

34:56 That's pretty awesome.

34:57 And kind of a not explored free threading much because I don't have this kind of a workload. But boy, does that make a great

35:03 argument for python is not slow once we got unleashed upon all the cores yeah i mean there's

35:09 an old saying in the community right python's fast enough and yeah he really is and prototype it and

35:15 if it's not fast enough then you start to look at what you have to do speed up and i think free

35:19 threading adds a new wrinkle to it because originally it was always the answer yeah make

35:23 sure you're using the proper data structure and algorithms right that usually got people most of

35:26 the way and then at the end you'd throw in that extra wrapper traditionally would have been in

35:30 like C or C++ nowadays, probably Rust.

35:33 Probably Rust, yeah.

35:34 But I think free threading throws in a new, well,

35:36 can you go multi-threaded and get a win that way,

35:39 right?

35:39 And because, I mean, you want to make sure you go down

35:43 the ladder of complexity, right?

35:45 And the shortest one is write data structures, write algorithm,

35:48 then it's throw in free threading, then you start talking about

35:51 whether or not you want to go all the way out to a whole other language.

35:54 Yeah, because each step gets progressively

35:57 more difficult to triage and debug.

35:59 Exactly.

36:00 But I think that's a good point to me, Calvin.

36:02 It's like, I think this is what's going to start happening

36:04 is people are going to start using free threading, especially in the libraries

36:07 where you directly don't have to maintain or manage the complexity

36:10 and it will take care of it for you.

36:12 In which case, I think things start to open up a bit

36:14 under these new free threading builds.

36:17 And IO is always a big one, right?

36:18 How could we massively split apart a file, the giant file and do something fast with it with Python?

36:24 So these benchmarks, I'll also note,

36:26 this was post reading it into memory and then doing the processing

36:30 timing started. So it was all in memory and then processed.

36:33 So there was no IO from disk involved in those benchmarks.

36:37 Is there a similar library in Rust that maybe got compared to this?

36:42 Because it seems pretty cool, but it seems like a natural intention would be to do something similar in Rust.

36:49 Oh, our JSON might be Rust.

36:51 That was in part of it.

36:53 It was in the second part.

36:55 It was in the second part. They'd benchmarked it.

36:56 This one is C++.

36:59 Right.

36:59 Yeah.

37:00 It's only a matter of days, right?

37:01 Then this will be rust.

37:04 Yeah.

37:05 I'll just tell my agent to go port it right now.

37:07 Yeah.

37:07 Like I'm sure someone's wrapped, maybe, or Jason's wrapped around Surday or something,

37:12 because I know today's a big one.

37:13 Or Armin just wrote, Armin Roenacker just released a new,

37:17 Jason, a new alternative to Surday for very specific reasons.

37:22 Yeah.

37:23 It'd be interesting to know what that would be.

37:24 We're talking tens of gigabytes per second.

37:28 Yeah.

37:28 If you have those kinds of problems, I'd love to talk to you actually,

37:31 because that sounds pretty cool.

37:32 Very cool.

37:33 I am pretty sure that ORJSON is Rust.

37:37 I think it is.

37:38 It's 55% Python, 44% Rust.

37:40 It could be written in shell.

37:41 I don't know.

37:41 The core, it could be like the tight loop could be in shell.

37:43 It's 1% shell, but unlikely.

37:46 I mean, that's how we used to distribute installers was the executable compressed archives that

37:51 would look like a shell script.

37:52 You just, you know, sh passed the script.

37:55 That's funny.

37:55 All right, well, let's get on to something totally different and talk about speed.

38:00 Okay, speed sounds great.

38:01 Let's do it, Michael.

38:02 Let's do it, speed.

38:03 So I want to come back to a former fellow Portlander,

38:07 Miguel Grinberg, who's now, I believe, in Ireland,

38:10 Scotland, one of those two places,

38:11 unless he's moved again.

38:13 But he has a yearly Python performance benchmark that he puts out.

38:18 So I thought, hey, it's kind of 315 week if you count seven-day rolling window instead of a calendar week.

38:25 So we just had Python 3.15 come out and he said it's time again for this.

38:28 So I thought, you know what?

38:29 Let's have a look and just talk real quick about it.

38:31 This one will be pretty short.

38:32 It's got some interesting things.

38:34 It's not a super complex benchmark, so keep that in mind.

38:38 But it does involve a whole bunch of versions, all the,

38:42 hold on, even one of the unsupported older 3.10s.

38:45 I don't know, 3.10 sounds still pretty new to me, but it's not.

38:48 And PyPy, the JIT compiled version or JIT running version for JIT.

38:53 and node and rust.

38:54 It also says, well, let's take the regular CPython,

38:57 the one with the experimental JIT and the one with free threading,

39:01 and then do all those comparisons.

39:02 So let's look through.

39:04 It says, hey, we're just going to do a single threaded Fibonacci type of pretty big Fibonacci,

39:08 depending on how you write it, I suppose,

39:10 40 numbers.

39:11 Fibonacci gets big fast, but you can memoize it and stuff

39:15 and it's a lot quicker.

39:16 But I imagine this is trying to make it hard, right?

39:18 Well, yeah, because it takes 15 seconds to answer the question on Python 3.10.

39:22 So there's a bunch of charts, you can go look at the article.

39:25 But if you think about performance of even 3.10, which had some of

39:29 that faster CPython work done to it, it's 44% as fast as today's Python.

39:34 So we've gotten 56% faster.

39:37 That's a significant improvement, even just for this sort of straightforward stuff. And there's a

39:41 lot of things that are not factored in here.

39:42 But then 3.11 was 1.7 times faster.

39:46 You'll see that 3.11 and I think 3.14 are the two that make really big jumps a lot of the times here.

39:52 So we've got 3.11, which is 1.7 times faster.

39:56 And then the jump from 14 to 15 is only 3% faster.

40:01 So not dramatically faster, but that's for this particular benchmark.

40:05 There's other areas where it would be dramatically faster.

40:07 And PyPy312, 5.5 times as fast.

40:11 Node, not as fast, but almost five times faster.

40:14 Rust, you know, just a little 77 times faster.

40:17 I don't know.

40:19 I'll pull up the graph for you all.

40:21 Quick thoughts before I go on to the next one.

40:23 Anyone have thoughts?

40:24 It still amazes me how PyPy consistently is, at least with these kinds of workloads,

40:31 showcases how performant it is.

40:33 I know.

40:33 I always think I should really check this out.

40:35 But I think the challenge is then you want to go and import some library

40:40 and it's incompatible with PyPy.

40:41 And you're like, well, it goes from pretty, you know, five times faster to impossible and doesn't run.

40:46 Like, oh, I'm not doing that, you know?

40:48 I do remember announcements with the latest release of PyPy

40:53 that they're trying to interface better with the CPython EBI

40:58 so that external libraries can just like work in PyPy.

41:02 So that's an exciting news, but still, it's so amazing.

41:04 What surprises me is Node still being faster than Python.

41:09 And I really, I have respect for TypeScript and JavaScript,

41:13 But still, it still amazes me.

41:14 It just makes me realize how much engineering went to the V8 engine.

41:20 Yeah.

41:20 It's amazing.

41:22 It's decades of fully funded, full team support

41:26 versus Python, which as Michael alluded to, right?

41:30 Just started maybe five, six years ago, getting external funded,

41:35 let's make it faster kind of performance stuff, right?

41:38 And having people like that and stuff start to bring stuff out from Cinder and all that, right?

41:42 Yeah.

41:42 It's, it's, it's timelines.

41:45 The other thing though, is Michael's not shown us what the JIT numbers are with the experimental

41:50 JIT.

41:50 So we'll also keep going.

41:51 Let's keep going.

41:52 Let's see.

41:53 So yeah.

41:54 So we've got the, the next graph is we've got the standard,

41:58 which is just what you get when you write Python.

41:59 Then you've got the experimental JIT, which you can turn on and the free threading.

42:02 And this is single threaded.

42:04 So the free threading will not get better, but if it doesn't get worse,

42:08 that's actually a huge improvement.

42:09 And I think that's actually the biggest takeaway from this one is for this Fibonacci thing.

42:14 It really doesn't that much of a difference, but Python 3.13,

42:17 free threading was, I don't know, 20% slower.

42:20 And now free threading is actually just on par with regular CPython.

42:25 That's great.

42:26 That's actually really good.

42:27 And the JIT, as Brett points out, is like 20% faster.

42:30 Yeah, I think Nick brought it up with like the compatibility.

42:32 Like PyPy had problems with importing some package you want to use.

42:36 Now, even the folks over at EVE Online are like, we're fast enough.

42:39 finally, let's just use the box Python.

42:42 And now we've got all the benefits of a giant library of ecosystem stuff.

42:46 Exactly.

42:46 Guess what?

42:47 If we upgrade, all right, let's go a little farther.

42:50 So the next one is the bubble sort.

42:51 That was always a sketchy path.

42:52 Like they were on such an experimental version of Python

42:55 with their whole production.

42:56 That is impressive.

42:57 Yeah.

42:58 They stuck it out with Stackless for a long time.

43:00 Long time.

43:01 Long time.

43:02 Until this year.

43:03 Yeah, I just had them on Talk Python.

43:05 So yeah.

43:06 All right.

43:06 The next one is the Fibonacci with four threads.

43:08 I think this gets pretty interesting and it shows some really interesting improvements.

43:14 So we've got maybe if you run four threads to answer the Fibonacci question

43:18 compared to the others like JIT and standard, it's, I don't know,

43:21 20, 25% time it takes.

43:24 So that's four times faster, which if you add four threads

43:26 and you get four times faster, wow, that's good.

43:28 That's pretty good.

43:29 People who haven't done multi-threading before, you rarely get as many times improvement

43:33 as you have CPUs you've added to it, right?

43:35 There's a lot of coordination and other things.

43:37 It is usually not linear.

43:38 So, yeah, this is actually pretty impressive.

43:42 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,

43:52 was able to like garner the attention and love of so many people.

43:56 And it was good enough for so many things.

43:59 And now it's just like getting better and better now. It's actually quite remarkable.

44:04 Absolutely.

44:05 And also the JIT from 3.14 to 3.15 has gotten quite a bit better as well.

44:11 So that's pretty interesting.

44:12 What else, what else do we got to take away from here? I don't know.

44:15 I would say.

44:16 What was it, Brett, who said like Python is like the second best choice for everything. I think

44:19 that's not true anymore.

44:20 Yeah.

44:21 I don't think it's, I don't know.

44:23 There's certainly.

44:24 Well, your AI will probably always choose Python for certain projects.

44:28 So it's really the first choice for everything.

44:30 It's the first choice.

44:31 Yeah.

44:32 Yeah, it's head-to-head on JavaScript, or if you ask it to do a web thing,

44:35 it probably does JavaScript if you don't guide it.

44:37 But if you ask it to do any sort of data thing, it's definitely doing Python.

44:40 Yeah, playwright is Python.

44:43 And to be fair to PyPy, right, they also have to keep up with the language,

44:49 right, intended to change, hence why they're not on 3.14 or 3.15,

44:53 while the built-in JIT just gets to piggyback on all the other work.

44:58 Yeah, 100%.

44:58 JIT comparison is not a direct one-to-one that way because of that.

45:01 I also want to give a quick shout out to some of the new things we got that are utterly untested here.

45:06 This is, I wrote one function, and in that one function,

45:10 I ran it a bunch, sometimes with threads, sometimes with JIT,

45:12 sometimes without, and it did a thing,

45:14 right?

45:15 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.

45:24 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.

45:31 if you had 10,000 functions and it was a big, interesting application,

45:36 those could also really start to make a difference.

45:38 So the PSA, guys, the PSA is just upgrade your Python

45:43 and you get performance for lunch.

45:45 Oh, yeah.

45:46 You will save money.

45:47 Yeah.

45:47 This is like legitimate free lunch.

45:49 Yeah, no, I've had this discussion with people like when their managers don't want to punt

45:54 and put off upgrading, the way to sell it to management is

45:57 you will save money.

45:58 Python will be faster.

45:59 we'll use less memory very likely as well.

46:02 And thus we will do more with less.

46:04 So either we can scale higher or we can do the same things with less machines.

46:07 So why not let us upgrade, please?

46:10 So it's less of a pain because we only get to upgrade every two or four or five years.

46:14 And it's a big hassle.

46:15 It's like, no, upgrade continuously and you'll keep getting these ones.

46:18 Well, and your libraries get far quicker too.

46:21 Like Napari using lazy imports is far better than on a version

46:26 that can't use lazy imports.

46:28 So, yeah.

46:30 And to quickly touch on what Michael said about the difficulty of judging performance on these micro benchmarks.

46:36 Right.

46:36 This is one reason PyPerformance that is used for benchmarking CPython and Python in general,

46:42 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.

46:53 But another point that actually came up during the development 3.15 was the garbage collector,

46:59 right?

46:59 There was the incremental garbage collector put in.

47:01 And we found out after people started to test with it, that it actually didn't work in large,

47:07 certain key workloads and actually led to larger garbage collector pauses.

47:11 Because I don't know how many people know this, but Python kind of has two garbage collectors,

47:14 right?

47:15 There's reference counting for most stuff, but then we have a garbage collector look for

47:18 cycles because reference counting can't handle cycles.

47:20 And we've had a generational one for a long time.

47:22 and incremental will get to less pauses and hopefully better performance but we found out

47:26 the one we did actually did make things better for most people but for certain people the the

47:33 degenerate cases like the really bad edge case ones it was really slow and bad so we actually had to

47:37 roll it back and um and mark shanning for instance currently has a proposal on how to kind of fix

47:43 that but there's another point that it's really hard to measure unless people actually do this

47:46 which is why we will always say as a psa from the python dev team please test the alphas and the

47:52 And please, please at least test the release candidates on actual workloads to let us know

47:56 where things may have gone wrong.

47:58 Because if someone hadn't tested that and told us ahead of time, we would have shipped

48:01 and we actually did in 3.14, a garbage collector that needed to get rolled back.

48:06 So it just didn't hit people really badly.

48:08 Absolutely.

48:09 All right, let's have Carol close it out.

48:12 And our favorite topic, artificial intelligence and tools around it.

48:18 So, you know, after being in the scientific ecosystem and data science and Jupyter ecosystem,

48:25 you know, I've watched the evolution of,

48:28 you know, machine learning, deep learning.

48:31 We call AI now.

48:33 And one of the things Paul Everitt and I have been sort of talking over the past year about,

48:41 hey, you know, so much of it is built on top of the work that we've done with Python,

48:46 that it would be great to have a community benefit from it,

48:52 not just large corporations steering the future of these tools.

48:58 And so back in March, Georgie and Paul and I sat down and we

49:03 started talking about, hey, how could we use more local capacity?

49:09 How could we improve privacy, security,

49:14 not leaking your data out to other services.

49:19 And Paul did a keynote back at EuroPython this year and introduced what we're calling Satyrn.

49:27 And really, Satyrn is looking at doing AI your way,

49:33 which doesn't exclude the use of foundational models, but really emphasizes

49:39 is that there's a spectrum of ways that you can use large language models and agents to suit your

49:48 particular workflow because one size does not fit all.

49:51 And from that EuroPython keynote, he had a

49:54 call to action, mostly for the Europe community,

49:59 but it has expanded out from that to kind of create a collective of individuals that are passionate about making it Python first and trying to make

50:10 transparent and trusted AI.

50:13 So I've kind of helped with the effort to kind of get the scaffolding in

50:19 place.

50:19 And I'm happy to say that when 3.15 got released, there was also a model that up on

50:26 hugging face that the Satyrn team has trained on 315 that can run locally as well as on other

50:35 things.

50:36 And I think one of the key things is while we look at local first,

50:41 we're also looking at trust first.

50:44 And, you know, I could go back to my icon keynote back in 2023 when ChatGPT was still

50:52 in beta.

50:53 And one of the things that bothered me was, do I trust this large language model?

50:59 Do I trust how it was trained?

51:01 Do I trust it, you know, to be unbiased?

51:04 And while there's a lot of value in it,

51:07 you still have to verify that it's doing what you think it's doing.

51:12 And so I think having more options where,

51:16 you know, you don't always need a sledgehammer.

51:18 Sometimes a hammer is good enough.

51:20 And in this case, sometimes you can get a lot of good stuff the last six months out of local models.

51:26 And, you know, the other key component is one of the keys that has made Python so successful is the language,

51:36 the ecosystem of libraries, but also the huge commitment the community has about sharing learning materials,

51:44 educating each other, spreading the knowledge.

51:48 And if all Satyrn did was provide these education and learning opportunities,

51:54 which is a big part of what we're taking from Jupyter, Jupyter really helped accelerate learning,

52:02 sharing learning materials with folks.

52:04 And, you know, there's a team around sharing educational content,

52:09 both created by the team, as well as highlighting things that are available within the community.

52:15 So it's still in the early stages, but I think there's good energy behind it.

52:21 And I would love to see it grow more and more.

52:24 And the reason we kind of started in Europe was we felt like the continent as a whole was more focused on security,

52:37 privacy, and the goal impact of AI.

52:41 Well, and being a European, how much do you want to say our entire AI future hangs on large American tech companies or Chinese companies?

52:51 Maybe we should have some say in this, something like that, right?

52:53 Yeah, well, I think, I mean, everybody should have a say in it.

52:57 And I think, you know, some of the large companies,

53:01 let's face it, they're beholden to their shareholders or investors to maximize profits,

53:08 which doesn't always align with maximizing responsibility to the community and ethics and other things.

53:16 So, you know, I think alternatives are always good.

53:20 It helps push ecosystems forward.

53:23 There's a lot of great stuff happening in bioscience and medical applications,

53:29 particularly with rare diseases that the foundational models have been hugely helpful for.

53:35 And so, you know, it's not one or the other.

53:39 There's a spectrum of use cases.

53:42 There should be a spectrum of tools and approaches.

53:44 And as we navigate the understanding of it, sharing that becomes more and more important,

53:51 which Python bites.

53:52 And Python to me for sharing this on a regular basis.

53:56 I love the fact there's two models.

53:58 You've got the smaller Ornith model and then the other one based on that Quinn 3827B powerhouse of a local model.

54:06 I can't wait to try both of them.

54:08 Yeah.

54:08 I mean, it's pretty interesting.

54:09 And there's teams that, if you join the Discord, that are working on these, how do you test and train?

54:19 And so we're trying to be open by default and the information and the workflows.

54:26 So, you know, definitely reach out.

54:28 And yeah, it's got some good energy behind it.

54:32 Are there other languages who are interested in participating?

54:36 I don't know.

54:37 I mean, there might be.

54:39 I mean, I could see maybe Rust having some interest, but for now we've kind of scoped it to Python and,

54:47 you know, trying to train something specifically

54:50 on Python 3.15 and the use cases that, you know, are new with 3.15 was something that

54:56 was really interesting.

54:58 But that's a really good question.

54:59 I wonder where my R fellas, like the R language are,

55:03 that would be a good language to add under the Satyrn.

55:06 You know, yeah.

55:08 I mean, in fact, Posit is having sort of a hackathon,

55:13 I think, in November that I'm going to.

55:15 So that might be a great thing to kind of kick around the tires on.

55:19 Yeah, I want you to say, personally, I've always had trouble running local AI models,

55:27 mainly because sometimes it was always hard to know which models could actually fit into my consumer-grade hardware.

55:35 And so navigating that has always been not the fun part.

55:39 So I'm really looking forward to participating in this because I believe you guys will probably do a better job of discussing.

55:45 These are the kind of hardware you can run.

55:48 This is the kind of models that can run on that hardware.

55:50 This is some use cases, something as simple as categorizing or,

55:55 you know, categorizing like your files to like helping you run a small,

56:01 like automated business or something.

56:02 That'll be cool to see what you guys do.

56:05 Well, and looping back to the start where you were talking about Marimo,

56:09 we've actually used some of the Marimo hub and the GPU access there to do some of this training.

56:17 So, you know, so it doesn't have to be just your local laptop.

56:21 It can be, you know, something that is a little beefier.

56:25 Yeah, and looking at the size of the models, they're not ginormous.

56:28 No.

56:28 You know, they're 10 billion parameters, 28 billion parameters.

56:31 These are plausible on decent local machines.

56:34 Yeah.

56:35 I mean, they definitely work on my GPU Linux box.

56:40 You can get it to work on a Mac as well.

56:42 It's a little bit, you know, a little bit harder.

56:45 Got to submit it to the app store.

56:47 see if they approve it yeah no i think you just have to get the mlx you know version of the training

56:52 done so you can accelerate it on the on the max yeah luckily i've got a Linux box here too so let's

56:57 throw it on there cool let us know what you find out i just realized we're running out of planets

57:02 to rename with a y i did i was not the namer uh that would be paul no i'm just glad you said

57:10 after jupiter yeah i mean uranus is like one of the last ones with the u in it and yeah yeah

57:16 number out yeah yeah yeah yeah good point brett it's brett it's gonna be okay we're going out to

57:21 the orc cloud yeah fine yeah s2 s7 y5 i know you thought that was a u but no it's the y one

57:30 it'll be good it'll be good all right well this is super interesting and the naming i guess

57:35 probably came off of jupiter uh that i think when paul was looking at it yeah i mean definitely some

57:42 of the things that Jupyter did in terms of accelerating the community.

57:47 He wanted, you know, that ability to share knowledge as well as build things.

57:54 And, you know, the Y just seemed to make

57:58 sense. Plus there are other Satyrns out there, Satyrn AIs and whatnot.

58:01 So why not add the Y?

58:03 Yeah.

58:03 Why not? Why not? Cool.

58:05 Well, we're just about out of time, but I've got a couple of

58:09 extras i'm gonna trim mine back but i know brett you want to there's some little release or

58:14 something you wanted to talk about what is this i think you already talked about it yeah 315.0

58:20 finals gone out so 310 also hit eol about a week prior i think two weeks prior i can't remember

58:26 uh but yeah after the unfortunate new tradition of having a third rc happened um finals out it's

58:33 good it's done uh obviously we're already working on 3.15.1 which should hopefully come out typically

58:41 historically we do it in november um but then we'll be on the usual two-month cadence for

58:45 bugfish releases but they're 15s out um a lot of great stuff in it as i know has been covered here

58:51 and download however you download your latest python i'm gonna give a huge shout out to trey

58:56 hunter who has some really good what's new in 315 that,

59:02 you know, web developers and folks that

59:05 are maybe not as focused on some of the scientific benefits for some of the performance stuff.

59:11 It's really well done.

59:12 And Barry Warsaw's what's newt, if you want to do a dungeon

59:16 crawler version of it.

59:17 That was so awesome.

59:19 I really enjoyed that.

59:20 That is fun. It was really fun.

59:22 Agreed.

59:22 Yeah.

59:22 I was thinking, could I make a visual version to overlay on that? I don't know.

59:26 We'll see.

59:26 I will not be doing that.

59:28 But I do want to give a quick shout out to this as an extra.

59:30 Have you all seen this?

59:32 This is insane.

59:33 This craft apps thing.

59:35 I think the guy's name is Ben.

59:38 I thought it hit the news.

59:39 Yeah.

59:39 Yeah.

59:40 This guy had a big falling out with Adobe over the subscription stuff.

59:44 Surprise.

59:44 And said, well, you know what I'm going to do?

59:46 I'm going to recreate Photoshop.

59:48 And I don't even know the apps that well.

59:50 Let me see.

59:51 I'm going to recreate Photoshop.

59:52 And I'm going to create Illustrator.

59:55 And a bunch of others, Lightroom, I don't know, a bunch of these, Acrobat,

01:00:01 and recreated them.

01:00:02 A whole creative suite.

01:00:04 Almost.

01:00:04 It's missing Audition.

01:00:05 I can't wait for him to do Audition.

01:00:07 Let's go.

01:00:08 Because I pay a ton of money to edit this podcast and other stuff with Audition.

01:00:12 But yesterday, when I was like, I'm going to throw this up here as a thing they're talking about.

01:00:16 There were 12.

01:00:17 Today is 13.

01:00:18 And I got to check real quick and see what the 13th is.

01:00:21 But it has Microsoft Word, PowerPoint,

01:00:24 and Excel.

01:00:25 I got the little deck craft thing.

01:00:27 I know it's not the same, but I opened up my talk that I gave

01:00:30 with all the animations and gradients and stuff for PiBay and it presented it just fine.

01:00:36 I don't know.

01:00:36 I don't know that it edits as well.

01:00:38 But anyway, I just, I think, I wanted to give this a bit of a shout out

01:00:42 because it's just, it's a weird time.

01:00:44 And I think this, you know, looking back 10 years and looking forward 10 years,

01:00:48 like this is kind of an interesting thing at the inflection point.

01:00:50 Well, and especially because they talked about how they tried to do this as clean room,

01:00:54 right?

01:00:54 I think there's no source code to look at here.

01:00:56 They literally, I think, threw a model at it and said,

01:01:00 here's the thing I want you to reimplement.

01:01:02 Go reimplement it.

01:01:03 And here's the UI.

01:01:05 Here's its feature list to make that.

01:01:07 Go read the publicity material, right?

01:01:10 There's a lot of documentation about how Photoshop is supposed to work.

01:01:13 And if you give it access on the browser version, you can click through it and all that and crank away at it.

01:01:18 Now, I'd be kind of curious as to how much their token budget was to pull that off.

01:01:22 Very much curious.

01:01:23 High. Very high.

01:01:24 Very high, I'm sure.

01:01:26 Because Cloud re-implemented a C compiler for the Linux kernel,

01:01:30 and it cost them hundreds of thousands of dollars for something.

01:01:34 Wow.

01:01:34 But it's still kind of cool that this is what you theoretically can do

01:01:38 with appropriate budget with LLMs.

01:01:41 We talked about way back when.

01:01:44 Yeah.

01:01:45 I mean, way back to March, we talked about a clean room rewrite,

01:01:49 and this was for Chardet.

01:01:51 Yes.

01:01:52 And this was like a big to-do.

01:01:54 And this was just a library.

01:01:55 Now we're like, oh, let's just redo giant suites of apps.

01:01:59 You know?

01:02:00 Yeah, it's a very interesting world we are entering for software.

01:02:05 Very, I think a lot of the companies that their software was their moats

01:02:11 because they put so much investment to it and the time it would take to reimplement it,

01:02:18 deter competitors.

01:02:20 But with AI, it's very interesting.

01:02:22 Now, somebody could create a DaVinci Resolve specific to their own podcasting editing needs,

01:02:28 and they don't need DaVinci Resolve or all the other ones that exist.

01:02:34 So it's very interesting, the era of personal software we're entering into.

01:02:39 Absolutely.

01:02:40 Even if I never use this, I hope this puts pressure on companies

01:02:43 to be more on top of things, newer versions,

01:02:46 less expensive.

01:02:47 Yeah, and I think for desktop software specifically, right where you can have where the actual desktop app gives the model something to work against to

01:02:57 verify that it's working appropriately and the outcomes are what you expect is of versus like

01:03:03 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 way more complicated to try to recreate just based on how slack looks on the front end but for

01:03:13 photoshop on this desktop right once again if you've got the token budget it can just turn away

01:03:17 for quite a while and eventually just get probably a good enough axillin.

01:03:21 I mean, or you just go use GIMP.

01:03:22 I mean, yeah.

01:03:24 I mean, how many features do you use of any given app? Probably 10%, right? If

01:03:27 you just say I'm building it for me.

01:03:29 Yeah. Like to Nick's point, just make it for you. Yep.

01:03:31 All right.

01:03:32 Well, that's enough of this, but I do think it's a really bizarre and interesting thing that

01:03:36 happened this week. Anyone else got something I want to shout out before we get to the joke?

01:03:39 I got a real time update for Nick.

01:03:42 Nick asked about how he could know what models he could run

01:03:45 on his hardware.

01:03:47 I've got the screen up here for llmfit.org, and that's actually

01:03:51 a TUI app that you can just load up. It detects your

01:03:55 hardware.

01:03:56 So, Michael, if you wanted to put that up on the screen.

01:03:58 All right, give me something to search for.

01:03:59 What am I looking for? No, I shared.

01:04:01 No, I shared it already.

01:04:02 Oh, your screen.

01:04:03 Yeah, my screen.

01:04:05 There we go.

01:04:06 So, it detects your hardware.

01:04:08 It loads up a whole bunch of models from different providers,

01:04:10 like Olama, Lama CPP, MLX, Docker

01:04:13 Runner Models, LM Studios, and

01:04:15 you just filter for what models would run best and give you scores so you can actually see where it

01:04:20 might be better fits.

01:04:22 I mean be careful you're downloading potentially random models from

01:04:25 potentially random places so you probably want to be careful which providers you pull those models

01:04:30 in from but it's a cool little tool to see like what what actually would perform and is there a

01:04:34 better version of that model that I'm already using that I should be using based on like quantization

01:04:39 and the MLX optimization all those kinds of pieces so I thought that'd be pretty cool for folks who

01:04:45 what model should I run?

01:04:46 And the other one I got on my extras is the, my standard uv report,

01:04:50 UV 0.13 makes Python 3.15, the default.

01:04:54 So we keep it right up.

01:04:56 Awesome.

01:04:57 I've already run uv Python install 3.15, dash, dash,

01:05:01 default, I'm good to go.

01:05:02 Ooh, I need to do that.

01:05:04 That way if you just type Python, it falls to that one rather than some other system.

01:05:07 That's what I want.

01:05:08 Or if you're on Windows, use the PyManager,

01:05:10 just type PyManager install 3.15.

01:05:13 T, get the free threaded version.

01:05:14 Ooh.

01:05:16 Brett, one-upping.

01:05:19 All right.

01:05:20 How about a joke?

01:05:21 I give Steve the call out.

01:05:22 He does all that, but I just know Windows has its own built-in manager

01:05:25 that comes from Python.org, and Steve put a lot of time on it.

01:05:28 And it's my North Star dream to get that on every major tier one

01:05:32 or maybe even tier two platforms for Python someday.

01:05:35 That would be awesome.

01:05:36 Before we go on, you should give Nick a moment for at least one of his items on there.

01:05:40 I think it's really important.

01:05:41 Oh, okay.

01:05:41 I didn't know you have some, Nick.

01:05:42 Go ahead.

01:05:43 Oh, yeah.

01:05:44 I just wanted to quickly call out Black Python Devs.

01:05:47 I'm wearing the T-shirt here.

01:05:49 One of the amazing things that one of our members, Emmanuel,

01:05:52 is doing is taking our Python Dev student ambassadors and going across campuses in Africa.

01:06:00 So this is a really important initiative because if you guys don't know the continent of Africa,

01:06:07 so many countries and so many youths there, we want to promote Python.

01:06:13 for the next generation of Python developers.

01:06:16 I think one of the CEOs of Anaconda says that he wants a world

01:06:22 where the next billion users are Python users, something like that.

01:06:25 Some of those users will be in Africa.

01:06:29 So this is an amazing campaign.

01:06:32 And if you go to Black Python devs and the links will be in the show notes,

01:06:36 you can support that initiative.

01:06:39 And I'm going to also shout out with Black Python Devs at PyOhio,

01:06:43 they did a leadership summit again.

01:06:46 And I mean, looking at the leaders that Python Devs has over the years grown,

01:06:53 they have something really good going on and seeing those leaders emerge

01:06:59 has been super rewarding and, you know, doing the good stuff.

01:07:04 Awesome.

01:07:04 Yeah, thank you.

01:07:05 Yeah, thanks, Nick.

01:07:06 Anything else?

01:07:08 All right, I got a quick short joke here for us.

01:07:11 This comes to us from Derek Chambers, sent us in, said, well,

01:07:15 I felt this way at some point.

01:07:16 So theoretically, a person's applying for a job, trying to look good.

01:07:19 Interviewer says, says here on your resume that you're an exceptional Python developer.

01:07:24 Can you prove it?

01:07:25 Oh, sure, says the interviewee.

01:07:27 Run any of my code.

01:07:28 It raises exceptions a lot of the time.

01:07:30 Oh, I'm a sucker for a good dad joke.

01:07:32 Dot, dot, dot, bang.

01:07:33 I love it.

01:07:34 I also feel like I just reached dad level because I figured out the punchline before you got there.

01:07:39 I was like, oh, wow, I finally leveled up my dad.

01:07:41 Joke level is being an actual dad.

01:07:42 There you go.

01:07:43 I feel like now the new point is parenthood.

01:07:46 That's right.

01:07:46 Absolutely.

01:07:47 All right.

01:07:47 Well, Nick, Brett,

01:07:49 Carol, thank you so much for being here.

01:07:51 It's really nice that you came to celebrate this.

01:07:53 And Calvin, thanks for helping.

01:07:55 Happy 500.

01:07:56 Yeah.

01:07:56 Happy 500.

01:07:58 And happy thank you to Brian, too.

01:08:00 Absolutely.

01:08:00 Thank you to Brian.

01:08:02 Bye, all.


Want to go deeper? Check our courses




Subscribe to Python Bytes