WEBVTT

00:00:00.020 --> 00:00:03.480
<v Michael Kennedy>Which of your Python tools would you still pick if you started fresh today?

00:00:04.020 --> 00:00:05.580
<v Michael Kennedy>For a long time, the answer was easy.

00:00:05.730 --> 00:00:07.160
<v Michael Kennedy>The stack felt settled.

00:00:07.860 --> 00:00:10.520
<v Michael Kennedy>AI has reopened almost every one of those choices.

00:00:11.160 --> 00:00:12.100
<v Michael Kennedy>Some tools got faster,

00:00:12.340 --> 00:00:14.100
<v Michael Kennedy>others got replaced outright.

00:00:14.370 --> 00:00:14.900
<v Michael Kennedy>On this episode,

00:00:15.120 --> 00:00:19.480
<v Michael Kennedy>a panel takes stock of the state of the art in Python for 2026.

00:00:20.360 --> 00:00:23.760
<v Michael Kennedy>Calvin Hendrix Parker is CTO and co-founder of Six Feet Up.

00:00:24.260 --> 00:00:26.480
<v Michael Kennedy>Pat Decker works in DevOps at Hybu.

00:00:27.000 --> 00:00:30.060
<v Michael Kennedy>Reuven Lerner has trained Python developers for 15 years,

00:00:30.240 --> 00:00:31.520
<v Michael Kennedy>and Sidney Runkle does product

00:00:31.840 --> 00:00:34.180
<v Michael Kennedy>management for open source at LangChain.

00:00:34.830 --> 00:00:36.600
<v Michael Kennedy>One of them barely even opens an editor anymore.

00:00:37.260 --> 00:00:40.380
<v Michael Kennedy>Listen and hear the surprising replacement they have.

00:00:40.720 --> 00:00:43.260
<v Michael Kennedy>This is Talk Python To Me, episode 566,

00:00:43.640 --> 00:00:45.140
<v Michael Kennedy>recorded October 1st,

00:00:45.440 --> 00:00:46.360
<v Michael Kennedy>2026.

00:01:03.460 --> 00:01:07.800
<v Michael Kennedy>Welcome to Talk Python To Me, the number one Python podcast for developers and data scientists.

00:01:08.320 --> 00:01:09.060
<v Michael Kennedy>This is your host,

00:01:09.280 --> 00:01:09.700
<v Michael Kennedy>Michael Kennedy.

00:01:09.900 --> 00:01:13.640
<v Michael Kennedy>I'm a PSF fellow who's been coding for over 25 years.

00:01:14.220 --> 00:01:15.380
<v Michael Kennedy>Let's connect on social media.

00:01:15.800 --> 00:01:17.960
<v Michael Kennedy>You'll find me and Talk Python on Mastodon, Bluesky,

00:01:18.340 --> 00:01:18.860
<v Michael Kennedy>and X.

00:01:19.050 --> 00:01:20.980
<v Michael Kennedy>The social links are all in your show notes.

00:01:21.740 --> 00:01:25.260
<v Michael Kennedy>You can find over 10 years of past episodes at talkpython.fm.

00:01:25.440 --> 00:01:28.680
<v Michael Kennedy>And if you want to be part of the show, you can join our recording live streams.

00:01:29.000 --> 00:01:29.460
<v Michael Kennedy>That's right.

00:01:29.670 --> 00:01:32.920
<v Michael Kennedy>We live stream the raw uncut version of each episode on YouTube.

00:01:33.500 --> 00:01:37.840
<v Michael Kennedy>Just visit talkpython.fm/youtube to see the schedule of upcoming events.

00:01:38.180 --> 00:01:41.800
<v Michael Kennedy>Be sure to subscribe there and press the bell so you'll get notified anytime we're recording.

00:01:42.680 --> 00:01:43.000
<v Michael Kennedy>Hey everyone,

00:01:43.220 --> 00:01:44.360
<v Michael Kennedy>I have a really big announcement.

00:01:44.660 --> 00:01:48.340
<v Michael Kennedy>For several years now, I've wanted to offer something premium to all of you out there listening.

00:01:48.680 --> 00:01:51.740
<v Michael Kennedy>The obvious option is some kind of feed with no ads.

00:01:52.320 --> 00:01:53.560
<v Michael Kennedy>And that just didn't sit right with me.

00:01:54.020 --> 00:01:55.560
<v Michael Kennedy>No ads is not that much of a bonus.

00:01:56.040 --> 00:02:02.720
<v Michael Kennedy>But over the last couple of months, I've been working really hard to make the Talk Python experience go beyond just the podcast and the courses.

00:02:03.480 --> 00:02:07.340
<v Michael Kennedy>After a ton of work, I am thrilled to announce Talk Python membership.

00:02:08.060 --> 00:02:09.080
<v Michael Kennedy>So what does this get you?

00:02:09.320 --> 00:02:09.700
<v Michael Kennedy>In short,

00:02:09.979 --> 00:02:10.340
<v Michael Kennedy>community,

00:02:10.740 --> 00:02:11.300
<v Michael Kennedy>tech events,

00:02:11.680 --> 00:02:12.800
<v Michael Kennedy>and episode previews.

00:02:13.600 --> 00:02:13.960
<v Michael Kennedy>Community.

00:02:14.460 --> 00:02:16.780
<v Michael Kennedy>Talk Python membership gets you a real community.

00:02:17.100 --> 00:02:22.660
<v Michael Kennedy>Starts with a private Discord server where you can hang out with fellow members and well over 100 podcast guests.

00:02:23.160 --> 00:02:26.980
<v Michael Kennedy>Many of the most renowned folks who helped build Python itself are hanging out there.

00:02:27.380 --> 00:02:33.160
<v Michael Kennedy>We have rooms to discuss fun tools you found, places to post job openings, or even say you're looking for work,

00:02:33.640 --> 00:02:35.440
<v Michael Kennedy>and other areas to just hang out.

00:02:35.880 --> 00:02:36.320
<v Michael Kennedy>Tech events.

00:02:36.760 --> 00:02:41.060
<v Michael Kennedy>Many of you tell me how Talk Python brings the Python community to your location and your world.

00:02:41.520 --> 00:02:44.940
<v Michael Kennedy>Maybe you work at a company with just a few fellow developers or data scientists.

00:02:45.520 --> 00:02:49.940
<v Michael Kennedy>Maybe you live in a small town where large meetups and conferences just don't exist.

00:02:50.500 --> 00:02:51.760
<v Michael Kennedy>At Talk Python To Membership,

00:02:51.920 --> 00:02:55.840
<v Michael Kennedy>we're running monthly tech meetups that you don't just attend but participate in.

00:02:56.240 --> 00:02:58.260
<v Michael Kennedy>These are often run by well-known Python people.

00:02:58.820 --> 00:03:00.600
<v Michael Kennedy>Talks run from 30 to 45 minutes,

00:03:00.920 --> 00:03:04.300
<v Michael Kennedy>and some are followed by a hangout and mingle in a voice and video channel.

00:03:04.760 --> 00:03:06.780
<v Michael Kennedy>I already have the first couple of tech events on the schedule.

00:03:07.440 --> 00:03:11.340
<v Michael Kennedy>October 28th, I'll be kicking everything off with Talk Python in production,

00:03:11.770 --> 00:03:15.140
<v Michael Kennedy>and I have some wild updates since the last time you've heard me discuss this.

00:03:15.920 --> 00:03:18.080
<v Michael Kennedy>Coming up after that is Sebastian Ramirez.

00:03:18.560 --> 00:03:21.200
<v Michael Kennedy>He'll take us through deploying to FastAPI Cloud,

00:03:22.099 --> 00:03:26.200
<v Michael Kennedy>and sometime after that, I'll be presenting Succeeding with Agentic Coding,

00:03:26.800 --> 00:03:30.380
<v Michael Kennedy>backed with a significant amount of real-world examples and data.

00:03:30.600 --> 00:03:35.340
<v Michael Kennedy>You'll find times and details for these and new meetups at talkpython.fm/meetups.

00:03:35.960 --> 00:03:37.260
<v Michael Kennedy>And it's not just live events.

00:03:37.900 --> 00:03:41.640
<v Michael Kennedy>All of these events are recorded and available to watch and replay anytime.

00:03:42.620 --> 00:03:43.500
<v Michael Kennedy>Episode previews.

00:03:43.600 --> 00:03:43.800
<v Michael Kennedy>Now,

00:03:43.980 --> 00:03:48.320
<v Michael Kennedy>I'm sure most of you listen to the entire episode and never miss a single one.

00:03:48.720 --> 00:03:49.500
<v Michael Kennedy>At the same time,

00:03:49.680 --> 00:03:52.040
<v Michael Kennedy>there may be some that you are unsure about the topic,

00:03:52.270 --> 00:03:52.640
<v Michael Kennedy>whether it's a

00:03:52.650 --> 00:03:55.800
<v Michael Kennedy>good fit and whether or not you want to take the time to listen to it.

00:03:56.360 --> 00:04:00.140
<v Michael Kennedy>That's why I'm creating a members-only sidecar podcast feed.

00:04:00.640 --> 00:04:07.680
<v Michael Kennedy>Each full episode comes with a short summary episode that covers what's discussed and interesting angles and surprises along the way.

00:04:08.200 --> 00:04:13.760
<v Michael Kennedy>That way you can give the summary a quick listen and decide which Talk Python episodes you're going to take the time to dive into.

00:04:14.780 --> 00:04:15.720
<v Michael Kennedy>An ad-free feed.

00:04:15.940 --> 00:04:19.340
<v Michael Kennedy>Oh yeah, I guess members can also have an ad-free feed.

00:04:19.480 --> 00:04:21.560
<v Michael Kennedy>I think people will enjoy having no ads,

00:04:22.079 --> 00:04:24.360
<v Michael Kennedy>but obviously there's a lot more to membership than that.

00:04:25.340 --> 00:04:26.040
<v Michael Kennedy>So there it is.

00:04:26.280 --> 00:04:27.740
<v Michael Kennedy>Announcing Talk Python membership.

00:04:28.300 --> 00:04:28.620
<v Michael Kennedy>community,

00:04:29.120 --> 00:04:29.600
<v Michael Kennedy>tech meetups,

00:04:30.200 --> 00:04:31.140
<v Michael Kennedy>mingle with episode guests,

00:04:31.680 --> 00:04:32.400
<v Michael Kennedy>add free feeds.

00:04:33.240 --> 00:04:33.960
<v Michael Kennedy>Please give it a look.

00:04:34.140 --> 00:04:36.840
<v Michael Kennedy>Just visit Talk Python and click membership in the nav bar.

00:04:37.560 --> 00:04:39.860
<v Michael Kennedy>I really hope we can build an awesome space together.

00:04:40.600 --> 00:04:41.740
<v Michael Kennedy>I've got a great blueprint here,

00:04:41.860 --> 00:04:44.400
<v Michael Kennedy>but it depends on everyone out there listening as well.

00:04:44.620 --> 00:04:46.760
<v Michael Kennedy>So let's get together and build a community.

00:04:47.800 --> 00:04:49.580
<v Michael Kennedy>Regardless of whether you can become a member or not,

00:04:49.620 --> 00:04:51.980
<v Michael Kennedy>I really appreciate you listening to and supporting the show.

00:04:52.960 --> 00:04:53.220
<v Michael Kennedy>Hey team,

00:04:53.740 --> 00:04:53.960
<v Michael Kennedy>Calvin,

00:04:54.300 --> 00:04:54.980
<v Michael Kennedy>Pat, Sidney,

00:04:55.140 --> 00:04:55.600
<v Michael Kennedy>and Reuven.

00:04:55.880 --> 00:04:56.800
<v Michael Kennedy>Awesome to have you all here.

00:04:57.020 --> 00:04:57.720
<v Calvin Hendryx-Parker>Thanks for having us, Michael.

00:04:57.900 --> 00:04:58.540
<v Reuven Lerner>Excellent to be here.

00:04:58.760 --> 00:04:59.020
<v Sydney Runkle>Thanks.

00:04:59.230 --> 00:05:01.180
<v Michael Kennedy>Good to have three of you back.

00:05:01.570 --> 00:05:02.700
<v Michael Kennedy>Always enjoy spending time with you.

00:05:03.100 --> 00:05:04.780
<v Michael Kennedy>And Pat, welcome to Talk Python.

00:05:05.160 --> 00:05:07.380
<v Michael Kennedy>You've been on Python Bytes before, but not on Talk Python, yes?

00:05:07.540 --> 00:05:07.860
<v Pat Decker>Right.

00:05:07.890 --> 00:05:08.840
<v Pat Decker>It was a few years ago.

00:05:08.910 --> 00:05:10.360
<v Pat Decker>I'm not even sure how long ago that was.

00:05:10.500 --> 00:05:12.260
<v Michael Kennedy>Yeah, back when we had guests on Python Bytes.

00:05:12.560 --> 00:05:15.160
<v Michael Kennedy>Well, the reason we stopped having guests on Python Bytes, just sidebars,

00:05:15.320 --> 00:05:15.980
<v Michael Kennedy>people would,

00:05:16.270 --> 00:05:19.840
<v Michael Kennedy>when we have guests, we get into these conversations and we go down rat holes and we talk for a

00:05:19.840 --> 00:05:20.000
<v Michael Kennedy>while.

00:05:20.120 --> 00:05:21.560
<v Michael Kennedy>They ended up being hour long episodes.

00:05:21.680 --> 00:05:22.160
<v Michael Kennedy>People are like,

00:05:22.480 --> 00:05:24.640
<v Michael Kennedy>the bytes part is supposed to be a short little catch up.

00:05:25.000 --> 00:05:26.200
<v Michael Kennedy>How is it over an hour now?

00:05:26.860 --> 00:05:27.440
<v Michael Kennedy>Like, ah, yeah,

00:05:27.700 --> 00:05:28.120
<v Michael Kennedy>that's true.

00:05:28.540 --> 00:05:30.120
<v Michael Kennedy>Maybe we just need to do less.

00:05:30.540 --> 00:05:31.320
<v Michael Kennedy>Keep it true to its nature.

00:05:31.520 --> 00:05:34.620
<v Michael Kennedy>But Talk Python can be long and rambly, so happy to have Pat.

00:05:34.620 --> 00:05:35.980
<v Reuven Lerner>Just talking is in the name.

00:05:36.140 --> 00:05:37.320
<v Michael Kennedy>It literally is in the name.

00:05:37.440 --> 00:05:39.220
<v Michael Kennedy>It tells you what you're in for.

00:05:39.620 --> 00:05:39.820
<v Michael Kennedy>So,

00:05:40.040 --> 00:05:40.500
<v Michael Kennedy>Pat, welcome.

00:05:41.200 --> 00:05:42.740
<v Michael Kennedy>The rest of you all, great to have you back.

00:05:43.219 --> 00:05:47.080
<v Michael Kennedy>We're going to be talking about an idea inspired by what tools should we be using?

00:05:47.500 --> 00:05:50.620
<v Michael Kennedy>Things are changing fast, I think, at least as fast as they ever have,

00:05:50.850 --> 00:05:51.560
<v Michael Kennedy>if not faster.

00:05:51.810 --> 00:05:54.480
<v Michael Kennedy>It feels like the world is constantly accelerating.

00:05:55.080 --> 00:05:56.760
<v Michael Kennedy>And that's true for DevTools as well.

00:05:56.800 --> 00:05:57.880
<v Michael Kennedy>It's always been true for DevTools,

00:05:58.040 --> 00:05:58.460
<v Michael Kennedy>but I think,

00:05:58.780 --> 00:05:59.720
<v Michael Kennedy>especially in the AI angle,

00:06:00.120 --> 00:06:00.960
<v Michael Kennedy>it's a little bit more true.

00:06:01.020 --> 00:06:04.420
<v Michael Kennedy>And it's good that we have an AI specialist here,

00:06:04.620 --> 00:06:04.880
<v Michael Kennedy>Sydney,

00:06:05.380 --> 00:06:08.080
<v Michael Kennedy>for an inside look from that kind of, I know.

00:06:08.220 --> 00:06:09.140
<v Calvin Hendryx-Parker>We'd be lost without.

00:06:09.440 --> 00:06:12.680
<v Michael Kennedy>Let's dive into basically a survey of the different areas

00:06:13.000 --> 00:06:13.840
<v Michael Kennedy>of programming,

00:06:14.180 --> 00:06:14.380
<v Michael Kennedy>Python,

00:06:14.960 --> 00:06:15.080
<v Michael Kennedy>DevOps,

00:06:15.500 --> 00:06:16.260
<v Michael Kennedy>all that kind of stuff,

00:06:16.620 --> 00:06:18.900
<v Michael Kennedy>and what tools we're using, where we see trends going,

00:06:19.360 --> 00:06:22.880
<v Michael Kennedy>and start that by doing a quick intro for everyone.

00:06:23.220 --> 00:06:24.940
<v Michael Kennedy>Calvin, we'll just go around the squares here.

00:06:25.000 --> 00:06:27.000
<v Michael Kennedy>Calvin, people know you, but tell me about yourself anyway.

00:06:27.220 --> 00:06:27.420
<v Calvin Hendryx-Parker>Sure.

00:06:28.240 --> 00:06:29.040
<v Calvin Hendryx-Parker>Calvin Hendryx-Parker.

00:06:29.140 --> 00:06:31.100
<v Calvin Hendryx-Parker>I'm CTO and co-founder of Six Feet Up.

00:06:31.260 --> 00:06:35.140
<v Calvin Hendryx-Parker>We are a Python consulting agency that loves solving hard problems.

00:06:35.980 --> 00:06:40.420
<v Calvin Hendryx-Parker>We've been in business now 27 years and doing Python for 26 of it.

00:06:40.640 --> 00:06:45.180
<v Calvin Hendryx-Parker>So I started using Python back when it was in version 1.5.2.

00:06:45.680 --> 00:06:46.680
<v Calvin Hendryx-Parker>That was Zope timeline.

00:06:47.160 --> 00:06:49.620
<v Calvin Hendryx-Parker>So I've been a historic Zope user.

00:06:49.960 --> 00:06:52.500
<v Calvin Hendryx-Parker>I know a lot of the listeners probably do not know what Zope is,

00:06:52.540 --> 00:06:56.780
<v Calvin Hendryx-Parker>but that was kind of the granddaddy of all web application servers out there.

00:06:56.780 --> 00:06:58.520
<v Calvin Hendryx-Parker>There was kind of a Java one, there was a Perl one,

00:06:58.600 --> 00:07:01.100
<v Calvin Hendryx-Parker>and then there was this quirky little Python one called Zope

00:07:01.220 --> 00:07:02.980
<v Calvin Hendryx-Parker>that uses an object database on the backside.

00:07:03.300 --> 00:07:04.880
<v Calvin Hendryx-Parker>So throughout the years, we've changed.

00:07:04.900 --> 00:07:06.060
<v Calvin Hendryx-Parker>We're now doing a lot more Django,

00:07:06.340 --> 00:07:07.960
<v Calvin Hendryx-Parker>doing a lot more FastAPI,

00:07:08.120 --> 00:07:09.240
<v Calvin Hendryx-Parker>doing all kinds of other technologies,

00:07:09.540 --> 00:07:13.000
<v Calvin Hendryx-Parker>but we've pretty stayed true to Python at our core

00:07:13.580 --> 00:07:16.260
<v Calvin Hendryx-Parker>and use other technologies around the periphery as needed.

00:07:16.620 --> 00:07:17.940
<v Calvin Hendryx-Parker>And that's changing fast too.

00:07:18.340 --> 00:07:20.280
<v Calvin Hendryx-Parker>So it'll be interesting to hear what everyone else has to say.

00:07:20.400 --> 00:07:20.740
<v Michael Kennedy>Yeah, awesome.

00:07:20.900 --> 00:07:23.840
<v Michael Kennedy>And you'll have a lot of different perspectives from all your client conversations.

00:07:24.200 --> 00:07:24.320
<v Calvin Hendryx-Parker>True.

00:07:24.540 --> 00:07:25.340
<v Michael Kennedy>Pat, hello.

00:07:25.840 --> 00:07:26.380
<v Michael Kennedy>Tell us about yourself.

00:07:26.580 --> 00:07:27.200
<v Pat Decker>Out of college,

00:07:27.380 --> 00:07:33.500
<v Pat Decker>wrote COBOL for about 15 years and then went into infrastructure and land

00:07:33.900 --> 00:07:34.080
<v Pat Decker>management,

00:07:34.560 --> 00:07:36.200
<v Pat Decker>worked there for another nine years.

00:07:36.460 --> 00:07:41.060
<v Pat Decker>And now I'm at a company called Hibu for the last 18 years.

00:07:41.680 --> 00:07:43.740
<v Pat Decker>They're kind of a Java shop for the most part,

00:07:43.940 --> 00:07:44.640
<v Pat Decker>at least historically.

00:07:45.160 --> 00:07:48.240
<v Pat Decker>But we're gradually adding more and more Python for,

00:07:48.620 --> 00:07:48.800
<v Pat Decker>say,

00:07:48.980 --> 00:07:49.660
<v Pat Decker>data analytics,

00:07:50.450 --> 00:07:51.720
<v Pat Decker>a little bit of web development.

00:07:52.400 --> 00:07:55.280
<v Pat Decker>And in the DevOps space where I live, for the most part,

00:07:55.440 --> 00:07:56.680
<v Pat Decker>we use it a heck of a lot.

00:07:57.520 --> 00:07:58.340
<v Pat Decker>And we're on AWS.

00:07:59.460 --> 00:08:02.180
<v Pat Decker>So Boto3 is a daily thing for me.

00:08:02.300 --> 00:08:03.500
<v Michael Kennedy>The DevOps side is really interesting.

00:08:03.800 --> 00:08:06.560
<v Michael Kennedy>It's got a little bit of a data science story in that like, oh,

00:08:06.740 --> 00:08:09.460
<v Michael Kennedy>we're not really a Python shop, but this Python stuff's working over here.

00:08:09.470 --> 00:08:12.300
<v Michael Kennedy>And then it kind of can spread through the company.

00:08:12.700 --> 00:08:12.840
<v Michael Kennedy>Also,

00:08:13.390 --> 00:08:15.540
<v Michael Kennedy>Team AWS for the first two, right?

00:08:15.940 --> 00:08:17.080
<v Michael Kennedy>Calvin, you're also AWS.

00:08:17.600 --> 00:08:18.420
<v Calvin Hendryx-Parker>I am an AWS hero,

00:08:19.060 --> 00:08:20.980
<v Calvin Hendryx-Parker>but we participate in all of them.

00:08:21.120 --> 00:08:24.940
<v Calvin Hendryx-Parker>We're doing GSpeak work, we're doing Azure work, we're doing stuff on Alibaba Cloud.

00:08:25.380 --> 00:08:26.700
<v Calvin Hendryx-Parker>So I am an AWS hero.

00:08:26.920 --> 00:08:27.660
<v Michael Kennedy>Sydney, welcome back.

00:08:27.990 --> 00:08:28.660
<v Michael Kennedy>Great to have you as always.

00:08:28.960 --> 00:08:30.120
<v Sydney Runkle>Yeah, great to be back.

00:08:30.420 --> 00:08:33.620
<v Sydney Runkle>I feel like I've taken each podcast from a different location.

00:08:33.919 --> 00:08:34.400
<v Michael Kennedy>And it continues,

00:08:34.659 --> 00:08:34.740
<v Michael Kennedy>yeah.

00:08:35.340 --> 00:08:35.460
<v Sydney Runkle>Yeah,

00:08:35.719 --> 00:08:36.520
<v Sydney Runkle>I'm now in San Francisco.

00:08:37.380 --> 00:08:39.479
<v Sydney Runkle>I am a big open source guru.

00:08:39.719 --> 00:08:42.479
<v Sydney Runkle>So kind of at the end of college and then after college,

00:08:43.169 --> 00:08:46.960
<v Sydney Runkle>I was working at Pydantic leading maintenance of the Pydantic core package.

00:08:47.670 --> 00:08:48.880
<v Sydney Runkle>But Pydantic, the company,

00:08:49.220 --> 00:08:51.520
<v Sydney Runkle>is working on kind of AI observability and tooling.

00:08:52.010 --> 00:08:54.240
<v Sydney Runkle>And then transitioned over to LangChain,

00:08:54.450 --> 00:08:58.400
<v Sydney Runkle>where I also helped lead maintenance of kind of the open source suite there.

00:08:58.990 --> 00:08:59.740
<v Sydney Runkle>So LangChain,

00:09:00.320 --> 00:09:00.680
<v Sydney Runkle>LangGraph,

00:09:00.840 --> 00:09:01.820
<v Sydney Runkle>and now DeepAgents.

00:09:02.280 --> 00:09:06.460
<v Sydney Runkle>And then I'm now doing kind of product management for the open source team at LinkedIn,

00:09:06.760 --> 00:09:10.120
<v Sydney Runkle>but still very excited to be in the like open source and AI agent space.

00:09:10.460 --> 00:09:11.460
<v Michael Kennedy>What a cool early career,

00:09:11.700 --> 00:09:11.760
<v Michael Kennedy>huh?

00:09:12.040 --> 00:09:14.860
<v Michael Kennedy>We had you on when you were still in college talking about,

00:09:15.280 --> 00:09:19.680
<v Michael Kennedy>you know, tips for younger people in college to jumpstart their career.

00:09:19.880 --> 00:09:20.920
<v Michael Kennedy>And it looks like you're,

00:09:21.220 --> 00:09:21.840
<v Michael Kennedy>you know, in practice,

00:09:22.040 --> 00:09:22.760
<v Michael Kennedy>it's working really well.

00:09:22.900 --> 00:09:23.320
<v Michael Kennedy>So congratulations.

00:09:23.760 --> 00:09:25.160
<v Sydney Runkle>Yeah, that was a great first podcast.

00:09:25.280 --> 00:09:28.420
<v Sydney Runkle>And then I think we talked both while I was at Pydantic and LinkedIn.

00:09:28.860 --> 00:09:29.900
<v Sydney Runkle>So excited to be back on.

00:09:30.040 --> 00:09:30.400
<v Michael Kennedy>Great to have you.

00:09:30.780 --> 00:09:30.960
<v Michael Kennedy>Reuven,

00:09:31.360 --> 00:09:31.660
<v Michael Kennedy>hello, hello.

00:09:31.860 --> 00:09:32.440
<v Reuven Lerner>Hello there.

00:09:32.760 --> 00:09:33.620
<v Reuven Lerner>Delighted to be back here.

00:09:33.930 --> 00:09:34.260
<v Reuven Lerner>So yeah,

00:09:34.440 --> 00:09:36.860
<v Reuven Lerner>so I've also been in business for quite some time.

00:09:37.110 --> 00:09:39.540
<v Reuven Lerner>I just celebrated about 30 years in December,

00:09:39.950 --> 00:09:42.600
<v Reuven Lerner>and I started off doing projects of various sorts.

00:09:42.890 --> 00:09:45.740
<v Reuven Lerner>And pretty soon people started asking me not to do the project,

00:09:46.090 --> 00:09:47.280
<v Reuven Lerner>but rather to teach their people

00:09:47.380 --> 00:09:47.860
<v Reuven Lerner>to do the project.

00:09:48.320 --> 00:09:51.400
<v Reuven Lerner>And so slowly but surely, I stopped doing projects. I started doing training.

00:09:51.790 --> 00:09:54.860
<v Reuven Lerner>And so I've been doing only training for I think it is now 15 years,

00:09:55.280 --> 00:09:55.480
<v Reuven Lerner>Python,

00:09:55.880 --> 00:09:56.360
<v Reuven Lerner>Pandas, Git.

00:10:01.280 --> 00:10:01.720
<v Reuven Lerner>And

00:10:01.760 --> 00:10:02.660
<v Reuven Lerner>else is doing AI.

00:10:03.060 --> 00:10:05.140
<v Reuven Lerner>So someone had to be the guinea pig.

00:10:05.390 --> 00:10:07.040
<v Reuven Lerner>And so I'm having tons and tons of fun

00:10:07.340 --> 00:10:09.000
<v Reuven Lerner>developing software now via,

00:10:09.620 --> 00:10:12.100
<v Reuven Lerner>especially a lot of Claude Code and then helping other people do that

00:10:12.200 --> 00:10:12.420
<v Reuven Lerner>as well.

00:10:12.840 --> 00:10:13.280
<v Reuven Lerner>Yeah. And I just,

00:10:13.500 --> 00:10:14.640
<v Reuven Lerner>I actually, I'll also say,

00:10:14.860 --> 00:10:17.060
<v Reuven Lerner>and my newest book just came out in the last

00:10:17.070 --> 00:10:17.380
<v Reuven Lerner>few days,

00:10:17.840 --> 00:10:20.400
<v Reuven Lerner>which is AI assisted Python for non-programmers.

00:10:20.700 --> 00:10:22.020
<v Reuven Lerner>So it's my non-programmers course

00:10:22.340 --> 00:10:27.700
<v Reuven Lerner>in book form with lots of AI sort of companion exercises to help you learn better.

00:10:28.100 --> 00:10:32.660
<v Michael Kennedy>the book idea. I think it's going to be big. But yeah, what an early bet you made on AI these days

00:10:32.810 --> 00:10:36.680
<v Michael Kennedy>to be working with it. I mean, I know most of us are probably not doing that. So that'll be

00:10:36.800 --> 00:10:38.000
<v Michael Kennedy>interesting to hear. Edgy for sure.

00:10:38.340 --> 00:10:39.040
<v Michael Kennedy>Very edgy.

00:10:39.240 --> 00:10:39.720
<v Michael Kennedy>All right.

00:10:40.080 --> 00:10:42.440
<v Michael Kennedy>Speaking of edgy, let's get right into it.

00:10:42.660 --> 00:10:48.100
<v Michael Kennedy>So I put together kind of a spectrum of different topics and some of them might be,

00:10:48.260 --> 00:10:48.440
<v Michael Kennedy>oh,

00:10:48.600 --> 00:10:48.880
<v Michael Kennedy>of course,

00:10:48.930 --> 00:10:50.260
<v Michael Kennedy>we're all doing this.

00:10:50.500 --> 00:10:51.160
<v Michael Kennedy>But at the same time,

00:10:51.380 --> 00:10:51.540
<v Michael Kennedy>others,

00:10:52.000 --> 00:10:52.900
<v Michael Kennedy>maybe not so much.

00:10:53.300 --> 00:10:53.680
<v Michael Kennedy>Maybe it's new.

00:10:57.700 --> 00:10:58.060
<v Michael Kennedy>So

00:10:58.080 --> 00:10:59.040
<v Michael Kennedy>editors first.

00:10:59.540 --> 00:11:02.720
<v Michael Kennedy>And I just kind of a bit of a historical thing.

00:11:03.280 --> 00:11:04.700
<v Michael Kennedy>I used to ask when I started

00:11:04.700 --> 00:11:06.440
<v Michael Kennedy>the podcast, I used to ask at the end of the show,

00:11:06.620 --> 00:11:08.080
<v Michael Kennedy>a couple of things like, you know, recommend a

00:11:08.220 --> 00:11:12.420
<v Michael Kennedy>package. And then what editor are you using? And this always gave me random answers from all these

00:11:12.540 --> 00:11:15.120
<v Michael Kennedy>little weird things I've never even heard of, you know,

00:11:15.280 --> 00:11:17.480
<v Michael Kennedy>over the last six or seven years, it was

00:11:17.580 --> 00:11:18.660
<v Michael Kennedy>just like VS Code,

00:11:18.980 --> 00:11:21.360
<v Michael Kennedy>ByCharm, VS Code, VS Code, ByCharm, ByCharm.

00:11:21.560 --> 00:11:22.500
<v Michael Kennedy>I'm like, okay, this, I'm not

00:11:22.680 --> 00:11:23.460
<v Michael Kennedy>asking this question anymore,

00:11:23.720 --> 00:11:27.500
<v Michael Kennedy>but I'm not sure that that's actually still true because of the H1,

00:11:27.740 --> 00:11:30.960
<v Michael Kennedy>you see on the VS Code, the open source AI code editor.

00:11:30.960 --> 00:11:32.920
<v Michael Kennedy>And I think AI has scrambled this a bit.

00:11:33.320 --> 00:11:34.320
<v Michael Kennedy>So I don't know.

00:11:34.960 --> 00:11:35.640
<v Michael Kennedy>Let's start with you,

00:11:35.800 --> 00:11:35.880
<v Michael Kennedy>Sydney,

00:11:36.360 --> 00:11:36.840
<v Michael Kennedy>first here.

00:11:37.000 --> 00:11:37.080
<v Michael Kennedy>Like,

00:11:38.060 --> 00:11:38.600
<v Michael Kennedy>what are you doing?

00:11:38.840 --> 00:11:40.380
<v Michael Kennedy>What are you using these days to write code

00:11:40.620 --> 00:11:43.900
<v Michael Kennedy>to the extent that code is written and read code when it's not?

00:11:44.040 --> 00:11:48.560
<v Sydney Runkle>I'll go back and say I was first a PyTerm user and then a VS Code user.

00:11:49.120 --> 00:11:52.780
<v Sydney Runkle>And then I transitioned to Cursor when I wanted,

00:11:53.200 --> 00:11:53.320
<v Sydney Runkle>like,

00:11:53.480 --> 00:11:53.660
<v Sydney Runkle>kind of,

00:11:53.680 --> 00:11:56.779
<v Sydney Runkle>I think they had, like, agents rolled into the IDE earlier

00:11:56.800 --> 00:11:58.480
<v Sydney Runkle>than some of the other IDEs.

00:11:58.820 --> 00:12:00.000
<v Sydney Runkle>But my slightly,

00:12:00.560 --> 00:12:01.800
<v Sydney Runkle>this would have sounded very odd

00:12:02.000 --> 00:12:02.760
<v Sydney Runkle>like two years ago,

00:12:03.080 --> 00:12:06.140
<v Sydney Runkle>but honestly where I do most of my coding now is in Slack.

00:12:06.700 --> 00:12:10.060
<v Sydney Runkle>So we have coding agents available via like Slack tag.

00:12:10.680 --> 00:12:12.220
<v Sydney Runkle>So I can say at OpenSuite,

00:12:12.700 --> 00:12:12.920
<v Sydney Runkle>you know,

00:12:13.320 --> 00:12:14.340
<v Sydney Runkle>help me with this task.

00:12:14.640 --> 00:12:16.760
<v Sydney Runkle>Slack is where we come up with a lot of ideas

00:12:17.020 --> 00:12:18.220
<v Sydney Runkle>for what we want to change

00:12:18.540 --> 00:12:19.580
<v Sydney Runkle>or like problems that we're having.

00:12:20.020 --> 00:12:21.260
<v Sydney Runkle>So I certainly still like,

00:12:21.540 --> 00:12:22.600
<v Sydney Runkle>we'll start something from Slack

00:12:23.120 --> 00:12:24.660
<v Sydney Runkle>and then go look at it in GitHub

00:12:25.200 --> 00:12:26.760
<v Sydney Runkle>and then maybe pull it down locally

00:12:26.780 --> 00:12:28.960
<v Sydney Runkle>I like really need to get into the weeds with changes.

00:12:29.260 --> 00:12:31.600
<v Sydney Runkle>But honestly, I would say like 90% of

00:12:31.600 --> 00:12:33.000
<v Sydney Runkle>my work is now in Slack.

00:12:33.560 --> 00:12:35.540
<v Sydney Runkle>Or if I like start from Slack,

00:12:36.030 --> 00:12:38.680
<v Sydney Runkle>and then add comments in GitHub,

00:12:39.230 --> 00:12:41.540
<v Sydney Runkle>my like Slack agent will pick those up and address.

00:12:42.050 --> 00:12:43.660
<v Sydney Runkle>So yeah, that's my like very AI native

00:12:44.250 --> 00:12:44.820
<v Sydney Runkle>answer these days.

00:12:45.050 --> 00:12:46.740
<v Michael Kennedy>Did I say there would be surprises?

00:12:46.980 --> 00:12:48.560
<v Michael Kennedy>There are already incredible.

00:12:48.840 --> 00:12:48.940
<v Michael Kennedy>Like,

00:12:49.280 --> 00:12:51.120
<v Michael Kennedy>that is so amazing and futuristic.

00:12:51.880 --> 00:12:53.040
<v Michael Kennedy>And yet at the same time,

00:12:53.370 --> 00:12:54.040
<v Michael Kennedy>I can see it.

00:12:54.400 --> 00:12:55.560
<v Michael Kennedy>I've done some really

00:12:55.580 --> 00:13:01.220
<v Michael Kennedy>interesting stuff with just talking to my phone that then translates over to Hermes.

00:13:01.740 --> 00:13:01.920
<v Michael Kennedy>It's like,

00:13:01.920 --> 00:13:05.480
<v Michael Kennedy>I need you to program this. And I came back later and through a chat, just like,

00:13:05.860 --> 00:13:06.200
<v Michael Kennedy>how are we doing?

00:13:06.480 --> 00:13:11.680
<v Michael Kennedy>And that was all, I never touched an editor or nothing. I just either voice typed or actual

00:13:11.860 --> 00:13:13.300
<v Michael Kennedy>typed and it's wow.

00:13:13.540 --> 00:13:15.080
<v Michael Kennedy>But Slack as a group,

00:13:15.240 --> 00:13:16.500
<v Michael Kennedy>I guess it makes a lot of sense,

00:13:16.660 --> 00:13:16.940
<v Michael Kennedy>but yeah,

00:13:17.140 --> 00:13:21.020
<v Reuven Lerner>it's really interesting. What do you all think? I'm reeling from this because I thought,

00:13:21.420 --> 00:13:21.600
<v Reuven Lerner>wow,

00:13:21.860 --> 00:13:25.600
<v Reuven Lerner>Like I've gone through this like evolution of there's an Emacs person.

00:13:25.920 --> 00:13:28.040
<v Reuven Lerner>And then like I did a little bit of PyCharm,

00:13:28.580 --> 00:13:30.080
<v Reuven Lerner>but I realized that I did a lot of stuff in

00:13:30.220 --> 00:13:30.340
<v Reuven Lerner>Jupyter.

00:13:30.920 --> 00:13:31.720
<v Reuven Lerner>But lately in the last year,

00:13:31.880 --> 00:13:33.080
<v Reuven Lerner>most of it's been in clawed code.

00:13:33.200 --> 00:13:33.880
<v Reuven Lerner>And I was like, okay,

00:13:34.290 --> 00:13:37.020
<v Reuven Lerner>so that's like clearly as modern and cool as it gets.

00:13:37.160 --> 00:13:37.220
<v Reuven Lerner>Right.

00:13:37.420 --> 00:13:39.740
<v Reuven Lerner>I tell my children all the time that I'm as cool as it gets.

00:13:39.880 --> 00:13:41.080
<v Reuven Lerner>And one day they will believe me.

00:13:41.420 --> 00:13:44.120
<v Reuven Lerner>And yet Sydney like massively upstages me here.

00:13:44.120 --> 00:13:44.360
<v Reuven Lerner>I'm like,

00:13:44.560 --> 00:13:44.960
<v Reuven Lerner>I'm like,

00:13:45.300 --> 00:13:48.360
<v Reuven Lerner>my brain is melting thinking of Slack as your main coding editor.

00:13:48.520 --> 00:13:49.640
<v Reuven Lerner>That is super wild.

00:13:50.040 --> 00:13:50.600
<v Reuven Lerner>Or not even editor,

00:13:50.760 --> 00:13:52.360
<v Reuven Lerner>like dispatching agents based on it.

00:13:52.640 --> 00:13:53.080
<v Reuven Lerner>That's so cool.

00:13:53.160 --> 00:13:55.280
<v Calvin Hendryx-Parker>Well, I thought back in the day when I was doing Zope

00:13:55.280 --> 00:13:58.940
<v Calvin Hendryx-Parker>and we were coding into a text area on a web page,

00:13:59.280 --> 00:13:59.860
<v Calvin Hendryx-Parker>that was bad.

00:14:00.260 --> 00:14:02.280
<v Calvin Hendryx-Parker>And that drove me a little like kind of batty.

00:14:02.660 --> 00:14:05.780
<v Calvin Hendryx-Parker>But to do it into a Slack agent also kind of blows my mind.

00:14:06.000 --> 00:14:08.900
<v Calvin Hendryx-Parker>I will say I do not even have VS Code installed

00:14:09.340 --> 00:14:11.520
<v Calvin Hendryx-Parker>or any VS Code variants installed on my computer.

00:14:11.840 --> 00:14:14.200
<v Calvin Hendryx-Parker>I'm pretty well in Pi and Claude Code

00:14:14.560 --> 00:14:16.560
<v Calvin Hendryx-Parker>for all of my coding usages.

00:14:17.120 --> 00:14:18.240
<v Calvin Hendryx-Parker>And then when I need to view something,

00:14:18.580 --> 00:14:20.760
<v Calvin Hendryx-Parker>I'm using my favorite alternative cat,

00:14:20.930 --> 00:14:21.520
<v Calvin Hendryx-Parker>which is bat,

00:14:21.800 --> 00:14:22.200
<v Calvin Hendryx-Parker>B-A-T.

00:14:22.720 --> 00:14:23.480
<v Calvin Hendryx-Parker>And then I'll use,

00:14:23.650 --> 00:14:25.460
<v Calvin Hendryx-Parker>if I need a rich, really richer experience,

00:14:25.780 --> 00:14:27.020
<v Calvin Hendryx-Parker>I'll jump back into PyCharm.

00:14:27.300 --> 00:14:30.220
<v Calvin Hendryx-Parker>It's probably my like fallback, fallback, fallback thing

00:14:30.330 --> 00:14:31.620
<v Calvin Hendryx-Parker>when I need to really dive into something.

00:14:32.020 --> 00:14:33.460
<v Calvin Hendryx-Parker>But most of them I'm viewing Markdown,

00:14:33.810 --> 00:14:36.300
<v Calvin Hendryx-Parker>which I found on OS X there is,

00:14:36.520 --> 00:14:38.160
<v Calvin Hendryx-Parker>I'm dating myself by saying like that.

00:14:38.400 --> 00:14:39.080
<v Calvin Hendryx-Parker>On macOS,

00:14:39.270 --> 00:14:41.840
<v Calvin Hendryx-Parker>there is a viewer called Telescopo

00:14:42.180 --> 00:14:43.880
<v Calvin Hendryx-Parker>that is an excellent Markdown viewer,

00:14:44.380 --> 00:14:45.800
<v Calvin Hendryx-Parker>like very rich experience.

00:14:46.220 --> 00:14:48.860
<v Calvin Hendryx-Parker>So I can view like the superpower specs and plans.

00:14:49.620 --> 00:14:54.980
<v Calvin Hendryx-Parker>And that's where I spend a lot of my time actually is probably with the markdown pieces before I say go implement some stuff.

00:14:55.260 --> 00:14:55.460
<v Michael Kennedy>Yeah,

00:14:55.640 --> 00:14:55.900
<v Michael Kennedy>that's wild.

00:14:56.040 --> 00:15:01.100
<v Michael Kennedy>You're very, I know you're very terminal heavy like Claude Code style or more of the open,

00:15:01.300 --> 00:15:02.600
<v Michael Kennedy>open multi-model ones.

00:15:02.760 --> 00:15:04.460
<v Calvin Hendryx-Parker>VI user for life,

00:15:04.900 --> 00:15:05.120
<v Calvin Hendryx-Parker>Vim,

00:15:05.280 --> 00:15:05.840
<v Calvin Hendryx-Parker>NeoVim,

00:15:06.060 --> 00:15:07.640
<v Calvin Hendryx-Parker>you know, kind of follow that progression.

00:15:08.220 --> 00:15:12.520
<v Calvin Hendryx-Parker>So I guess I'm the guy on the beach kicking sand in the feeble Emacs user's face.

00:15:12.680 --> 00:15:13.000
<v Calvin Hendryx-Parker>I'm sorry.

00:15:14.520 --> 00:15:15.360
<v Calvin Hendryx-Parker>I'll take that stand.

00:15:15.760 --> 00:15:20.340
<v Calvin Hendryx-Parker>And when there's no VI key bindings available and I open up some kind of a window that doesn't have them,

00:15:20.600 --> 00:15:21.200
<v Calvin Hendryx-Parker>oh, am I lost.

00:15:21.380 --> 00:15:31.040
<v Calvin Hendryx-Parker>I got on stage once at PyCon to do a lightning talk and somehow VI mode got disabled on my PyCharm and I was absolutely petrified.

00:15:31.280 --> 00:15:31.520
<v Michael Kennedy>Pat,

00:15:31.720 --> 00:15:32.460
<v Michael Kennedy>how about you?

00:15:32.700 --> 00:15:33.800
<v Michael Kennedy>Where's the editor story?

00:15:34.000 --> 00:15:35.240
<v Pat Decker>It has evolved a lot.

00:15:35.460 --> 00:15:36.600
<v Pat Decker>Way back at Iowa State,

00:15:36.920 --> 00:15:39.460
<v Pat Decker>I took Pascal on punched cards.

00:15:39.740 --> 00:15:40.760
<v Pat Decker>So that was a little different.

00:15:41.040 --> 00:15:44.540
<v Pat Decker>Then ended up getting into mainframe programming.

00:15:45.040 --> 00:15:46.040
<v Pat Decker>In the IBM world,

00:15:46.340 --> 00:15:47.720
<v Pat Decker>they had their editor.

00:15:48.860 --> 00:15:50.600
<v Pat Decker>And when we transitioned then to PCs,

00:15:51.000 --> 00:15:51.640
<v Pat Decker>there was a company,

00:15:52.100 --> 00:15:53.520
<v Pat Decker>Mansfield Software, that created

00:15:53.820 --> 00:15:56.660
<v Pat Decker>K-Edit to mimic X-Edit from the mainframe.

00:15:56.700 --> 00:15:58.240
<v Pat Decker>And they did a great job.

00:15:58.520 --> 00:16:00.980
<v Pat Decker>And that was running under DOS pre-Windows.

00:16:01.380 --> 00:16:03.700
<v Pat Decker>And then they did come out with a Windows version,

00:16:03.920 --> 00:16:05.200
<v Pat Decker>which I still use today.

00:16:05.900 --> 00:16:06.140
<v Pat Decker>Now,

00:16:06.660 --> 00:16:06.800
<v Pat Decker>most,

00:16:07.000 --> 00:16:07.720
<v Pat Decker>there it is right there.

00:16:07.800 --> 00:16:07.980
<v Pat Decker>Yes.

00:16:08.240 --> 00:16:09.240
<v Pat Decker>Most of the time,

00:16:09.570 --> 00:16:15.000
<v Pat Decker>I attempt to use VS Code because you can remotely connect to all these AWS instances,

00:16:15.270 --> 00:16:17.960
<v Pat Decker>or maybe they're even in-house running on VMware.

00:16:18.470 --> 00:16:21.400
<v Pat Decker>But when you want to use some AI assistance,

00:16:21.800 --> 00:16:22.820
<v Pat Decker>I'm in Devon,

00:16:23.040 --> 00:16:24.460
<v Pat Decker>I'm in Kiro,

00:16:24.850 --> 00:16:25.920
<v Pat Decker>which is from AWS.

00:16:26.860 --> 00:16:32.020
<v Pat Decker>And then for the final edit, I may tweak something at runtime with Vim.

00:16:32.360 --> 00:16:41.500
<v Pat Decker>That's usually my choice if I have once in a while Nano because the defaults for Vim sometimes on a particular instance prevent pasting or something.

00:16:41.860 --> 00:16:43.220
<v Pat Decker>So I'll have to fall to Nano.

00:16:43.520 --> 00:16:51.280
<v Michael Kennedy>Yeah, I do fall back to Nano every now and then on some kind of server or I just need to edit this thing and we're just going to use Nano is going to be here.

00:16:51.380 --> 00:16:51.920
<v Michael Kennedy>It'll be fine.

00:16:52.380 --> 00:16:54.660
<v Michael Kennedy>And I did used to do Emacs way back in the day.

00:16:55.160 --> 00:16:56.120
<v Michael Kennedy>So sorry, sorry, Calvin.

00:16:56.640 --> 00:16:58.620
<v Michael Kennedy>But so it feels a little bit like that.

00:16:58.820 --> 00:16:59.980
<v Calvin Hendryx-Parker>I've come to terms with it.

00:17:00.160 --> 00:17:01.700
<v Calvin Hendryx-Parker>I'm OK with people who use Emacs.

00:17:02.260 --> 00:17:07.520
<v Reuven Lerner>just just for the record like when i was in school like we heard rumors that there were people who

00:17:07.680 --> 00:17:13.339
<v Reuven Lerner>use this editor called vi and like i was like fine but we all sort of agreed that whoever used such a

00:17:13.500 --> 00:17:18.880
<v Reuven Lerner>thing like clearly wasn't a serious programmer and it literally took me like a decade out of school

00:17:18.920 --> 00:17:24.660
<v Reuven Lerner>to discover there are smart people and good programmers who use this vi thing and we should

00:17:24.760 --> 00:17:29.619
<v Reuven Lerner>perhaps not look down at them so much so it's okay yeah i think it's a school by school thing

00:17:29.640 --> 00:17:34.660
<v Calvin Hendryx-Parker>I think it depends on what terminal they set you down to and what tutorial they told you to do.

00:17:34.810 --> 00:17:35.960
<v Calvin Hendryx-Parker>And that's what you got.

00:17:36.040 --> 00:17:37.200
<v Reuven Lerner>100% brainwashing.

00:17:37.420 --> 00:17:37.560
<v Reuven Lerner>Yes.

00:17:37.740 --> 00:17:45.540
<v Michael Kennedy>Well, I think that brings us to a really nice next up section that I think has certainly changed a lot in the last few years.

00:17:45.570 --> 00:17:46.540
<v Michael Kennedy>And that's terminals.

00:17:47.160 --> 00:17:50.840
<v Michael Kennedy>So pretty much you all just open up Terminal on the Mac, right?

00:17:52.960 --> 00:17:54.680
<v Michael Kennedy>Or CMD on Windows?

00:17:55.020 --> 00:17:55.740
<v Pat Decker>I do CMD.

00:17:56.090 --> 00:17:56.800
<v Pat Decker>I do WSL,

00:17:57.140 --> 00:17:57.200
<v Pat Decker>though,

00:17:57.380 --> 00:17:57.540
<v Pat Decker>too,

00:17:57.970 --> 00:17:59.020
<v Pat Decker>the subsystem for Linux.

00:17:59.540 --> 00:18:01.540
<v Pat Decker>But by and large, I'm just in Bash.

00:18:01.620 --> 00:18:05.420
<v Pat Decker>So I don't do phish or any of these other command interpreters.

00:18:05.720 --> 00:18:08.540
<v Pat Decker>The one thing I do like is something called Royal TS.

00:18:09.340 --> 00:18:17.260
<v Pat Decker>And that allows me to have a whole list and subgroups of servers where I can remotely connect as whatever user I want.

00:18:17.320 --> 00:18:18.580
<v Pat Decker>It saves credentials.

00:18:19.200 --> 00:18:20.420
<v Pat Decker>You can make it a little bit colorful.

00:18:20.900 --> 00:18:23.060
<v Pat Decker>It works for SSH, for RDP,

00:18:24.060 --> 00:18:24.380
<v Pat Decker>HTTP,

00:18:25.360 --> 00:18:25.920
<v Pat Decker>SFTP,

00:18:26.720 --> 00:18:27.340
<v Pat Decker>VNC.

00:18:28.000 --> 00:18:28.960
<v Pat Decker>It's pretty great.

00:18:29.340 --> 00:18:30.100
<v Pat Decker>I'm a fan.

00:18:30.300 --> 00:18:31.160
<v Calvin Hendryx-Parker>Is that Windows only,

00:18:31.520 --> 00:18:31.980
<v Calvin Hendryx-Parker>the Royal TS?

00:18:32.300 --> 00:18:32.860
<v Pat Decker>It is not.

00:18:33.040 --> 00:18:34.200
<v Pat Decker>It's Mac and Windows both,

00:18:34.440 --> 00:18:34.540
<v Pat Decker>yeah.

00:18:34.740 --> 00:18:35.360
<v Michael Kennedy>That's very interesting.

00:18:35.800 --> 00:18:38.980
<v Michael Kennedy>Yeah, because you do so much DevOps of managing remote machines,

00:18:39.100 --> 00:18:40.080
<v Michael Kennedy>and especially if they're Windows,

00:18:40.620 --> 00:18:40.860
<v Michael Kennedy>you know,

00:18:41.120 --> 00:18:42.340
<v Michael Kennedy>you often need a GUI.

00:18:42.400 --> 00:18:43.660
<v Pat Decker>Connect remotely and away you go,

00:18:44.020 --> 00:18:44.120
<v Pat Decker>yeah.

00:18:44.540 --> 00:18:47.600
<v Pat Decker>But I do use TMUX because you have some long-running tests

00:18:47.840 --> 00:18:49.740
<v Pat Decker>and you never know when your credentials expire

00:18:50.140 --> 00:18:52.220
<v Pat Decker>and you get disconnected or this or that.

00:18:52.620 --> 00:18:54.380
<v Pat Decker>So your process continues to run.

00:18:54.660 --> 00:18:54.900
<v Michael Kennedy>Calvin,

00:18:55.100 --> 00:18:56.140
<v Michael Kennedy>you don't use Terminal?

00:18:56.380 --> 00:18:58.120
<v Calvin Hendryx-Parker>I am a, no, I do not use Terminal.

00:18:58.360 --> 00:19:02.320
<v Calvin Hendryx-Parker>big fan of a cross-platform terminal called Kitty.

00:19:02.780 --> 00:19:06.140
<v Calvin Hendryx-Parker>It's claimed to fame is a 3D accelerated

00:19:06.860 --> 00:19:07.100
<v Calvin Hendryx-Parker>terminal.

00:19:07.440 --> 00:19:08.480
<v Calvin Hendryx-Parker>So it uses your GPU.

00:19:08.760 --> 00:19:11.960
<v Calvin Hendryx-Parker>So it's a GPU accelerated terminal. So it'll scroll text faster

00:19:12.160 --> 00:19:13.320
<v Calvin Hendryx-Parker>than any terminal out there.

00:19:13.780 --> 00:19:15.680
<v Calvin Hendryx-Parker>And I like the fact that it's on Linux.

00:19:16.240 --> 00:19:16.720
<v Calvin Hendryx-Parker>Because for a while,

00:19:16.740 --> 00:19:18.540
<v Calvin Hendryx-Parker>I was running full-time Linux desktop.

00:19:18.760 --> 00:19:19.620
<v Calvin Hendryx-Parker>Like for three years,

00:19:20.040 --> 00:19:21.780
<v Calvin Hendryx-Parker>I ran only Linux because Apple

00:19:22.320 --> 00:19:24.960
<v Calvin Hendryx-Parker>insisted on this touch bar thing on their keyboard.

00:19:25.420 --> 00:19:27.140
<v Calvin Hendryx-Parker>And so I jettisoned my Mac,

00:19:27.500 --> 00:19:28.540
<v Calvin Hendryx-Parker>went to straight Linux.

00:19:28.780 --> 00:19:31.140
<v Calvin Hendryx-Parker>And then when they got back to a regular keyboard, I came back to the Mac,

00:19:31.280 --> 00:19:32.680
<v Calvin Hendryx-Parker>but I kept Kitty the whole time.

00:19:32.880 --> 00:19:33.860
<v Calvin Hendryx-Parker>And anytime I get on Windows,

00:19:34.020 --> 00:19:34.940
<v Calvin Hendryx-Parker>I can always get Kitty

00:19:35.420 --> 00:19:36.040
<v Calvin Hendryx-Parker>there as well.

00:19:36.420 --> 00:19:39.220
<v Calvin Hendryx-Parker>So I like that. I also have been a Tmux person historically,

00:19:39.780 --> 00:19:43.840
<v Calvin Hendryx-Parker>although I have switched over to herdr for window management, remote session management,

00:19:44.440 --> 00:19:45.560
<v Calvin Hendryx-Parker>AI agent management.

00:19:45.960 --> 00:19:50.340
<v Calvin Hendryx-Parker>I really love the fact that it is a kind of AI native multiplexer.

00:19:50.760 --> 00:19:54.539
<v Calvin Hendryx-Parker>Kitty also has a built in multiplexer, which I kind of stopped using Tmux when I adopted Kitty

00:19:54.560 --> 00:19:57.100
<v Calvin Hendryx-Parker>because of Kitty's native window management

00:19:57.320 --> 00:19:58.740
<v Calvin Hendryx-Parker>and Tmux-like features.

00:19:59.220 --> 00:20:01.840
<v Calvin Hendryx-Parker>But now I really like herdr for doing that kind of thing.

00:20:02.160 --> 00:20:03.420
<v Calvin Hendryx-Parker>Actually, I haven't had a chance to play with it.

00:20:03.540 --> 00:20:05.980
<v Calvin Hendryx-Parker>herdr now has features for remote agent sessions.

00:20:06.600 --> 00:20:08.940
<v Calvin Hendryx-Parker>And so I use Mosh all the time with a VPN

00:20:09.340 --> 00:20:10.220
<v Calvin Hendryx-Parker>from my various devices

00:20:10.520 --> 00:20:12.460
<v Calvin Hendryx-Parker>so that I can constantly be in connection

00:20:12.700 --> 00:20:15.880
<v Calvin Hendryx-Parker>with those agents that are running on any server, any place.

00:20:16.200 --> 00:20:18.500
<v Michael Kennedy>Something I've seen a lot of traction on is herdr.

00:20:18.800 --> 00:20:21.140
<v Michael Kennedy>Although I still like editors

00:20:21.900 --> 00:20:23.560
<v Michael Kennedy>when I'm working with my AI stuff.

00:20:23.880 --> 00:20:28.060
<v Michael Kennedy>And so it's not that I'm necessarily writing a ton of the code or always babysitting it,

00:20:28.140 --> 00:20:31.460
<v Michael Kennedy>but I'd like to kind of interact with it from an editor side while it's running.

00:20:31.560 --> 00:20:33.720
<v Michael Kennedy>So I haven't gone fully down this path,

00:20:33.900 --> 00:20:35.360
<v Michael Kennedy>but yeah, it's super cool.

00:20:35.580 --> 00:20:37.080
<v Calvin Hendryx-Parker>If I was going to use a more rich client,

00:20:37.320 --> 00:20:41.260
<v Calvin Hendryx-Parker>I think the JetBrains have their Air AI agentic client,

00:20:41.580 --> 00:20:44.040
<v Calvin Hendryx-Parker>and then Codex is pretty reasonable.

00:20:44.160 --> 00:20:46.660
<v Calvin Hendryx-Parker>And so the same thing with the Cloud desktop,

00:20:46.880 --> 00:20:49.600
<v Calvin Hendryx-Parker>which has now Codework and Code in it.

00:20:49.760 --> 00:20:50.020
<v Michael Kennedy>Sydney,

00:20:50.200 --> 00:20:52.400
<v Michael Kennedy>what kind of terminal do you use to connect to Slack?

00:20:52.660 --> 00:20:53.000
<v Michael Kennedy>Just kidding.

00:20:53.740 --> 00:20:57.460
<v Sydney Runkle>I feel like I'm not as like tinkery here.

00:20:58.100 --> 00:21:02.600
<v Sydney Runkle>I mostly just use like the embedded terminal in whatever IDE I'm using.

00:21:03.340 --> 00:21:06.540
<v Sydney Runkle>I've heard a lot of good things about Ohmypy recently.

00:21:06.730 --> 00:21:10.580
<v Sydney Runkle>And I know like OhMyZSH was popular as well.

00:21:10.970 --> 00:21:11.300
<v Sydney Runkle>But yeah,

00:21:11.680 --> 00:21:11.780
<v Sydney Runkle>honestly,

00:21:12.140 --> 00:21:13.400
<v Sydney Runkle>my answer is boring here.

00:21:13.400 --> 00:21:16.740
<v Sydney Runkle>Like just because I'm doing so much not in an IDE,

00:21:16.830 --> 00:21:20.140
<v Sydney Runkle>I feel like I'm a little bit less tied to a specific terminal.

00:21:20.320 --> 00:21:20.800
<v Michael Kennedy>Yeah, very cool.

00:21:21.180 --> 00:21:21.280
<v Michael Kennedy>Reuben,

00:21:21.800 --> 00:21:22.700
<v Michael Kennedy>Jupyter has a terminal, right?

00:21:22.860 --> 00:21:23.840
<v Reuven Lerner>More than many other people,

00:21:24.000 --> 00:21:24.440
<v Reuven Lerner>that's for sure.

00:21:24.690 --> 00:21:26.080
<v Reuven Lerner>Like I've been using a lot of Marimo lately.

00:21:26.580 --> 00:21:31.240
<v Reuven Lerner>And one of the things I totally miss is the like exclamation point allowing me to execute

00:21:31.440 --> 00:21:32.340
<v Reuven Lerner>commands at the backend.

00:21:32.690 --> 00:21:34.540
<v Reuven Lerner>Because I just got so used to doing that from Jupyter.

00:21:35.020 --> 00:21:35.660
<v Reuven Lerner>For terminal stuff,

00:21:35.880 --> 00:21:38.560
<v Reuven Lerner>I was using iTerm2 for many,

00:21:38.720 --> 00:21:39.060
<v Reuven Lerner>many years.

00:21:39.600 --> 00:21:43.220
<v Reuven Lerner>And at some point I realized I'm not using like 90% of its functionality,

00:21:43.600 --> 00:21:43.840
<v Reuven Lerner>including all

00:21:43.900 --> 00:21:44.640
<v Reuven Lerner>the TMUX stuff,

00:21:44.940 --> 00:21:45.340
<v Reuven Lerner>which I just,

00:21:45.610 --> 00:21:46.560
<v Reuven Lerner>I never figured it out.

00:21:46.860 --> 00:21:50.620
<v Reuven Lerner>I never figured out how to get it to work or how to work with it or why I would want it.

00:21:50.740 --> 00:21:52.100
<v Reuven Lerner>I'm sure someone here can explain to me,

00:21:52.430 --> 00:21:54.660
<v Reuven Lerner>I would just open up new tabs and I was okay with that.

00:21:54.950 --> 00:21:56.760
<v Reuven Lerner>And then I found out about ghost TTY,

00:21:57.180 --> 00:21:59.160
<v Reuven Lerner>which I think I've just pronounced an extra T in there.

00:21:59.540 --> 00:22:00.800
<v Reuven Lerner>And I switched out a few months ago.

00:22:01.100 --> 00:22:01.560
<v Reuven Lerner>I've been super,

00:22:01.720 --> 00:22:03.760
<v Reuven Lerner>super happy with it just because I don't

00:22:04.020 --> 00:22:05.800
<v Reuven Lerner>need all the extra iterm2 stuff.

00:22:06.500 --> 00:22:09.280
<v Reuven Lerner>And I had some problems with the Claude Code actually. It was like

00:22:09.400 --> 00:22:12.140
<v Reuven Lerner>giving me some weird scroll back and flickering and so forth.

00:22:12.490 --> 00:22:14.820
<v Reuven Lerner>So I put Claude Code into TUI full

00:22:14.960 --> 00:22:15.440
<v Reuven Lerner>screen mode.

00:22:15.730 --> 00:22:20.660
<v Reuven Lerner>And not only now when I load it up, does it give me full scrollable and searchable back

00:22:20.680 --> 00:22:21.420
<v Reuven Lerner>my entire history,

00:22:21.740 --> 00:22:24.700
<v Reuven Lerner>but it puts this diff window up in the right of my terminal.

00:22:25.060 --> 00:22:25.640
<v Reuven Lerner>And I've been just

00:22:25.800 --> 00:22:28.100
<v Reuven Lerner>like super, super happy as a result. That's super cool.

00:22:28.540 --> 00:22:31.600
<v Michael Kennedy>I was for a long time working on warp,

00:22:32.040 --> 00:22:33.560
<v Michael Kennedy>which I really like warp as a terminal,

00:22:33.780 --> 00:22:37.260
<v Michael Kennedy>but they're kind of trying to be a pie or some,

00:22:37.460 --> 00:22:37.660
<v Michael Kennedy>you know,

00:22:37.960 --> 00:22:38.520
<v Michael Kennedy>Claude Code,

00:22:38.880 --> 00:22:39.780
<v Michael Kennedy>but through there,

00:22:40.140 --> 00:22:42.400
<v Michael Kennedy>which I don't know, kind of turned me off a little bit.

00:22:42.500 --> 00:22:46.120
<v Michael Kennedy>And my friend Mark said, you need to be checking out CMUX.

00:22:46.640 --> 00:22:47.680
<v Michael Kennedy>Are you familiar with CMUX?

00:22:47.840 --> 00:22:48.560
<v Calvin Hendryx-Parker>I'm familiar

00:22:48.580 --> 00:22:53.520
<v Michael Kennedy>with it but not tried it yeah it's pretty nice it'll do a little bit of a you know multi-window

00:22:53.860 --> 00:22:58.840
<v Michael Kennedy>split different ways type of things and what's cool is you have workspaces that are connected to

00:22:59.120 --> 00:23:04.640
<v Michael Kennedy>maybe it remembers the layout and it'll restore ssh connections if you shut it down and open it back

00:23:04.740 --> 00:23:10.280
<v Michael Kennedy>up across all the different things and so it's pretty neat it has a an iphone version as well so

00:23:10.580 --> 00:23:15.780
<v Michael Kennedy>cmux and mark and i were at a coffee shop sitting there looking at something and someone across the

00:23:15.800 --> 00:23:19.020
<v Michael Kennedy>way he goes excuse me i'm sorry i just i have to come over i just saw that you were talking about

00:23:19.120 --> 00:23:25.000
<v Michael Kennedy>cmux and here's my cmux okay so apparently uh at least three of us use it now and it's i believe

00:23:25.100 --> 00:23:30.460
<v Michael Kennedy>it's based on ghost tty as well rumin it's open source it's pretty cool can i just say how wild

00:23:30.640 --> 00:23:38.260
<v Reuven Lerner>it is that in 2026 people are still developing new terminals and like i would have expected this was

00:23:38.370 --> 00:23:44.640
<v Reuven Lerner>a long ago solve problem like feature complete and yet like i guess it's all the ai stuff that's

00:23:44.660 --> 00:23:49.920
<v Reuven Lerner>like driving all this new rush of creativity and products and you have to rewrite it in rust too

00:23:50.120 --> 00:23:55.060
<v Michael Kennedy>reuben 100 i mean it's just completely crazy like i'm so excited to set up my terminal

00:23:55.580 --> 00:24:03.120
<v Michael Kennedy>to uh be able to ssh into or talk to my you know studio m5 max so i can get it to run a terminal

00:24:03.190 --> 00:24:07.660
<v Michael Kennedy>like oh my gosh you know i really take an advantage of it right so it can shell out to the cloud for

00:24:07.840 --> 00:24:12.620
<v Michael Kennedy>ai things or whatever it's doing or server work um incredible now this next one this next topic

00:24:12.640 --> 00:24:13.300
<v Michael Kennedy>I think.

00:24:13.740 --> 00:24:14.660
<v Michael Kennedy>Go ahead, Calvin. You got something to say?

00:24:14.660 --> 00:24:23.700
<v Calvin Hendryx-Parker>I was going to say that the terminal UI and the CLIs that have now followed are giving a really rich interface for all the LLMs and agentic harness pieces.

00:24:24.020 --> 00:24:27.420
<v Calvin Hendryx-Parker>So instead of relying on, say, like MCPs and things like that,

00:24:27.620 --> 00:24:29.660
<v Calvin Hendryx-Parker>you're getting actually really great CLIs.

00:24:29.660 --> 00:24:34.000
<v Calvin Hendryx-Parker>Like my email client now ships with a CLI that I can go use myself,

00:24:34.200 --> 00:24:34.340
<v Calvin Hendryx-Parker>too.

00:24:34.720 --> 00:24:40.100
<v Calvin Hendryx-Parker>I can tell my agent to use it, but I can also use it, which I found quite handy because I'm living on the terminal.

00:24:40.220 --> 00:24:41.260
<v Calvin Hendryx-Parker>so I can stay on the terminal,

00:24:41.860 --> 00:24:42.500
<v Calvin Hendryx-Parker>check in on email,

00:24:42.670 --> 00:24:43.020
<v Calvin Hendryx-Parker>for example.

00:24:43.090 --> 00:24:45.520
<v Calvin Hendryx-Parker>So I use Spark Desktop as my email client,

00:24:45.680 --> 00:24:46.700
<v Calvin Hendryx-Parker>and it has a Spark CLI.

00:24:46.860 --> 00:24:48.420
<v Michael Kennedy>Awesome. Yeah, I use Spark as well.

00:24:48.490 --> 00:24:52.020
<v Michael Kennedy>I don't use our CLI, but I do use Spark as well, which I like it a lot.

00:24:52.100 --> 00:24:55.620
<v Calvin Hendryx-Parker>I like it better than the whole MCP option for local stuff like that.

00:24:55.700 --> 00:25:00.040
<v Michael Kennedy>I went so far as there's even a CLI for Talk Python these days.

00:25:00.540 --> 00:25:03.700
<v Michael Kennedy>I just want to point this out as a segue to the next one here.

00:25:04.220 --> 00:25:05.120
<v Michael Kennedy>UV tool install,

00:25:05.620 --> 00:25:05.740
<v Michael Kennedy>okay?

00:25:06.260 --> 00:25:08.240
<v Michael Kennedy>That's how you get the Talk Python CLI.

00:25:08.560 --> 00:25:09.520
<v Michael Kennedy>You don't have to authenticate anything.

00:25:09.680 --> 00:25:11.000
<v Michael Kennedy>It just lets you ask questions like,

00:25:11.280 --> 00:25:14.020
<v Michael Kennedy>you know, what did Sydney say on her first episode?

00:25:14.300 --> 00:25:14.380
<v Michael Kennedy>Like,

00:25:14.790 --> 00:25:15.760
<v Michael Kennedy>give me the highlights or whatever.

00:25:15.760 --> 00:25:16.460
<v Michael Kennedy>And it would literally,

00:25:16.740 --> 00:25:16.920
<v Michael Kennedy>you know,

00:25:17.220 --> 00:25:18.920
<v Michael Kennedy>do that kind of stuff if you plug it to your AI.

00:25:19.140 --> 00:25:23.780
<v Calvin Hendryx-Parker>But the only thing better is just typing uvx in the name of the package you want to run and not even thinking about it.

00:25:23.880 --> 00:25:25.660
<v Michael Kennedy>I know there's a lot of tools and,

00:25:26.080 --> 00:25:26.200
<v Michael Kennedy>you know,

00:25:26.480 --> 00:25:28.600
<v Michael Kennedy>they've really done incredible stuff.

00:25:29.020 --> 00:25:29.220
<v Michael Kennedy>You know,

00:25:29.560 --> 00:25:30.000
<v Michael Kennedy>pipX,

00:25:30.600 --> 00:25:31.380
<v Michael Kennedy>there's pip,

00:25:31.660 --> 00:25:31.820
<v Michael Kennedy>obviously.

00:25:32.260 --> 00:25:33.780
<v Michael Kennedy>There was a time when there was no pip.

00:25:34.270 --> 00:25:36.460
<v Michael Kennedy>Python existed for a long time without a package manager.

00:25:36.860 --> 00:25:39.080
<v Michael Kennedy>Partly why the standard library has so much stuff in it.

00:25:39.240 --> 00:25:39.880
<v Calvin Hendryx-Parker>Those are dark days,

00:25:40.080 --> 00:25:40.180
<v Calvin Hendryx-Parker>Michael.

00:25:40.630 --> 00:25:41.020
<v Michael Kennedy>Oh my God.

00:25:41.240 --> 00:25:43.680
<v Reuven Lerner>Like the amount of time I spent in my intro classes,

00:25:44.460 --> 00:25:48.200
<v Reuven Lerner>helping them install pip so that they could install things.

00:25:48.360 --> 00:25:49.060
<v Reuven Lerner>Like, oh my God,

00:25:49.380 --> 00:25:49.820
<v Reuven Lerner>what madness.

00:25:50.120 --> 00:25:50.420
<v Michael Kennedy>Exactly.

00:25:50.600 --> 00:25:52.040
<v Michael Kennedy>I think uv saved a lot of that,

00:25:52.240 --> 00:25:52.860
<v Michael Kennedy>especially with the Python,

00:25:53.220 --> 00:25:53.520
<v Michael Kennedy>you know, uv,

00:25:53.770 --> 00:25:53.860
<v Michael Kennedy>Python,

00:25:54.540 --> 00:25:54.600
<v Michael Kennedy>three,

00:25:54.990 --> 00:25:55.080
<v Michael Kennedy>whatever.

00:25:55.620 --> 00:25:57.160
<v Michael Kennedy>I guess today we could say 3.15,

00:25:57.330 --> 00:25:57.460
<v Michael Kennedy>right?

00:25:57.620 --> 00:25:58.800
<v Michael Kennedy>Like it's October 1st.

00:25:59.140 --> 00:26:00.260
<v Michael Kennedy>It's supposed to be out sometime.

00:26:00.310 --> 00:26:00.900
<v Calvin Hendryx-Parker>Did it launch?

00:26:01.280 --> 00:26:01.660
<v Calvin Hendryx-Parker>I hope so.

00:26:02.120 --> 00:26:02.960
<v Calvin Hendryx-Parker>That's an exciting release.

00:26:03.220 --> 00:26:03.780
<v Michael Kennedy>I haven't checked.

00:26:03.830 --> 00:26:05.380
<v Michael Kennedy>I just woke up and went to a podcast.

00:26:05.700 --> 00:26:08.220
<v Michael Kennedy>So I'm disconnected from the world.

00:26:08.440 --> 00:26:09.300
<v Michael Kennedy>So that's very interesting.

00:26:09.580 --> 00:26:12.140
<v Reuven Lerner>Download is still 3.14.8 as of now.

00:26:12.320 --> 00:26:13.520
<v Michael Kennedy>I mean, we had Poetry.

00:26:14.180 --> 00:26:15.160
<v Michael Kennedy>We had a bunch of others.

00:26:15.700 --> 00:26:15.960
<v Michael Kennedy>Flit.

00:26:16.460 --> 00:26:18.560
<v Michael Kennedy>But uv definitely took the world by storm.

00:26:18.800 --> 00:26:19.200
<v Calvin Hendryx-Parker>I agree.

00:26:19.510 --> 00:26:20.640
<v Calvin Hendryx-Parker>And we went from Pip.

00:26:21.240 --> 00:26:23.060
<v Calvin Hendryx-Parker>And at some point in there, we tried PipX.

00:26:23.280 --> 00:26:24.980
<v Calvin Hendryx-Parker>But when uv came on the scene,

00:26:25.460 --> 00:26:27.860
<v Calvin Hendryx-Parker>and the speed was the true feature of that,

00:26:28.100 --> 00:26:30.920
<v Calvin Hendryx-Parker>and the consistency of how you ran the various tools,

00:26:31.200 --> 00:26:32.700
<v Calvin Hendryx-Parker>I don't like to disparage other tools.

00:26:32.860 --> 00:26:34.940
<v Calvin Hendryx-Parker>But I will say that when you type the word poetry,

00:26:35.160 --> 00:26:37.020
<v Calvin Hendryx-Parker>if you use the word poetry in our Slack,

00:26:37.660 --> 00:26:40.900
<v Calvin Hendryx-Parker>there was a Slack bot response with a haiku that was not favorable to poetry.

00:26:41.140 --> 00:26:43.800
<v Michael Kennedy>Would it rewrite poetry and Russ using an AI if you said that?

00:26:43.870 --> 00:26:44.820
<v Michael Kennedy>Or was it just a poem?

00:26:45.000 --> 00:26:48.940
<v Calvin Hendryx-Parker>I'll just say that poetry is a really good tool if you are all in on poetry.

00:26:49.420 --> 00:26:51.260
<v Calvin Hendryx-Parker>And I wasn't ready to be all in on poetry.

00:26:51.370 --> 00:26:54.780
<v Calvin Hendryx-Parker>There was a whole bunch of extra overhead of pieces it would do

00:26:54.940 --> 00:26:56.300
<v Calvin Hendryx-Parker>that I just didn't either didn't need,

00:26:56.480 --> 00:26:56.860
<v Calvin Hendryx-Parker>didn't want,

00:26:57.020 --> 00:26:58.200
<v Calvin Hendryx-Parker>or I didn't care to want to go learn.

00:26:58.660 --> 00:27:02.360
<v Calvin Hendryx-Parker>And so I feel like uv encapsulated a lot of my pre-existing opinions

00:27:02.760 --> 00:27:05.780
<v Calvin Hendryx-Parker>because I was using PyPI for managing Python versions.

00:27:06.440 --> 00:27:13.060
<v Calvin Hendryx-Parker>I was using pip with lock files and like some extra flags to make it very, very reliable for

00:27:13.740 --> 00:27:16.120
<v Calvin Hendryx-Parker>getting exactly what I wanted when and where for penning.

00:27:16.640 --> 00:27:17.840
<v Calvin Hendryx-Parker>What was the other opinion I had on that?

00:27:17.920 --> 00:27:18.020
<v Calvin Hendryx-Parker>Oh,

00:27:18.320 --> 00:27:21.460
<v Calvin Hendryx-Parker>using pipx for like the tools install.

00:27:21.880 --> 00:27:24.220
<v Calvin Hendryx-Parker>So I kind of had that opinion around how we would

00:27:24.420 --> 00:27:27.200
<v Calvin Hendryx-Parker>install like Python tooling into the machine.

00:27:27.760 --> 00:27:30.320
<v Calvin Hendryx-Parker>So uv just took all like the things I already love.

00:27:30.320 --> 00:27:33.540
<v Calvin Hendryx-Parker>So I guess I was biased. I was already biased on it because those are the ways I liked operating.

00:27:33.940 --> 00:27:35.960
<v Calvin Hendryx-Parker>and uv took my same opinions and tax.

00:27:36.080 --> 00:27:36.580
<v Calvin Hendryx-Parker>And so I was like, all right,

00:27:36.640 --> 00:27:37.840
<v Calvin Hendryx-Parker>I'm all about uv at this point.

00:27:37.980 --> 00:27:38.220
<v Calvin Hendryx-Parker>Let's go.

00:27:38.400 --> 00:27:38.480
<v Michael Kennedy>Nice.

00:27:38.950 --> 00:27:39.060
<v Michael Kennedy>Sydney,

00:27:39.580 --> 00:27:40.180
<v Michael Kennedy>what do you all use?

00:27:40.280 --> 00:27:40.780
<v Sydney Runkle>All uv,

00:27:41.180 --> 00:27:41.360
<v Sydney Runkle>yeah.

00:27:41.640 --> 00:27:45.460
<v Sydney Runkle>I feel like uv was like the speed up

00:27:45.640 --> 00:27:47.460
<v Sydney Runkle>for package management

00:27:48.340 --> 00:27:51.740
<v Sydney Runkle>that like rivaled what AI agents did for coding,

00:27:52.070 --> 00:27:52.180
<v Sydney Runkle>right?

00:27:52.360 --> 00:27:53.440
<v Sydney Runkle>Like the chart we're seeing here,

00:27:53.490 --> 00:27:57.060
<v Sydney Runkle>just like the delta and like pain that it took away

00:27:57.100 --> 00:27:58.220
<v Sydney Runkle>was like pretty radical,

00:27:58.420 --> 00:27:58.980
<v Sydney Runkle>which is exciting.

00:27:59.200 --> 00:27:59.460
<v Sydney Runkle>So yeah,

00:27:59.680 --> 00:27:59.980
<v Sydney Runkle>all uv,

00:28:00.240 --> 00:28:01.300
<v Sydney Runkle>and I'm sure we'll get to this later,

00:28:01.460 --> 00:28:04.440
<v Sydney Runkle>but I'm a really big fan of all of the developer tooling

00:28:05.000 --> 00:28:06.680
<v Sydney Runkle>that Astral has developed.

00:28:06.760 --> 00:28:08.680
<v Sydney Runkle>I think they're rolled into OpenAI now,

00:28:08.900 --> 00:28:10.420
<v Sydney Runkle>but yeah, just really great stuff

00:28:10.560 --> 00:28:11.800
<v Sydney Runkle>in terms of like developer experience

00:28:12.060 --> 00:28:14.900
<v Sydney Runkle>and like attention to speed and productivity,

00:28:15.500 --> 00:28:16.080
<v Sydney Runkle>which is super great.

00:28:16.360 --> 00:28:17.840
<v Sydney Runkle>And I think it's really interesting to see now

00:28:18.280 --> 00:28:21.800
<v Sydney Runkle>like how easy it is for agents to use those tools.

00:28:21.960 --> 00:28:23.660
<v Sydney Runkle>And I think they've really like geared towards

00:28:24.280 --> 00:28:27.040
<v Sydney Runkle>making the tools agent native for coding as well.

00:28:27.140 --> 00:28:29.100
<v Michael Kennedy>It's got an unexpected AI angle as well.

00:28:29.100 --> 00:28:30.340
<v Michael Kennedy>A lot of the AI tools really like it.

00:28:30.600 --> 00:28:33.540
<v Michael Kennedy>I'm going to come back to some of the astral tools in this section,

00:28:33.760 --> 00:28:34.740
<v Michael Kennedy>but in another section,

00:28:34.850 --> 00:28:34.960
<v Michael Kennedy>rather.

00:28:35.380 --> 00:28:35.520
<v Michael Kennedy>Pat,

00:28:35.930 --> 00:28:36.980
<v Michael Kennedy>I know uv works on Windows,

00:28:37.240 --> 00:28:39.620
<v Michael Kennedy>but in the DevOps world, you got other things or is it

00:28:39.820 --> 00:28:40.440
<v Michael Kennedy>all uv?

00:28:40.720 --> 00:28:41.600
<v Pat Decker>Funny you say that.

00:28:41.760 --> 00:28:42.660
<v Pat Decker>I am all uv,

00:28:42.940 --> 00:28:47.040
<v Pat Decker>but in the corporate environment, they have policies applied to the machines

00:28:47.460 --> 00:28:49.440
<v Pat Decker>and just straight installing Python.

00:28:49.920 --> 00:28:50.420
<v Pat Decker>That's a no-go.

00:28:51.200 --> 00:28:53.120
<v Pat Decker>And uv kind of ends up in the same spot.

00:28:53.420 --> 00:28:54.600
<v Pat Decker>But under WSL,

00:28:55.300 --> 00:28:57.260
<v Pat Decker>then we're more free to do what we want.

00:28:57.800 --> 00:28:59.320
<v Pat Decker>And I'm more of a heavy,

00:28:59.540 --> 00:29:01.760
<v Pat Decker>like a PEP 723 user,

00:29:02.080 --> 00:29:04.520
<v Pat Decker>the section at the top to declare your dependencies,

00:29:05.220 --> 00:29:08.760
<v Pat Decker>because almost 90 some percent of what I write,

00:29:09.020 --> 00:29:10.560
<v Pat Decker>it's a single file script.

00:29:11.240 --> 00:29:14.060
<v Pat Decker>And then for side projects, I do virtual environments,

00:29:14.240 --> 00:29:16.300
<v Pat Decker>but I use uv now rather than them.

00:29:16.640 --> 00:29:18.840
<v Michael Kennedy>Yeah, that's really cool with the stuff at the top.

00:29:18.920 --> 00:29:20.700
<v Michael Kennedy>You can almost treat it as a bash script.

00:29:20.780 --> 00:29:22.940
<v Michael Kennedy>Like here's a file, you just run it, it's going to work, right?

00:29:23.060 --> 00:29:27.640
<v Calvin Hendryx-Parker>I saw someone put an interesting shebang on the top of one with that same inline includes.

00:29:27.800 --> 00:29:29.240
<v Calvin Hendryx-Parker>where it's just like UBRun.

00:29:29.560 --> 00:29:30.420
<v Calvin Hendryx-Parker>I was like, oh, this is genius.

00:29:30.640 --> 00:29:32.140
<v Calvin Hendryx-Parker>So it's change mod 755,

00:29:32.300 --> 00:29:32.980
<v Calvin Hendryx-Parker>this Python file.

00:29:33.500 --> 00:29:34.700
<v Calvin Hendryx-Parker>It's now fully executable.

00:29:35.299 --> 00:29:36.160
<v Calvin Hendryx-Parker>Nothing else needed.

00:29:36.340 --> 00:29:37.260
<v Calvin Hendryx-Parker>The magic just happens.

00:29:37.540 --> 00:29:40.620
<v Pat Decker>I keep having to prompt my DevOps agents,

00:29:41.280 --> 00:29:44.680
<v Pat Decker>the various agents to use the 723 section up there.

00:29:45.120 --> 00:29:47.420
<v Pat Decker>And then one of them just threw that in, the shebang.

00:29:47.940 --> 00:29:48.440
<v Pat Decker>And I'm like, oh,

00:29:48.620 --> 00:29:49.080
<v Pat Decker>that's genius.

00:29:49.360 --> 00:29:49.940
<v Pat Decker>Let's do that.

00:29:50.100 --> 00:29:50.720
<v Michael Kennedy>Very, very cool.

00:29:51.020 --> 00:29:52.760
<v Pat Decker>Sydney said something about Astral and OpenAI.

00:29:52.880 --> 00:29:55.700
<v Pat Decker>And I think it's good that I had kind of forgotten

00:29:55.840 --> 00:29:56.479
<v Pat Decker>that even happened

00:29:56.500 --> 00:29:59.660
<v Pat Decker>because things just seem to have carried on as they were,

00:29:59.820 --> 00:29:59.940
<v Pat Decker>right?

00:30:00.040 --> 00:30:03.920
<v Michael Kennedy>Yeah, I had Charlie Marsh on a couple of months ago to talk about that and the changes

00:30:04.480 --> 00:30:07.760
<v Michael Kennedy>and sort of look after he'd been inside OpenAI for a couple of months.

00:30:08.160 --> 00:30:09.520
<v Michael Kennedy>And yeah, that's a good point.

00:30:09.740 --> 00:30:11.760
<v Michael Kennedy>There hasn't been an, oh gosh, what are we going to do now?

00:30:12.040 --> 00:30:16.080
<v Michael Kennedy>That was so 2025 or until it was gone and it's still going strong.

00:30:16.520 --> 00:30:16.600
<v Michael Kennedy>Reuben.

00:30:16.780 --> 00:30:18.360
<v Reuven Lerner>I'm also all in on uv.

00:30:18.820 --> 00:30:22.280
<v Reuven Lerner>It took me a little bit of time to realize it was not just a super,

00:30:22.460 --> 00:30:23.420
<v Reuven Lerner>super fast pip,

00:30:23.620 --> 00:30:26.000
<v Reuven Lerner>but that was like the gateway drug to start using it.

00:30:26.340 --> 00:30:26.780
<v Reuven Lerner>But like,

00:30:27.220 --> 00:30:27.640
<v Reuven Lerner>think of it,

00:30:27.860 --> 00:30:32.700
<v Reuven Lerner>how many times over the years do we go to Python conferences and there were two,

00:30:32.960 --> 00:30:33.060
<v Reuven Lerner>three,

00:30:33.260 --> 00:30:35.860
<v Reuven Lerner>four talks trying to explain packaging,

00:30:36.300 --> 00:30:37.200
<v Reuven Lerner>all the different tools,

00:30:37.480 --> 00:30:39.520
<v Reuven Lerner>all the different ways to do it, different versions of Python, on and on.

00:30:39.920 --> 00:30:42.640
<v Reuven Lerner>And the talk would inevitably have in it somewhere,

00:30:43.220 --> 00:30:46.200
<v Reuven Lerner>oh, if only we could solve this mess to make it easier for people.

00:30:46.640 --> 00:30:57.940
<v Reuven Lerner>And the core developers were like, we are not entertaining any suggestions unless you come and actually solve these problems because it's so complex and you can suggest things all day long and we don't have time to even entertain these ideas.

00:30:58.350 --> 00:31:02.560
<v Reuven Lerner>And along comes uv and it solves all the problems for,

00:31:02.720 --> 00:31:03.200
<v Reuven Lerner>you know,

00:31:03.460 --> 00:31:04.900
<v Reuven Lerner>for, you know,

00:31:05.120 --> 00:31:05.580
<v Reuven Lerner>versioning,

00:31:05.780 --> 00:31:06.580
<v Reuven Lerner>for packaging,

00:31:07.000 --> 00:31:08.140
<v Reuven Lerner>for uploading to PyPI,

00:31:08.480 --> 00:31:09.520
<v Reuven Lerner>for Python versions.

00:31:10.140 --> 00:31:11.320
<v Reuven Lerner>And it does so super fast.

00:31:11.660 --> 00:31:14.340
<v Reuven Lerner>Like, it's not a surprise that everyone's on board with it.

00:31:14.920 --> 00:31:16.100
<v Reuven Lerner>And when, you know,

00:31:16.300 --> 00:31:17.880
<v Reuven Lerner>Astral was bought by OpenAI,

00:31:18.050 --> 00:31:19.600
<v Reuven Lerner>I know there were some people worried about it,

00:31:19.790 --> 00:31:24.340
<v Reuven Lerner>but there's a lot of corporate sponsorship of open source and we've lived with it for years.

00:31:24.590 --> 00:31:30.160
<v Reuven Lerner>And I think Astral has proven themselves so far to be very reliable stewards of this super amazing tool.

00:31:30.290 --> 00:31:30.440
<v Calvin Hendryx-Parker>Yeah.

00:31:30.620 --> 00:31:34.480
<v Calvin Hendryx-Parker>And it's not hindered by the release cycle of Python, the language itself either,

00:31:34.900 --> 00:31:36.140
<v Calvin Hendryx-Parker>which is another big benefit here.

00:31:36.300 --> 00:31:37.040
<v Michael Kennedy>Yeah, it's super interesting.

00:31:37.460 --> 00:31:38.360
<v Michael Kennedy>And how long will it be?

00:31:38.730 --> 00:31:41.940
<v Michael Kennedy>This, I think, is maybe one of the most important things that it's done.

00:31:42.040 --> 00:31:47.540
<v Michael Kennedy>How long will it be until I could just uv Python install 3.15 a day?

00:31:47.920 --> 00:31:50.460
<v Michael Kennedy>Will that work today or tomorrow with Python Builds Channel?

00:31:50.600 --> 00:31:55.460
<v Calvin Hendryx-Parker>It worked this week when I did the Python Bytes demo of the dungeon crawler for the What's New.

00:31:55.600 --> 00:31:55.980
<v Michael Kennedy>That's right.

00:31:56.100 --> 00:31:57.040
<v Michael Kennedy>Yeah, that used the RC,

00:31:57.800 --> 00:31:58.820
<v Michael Kennedy>whatever the last RC was, right?

00:31:59.040 --> 00:31:59.940
<v Reuven Lerner>I did this months ago.

00:32:00.000 --> 00:32:02.280
<v Reuven Lerner>I had a playlist that I did on my YouTube channel of like,

00:32:02.440 --> 00:32:03.800
<v Reuven Lerner>get ready for Python 3.15.

00:32:04.020 --> 00:32:06.140
<v Reuven Lerner>And how did I tell people to install it with uv?

00:32:06.580 --> 00:32:07.480
<v Reuven Lerner>And it just worked.

00:32:07.520 --> 00:32:08.220
<v Reuven Lerner>It was extraordinary.

00:32:08.600 --> 00:32:10.940
<v Michael Kennedy>So for all the benefits that you all extolled about it,

00:32:11.190 --> 00:32:14.860
<v Michael Kennedy>I think one of its killer features is it lives outside Python.

00:32:15.400 --> 00:32:17.640
<v Michael Kennedy>And it can be the way into Python.

00:32:17.980 --> 00:32:18.560
<v Michael Kennedy>So for example,

00:32:19.080 --> 00:32:21.240
<v Michael Kennedy>with Pat's way of I want to run this thing,

00:32:21.740 --> 00:32:23.560
<v Michael Kennedy>this script that I built, and here's its dependencies,

00:32:23.730 --> 00:32:25.120
<v Michael Kennedy>and it needs a VNV and all that sort of stuff.

00:32:25.400 --> 00:32:28.160
<v Michael Kennedy>You don't even have to have Python on the machine at all.

00:32:28.490 --> 00:32:29.380
<v Michael Kennedy>And that still works,

00:32:29.750 --> 00:32:29.860
<v Michael Kennedy>right?

00:32:29.960 --> 00:32:31.760
<v Michael Kennedy>And there was none of the other packaging tools,

00:32:31.880 --> 00:32:34.840
<v Michael Kennedy>as much as I liked all of them, none of them could do that.

00:32:35.010 --> 00:32:36.300
<v Michael Kennedy>It was always you set up Python,

00:32:36.510 --> 00:32:37.720
<v Michael Kennedy>then you install this into it,

00:32:37.780 --> 00:32:40.120
<v Michael Kennedy>and then you can start having tooling conversations,

00:32:40.500 --> 00:32:40.560
<v Michael Kennedy>right?

00:32:40.700 --> 00:32:40.820
<v Calvin Hendryx-Parker>Yeah,

00:32:41.000 --> 00:32:41.820
<v Calvin Hendryx-Parker>just a few years back,

00:32:41.840 --> 00:32:45.200
<v Calvin Hendryx-Parker>I was really considering a container-only approach to this

00:32:45.400 --> 00:32:47.680
<v Calvin Hendryx-Parker>because installing Python and installing dependencies

00:32:47.760 --> 00:32:49.920
<v Calvin Hendryx-Parker>and installing packages has just gotten so difficult.

00:32:50.340 --> 00:32:51.860
<v Calvin Hendryx-Parker>But the containerization piece worked.

00:32:52.280 --> 00:32:53.320
<v Calvin Hendryx-Parker>But uv changed all that for me.

00:32:53.420 --> 00:32:55.760
<v Calvin Hendryx-Parker>Like it just now made it that same convenient

00:32:56.240 --> 00:32:57.960
<v Calvin Hendryx-Parker>kind of one-liner to get what I needed.

00:32:58.180 --> 00:33:00.000
<v Reuven Lerner>I'll add that virtual environments,

00:33:00.580 --> 00:33:02.820
<v Reuven Lerner>virtual environments have like been the solution

00:33:03.140 --> 00:33:04.900
<v Reuven Lerner>to the conflicts between different projects.

00:33:05.400 --> 00:33:05.860
<v Reuven Lerner>And everyone,

00:33:06.080 --> 00:33:07.740
<v Reuven Lerner>I mean, I certainly hated them

00:33:07.760 --> 00:33:10.220
<v Reuven Lerner>like dealing with them and activate and deactivate and where am I?

00:33:10.500 --> 00:33:11.360
<v Reuven Lerner>And uv is like,

00:33:11.600 --> 00:33:14.980
<v Reuven Lerner>oh, we'll just hide that from you. You don't like, we're going to take care of it,

00:33:15.280 --> 00:33:16.720
<v Reuven Lerner>but you don't have to actually do anything.

00:33:17.100 --> 00:33:17.560
<v Reuven Lerner>And for me,

00:33:17.740 --> 00:33:19.100
<v Reuven Lerner>that was like magical.

00:33:19.280 --> 00:33:21.980
<v Calvin Hendryx-Parker>I mean, it's so bad that XKCD made a comic about the,

00:33:22.280 --> 00:33:24.340
<v Calvin Hendryx-Parker>my laptop is now a super fun site.

00:33:24.820 --> 00:33:25.900
<v Michael Kennedy>For those of you guys out of the US,

00:33:26.120 --> 00:33:27.820
<v Michael Kennedy>a super fun site is something so polluted,

00:33:27.940 --> 00:33:32.100
<v Michael Kennedy>it requires extraordinary measures to like protect the public from it.

00:33:32.520 --> 00:33:37.720
<v Michael Kennedy>Let's give Sydney the last word here. I think that the fact that uv can actually bring

00:33:37.720 --> 00:33:42.300
<v Michael Kennedy>Python to the machine or to the environment is why AI is really liked it,

00:33:42.580 --> 00:33:42.660
<v Michael Kennedy>right?

00:33:42.660 --> 00:33:45.720
<v Michael Kennedy>And really make use of it because it just removes all those details,

00:33:46.460 --> 00:33:46.540
<v Michael Kennedy>right?

00:33:46.580 --> 00:33:47.120
<v Michael Kennedy>What do you think, Sydney?

00:33:47.260 --> 00:33:52.940
<v Sydney Runkle>I think this like generally connects to this idea with agents and models that like they're

00:33:53.360 --> 00:33:54.900
<v Sydney Runkle>really good at writing code.

00:33:55.320 --> 00:33:57.400
<v Sydney Runkle>And the reason that is, is kind of twofold.

00:33:57.500 --> 00:34:01.840
<v Sydney Runkle>One is like they're trained on a bunch of code and a lot of code is like verifiable,

00:34:02.060 --> 00:34:02.120
<v Sydney Runkle>right?

00:34:02.240 --> 00:34:05.940
<v Sydney Runkle>Like you can confirm that like something runs or it doesn't, a test passes or it doesn't.

00:34:06.180 --> 00:34:09.840
<v Sydney Runkle>And then they're also like post-trained on code syntax.

00:34:10.470 --> 00:34:15.600
<v Sydney Runkle>So these tools now are like very familiar at the like weights level for models,

00:34:15.810 --> 00:34:15.960
<v Sydney Runkle>right?

00:34:16.520 --> 00:34:18.300
<v Sydney Runkle>And I think uv,

00:34:18.940 --> 00:34:19.040
<v Sydney Runkle>obviously,

00:34:19.649 --> 00:34:26.260
<v Sydney Runkle>even before AI emerged or before like prolific AI emerged as like the leading package manager.

00:34:26.330 --> 00:34:27.940
<v Sydney Runkle>And so I think AI tools,

00:34:28.659 --> 00:34:34.020
<v Sydney Runkle>AI models are able to like use it effectively to control an environment where code is run.

00:34:34.419 --> 00:34:34.820
<v Sydney Runkle>And ultimately,

00:34:35.040 --> 00:34:38.879
<v Sydney Runkle>like models don't only need to be good at writing code for like the coding

00:34:39.020 --> 00:34:45.220
<v Sydney Runkle>agent case, but like general agents also use code as like a means to achieve an end.

00:34:45.240 --> 00:34:45.659
<v Sydney Runkle>And so,

00:34:45.899 --> 00:34:48.679
<v Sydney Runkle>yeah, I think it's pretty exciting that like this performant tool came out and

00:34:48.679 --> 00:34:52.260
<v Sydney Runkle>is now like a super fundamental part of how those models operate.

00:34:52.460 --> 00:34:54.620
<v Michael Kennedy>There's a reason that OpenAI acquired Astro.

00:34:54.820 --> 00:34:54.940
<v Sydney Runkle>Right,

00:34:55.100 --> 00:34:55.240
<v Sydney Runkle>right.

00:34:55.500 --> 00:34:55.620
<v Sydney Runkle>Exactly.

00:34:55.899 --> 00:34:57.300
<v Michael Kennedy>It's not just that we need things,

00:34:57.600 --> 00:34:57.880
<v Michael Kennedy>I'm sure.

00:34:57.960 --> 00:34:58.020
<v Michael Kennedy>Yeah.

00:34:58.260 --> 00:34:58.440
<v Michael Kennedy>Somehow.

00:34:58.660 --> 00:34:59.440
<v Sydney Runkle>You might also note,

00:34:59.600 --> 00:35:02.579
<v Sydney Runkle>like if you're using kind of the latest and greatest models like Astra

00:35:02.600 --> 00:35:04.420
<v Sydney Runkle>or Opus 5.5,

00:35:04.600 --> 00:35:07.760
<v Sydney Runkle>like they are really heavy on the code writing,

00:35:08.040 --> 00:35:10.040
<v Sydney Runkle>like in your Claude Code session.

00:35:10.190 --> 00:35:12.060
<v Sydney Runkle>If you're looking at like the tools that it's calling,

00:35:12.260 --> 00:35:14.340
<v Sydney Runkle>it's no longer like read file, write file.

00:35:14.520 --> 00:35:15.300
<v Sydney Runkle>It's like bash,

00:35:15.480 --> 00:35:15.540
<v Sydney Runkle>bash,

00:35:15.780 --> 00:35:16.180
<v Sydney Runkle>bash with,

00:35:16.460 --> 00:35:18.260
<v Sydney Runkle>you know, all these like complex scripts and things.

00:35:18.820 --> 00:35:20.220
<v Sydney Runkle>So definitely plays into that as well.

00:35:20.300 --> 00:35:23.000
<v Michael Kennedy>Yeah, cool. Or you'll see a Python dash C and some giant string.

00:35:23.320 --> 00:35:25.740
<v Calvin Hendryx-Parker>Which I don't like because then it makes me kind of approve it.

00:35:25.900 --> 00:35:29.480
<v Calvin Hendryx-Parker>I think the harnesses need to grow some more Python native tools.

00:35:29.930 --> 00:35:31.260
<v Calvin Hendryx-Parker>So they just call those naturally.

00:35:31.620 --> 00:35:33.120
<v Michael Kennedy>Yeah, then I can just call eval. It'll be all fine.

00:35:33.160 --> 00:35:34.680
<v Calvin Hendryx-Parker>I mean, look at what we're doing already.

00:35:36.440 --> 00:35:40.760
<v Sydney Runkle>My one interesting kind of observability note here is like,

00:35:41.060 --> 00:35:46.180
<v Sydney Runkle>or I guess I'm curious why you would prefer for them to call more like Python native tools.

00:35:46.580 --> 00:35:49.080
<v Calvin Hendryx-Parker>I think mostly for the reporting aspect of it.

00:35:49.120 --> 00:35:52.360
<v Calvin Hendryx-Parker>I've been using agents view as a tool to report on my sessions

00:35:52.500 --> 00:35:54.980
<v Calvin Hendryx-Parker>to kind of evaluate how well I'm performing.

00:35:55.120 --> 00:35:58.420
<v Calvin Hendryx-Parker>I'm performing with the agent to get better output.

00:35:58.700 --> 00:36:08.260
<v Calvin Hendryx-Parker>So I watch and when I see 85% of the session was just bash tool calls, I'm like, I wish it kind of knew more granularly what those things were at a glance.

00:36:08.860 --> 00:36:09.800
<v Calvin Hendryx-Parker>So I like this.

00:36:10.370 --> 00:36:12.000
<v Calvin Hendryx-Parker>Michael just brought that up on the agents feed.io.

00:36:12.680 --> 00:36:15.580
<v Calvin Hendryx-Parker>It is really interesting to kind of analyze how you're doing.

00:36:16.050 --> 00:36:18.740
<v Calvin Hendryx-Parker>You now are feeding back into the human part of this,

00:36:19.180 --> 00:36:22.600
<v Calvin Hendryx-Parker>how we can interoperate more natively with these tools.

00:36:22.840 --> 00:36:25.660
<v Sydney Runkle>This is like definitely connected to what I think about a lot.

00:36:26.000 --> 00:36:26.240
<v Sydney Runkle>I think,

00:36:26.530 --> 00:36:30.600
<v Sydney Runkle>I don't know if it needs to be like specific tools that are attached to the agent

00:36:30.790 --> 00:36:33.540
<v Sydney Runkle>that are like more discreet, like Python operations.

00:36:33.810 --> 00:36:36.100
<v Sydney Runkle>But I do think having like observability into like,

00:36:36.300 --> 00:36:37.780
<v Sydney Runkle>is this thing operating efficiently?

00:36:38.100 --> 00:36:41.740
<v Sydney Runkle>Is that like a result of its structure or of my like,

00:36:41.920 --> 00:36:43.380
<v Sydney Runkle>am I doing a bad job prompting it

00:36:43.440 --> 00:36:43.940
<v Sydney Runkle>for this task?

00:36:44.010 --> 00:36:46.440
<v Sydney Runkle>Or is it like not well equipped to handle this task?

00:36:46.600 --> 00:36:49.460
<v Calvin Hendryx-Parker>Like this one will give you a grade on your context window usage.

00:36:50.020 --> 00:36:53.940
<v Calvin Hendryx-Parker>And it'll score you on like bad behaviors and point them out.

00:36:54.040 --> 00:36:54.620
<v Michael Kennedy>AgentP is great.

00:36:54.660 --> 00:36:55.880
<v Reuven Lerner>This is totally new to me.

00:36:55.960 --> 00:36:57.300
<v Reuven Lerner>and this is amazing looking.

00:36:57.560 --> 00:36:59.440
<v Michael Kennedy>We're in serious danger of going down the hole

00:36:59.710 --> 00:37:01.300
<v Michael Kennedy>and having a too long of a show.

00:37:01.979 --> 00:37:03.140
<v Michael Kennedy>But Agent's View is amazing.

00:37:03.620 --> 00:37:04.860
<v Michael Kennedy>Calvin and I kind of discovered it

00:37:04.860 --> 00:37:06.120
<v Michael Kennedy>at the same time on Python Bytes.

00:37:06.560 --> 00:37:08.700
<v Michael Kennedy>And I think you got it set this way as well,

00:37:08.820 --> 00:37:10.280
<v Michael Kennedy>but I've got it set up where there's a

00:37:10.940 --> 00:37:12.620
<v Michael Kennedy>daemon server sort of version

00:37:12.690 --> 00:37:13.920
<v Michael Kennedy>so I can view it from the web.

00:37:14.260 --> 00:37:15.000
<v Michael Kennedy>But more importantly,

00:37:15.560 --> 00:37:15.780
<v Michael Kennedy>normally,

00:37:16.180 --> 00:37:17.960
<v Michael Kennedy>if you install it, it just works on your one machine.

00:37:18.400 --> 00:37:19.240
<v Michael Kennedy>But I've got my Mac Mini,

00:37:19.420 --> 00:37:20.160
<v Michael Kennedy>I've got my Mac Studio,

00:37:20.320 --> 00:37:20.920
<v Michael Kennedy>I've got my MacBook.

00:37:21.300 --> 00:37:24.100
<v Michael Kennedy>I want a holistic view of all the AI things that I've done.

00:37:24.480 --> 00:37:28.660
<v Michael Kennedy>And so you can get them all to push to some central little Postgres Docker container.

00:37:29.100 --> 00:37:31.780
<v Michael Kennedy>And then you get this view over of everything.

00:37:32.120 --> 00:37:35.620
<v Calvin Hendryx-Parker>I have that set up so all my machines feed into that one database.

00:37:35.960 --> 00:37:38.240
<v Calvin Hendryx-Parker>And so I get a holistic view of all my AI usage.

00:37:38.480 --> 00:37:43.740
<v Michael Kennedy>And Reuben, the most scary part is it shows you the cost of tokens if you did it all on true cost,

00:37:43.980 --> 00:37:44.620
<v Michael Kennedy>which is...

00:37:44.660 --> 00:37:47.000
<v Sydney Runkle>I fear we do need another podcast for this.

00:37:47.140 --> 00:37:48.280
<v Sydney Runkle>This is super interesting.

00:37:48.560 --> 00:37:49.240
<v Michael Kennedy>Y'all do some research.

00:37:49.340 --> 00:37:51.160
<v Michael Kennedy>We might just circle back in a few weeks.

00:37:52.160 --> 00:37:52.480
<v Michael Kennedy>Okay,

00:37:52.760 --> 00:37:55.140
<v Michael Kennedy>so I thought we had nothing to say about uv other than just,

00:37:55.300 --> 00:37:56.180
<v Michael Kennedy>yeah, you're right, Michael.

00:37:56.340 --> 00:37:56.880
<v Michael Kennedy>We all agree.

00:37:57.340 --> 00:37:57.680
<v Michael Kennedy>Web frameworks.

00:37:58.340 --> 00:38:00.680
<v Michael Kennedy>Sebastian was supposed to be here, but he couldn't make it.

00:38:00.900 --> 00:38:06.000
<v Michael Kennedy>So maybe we can start with FastAPI to sort of shout out his little project.

00:38:06.380 --> 00:38:07.120
<v Michael Kennedy>Have you all heard of this?

00:38:07.280 --> 00:38:08.160
<v Calvin Hendryx-Parker>I've heard of FastAPI.

00:38:08.280 --> 00:38:10.400
<v Calvin Hendryx-Parker>I actually just gave a talk about it at DjangoCon.

00:38:10.680 --> 00:38:19.380
<v Calvin Hendryx-Parker>So Frank Wiles and I got up on stage and compared what using Django with, say, Django Ninja would be like compared to FastAPI and maybe when one's better for another.

00:38:20.020 --> 00:38:21.780
<v Calvin Hendryx-Parker>FastAPI is definitely still faster.

00:38:21.880 --> 00:38:24.660
<v Calvin Hendryx-Parker>but not by like a huge, huge amount.

00:38:25.400 --> 00:38:26.400
<v Calvin Hendryx-Parker>There's definitely instances

00:38:26.660 --> 00:38:28.700
<v Calvin Hendryx-Parker>where this is the better framework to reach for

00:38:29.240 --> 00:38:30.440
<v Calvin Hendryx-Parker>if you've got specific use cases

00:38:30.700 --> 00:38:31.920
<v Calvin Hendryx-Parker>because you don't have to bring along

00:38:32.040 --> 00:38:34.000
<v Calvin Hendryx-Parker>a whole big surface area

00:38:34.140 --> 00:38:36.180
<v Calvin Hendryx-Parker>of all the awesomeness that Django gives you.

00:38:36.520 --> 00:38:39.060
<v Calvin Hendryx-Parker>So we use both and we pick and choose

00:38:39.260 --> 00:38:41.640
<v Calvin Hendryx-Parker>which one fits the task best.

00:38:41.820 --> 00:38:43.080
<v Calvin Hendryx-Parker>If you have something that may grow

00:38:43.180 --> 00:38:43.700
<v Calvin Hendryx-Parker>into something bigger,

00:38:44.180 --> 00:38:45.680
<v Calvin Hendryx-Parker>Django Pi may be a better place to start.

00:38:46.300 --> 00:38:47.780
<v Calvin Hendryx-Parker>If you've got some quick and dirty,

00:38:47.880 --> 00:38:50.960
<v Calvin Hendryx-Parker>you need to get good quality APIs up

00:38:50.980 --> 00:38:52.780
<v Calvin Hendryx-Parker>for some specific use case.

00:38:53.300 --> 00:38:55.260
<v Calvin Hendryx-Parker>I use FastAPI for some personal projects like that

00:38:55.390 --> 00:38:57.360
<v Calvin Hendryx-Parker>because it's just, I wanted a quick way,

00:38:57.780 --> 00:39:02.060
<v Calvin Hendryx-Parker>the tooling around FastAPI and the skills that he provides.

00:39:02.200 --> 00:39:05.740
<v Calvin Hendryx-Parker>So Sebastian's also very big into library skills

00:39:05.850 --> 00:39:06.900
<v Calvin Hendryx-Parker>as his other repository,

00:39:07.680 --> 00:39:10.260
<v Calvin Hendryx-Parker>where he's built a package to produce skills

00:39:10.580 --> 00:39:11.900
<v Calvin Hendryx-Parker>for other open source packages,

00:39:12.460 --> 00:39:14.520
<v Calvin Hendryx-Parker>which means that this has a really rich set of skills

00:39:14.740 --> 00:39:16.380
<v Calvin Hendryx-Parker>that your agent can use when coding

00:39:16.810 --> 00:39:18.940
<v Calvin Hendryx-Parker>to be very effective on the best practices

00:39:19.200 --> 00:39:20.240
<v Calvin Hendryx-Parker>for how to use FastAPI.

00:39:20.400 --> 00:39:23.920
<v Calvin Hendryx-Parker>So he's approaching it from an AI-native coding perspective

00:39:24.060 --> 00:39:26.360
<v Calvin Hendryx-Parker>that this should be used with those harnesses

00:39:26.780 --> 00:39:29.800
<v Calvin Hendryx-Parker>and you'll get hopefully best practice quality code out of it.

00:39:29.860 --> 00:39:31.020
<v Michael Kennedy>We've got to make sure that we keep going

00:39:31.300 --> 00:39:33.300
<v Michael Kennedy>because at the end of our list,

00:39:33.340 --> 00:39:36.140
<v Michael Kennedy>I have a documentation system that is AI-native

00:39:36.140 --> 00:39:38.920
<v Michael Kennedy>and I absolutely think is underappreciated.

00:39:39.320 --> 00:39:39.640
<v Michael Kennedy>But to me,

00:39:39.800 --> 00:39:42.020
<v Michael Kennedy>FastAPI is not about fast performance.

00:39:42.580 --> 00:39:45.080
<v Michael Kennedy>It's like fast development of doing things right

00:39:45.180 --> 00:39:48.940
<v Michael Kennedy>and comprehensively with Pydantic and OpenAPI

00:39:48.960 --> 00:39:52.440
<v Michael Kennedy>on all those different things that it brings and validation.

00:39:52.760 --> 00:39:54.160
<v Calvin Hendryx-Parker>I mean, if that's your true concern,

00:39:54.530 --> 00:39:56.600
<v Calvin Hendryx-Parker>I think you'd be really pleased with Django Ninja.

00:39:57.000 --> 00:39:58.580
<v Calvin Hendryx-Parker>You can basically change one import

00:39:58.920 --> 00:40:00.560
<v Calvin Hendryx-Parker>and the code looks almost identical

00:40:00.780 --> 00:40:02.760
<v Calvin Hendryx-Parker>from a FastAPI project to a Django Ninja project.

00:40:03.600 --> 00:40:07.100
<v Calvin Hendryx-Parker>So I'll still put in a big plug for Django in this case.

00:40:07.320 --> 00:40:09.720
<v Michael Kennedy>100% Django is on this list, I think.

00:40:09.820 --> 00:40:11.020
<v Michael Kennedy>I want to hand this off to Sydney

00:40:11.170 --> 00:40:13.300
<v Michael Kennedy>because I think those two things that you brought up, Calvin,

00:40:13.680 --> 00:40:16.740
<v Michael Kennedy>both have a central pillar and that's Pydantic,

00:40:17.220 --> 00:40:18.800
<v Michael Kennedy>which I know you've done a lot with.

00:40:18.860 --> 00:40:25.240
<v Sydney Runkle>I actually was first using Django and trying to get Pydantic to work well with it.

00:40:25.390 --> 00:40:28.060
<v Sydney Runkle>When I first interacted with Pydantic open source,

00:40:28.270 --> 00:40:29.800
<v Sydney Runkle>I had used Pydantic previously,

00:40:30.460 --> 00:40:36.300
<v Sydney Runkle>but that's really how I got my open source start and then started using FastAPI very soon after that.

00:40:36.370 --> 00:40:37.540
<v Sydney Runkle>This was years and years ago,

00:40:37.700 --> 00:40:45.440
<v Sydney Runkle>but I think Pydantic has filled a gap that Python had in terms of it's not a strongly typed language.

00:40:45.760 --> 00:40:48.240
<v Sydney Runkle>And there's a lot of challenges that come along with that.

00:40:48.620 --> 00:40:53.740
<v Sydney Runkle>And so it's kind of this bridge into like, if you would like to opt into more strongly typed things,

00:40:54.260 --> 00:40:56.960
<v Sydney Runkle>then you can use Pydantic for data modeling and validation.

00:40:57.640 --> 00:41:00.540
<v Sydney Runkle>And it makes sense that it's kind of the backbone of FastAPI,

00:41:00.720 --> 00:41:04.240
<v Sydney Runkle>just in that you need kind of structured data for requests and responses,

00:41:04.420 --> 00:41:05.760
<v Sydney Runkle>which are really like the bread and butter there.

00:41:06.180 --> 00:41:13.340
<v Sydney Runkle>And it's really exciting to see how Pydantic was first, I think really first popularized probably through FastAPI.

00:41:13.790 --> 00:41:23.600
<v Sydney Runkle>And then has really been further popularized with the emergence of LLMs because they also kind of need a bridge into like more structured data, right?

00:41:23.740 --> 00:41:27.380
<v Sydney Runkle>Like LLMs produce text and Pydantic is kind of the bridge back into like,

00:41:27.720 --> 00:41:32.940
<v Sydney Runkle>let's validate that data and turn it into a predictable model that we can then use in code driven applications.

00:41:33.920 --> 00:41:35.940
<v Sydney Runkle>Here I am again on my like AI rant,

00:41:36.180 --> 00:41:36.820
<v Sydney Runkle>but yeah.

00:41:36.960 --> 00:41:38.080
<v Michael Kennedy>There's some other angles as well.

00:41:38.110 --> 00:41:39.960
<v Michael Kennedy>I think I want to save them for later.

00:41:40.030 --> 00:41:40.720
<v Michael Kennedy>But yeah, I think this,

00:41:40.940 --> 00:41:43.720
<v Michael Kennedy>I think Pidantic fits very well with AI things.

00:41:44.060 --> 00:41:44.620
<v Michael Kennedy>So interesting.

00:41:45.160 --> 00:41:45.380
<v Michael Kennedy>Pat,

00:41:45.700 --> 00:41:47.520
<v Michael Kennedy>what's the web story from your world?

00:41:47.530 --> 00:41:53.100
<v Pat Decker>I typically end up using Flask for anything at work just because there's so much source

00:41:53.210 --> 00:41:59.240
<v Pat Decker>out there that the LLMs have ingested and can easily spit something out that works.

00:41:59.700 --> 00:42:01.620
<v Pat Decker>And for me, it's more quick and dirty.

00:42:02.100 --> 00:42:05.900
<v Pat Decker>an end user application that faces customers or anything like that.

00:42:06.130 --> 00:42:07.060
<v Pat Decker>For personal projects,

00:42:07.170 --> 00:42:10.400
<v Pat Decker>I use Robyn and I know that you kind of evaluated Robyn.

00:42:11.120 --> 00:42:12.500
<v Pat Decker>What, what interested me is it's very

00:42:12.740 --> 00:42:18.200
<v Pat Decker>flask like and written in Rust and supposed to be multi-threaded.

00:42:18.560 --> 00:42:20.960
<v Pat Decker>And I found it to be very usable

00:42:21.120 --> 00:42:21.340
<v Pat Decker>anyway.

00:42:21.670 --> 00:42:23.240
<v Pat Decker>A couple of things bit me where the,

00:42:23.670 --> 00:42:25.640
<v Pat Decker>there's not near as much code out there for the

00:42:25.660 --> 00:42:27.320
<v Pat Decker>the language models to look at.

00:42:27.580 --> 00:42:27.700
<v Pat Decker>So,

00:42:27.880 --> 00:42:27.980
<v Pat Decker>uh,

00:42:28.360 --> 00:42:28.480
<v Pat Decker>um,

00:42:28.800 --> 00:42:31.940
<v Pat Decker>somehow you have to herd your agent to,

00:42:32.180 --> 00:42:35.540
<v Michael Kennedy>to write the correct code. I have a whole AI section, but I don't know if we're even going

00:42:35.540 --> 00:42:38.080
<v Michael Kennedy>to be able to get to it because we're just going down this little edge on each one,

00:42:38.200 --> 00:42:39.640
<v Michael Kennedy>which I think is very interesting.

00:42:40.100 --> 00:42:41.520
<v Michael Kennedy>But one thing I've been doing for projects,

00:42:41.860 --> 00:42:47.220
<v Michael Kennedy>especially like Robyn and others that are not as well-known is I will literally download the

00:42:47.400 --> 00:42:48.000
<v Michael Kennedy>entire repo,

00:42:48.260 --> 00:42:49.500
<v Michael Kennedy>which often has the documentation.

00:42:50.200 --> 00:42:52.420
<v Michael Kennedy>And then I'll open up a Claude Code session.

00:42:55.220 --> 00:42:55.620
<v Michael Kennedy>I'll

00:42:55.640 --> 00:42:57.320
<v Michael Kennedy>documentation and the quick starts,

00:42:57.960 --> 00:43:02.500
<v Michael Kennedy>ground it in the code and generate me a skill or some kind of

00:43:02.780 --> 00:43:07.420
<v Michael Kennedy>thing that I can then give to my Claude Code or whatever on the project I'm actually trying to

00:43:07.510 --> 00:43:12.940
<v Michael Kennedy>build with this and have it kind of create a self-teaching thing and say, you always use the

00:43:13.000 --> 00:43:16.440
<v Michael Kennedy>Robyn agent for building this because you don't know it well enough or something along those lines,

00:43:16.540 --> 00:43:18.760
<v Michael Kennedy>which sounds a little bit like what Sebastian was doing.

00:43:19.200 --> 00:43:20.800
<v Michael Kennedy>And that's been very successful for me.

00:43:21.140 --> 00:43:23.480
<v Reuven Lerner>Reuben. So I don't do that much web stuff.

00:43:23.850 --> 00:43:26.460
<v Reuven Lerner>And for a long time when I did, it was just like, well,

00:43:26.510 --> 00:43:29.200
<v Reuven Lerner>throw something together with Flask just because small,

00:43:29.640 --> 00:43:29.820
<v Reuven Lerner>simple,

00:43:30.090 --> 00:43:31.180
<v Reuven Lerner>I didn't need all the overhead of

00:43:31.300 --> 00:43:31.480
<v Reuven Lerner>Django.

00:43:32.180 --> 00:43:32.360
<v Reuven Lerner>Lately,

00:43:32.920 --> 00:43:34.420
<v Reuven Lerner>when I've been doing web stuff,

00:43:34.720 --> 00:43:36.480
<v Reuven Lerner>like the back end of the practice system I have

00:43:36.560 --> 00:43:38.040
<v Reuven Lerner>on my site,

00:43:38.260 --> 00:43:41.600
<v Reuven Lerner>I ended up using FastAPI and that's fine too.

00:43:41.880 --> 00:43:43.500
<v Reuven Lerner>But I tend to be sort of just neutral

00:43:43.720 --> 00:43:48.900
<v Reuven Lerner>on this in part because it plays an important but small role in the applications that I'm running.

00:43:49.200 --> 00:43:50.440
<v Reuven Lerner>FastAPI works fantastic.

00:43:51.010 --> 00:43:53.260
<v Reuven Lerner>And the fact that there's a ton, a ton of, you were saying,

00:43:53.720 --> 00:43:54.820
<v Reuven Lerner>like Argya says, Pat was saying,

00:43:55.130 --> 00:43:59.980
<v Reuven Lerner>the fact there's a ton of existing code out there in both Flask and in FastAPI,

00:44:00.310 --> 00:44:01.040
<v Reuven Lerner>and for that matter in Django,

00:44:01.240 --> 00:44:03.860
<v Reuven Lerner>means that the LLMs are very good at generating and working with it.

00:44:03.920 --> 00:44:05.260
<v Michael Kennedy>I'm on Team Flask as well.

00:44:05.820 --> 00:44:09.120
<v Michael Kennedy>Most of my web apps are Flask, but I also have some FastAPI things.

00:44:09.460 --> 00:44:10.760
<v Michael Kennedy>All right, we got to keep, go ahead.

00:44:10.920 --> 00:44:16.360
<v Calvin Hendryx-Parker>One sad moment there is I wish Pyramid would have made a bigger go and become more prominent.

00:44:16.400 --> 00:44:22.340
<v Calvin Hendryx-Parker>I really enjoyed the Pyramid framework, but sadly, it's not an option today, really.

00:44:22.480 --> 00:44:22.840
<v Michael Kennedy>I agree.

00:44:22.980 --> 00:44:25.540
<v Michael Kennedy>I was a believer and longtime user of Pyramid.

00:44:25.920 --> 00:44:29.020
<v Michael Kennedy>All right, let's move on here just for the sake of time.

00:44:29.480 --> 00:44:31.880
<v Michael Kennedy>I'm going to skip a couple and let's talk type hints.

00:44:32.400 --> 00:44:32.800
<v Michael Kennedy>Type hints,

00:44:33.100 --> 00:44:34.940
<v Michael Kennedy>to type hint or not to type hint.

00:44:35.100 --> 00:44:36.520
<v Michael Kennedy>That is the type question.

00:44:36.760 --> 00:44:38.300
<v Calvin Hendryx-Parker>Well, I think Sydney needs to kick off this one.

00:44:38.500 --> 00:44:39.000
<v Michael Kennedy>Yes, exactly.

00:44:39.140 --> 00:44:40.640
<v Sydney Runkle>Yeah, I'm smiling over here.

00:44:41.060 --> 00:44:41.240
<v Sydney Runkle>Yeah,

00:44:41.600 --> 00:44:41.820
<v Sydney Runkle>TY.

00:44:42.360 --> 00:44:42.640
<v Sydney Runkle>Hi,

00:44:42.900 --> 00:44:43.020
<v Sydney Runkle>TY.

00:44:43.360 --> 00:44:44.700
<v Sydney Runkle>I don't know what people prefer.

00:44:45.000 --> 00:44:46.480
<v Michael Kennedy>I asked Charlie and he said ty.

00:44:46.840 --> 00:44:47.000
<v Sydney Runkle>Okay,

00:44:47.210 --> 00:44:47.340
<v Sydney Runkle>great.

00:44:47.620 --> 00:44:48.120
<v Michael Kennedy>Because I'm like,

00:44:48.360 --> 00:44:48.480
<v Michael Kennedy>Charlie,

00:44:49.020 --> 00:44:49.780
<v Michael Kennedy>we need some help here.

00:44:49.780 --> 00:44:50.980
<v Michael Kennedy>You can't just leave this hanging.

00:44:50.990 --> 00:44:52.020
<v Michael Kennedy>You got to tell us how to say it.

00:44:52.020 --> 00:44:52.420
<v Michael Kennedy>He said ty.

00:44:52.680 --> 00:44:53.940
<v Sydney Runkle>TY is excellent.

00:44:54.180 --> 00:44:57.600
<v Sydney Runkle>I obviously am a big fan of the tools from the Astral team.

00:44:58.020 --> 00:45:00.600
<v Sydney Runkle>Not surprising given my tenure at Pydantic,

00:45:00.860 --> 00:45:04.280
<v Sydney Runkle>but I'm very big on like typed code when possible.

00:45:04.390 --> 00:45:10.520
<v Sydney Runkle>I think the Python core team has also done a ton of work to make expressing types clearly

00:45:11.000 --> 00:45:12.300
<v Sydney Runkle>and well in Python,

00:45:12.670 --> 00:45:14.440
<v Sydney Runkle>like much easier even without Pydantic.

00:45:14.460 --> 00:45:18.740
<v Sydney Runkle>And it's super exciting now with like ty that type checking can be so fast.

00:45:19.200 --> 00:45:20.000
<v Sydney Runkle>And I think,

00:45:20.360 --> 00:45:26.460
<v Sydney Runkle>you know, where developers used to view typing things as like maybe a pain or like more boilerplate E agents are like,

00:45:26.780 --> 00:45:27.880
<v Sydney Runkle>take a lot of that load off.

00:45:27.920 --> 00:45:29.740
<v Sydney Runkle>So I think the more we can do this, the better.

00:45:30.200 --> 00:45:30.280
<v Sydney Runkle>Yeah,

00:45:30.600 --> 00:45:31.760
<v Sydney Runkle>no surprising opinions for me.

00:45:31.840 --> 00:45:32.860
<v Michael Kennedy>No, I kind of expected that.

00:45:32.940 --> 00:45:33.220
<v Michael Kennedy>That's great.

00:45:33.400 --> 00:45:33.520
<v Calvin Hendryx-Parker>Yeah,

00:45:33.700 --> 00:45:34.980
<v Calvin Hendryx-Parker>I'm probably on the other side of that.

00:45:35.000 --> 00:45:40.500
<v Calvin Hendryx-Parker>I mean, I recognize the value of type hints and typing for the LLMs and the harnesses, etc.

00:45:40.920 --> 00:45:41.440
<v Calvin Hendryx-Parker>and IDEs.

00:45:42.300 --> 00:45:46.340
<v Calvin Hendryx-Parker>But one of the things that brought me to Python the language was the stay out of your way,

00:45:46.740 --> 00:45:48.200
<v Calvin Hendryx-Parker>get stuff done quickly,

00:45:48.620 --> 00:45:49.600
<v Calvin Hendryx-Parker>efficiency of the language.

00:45:50.100 --> 00:45:56.460
<v Calvin Hendryx-Parker>I feel like that came with the duck typing and the use of white space as a meaningful piece where I wasn't writing.

00:45:57.000 --> 00:46:00.100
<v Calvin Hendryx-Parker>One of the things that always bugged me about other languages was a lot of the ASCII art,

00:46:00.380 --> 00:46:05.820
<v Calvin Hendryx-Parker>the hash rockets and yada yada stuff that Python never brought to the table and kept clean.

00:46:06.260 --> 00:46:07.780
<v Calvin Hendryx-Parker>And so when I code,

00:46:07.940 --> 00:46:09.740
<v Calvin Hendryx-Parker>if I ever hand code anything,

00:46:09.960 --> 00:46:11.800
<v Calvin Hendryx-Parker>I'm not using type hints typically.

00:46:12.420 --> 00:46:25.240
<v Calvin Hendryx-Parker>Although if I'm using the AIs and the harnesses, I want them to do that because I want to have that determinism when the code is running through tests and catching those kinds of those classes of bugs before they even run.

00:46:25.720 --> 00:46:26.740
<v Calvin Hendryx-Parker>So I'm for it.

00:46:26.950 --> 00:46:29.040
<v Calvin Hendryx-Parker>I just that's not why I came to Python.

00:46:29.280 --> 00:46:30.040
<v Michael Kennedy>You'll stay anyway,

00:46:30.300 --> 00:46:31.180
<v Michael Kennedy>but that's not why you're here.

00:46:31.190 --> 00:46:32.000
<v Calvin Hendryx-Parker>I will stay anyway.

00:46:32.280 --> 00:46:32.620
<v Calvin Hendryx-Parker>I'm here.

00:46:32.860 --> 00:46:33.180
<v Calvin Hendryx-Parker>I'm here.

00:46:33.340 --> 00:46:33.940
<v Calvin Hendryx-Parker>I'm not going anywhere.

00:46:34.250 --> 00:46:34.960
<v Calvin Hendryx-Parker>I love the language.

00:46:35.560 --> 00:46:38.160
<v Calvin Hendryx-Parker>And I'm glad it's still an option.

00:46:38.410 --> 00:46:40.180
<v Calvin Hendryx-Parker>Like it's, I'm not forced to use it.

00:46:40.430 --> 00:46:41.220
<v Calvin Hendryx-Parker>Like there are other languages

00:46:41.310 --> 00:46:42.960
<v Calvin Hendryx-Parker>where you can't even code in the language

00:46:43.070 --> 00:46:45.960
<v Calvin Hendryx-Parker>without touching that aspect of the syntax.

00:46:46.270 --> 00:46:48.200
<v Calvin Hendryx-Parker>And I'm glad Python still allows me

00:46:48.280 --> 00:46:50.040
<v Calvin Hendryx-Parker>to write what I love about it.

00:46:50.100 --> 00:46:51.160
<v Michael Kennedy>Pat Rubin, what do you think?

00:46:51.380 --> 00:46:51.920
<v Pat Decker>Yeah, with DevOps,

00:46:52.600 --> 00:46:54.240
<v Pat Decker>it's mostly single file scripts.

00:46:54.480 --> 00:46:58.020
<v Pat Decker>So I don't type in any of those side projects.

00:46:58.520 --> 00:47:00.080
<v Pat Decker>There's heavy AI involved there.

00:47:00.360 --> 00:47:01.260
<v Pat Decker>So usually I do.

00:47:01.400 --> 00:47:03.600
<v Pat Decker>And some of those may end up being public at some point.

00:47:03.780 --> 00:47:05.460
<v Pat Decker>So it makes sense to type in those.

00:47:05.660 --> 00:47:05.740
<v Michael Kennedy>Yeah.

00:47:05.750 --> 00:47:09.020
<v Michael Kennedy>And even if you don't ask it, a lot of times AI just does it anyway.

00:47:09.240 --> 00:47:10.160
<v Reuven Lerner>I'm kind of like Calvin,

00:47:10.520 --> 00:47:14.220
<v Reuven Lerner>where I grew up as like a dynamic language kind of guy,

00:47:14.880 --> 00:47:14.980
<v Reuven Lerner>sort

00:47:14.980 --> 00:47:15.260
<v Reuven Lerner>of saying,

00:47:15.460 --> 00:47:15.540
<v Reuven Lerner>oh,

00:47:15.780 --> 00:47:16.980
<v Reuven Lerner>come on, all these types,

00:47:17.290 --> 00:47:18.900
<v Reuven Lerner>like, really,

00:47:19.130 --> 00:47:20.180
<v Reuven Lerner>do we need it?

00:47:20.460 --> 00:47:23.340
<v Reuven Lerner>And then like, you're getting to the, well, I guess if you're not a good programmer, then

00:47:23.390 --> 00:47:23.780
<v Reuven Lerner>you need it.

00:47:24.000 --> 00:47:25.600
<v Reuven Lerner>But if you're like a cool person,

00:47:25.780 --> 00:47:25.880
<v Reuven Lerner>like,

00:47:26.040 --> 00:47:27.500
<v Reuven Lerner>you know, smart person like me, then you don't.

00:47:27.760 --> 00:47:29.840
<v Reuven Lerner>And then I started to discover a few different things.

00:47:30.200 --> 00:47:31.060
<v Reuven Lerner>Like, first of all,

00:47:31.220 --> 00:47:32.040
<v Reuven Lerner>if you have a team,

00:47:32.580 --> 00:47:36.220
<v Reuven Lerner>not everyone on the team is necessarily schooled in everything,

00:47:36.720 --> 00:47:37.720
<v Reuven Lerner>reading all the documentation,

00:47:38.040 --> 00:47:39.620
<v Reuven Lerner>reading all the API stuff, on, on, on.

00:47:39.720 --> 00:47:40.480
<v Reuven Lerner>They can make mistakes.

00:47:41.260 --> 00:47:45.740
<v Reuven Lerner>And also the people coming from Staggly type languages feel like there's a safety net.

00:47:45.940 --> 00:47:48.000
<v Reuven Lerner>Like they like the fact that there's typing there.

00:47:48.460 --> 00:47:50.920
<v Reuven Lerner>And so all this together makes me feel like,

00:47:51.120 --> 00:47:51.220
<v Reuven Lerner>yeah,

00:47:51.600 --> 00:47:52.740
<v Reuven Lerner>I'm all in now.

00:47:52.960 --> 00:47:54.920
<v Reuven Lerner>Maybe not in necessarily writing my own code directly,

00:47:55.440 --> 00:47:56.940
<v Reuven Lerner>but very much so in LLMs.

00:47:56.960 --> 00:47:59.100
<v Reuven Lerner>I think it's a great way to keep them on a short leash.

00:47:59.640 --> 00:48:02.420
<v Reuven Lerner>And I recently and embarrassingly recently realized,

00:48:02.580 --> 00:48:02.720
<v Reuven Lerner>okay,

00:48:02.880 --> 00:48:03.620
<v Reuven Lerner>type-ins are great,

00:48:04.000 --> 00:48:04.520
<v Reuven Lerner>but Pydantic

00:48:04.700 --> 00:48:05.120
<v Reuven Lerner>is amazing.

00:48:05.480 --> 00:48:10.520
<v Reuven Lerner>It's like the difference between having the Postgres columns being typed and having the

00:48:10.760 --> 00:48:13.240
<v Reuven Lerner>check sort of stuff on them saying,

00:48:13.420 --> 00:48:14.860
<v Reuven Lerner>well, it must be greater than zero, it must be less

00:48:14.900 --> 00:48:15.200
<v Reuven Lerner>than this.

00:48:15.580 --> 00:48:18.940
<v Reuven Lerner>You can really, really tighten the belt there on what's acceptable.

00:48:19.500 --> 00:48:20.440
<v Reuven Lerner>I think it's a great thing.

00:48:20.620 --> 00:48:26.020
<v Reuven Lerner>And kudos also to the core developers who have managed to do this so elegantly and allow

00:48:26.020 --> 00:48:28.840
<v Reuven Lerner>you to sort of slide into it at whatever pace is good for you.

00:48:28.940 --> 00:48:29.540
<v Michael Kennedy>I'm a big fan.

00:48:29.880 --> 00:48:30.300
<v Michael Kennedy>as well.

00:48:30.570 --> 00:48:32.160
<v Michael Kennedy>I think I grew up different.

00:48:32.680 --> 00:48:34.500
<v Michael Kennedy>I learned my first language was C++,

00:48:34.710 --> 00:48:35.400
<v Michael Kennedy>then I did a bunch of

00:48:35.490 --> 00:48:35.880
<v Michael Kennedy>C#.

00:48:36.380 --> 00:48:40.780
<v Michael Kennedy>So even type Python looks clean to my eyes of what I have been doing.

00:48:41.460 --> 00:48:41.940
<v Michael Kennedy>But that said,

00:48:41.970 --> 00:48:44.540
<v Michael Kennedy>I think there's a time and place for these kinds of things.

00:48:44.720 --> 00:48:45.760
<v Michael Kennedy>So maybe on some sort of,

00:48:45.900 --> 00:48:46.680
<v Michael Kennedy>if you have a package,

00:48:46.960 --> 00:48:50.800
<v Michael Kennedy>all the public functions should be typed so that things using it can verify

00:48:51.000 --> 00:48:53.900
<v Michael Kennedy>they're doing it correctly. But that doesn't necessarily mean the internals have to be

00:48:54.400 --> 00:48:56.000
<v Michael Kennedy>completely blown up with typends everywhere,

00:48:56.260 --> 00:48:56.360
<v Michael Kennedy>right?

00:48:56.580 --> 00:48:57.580
<v Michael Kennedy>It's there to communicate.

00:48:57.940 --> 00:48:58.839
<v Michael Kennedy>I originally

00:48:58.860 --> 00:49:01.840
<v Michael Kennedy>really love the idea because it makes editors work better.

00:49:02.200 --> 00:49:03.540
<v Michael Kennedy>You see a squiggly, that probably

00:49:03.660 --> 00:49:06.740
<v Michael Kennedy>means you're doing something wrong and it can figure that out where otherwise it wouldn't.

00:49:07.020 --> 00:49:10.900
<v Michael Kennedy>But these days it's also keeping AIs in line as some of y'all have mentioned.

00:49:11.180 --> 00:49:11.700
<v Michael Kennedy>So yeah,

00:49:12.060 --> 00:49:12.600
<v Michael Kennedy>for the,

00:49:13.000 --> 00:49:14.880
<v Michael Kennedy>when I have any of my agents do anything,

00:49:15.140 --> 00:49:15.420
<v Michael Kennedy>I'm like,

00:49:15.700 --> 00:49:16.360
<v Michael Kennedy>you're going to run ty,

00:49:16.900 --> 00:49:17.700
<v Michael Kennedy>you're going to run ruff,

00:49:18.080 --> 00:49:22.120
<v Michael Kennedy>you're going to run the tests and you don't call yourself done or you don't consider it correct

00:49:22.400 --> 00:49:24.380
<v Michael Kennedy>until all those things pass, you know, and just keep them,

00:49:24.800 --> 00:49:26.060
<v Michael Kennedy>keep it all zero warnings.

00:49:26.840 --> 00:49:26.920
<v Michael Kennedy>Like,

00:49:27.140 --> 00:49:27.360
<v Michael Kennedy>you know,

00:49:27.720 --> 00:49:28.500
<v Michael Kennedy>I think that's the way.

00:49:28.680 --> 00:49:41.300
<v Reuven Lerner>I sometimes say to people that the things we can tell agents and LLMs are the sorts of things that would get us like written up for being of abusive behavior as a manager if we were to do all these things to the software developers on our team.

00:49:41.840 --> 00:49:42.640
<v Reuven Lerner>But if like,

00:49:42.880 --> 00:49:48.020
<v Reuven Lerner>you know, they can't complain or they'll call me a genius even after I forced to do this stuff,

00:49:48.360 --> 00:49:49.120
<v Reuven Lerner>then I'm all in.

00:49:49.120 --> 00:49:56.000
<v Calvin Hendryx-Parker>I think some people would have considered themselves to be pedantic about these kinds of errors and not clean them up.

00:49:56.260 --> 00:49:57.560
<v Calvin Hendryx-Parker>And so I feel like this is a good thing.

00:49:57.810 --> 00:50:00.540
<v Michael Kennedy>We're not going to get through a whole list, but I think an important section.

00:50:01.100 --> 00:50:04.960
<v Michael Kennedy>Well, OK, let's just go go round really quick and ran out of this type checking one.

00:50:05.460 --> 00:50:06.600
<v Michael Kennedy>What type checker do you use?

00:50:06.900 --> 00:50:08.220
<v Michael Kennedy>Is it all mypy or what are we doing?

00:50:08.430 --> 00:50:11.960
<v Reuven Lerner>I use mypy because I'm embarrassingly old school with this.

00:50:12.030 --> 00:50:14.660
<v Reuven Lerner>But when you sent out the email for this for this episode,

00:50:15.050 --> 00:50:15.940
<v Reuven Lerner>I was like, oh, let me look at

00:50:16.020 --> 00:50:16.520
<v Reuven Lerner>these other things.

00:50:16.990 --> 00:50:17.080
<v Reuven Lerner>Oh,

00:50:17.400 --> 00:50:18.400
<v Reuven Lerner>I should try something else.

00:50:18.580 --> 00:50:19.260
<v Reuven Lerner>They're much faster.

00:50:19.819 --> 00:50:22.300
<v Reuven Lerner>So this episode alone might have changed my opinion on that.

00:50:22.490 --> 00:50:23.960
<v Sydney Runkle>TY for me used to be mypy.

00:50:24.820 --> 00:50:26.460
<v Pat Decker>mypy is the only thing that ends up in mine,

00:50:26.900 --> 00:50:27.880
<v Pat Decker>just due to the LLMs.

00:50:28.060 --> 00:50:28.480
<v Michael Kennedy>Yeah, they do.

00:50:28.600 --> 00:50:31.120
<v Michael Kennedy>They do bias towards it, but I tell it it's wrong.

00:50:31.380 --> 00:50:33.780
<v Michael Kennedy>I tell it it has to use ty as well.

00:50:33.960 --> 00:50:36.260
<v Calvin Hendryx-Parker>I was looking at what our current opinions on this are.

00:50:36.360 --> 00:50:37.820
<v Calvin Hendryx-Parker>My guess is we are on TIE.

00:50:38.360 --> 00:50:41.540
<v Calvin Hendryx-Parker>I'm not writing any of the production code for any of our customers at this moment.

00:50:41.740 --> 00:50:43.580
<v Calvin Hendryx-Parker>So I'm not the best person to ask about that.

00:50:43.600 --> 00:50:45.940
<v Calvin Hendryx-Parker>I know we were on mypy long ago.

00:50:46.320 --> 00:50:51.440
<v Calvin Hendryx-Parker>So my guess is because of the way the team bubbles up new technologies into our standards,

00:50:51.740 --> 00:50:56.540
<v Calvin Hendryx-Parker>best practices like in scaf our little scaffolding tool that's the place where i'd go look to see

00:50:56.540 --> 00:51:00.860
<v Michael Kennedy>what we're using i'd really love ty but also gotta give a little shout i got my pyrefly shirt on from

00:51:00.960 --> 00:51:06.960
<v Michael Kennedy>having the pyrefly team on so i wore that for for today i think pyrefly is really neat as well and

00:51:07.220 --> 00:51:12.100
<v Michael Kennedy>it's also rust also super fast got some good extensions and plugins and stuff as well okay

00:51:12.360 --> 00:51:16.280
<v Michael Kennedy>a couple more bits we got to talk about databases i kind of felt like this was going to be

00:51:16.440 --> 00:51:20.519
<v Michael Kennedy>straightforward but not as straightforward as uv and uv was not straightforward so let's go love

00:51:20.540 --> 00:51:20.900
<v Reuven Lerner>Postgres,

00:51:21.180 --> 00:51:21.520
<v Reuven Lerner>period.

00:51:21.960 --> 00:51:24.380
<v Sydney Runkle>Yeah, I think I start off with Postgres for a lot of things.

00:51:24.600 --> 00:51:25.240
<v Sydney Runkle>But again,

00:51:25.520 --> 00:51:25.820
<v Sydney Runkle>here's my

00:51:25.950 --> 00:51:26.060
<v Sydney Runkle>like,

00:51:26.560 --> 00:51:27.660
<v Sydney Runkle>Sydney's talking about AI again,

00:51:27.860 --> 00:51:31.580
<v Sydney Runkle>take a lot of the artifacts that agents end up producing are

00:51:32.080 --> 00:51:36.040
<v Sydney Runkle>really large. And so like some mix of like Postgres and then blob storage,

00:51:36.280 --> 00:51:36.560
<v Sydney Runkle>I think,

00:51:37.090 --> 00:51:39.920
<v Sydney Runkle>often works well for the applications that I'm thinking about.

00:51:40.170 --> 00:51:41.880
<v Sydney Runkle>I saw you had on the list DuckDB.

00:51:42.500 --> 00:51:44.420
<v Sydney Runkle>I think DuckDB is very entertaining.

00:51:44.970 --> 00:51:47.299
<v Sydney Runkle>I think a lot of what I've been thinking about with databases

00:51:47.320 --> 00:51:50.580
<v Sydney Runkle>recently is like how data models are like back in vogue, right?

00:51:50.760 --> 00:51:50.880
<v Sydney Runkle>Like,

00:51:51.080 --> 00:51:51.960
<v Sydney Runkle>are we actually structuring

00:51:52.180 --> 00:51:56.640
<v Sydney Runkle>data correctly so that like agents or other things can appropriately like query at scale?

00:51:56.820 --> 00:51:57.460
<v Calvin Hendryx-Parker>Postgres over here,

00:51:57.730 --> 00:51:58.060
<v Calvin Hendryx-Parker>for sure.

00:51:58.430 --> 00:52:00.000
<v Calvin Hendryx-Parker>Although I'll give a shout out to the ZODB.

00:52:00.200 --> 00:52:01.040
<v Calvin Hendryx-Parker>It served me well for

00:52:01.070 --> 00:52:01.500
<v Calvin Hendryx-Parker>many decades.

00:52:01.860 --> 00:52:03.260
<v Pat Decker>Yeah, production is all Postgres,

00:52:03.580 --> 00:52:04.440
<v Pat Decker>almost all.

00:52:04.730 --> 00:52:06.560
<v Pat Decker>I do use SQLite and some DuckDB.

00:52:07.160 --> 00:52:10.180
<v Pat Decker>One of my side projects use lightning memory mapped database.

00:52:10.880 --> 00:52:12.700
<v Pat Decker>Thought it sounded cool and it serves

00:52:12.730 --> 00:52:13.100
<v Pat Decker>the purpose.

00:52:13.580 --> 00:52:15.200
<v Pat Decker>So it was something different to try.

00:52:15.360 --> 00:52:16.660
<v Michael Kennedy>I'm going to give a shout out to Team Mongo.

00:52:16.720 --> 00:52:18.940
<v Michael Kennedy>I'm a big fan of MongoDB operationally.

00:52:19.000 --> 00:52:20.300
<v Michael Kennedy>It's just so easy.

00:52:20.560 --> 00:52:22.380
<v Michael Kennedy>Almost all the migrations we run are like,

00:52:22.380 --> 00:52:24.040
<v Michael Kennedy>we need to add this column or something.

00:52:24.260 --> 00:52:28.340
<v Michael Kennedy>And it's just the way that your code just in the database kind of just grow together.

00:52:28.520 --> 00:52:29.640
<v Michael Kennedy>I really like that.

00:52:30.100 --> 00:52:30.260
<v Michael Kennedy>Though,

00:52:30.780 --> 00:52:34.940
<v Michael Kennedy>I am on an absolute kick for small embedded databases.

00:52:35.440 --> 00:52:36.140
<v Michael Kennedy>So like Sydney,

00:52:36.540 --> 00:52:36.880
<v Michael Kennedy>DuckDB,

00:52:37.460 --> 00:52:37.980
<v Michael Kennedy>SQLite,

00:52:38.040 --> 00:52:40.820
<v Michael Kennedy>I think there's actually some really interesting things you can do.

00:52:41.000 --> 00:52:45.299
<v Michael Kennedy>SQLite has gotten a lot of work to make it more production ready

00:52:45.320 --> 00:52:46.320
<v Michael Kennedy>with the write-ahead log

00:52:46.350 --> 00:52:47.440
<v Michael Kennedy>and certain connection modes.

00:52:47.600 --> 00:52:48.620
<v Michael Kennedy>It's got durability.

00:52:49.359 --> 00:52:51.060
<v Michael Kennedy>Failure's got cross-process locking.

00:52:51.520 --> 00:52:53.400
<v Michael Kennedy>If what you're doing lives on a single machine,

00:52:53.820 --> 00:52:56.160
<v Michael Kennedy>it's hard to think like an embedded database

00:52:56.350 --> 00:52:57.100
<v Michael Kennedy>works a lot of the time.

00:52:57.260 --> 00:52:58.440
<v Calvin Hendryx-Parker>I would agree with that on DuckDB,

00:52:58.680 --> 00:53:01.060
<v Calvin Hendryx-Parker>especially the JSON features that it has.

00:53:01.290 --> 00:53:02.460
<v Calvin Hendryx-Parker>If you're dealing with a lot of that

00:53:02.990 --> 00:53:03.700
<v Calvin Hendryx-Parker>type of data structure,

00:53:04.090 --> 00:53:05.440
<v Calvin Hendryx-Parker>you can build quick little apps

00:53:05.620 --> 00:53:06.900
<v Calvin Hendryx-Parker>to like little CLI tools

00:53:07.120 --> 00:53:08.260
<v Calvin Hendryx-Parker>for messing around with that.

00:53:08.510 --> 00:53:09.240
<v Calvin Hendryx-Parker>And it's super fast.

00:53:09.380 --> 00:53:09.660
<v Reuven Lerner>It's funny.

00:53:09.930 --> 00:53:12.360
<v Reuven Lerner>I have not used DuckDB as a database.

00:53:12.880 --> 00:53:15.580
<v Reuven Lerner>I've used it as a query system on pandas,

00:53:15.960 --> 00:53:20.100
<v Reuven Lerner>where it is stockingly faster than pandas itself on pandas data.

00:53:20.500 --> 00:53:21.520
<v Reuven Lerner>I don't know how they pull that trick,

00:53:21.800 --> 00:53:22.720
<v Reuven Lerner>but kudos to them.

00:53:22.860 --> 00:53:23.440
<v Michael Kennedy>It's really impressive.

00:53:23.550 --> 00:53:25.900
<v Michael Kennedy>I just had the Duck Lake folks on,

00:53:26.280 --> 00:53:27.980
<v Michael Kennedy>and this is also super interesting,

00:53:28.220 --> 00:53:28.340
<v Michael Kennedy>basically,

00:53:28.890 --> 00:53:33.260
<v Michael Kennedy>like ultra scalable stuff by just putting a bunch of Parquet files on S3

00:53:33.820 --> 00:53:37.040
<v Michael Kennedy>with a DuckDB or even something like SQLite or Postgres

00:53:37.260 --> 00:53:38.960
<v Michael Kennedy>as a sort of metadata front end.

00:53:39.250 --> 00:53:40.300
<v Michael Kennedy>It's very interesting, these things.

00:53:40.840 --> 00:53:41.120
<v Michael Kennedy>All right.

00:53:41.420 --> 00:53:42.720
<v Michael Kennedy>Well, what have we got left here?

00:53:42.780 --> 00:53:44.960
<v Michael Kennedy>Let's jump down to docs.

00:53:45.480 --> 00:53:46.180
<v Michael Kennedy>Where are we with docs?

00:53:46.800 --> 00:53:49.220
<v Michael Kennedy>And I'm talking not wikis for people,

00:53:49.460 --> 00:53:50.440
<v Michael Kennedy>but I've got a package,

00:53:50.670 --> 00:53:51.920
<v Michael Kennedy>a library framework,

00:53:52.370 --> 00:53:53.140
<v Michael Kennedy>and I want people to use it.

00:53:53.460 --> 00:53:55.160
<v Michael Kennedy>So I went to FastAPI.

00:53:55.750 --> 00:53:56.340
<v Michael Kennedy>I pulled that up.

00:53:56.500 --> 00:53:57.960
<v Michael Kennedy>What is powering their docs there?

00:53:58.260 --> 00:54:01.240
<v Michael Kennedy>This is actually quite a bit going on in this space these days.

00:54:01.740 --> 00:54:02.620
<v Michael Kennedy>There's been MK docs.

00:54:02.760 --> 00:54:04.900
<v Michael Kennedy>I always said it, but I think make docs.

00:54:04.970 --> 00:54:05.280
<v Michael Kennedy>I don't know.

00:54:05.490 --> 00:54:06.580
<v Michael Kennedy>I used to call it MK docs.

00:54:06.700 --> 00:54:07.480
<v Calvin Hendryx-Parker>I say MK docs.

00:54:07.640 --> 00:54:08.260
<v Calvin Hendryx-Parker>That's what we use.

00:54:08.460 --> 00:54:09.260
<v Calvin Hendryx-Parker>We use MK docs.

00:54:09.540 --> 00:54:09.940
<v Calvin Hendryx-Parker>I love it.

00:54:10.040 --> 00:54:12.280
<v Michael Kennedy>There's actually been some stuff going on with MK docs,

00:54:12.420 --> 00:54:15.540
<v Michael Kennedy>And I can't remember, there was like going to be a big rewrite, but a lot of the plugins

00:54:15.600 --> 00:54:16.480
<v Michael Kennedy>are kind of working.

00:54:16.880 --> 00:54:20.560
<v Michael Kennedy>So one of the two things that I put for this list is Zensical,

00:54:21.160 --> 00:54:22.140
<v Michael Kennedy>which is a really interesting

00:54:22.720 --> 00:54:26.960
<v Michael Kennedy>next version of docs from the material for make docs folks.

00:54:27.400 --> 00:54:30.000
<v Michael Kennedy>And I just looked and that's what they've got for FastAPI.

00:54:30.140 --> 00:54:31.100
<v Michael Kennedy>That's what Sebastian has.

00:54:31.560 --> 00:54:32.480
<v Michael Kennedy>So that's very,

00:54:33.080 --> 00:54:34.760
<v Michael Kennedy>very interesting as a project.

00:54:34.880 --> 00:54:37.600
<v Michael Kennedy>I think I believe it's Rust based if I remember correctly.

00:54:37.800 --> 00:54:39.480
<v Michael Kennedy>So obviously got that speed,

00:54:39.880 --> 00:54:40.300
<v Michael Kennedy>speed element.

00:54:40.620 --> 00:54:42.220
<v Michael Kennedy>Another one that I thought was interesting,

00:54:42.520 --> 00:54:44.580
<v Michael Kennedy>I also had these folks on from Posit,

00:54:44.800 --> 00:54:45.800
<v Michael Kennedy>is Great Docs.

00:54:46.220 --> 00:54:48.680
<v Michael Kennedy>Have you all heard of Great Docs? I feel like this doesn't get nearly enough love.

00:54:48.820 --> 00:54:51.020
<v Pat Decker>I saw that on the show and I thought it looked awesome,

00:54:51.400 --> 00:54:54.640
<v Pat Decker>although I don't have much use for it because I'm not publishing packages,

00:54:54.810 --> 00:54:55.640
<v Pat Decker>but it does look awesome.

00:54:55.860 --> 00:55:00.660
<v Calvin Hendryx-Parker>I still love these things for my own personal experience. I want beautiful rendered versions of my docs.

00:55:00.940 --> 00:55:05.420
<v Calvin Hendryx-Parker>So that's why even for a personal project, I still may use something like MK Docs or Great Docs.

00:55:05.480 --> 00:55:09.180
<v Michael Kennedy>I had all these little projects and I finally broke down. I'm like, they need something more than a readme.

00:55:09.400 --> 00:55:11.040
<v Michael Kennedy>And I migrated them all to great docs.

00:55:11.420 --> 00:55:12.920
<v Michael Kennedy>And I'll show you one more thing in a second

00:55:13.440 --> 00:55:14.840
<v Michael Kennedy>to tie back to Sydney's comment earlier.

00:55:15.020 --> 00:55:15.740
<v Michael Kennedy>But go ahead, Ruben.

00:55:15.820 --> 00:55:16.440
<v Reuven Lerner>No, I was just going to say,

00:55:16.640 --> 00:55:18.240
<v Reuven Lerner>like so many of the things I've never heard about,

00:55:18.420 --> 00:55:19.380
<v Reuven Lerner>like great docs, I was thinking,

00:55:19.540 --> 00:55:21.280
<v Reuven Lerner>oh, I wonder if it's related to great tables.

00:55:21.400 --> 00:55:22.780
<v Reuven Lerner>And I see it's also from people at Posit.

00:55:22.940 --> 00:55:25.500
<v Michael Kennedy>It's the same people who did great tables as well.

00:55:25.620 --> 00:55:25.980
<v Michael Kennedy>Yeah, yeah.

00:55:26.120 --> 00:55:27.060
<v Michael Kennedy>And they've thought a lot about it.

00:55:27.420 --> 00:55:28.940
<v Michael Kennedy>This one is kind of in your world, right?

00:55:29.040 --> 00:55:30.220
<v Michael Kennedy>This is a data science company.

00:55:30.400 --> 00:55:32.300
<v Michael Kennedy>This is Posit and folks.

00:55:32.740 --> 00:55:34.600
<v Sydney Runkle>Mintlify's done some pretty good work

00:55:34.720 --> 00:55:35.720
<v Sydney Runkle>on like baking docs,

00:55:36.240 --> 00:55:36.640
<v Sydney Runkle>agent native,

00:55:36.940 --> 00:55:37.400
<v Sydney Runkle>which is cool.

00:55:37.980 --> 00:55:40.080
<v Sydney Runkle>And so like on our LangChain docs, for example,

00:55:40.520 --> 00:55:42.320
<v Sydney Runkle>we have like copy,

00:55:43.040 --> 00:55:43.200
<v Sydney Runkle>you know,

00:55:43.360 --> 00:55:44.680
<v Sydney Runkle>MCP URL,

00:55:45.050 --> 00:55:45.240
<v Sydney Runkle>like

00:55:45.560 --> 00:55:48.600
<v Sydney Runkle>copy this as markdown for an LLM,

00:55:49.000 --> 00:55:49.800
<v Sydney Runkle>like on all the pages.

00:55:50.050 --> 00:55:54.800
<v Sydney Runkle>And they also have components like copy this prompt that you can give to your LLM to use

00:55:54.800 --> 00:55:55.400
<v Sydney Runkle>this page.

00:55:55.570 --> 00:55:59.020
<v Sydney Runkle>I think Pydantic has also moved over to Mintlify now.

00:55:59.190 --> 00:56:00.160
<v Sydney Runkle>We used to be on MkDocs.

00:56:00.300 --> 00:56:00.980
<v Michael Kennedy>It's inconclusive.

00:56:01.340 --> 00:56:02.200
<v Michael Kennedy>The tests are inconclusive.

00:56:02.380 --> 00:56:03.260
<v Sydney Runkle>But LangChain docs,

00:56:03.660 --> 00:56:05.040
<v Sydney Runkle>yeah, definitely on Mintlify.

00:56:05.500 --> 00:56:07.440
<v Sydney Runkle>Love the agent's focus.

00:56:07.900 --> 00:56:09.700
<v Michael Kennedy>One of the things I like about great docs,

00:56:10.100 --> 00:56:11.720
<v Michael Kennedy>which I did not know about Mitlefy.

00:56:11.960 --> 00:56:15.260
<v Michael Kennedy>So this may well be right in the same area.

00:56:15.840 --> 00:56:19.320
<v Michael Kennedy>But I'll go over here to my website because I have concrete examples.

00:56:19.580 --> 00:56:21.600
<v Michael Kennedy>So all my little libraries and they each,

00:56:21.880 --> 00:56:23.720
<v Michael Kennedy>we'll just go to the analytics one.

00:56:24.200 --> 00:56:26.520
<v Michael Kennedy>So you go over here and for each page,

00:56:27.100 --> 00:56:27.580
<v Michael Kennedy>let's say,

00:56:27.960 --> 00:56:28.320
<v Michael Kennedy>I don't know,

00:56:28.710 --> 00:56:31.240
<v Michael Kennedy>it has a skills section.

00:56:31.630 --> 00:56:35.620
<v Michael Kennedy>So it has a dedicated skill and you have multiple skills and it shows you how to install the skill.

00:56:35.700 --> 00:56:40.040
<v Michael Kennedy>just you know this is just great docs making this right like it sounds like mentlify does the same

00:56:40.160 --> 00:56:44.260
<v Michael Kennedy>thing you can write this but if you don't write anything it'll automatically do it and if you're

00:56:44.260 --> 00:56:50.560
<v Michael Kennedy>on any page like login async you can go up to the top and put instead of html md and it gives you a

00:56:50.700 --> 00:56:56.120
<v Michael Kennedy>markdown version so then all the ai agents that want to read your docs can just do.md you can

00:56:56.250 --> 00:57:02.499
<v Michael Kennedy>copy the page which copies it as markdown it's got you know llm.txt and txt full that it generates

00:57:02.520 --> 00:57:03.720
<v Michael Kennedy>I don't know. I just think this is super neat.

00:57:04.160 --> 00:57:05.960
<v Michael Kennedy>But it sounds like you're already doing something

00:57:06.180 --> 00:57:07.260
<v Michael Kennedy>similar with Mitlify,

00:57:07.440 --> 00:57:07.640
<v Michael Kennedy>which I,

00:57:08.000 --> 00:57:09.740
<v Michael Kennedy>like I said, this is the first I'm hearing of it. So it's cool.

00:57:09.940 --> 00:57:09.980
<v Sydney Runkle>Yeah.

00:57:10.160 --> 00:57:11.120
<v Michael Kennedy>All right. Let's round it out.

00:57:11.280 --> 00:57:14.260
<v Michael Kennedy>Last area before we are pretty much out of time,

00:57:14.400 --> 00:57:16.020
<v Michael Kennedy>but let's talk about hosting.

00:57:16.400 --> 00:57:17.860
<v Michael Kennedy>Talking hyperscalers,

00:57:18.020 --> 00:57:18.200
<v Michael Kennedy>AWS,

00:57:18.780 --> 00:57:19.160
<v Michael Kennedy>other things,

00:57:19.580 --> 00:57:20.200
<v Michael Kennedy>something smaller.

00:57:20.660 --> 00:57:21.120
<v Michael Kennedy>What do we

00:57:21.200 --> 00:57:22.480
<v Reuven Lerner>got? I just use DigitalOcean,

00:57:23.040 --> 00:57:23.640
<v Reuven Lerner>like super,

00:57:23.820 --> 00:57:24.640
<v Reuven Lerner>super simple droplets,

00:57:24.980 --> 00:57:25.980
<v Reuven Lerner>but I'm doing simple stuff.

00:57:26.260 --> 00:57:28.440
<v Reuven Lerner>I'm not a good example unless you have very small,

00:57:28.660 --> 00:57:29.080
<v Reuven Lerner>simple things.

00:57:29.340 --> 00:57:30.380
<v Michael Kennedy>I wouldn't undersell it. I think

00:57:30.420 --> 00:57:32.500
<v Michael Kennedy>DigitalOcean is really powerful.

00:57:32.780 --> 00:57:36.320
<v Michael Kennedy>And if you run your stuff in, say, Docker or whatever,

00:57:36.460 --> 00:57:37.740
<v Michael Kennedy>and you get a big server,

00:57:37.960 --> 00:57:39.600
<v Michael Kennedy>you can go a really long ways

00:57:40.320 --> 00:57:42.080
<v Michael Kennedy>by bringing your own stuff to the stack

00:57:42.240 --> 00:57:44.160
<v Michael Kennedy>instead of tying into a bunch of cloud services.

00:57:44.700 --> 00:57:44.960
<v Michael Kennedy>Certainly,

00:57:45.160 --> 00:57:47.360
<v Michael Kennedy>there's a lot less going on in terms of the console

00:57:47.580 --> 00:57:49.060
<v Michael Kennedy>compared to AWS or Azure or whatever.

00:57:49.220 --> 00:57:50.180
<v Calvin Hendryx-Parker>We're all in on containers.

00:57:50.640 --> 00:57:52.200
<v Calvin Hendryx-Parker>So if there's a way to run a container,

00:57:52.460 --> 00:57:54.620
<v Calvin Hendryx-Parker>which DigitalOcean has their app platform,

00:57:55.060 --> 00:57:57.020
<v Calvin Hendryx-Parker>which is kind of nice for throwing a container up

00:57:57.180 --> 00:57:58.399
<v Calvin Hendryx-Parker>and hooking it to a database

00:57:58.420 --> 00:58:00.660
<v Calvin Hendryx-Parker>and be able to run some quick little app.

00:58:00.890 --> 00:58:02.200
<v Calvin Hendryx-Parker>I've got kind of two modes of operation.

00:58:02.380 --> 00:58:04.840
<v Calvin Hendryx-Parker>I'll either be running like full-blown Kubernetes,

00:58:05.310 --> 00:58:08.040
<v Calvin Hendryx-Parker>whether we're using like Talos Linux giant cluster

00:58:08.380 --> 00:58:10.200
<v Calvin Hendryx-Parker>or using K3S in a single node

00:58:10.250 --> 00:58:12.860
<v Calvin Hendryx-Parker>to be able to orchestrate the container deployments.

00:58:13.260 --> 00:58:15.620
<v Calvin Hendryx-Parker>That's the real killer feature for me for Kubernetes

00:58:15.710 --> 00:58:18.840
<v Calvin Hendryx-Parker>is the control plane URL for releasing code

00:58:19.110 --> 00:58:20.860
<v Calvin Hendryx-Parker>without having to like shell into a box

00:58:21.040 --> 00:58:22.800
<v Calvin Hendryx-Parker>and clone or pull anything.

00:58:23.640 --> 00:58:24.920
<v Calvin Hendryx-Parker>And then on the other side,

00:58:25.130 --> 00:58:27.379
<v Calvin Hendryx-Parker>I really like, I've been using Cloudflare workers

00:58:27.840 --> 00:58:31.460
<v Calvin Hendryx-Parker>and Cloudflare API gateways to throw quick code up there.

00:58:31.570 --> 00:58:35.380
<v Calvin Hendryx-Parker>And now Python is a first-class citizen for Cloudflare workers.

00:58:36.030 --> 00:58:40.100
<v Calvin Hendryx-Parker>So I've been using it to slowly replace Zapier zaps

00:58:40.640 --> 00:58:45.140
<v Calvin Hendryx-Parker>for my specific use cases where Zapier had some oddities

00:58:45.420 --> 00:58:46.900
<v Calvin Hendryx-Parker>or hoops I had to jump through.

00:58:46.990 --> 00:58:49.120
<v Calvin Hendryx-Parker>I just coded something up and released it into Cloudflare.

00:58:49.260 --> 00:58:49.840
<v Michael Kennedy>That's very cool.

00:58:50.060 --> 00:58:51.760
<v Michael Kennedy>And foreshadowing, Alvin,

00:58:51.980 --> 00:58:57.040
<v Michael Kennedy>I'm having the Python Cloudflare worker team on podcasts in a few weeks.

00:58:57.220 --> 00:58:57.640
<v Calvin Hendryx-Parker>That's amazing.

00:58:57.780 --> 00:58:59.620
<v Michael Kennedy>Who else wants to chime in on this thing?

00:58:59.860 --> 00:59:02.720
<v Pat Decker>We use like 90 or more percent AWS.

00:59:03.480 --> 00:59:07.720
<v Pat Decker>And we've got multiple EKS clusters and an ECS cluster.

00:59:08.320 --> 00:59:09.800
<v Pat Decker>So lots of containerization.

00:59:10.200 --> 00:59:14.880
<v Pat Decker>We do have some workloads and authentication over on the Azure platform.

00:59:15.380 --> 00:59:21.340
<v Pat Decker>And then we sort of backed into Oracle Cloud because they purchased Zenedge several years ago.

00:59:21.460 --> 00:59:25.760
<v Pat Decker>And we use them as a kind of a CDN and they run a WAF for us.

00:59:26.020 --> 00:59:28.140
<v Michael Kennedy>You already talked about DigitalOcean.

00:59:28.360 --> 00:59:30.800
<v Michael Kennedy>That's right. I did DigitalOcean for a long time. I really like them.

00:59:30.980 --> 00:59:34.940
<v Michael Kennedy>I actually switched stuff over to Hetzner when they first came to the U.S.

00:59:35.160 --> 00:59:37.760
<v Michael Kennedy>and still running on them. And I think they're really interesting.

00:59:38.200 --> 00:59:38.600
<v Michael Kennedy>However,

00:59:39.340 --> 00:59:41.760
<v Michael Kennedy>this AI stuff has, I don't know if anyone else has noticed,

00:59:41.960 --> 00:59:45.360
<v Michael Kennedy>it's changed the pricing of hardware and certain things just a little bit.

00:59:45.640 --> 00:59:53.200
<v Michael Kennedy>So I have a, I have a eight core 16 gig server at Hetzner that I pay $35 a month for.

00:59:53.680 --> 00:59:55.500
<v Michael Kennedy>It's new price is $130.

00:59:56.140 --> 00:59:58.340
<v Michael Kennedy>So that's not just, oh, it's a little bit more.

00:59:58.760 --> 00:59:59.200
<v Michael Kennedy>So actually,

00:59:59.600 --> 01:00:01.840
<v Michael Kennedy>even for all the talk about Hetzner being cheap,

01:00:02.080 --> 01:00:03.940
<v Michael Kennedy>DigitalOcean now is a better dollar

01:00:04.010 --> 01:00:05.100
<v Michael Kennedy>for dollar deal.

01:00:05.370 --> 01:00:08.560
<v Michael Kennedy>You get a better deal on DigitalOcean than you do even on places like Hetzner.

01:00:08.800 --> 01:00:12.260
<v Michael Kennedy>So Hetzner, so shout out to DigitalOcean for staying true.

01:00:12.270 --> 01:00:12.800
<v Michael Kennedy>I think that's cool.

01:00:12.960 --> 01:00:15.200
<v Pat Decker>So Hensner is a dedicated box for you though.

01:00:15.300 --> 01:00:15.780
<v Pat Decker>Is that right?

01:00:16.319 --> 01:00:17.340
<v Michael Kennedy>Digitalization has a little bit more.

01:00:17.600 --> 01:00:19.580
<v Michael Kennedy>Like I think they have RDS and a few things,

01:00:19.780 --> 01:00:21.220
<v Michael Kennedy>but I didn't really care because I didn't use them.

01:00:21.280 --> 01:00:22.140
<v Michael Kennedy>I just have some of my own things,

01:00:22.540 --> 01:00:23.320
<v Michael Kennedy>which like I said,

01:00:23.580 --> 01:00:25.560
<v Michael Kennedy>maybe more embedded databases in the future.

01:00:25.660 --> 01:00:26.240
<v Michael Kennedy>We'll see about that.

01:00:26.320 --> 01:00:27.000
<v Michael Kennedy>It's going to be super interesting.

01:00:27.160 --> 01:00:28.380
<v Michael Kennedy>All right, let's close this out really quick.

01:00:28.780 --> 01:00:30.020
<v Michael Kennedy>We talked about AI a bunch,

01:00:30.140 --> 01:00:31.480
<v Michael Kennedy>but just go down the list,

01:00:31.600 --> 01:00:33.300
<v Michael Kennedy>go down the list of people,

01:00:33.480 --> 01:00:34.180
<v Michael Kennedy>not the list of tools,

01:00:34.520 --> 01:00:37.040
<v Michael Kennedy>and just give us your AI tooling thoughts real quick.

01:00:37.280 --> 01:00:37.480
<v Michael Kennedy>Calvin,

01:00:37.800 --> 01:00:38.180
<v Michael Kennedy>you go first.

01:00:38.340 --> 01:00:38.640
<v Michael Kennedy>You're at the top.

01:00:38.720 --> 01:00:40.780
<v Calvin Hendryx-Parker>Definitely Pi and Claude Code,

01:00:41.020 --> 01:00:41.500
<v Calvin Hendryx-Parker>mostly Pi.

01:00:41.840 --> 01:00:47.780
<v Calvin Hendryx-Parker>using typically the soul like whatever the one that just came out 6.1 I think it's the latest

01:00:48.260 --> 01:00:55.880
<v Calvin Hendryx-Parker>on OpenAI or I like Sonnet 5.5 for most things I find I get really annoyed when they default me to

01:00:55.880 --> 01:01:00.940
<v Calvin Hendryx-Parker>the latest opus and it starts just eating through tokens and I'm like what happened oh a new release

01:01:01.040 --> 01:01:05.060
<v Calvin Hendryx-Parker>came out so that's what I'm at I like I like Pi for that stuff with superpowers just to skills.

01:01:05.320 --> 01:01:11.159
<v Sydney Runkle>Sydney. There's so many cool tools I think generally just thinking more broadly about AI usage like

01:01:11.400 --> 01:01:13.080
<v Sydney Runkle>I think having a coding agent makes sense.

01:01:13.680 --> 01:01:14.880
<v Sydney Runkle>There's so many good ones.

01:01:15.190 --> 01:01:16.940
<v Sydney Runkle>I think having an agent in Slack

01:01:17.300 --> 01:01:18.120
<v Sydney Runkle>that you use,

01:01:18.280 --> 01:01:21.880
<v Sydney Runkle>having an agent in wherever you keep track of documents.

01:01:22.160 --> 01:01:22.660
<v Sydney Runkle>So for me,

01:01:22.820 --> 01:01:23.440
<v Sydney Runkle>that's Notion.

01:01:23.880 --> 01:01:27.700
<v Sydney Runkle>And then generally, I'm pretty bullish on MCPs and skills,

01:01:27.980 --> 01:01:29.460
<v Sydney Runkle>just because that's where you basically

01:01:29.870 --> 01:01:34.900
<v Sydney Runkle>for MCPs can connect your data and use cases, and then for skills can distill domain knowledge.

01:01:35.300 --> 01:01:37.840
<v Sydney Runkle>And then maybe the thing that I'm most excited about with agents,

01:01:38.250 --> 01:01:40.240
<v Sydney Runkle>both all of these categories,

01:01:40.320 --> 01:01:42.640
<v Sydney Runkle>is like improving them over time with memory.

01:01:42.920 --> 01:01:44.940
<v Sydney Runkle>So like making sure my coding agents

01:01:45.700 --> 01:01:46.880
<v Sydney Runkle>remember my specific preferences

01:01:47.200 --> 01:01:48.800
<v Sydney Runkle>and making sure my agents

01:01:49.300 --> 01:01:51.180
<v Sydney Runkle>that are helping me with like blog edits

01:01:52.040 --> 01:01:54.580
<v Sydney Runkle>distill information from previous like human reviewers,

01:01:54.880 --> 01:01:55.400
<v Sydney Runkle>things like that.

01:01:55.720 --> 01:01:58.760
<v Sydney Runkle>But a lot of my job now is sharing those ideas.

01:01:59.000 --> 01:02:00.060
<v Sydney Runkle>So if you want to know more,

01:02:00.480 --> 01:02:02.540
<v Sydney Runkle>the LangChain blog is a good place to start.

01:02:02.700 --> 01:02:04.980
<v Pat Decker>We've kind of settled on using DevNetwork

01:02:05.320 --> 01:02:07.519
<v Pat Decker>and what you said earlier

01:02:07.540 --> 01:02:11.320
<v Pat Decker>about changing all the LLMs on the backend,

01:02:12.060 --> 01:02:12.720
<v Pat Decker>that can be scary.

01:02:12.780 --> 01:02:14.720
<v Pat Decker>I usually let it decide automatically

01:02:15.040 --> 01:02:15.980
<v Pat Decker>which ones to use,

01:02:16.180 --> 01:02:18.760
<v Pat Decker>but we're trying to keep an eye on token spend.

01:02:19.140 --> 01:02:20.280
<v Pat Decker>So we'll have to take a look

01:02:20.280 --> 01:02:22.480
<v Pat Decker>at your analytics for that too.

01:02:22.880 --> 01:02:24.040
<v Pat Decker>I tend to use Kiro too.

01:02:24.360 --> 01:02:25.880
<v Pat Decker>I like to use VS Code locally,

01:02:26.460 --> 01:02:30.040
<v Pat Decker>but we're also spoiled with the public LLMs

01:02:30.140 --> 01:02:30.780
<v Pat Decker>that are so capable

01:02:30.980 --> 01:02:32.580
<v Pat Decker>that when I try to run something locally,

01:02:33.040 --> 01:02:34.200
<v Pat Decker>it's a little underwhelming.

01:02:34.920 --> 01:02:35.320
<v Michael Kennedy>Yeah,

01:02:35.520 --> 01:02:36.400
<v Reuven Lerner>as I mentioned earlier,

01:02:36.800 --> 01:02:40.300
<v Reuven Lerner>I've been using Claude Code for like 95% of what I do,

01:02:40.710 --> 01:02:41.820
<v Reuven Lerner>and I'm very happy with it.

01:02:42.070 --> 01:02:44.400
<v Reuven Lerner>I have played quite a bit with OpenCode as well.

01:02:44.780 --> 01:02:48.360
<v Reuven Lerner>I sometimes tell people I feel like Claude Code is like the Mac and OpenCode is like Linux,

01:02:48.660 --> 01:02:50.040
<v Reuven Lerner>where it's like instantly extensible,

01:02:50.300 --> 01:02:52.500
<v Reuven Lerner>but you have to spend a little more time with it and

01:02:52.780 --> 01:02:53.680
<v Reuven Lerner>configuring and so forth.

01:02:54.000 --> 01:02:57.140
<v Reuven Lerner>And Pi is one of these things that I keep saying, I really have to play with it because

01:02:57.360 --> 01:02:58.520
<v Reuven Lerner>everyone's saying great things about it.

01:02:58.720 --> 01:03:01.360
<v Reuven Lerner>So I really have to play with it because everyone's saying great things about it.

01:03:01.420 --> 01:03:01.640
<v Michael Kennedy>Awesome.

01:03:02.030 --> 01:03:02.780
<v Michael Kennedy>Well, for me also,

01:03:03.240 --> 01:03:06.760
<v Michael Kennedy>like Ruben, Claude Code, usually inside VS Code or something along

01:03:06.780 --> 01:03:13.340
<v Michael Kennedy>lines for my little personal automations i've been using a lot of glm 5 3 flash which i think is

01:03:13.460 --> 01:03:19.160
<v Michael Kennedy>actually super neat as well still not self-hostable but you know it's been running in other places that

01:03:19.160 --> 01:03:23.240
<v Michael Kennedy>are not not too expensive right you know 5 10 bucks a month something like super cool though

01:03:23.440 --> 01:03:31.340
<v Calvin Hendryx-Parker>well for the self-hosting models quin 3 8 26 b is incredibly capable and runs on most you know 32

01:03:31.940 --> 01:03:33.440
<v Calvin Hendryx-Parker>gig plus machines.

01:03:33.940 --> 01:03:34.020
<v Michael Kennedy>Awesome.

01:03:34.180 --> 01:03:35.300
<v Michael Kennedy>A GLM 5.3 flash,

01:03:35.520 --> 01:03:35.680
<v Michael Kennedy>I think,

01:03:35.800 --> 01:03:37.740
<v Michael Kennedy>is 750 gigs of RAM you need.

01:03:37.880 --> 01:03:39.920
<v Michael Kennedy>And the non-flash is like 1.5 terabytes

01:03:40.020 --> 01:03:40.300
<v Michael Kennedy>of RAM.

01:03:40.460 --> 01:03:41.820
<v Michael Kennedy>So not hosting those. I'll check out

01:03:41.920 --> 01:03:43.680
<v Michael Kennedy>the Quinn one. That's awesome. All right, everyone.

01:03:44.340 --> 01:03:45.860
<v Michael Kennedy>Thank you so much for being here. This has been

01:03:46.339 --> 01:03:46.980
<v Michael Kennedy>really interesting.

01:03:47.240 --> 01:03:47.940
<v Michael Kennedy>We didn't even

01:03:48.180 --> 01:03:49.180
<v Michael Kennedy>touch on a bunch of topics.

01:03:49.640 --> 01:03:49.960
<v Michael Kennedy>There's

01:03:50.120 --> 01:03:51.580
<v Michael Kennedy>so much to talk about, so much happening.

01:03:52.119 --> 01:03:53.600
<v Michael Kennedy>And you all have great

01:03:54.020 --> 01:03:54.120
<v Michael Kennedy>insight.

01:03:54.460 --> 01:03:55.600
<v Michael Kennedy>So thanks for being here. Thanks, Michael.

01:03:55.760 --> 01:03:56.080
<v Reuven Lerner>This was great.

01:03:56.340 --> 01:03:56.680
<v Reuven Lerner>Thanks so much.

01:03:56.940 --> 01:03:57.260
<v Sydney Runkle>Thank you.

01:03:58.880 --> 01:03:59.760
<v Michael Kennedy>This has been another

01:03:59.760 --> 01:04:01.020
<v Michael Kennedy>episode of Talk Python To Me.

01:04:01.290 --> 01:04:02.120
<v Michael Kennedy>Thank you to our sponsors.

01:04:02.330 --> 01:04:03.320
<v Michael Kennedy>Be sure to check out what they're

01:04:03.480 --> 01:04:05.180
<v Michael Kennedy>offering. It really helps support the show.

01:04:05.940 --> 01:04:07.740
<v Michael Kennedy>If you or your team needs to learn Python,

01:04:07.970 --> 01:04:13.820
<v Michael Kennedy>we have over 270 hours of beginner and advanced courses on topics ranging from complete beginners

01:04:14.090 --> 01:04:15.500
<v Michael Kennedy>to async code, Flask,

01:04:15.720 --> 01:04:15.920
<v Michael Kennedy>Django,

01:04:16.340 --> 01:04:16.900
<v Michael Kennedy>HTMX,

01:04:17.060 --> 01:04:18.720
<v Michael Kennedy>and even LLMs. Best of all,

01:04:18.940 --> 01:04:20.680
<v Michael Kennedy>there's no subscription in sight.

01:04:21.080 --> 01:04:22.840
<v Michael Kennedy>Browse the catalog at talkpython.fm.

01:04:23.640 --> 01:04:25.840
<v Michael Kennedy>And if you're not already subscribed to the show on

01:04:25.860 --> 01:04:26.900
<v Michael Kennedy>your favorite podcast player,

01:04:27.140 --> 01:04:28.160
<v Michael Kennedy>what are you waiting for?

01:04:28.980 --> 01:04:30.620
<v Michael Kennedy>Just search for Python in your podcast player.

01:04:30.730 --> 01:04:31.600
<v Michael Kennedy>We should be right at the top.

01:04:32.040 --> 01:04:34.800
<v Michael Kennedy>If you enjoyed that geeky rap song, you can download the full track.

01:04:35.030 --> 01:04:36.920
<v Michael Kennedy>The link is actually in your podcast blur show notes.

01:04:37.760 --> 01:04:38.380
<v Michael Kennedy>This is your host,

01:04:38.600 --> 01:04:39.080
<v Michael Kennedy>Michael Kennedy.

01:04:39.480 --> 01:04:40.540
<v Michael Kennedy>Thank you so much for listening.

01:04:40.750 --> 01:04:41.540
<v Michael Kennedy>I really appreciate it.

01:04:41.980 --> 01:04:42.680
<v Michael Kennedy>I'll see you next time.

01:04:54.320 --> 01:04:57.120
<v Speaker 6>I'm out.