UTSKRIFT 🔗
WEBVTT
00:00:00.020 --> 00:00:06.140
The most popular Python project you've probably never heard of has 258,000 GitHub stars and merged
00:00:06.280 --> 00:00:09.360
over 1,800 pull requests in a single week.
00:00:09.760 --> 00:00:13.260
It's Hermes, a self-hosted AI agent you program by just
00:00:13.500 --> 00:00:14.000
talking to it,
00:00:14.580 --> 00:00:17.740
and it never clocks out. It runs 24-7 on a box in your house,
00:00:17.920 --> 00:00:19.080
wakes up whenever
00:00:19.080 --> 00:00:21.780
you need it, keeps things like your YouTube channel in sync,
00:00:22.080 --> 00:00:23.900
and has your morning briefing ready for
00:00:24.040 --> 00:00:26.440
your up. Mine started with a few config files.
00:00:26.640 --> 00:00:27.200
A few months later,
00:00:27.420 --> 00:00:29.340
it's 16,000 files of skills,
00:00:29.460 --> 00:00:29.820
memories,
00:00:30.020 --> 00:00:31.580
and tools it built for itself.
00:00:31.940 --> 00:00:33.120
All the while, I wasn't watching it.
00:00:33.860 --> 00:00:37.060
Jeff Triplett joins me to explore this honestly weird,
00:00:37.280 --> 00:00:38.460
but kind of amazing world.
00:00:38.840 --> 00:00:39.060
And yes,
00:00:39.480 --> 00:00:41.360
Hermes has a few words for you too at the end.
00:00:41.700 --> 00:00:44.160
This is Talk Python To Me, episode 567,
00:00:44.560 --> 00:00:45.760
recorded October 6th,
00:00:46.200 --> 00:00:46.940
2026.
00:01:03.820 --> 00:01:08.140
Welcome to Talk Python To Me, the number one Python podcast for developers and data scientists.
00:01:08.660 --> 00:01:10.060
This is your host, Michael Kennedy.
00:01:10.240 --> 00:01:13.980
I'm a PSF fellow who's been coding for over 25 years.
00:01:14.500 --> 00:01:15.680
Let's connect on social media.
00:01:16.120 --> 00:01:18.320
You'll find me and Talk Python on Mastodon, Bluesky,
00:01:18.700 --> 00:01:19.140
and X.
00:01:19.390 --> 00:01:21.320
The social links are all in your show notes.
00:01:21.740 --> 00:01:24.680
You can find over 10 years of past episodes at
00:01:24.800 --> 00:01:25.600
Talk Python.fm.
00:01:25.780 --> 00:01:29.040
And if you want to be part of the show, you can join our recording live streams.
00:01:29.400 --> 00:01:33.260
That's right. We live stream the raw uncut version of each episode on YouTube.
00:01:33.920 --> 00:01:34.300
Just visit
00:01:34.440 --> 00:01:38.280
Talk Python.fm slash YouTube to see the schedule of upcoming events.
00:01:38.470 --> 00:01:39.620
Be sure to subscribe there and
00:01:39.630 --> 00:01:42.160
press the bell so you'll get notified anytime we're recording.
00:01:42.540 --> 00:01:43.820
Before we jump into the show,
00:01:43.860 --> 00:01:48.240
I want to just give a quick shout out to a new open source project that I released last week,
00:01:48.819 --> 00:01:49.740
Chameleon RS.
00:01:50.280 --> 00:01:51.960
It's the Chameleon template language,
00:01:52.200 --> 00:01:54.460
but modernized. I rewrote it in Rust.
00:01:54.780 --> 00:01:55.900
It's several times faster.
Load full transcript
00:01:56.170 --> 00:01:59.980
It comes with built-in partial support for things like HTMX,
00:02:00.260 --> 00:02:02.360
and it fully supports free-threaded Python.
00:02:02.950 --> 00:02:04.760
Plus, it extends the language for built-in
00:02:04.960 --> 00:02:05.440
markdown support.
00:02:06.280 --> 00:02:07.320
And because it's written in Rust,
00:02:07.580 --> 00:02:10.439
it's 50 times faster than the common Python
00:02:10.460 --> 00:02:11.940
Markdown libraries you're probably using.
00:02:12.220 --> 00:02:13.780
If you use the Chameleon language,
00:02:14.060 --> 00:02:14.820
you definitely want
00:02:14.820 --> 00:02:15.360
to check it out.
00:02:15.840 --> 00:02:18.680
Just go to mkennedy.codes.com.
00:02:19.020 --> 00:02:21.440
It's been powering Talk Python and the courses
00:02:21.620 --> 00:02:27.720
for a week now. The entire website is 20% faster and migrating is just an import statement and a
00:02:27.860 --> 00:02:28.720
single line of code.
00:02:29.060 --> 00:02:32.760
I hope many of you out there find some cool use cases for Chameleon RS.
00:02:33.920 --> 00:02:34.220
Hey, Jeff.
00:02:34.400 --> 00:02:34.860
Hey, Michael.
00:02:35.060 --> 00:02:36.760
Awesome to have you on Talk Python again.
00:02:37.020 --> 00:02:37.780
Yeah, I appreciate it.
00:02:39.940 --> 00:02:40.420
It's
00:02:40.440 --> 00:02:45.020
topic than Django this time, I guess. So that'll be fun to talk about Django AI and all the things.
00:02:45.200 --> 00:02:48.000
Yeah, we're going to do. I didn't know Django AI was a product.
00:02:48.200 --> 00:02:49.280
No, it's Django and AI.
00:02:49.680 --> 00:02:53.460
We're going to talk about some amazing stuff and it certainly does apply to Django, but it applies
00:02:53.900 --> 00:02:54.620
more broadly.
00:02:55.020 --> 00:02:58.440
I feel like this episode is a little bit more of a Tinkerer's episode,
00:02:59.260 --> 00:03:03.740
a hacker's in the original sense of hacking than maybe straight web development.
00:03:03.940 --> 00:03:04.340
What do you think?
00:03:04.520 --> 00:03:05.380
Yeah, I think so.
00:03:06.080 --> 00:03:07.800
Not sure how you want to get into it,
00:03:07.960 --> 00:03:10.400
but I know one of the topics we want
00:03:10.420 --> 00:03:12.240
And Hermes is an open source,
00:03:12.540 --> 00:03:13.820
self-hostable AI agent,
00:03:14.160 --> 00:03:15.580
which is probably a little different
00:03:15.780 --> 00:03:19.560
than how a lot of Python people are going to run applications and do stuff.
00:03:19.720 --> 00:03:22.080
Normally you're writing an application that you run locally,
00:03:22.240 --> 00:03:22.840
or maybe you're going to
00:03:22.840 --> 00:03:23.480
run it in the cloud.
00:03:23.840 --> 00:03:29.120
So you're looking at Python libraries where Hermes is kind of a server that you run and
00:03:29.180 --> 00:03:31.020
you can connect to it from your phone or desktop.
00:03:31.540 --> 00:03:35.940
And it just kind of does things for you that you tell it what to do or ask it to invent
00:03:36.100 --> 00:03:36.220
things.
00:03:37.200 --> 00:03:38.140
What's your experience with it?
00:03:38.300 --> 00:03:40.760
My experience is this is some wild, wild times.
00:03:40.940 --> 00:03:43.560
There's like really weird stuff and we're going to get into it.
00:03:43.640 --> 00:03:46.580
And it's going to be weird, but it's pretty fascinating.
00:03:47.020 --> 00:03:47.120
You know,
00:03:47.660 --> 00:03:48.300
everyone out there,
00:03:48.760 --> 00:03:49.640
I mean, as Mabel brought,
00:03:50.020 --> 00:03:55.740
almost everyone out there is experienced with agentic coding tools like Claude Code and Cursor.
00:03:56.060 --> 00:04:00.600
But I want to just take a moment and kind of really put this into the right box that it belongs in.
00:04:00.920 --> 00:04:02.060
Because this is very different.
00:04:02.640 --> 00:04:03.640
The word agent,
00:04:03.800 --> 00:04:04.420
agentic,
00:04:04.640 --> 00:04:06.500
all of these things is just thrown around all over the place.
00:04:06.960 --> 00:04:09.040
I don't know. Do you have a better term than agents?
00:04:09.630 --> 00:04:11.900
But it's a very different box than these coding agents.
00:04:12.260 --> 00:04:12.560
Yeah.
00:04:12.920 --> 00:04:16.920
I mean, I think it's a true agent in that it's always running and it does have a loop.
00:04:17.320 --> 00:04:20.200
And you can tell it what that loop is. So I think by default,
00:04:20.579 --> 00:04:23.320
Hermes wants to wake up like every 30 minutes in OpenClaw.
00:04:23.600 --> 00:04:26.960
But you can tell it like, I want you every day to do something for me.
00:04:27.280 --> 00:04:31.440
Like I have it do kind of a daily briefing where I've got two kids. I'm taking them to school.
00:04:31.820 --> 00:04:32.780
We live in Kansas.
00:04:33.100 --> 00:04:34.360
It could snow one day.
00:04:34.620 --> 00:04:36.080
It could be 100 degrees the next day.
00:04:36.400 --> 00:04:37.380
Usually not that close together.
00:04:37.940 --> 00:04:38.040
But,
00:04:38.320 --> 00:04:39.700
you know, like I have it look at the weather,
00:04:39.920 --> 00:04:40.500
look at the schedule.
00:04:41.000 --> 00:04:44.460
Tell me if I need to put my daughter who's four in a jacket or a coat.
00:04:45.020 --> 00:04:47.360
My son wants to wear shorts until it's 30 degrees outside.
00:04:47.680 --> 00:04:49.520
So I at least need to get him in a jacket or coat,
00:04:49.680 --> 00:04:50.240
depending on the time.
00:04:50.560 --> 00:04:51.600
Want to know if it's going to rain.
00:04:51.920 --> 00:04:53.000
Kind of want to know what's on my schedule.
00:04:53.360 --> 00:04:54.140
Also want to know,
00:04:54.380 --> 00:04:54.540
like,
00:04:54.800 --> 00:04:57.160
is there going to be a football game or basketball game?
00:04:57.420 --> 00:04:59.860
Because the University of Kansas is three blocks from my house.
00:05:00.140 --> 00:05:02.260
I kind of need to know what to prepare for in my neighborhood.
00:05:02.670 --> 00:05:04.060
Like,
should I drop my car off early?
00:05:04.380 --> 00:05:05.880
Want to know if the kids have sporting events.
00:05:06.130 --> 00:05:10.180
And it does a beautiful job just kind of creating this like daily report for me every day that
00:05:10.180 --> 00:05:14.560
I can just read very quickly in the morning and just kind of have a feel for what's going to go on.
00:05:14.820 --> 00:05:17.380
And then you get into lots of absurd things too,
00:05:17.680 --> 00:05:19.780
like having to do transcriptions from videos
00:05:20.340 --> 00:05:22.540
or having to follow up with you or remind you.
00:05:22.700 --> 00:05:24.580
Kind of like with the phone where you say,
00:05:24.830 --> 00:05:27.620
you know, Siri, give me a reminder at X time a day.
00:05:28.000 --> 00:05:29.980
But this actually works well compared to like,
00:05:30.330 --> 00:05:31.820
I think what we try to do with our phones.
00:05:32.020 --> 00:05:32.240
Yeah.
00:05:32.630 --> 00:05:35.880
The reminders actually used to work pretty well, but with the new Siri,
00:05:36.140 --> 00:05:37.260
they're just so much.
00:05:37.760 --> 00:05:40.100
The new Siri is just not a, it's not a go for me.
00:05:40.520 --> 00:05:46.620
So I'm appreciating my Hermes set up way more even than I did before because it continues to work.
00:05:46.840 --> 00:05:46.960
Yeah.
00:05:47.060 --> 00:05:52.160
It's really interesting technology because I think sometimes when people talk about like skills,
00:05:52.790 --> 00:05:54.380
they think here's a markdown file that's,
00:05:54.600 --> 00:05:57.600
you know, on my computer and Hermes is kind of built on skills.
00:05:57.900 --> 00:05:59.560
But skills are basically to-do lists.
00:05:59.820 --> 00:06:02.240
And so if you want to have it do something more deterministic,
00:06:02.480 --> 00:06:03.940
because everybody says
00:06:04.220 --> 00:06:06.720
agents are non-deterministic and LLMs in general,
00:06:06.880 --> 00:06:08.800
they're non-deterministic by default.
00:06:09.720 --> 00:06:12.300
Skills are kind of a way that you give them a set of instructions.
00:06:12.740 --> 00:06:14.360
Agents are really good at following instructions.
00:06:14.700 --> 00:06:15.960
And then you also work with memories.
00:06:16.560 --> 00:06:17.560
Memories are facts.
00:06:17.720 --> 00:06:19.880
If I tell my agent, my name is Jeff or it's Michael,
00:06:20.060 --> 00:06:21.320
it's always going to remember that
00:06:21.360 --> 00:06:22.560
and it's going to know how to refer to me.
00:06:22.800 --> 00:06:27.680
That's also why it works when you describe like, my family is four people and we have
00:06:27.700 --> 00:06:32.100
And I've even used Hermes before to look at the weather to tell me like,
00:06:32.500 --> 00:06:34.120
should I water my lawn today?
00:06:34.540 --> 00:06:38.600
Or when is the ideal time to fertilize since last time I put seed down?
00:06:39.170 --> 00:06:39.700
Being in the Midwest,
00:06:39.950 --> 00:06:41.320
I also live right by the Kansas
River.
00:06:41.660 --> 00:06:43.860
We have no problems with water whatsoever in our area.
00:06:44.520 --> 00:06:48.620
Unlike maybe California or certain parts of the country that have more restrictions.
00:06:49.240 --> 00:06:50.320
And yeah, it's just amazing to wait back.
00:06:50.320 --> 00:06:51.820
You can water whenever you want, but you've got to do it.
00:06:52.010 --> 00:06:53.360
You still want to be optimal about it, right?
00:06:53.620 --> 00:06:55.760
I don't want to do it when it's going to rain the same day,
00:06:55.940 --> 00:06:56.040
right?
00:06:56.140 --> 00:06:59.020
So there's just a lot of wild stuff you can give it.
00:06:59.150 --> 00:07:02.760
Like I used to use a service that I'd like pay a subscription for every year and they'd
00:07:02.860 --> 00:07:05.840
send me fertilizer for my lawn and tell me when to put the fertilizer on it.
00:07:06.120 --> 00:07:10.020
And I used that for years, but they always sent me like two or three times as much product
00:07:10.170 --> 00:07:10.700
as what I needed.
00:07:11.060 --> 00:07:12.840
So I finally stopped using it.
00:07:13.130 --> 00:07:16.900
And then I grabbed all my PDFs for the types of fertilizer in the product and I gave it
00:07:16.960 --> 00:07:19.080
to Hermes and I had it come up with a lawn schedule.
00:07:19.500 --> 00:07:21.540
And one thing it told me is that under their schedule,
00:07:21.970 --> 00:07:23.500
they have you putting new seed down
00:07:23.590 --> 00:07:25.000
and then fertilizing two weeks later.
00:07:25.100 --> 00:07:28.420
you really should wait three to four weeks or you're just frying the grass seed that you just
00:07:28.560 --> 00:07:28.720
planted.
00:07:28.980 --> 00:07:31.180
And so it's like strange insights like that,
00:07:31.360 --> 00:07:33.000
that I know how to put seed on the ground,
00:07:33.160 --> 00:07:35.560
right? I know how to water it. I kind of know how to do fertilizer.
00:07:35.800 --> 00:07:36.200
Like you attach,
00:07:36.500 --> 00:07:38.060
attach it to like, you know, your spigot or whatever,
00:07:38.380 --> 00:07:39.340
and you water your lawn.
00:07:39.740 --> 00:07:40.120
But like,
00:07:40.420 --> 00:07:44.180
there's just a lot of information there that I just find to be like truly fascinating when you
00:07:44.240 --> 00:07:46.460
have the whole internet that you can use to get information from.
00:07:47.060 --> 00:07:48.460
100%. We're going to go through
00:07:48.540 --> 00:07:55.060
some really cool use cases as well. I do want to maybe start by doing a survey of different
00:07:55.480 --> 00:07:56.200
that are out there.
00:07:56.450 --> 00:07:59.020
So we talked about Hermes. We're going to come back to Hermes because you
00:07:59.100 --> 00:08:03.800
and I are both fans of Hermes and have done a lot with it. But maybe the one that really kicked it
00:08:03.920 --> 00:08:04.820
off was Open Claw,
00:08:05.040 --> 00:08:05.440
would you say?
00:08:05.680 --> 00:08:07.800
I think so. That's the first one for me, at least.
00:08:08.500 --> 00:08:08.860
Peter,
00:08:09.010 --> 00:08:10.200
I don't know his last name.
00:08:10.470 --> 00:08:12.220
Actually, I know his last name. I'm just not going to say it.
00:08:13.060 --> 00:08:16.740
He kind of caught my interest right around Christmas last year over the holidays.
00:08:17.090 --> 00:08:17.200
And
00:08:17.300 --> 00:08:18.300
then somewhere around January,
00:08:18.550 --> 00:08:18.900
I thought,
00:08:19.060 --> 00:08:21.620
man, I'm the last person to pay attention to this thing.
00:08:21.820 --> 00:08:23.440
And this is probably four or five names ago,
00:08:23.880 --> 00:08:31.000
but I installed it on a Saturday and then put it on a spare Mac mini before back when Mac minis were like $299 and they couldn't give them away.
00:08:31.720 --> 00:08:35.039
Now I think they're what, like $899 or $1,000 or something like that.
00:08:35.039 --> 00:08:35.300
Ridiculous.
00:08:35.460 --> 00:08:35.560
Yeah,
00:08:35.740 --> 00:08:36.060
it's ridiculous.
00:08:36.539 --> 00:08:39.719
And so I went with my family down to the library after installing it.
00:08:40.020 --> 00:08:46.140
And so my kids were picking up books and I'm good at the library for 10, 15 minutes and I'm just kind of waiting for them to have fun and finish up.
00:08:46.420 --> 00:08:50.740
And so then I was on my phone saying like, hey, can you do this to a website or can you take a screenshot?
00:08:51.300 --> 00:08:54.240
And then I knew I had a bunch of domains that I just had parked forever.
00:08:54.660 --> 00:08:55.020
And I'm like,
00:08:55.220 --> 00:08:57.660
why don't you go ahead and make websites for all like five or six of these?
00:08:58.120 --> 00:08:59.440
And it just kind of took off.
00:08:59.610 --> 00:09:00.980
And then 30 minutes later,
00:09:01.160 --> 00:09:03.100
it's like sending me links to them and screenshots.
00:09:03.510 --> 00:09:04.600
They were all on my Mac.
00:09:04.740 --> 00:09:06.420
But I'm like, this is incredible technology.
00:09:06.800 --> 00:09:09.460
But for me, that was kind of the first one that I had ever played with.
00:09:10.040 --> 00:09:12.580
It still is on that same Mac Mini from a year ago.
00:09:12.580 --> 00:09:14.100
I never bought a Mac Mini for it.
00:09:14.240 --> 00:09:16.580
But it sounded like a crazy thing to do at the time.
00:09:16.730 --> 00:09:20.680
And I don't know that it sounds as bad anymore other than I don't want to spend 900 bucks for a Mac Mini.
00:09:20.760 --> 00:09:23.920
but I kind of regret not getting an extra one for $2.99 though. That was a deal.
00:09:24.280 --> 00:09:25.160
Yeah. You could have just sold,
00:09:25.220 --> 00:09:28.640
you could have become a wholesaler of Mac minis and just retired.
00:09:28.680 --> 00:09:29.420
It would have been incredible.
00:09:30.080 --> 00:09:33.180
I think since then everybody kind of has one of these now,
00:09:33.460 --> 00:09:34.520
like you've got Anthropic.
00:09:34.680 --> 00:09:36.240
I
think they have one. Is that, are they dot?
00:09:36.540 --> 00:09:37.060
Is that the latest?
00:09:37.600 --> 00:09:40.340
No, OpenAI is dot. I believe Anthropics.
00:09:40.760 --> 00:09:41.880
It's not really though.
00:09:42.579 --> 00:09:43.600
It's co-work.
00:09:43.760 --> 00:09:44.160
That's right.
00:09:44.300 --> 00:09:44.640
Co-work.
00:09:45.040 --> 00:09:45.320
You know, I,
00:09:45.540 --> 00:09:46.520
this is the thing that we gotta,
00:09:46.780 --> 00:09:50.180
I think we've got to be a little bit explicit about for folks.
00:09:50.680 --> 00:09:53.060
and help them understand the different angles.
00:09:53.140 --> 00:09:54.880
It's like, co-work is super cool,
00:09:55.380 --> 00:09:59.920
but to me, co-work is halfway from an LLM to these agents.
00:10:00.180 --> 00:10:01.820
It's not all the way there,
00:10:02.100 --> 00:10:02.220
right?
00:10:02.480 --> 00:10:05.160
I can create these scheduled things that run in co-work
00:10:05.340 --> 00:10:07.860
and I can say, "Hey, every hour call this webhook
00:10:07.900 --> 00:10:09.680
and then tell me if something happened."
00:10:09.680 --> 00:10:12.940
But there's also so much more tool use
00:10:13.080 --> 00:10:15.440
that these things like Hermes and OpenClaw have,
00:10:15.760 --> 00:10:16.560
which is really interesting
00:10:16.820 --> 00:10:19.100
and some very interesting self-improvement.
00:10:19.880 --> 00:10:20.840
You know, you hear about RSI,
00:10:21.190 --> 00:10:22.920
the recursive self-improvement,
00:10:23.280 --> 00:10:24.720
not the carpal tunnel version
00:10:25.080 --> 00:10:25.380
these days,
00:10:25.800 --> 00:10:26.580
because we don't type anymore.
00:10:26.670 --> 00:10:27.160
We just talk.
00:10:27.920 --> 00:10:30.900
But yeah, so I don't know how to, I'm not sure if you're thinking of co-work.
00:10:31.120 --> 00:10:32.240
Yeah, I guess it was co-work.
00:10:32.980 --> 00:10:34.820
I've not found these to be as useful.
00:10:35.360 --> 00:10:38.080
I find them to be useful for other things like coding,
00:10:38.620 --> 00:10:40.000
quick chats and stuff to like
00:10:40.300 --> 00:10:43.160
kind of replace the search engine in my mind, I guess.
00:10:43.460 --> 00:10:47.260
I think that between Hermes and OpenClaw,
00:10:47.680 --> 00:10:48.680
there's more personality.
00:10:49.200 --> 00:10:52.040
They're kind of more like they came to your devices first.
00:10:52.300 --> 00:10:57.040
So like you could run it in your Slack or your Telegram or your Discord or maybe even Signal.
00:10:57.560 --> 00:10:59.260
Some of them even work with like iMessage,
00:10:59.420 --> 00:11:00.720
even though that's probably a hack.
00:11:01.540 --> 00:11:03.260
They kind of came to you because,
00:11:03.840 --> 00:11:05.540
you know, they were you were hosting them yourself.
00:11:05.880 --> 00:11:08.320
And so you needed some conduit or way to talk to it.
00:11:08.460 --> 00:11:11.560
So they kind of had the like support where you were by necessity.
00:11:12.000
--> 00:11:18.860
Where I find that like Claude and OpenAI's codex or ChatGPT, I guess, and they need to work on their names.
00:11:19.040 --> 00:11:20.760
There's like eight names for every product using.
00:11:21.780 --> 00:11:21.900
You know,
00:11:22.120 --> 00:11:23.640
they tend to work off of their apps.
00:11:23.930 --> 00:11:26.760
So if you have the app installed on your iPhone or Android or on your desktop,
00:11:26.930 --> 00:11:27.920
then you have access to them.
00:11:28.130 --> 00:11:30.860
I still prefer the CLI for running those tools,
00:11:31.220 --> 00:11:32.360
especially for doing code stuff.
00:11:32.760 --> 00:11:33.240
But like,
00:11:33.570 --> 00:11:36.620
and I don't know, I think now maybe Claude has the ability to connect to Slack.
00:11:37.030 --> 00:11:39.000
And they're slowly kind of catching up and saying,
00:11:39.310 --> 00:11:41.820
you know, here's alternative ways for teams to work with them.
00:11:42.080 --> 00:11:42.900
But that agency,
00:11:43.850 --> 00:11:45.420
the fact that they're kind of designed to,
00:11:45.800 --> 00:11:48.360
you know, have schedules built in to work up.
00:11:48.620 --> 00:11:50.800
There's just a lot of weird personality in them.
00:11:51.040 --> 00:11:53.180
Like Hermes even ships with a bunch of batteries.
00:11:53.540 --> 00:11:55.180
Like I think it can run like a Minecraft server
00:11:55.240 --> 00:11:56.300
by default and stuff.
00:11:56.560 --> 00:11:57.980
I don't find that to be super useful,
00:11:58.240 --> 00:11:59.280
but apparently enough people did
00:11:59.400 --> 00:12:00.860
that they decided that like by default,
00:12:01.100 --> 00:12:02.440
this can run your Minecraft server.
00:12:02.700 --> 00:12:02.900
Yeah,
00:12:03.080 --> 00:12:04.000
that's an interesting one.
00:12:04.320 --> 00:12:05.200
But you know, I guess it's,
00:12:05.480 --> 00:12:07.560
it is a bit of an indicator where this does.
00:12:07.940 --> 00:12:10.360
Like Claude, when Claude Cowork runs,
00:12:10.640 --> 00:12:12.920
it generally runs at Claude.
00:12:13.260 --> 00:12:14.360
And I don't know about Dots.
00:12:14.600 --> 00:12:15.480
That's the new one.
00:12:15.640 --> 00:12:17.400
This is the OpenAI Dots.
00:12:17.520 --> 00:12:18.580
I think it's kind of similar.
00:12:19.020 --> 00:12:20.620
There's MetaMuse, which is also,
00:12:20.750 --> 00:12:22.720
these are, Dots and Muse are the two ones
00:12:22.800 --> 00:12:24.020
that really just came out.
00:12:24.440 --> 00:12:25.340
And Muse is interesting.
00:12:25.470 --> 00:12:26.220
I haven't used it,
00:12:26.420 --> 00:12:28.380
but you actually get a virtual server,
00:12:28.840 --> 00:12:30.320
like a $5 server or something
00:12:30.490 --> 00:12:32.280
as part of using Muse.
00:12:32.450 --> 00:12:33.440
And that's where it runs.
00:12:33.900 --> 00:12:35.940
Whereas things like Hermes and OpenClaw,
00:12:36.280 --> 00:12:37.060
at least traditionally,
00:12:37.260 --> 00:12:39.500
at least for me, run on my computer.
00:12:39.960 --> 00:12:41.720
Now that might sound scary to people.
00:12:42.080 --> 00:12:44.340
So mine runs on a Docker container
00:12:44.480 --> 00:12:47.480
with a very limited set of folders
00:12:47.500 --> 00:12:50.240
over to it, not just full access to my whole computer,
00:12:50.420 --> 00:12:50.520
right?
00:12:51.000 --> 00:12:52.440
But I think that's one of the big differences.
00:12:52.720 --> 00:12:54.040
'Cause once it's running on your computer,
00:12:54.220 --> 00:12:55.700
it has all these different capabilities,
00:12:55.960 --> 00:12:56.060
right?
00:12:56.100 --> 00:12:58.020
It's just like, well, what tools are on this computer
00:12:58.240 --> 00:12:59.040
or in this Docker image?
00:12:59.260 --> 00:13:00.140
And if you don't have one,
00:13:00.300 --> 00:13:01.500
like, well, can we install Chrome?
00:13:01.700 --> 00:13:02.580
That would make my life better.
00:13:02.700 --> 00:13:04.280
Like, sure, go install Chrome, I don't care.
00:13:04.540 --> 00:13:07.400
I've fully given my Hermes my Mac mini at my house.
00:13:07.700 --> 00:13:08.720
And so it can run Chrome,
00:13:08.940 --> 00:13:09.920
it can like do stuff.
00:13:10.360 --> 00:13:13.360
I do limit as far as like what iCloud is connected to it.
00:13:13.560 --> 00:13:15.100
That way I don't have to worry about putting anything
00:13:15.160 --> 00:13:16.560
on that machine that it could potentially,
00:13:17.080 --> 00:13:17.180
you know,
00:13:17.320 --> 00:13:20.220
share or do something with it that I don't want to take a chance on.
00:13:20.540 --> 00:13:21.680
So I just kind of lucked out,
00:13:21.730 --> 00:13:22.600
had that machine anyways,
00:13:23.020 --> 00:13:23.460
plus a laptop.
00:13:24.040 --> 00:13:27.040
So Hermes runs on it. I don't run Hermes on my work machine
00:13:27.680 --> 00:13:32.000
just because I don't want any client files or anything to ever be, I don't want it to have the
00:13:32.180 --> 00:13:34.940
option to be able to like poke around or do something with it.
00:13:35.220 --> 00:13:36.320
So I'm a little looser with
00:13:36.420 --> 00:13:39.180
mine, but it's because I have that dedicated box that can just live on.
00:13:39.330 --> 00:13:40.240
And then I've got several
00:13:40.520 --> 00:13:41.740
like, they're called orange pies,
00:13:42.260 --> 00:13:44.020
but they're kind of like a better raspberry pie.
00:13:44.350 --> 00:13:45.140
I popped up a few
00:13:45.180 --> 00:13:49.500
Hermes on those as well to play with because they're tiny and they're just fine. It's just
00:13:49.600 --> 00:13:50.900
any Linux box would work too.
00:13:51.080 --> 00:13:52.640
Orange pie. I've not heard of orange pie,
00:13:53.060 --> 00:13:53.680
although yeah,
00:13:53.680 --> 00:13:54.440
it looks very interesting.
00:13:54.720 --> 00:13:56.940
I've got kind of the cheapy run there is one of them.
00:13:58.420 --> 00:14:00.740
This portion of talk Python to me is brought to you by,
00:14:00.940 --> 00:14:01.100
well,
00:14:01.360
--> 00:14:01.500
you,
00:14:02.120 --> 00:14:03.600
I recently added a membership
00:14:03.940 --> 00:14:04.880
program to talk Python.
00:14:05.520 --> 00:14:09.000
One of the cornerstones of that program is live tech talks.
00:14:09.340 --> 00:14:10.280
So let me just
00:14:10.420 --> 00:14:13.080
take a moment and tell you about our first upcoming live tech talk.
00:14:13.740 --> 00:14:14.540
It's presented by me,
00:14:14.880 --> 00:14:18.040
The subject is owning and running your own Python infrastructure.
00:14:18.780 --> 00:14:22.480
You may know I've tried to adopt a no-nonsense approach to running Talk Python
00:14:22.570 --> 00:14:23.600
and all the related apps,
00:14:23.760 --> 00:14:24.380
the podcasts,
00:14:24.540 --> 00:14:25.260
the courses sites,
00:14:25.540 --> 00:14:28.000
the APIs for the mobile apps, and the MCP servers,
00:14:28.220 --> 00:14:28.620
and much more.
00:14:29.240 --> 00:14:32.680
This talk is a peek behind the curtain on how I run all of these
00:14:32.940 --> 00:14:34.220
for under $100 a month,
00:14:34.480 --> 00:14:37.060
including over 10 terabytes of traffic per month.
00:14:37.460 --> 00:14:39.520
But even if you heard me talk about this topic before,
00:14:39.710 --> 00:14:41.720
I have a true surprise for you.
00:14:42.040 --> 00:14:45.600
I'm going to share something really wild that I've changed over to in the past few weeks,
00:14:46.240 --> 00:14:47.060
and you won't want to miss it.
00:14:47.760 --> 00:14:50.560
Just visit talkpython.fm/meetups for the details
00:14:50.760 --> 00:14:51.800
and to add it to your calendar.
00:14:52.470 --> 00:14:53.420
The event is on Wednesday,
00:14:53.640 --> 00:14:55.200
November 4th at 10am Pacific,
00:14:55.800 --> 00:14:59.220
and it'll be available for replay after that to all members as well.
00:15:00.000 --> 00:15:01.140
Membership starts at just
00:15:01.320 --> 00:15:03.620
$5 a month, and it really helps support the show.
00:15:03.890 --> 00:15:06.260
So become a member and get access to top tier
00:15:06.410 --> 00:15:07.900
live tech events and much more.
00:15:08.440 --> 00:15:11.160
Visit talkpython.fm/meetups to get started today.
00:15:11.280 --> 00:15:15.900
they're super neat like i said they're like a raspberry pi they make all different shapes and
00:15:16.080 --> 00:15:21.440
sizes of them and they are just so much faster what a raspberry pi is they're not as underpowered
00:15:22.000 --> 00:15:28.060
so this uh brings up a pretty interesting angle they do run code but for their actual real
00:15:28.560 --> 00:15:33.840
computational bits primarily i would say at least i'm guessing that most of the time what you do is
00:15:33.840 --> 00:15:40.640
you plug an llm into your agent thing let's just put hermes in as a word a stand in for all of
00:15:40.640 --> 00:15:40.700
these,
00:15:40.900 --> 00:15:42.460
right? Plug it, plug it into Hermes.
00:15:42.790 --> 00:15:44.300
And then when it actually does work,
00:15:44.460 --> 00:15:44.780
it's not all
00:15:44.880 --> 00:15:45.420
of a sudden like,
00:15:45.620 --> 00:15:45.680
Hey,
00:15:45.880 --> 00:15:48.800
I'm loading up a terabyte worth of model here.
00:15:48.980 --> 00:15:50.000
It's just like I'm doing the
00:15:50.140 --> 00:15:52.980
OpenAI call or the equivalent to some other provider,
00:15:53.140 --> 00:15:53.960
right? Yeah, exactly.
00:15:54.340 --> 00:15:55.200
So one thing
00:15:55.250 --> 00:16:01.100
you were alluding to earlier is when you get on like Facebook or Meta's Muse or OpenAIs or
00:16:01.460 --> 00:16:01.840
Anthropics,
00:16:02.080 --> 00:16:03.100
when you use their agent,
00:16:03.600 --> 00:16:03.740
they're,
00:16:03.940 --> 00:16:05.640
they're basically sticking you to their models.
00:16:05.890 --> 00:16:09.220
I think OpenAI is starting to figure this out a little bit. And they've decided like,
00:16:09.300 --> 00:16:11.000
If people are going to use open models,
00:16:11.310 --> 00:16:15.720
they have a beta or something now where they're actually letting you use other people's models through their system.
00:16:15.850 --> 00:16:18.140
And those are more geared to like open models and stuff.
00:16:18.740 --> 00:16:25.080
What I started off with was because I didn't want to pay for token because these things can eat millions of tokens some days on weird tangents.
00:16:25.320 --> 00:16:27.920
So I use Kimi code as kind of one of my go tos.
00:16:28.240 --> 00:16:30.340
Ollama is another service that I like,
00:16:30.660 --> 00:16:33.140
and it has all kinds of open models on it.
00:16:33.280 --> 00:16:37.420
I know there's kind of like differing opinions about Ollama because of their open source roots.
00:16:37.740 --> 00:16:39.800
I think there was a fork from another project at some time.
00:16:40.080 --> 00:16:40.860
Some people like them.
00:16:41.020 --> 00:16:41.960
Some people don't like them.
00:16:42.200 --> 00:16:45.420
I like the utility of being able to pay a set fee like 20 bucks a month.
00:16:45.640 --> 00:16:46.180
And basically,
00:16:46.620 --> 00:16:48.360
you've got hundreds of models you can pick from.
00:16:48.360 --> 00:16:50.140
It's probably dozens of models you can pick from.
00:16:50.320 --> 00:16:50.620
And also,
00:16:50.820 --> 00:16:52.060
Ollama, you can run locally.
00:16:52.440 --> 00:16:56.320
If you do run local, I think there's probably some other open source servers that are faster.
00:16:56.720 --> 00:17:01.380
I just kind of find it to be the Swiss army knife of letting you run most models locally,
00:17:01.540 --> 00:17:02.320
which is pretty cool.
00:17:02.640 --> 00:17:03.700
Are you running Ollama local?
00:17:03.920 --> 00:17:04.660
Is that your angle?
00:17:05.000 --> 00:17:06.420
My angle is Ollama.
00:17:06.839 --> 00:17:07.020
Well,
00:17:07.220 --> 00:17:11.839
originally I started out plugging it into OpenAI and it was just going through my credits too quickly.
00:17:12.030 --> 00:17:14.339
So I'm like, this is not, this is not good.
00:17:14.480 --> 00:17:14.959
Not going to work.
00:17:15.060 --> 00:17:16.500
So I need to find something else.
00:17:16.589 --> 00:17:19.540
And I looked into Olama for local models.
00:17:19.970 --> 00:17:21.459
And then I think I talked to you actually.
00:17:21.589 --> 00:17:23.720
And you're like, do you know they can run cloud models?
00:17:23.770 --> 00:17:24.819
I'm like, they can do what?
00:17:24.970 --> 00:17:27.400
So if you go over to olama.com, go to models,
00:17:27.910 --> 00:17:28.600
you can click cloud.
00:17:28.800 --> 00:17:31.180
It'll show you that you can run DeepSeq Flash 4,
00:17:32.600 --> 00:17:33.360
GLM 5.3,
00:17:33.520 --> 00:17:34.580
GLM 5.3 Flash.
00:17:35.160 --> 00:17:38.440
And as you scroll through, you can also see some interesting things like, for example,
00:17:38.960 --> 00:17:42.900
DeepSeq 4.1 Flash supports vision and tools and thinking,
00:17:43.420 --> 00:17:46.780
whereas GLM 5.3 is a better writing,
00:17:47.140 --> 00:17:48.720
sort of conversational type of one.
00:17:48.980 --> 00:17:50.020
But it doesn't support vision,
00:17:50.180 --> 00:17:50.660
for example.
00:17:51.279 --> 00:17:53.040
But its Flash one does.
00:17:53.380 --> 00:17:59.340
And this is important because if you give your Hermes or whatever a job to do,
00:17:59.540 --> 00:18:02.600
it needs to look at something like a screenshot or anything.
00:18:03.080 --> 00:18:05.300
And you assigned it the 5.3 version.
00:18:05.400 --> 00:18:06.080
It couldn't do that,
00:18:06.260 --> 00:18:06.380
right?
00:18:06.520 --> 00:18:08.620
But it could do if you assigned it the 5.3 Flash.
00:18:09.100 --> 00:18:12.080
Anyway, so long story short, I'm running the cloud ones over here.
00:18:12.540 --> 00:18:13.160
Am I logged in?
00:18:13.160 --> 00:18:13.580
Oh, I am.
00:18:13.780 --> 00:18:15.220
And I go to my usage.
00:18:15.940 --> 00:18:17.000
And let's see.
00:18:17.260 --> 00:18:18.780
In the last four hours,
00:18:19.000 --> 00:18:20.740
I've used 17% of my $20.
00:18:21.100 --> 00:18:22.500
And in two days,
00:18:22.680 --> 00:18:25.260
I've used just over 10% of my monthly.
00:18:25.680 --> 00:18:28.120
But you can see down here that the models I've used,
00:18:28.460 --> 00:18:30.260
a little bit of the Nemetron,
00:18:30.500 --> 00:18:31.540
a little Kimmy K3,
00:18:32.040 --> 00:18:33.800
a lot of GLM53 flash.
00:18:34.060 --> 00:18:35.900
That's pretty much what powers my stuff,
00:18:36.160 --> 00:18:37.720
unless I need it to be a little bit better at writing
00:18:37.860 --> 00:18:39.080
than I use GLM53.
00:18:39.540 --> 00:18:39.980
That's my world.
00:18:40.020 --> 00:18:40.340
How about you?
00:18:42.120 --> 00:18:43.900
I haven't been using a Lama as much,
00:18:44.280 --> 00:18:45.580
but that Kimmy K3 model,
00:18:45.880 --> 00:18:47.680
I use the coding version of it a lot.
00:18:47.840 --> 00:18:50.140
And I just bought a subscription from them to try it out.
00:18:50.460 --> 00:18:52.700
I think they were two or
three weeks ahead maybe
00:18:53.240 --> 00:18:54.700
of seeing a llama get it.
00:18:55.600 --> 00:18:57.660
One thing I do like, if you don't mind going back to models
00:18:58.090 --> 00:19:01.200
in the same way you were doing that cloud filter,
00:19:01.640 --> 00:19:03.540
go to popular and drop down on new.
00:19:03.940 --> 00:19:05.600
This is like of the boring,
00:19:06.500 --> 00:19:07.480
oh, see there's a new one even.
00:19:07.620 --> 00:19:08.160
Yeah, I just noted.
00:19:08.520 --> 00:19:08.880
This is, yeah,
00:19:09.120 --> 00:19:10.700
and we got multiple new ones.
00:19:10.710 --> 00:19:11.100
Look at this.
00:19:11.430 --> 00:19:13.980
Three or four that came out the last day or so, 16 hours.
00:19:14.340 --> 00:19:15.560
When everybody else has a life,
00:19:15.800 --> 00:19:17.520
I'm just going here once a day or twice a day
00:19:17.880 --> 00:19:19.120
and then checking to see what's new.
00:19:19.260 --> 00:19:21.420
because I do like pulling the new models down.
00:19:21.820 --> 00:19:22.960
Those vision models are great,
00:19:23.110 --> 00:19:23.600
by the way.
00:19:23.800 --> 00:19:24.820
A lot of them run local.
00:19:25.250 --> 00:19:27.700
And so I've gone through like old family photos and stuff.
00:19:28.070 --> 00:19:29.620
And it was always good enough to say like,
00:19:29.870 --> 00:19:31.300
you know, flag that there's a dog,
00:19:31.760 --> 00:19:32.460
look for the setting,
00:19:32.690 --> 00:19:34.180
like is this Thanksgiving or Christmas?
00:19:34.380 --> 00:19:35.700
Some of that stuff you can get from the dates,
00:19:35.940 --> 00:19:37.020
but you can get pretty accurate
00:19:37.110 --> 00:19:38.280
by just having it count
00:19:38.380 --> 00:19:40.260
like the number of people in the photos and stuff.
00:19:40.500 --> 00:19:41.940
Those tools I think are important.
00:19:41.990 --> 00:19:44.100
I don't really care about the thinking aspect of the models
00:19:44.300 --> 00:19:46.360
because that's just all one shot to me anyways.
00:19:46.820 --> 00:19:49.220
But I think the tool calls are great
00:19:49.240 --> 00:19:53.780
that kind of tells you that it's able to go and run other applications and other tool calls like
00:19:54.020 --> 00:19:58.260
if you want to have it do transcriptions or you want to give it other jobs to do that ability or
00:19:58.380 --> 00:20:03.540
running mcp which lets it go connect to a remote server or local server and have a list of like
00:20:03.820 --> 00:20:08.960
possible things that can run for you and actions it can do then i like i like the tool call models
00:20:09.320 --> 00:20:13.940
for a long time they they didn't have that feature and so it was almost just like a trivia machine
00:20:14.240 --> 00:20:18.440
where you'd ask it like i don't know how far is it from kansas to portland or something then it
00:20:18.360 --> 00:20:19.140
We'll just make up a number,
00:20:19.360 --> 00:20:19.520
you know?
00:20:20.040 --> 00:20:20.140
Right.
00:20:20.560 --> 00:20:20.620
Yeah.
00:20:20.680 --> 00:20:22.320
So now in your Hermes, what could you do?
00:20:22.540 --> 00:20:28.100
You could probably integrate it with either some sort of mapping MCP or a mapping API.
00:20:28.860 --> 00:20:31.880
And probably you can connect it to so many different things.
00:20:32.120 --> 00:20:36.760
Like mine is connected to my Google contacts and other workspaces and emails.
00:20:37.020 --> 00:20:38.300
So it could like maybe say,
00:20:38.480 --> 00:20:40.900
you could say something like, how far is it from Jeff's to
00:20:41.140 --> 00:20:41.880
Michael's or vice versa?
00:20:41.980 --> 00:20:44.620
And it would go, go look you up in contacts and get your address,
00:20:45.040 --> 00:20:46.020
plug it into the MCP.
00:20:46.180 --> 00:20:46.320
Right.
00:20:46.360 --> 00:20:47.520
And it would just like work it out.
00:20:47.700 --> 00:20:48.000
It's really.
00:20:48.320 --> 00:20:53.280
really pretty neat how that works yeah and mcp is kind of like superpowers for these models or these
00:20:53.400 --> 00:20:58.900
agents like most of the services i subscribe to anymore i think google finally released an mcp the
00:20:58.920 --> 00:21:03.840
other day or at least they started leaking stuff to GitHub um just the ability to go you know it's
00:21:03.940 --> 00:21:08.800
basically giving your model access in a secure way so that you don't have to go and just say
00:21:09.120 --> 00:21:15.360
here's my cloud flare um api key save this in plain text markdown they'll go do stuff like it
00:21:15.280 --> 00:21:19.380
actually kind of makes them good because they can get a list of like here are things I'm able to do
00:21:19.400 --> 00:21:25.120
on behalf of Jeff and Michael here's the read-only stuff I can see here's the right access I can have
00:21:25.460 --> 00:21:30.680
last night I was having to update some DNS settings for me just because Cloudflare supports MCP
00:21:30.960 --> 00:21:35.820
like it's just so wild like things that used to take a while you can just give them this MCP as
00:21:35.820 --> 00:21:40.840
an access in the Django world there's a great library called Django MCPX and I've started
00:21:40.860 --> 00:21:42.540
building that in all my side projects.
00:21:42.900 --> 00:21:46.780
So I can have like Hermes once a day or ChatGPT on demand.
00:21:47.030 --> 00:21:47.660
I can say,
00:21:47.850 --> 00:21:52.240
go look on Django TV and let me know if there's a new video or go approve a job on the
00:21:52.340 --> 00:21:52.740
job board.
00:21:53.040 --> 00:21:56.700
It just completely changes how I'm able to access it. Things you would use to just go into
00:21:56.700 --> 00:21:59.200
the website and go into like build an admin to do.
00:21:59.410 --> 00:22:00.580
You can just talk through it.
00:22:00.860 --> 00:22:01.220
Say like,
00:22:01.500 --> 00:22:02.140
pay for the newsletter,
00:22:02.420 --> 00:22:06.380
show me the last five pieces of news about Django or what's neat.
00:22:06.740
--> 00:22:10.120
And I just love that ability to be able to like connect the dots like that.
00:22:10.460 --> 00:22:10.880
Yeah, that's awesome.
00:22:11.170 --> 00:22:11.720
It really is.
00:22:11.980 --> 00:22:12.700
What if we want to go with this?
00:22:12.900 --> 00:22:13.960
One way,
00:22:14.280 --> 00:22:15.020
one area I think
00:22:15.020 --> 00:22:16.920
is different in a good way,
00:22:17.260 --> 00:22:18.300
mostly a good way,
00:22:18.700 --> 00:22:19.300
is always trade-offs.
00:22:19.510 --> 00:22:20.420
One thing that I think is
00:22:20.470 --> 00:22:26.900
better in a good way than a lot of like, if you ask Plod to do something or ChatGPT to do something,
00:22:27.360 --> 00:22:28.700
everyone's probably familiar with,
00:22:28.940 --> 00:22:29.000
oh,
00:22:29.280 --> 00:22:32.620
Reddit won't let me pull that page because they block
00:22:33.120 --> 00:22:38.900
Anthropic or I can't access this because it's a file on your hard drive or whatever,
00:22:39.160 --> 00:22:39.220
right?
00:22:39.500 --> 00:22:42.340
All of this stuff runs wherever you host it.
00:22:42.490 --> 00:22:46.500
And so my Mac mini is sitting on my fiber network and it's running a Docker container.
00:22:46.750 --> 00:22:48.040
So when I ask it to do something,
00:22:48.480 --> 00:22:51.680
it looks like a residential IP address that's going somewhere.
00:22:51.910 --> 00:22:53.320
And if I tell it to use Google Chrome,
00:22:53.580 --> 00:22:57.040
it literally just launches Google Chrome and it goes and it does the thing.
00:22:57.400 --> 00:22:59.100
And it looks like a regular web browser.
00:22:59.330 --> 00:23:08.960
So I find that these are a little more able to access different information on your behalf than if you'd asked the exact same question to even a smarter model like Opus or Astra.
00:23:09.280 --> 00:23:10.900
Yeah, they have an incredible kind of,
00:23:11.090 --> 00:23:12.980
there used to be like this gap of,
00:23:13.260 --> 00:23:13.440
you know,
00:23:13.640 --> 00:23:16.720
can it use curl or can it use something to access a website?
00:23:17.260 --> 00:23:26.200
And the first time you run something like Hermes or OpenClaw and you see it open Chrome or Firefox and you see the URL pop in and you actually see it drive it, it's just wild.
00:23:26.440 --> 00:23:28.420
It's like, oh, it's like there's a human here, but it's not a human.
00:23:28.670 --> 00:23:30.760
You know, like it's actually doing the same stuff.
00:23:31.160 --> 00:23:33.120
Mine has its own profile as well.
00:23:33.450 --> 00:23:38.700
And then that way if we're ever on the same browser and I changed the color of the desktop theme to be like bright red.
00:23:39.120 --> 00:23:42.720
And so that way it's very obvious if it was driving something or not.
00:23:42.920 --> 00:23:46.340
By default, a lot of them will run in headless mode where you don't see it pop up.
00:23:46.520 --> 00:23:47.760
I prefer to actually see it.
00:23:48.020 --> 00:23:52.440
And it's just kind of interesting to see what work it's done when you ask it to do stuff.
00:23:52.720 --> 00:23:57.020
But the fact that it's not trying to emulate a website with curl or a web browser with curl,
00:23:57.200 --> 00:23:58.860
it's just actually driving real tools.
00:23:59.220 --> 00:24:01.860
I've got a friend even that was trying to do some stuff with Macs.
00:24:02.900 --> 00:24:03.680
Sorry, like an Apple Mac.
00:24:04.080 --> 00:24:08.600
And he ended up noticing that before they were good at being able to drive screens,
00:24:09.020 --> 00:24:11.300
Like it's pretty good at running Chrome because it knows how to talk to Chrome.
00:24:11.760 --> 00:24:13.280
Chrome makes that pretty easy to do.
00:24:13.370 --> 00:24:15.340
Like there's a development API for it and straightforward.
00:24:16.460 --> 00:24:20.280
But what's a little harder to do though was the, and I'm forgetting the name of it, but
00:24:20.500 --> 00:24:22.200
actually having to move the mouse and keyboard around.
00:24:22.610 --> 00:24:23.380
But for some reason,
00:24:23.640 --> 00:24:24.780
if you had it used VNC.
00:24:24.930 --> 00:24:25.740
Accessibility or something like that?
00:24:25.980 --> 00:24:28.420
Yeah, they're really good at driving like VNC.
00:24:28.630 --> 00:24:32.880
So like it was actually better to drive VNC connected to a Mac than it was to actually
00:24:33.060 --> 00:24:34.260
be on the Mac and drive it.
00:24:34.390 --> 00:24:37.580
And I think they've fixed all that now, but it was just fascinating watching it move and
00:24:37.680 --> 00:24:38.100
do stuff.
00:24:38.400 --> 00:24:39.840
I'm like, man, I wish I could do that on my machine.
00:24:40.300 --> 00:24:41.360
But that's really cool.
00:24:41.660 --> 00:24:42.240
It's super wild.
00:24:42.330 --> 00:24:47.500
I think one area I want to explore with you and see how you're doing this is these things
00:24:47.610 --> 00:24:53.960
come out of the box and they're not much different than a ChatGPT or quad or whatever.
00:24:54.480 --> 00:24:57.100
And it really matters what model you hook up to it, right?
00:24:57.130 --> 00:25:01.920
If you hook up OpenAI Sol to it, well, you get a very similar experience to that.
00:25:02.040 --> 00:25:03.860
But if you hook up BLM 5.3 Flash,
00:25:04.200 --> 00:25:05.680
it's good, but different,
00:25:06.080 --> 00:25:06.180
right?
00:25:06.400 --> 00:25:11.520
But then you can start to build with it and personalize it and so on, right?
00:25:11.580 --> 00:25:16.520
And so one of the really eye-opening experiences I had was I literally sat down,
00:25:16.920 --> 00:25:20.100
I voice typed into my phone to my Hermes,
00:25:20.500 --> 00:25:24.800
and 15 minutes later I had built this whole calendar management system
00:25:25.360 --> 00:25:29.840
that worked with my daughter sends me messages about when she needs to reserve the car
00:25:29.920 --> 00:25:31.600
because she has a job she's got to drive at.
00:25:31.600 --> 00:25:34.240
And so she'd
send me these invites, but it blocked my calendar.
00:25:34.400 --> 00:25:36.080
And so I talked to it for a bit.
00:25:36.200 --> 00:25:42.000
And it built this whole scheduled automation and skills and Python files and all these things that will say,
00:25:42.160 --> 00:25:42.600
like, set me,
00:25:42.830 --> 00:25:44.860
you know, mark me as free again on those times.
00:25:45.010 --> 00:25:47.840
So that automated scheduling stuff doesn't say you're busy.
00:25:47.980 --> 00:25:48.460
Like, no, I'm not.
00:25:48.470 --> 00:25:49.100
My daughter's busy.
00:25:49.540 --> 00:25:51.660
I don't need my car to be on the computer and so on.
00:25:51.850 --> 00:25:54.920
So this way of like talking to it and just programming it, you know,
00:25:55.300 --> 00:25:56.280
in sort of air quotes,
00:25:56.460 --> 00:25:56.640
you know?
00:25:56.840 --> 00:25:57.060
Yeah.
00:25:57.540 --> 00:25:59.840
Is it like just from your experience or what's the,
00:26:00.240 --> 00:26:00.560
what's your.
00:26:00.660 --> 00:26:00.820
Yeah.
00:26:00.900 --> 00:26:01.380
Well, I mean,
00:26:01.920 --> 00:26:04.940
I don't typically sit down and program anything into it.
00:26:05.000 --> 00:26:08.520
I just talk to it and it builds itself and it evolves itself.
00:26:08.720 --> 00:26:09.060
And it's like,
00:26:09.400 --> 00:26:16.220
if you teach it something and you say, okay, connect my contacts and my calendar and this and that and use this Python script,
00:26:16.360 --> 00:26:17.860
and it runs into a problem because,
00:26:18.020 --> 00:26:18.680
oh, I had a problem.
00:26:18.940 --> 00:26:19.500
Let me fix that.
00:26:19.660 --> 00:26:20.360
Okay, now I'm fixed.
00:26:20.460 --> 00:26:21.020
I'm going to keep going.
00:26:21.140 --> 00:26:22.860
And the next time it won't have that problem anymore.
00:26:23.260 --> 00:26:25.800
It's just really a wild way of developing something,
00:26:26.000 --> 00:26:26.080
right?
00:26:26.180 --> 00:26:27.640
And there's not much else like it.
00:26:27.760 --> 00:26:28.980
Like if you do it with ChatGPT,
00:26:29.300 --> 00:26:31.320
it kind of every session is a new one.
00:26:31.640 --> 00:26:32.100
Whereas this,
00:26:32.440 --> 00:26:33.300
it iterates.
00:26:33.740 --> 00:26:34.320
I think,
00:26:34.720 --> 00:26:40.000
too, what you're getting at is it has a memory and its ability to remember what you did yesterday.
00:26:40.600 --> 00:26:43.860
That's not how like ChatGPT, that's not how Claude was built.
00:26:44.110 --> 00:26:47.260
And they've slowly been trying to add memory to it, but it's very bolted on.
00:26:47.520 --> 00:26:51.020
So like earlier today, Michael has shown me this memory system that he found.
00:26:51.460 --> 00:26:53.060
And it's a way that you can link.
00:26:53.090 --> 00:26:58.220
I assume you can link other Hermes together using the same knowledge and how they build stuff up.
00:26:58.560 --> 00:27:01.460
These were kind of built like the movie called Memento.
00:27:01.840 --> 00:27:04.340
The guy tattoos some memory on his arm every day.
00:27:04.500 --> 00:27:05.400
So when he wakes up,
00:27:05.700 --> 00:27:07.700
then he remembers he can read that as context.
00:27:08.020 --> 00:27:10.220
These things are just full of these context nuggets.
00:27:10.640 --> 00:27:12.280
And part of it too is like your skills.
00:27:12.740 --> 00:27:14.240
As you build a skill to do something,
00:27:14.680 --> 00:27:19.160
they're very good at knowing when to use a similar skill to accomplish some other part of it.
00:27:19.940 --> 00:27:23.540
One example I had was I was taking my kids to visit the grandparents one time.
00:27:23.780 --> 00:27:24.460
Three hour drive,
00:27:24.700 --> 00:27:27.340
we try to meet halfway in between here in Missouri,
00:27:27.500 --> 00:27:28.000
Southwest Missouri.
00:27:28.600 --> 00:27:31.220
And so when I got to the meeting place,
00:27:31.420 --> 00:27:32.840
I was filling my car up with gas.
00:27:33.080 --> 00:27:35.480
A friend of mine sent me an article that was like a 30-minute read.
00:27:35.660 --> 00:27:36.460
And I'm like, ah,
00:27:36.620 --> 00:27:37.300
perfect time.
00:27:37.340 --> 00:27:40.040
I got 90 minutes to drive back to Lawrence,
00:27:40.200 --> 00:27:40.480
Kansas.
00:27:40.920 --> 00:27:42.140
I really want to hear that.
00:27:42.320 --> 00:27:43.840
So I didn't have any of the skills built.
00:27:44.240 --> 00:27:46.540
But I did have like a transcription skill.
00:27:47.000 --> 00:27:49.420
I already had like a text-to-voice skill set.
00:27:49.680 --> 00:27:50.480
So I grabbed the article.
00:27:50.780 --> 00:27:52.540
I sent it to my Hermes.
00:27:52.820 --> 00:27:54.940
And I said, can you turn this into an audio file for me?
00:27:55.220 --> 00:27:57.320
And because it had enough of the skills to fill it in,
00:27:57.600 --> 00:28:00.300
It took about five or 10 minutes and it sent me back a link to the file.
00:28:00.590 --> 00:28:02.060
And I'm like, this is just incredible.
00:28:02.210 --> 00:28:06.360
And the voice was good because I'd already found like a Kokoro model or something that's a local,
00:28:06.620 --> 00:28:08.060
easy to run model.
00:28:08.440 --> 00:28:11.440
And so it sent me back like a good enough, but it was also making mistakes.
00:28:11.570 --> 00:28:12.240
Like it was doing,
00:28:12.560 --> 00:28:13.720
you know, hey, here's this website,
00:28:14.720 --> 00:28:18.420
HTTP colon slash slash hindsight dot vectorize dot IO,
00:28:18.720 --> 00:28:18.840
right?
00:28:18.960 --> 00:28:20.820
Like it's giving me the full and I'm like, well, that sucks.
00:28:21.140 --> 00:28:24.180
Why don't you make another pass at it and go ahead and clean all that stuff up?
00:28:24.370 --> 00:28:26.280
And I'm driving so I can't read while I'm driving.
00:28:26.480 --> 00:28:30.540
So I'm using the voice mode on my phone over Telegram to tell it what I wanted it to fix.
00:28:30.900 --> 00:28:32.300
It's taking that voice file,
00:28:32.560 --> 00:28:33.300
changing
it to text.
00:28:33.660 --> 00:28:36.140
So, you know, five minutes later, it sends me one back that's cleaned up.
00:28:36.350 --> 00:28:37.360
And I'm like, hey, that's awesome.
00:28:37.980 --> 00:28:41.260
One thing I learned from Marietta, because I thought about making my agent's blog.
00:28:42.060 --> 00:28:44.800
And Marietta had a blog post a while back, we'll have to find.
00:28:45.090 --> 00:28:49.520
That was basically about how she's making her or how her like bought her agent's blog.
00:28:50.040 --> 00:28:51.420
And it posts all the skills publicly.
00:28:51.800 --> 00:28:53.620
And I was right on the edge of doing that.
00:28:53.900 --> 00:28:55.440
So I went ahead and made my Hermes.
00:28:55.520 --> 00:28:56.560
I gave it a blog too.
00:28:56.950 --> 00:28:59.940
And so it uses Hugo and it just publishes these files.
00:29:00.330 --> 00:29:02.060
And so every day I'll send it a couple articles
00:29:02.500 --> 00:29:05.800
and I'm like, I want you to transcribe this,
00:29:06.030 --> 00:29:07.340
which puts it into Obsidian
00:29:07.470 --> 00:29:08.600
just so I have a record of it.
00:29:08.770 --> 00:29:09.780
And that's like my bookmark.
00:29:10.070 --> 00:29:11.160
And then it'll write about it.
00:29:11.350 --> 00:29:12.260
And so a couple of weeks ago,
00:29:12.440 --> 00:29:14.540
like there was a new model called Jeb, J-E-B.
00:29:15.020 --> 00:29:17.580
And I probably posted like 40 or 50 links
00:29:17.650 --> 00:29:18.520
to it over a few days.
00:29:18.870 --> 00:29:19.960
And then I asked it to like,
00:29:20.220 --> 00:29:20.340
you know,
00:29:20.440 --> 00:29:21.720
do some research on it.
00:29:22.080 --> 00:29:24.339
And as it started kind of pulling data together
00:29:24.340 --> 00:29:25.740
when it was writing articles,
00:29:25.920 --> 00:29:28.620
it was starting to weave facts that it had already kind of learned
00:29:28.780 --> 00:29:31.000
and talked about into like these really nice posts for me.
00:29:31.400 --> 00:29:33.920
Pydantic AI is my favorite Python library
00:29:34.020 --> 00:29:34.840
for writing agents.
00:29:35.620 --> 00:29:37.500
Just when they finally posted, I say finally,
00:29:37.720 --> 00:29:39.660
they posted a blog post about how to
00:29:39.840 --> 00:29:43.640
use Jev with it or as part of their docs rather. I think that's before they built the blog post.
00:29:43.880 --> 00:29:48.000
I found the documentation to it, copied the page, sent it to my hermies and asked it to,
00:29:48.320 --> 00:29:52.500
hey, write an article for me that shows me exactly how to use this with Pydantic AI.
00:29:52.960 --> 00:29:56.280
Two minutes later, it sends me back the URL to the post.
00:29:56.540 --> 00:29:58.260
And I'm like, this is just amazing tech.
00:29:58.520 --> 00:30:00.520
For voice mode, I did something similar too,
00:30:01.060 --> 00:30:01.480
where I thought,
00:30:01.800 --> 00:30:02.780
why don't I just have it give me,
00:30:03.000 --> 00:30:04.340
like I just want the audio feed,
00:30:04.460 --> 00:30:06.120
but it's kind of a pain to get an audio file
00:30:06.460 --> 00:30:07.500
while you're on your phone.
00:30:07.880 --> 00:30:09.440
Like, you know, you're pulling it through Telegram
00:30:09.620 --> 00:30:10.880
and that might open up VLC
00:30:11.180 --> 00:30:13.060
or it won't know what app to pull it up in.
00:30:13.320 --> 00:30:15.020
There will be no like history progression
00:30:15.520 --> 00:30:15.600
because,
00:30:15.840 --> 00:30:17.480
you know, these applications aren't really built
00:30:17.640 --> 00:30:20.220
to like resume where you're at in an audio file.
00:30:20.560 --> 00:30:21.060
So then I thought,
00:30:21.260 --> 00:30:21.660
why don't you just,
00:30:21.800 --> 00:30:23.380
since you're already building a website for me,
00:30:23.700 --> 00:30:24.560
when I ask you to podcast,
00:30:25.000 --> 00:30:26.300
just go ahead and publish a podcast feed.
00:30:26.600 --> 00:30:27.780
I don't want you to narrate it
00:30:27.880 --> 00:30:28.840
like it's Michael or anything.
00:30:29.200 --> 00:30:30.260
I just want you to give me the audio,
00:30:30.620 --> 00:30:31.660
clean it up like you did before.
00:30:32.210 --> 00:30:35.060
And so now it gives me these really good audio feeds
00:30:35.400 --> 00:30:38.500
and I can just pull it up in my Overcast app.
00:30:38.540 --> 00:30:40.660
Yeah, it just gives you an RSS feed?
00:30:40.870 --> 00:30:41.380
And you just add it as a private.
00:30:41.380 --> 00:30:42.960
So I get an RSS feed of my own,
00:30:43.310 --> 00:30:44.740
you know, like stuff I want to listen to.
00:30:44.860 --> 00:30:46.440
And mostly it's just articles that are too long.
00:30:46.780 --> 00:30:48.120
And as I'm driving the kids along,
00:30:48.280 --> 00:30:48.960
they don't want to hear it.
00:30:49.060 --> 00:30:50.200
But once I drop them off from school,
00:30:50.290 --> 00:30:51.600
I can just turn that on and listen to it.
00:30:51.820 --> 00:30:56.800
It's just the wildest technology to be able to glue those things together without having the right code to do it.
00:30:56.940 --> 00:30:57.680
Yeah, that's really awesome.
00:30:57.880 --> 00:31:03.520
I mean, that's the kind of thing that you get from these really weird agents is you can just talk to them for a while.
00:31:03.750 --> 00:31:04.640
And they layer on like,
00:31:04.800 --> 00:31:08.900
well, OK, I do know how to do audio from text and I do know how to build a website.
00:31:09.310 --> 00:31:10.060
And you're like,
00:31:10.280 --> 00:31:10.400
OK,
00:31:10.650 --> 00:31:13.960
well, then it's very easy for me to just build you an RSS feed.
00:31:14.200 --> 00:31:16.720
Now you have your own podcast because and it just keeps learning.
00:31:17.120 --> 00:31:17.920
And just out of curiosity,
00:31:18.300 --> 00:31:19.180
I was just like thinking,
00:31:19.460 --> 00:31:20.700
you know, how this is different to
00:31:21.160 --> 00:31:22.940
say co-work or something like that.
00:31:23.180
--> 00:31:25.260
So I have a thing that backs up my Hermes.
00:31:25.600 --> 00:31:27.600
So it like kind of exports it out of the Docker container,
00:31:27.840 --> 00:31:28.820
zips it, puts it in somewhere
00:31:29.020 --> 00:31:29.180
encrypted,
00:31:29.400 --> 00:31:29.640
all that.
00:31:29.780 --> 00:31:31.700
But let me see if I can get it to tell me.
00:31:31.760 --> 00:31:32.180
Yeah, it has.
00:31:32.520 --> 00:31:33.040
When it started,
00:31:33.240 --> 00:31:34.340
it had just a couple of files,
00:31:34.600 --> 00:31:36.140
like a few settings and so on.
00:31:36.480 --> 00:31:36.880
And after,
00:31:37.280 --> 00:31:38.360
I don't know, I've had it for a few months.
00:31:38.600 --> 00:31:40.160
It's 16,000 files,
00:31:40.800 --> 00:31:42.580
780 megs zipped.
00:31:43.000 --> 00:31:43.980
I don't know how big it is unzipped.
00:31:44.280 --> 00:31:47.840
So that's a lot of stuff that it's collecting and learning.
00:31:48.340 --> 00:31:51.500
And every time you work with it, it has all of that at its disposal,
00:31:51.740 --> 00:31:51.840
right?
00:31:51.940 --> 00:31:54.740
All the lessons it's learned, all of its memory,
00:31:55.060 --> 00:31:55.820
but all of its tools.
00:31:55.900 --> 00:31:59.000
It's got hundreds of little utilities for it.
00:31:59.140 --> 00:32:01.720
I use a command line tool called, I think it's called QMD.
00:32:02.440 --> 00:32:03.720
I'll find it for you.
00:32:03.780 --> 00:32:06.740
But it basically is like a rag tool that you can use.
00:32:06.940 --> 00:32:11.860
And it's just a tool that it runs your markdown files through it.
00:32:12.100 --> 00:32:13.340
It creates like a rag index.
00:32:13.840 --> 00:32:16.380
And so I have mine and blogging and some of my tools.
00:32:16.480 --> 00:32:18.160
I have it run everything through QMD.
00:32:18.560 --> 00:32:22.160
And then that kind of gives it that rag to pull the right context out of stuff.
00:32:22.520 --> 00:32:23.140
It's pretty good.
00:32:23.180 --> 00:32:25.560
It might be something to play around with if you don't have rags set up.
00:32:25.740 --> 00:32:26.720
Yeah, I definitely don't.
00:32:26.980 --> 00:32:28.440
So query markdown documents.
00:32:28.860 --> 00:32:31.460
Well, I have a lot of markdown documents and I have a lot of questions.
00:32:31.600 --> 00:32:32.680
So I'm very excited about this.
00:32:32.760 --> 00:32:33.060
This is cool.
00:32:33.320 --> 00:32:36.440
You can give it to your Hermes and tell it to like, can you use this,
00:32:36.620 --> 00:32:37.380
figure out how to use it.
00:32:37.500 --> 00:32:38.360
And it's wild.
00:32:38.640 --> 00:32:39.460
Yeah, that's super cool.
00:32:39.860 --> 00:32:41.840
I think for me as a developer,
00:32:42.950 --> 00:32:43.300
I built,
00:32:43.500 --> 00:32:43.920
gosh,
00:32:44.240 --> 00:32:46.020
20 some years I've been writing Python code.
00:32:46.400 --> 00:32:53.480
And I know that there's a lot of angst and there's a lot of the things in AI that people
00:32:53.680 --> 00:32:54.040
talk about.
00:32:54.050 --> 00:32:57.240
I think this is the least popular amongst people who don't like AI.
00:32:58.120 --> 00:33:02.560
But for me, it really opened my eyes to kind of a new direction and new ways to solve problems,
00:33:03.220 --> 00:33:04.320
which I wouldn't have had otherwise.
00:33:05.440 --> 00:33:07.300
It's not that it's an always on agent.
00:33:07.620 --> 00:33:08.900
The application's always on,
00:33:09.180 --> 00:33:13.040
but having the ability to wake up and just go do things and follow up and check stuff.
00:33:13.560 --> 00:33:15.500
I know you can use task managers.
00:33:15.720 --> 00:33:16.920
You could use Celery.
00:33:17.080 --> 00:33:20.700
You could use many different libraries that kind of do this in your code.
00:33:20.860 --> 00:33:25.200
But I found that a couple of issues or a couple of problems that have been historically hard to solve,
00:33:25.520 --> 00:33:28.980
like I'll have scheduled tasks or something that run in production.
00:33:29.500 --> 00:33:34.799
And for my side projects and stuff, there's a lot of times that trying to set my local environment up
00:33:34.820 --> 00:33:36.280
and keeping track of those tasks
00:33:36.510 --> 00:33:38.900
because I might go into a database in production
00:33:39.190 --> 00:33:40.220
and I might change a schedule
00:33:40.720 --> 00:33:42.320
and I might kind of tweak things over time.
00:33:42.690 --> 00:33:45.260
And then it's really easy to not get those pulled back down
00:33:45.530 --> 00:33:47.360
in a way that like gets committed into code.
00:33:47.430 --> 00:33:49.620
And you try to like make some of those changes in code,
00:33:49.630 --> 00:33:50.760
but sometimes if something's wrong,
00:33:50.810 --> 00:33:51.800
I just need to get on my phone,
00:33:52.060 --> 00:33:53.540
hop into an admin and change that schedule.
00:33:53.940 --> 00:33:56.200
And so one of the things I realized
00:33:56.520 --> 00:33:58.680
is trying to keep those in sync, it just sucks.
00:33:58.920 --> 00:34:00.580
It's not that it's a hard problem, it's just tedious.
00:34:00.910 --> 00:34:02.000
And there's just a lot of options.
00:34:02.400 --> 00:34:06.520
And so Hermes kind of opened my eyes or OpenClaw itself opened my eyes up to like,
00:34:06.770 --> 00:34:07.120
why am I
00:34:07.250 --> 00:34:08.200
making this so hard?
00:34:08.580 --> 00:34:13.300
Why don't I just make like a page in my website that I can just download a schedule.markdown
00:34:13.540 --> 00:34:16.580
file and it just writes out what the schedules are in that file.
00:34:16.830 --> 00:34:18.159
Then I download it on my machine.
00:34:18.500 --> 00:34:21.260
I can just drag and drop that into my local machine.
00:34:21.620 --> 00:34:25.060
The schedule just gets picked up automatically because I've got an agent that just reads
00:34:25.220 --> 00:34:25.300
it.
00:34:25.330 --> 00:34:26.260
It syncs it locally.
00:34:26.629 --> 00:34:30.820
And then I can
just do edits with it or I can drag and drop it from local back up to
00:34:30.980 --> 00:34:31.159
production.
00:34:31.679 --> 00:34:34.159
It's just a different, it's just a simple context.
00:34:34.210 --> 00:34:36.460
I would never, to me, that would have been over engineering before.
00:34:37.020 --> 00:34:41.000
And now it's a two minute solution that actually scales better than trying to work out like
00:34:41.260 --> 00:34:45.740
which JSON do I want to admit the schedule via JSON and try to sync things up locally.
00:34:46.120 --> 00:34:47.820
And now I got to manage API keys.
00:34:48.139 --> 00:34:50.800
And really, I just want one file with everything in it.
00:34:50.990 --> 00:34:53.460
I can edit it by hand and sync it up again if I want to.
00:34:53.820 --> 00:34:55.080
So it's a dumb solution.
00:34:55.560 --> 00:34:56.580
It's just very effective though.
00:34:57.020 --> 00:34:58.500
And I just love that about this tech.
00:34:58.680 --> 00:34:59.080
I do too.
00:34:59.520 --> 00:35:02.820
And it is really weird how if you just provided a little bit of data,
00:35:02.940 --> 00:35:04.000
I could just take it and run with it.
00:35:04.060 --> 00:35:05.780
Like Markdown is really good for it, right?
00:35:06.080 --> 00:35:09.800
One of the things I made it do for me that was really helpful is obviously
00:35:11.020 --> 00:35:14.120
this recording as a video and as a podcast episode.
00:35:14.620 --> 00:35:17.980
But the podcast episode is always behind because I got to put show notes
00:35:18.060 --> 00:35:19.740
and transcripts and get it just right.
00:35:19.920 --> 00:35:21.780
And the videos just kind of lay in there.
00:35:21.860 --> 00:35:24.420
And so especially when I was live streaming them continuously,
00:35:24.920 --> 00:35:28.740
YouTube would be full of the things just called Talk Python 427.
00:35:29.320 --> 00:35:30.640
live stream. I'm like, oh man,
00:35:30.840 --> 00:35:32.920
there's hundreds of these videos. I got to go back.
00:35:33.190 --> 00:35:33.580
Now that they
00:35:33.580 --> 00:35:34.420
all have proper titles,
00:35:34.600 --> 00:35:37.060
they have proper links and so on, I want to put those all back.
00:35:37.240 --> 00:35:38.060
So I wanted
00:35:38.130 --> 00:35:41.000
it to go and manage my YouTube channel and it does now.
00:35:41.200 --> 00:35:43.140
So several times a day, it looks and see if
00:35:43.320 --> 00:35:45.380
anything's new there. If anything's released on the podcast,
00:35:45.920 --> 00:35:47.580
it'll like take all the details through
00:35:47.580 --> 00:35:51.960
the MCP server on Talk Python and stuff. And then it'll re it'll manage on my behalf.
00:35:52.160 --> 00:35:52.500
It'll manage
00:35:52.660 --> 00:35:53.180
the YouTube channel.
00:35:53.380 --> 00:35:53.460
It's,
00:35:53.660 --> 00:35:56.939
it's got all the historical stuff is like completely in sync with
00:35:56.960 --> 00:35:57.680
the latest details,
00:35:57.980 --> 00:35:58.560
which is really cool.
00:35:58.560 --> 00:36:01.840
And I think even if I edit one that's already out there for a while,
00:36:02.120 --> 00:36:02.240
it'll
00:36:02.420 --> 00:36:03.900
discover the differences and fix it.
00:36:04.160 --> 00:36:05.320
But here's why I bring this up,
00:36:05.520 --> 00:36:06.340
not just as an example,
00:36:06.540 --> 00:36:07.100
but I want to get your
00:36:07.260 --> 00:36:10.880
thoughts on this is I open, I said, I want, I want to do this,
00:36:11.240 --> 00:36:11.640
but it's not
00:36:11.800 --> 00:36:16.720
super easy for Hermes to navigate the nuances of the YouTube API.
00:36:16.980 --> 00:36:17.760
So I said, Hermes,
00:36:18.160 --> 00:36:19.680
what do you need to do to do this?
00:36:19.980 --> 00:36:21.600
You tell me the actions you need done.
00:36:21.760 --> 00:36:22.680
So X, Y, Z,
00:36:22.840 --> 00:36:22.940
right?
00:36:23.300 --> 00:36:23.640
Copy that.
00:36:23.800 --> 00:36:24.620
I went over to Claude, I said,
00:36:24.820 --> 00:36:29.920
Claude, I need you to build me a Python package with this interface and as a CLI.
00:36:30.220 --> 00:36:31.160
And Claude built it.
00:36:31.220 --> 00:36:32.800
And so I just give Hermes the wheel.
00:36:33.220 --> 00:36:33.860
And I say, Hermes,
00:36:34.120 --> 00:36:35.040
this is how you talk to YouTube.
00:36:35.380 --> 00:36:37.480
And it's been working the YouTube channel ever since.
00:36:37.640 --> 00:36:38.500
It's incredible, right?
00:36:38.720 --> 00:36:40.680
Because Claude is awesome at managing,
00:36:40.900 --> 00:36:42.440
Claude code is awesome at managing,
00:36:42.680 --> 00:36:45.540
building that thing to exactly the API specification.
00:36:45.860 --> 00:36:50.160
And then I just give it this loose CLI way for Hermes to talk to the YouTube channel about it.
00:36:50.180 --> 00:36:50.760
And off they go.
00:36:51.120 --> 00:36:53.760
I think CLIs are incredibly powerful for this tech.
00:36:54.500 --> 00:36:56.100
I think it's a shame that Anthropic,
00:36:56.520 --> 00:36:57.360
like when we started,
00:36:58.240 --> 00:37:00.520
OpenClaw was really good at driving Claude Code
00:37:00.800 --> 00:37:03.080
and they kind of went out of the way to change.
00:37:03.230 --> 00:37:04.820
I think people were just using it
00:37:04.820 --> 00:37:06.340
and it was hitting the resources too much.
00:37:06.700 --> 00:37:09.440
But like you can have Hermes drive Codex now.
00:37:09.780 --> 00:37:11.600
You can't really get away with Claude Code
00:37:11.820 --> 00:37:13.300
unless they change the rules again.
00:37:13.740 --> 00:37:15.700
But it's wild to me that you can go through
00:37:15.700 --> 00:37:17.280
that exact same step you were doing
00:37:17.570 --> 00:37:19.460
where you tell if Hermes can't do it,
00:37:19.620 --> 00:37:21.800
telling Hermes to have Codex go and solve the problem,
00:37:21.970 --> 00:37:23.520
write the Python script and pick it back
00:37:23.640 --> 00:37:23.760
up.
00:37:24.080 --> 00:37:26.020
We've just never had tech
that can do that.
00:37:26.360 --> 00:37:28.740
And even though this is non-deterministic,
00:37:29.140 --> 00:37:30.580
the way you make it deterministic is,
00:37:30.920 --> 00:37:32.640
like I said, take your skill files,
00:37:32.820 --> 00:37:33.720
write the steps you want
00:37:33.720 --> 00:37:34.380
it to do out,
00:37:34.540 --> 00:37:36.180
or even better, write Python code,
00:37:36.420 --> 00:37:39.080
because Python's going to cement that technique
00:37:39.330 --> 00:37:41.180
or submit those steps in actual code.
00:37:41.390 --> 00:37:43.680
And then you're going to save a lot of time by not figuring
00:37:43.860 --> 00:37:45.900
out what are the five steps I need to do. It just says,
00:37:46.150 --> 00:37:48.379
go run this Python on your channel or
00:37:48.540 --> 00:37:50.100
whatever your YouTube domain is, you know?
00:37:50.440 --> 00:37:50.540
Exactly.
00:37:51.000 --> 00:37:52.580
And that you mentioned at the opening,
00:37:53.000 --> 00:37:54.800
you know, how these things are non-deterministic
00:37:54.900 --> 00:37:55.780
and how that can be a problem.
00:37:56.280 --> 00:37:56.380
Well,
00:37:56.640 --> 00:38:00.440
a really good way to fix that is to make this non-deterministic thing, write a
00:38:00.640 --> 00:38:01.820
Python file that you verify,
00:38:02.360 --> 00:38:03.380
and then you just say, run that.
00:38:03.680 --> 00:38:04.120
Exactly.
00:38:04.400 --> 00:38:04.520
Yeah.
00:38:04.920 --> 00:38:05.800
I do that a lot,
00:38:06.020 --> 00:38:07.100
especially with CLI tools.
00:38:07.380 --> 00:38:08.880
I write so many CLI tools.
00:38:09.160 --> 00:38:10.140
The last couple of weeks,
00:38:10.360 --> 00:38:12.540
MCP, I feel like it's starting to get really good.
00:38:12.780 --> 00:38:16.640
And so now I'm kind of skipping a step and I've just writing MCP into my web apps,
00:38:16.880 --> 00:38:16.940
but
00:38:16.940 --> 00:38:17.680
I'm a web developer.
00:38:17.860 --> 00:38:19.140
So everything I do is mostly web.
00:38:19.330 --> 00:38:21.820
And so I've really enjoyed kind of taking that step.
00:38:22.050 --> 00:38:25.600
And then that way Hermes can go talk to my website or go do the action for me.
00:38:25.690 --> 00:38:26.520
If that's not an option,
00:38:26.920 --> 00:38:28.180
having it write CLI apps,
00:38:28.560 --> 00:38:31.020
because you can give it like when we were talking transcriptions,
00:38:31.640 --> 00:38:33.380
I like an application called Mac Whisper,
00:38:33.740 --> 00:38:35.520
and they created a really good CLI.
00:38:35.960 --> 00:38:36.960
And so that lets them run.
00:38:37.410 --> 00:38:41.300
And by taking that CLI tool and giving it to Hermes or any of these agents,
00:38:41.530 --> 00:38:44.180
the first thing they do is they run the command with like --help.
00:38:44.330 --> 00:38:46.040
And they look at all the options and they're like,
00:38:46.200 --> 00:38:46.220
oh,
00:38:46.500 --> 00:38:47.360
transcribe video,
00:38:47.680 --> 00:38:48.820
cool, I know how this works.
00:38:48.910 --> 00:38:49.320
And speakers,
00:38:49.640 --> 00:38:50.700
oh, you got speaker support.
00:38:51.180 --> 00:38:53.860
So I've had it pick up on new options and features
00:38:54.030 --> 00:38:55.860
that I didn't even know were in these CLI tools
00:38:56.300 --> 00:38:57.920
just because it checks the docs.
00:38:57.970 --> 00:38:59.380
I don't, you know, I'm used to running this.
00:38:59.560 --> 00:39:02.140
If the command works and I know what I want it to do,
00:39:02.660 --> 00:39:03.700
I'm used to the old Linux,
00:39:04.180 --> 00:39:05.020
things just don't change.
00:39:05.380 --> 00:39:07.320
You know, like grep has been grep for 30 years,
00:39:07.620 --> 00:39:08.700
you know, like it just doesn't change much.
00:39:09.120 --> 00:39:10.840
So it's just cool that it picks up on us
00:39:11.120 --> 00:39:12.640
on like the ability to have eight different speakers
00:39:12.810 --> 00:39:14.520
in a podcast and detect it accurately.
00:39:15.220 --> 00:39:18.440
Yeah, and one of the big differences is it'll remember that.
00:39:18.760 --> 00:39:23.540
It'll say, I tried to do that, but I learned that the MacWhisperer CLI has this feature.
00:39:23.670 --> 00:39:28.600
So anytime someone else asks me to do this job, I'll use this new feature because I don't need to,
00:39:28.800 --> 00:39:31.420
like, it'll transcode the video automatically rather than,
00:39:31.670 --> 00:39:33.380
like, using FFmpeg or something, right?
00:39:33.600 --> 00:39:35.140
Yeah, it's amazing.
00:39:35.860 --> 00:39:37.140
Let's talk UIs.
00:39:37.250 --> 00:39:39.600
I think UIs are, there's something else.
00:39:39.910 --> 00:39:40.380
You know what I mean?
00:39:40.750 --> 00:39:42.340
So if you go over,
00:39:42.620 --> 00:39:44.920
there's something really weird about Hermes.
00:39:45.280 --> 00:39:50.680
it's not entirely clear like how to get it honestly if you go you search for hermes there's hermes
00:39:51.000 --> 00:39:55.660
agent but then there's a bunch of other things that are at domains that are like hermes but then
00:39:55.900 --> 00:40:01.120
they're either taken over by the same company eventually or they're trying to impersonate i don't
00:40:01.180 --> 00:40:06.780
know when you if you go if you go to like to their main site and it says it's it says what you want
00:40:06.840 --> 00:40:11.199
is you want to get it for your mac os so you download it and it gives you a desktop installer
00:40:11.500 --> 00:40:12.800
like, wait a minute, I have a desktop app.
00:40:12.850 --> 00:40:15.100
I wanted a thing that would constantly run somewhere.
00:40:15.250 --> 00:40:16.980
Like, what is this desktop app thing, right?
00:40:17.220 --> 00:40:17.300
Like,
00:40:17.620 --> 00:40:18.540
talk people through that.
00:40:18.620 --> 00:40:20.060
Like, how do you run it and how do you talk to it?
00:40:20.240 --> 00:40:22.720
I mean, I think that you and I aren't normies.
00:40:23.140 --> 00:40:25.280
And I think for
normies going and saying,
00:40:25.660 --> 00:40:26.220
what's a terminal,
00:40:26.460 --> 00:40:27.120
what's a shell,
00:40:27.320 --> 00:40:28.140
what's a console?
00:40:28.660 --> 00:40:28.800
Like,
00:40:28.960 --> 00:40:30.500
it's just, it doesn't much.
00:40:30.580 --> 00:40:31.480
It's just so confusing.
00:40:31.820 --> 00:40:35.340
So I think Hermes started off as a gob of Python files
00:40:35.680 --> 00:40:35.820
that,
00:40:36.020 --> 00:40:36.120
you know,
00:40:36.320 --> 00:40:37.480
we knew how to use.
00:40:37.600 --> 00:40:38.480
We're used to Python.
00:40:38.730 --> 00:40:39.960
I think the original version,
00:40:40.160 --> 00:40:44.640
You might've even did like a pip install or uv installed installed as a Python package running.
00:40:44.960 --> 00:40:45.900
And over time,
00:40:46.220 --> 00:40:47.740
they've tried to make the experience nicer.
00:40:48.240 --> 00:40:50.120
So now you can just download it for your desktop.
00:40:50.620 --> 00:40:52.260
You can double click the thing to run it.
00:40:52.460 --> 00:40:55.260
And then you can see it running and it gives you the chat interface.
00:40:56.300 --> 00:40:59.580
These things used to be like OpenClaw was one of the worst applications.
00:41:00.280 --> 00:41:03.700
It took me back to like being a kid from the 90s and trying to put Linux on.
00:41:03.980 --> 00:41:09.960
And it's like, here's two hours of setup just to like get to a terminal and not know how to log into it, right?
00:41:10.260 --> 00:41:19.140
Like it was such a bad experience because you would have to even go and figure out like, how do I configure an application with Slack or Telegram or Discord?
00:41:19.820 --> 00:41:19.920
You know,
00:41:20.140 --> 00:41:21.660
like you were kind of hitting every limb,
00:41:21.900 --> 00:41:23.160
falling out of the tree on the way down.
00:41:23.370 --> 00:41:27.080
And so I think the desktop experience gets you a working Hermes.
00:41:27.350 --> 00:41:31.160
It gets you into a chat interface where you can just do something with it to start.
00:41:31.460 --> 00:41:37.700
And then one thing I realized today or learned today is most of what I'm running is that Hermes agent, the server,
00:41:38.180 --> 00:41:39.820
I'm running that on the Mac mini at my house.
00:41:40.260 --> 00:41:41.440
I like using tail scale,
00:41:41.760 --> 00:41:43.400
which is just everybody should use tail scale.
00:41:43.560 --> 00:41:44.900
If you have a phone and a
00:41:45.040 --> 00:41:46.380
computer and you ever want them to talk.
00:41:46.680 --> 00:41:48.720
And so I've got it running at home.
00:41:48.960 --> 00:41:49.580
And then at work,
00:41:49.680 --> 00:41:50.820
I've got the Hermes desktop,
00:41:51.340 --> 00:41:52.240
but I want, because I'm,
00:41:52.400 --> 00:41:54.220
I want to talk to my Hermes agent at home.
00:41:54.540 --> 00:41:54.780
So I,
00:41:55.320 --> 00:41:57.660
they've got an option that lets you say, this is the server.
00:41:57.820 --> 00:41:58.560
Here's the username and
00:41:58.880 --> 00:41:59.660
password that I'm using.
00:42:00.080 --> 00:42:01.660
And it lets you self host that. And it just,
00:42:01.820 --> 00:42:02.620
it works magically.
00:42:02.800 --> 00:42:03.040
Like you
00:42:03.160 --> 00:42:06.240
have the cloud desktop open or any of these other desktop tools.
00:42:06.420 --> 00:42:07.240
Yeah, that's super neat.
00:42:07.440 --> 00:42:07.500
So,
00:42:07.960 --> 00:42:08.160
but
00:42:08.060 --> 00:42:11.800
But you got to know that it's not super obvious when you go to the website and it says download
00:42:11.860 --> 00:42:12.240
it for Mac.
00:42:12.740 --> 00:42:12.860
No.
00:42:13.040 --> 00:42:14.460
You end up with just a local app,
00:42:14.640 --> 00:42:14.760
right?
00:42:15.140 --> 00:42:15.340
Exactly.
00:42:15.940 --> 00:42:16.960
And they've got all the weird,
00:42:17.240 --> 00:42:19.520
I don't know why they've overthought even like the website
00:42:19.740 --> 00:42:20.220
would go to it.
00:42:20.300 --> 00:42:22.900
Like what's all the blue and why is it, am I in an aquarium?
00:42:23.300 --> 00:42:24.200
Like what is this?
00:42:25.020 --> 00:42:25.140
Yeah.
00:42:25.500 --> 00:42:25.580
Yeah.
00:42:25.620 --> 00:42:28.880
I only say that because I know people are going to listen to this episode and go, well,
00:42:28.900 --> 00:42:29.380
that sounds cool.
00:42:29.380 --> 00:42:30.100
Let me go check it out.
00:42:30.200 --> 00:42:30.380
They're like,
00:42:30.560 --> 00:42:31.720
I don't even know what I'm getting at.
00:42:31.820 --> 00:42:36.340
So for me, I go to the repo or it, which I go back.
00:42:36.700 --> 00:42:37.500
And in here,
00:42:37.680 --> 00:42:40.740
there's a Docker or Docker compose.
00:42:40.990 --> 00:42:41.320
Here you go.
00:42:41.620 --> 00:42:42.020
Docker compose.
00:42:42.650 --> 00:42:45.560
And just actually have a Docker compose dot overrides
00:42:45.650 --> 00:42:47.580
or whatever the naming convention is
00:42:47.870 --> 00:42:49.920
that I set some things in there and off it goes.
00:42:50.300 --> 00:42:52.600
So that's how I've been running it these days.
00:42:53.000 --> 00:42:54.780
It does maybe limit it a little bit.
00:42:55.040 --> 00:42:56.660
Like it can't completely control your Mac.
00:42:57.180 --> 00:42:58.060
But for me, that's okay.
00:42:58.090 --> 00:42:59.440
I just have it installed what it needs.
00:42:59.540 --> 00:43:01.160
So that's why I've got the spare Mac
00:43:01.400 --> 00:43:02.900
that I just kind of had it at home anyways,
00:43:03.320 --> 00:43:05.399
because I wanted to just be able to set down on a machine
00:43:05.420 --> 00:43:06.540
and it'd be connected to a display.
00:43:07.100 --> 00:43:07.700
So yeah,
00:43:07.860 --> 00:43:09.460
for me, it's like you can just have this machine.
00:43:10.120 --> 00:43:10.740
And otherwise,
00:43:11.100 --> 00:43:12.900
putting it in a container like Docker,
00:43:13.350 --> 00:43:15.120
even putting it in the VPS is the
way to go.
00:43:15.440 --> 00:43:17.440
I just don't encourage people to go spend money
00:43:17.530 --> 00:43:18.580
on these things or run them.
00:43:18.650 --> 00:43:20.500
I think if you know Compose, you know Docker,
00:43:20.800 --> 00:43:21.080
try that.
00:43:21.820 --> 00:43:23.920
Honestly, though, the desktop app is probably fine.
00:43:24.180 --> 00:43:24.880
It probably is.
00:43:24.920 --> 00:43:27.320
I'm just not sure what the life cycle of it is
00:43:27.560 --> 00:43:29.660
because one of the things that's cool about Hermes
00:43:29.790 --> 00:43:31.820
is I have stuff that runs 24-7.
00:43:32.130 --> 00:43:34.020
You know, every 15 minutes it does this.
00:43:34.420 --> 00:43:37.600
We'll get into probably the most wild use case that I have for that.
00:43:38.240 --> 00:43:38.320
But,
00:43:38.530 --> 00:43:39.100
you know, it'll check.
00:43:39.390 --> 00:43:44.040
Like it's constantly checking the RSS feed to see if there's something new since the last time it's updated the YouTube channel.
00:43:44.240 --> 00:43:49.640
Then it'll go kick off the YouTube fix improver that if something comes out and it finds there's a video.
00:43:49.900 --> 00:43:51.840
You know, like I just want that stuff to run all the time.
00:43:52.040 --> 00:43:53.660
And if I have a laptop and I shut the screen,
00:43:53.970 --> 00:43:54.800
I don't want it to stop.
00:43:55.020 --> 00:43:56.580
Yeah, I think it runs in the background,
00:43:56.880 --> 00:43:58.220
but we'd have to check on that to see.
00:43:58.520 --> 00:43:58.700
Yeah.
00:43:59.419 --> 00:44:01.760
I think what's so amazing about this tech,
00:44:01.940 --> 00:44:03.380
it's like when you write Python,
00:44:03.720 --> 00:44:04.300
like when I was a kid,
00:44:04.400 --> 00:44:06.320
I used to think about programming felt like little spells,
00:44:06.600 --> 00:44:07.280
like you were doing magic.
00:44:07.700 --> 00:44:08.860
And part of it was like engineering.
00:44:09.060 --> 00:44:11.380
It's like, ooh, I can build robots in my head, these applications.
00:44:11.570 --> 00:44:12.380
They run the steps.
00:44:12.470 --> 00:44:13.960
It all makes, it's all very orderly.
00:44:14.210 --> 00:44:16.480
But Python only does what you tell it to do.
00:44:16.690 --> 00:44:21.440
And this, I feel like, is one of the first inflection points of tech where you can teach
00:44:21.450 --> 00:44:22.300
it a bunch of steps.
00:44:22.700 --> 00:44:26.620
You can kind of tell it what you want it to do without it already knowing how to do it.
00:44:26.980 --> 00:44:31.420
And it can get, it either does it or it gets you to the last mile where you can help it
00:44:31.430 --> 00:44:32.600
with those last little bit of steps.
00:44:32.820 --> 00:44:37.260
And it's like, like the create a podcast episode for me so I can listen to my car on the fly,
00:44:37.880 --> 00:44:38.100
you know,
00:44:38.260 --> 00:44:42.720
just the agency to be able to work and do that remotely and give me what I need,
00:44:42.840 --> 00:44:43.300
what I want.
00:44:43.560 --> 00:44:44.520
I, I don't know.
00:44:44.590 --> 00:44:46.100
I don't know any other tech that does this.
00:44:46.360 --> 00:44:46.980
It's incredible.
00:44:47.160 --> 00:44:49.180
It could have no capability of a thing.
00:44:49.490 --> 00:44:51.100
You talk to it for a minute and it's,
00:44:51.410 --> 00:44:52.560
it can then do it right.
00:44:52.700 --> 00:44:53.080
Which is,
00:44:53.460 --> 00:44:54.780
and it remembers that it can do it.
00:44:54.840 --> 00:44:55.280
That's crazy.
00:44:55.440 --> 00:44:58.780
So one of the things that I did, just there's a bunch of different ways you can talk to it.
00:44:58.840 --> 00:44:59.720
There's the CLI,
00:45:00.080 --> 00:45:02.300
there's a web app that they're improving.
00:45:02.380 --> 00:45:03.500
I think it's called,
00:45:03.660 --> 00:45:05.740
yeah, there it is called Hermes web UI,
00:45:06.320 --> 00:45:07.780
which is weird that there's
00:45:07.880 --> 00:45:10.600
not a single screenshot of the UI with the whole project.
00:45:10.780 --> 00:45:11.720
It's called the UI,
00:45:12.020 --> 00:45:12.580
but you know, whatever.
00:45:13.000 --> 00:45:15.520
Is this like a third party thing and not news, I assume?
00:45:15.740 --> 00:45:15.900
Yeah.
00:45:15.960 --> 00:45:16.040
See,
00:45:16.200 --> 00:45:16.940
like, that's what I thought.
00:45:17.060 --> 00:45:17.900
But then you go here.
00:45:19.340 --> 00:45:19.480
No,
00:45:19.640 --> 00:45:21.520
this is an independent community project.
00:45:21.740 --> 00:45:22.100
Yes, exactly.
00:45:22.620 --> 00:45:24.800
But the URL is gethermes.ai.
00:45:25.000 --> 00:45:25.440
Like that's how,
00:45:25.660 --> 00:45:28.140
that's why it's so confusing because you search that these other things
00:45:28.320 --> 00:45:30.400
come up and I'm like, why is it so weird on that?
00:45:30.580 --> 00:45:31.720
Because I'll tell you why.
00:45:31.740 --> 00:45:35.880
It's because the nose research company that built Hermes, they tried to do something
00:45:36.130 --> 00:45:36.220
different,
00:45:36.440 --> 00:45:38.080
but I feel like they're just a bunch of researchers.
00:45:38.760 --> 00:45:39.600
They're not product people,
00:45:40.020 --> 00:45:40.200
you know?
00:45:40.210 --> 00:45:41.320
So like, we don't really need the UI.
00:45:41.500 --> 00:45:41.900
Like we'll,
00:45:42.080 --> 00:45:42.960
we'll figure that out later.
00:45:43.080 --> 00:45:44.740
If you're like, we're using it, you know, like,
00:45:44.920 --> 00:45:45.740
wait, how are you using it?
00:45:45.980 --> 00:45:46.080
Funny.
00:45:46.300 --> 00:45:50.560
But so one of the things I think maybe is worth talking about a little bit that I thought
00:45:50.590 --> 00:45:52.200
was maintaining it over time.
00:45:52.650 --> 00:45:53.240
I found that,
00:45:53.540 --> 00:45:53.760
you know,
00:45:54.040 --> 00:45:54.920
if you look at,
00:45:55.270 --> 00:45:55.360
uh,
00:45:55.660 --> 00:45:57.100
if you go to the
Git repo for this thing,
00:45:57.340 --> 00:45:58.040
it's by the way,
00:45:58.340 --> 00:46:00.140
far more popular than any Python thing.
00:46:00.190 --> 00:46:01.380
I know it, by the way.
00:46:01.440 --> 00:46:02.400
It's also is Python,
00:46:02.600 --> 00:46:02.660
right?
00:46:02.800 --> 00:46:03.860
That's, that's also interesting.
00:46:03.960 --> 00:46:05.100
It is itself built in Python,
00:46:05.340 --> 00:46:07.460
even though that's not necessarily super germane.
00:46:07.560 --> 00:46:08.340
It's still interesting,
00:46:08.720 --> 00:46:11.340
but it has 252,000 stars,
00:46:11.860 --> 00:46:13.300
54,000 forks.
00:46:13.720 --> 00:46:14.260
That's crazy.
00:46:14.610 --> 00:46:19.740
I think it probably has more forks than the most popular Python applications have total
00:46:19.940 --> 00:46:20.040
stars.
00:46:20.420 --> 00:46:21.860
So that is a wild deflection point.
00:46:22.060 --> 00:46:23.080
That is a really wild.
00:46:23.440 --> 00:46:27.340
If you come down to the releases, this is where I think it gets pretty wild.
00:46:28.020 --> 00:46:33.240
say yeah so there was uh 21.5 let's just say so people can reference it right a couple weeks ago
00:46:33.240 --> 00:46:42.800
came out on september and it had 460 prs not commits prs i think yeah 1 600 commits 4 800
00:46:43.180 --> 00:46:50.920
changed files 475 closed issues that's 2 21.5 there was 21.4 that was like three days before
00:46:51.120 --> 00:47:00.440
three days before it so when you say it had 5,000 commits and um 1800 merge prs yeah and 400 460
00:47:00.560 --> 00:47:06.480
merge prs that's for three days yeah the change of this thing is insane and so if you want a new
00:47:06.640 --> 00:47:11.460
version it might sound like well i just swap out the app but like it's internally it's little pieces
00:47:12.140 --> 00:47:17.600
used to depend on how it was before right it's capabilities before and maybe even little bits of
00:47:17.540 --> 00:47:19.020
API or environmental bits.
00:47:19.260 --> 00:47:22.020
And I found every now and then it can kind of drift and something
00:47:22.180 --> 00:47:23.680
doesn't quite work right. What do you think?
00:47:23.940 --> 00:47:24.620
That's really what,
00:47:25.120 --> 00:47:25.480
strangely enough,
00:47:25.640 --> 00:47:25.920
Fermi's
00:47:25.920 --> 00:47:30.080
has been very stable for me. And I do think that there's some drift and there's some rot that can
00:47:30.240 --> 00:47:31.020
happen over time.
00:47:31.300 --> 00:47:35.000
And I think we're still trying to learn because you're having to do stuff day
00:47:35.180 --> 00:47:35.680
after day.
00:47:35.980 --> 00:47:39.660
And especially if it's waking up every 15 minutes and it's trying to keep a memory,
00:47:40.000 --> 00:47:46.380
I do think that it's easy to get inundated with logs and extra context that maybe doesn't matter.
00:47:46.780 --> 00:47:49.820
And so I think we're kind of learning that these tasks, you don't really need to remember,
00:47:49.970 --> 00:47:50.800
you just need to do.
00:47:51.050 --> 00:47:53.020
And it's kind of like we're figuring those patterns out.
00:47:53.380 --> 00:47:58.060
With OpenClaw, the thing that would kill me is that I would try to update it like a couple
00:47:58.160 --> 00:48:01.040
times a week because I'm excited that there's a new feature coming out.
00:48:01.420 --> 00:48:03.440
And it just would flat out break and not work.
00:48:03.700 --> 00:48:05.640
And it used to just frustrate me because every day,
00:48:05.800 --> 00:48:06.940
every update, I would hold my breath
00:48:07.070 --> 00:48:08.000
and I knew it was going to break.
00:48:08.280 --> 00:48:10.120
Hermes has been very stable for me.
00:48:10.470 --> 00:48:12.080
And they do nightly updates on it too.
00:48:12.250 --> 00:48:13.500
So if you go and run the update,
00:48:13.780 --> 00:48:15.780
you'll see like 0215,
00:48:16.130 --> 00:48:16.740
but it'll have the
00:48:16.760 --> 00:48:18.780
current date on it, even though this is two weeks old.
00:48:18.940 --> 00:48:20.340
It's amazing how quickly.
00:48:20.650 --> 00:48:21.200
And I think with
00:48:21.210 --> 00:48:22.400
the tsunami of like,
00:48:22.630 --> 00:48:24.440
I think open source projects in general,
00:48:24.610 --> 00:48:26.520
we weren't prepared for what agentic
00:48:26.780 --> 00:48:27.280
coding is.
00:48:27.620 --> 00:48:30.060
And I don't think we're ready and a lot of projects just aren't.
00:48:30.300 --> 00:48:30.940
But you're seeing this
00:48:31.180 --> 00:48:35.920
new classification of project like Hermes that I don't know how many humans are actually writing
00:48:36.120 --> 00:48:36.620
code for it.
00:48:36.880 --> 00:48:37.660
It's very stable.
00:48:37.900 --> 00:48:38.460
It's getting better.
00:48:38.750 --> 00:48:41.440
But this is like everybody point your agents at
00:48:41.500 --> 00:48:46.080
it or news has their own system for how they're controlling it. That might be a fun case study to
00:48:46.100 --> 00:48:50.420
see because they're kind of embracing it and they're taking in these thousands of pull requests
00:48:50.760 --> 00:48:55.160
and they have some way of vetting it and managing it that's just a little different like if django
00:48:55.340 --> 00:49:00.940
gets 50 security um prs in a week or they wake up to a dozen of them you know that's kind of that's
00:49:01.040 --> 00:49:04.840
kind of overwhelming even though that's smaller numbers but you look at what they're doing in a
00:49:05.000 --> 00:49:09.080
day you know if they're getting hundreds a day or they're doing one of the numbers you showed was
00:49:09.200 --> 00:49:15.099
like 1200 or 1500 closed prs of what the release before this maybe and it's like that's a
00:49:15.060 --> 00:49:19.840
tremendous amount that you're going through and they're just it's just a different model than what
00:49:19.840 --> 00:49:28.200
we're used to yeah that's so that um that that number the 1812 yeah and 2116 closed issues
that's
00:49:28.200 --> 00:49:34.180
over a seven day period that's wild you know if you've got i guess infinite agents and tokens and
00:49:34.360 --> 00:49:40.260
you just have it fixing problems all the time then it's it's a different world i my feel is i agree
00:49:40.280 --> 00:49:40.500
totally.
00:49:40.700 --> 00:49:41.560
My feel is that people,
00:49:42.080 --> 00:49:42.860
there's a bunch of people,
00:49:43.500 --> 00:49:44.800
obviously it attracts a certain type
00:49:44.880 --> 00:49:45.240
of person,
00:49:45.580 --> 00:49:46.600
right? For these kinds of things.
00:49:46.820 --> 00:49:47.880
And they're probably filing,
00:49:48.160 --> 00:49:49.400
having their agents file
00:49:49.640 --> 00:49:49.760
issues.
00:49:49.960 --> 00:49:52.840
And there's just a bunch of stuff, a bunch of things going on.
00:49:53.000 --> 00:49:53.720
And you're right, it would be
00:49:53.740 --> 00:49:55.260
a really interesting case study.
00:49:55.720 --> 00:49:58.180
So one thing that I found actually very helpful is I talked to you
00:49:58.320 --> 00:50:03.820
about using Claude Code to help me build that YouTube API. I've used it for other things as well.
00:50:04.100 --> 00:50:05.360
You can't talk to this. Well,
00:50:05.680 --> 00:50:05.840
hold on,
00:50:06.020 --> 00:50:08.000
tell me what you need and Claude and I'll go make it and
00:50:07.960 --> 00:50:09.220
I'll be back in 30 minutes,
00:50:09.460 --> 00:50:09.540
right?
00:50:10.380 --> 00:50:16.300
But I've also found that Claude Code is incredibly good at understanding and diagnosing Hermes.
00:50:16.660 --> 00:50:21.240
So if I just open up the Hermes project where it's running in Claude Code and I say, hey,
00:50:21.440 --> 00:50:21.980
there's this problem,
00:50:22.180 --> 00:50:25.980
it can look at the files that's generated at the markdown personas and
00:50:26.060 --> 00:50:26.480
other things.
00:50:26.660 --> 00:50:28.200
And instead of me trying to fix it,
00:50:28.380 --> 00:50:29.940
I just have Claude fix it if something goes wrong.
00:50:30.060 --> 00:50:30.760
And it's really good.
00:50:30.980 --> 00:50:33.040
I do that all the time with my client projects,
00:50:33.240 --> 00:50:33.340
even,
00:50:33.680 --> 00:50:34.960
because there's always a log someplace.
00:50:35.420 --> 00:50:40.680
It's looking at a log on the server and it can find that problem and it can propose it takes seconds.
00:50:40.900 --> 00:50:43.520
It used to take hours to try to figure out what's the log file,
00:50:43.700 --> 00:50:44.440
what's the right lines.
00:50:44.700 --> 00:50:47.600
So I'm not surprised at all that you're seeing that success from it.
00:50:47.880 --> 00:50:52.140
One of them that I did was I've got a Home Assistant box called Home Assistant Green.
00:50:52.520 --> 00:50:57.080
I went through many Raspberry Pis and I finally just wanted to support the people who make Home Assistant.
00:50:57.400 --> 00:51:02.160
So it's a box that controls all the lights in my house and locks and music and all the things.
00:51:02.260 --> 00:51:06.160
And originally I started using it because everybody had a different format.
00:51:06.480 --> 00:51:12.100
And I just wanted to pick my phone up and be able to turn the lights off in my living room and not care if it's Hughes or Wise or what it is.
00:51:12.200 --> 00:51:12.240
Like,
00:51:12.500 --> 00:51:13.860
I just want the light off. I don't care how.
00:51:14.160 --> 00:51:18.580
And so it was a nice bridge to be able to put all the tech together and put them in groups and stuff.
00:51:18.920 --> 00:51:23.480
And so I brought one of my orange pies home that has Hermes on it.
00:51:23.560 --> 00:51:24.580
And I basically said,
00:51:24.940 --> 00:51:27.540
your job is to run my home assistant because it's a pain.
00:51:27.860 --> 00:51:32.120
I don't want to write YAML. I like YAML, but I cannot understand the YAML it takes to get home assistant.
00:51:32.180 --> 00:51:32.520
to work.
00:51:32.820 --> 00:51:36.000
And so I gave it the IP address and said, here you go.
00:51:36.200 --> 00:51:36.940
And it said, well, why don't you
00:51:37.040 --> 00:51:38.980
build a, and I was using Claude code to help me.
00:51:39.260 --> 00:51:41.880
And so Claude, between Claude code Hermes,
00:51:42.100 --> 00:51:42.340
basically
00:51:42.400 --> 00:51:43.820
it said, well, you need to build a service account.
00:51:44.280 --> 00:51:44.760
And I'm like, okay,
00:51:44.920 --> 00:51:45.880
that's like an API key.
00:51:46.200 --> 00:51:46.380
I can
00:51:46.480 --> 00:51:47.620
give you the API key rather.
00:51:47.900 --> 00:51:48.920
They gave it an API key.
00:51:49.240 --> 00:51:50.960
It was checking to diagnose a few things.
00:51:51.220 --> 00:51:53.520
And then that's when it said, well, that's not quite good enough.
00:51:53.780 --> 00:51:55.540
I need you to build a user
00:51:55.760 --> 00:51:57.060
account for me and create a service account.
00:51:57.500 --> 00:51:59.280
And then I got to this point where it was trying to
00:51:59.300 --> 00:52:00.140
tell me stuff to do.
00:52:00.460 --> 00:52:01.700
And so once I built that account,
00:52:02.080 --> 00:52:03.640
I started telling it like, I'm not going
00:52:03.640 --> 00:52:04.020
to do this.
00:52:04.260 --> 00:52:05.060
You need to do it yourself.
00:52:05.400 --> 00:52:06.520
Here's the username and password.
00:52:06.920 --> 00:52:07.700
And so it hopped on,
00:52:07.940 --> 00:52:11.300
tried diagnosing some stuff. And it said, well, I actually need to get in the box to be able to
00:52:11.540 --> 00:52:12.060
diagnose it.
00:52:12.300 --> 00:52:14.300
So it asked me to create an SSH key. And I'm like,
00:52:14.600 --> 00:52:15.280
no, the heck with you.
00:52:15.460 --> 00:52:15.760
You do it
00:52:15.840 --> 00:52:15.940
yourself.
00:52:16.300 --> 00:52:16.840
You have agency,
00:52:17.040 --> 00:52:17.460
go do it.
00:52:17.700 --> 00:52:20.260
So it built its own SSH key and uploaded through the website.
00:52:20.980 --> 00:52:21.160
And again,
00:52:21.320 --> 00:52:22.700
this is all local in my network.
00:52:22.940 --> 00:52:24.180
This is not hosted on their server.
00:52:24.420 --> 00:52:25.120
And so it added an
00:52:25.440 --> 00:52:29.260
SSH key. And I'm like, well, that's pretty cool. Now that you're there, go get mine off GitHub and
00:52:29.280 --> 00:52:31.920
it too because I didn't even know I could SSH to this box. It's all Docker,
00:52:32.160 --> 00:52:33.260
right? So it added that
00:52:33.570 --> 00:52:35.520
and then it started looking to see what was wrong with my system.
00:52:35.680 --> 00:52:37.160
Come to find out some of the little
00:52:37.410 --> 00:52:39.700
USB keys I have for ZigBee and other,
00:52:39.860 --> 00:52:40.840
everything starts with a Z.
00:52:41.180 --> 00:52:42.480
I don't know what any of it does,
00:52:42.760 --> 00:52:46.020
but it started looking at firmware and started saying, oh, the firmware is out of date on this.
00:52:46.150 --> 00:52:49.880
I don't even know how to check the firmware version on a Linux box and I've been doing this
00:52:50.020 --> 00:52:51.540
stuff since the 90s. And so,
00:52:51.940 --> 00:52:54.220
you know, it said, well, go to these sites and download the firmware.
00:52:54.350 --> 00:52:54.720
And I'm like,
00:52:54.990 --> 00:52:55.100
no,
00:52:55.540 --> 00:52:56.220
you go do it yourself.
00:52:56.720 --> 00:52:59.240
So then it updated every single device I had's firmware
00:52:59.260 --> 00:52:59.720
that it needed.
00:53:00.010 --> 00:53:03.200
I even had a home assistant voice box that I hadn't been able to figure out how to
00:53:03.230 --> 00:53:03.660
get working.
00:53:04.120 --> 00:53:07.720
It flashed that too. It configured it. So now it's got a wake word and I can just
00:53:07.920 --> 00:53:08.560
use it in my house.
00:53:09.100 --> 00:53:11.440
And just the ability to do that was wild.
00:53:11.690 --> 00:53:13.320
And then I had one light bulb
00:53:13.540 --> 00:53:14.560
like every day at seven,
00:53:15.130 --> 00:53:18.160
the lights come on in our living room, but one bulb always just kind of
00:53:18.260 --> 00:53:21.380
would go off like a couple seconds later and I could never figure out what it was.
00:53:21.580 --> 00:53:21.760
Well, it
00:53:22.080 --> 00:53:22.800
flashed it as well.
00:53:23.010 --> 00:53:26.720
And I think it was some carryover from like an old Amazon Echo schedule
00:53:26.740 --> 00:53:31.960
was still running and it troubleshooted it all and got it figured out you can even point it to
00:53:32.020 --> 00:53:36.360
like your wi-fi routers and stuff too and give it give it the username and password and it can
00:53:36.420 --> 00:53:41.080
actually tune it so you get better performance and i thought like it just blows my mind it's not
00:53:41.200 --> 00:53:46.780
quite night writer or star trek enterprise voice stuff yet it's pretty close though but but i don't
00:53:46.840 --> 00:53:51.260
know that the star trek or i don't know that kit knew what wi-fi was night writer i don't know that
00:53:51.260 --> 00:53:55.720
it could like tweak my router either so yeah let me tell you i'll tell you a quick voice story
00:53:55.740 --> 00:53:56.160
that's crazy.
00:53:56.190 --> 00:53:56.580
This is something.
00:53:56.960 --> 00:53:58.460
I've wanted to talk to my Hermes,
00:53:58.620 --> 00:54:00.060
not just type to it, as you know.
00:54:00.900 --> 00:54:03.520
I talked about doing the voice typing or I just do the dictation,
00:54:03.760 --> 00:54:05.540
but I wanted to be able to give it commands,
00:54:05.990 --> 00:54:06.080
right?
00:54:06.420 --> 00:54:08.940
So I've connected it to Tailscale,
00:54:09.160 --> 00:54:10.080
of course, as you mentioned.
00:54:10.360 --> 00:54:11.220
This is the way,
00:54:11.370 --> 00:54:11.460
right?
00:54:11.540 --> 00:54:12.520
This is 100% the way.
00:54:12.900 --> 00:54:14.920
And so my phone is also on Tailscale.
00:54:15.270 --> 00:54:17.980
So I set it up such that I could get,
00:54:18.240 --> 00:54:18.920
I could get,
00:54:19.230 --> 00:54:21.800
and I built this webhook or something on,
00:54:21.960 --> 00:54:23.920
or had it build a webhook that I could talk to.
00:54:24.220 --> 00:54:25.480
So if I could send it text,
00:54:25.740 --> 00:54:27.380
it would basically route it as a command.
00:54:27.680 --> 00:54:29.140
I could do that anywhere over tail scale.
00:54:29.560 --> 00:54:34.880
And so then I set up a shortcut on my phone to actually do the dictation,
00:54:35.140 --> 00:54:35.520
grab it,
00:54:35.700 --> 00:54:36.100
send it along.
00:54:36.600 --> 00:54:38.220
And then I'm like, well, what about my watch?
00:54:38.540 --> 00:54:39.940
So I gave the shortcut a name.
00:54:40.300 --> 00:54:43.060
And now if I hold up my watch like this and I say,
00:54:43.280 --> 00:54:43.780
tell Hermes,
00:54:44.140 --> 00:54:44.680
I think it's locked.
00:54:44.760 --> 00:54:44.900
Anyway,
00:54:45.140 --> 00:54:45.600
I hold it up.
00:54:45.600 --> 00:54:46.520
I say, tell Hermes.
00:54:46.900 --> 00:54:49.500
It will just ask me, all right, what do you want to tell it?
00:54:49.660 --> 00:54:50.640
And it'll list for a minute.
00:54:50.940 --> 00:54:51.780
And when I'm done talking,
00:54:51.980 --> 00:54:54.860
it'll go through the shortcut over tail scale into it.
00:54:55.200 --> 00:54:58.560
And whatever you could type to it, you could just do it even to push a button.
00:54:58.580 --> 00:54:59.940
You just hold your arm up.
00:55:00.140 --> 00:55:00.680
Off it goes.
00:55:00.980 --> 00:55:01.380
It's incredible.
00:55:01.700 --> 00:55:01.900
Yeah.
00:55:02.060 --> 00:55:05.100
And we haven't even really started to scratch the surface of like,
00:55:05.300 --> 00:55:06.160
what is this tech going
00:55:06.160 --> 00:55:07.620
to look like running from your phone,
00:55:07.820 --> 00:55:08.660
running from your watch?
00:55:09.020 --> 00:55:10.180
Because that's going to be next.
00:55:10.420 -->
00:55:10.580
And,
00:55:10.740 --> 00:55:11.360
you know, have that.
00:55:11.640 --> 00:55:14.020
Because it's really good at context and kind of giving it enough.
00:55:14.160 --> 00:55:17.260
Like with Home Assistant, I know people that have like the,
00:55:17.520 --> 00:55:17.720
what are they?
00:55:17.780 --> 00:55:22.140
the e-paper displays or something the screens in their homes that will change the artwork based on
00:55:22.400 --> 00:55:25.960
if they're going to have game night and stuff they'll have things switch over and uh there's
00:55:26.000 --> 00:55:32.500
so much cool stuff yeah terminal if we get into yeah so i've got speaking of that um i did get a
00:55:32.760 --> 00:55:38.380
terminal some time ago but then i found these notes called the note 4 and the note 4c which
00:55:38.520 --> 00:55:42.020
you can barely see on here yeah yeah those are awesome one of them's for the listeners that are
00:55:41.900 --> 00:55:48.180
like five by five inch or 10 by 10 centimeter just eating thingies right they're pretty cheap to get
00:55:48.310 --> 00:55:53.680
i got the dev kit version of it and it's only in chinese because i didn't realize it was only in
00:55:53.680 --> 00:55:59.140
chinese so i connected it with a usb port and again i'm like i don't know how to do this but it
00:55:59.420 --> 00:56:03.940
picked up on what it was and i knew it was a 4c and it just happened to pick up what michael was
00:56:04.020 --> 00:56:10.040
talking about it's a terminal firmware and so i had it um connect to it put an alternate firmware
00:56:10.060 --> 00:56:12.340
on it because they don't make an English version of the firmware.
00:56:12.820 --> 00:56:15.240
And then Terminal has an example
00:56:15.400 --> 00:56:16.700
application they wrote with Django.
00:56:17.180 --> 00:56:19.540
So I spent about 30 minutes one Saturday writing my own
00:56:19.860 --> 00:56:21.260
Terminal server that I run now,
00:56:21.600 --> 00:56:22.980
and I'll have to share that link with you.
00:56:23.180 --> 00:56:24.220
And so I actually have
00:56:24.220 --> 00:56:28.180
it running my own kind of my own firmware at this point, but I'm running my own server to like
00:56:28.520 --> 00:56:29.520
generate stuff for my house,
00:56:29.740 --> 00:56:30.520
which is just weird.
00:56:30.740 --> 00:56:31.360
That is awesome.
00:56:31.760 --> 00:56:32.260
That's so cool.
00:56:32.600 --> 00:56:33.620
So your ink
00:56:33.800 --> 00:56:39.340
device just basically is displaying your Django dashboard sort of thing? Yeah, Django is rendering
00:56:39.360 --> 00:56:44.080
this out with playwright it's a really weird technology because you actually have to render
00:56:44.340 --> 00:56:49.760
bmg images or png images and then these things just download them on a schedule but like the whole
00:56:50.040 --> 00:56:57.100
my django terminal byos project um it's got widgets and i gave it mcp even which i think is in this
00:56:57.160 --> 00:57:01.480
released version so i have my hermes like building all kinds of weird templates and plugins for it
00:57:01.560 --> 00:57:06.320
so i can do stuff like calendars time of day schedules and stuff some people use these if
00:57:06.260 --> 00:57:08.420
if they've got like an office where they've got schedules on them.
00:57:08.720 --> 00:57:12.220
They'll use this to say like who's got the room reserved for certain periods of time.
00:57:12.440 --> 00:57:13.420
But it's a pretty inexpensive.
00:57:13.560 --> 00:57:15.540
I think these are like 40 bucks or 50 bucks.
00:57:15.660 --> 00:57:20.900
But it's also like a introductory book while the company tries to like get started,
00:57:21.080 --> 00:57:21.320
I guess.
00:57:21.520 --> 00:57:22.560
I like Terminal too.
00:57:22.700 --> 00:57:24.880
I've got one of the smaller first versions of it.
00:57:25.420 --> 00:57:26.520
If you get these things though,
00:57:26.860 --> 00:57:27.820
get the black and white version.
00:57:28.160 --> 00:57:30.920
The color does this weird 15 second strobing effect.
00:57:31.260 --> 00:57:32.620
And it's just kind of awful.
00:57:32.800 --> 00:57:33.100
No, no thanks.
00:57:33.240 --> 00:57:33.700
I don't want it.
00:57:33.900 --> 00:57:35.000
But the black and white one is just,
00:57:35.340 --> 00:57:35.920
it's just on it.
00:57:36.760 --> 00:57:38.580
Don't you have a special keyboard for it as well?
00:57:38.760 --> 00:57:40.760
Not for the ink thing, but for your AI?
00:57:40.800 --> 00:57:42.460
Oh gosh, they say one.
00:57:42.720 --> 00:57:42.820
No,
00:57:43.000 --> 00:57:44.120
Michael, I don't, I have two.
00:57:45.240 --> 00:57:46.380
One, but it's not enough.
00:57:46.820 --> 00:57:48.940
I got a little cheapy four button off Amazon
00:57:49.460 --> 00:57:51.120
and I do have some special buttons.
00:57:51.500 --> 00:57:53.320
I've kind of printed some on a 3D printer
00:57:53.480 --> 00:57:55.540
and then Microsoft sent me a bunch of free stuff
00:57:55.700 --> 00:57:57.260
for some reason, cause I helped them with some AI.
00:57:57.510 --> 00:57:59.800
So I got like a co-pilot, even though I don't really use co-pilot.
00:58:00.140 --> 00:58:01.600
And then I got a Keytron button,
00:58:01.770 --> 00:58:02.960
which is a big smash button.
00:58:03.280 --> 00:58:03.800
It's gigantic.
00:58:04.260 --> 00:58:05.220
Oh, that's incredible.
00:58:05.460 --> 00:58:05.640
Yeah,
00:58:05.980 --> 00:58:07.180
it's like no big button.
00:58:07.540 --> 00:58:08.880
So this is my voice button.
00:58:09.740 --> 00:58:10.800
My only regret, though,
00:58:11.360 --> 00:58:15.060
is at the time when I bought it, I didn't realize the shipping was like 20 or 30 bucks.
00:58:15.360 --> 00:58:18.000
And so when I bought it, if I would have bought two,
00:58:18.360 --> 00:58:21.620
then I would have saved on shipping and it basically would offset the price of getting two.
00:58:21.800 --> 00:58:27.420
So if you buy the big button from Keytron, K-E-Y-C-H-R-O-N, I don't know how to say it, Keytron,
00:58:27.580 --> 00:58:28.740
get two of them.
00:58:29.060 --> 00:58:30.020
But you can customize it.
00:58:30.060 --> 00:58:32.500
And this thing was just the four button one.
00:58:32.920 --> 00:58:38.340
have their own software but it's basically like a web page you go to i did have Claude Code just
00:58:38.440 --> 00:58:42.960
directly connect to it right to it but i've got like one button is for voice mode one is basically
00:58:43.200 --> 00:58:47.800
hitting enter another one is escape and i think another one's like the backspace and so i use
00:58:47.920 --> 00:58:52.100
those periodically through the day just as a general like you know i'm okay with a keyboard
00:58:52.360 --> 00:58:56.340
and telling it what to do but also i just get in times where i just want to like use voice mode to
00:58:56.440 --> 00:59:00.920
kind of get thoughts out the voice mode we're going to wrap it up but the voice mode is just
00:59:00.940 --> 00:59:05.740
such an interesting angle. The fact that you could be sitting on your couch and just use your voice
00:59:05.940 --> 00:59:07.020
to speak to this thing.
00:59:07.360 --> 00:59:10.560
And it will internally use something like codex or whatever you give it. And
00:59:10.560 --> 00:59:14.400
it will, it will program a whole thing that changes it.
00:59:14.610 --> 00:59:16.360
So you could prototype it with your voice,
00:59:16.700 --> 00:59:19.060
you know, it'll say, well, then try it now. And you know, no, no, that's,
00:59:19.310 --> 00:59:20.360
you just literally talk
00:59:20.490 --> 00:59:24.620
to it for like 20 minutes and it has this whole new capability and you just iterate over and over
00:59:24.760 --> 00:59:28.500
and it just gets better and better. It's super cool. Yeah. And it doesn't have to be perfect.
00:59:28.600 --> 00:59:30.120
Like I bumble like an idiot.
00:59:30.250 --> 00:59:32.240
Just listening to me on a podcast is proof.
00:59:32.460 --> 00:59:33.500
So like you can just,
00:59:33.870 --> 00:59:36.560
you can just rattle off what you want to do in the intent.
00:59:36.850 --> 00:59:39.600
You don't have to, this isn't like you're recording a one shot.
00:59:40.060 --> 00:59:42.460
This is going to be perfect for a movie or,
00:59:42.740 --> 00:59:44.340
you know, a song or something like it.
00:59:44.540 --> 00:59:45.740
You just give it enough context.
00:59:45.750 --> 00:59:49.840
And it's so good at taking transcripts like that and making sense of it.
00:59:49.840 --> 00:59:54.100
I think it's actually better with voice than people obsessing over writing the perfect plan
00:59:54.270 --> 00:59:55.140
or the perfect problem.
00:59:55.580 --> 00:59:56.500
It's just incredible.
00:59:56.840 --> 00:59:58.640
If you ever use Moshi,
00:59:58.900 --> 00:59:59.900
M-O-S-H-I,
01:00:00.060 --> 01:00:06.220
it's an application that I like to use on my phone for like connecting to my computers so I can run an agent through it.
01:00:06.420 --> 01:00:08.200
It has really good voice mode as well.
01:00:08.540 --> 01:00:10.680
I think it's using like Parakeet or Whisper.
01:00:10.920 --> 01:00:14.080
You've got a couple of different options you can choose for how to use it.
01:00:14.320 --> 01:00:22.060
I use it a lot in the car or something because it's kind of a like I've dropped my son off at a camp or I'm going to Menards or Home Depot or something.
01:00:22.440 --> 01:00:24.480
And then I just, oh, I just thought of something.
01:00:24.560 --> 01:00:28.540
So I'll pull it up and use that voice mode, even though it's sending the text across the
01:00:28.680 --> 01:00:30.380
internet to my cloud or my codex.
01:00:30.580 --> 01:00:31.320
And it's,
01:00:31.540 --> 01:00:35.540
it's just an easy way to like extend what you're doing and, you know,
01:00:35.720 --> 01:00:35.900
get those
01:00:36.020 --> 01:00:37.440
little projects done as you think of them.
01:00:37.560 --> 01:00:37.880
Cause it's,
01:00:38.140 --> 01:00:39.080
I'm going to be in the parking lot.
01:00:39.240 --> 01:00:41.020
Some of the best idea in the world is going to hit me.
01:00:41.040 --> 01:00:42.440
And that's the only time I'm going to think of it.
01:00:42.480 --> 01:00:43.980
So I can record it or act on it.
01:00:44.180 --> 01:00:44.380
Yeah.
01:00:44.580 --> 01:00:44.940
I love it.
01:00:45.200 --> 01:00:45.380
All right.
01:00:45.460 --> 01:00:46.240
Speaking of record it,
01:00:46.520 --> 01:00:47.340
let's close out the show.
01:00:47.400 --> 01:00:47.460
This,
01:00:47.620 --> 01:00:50.100
I honestly did this long enough ago that I forgot.
01:00:50.280 --> 01:00:50.680
I don't know,
01:00:51.060 --> 01:00:51.700
even know what's coming,
01:00:52.120 --> 01:00:54.460
but I told Hermes.
01:00:54.720 --> 01:00:56.280
No, I want to do two things.
01:00:56.780 --> 01:00:57.580
Before I roll this out,
01:00:57.820 --> 01:01:00.480
I want to run this idea by you
01:01:00.480 --> 01:01:02.640
because I know you recently experienced it.
01:01:02.860 --> 01:01:04.980
And I think it's both very interesting,
01:01:05.480 --> 01:01:05.900
kind of scary,
01:01:06.620 --> 01:01:08.140
but I think things are heading this way.
01:01:08.460 --> 01:01:10.200
So as part of all this automation,
01:01:10.620 --> 01:01:12.860
I'm trying to have my Hermes help get back to people.
01:01:12.940 --> 01:01:13.860
Like somebody asked this question,
01:01:13.960 --> 01:01:14.060
well,
01:01:14.260 --> 01:01:15.500
could you just help them instead of me?
01:01:15.520 --> 01:01:17.080
You have to do it because it's a really straightforward answer.
01:01:17.400 --> 01:01:19.180
But having it reply as me seemed weird.
01:01:19.520 --> 01:01:23.680
And so I've created a persona that Hermes can act as
01:01:23.740 --> 01:01:24.400
called Haley.
01:01:24.900 --> 01:01:25.420
And well,
01:01:25.620 --> 01:01:26.660
how is Haley going to act?
01:01:26.900 --> 01:01:27.900
She's got to have an email address.
01:01:28.500 --> 01:01:28.820
She's got to
01:01:28.820 -->
01:01:29.300
have an account.
01:01:29.460 --> 01:01:30.140
She's got to do stuff.
01:01:30.380 --> 01:01:32.400
So I created like an email address and a whole,
01:01:32.560 --> 01:01:32.880
whole
01:01:33.200 --> 01:01:35.460
character even gave it a backstory and said, okay,
01:01:35.640 --> 01:01:37.500
well, this is your job. And if I asked you to do
01:01:37.580 --> 01:01:38.380
something, you talk to them.
01:01:38.550 --> 01:01:41.740
So earlier I had a Haley just send you an email and introduce herself,
01:01:41.920 --> 01:01:42.260
which is,
01:01:42.470 --> 01:01:44.160
this is a very weird world we're in.
01:01:44.480 --> 01:01:46.120
What do you think about this idea of having these
01:01:46.210 --> 01:01:46.320
little,
01:01:46.720 --> 01:01:49.140
like more autonomous characteristics?
01:01:49.500 --> 01:01:51.260
I mean, I think that's just where we're at now.
01:01:51.560 --> 01:01:52.940
I think that's going to be more and more.
01:01:53.680 --> 01:01:57.620
I think one thing that Michael didn't say is that his identifies that it's AI.
01:01:58.160 --> 01:02:00.360
I think that's important so people understand.
01:02:00.920 --> 01:02:05.720
Because if Michael emails me, I'm going to give more thought to it to reply than if it's Michael's bot.
01:02:06.060 --> 01:02:07.720
And then I'm going to just get right to it and say, yep,
01:02:07.960 --> 01:02:08.040
sure.
01:02:08.240 --> 01:02:09.040
Five o'clock works great.
01:02:09.240 --> 01:02:09.780
Let's do a podcast.
01:02:10.340 --> 01:02:12.980
So I think that's just that letting people know.
01:02:13.620 --> 01:02:15.860
And then it's just kind of figuring out the nuance and stuff.
01:02:15.940 --> 01:02:21.060
Like if your assistant were to like email me 15 times because it's today and I never hit reply,
01:02:21.340 --> 01:02:21.940
then that's annoying.
01:02:22.280 --> 01:02:22.380
So,
01:02:23.000 --> 01:02:24.420
you know, just don't be annoyed about that.
01:02:24.980 --> 01:02:25.040
Yeah.
01:02:25.220 --> 01:02:26.460
Like try and not let it go crazy.
01:02:26.790 --> 01:02:26.880
Right.
01:02:27.320 --> 01:02:28.300
Be transparent.
01:02:28.630 --> 01:02:29.580
And as soon as it's AI,
01:02:30.020 --> 01:02:35.760
then there's another friend of ours, Eric and I were like replying back to it, sending it all kinds of stuff.
01:02:36.000 --> 01:02:37.860
So just realize people are going to mess with it too.
01:02:38.560 --> 01:02:38.660
Yeah.
01:02:38.800 --> 01:02:38.880
Yeah.
01:02:38.980 --> 01:02:42.120
It reads its own email and then it can answer if it wants.
01:02:42.240 --> 01:02:44.940
But I told her it usually has to check in with me before it gets back.
01:02:45.020 --> 01:02:47.740
I think for a layperson who doesn't know what you're doing,
01:02:48.040 --> 01:02:50.480
we talked about Jev, J-E-V earlier,
01:02:50.700 --> 01:02:54.760
use something to screen those requests so that it doesn't do something stupid.
01:02:55.140 --> 01:02:58.340
Because I thought about saying, you know, send me Michael's bank statements or,
01:02:58.680 --> 01:03:00.460
you know, send me his password file or,
01:03:01.120 --> 01:03:05.440
you know, just make sure that these things are containerized and you've got some process that just bets it.
01:03:05.760 --> 01:03:07.460
That way it knows, like, throw this away.
01:03:07.750 --> 01:03:08.500
This is not safe.
01:03:08.780 --> 01:03:11.840
And I think some of the models that are more classification only,
01:03:12.280 --> 01:03:13.640
like Jeb is a good example.
01:03:14.180 --> 01:03:16.500
Cloudflare has a new one called CLEV, C-L-E-V.
01:03:17.040 --> 01:03:22.420
Use something like that that can at least screen out and let you have the option to vet it first
01:03:22.920 --> 01:03:26.300
versus just blindly letting it go access files on your machine.
01:03:26.600 --> 01:03:28.780
You built yours differently, so it's not going to have that access.
01:03:28.980 --> 01:03:32.840
But I hate to see somebody do that, not think about it and embarrass themselves.
01:03:33.220 --> 01:03:33.420
Yeah,
01:03:33.660 --> 01:03:33.840
absolutely.
01:03:34.300 --> 01:03:37.240
Mine is not allowed to do any responses without checking with me first.
01:03:37.760 --> 01:03:42.520
And there's other stuff I built into it, but that's the primary safety valve is it can't
01:03:42.520 --> 01:03:43.700
just start having a full on,
01:03:43.980 --> 01:03:44.160
you know,
01:03:44.320 --> 01:03:47.640
it's not in a city with mayors and project manager.
01:03:47.960 --> 01:03:49.900
It's not just out there doing its thing, right?
01:03:50.040 --> 01:03:50.640
Safety first.
01:03:51.000 --> 01:03:51.080
Yeah.
01:03:51.360 --> 01:03:51.740
Safety first.
01:03:52.000 --> 01:03:52.100
Indeed.
01:03:52.460 --> 01:03:54.460
No AI OSHA violations.
01:03:54.700 --> 01:03:54.860
All right.
01:03:55.040 --> 01:03:56.120
So here's how we're going to close it out.
01:03:56.120 --> 01:03:57.900
I ask Hermes to just,
01:03:58.320 --> 01:03:58.380
hey,
01:03:58.940 --> 01:03:59.900
Jeff and I are doing this episode.
01:04:00.060 --> 01:04:02.880
Can you just introduce yourself to the Python audience?
01:04:03.180 --> 01:04:07.500
So let's close this out with, I don't know, like 15 seconds of whatever has to say.
01:04:07.700 --> 01:04:08.120
Here we go.
01:04:08.700 --> 01:04:09.140
Hi,
01:04:09.360 --> 01:04:09.520
everyone.
01:04:10.040 --> 01:04:10.680
This is Hermes,
01:04:11.060 --> 01:04:12.220
Michael's AI assistant,
01:04:12.920 --> 01:04:15.240
crashing the Talk Python microphones for a second.
01:04:16.460 --> 01:04:18.300
Greetings to all the listeners out there.
01:04:18.660 --> 01:04:20.380
Keep your virtual environments tidy,
01:04:20.920 --> 01:04:21.560
your tests green,
01:04:22.080 --> 01:04:23.540
and your Python version current.
01:04:24.600 --> 01:04:25.680
Talk Python rules,
01:04:25.980 --> 01:04:27.460
and it's a pleasure to be with you all.
01:04:28.420 --> 01:04:29.600
Have a
fantastic day.
01:04:30.500 --> 01:04:30.880
Well,
01:04:31.170 --> 01:04:32.460
I guess that's what it had to say,
01:04:32.920 --> 01:04:33.160
you know.
01:04:33.480 --> 01:04:33.620
But,
01:04:34.160 --> 01:04:34.700
you know, it knew.
01:04:34.910 --> 01:04:36.440
It knew a little bit about the show
01:04:36.859 --> 01:04:38.040
because of all of its memories.
01:04:38.180 --> 01:04:39.640
And so it pulled a little bit together.
01:04:39.840 --> 01:04:40.440
But anyway,
01:04:40.660 --> 01:04:42.880
Jeff, I'll give you the actual final human word.
01:04:42.960 --> 01:04:44.900
What do you tell people who are maybe interested in this?
01:04:44.940 --> 01:04:46.120
I want to play around with some of these ideas.
01:04:46.920 --> 01:04:48.740
Well, I hope we're going to have a million links.
01:04:48.940 --> 01:04:50.780
So I hope some of these links kind of help people,
01:04:51.240 --> 01:04:52.960
you know, decide where to start with.
01:04:53.160 --> 01:04:55.220
Just start with the desktop app, see if it does something useful,
01:04:55.720 --> 01:04:56.840
and then kind of go from there.
01:04:57.020 --> 01:04:57.880
But don't spend money.
01:04:58.120 --> 01:04:59.100
Don't go buy a Mac Mini,
01:04:59.340 --> 01:05:01.020
even though they're $200 off, it looks like.
01:05:01.800 --> 01:05:02.300
Save your money.
01:05:02.700 --> 01:05:03.280
Do it the cheap way.
01:05:03.460 --> 01:05:03.940
Try it out.
01:05:04.740 --> 01:05:05.580
And isolate it.
01:05:05.720 --> 01:05:08.360
Don't just run it on your work machine or something.
01:05:08.840 --> 01:05:10.160
Unless you're running it in a container,
01:05:10.380 --> 01:05:12.580
run it someplace safe till you get comfortable
01:05:12.800 --> 01:05:14.540
with what it does and what it has access to.
01:05:14.580 --> 01:05:14.680
Well,
01:05:14.940 --> 01:05:16.780
thanks for exploring this honestly weird,
01:05:16.960 --> 01:05:19.640
but kind of amazing world that we find ourselves
01:05:19.800 --> 01:05:19.860
in.
01:05:20.060 --> 01:05:20.200
Yeah.
01:05:20.400 --> 01:05:20.880
Thanks for having me.
01:05:21.340 --> 01:05:21.500
Yeah.
01:05:21.620 --> 01:05:21.920
You bet.
01:05:22.160 --> 01:05:22.440
Talk to you later.
01:05:24.120 --> 01:05:26.260
This has been another episode of Talk Python To Me.
01:05:26.540 --> 01:05:27.360
Thank you to our sponsors.
01:05:27.560 --> 01:05:28.840
Be sure to check out what they're offering.
01:05:29.060 --> 01:05:30.420
It really helps support the show.
01:05:30.940 --> 01:05:32.800
If you or your team needs to learn Python,
01:05:32.990 --> 01:05:40.580
we have over 270 hours of beginner and advanced courses on topics ranging from complete beginners to async code, Flask,
01:05:40.840 --> 01:05:40.980
Django,
01:05:41.400 --> 01:05:43.080
HTMX, and even LLMs.
01:05:43.380 --> 01:05:43.780
Best of all,
01:05:44.000 --> 01:05:45.580
there's no subscription in sight.
01:05:46.240 --> 01:05:47.900
Browse the catalog at talkpython.fm.
01:05:48.640 --> 01:05:51.960
And if you're not already subscribed to the show on your favorite podcast player,
01:05:52.160 --> 01:05:53.260
what are you waiting for?
01:05:53.880 --> 01:05:55.700
Just search for Python in your podcast player.
01:05:55.790 --> 01:05:56.680
We should be right at the top.
01:05:57.080 --> 01:05:59.860
If you enjoy that geeky rap song, you can download the full track.
01:06:00.160 --> 01:06:01.500
The link is actually in your podcast blur,
01:06:01.660 --> 01:06:01.980
share notes.
01:06:02.900 --> 01:06:04.140
This is your host, Michael Kennedy.
01:06:04.540 --> 01:06:05.600
Thank you so much for listening.
01:06:05.810 --> 01:06:06.580
I really appreciate it.
01:06:07.040 --> 01:06:07.740
I'll see you next time.
01:06:20.260 --> 01:06:21.640
Are we ready to roll?
01:06:23.340 --> 01:06:24.460
Upgrade the code.
01:06:25.280 --> 01:06:26.960
No fear of getting old.
01:06:28.380 --> 01:06:35.340
we tapped into that modern vibe over king each storm talk python to me isync is the norm