WEBVTT

00:00:11.249 --> 00:00:15.909
<v Chris>Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.

00:00:16.129 --> 00:00:16.829
<v Wes>My name is Wes.

00:00:17.029 --> 00:00:17.789
<v Brent>And my name is Brent.

00:00:18.009 --> 00:00:21.989
<v Chris>Hello, gentlemen. Well, we are back from our trip. And, well,

00:00:22.049 --> 00:00:25.589
<v Chris>as soon as we landed, we each got heads down on our own projects.

00:00:25.829 --> 00:00:29.329
<v Chris>Today, we're back to compare progress and catch you all up on what we've been

00:00:29.329 --> 00:00:33.209
<v Chris>up to. Then we'll round out the show with some great boos, picks, and a lot more.

00:00:33.349 --> 00:00:36.569
<v Chris>So before we get into that, let's say time-appropriate greetings to our virtual

00:00:36.569 --> 00:00:38.689
<v Chris>lug. Hello, Mumble Room. Hello, hello.

00:00:39.249 --> 00:00:41.729
<v Mumble>Hello. Hey, Chris, and hello, Brent.

00:00:42.249 --> 00:00:45.089
<v Chris>Hello. We have a few up there in the quiet listening. Shout out to you,

00:00:45.089 --> 00:00:48.529
<v Chris>too. We're starting a little late today, so it's nice to have a crew in there.

00:00:49.009 --> 00:00:53.129
<v Chris>Also, good morning to our friends over at Defined Networking.

00:00:53.229 --> 00:00:55.329
<v Chris>Go check out Manage Nebula.

00:00:55.949 --> 00:01:01.069
<v Chris>Defined Networking is a decentralized VPN company built on top of the open source Nebula platform.

00:01:01.269 --> 00:01:04.369
<v Chris>And what I love about this is there's no big tech dependency,

00:01:04.649 --> 00:01:07.909
<v Chris>no control plane that might go down, and it is built for speed,

00:01:08.049 --> 00:01:10.129
<v Chris>simplicity, and very serious security.

00:01:10.289 --> 00:01:13.989
<v Chris>They started back in 2017 for Slack, and they had to hit the ground running

00:01:13.989 --> 00:01:17.689
<v Chris>for a global enterprise that had to protect the world's largest company's data.

00:01:17.889 --> 00:01:23.889
<v Chris>It's really robust. And unlike traditional VPNs, Nebula's decentralized design

00:01:23.889 --> 00:01:25.969
<v Chris>makes your network more resilient.

00:01:26.129 --> 00:01:29.589
<v Chris>Whether you're running a home lab or a big infrastructure at scale,

00:01:29.769 --> 00:01:32.069
<v Chris>you can optionally self-host Lighthouse nodes.

00:01:32.629 --> 00:01:36.409
<v Chris>So you get more control, more flexibility, and more reliability,

00:01:36.449 --> 00:01:40.769
<v Chris>you can dial it up and down as you want, and the entire thing is based on a free software project.

00:01:41.069 --> 00:01:44.589
<v Chris>You can get started and support the show with up to 100 hosts for free.

00:01:44.769 --> 00:01:48.309
<v Chris>No credit card required. Just go to defined.net slash unplugged.

00:01:48.369 --> 00:01:53.469
<v Chris>That is defined.net slash unplugged. And by the way, Android and iOS apps now

00:01:53.469 --> 00:01:56.869
<v Chris>have always-on VPN mode. Been going for a little bit now. Just wanted to shout it out.

00:01:57.449 --> 00:01:59.829
<v Chris>Defined.net slash unplugged.

00:02:03.468 --> 00:02:06.208
<v Chris>Well, we really have been building, boys. We have been building.

00:02:06.328 --> 00:02:07.068
<v Chris>Brentley's been building.

00:02:07.228 --> 00:02:10.408
<v Chris>Wes has been building. But I think we should start with Brent because he's been

00:02:10.408 --> 00:02:13.268
<v Chris>getting me a little warmed up, if you know what I mean.

00:02:13.608 --> 00:02:15.328
<v Brent>I know what you like. I know what you like.

00:02:15.448 --> 00:02:16.788
<v Chris>So what have you been up to, B-Rent?

00:02:18.048 --> 00:02:21.148
<v Brent>Well, over the last couple of months, you've been complaining on air,

00:02:21.308 --> 00:02:25.288
<v Brent>on the show, about how I broke your diesel heater and it stopped working.

00:02:25.588 --> 00:02:25.988
<v Chris>Wow.

00:02:26.168 --> 00:02:30.648
<v Brent>It's been, what, two years you've been using that to heat your home?

00:02:31.765 --> 00:02:35.685
<v Brent>And you've loved this thing, right? You've been even convincing me to get my own in the van.

00:02:36.285 --> 00:02:41.065
<v Brent>I did not pull the trigger on one, but I did a ton of research because I think I agree with you.

00:02:41.205 --> 00:02:47.665
<v Brent>These little Chinese diesel heaters, which are really clones of a really good

00:02:47.665 --> 00:02:51.145
<v Brent>Webasto heater, which is, I think it's German and it's excellent,

00:02:51.345 --> 00:02:53.465
<v Brent>excellent build. It's been around forever.

00:02:53.725 --> 00:02:55.665
<v Brent>But the beauty of it is its simplicity.

00:02:56.185 --> 00:02:59.665
<v Brent>They just kind of trickle through fuel. They're very easy to understand.

00:02:59.665 --> 00:03:03.105
<v Brent>Anybody can take them apart and build them again.

00:03:03.385 --> 00:03:06.785
<v Brent>Well, I shouldn't say anybody because it takes away the credit from what I did this week.

00:03:07.265 --> 00:03:09.505
<v Chris>But if you're willing to do the work and the research.

00:03:09.705 --> 00:03:09.945
<v Brent>Mm-hmm.

00:03:10.045 --> 00:03:10.245
<v Chris>Yeah.

00:03:10.385 --> 00:03:13.625
<v Brent>They're also relatively inexpensive to get. So.

00:03:13.905 --> 00:03:18.925
<v Chris>Yeah. They're plentiful, but they're very proprietary by nature in a weird way

00:03:18.925 --> 00:03:23.485
<v Chris>because they're all scamming each other's protocols and communication methods,

00:03:23.665 --> 00:03:25.545
<v Chris>but they don't document any of it.

00:03:25.545 --> 00:03:29.725
<v Chris>And so it's a proprietary way in like the old school sense.

00:03:29.925 --> 00:03:32.645
<v Wes>They're all doing the same thing. They haven't taken advantage of the proper,

00:03:32.645 --> 00:03:35.505
<v Wes>just share the foundation, sort of open sense. But in practice,

00:03:35.705 --> 00:03:37.845
<v Wes>for practicality, it kind of ends up being the same.

00:03:37.985 --> 00:03:42.005
<v Chris>Yeah. And for controls and things like that, they can like modify one of the

00:03:42.005 --> 00:03:43.805
<v Chris>common standard protocols.

00:03:44.525 --> 00:03:48.405
<v Chris>So that's really a tricky thing for somebody who wants to have as much open

00:03:48.405 --> 00:03:52.145
<v Chris>source and control over something as possible. It's bugged me for two years.

00:03:52.305 --> 00:03:57.865
<v Brent>Yeah. And in this particular area of reverse engineering these really nice Webasto

00:03:57.865 --> 00:03:59.845
<v Brent>heaters, it's just a race to the bottom, right?

00:03:59.905 --> 00:04:04.265
<v Brent>So in our research to see, well, how can we possibly, because Chris wants this

00:04:04.265 --> 00:04:07.645
<v Brent>for everything in his life, how can we possibly connect the diesel heater to

00:04:07.645 --> 00:04:09.685
<v Brent>Home Assistant so that you can automate...

00:04:10.794 --> 00:04:15.834
<v Brent>the heating of the whole front side of your home, how do we do that with this

00:04:15.834 --> 00:04:18.194
<v Brent>particular heater? And the answer wasn't that obvious.

00:04:18.294 --> 00:04:21.054
<v Chris>As I've come to say now is like, how do we put some more open source in this?

00:04:21.174 --> 00:04:22.554
<v Chris>This thing needs a little more open source.

00:04:22.554 --> 00:04:23.414
<v Wes>Open source injection.

00:04:23.934 --> 00:04:24.774
<v Brent>Open source and automation.

00:04:25.114 --> 00:04:27.214
<v Chris>Yeah. Put some open source in it and call it good.

00:04:27.354 --> 00:04:31.774
<v Brent>So we've been thinking about how to do that for months. And I think this week,

00:04:31.974 --> 00:04:37.154
<v Brent>since I'm here in studio and near the farm, it was the time to finally put it

00:04:37.154 --> 00:04:41.534
<v Brent>in action. And I was afraid the weather would be too nice, but it turns out it snowed.

00:04:41.634 --> 00:04:45.234
<v Brent>So it was just perfect to have the incentive to get this heater back up and running.

00:04:45.394 --> 00:04:48.814
<v Wes>I assume you locked him in the milkshed and said that he gets heat when he fixed the heater?

00:04:49.034 --> 00:04:51.414
<v Chris>Yeah, exactly. And let me tell you, is that not a motivator?

00:04:51.494 --> 00:04:52.074
<v Brent>Yeah, it is.

00:04:52.154 --> 00:04:52.834
<v Chris>It gets a guy to hustle.

00:04:53.014 --> 00:04:57.254
<v Brent>The issue was the heater completely stopped working and you couldn't use it at all.

00:04:57.374 --> 00:05:01.654
<v Brent>You had a little trick weeks ago of kind of flooding the thing so that it would

00:05:01.654 --> 00:05:04.634
<v Brent>clean itself and then run for a bit. I think you got a couple of weeks out of that.

00:05:05.434 --> 00:05:07.594
<v Brent>and then and then it just gave up.

00:05:07.594 --> 00:05:11.114
<v Chris>So inevitably they have just parts that will expire

00:05:11.114 --> 00:05:14.014
<v Chris>because the way the thing works it carbs up and

00:05:14.014 --> 00:05:16.814
<v Chris>it has a screen in there that atomizes the fuel and when that fuel

00:05:16.814 --> 00:05:22.514
<v Chris>burns it leaves residue behind and just by using the thing it inevitably will

00:05:22.514 --> 00:05:25.914
<v Chris>fail just the design of it and so especially when they're a hundred dollars

00:05:25.914 --> 00:05:28.814
<v Chris>right they're not really making these things to last but like brent was saying

00:05:28.814 --> 00:05:31.274
<v Chris>if you're willing to service on the thing you can open it up you can replace

00:05:31.274 --> 00:05:36.434
<v Chris>these little parts there's kits for 15 online and then it's right back to new again.

00:05:36.434 --> 00:05:40.534
<v Brent>Yeah and they're actually extremely serviceable you can service them in place

00:05:40.534 --> 00:05:42.554
<v Brent>with a couple small little tools.

00:05:42.554 --> 00:05:43.354
<v Chris>That come.

00:05:43.354 --> 00:05:44.934
<v Brent>With these rebuild kits.

00:05:44.934 --> 00:05:48.614
<v Chris>It's kind of incredible so i mean the funny thing right is that brent took that

00:05:48.614 --> 00:05:52.794
<v Chris>on and he had the actual diesel heater probably fixed within two hours once

00:05:52.794 --> 00:05:56.514
<v Chris>he started working on it it was simple mechanical really really so it was great

00:05:56.514 --> 00:05:59.934
<v Chris>because oh like after two weeks of this thing being busted we've got heat again

00:05:59.934 --> 00:06:01.874
<v Chris>and so brent looks at me and he says,

00:06:02.629 --> 00:06:03.869
<v Chris>All right, well, let's take it apart again now.

00:06:05.449 --> 00:06:07.209
<v Brent>Well, you can't stop there. Come on.

00:06:07.309 --> 00:06:09.969
<v Wes>So you got it working, and your first instinct is to just rip it apart?

00:06:10.149 --> 00:06:12.729
<v Chris>And I'm like, whoa, whoa, whoa, whoa, slow down. It's like, no,

00:06:12.769 --> 00:06:14.729
<v Chris>no, I think we can do this. Just take a couple hours.

00:06:15.589 --> 00:06:17.089
<v Brent>It always starts with that, doesn't it?

00:06:17.089 --> 00:06:18.149
<v Wes>So which day was this?

00:06:19.629 --> 00:06:20.829
<v Brent>A couple days ago.

00:06:21.789 --> 00:06:24.289
<v Chris>We were working on it until after the show was supposed to start.

00:06:24.829 --> 00:06:27.609
<v Brent>Yeah. Let's say we were inspired.

00:06:27.929 --> 00:06:28.009
<v Chris>Yeah.

00:06:28.769 --> 00:06:32.849
<v Brent>So the diesel heater is great. We got it back up and running as it was,

00:06:32.849 --> 00:06:35.669
<v Brent>but I mean, being Chris's dear

00:06:35.669 --> 00:06:39.529
<v Brent>friend, I can't just let him suffer with a simple on-off diesel heater.

00:06:39.969 --> 00:06:41.609
<v Chris>No. We got to put some open source in it.

00:06:41.729 --> 00:06:43.829
<v Brent>Exactly. We wanted to get this thing connected home assistant.

00:06:43.829 --> 00:06:46.749
<v Brent>It was an opportunity since we were down and dirty with the diesel heater to

00:06:46.749 --> 00:06:48.129
<v Brent>just make a couple of modifications.

00:06:50.049 --> 00:06:52.929
<v Brent>Luckily, we are not the only ones in the world who want to do this.

00:06:53.089 --> 00:06:58.069
<v Brent>So there are many projects, people reverse engineering the protocols for these

00:06:58.069 --> 00:07:02.829
<v Brent>diesel heaters, seeing how they can modify them to try to connect them using

00:07:02.829 --> 00:07:06.729
<v Brent>ESP32s, which is PJ's dear favorite computer.

00:07:07.169 --> 00:07:12.889
<v Brent>And that led to us being inspired by how we can do this and pushing the envelope a,

00:07:14.672 --> 00:07:16.272
<v Brent>tools we had in our toolbox.

00:07:16.272 --> 00:07:19.552
<v Chris>Thankfully we still to this day had

00:07:19.552 --> 00:07:23.552
<v Chris>a few leftover uh node mcu esp32s

00:07:23.552 --> 00:07:26.572
<v Chris>and a couple of different parts and we found a board that

00:07:26.572 --> 00:07:30.112
<v Chris>you can slot the esp32 in and

00:07:30.112 --> 00:07:32.972
<v Chris>then all of the gpios are exposed as

00:07:32.972 --> 00:07:36.632
<v Chris>just a screw-in wire so you can just you don't have to solder everything and

00:07:36.632 --> 00:07:42.072
<v Chris>that sounds great it makes for troubleshooting and um really learning much faster

00:07:42.072 --> 00:07:44.612
<v Chris>because you're just oh i can connect to white here real quick okay i'll connect

00:07:44.612 --> 00:07:49.672
<v Chris>to this gpio and so we had some of that stuff ready to go kind of we were positioned

00:07:49.672 --> 00:07:52.092
<v Chris>for this project really waiting to happen.

00:07:52.092 --> 00:07:57.552
<v Brent>Then the decision was well how do we get this to happen because we've got these

00:07:57.552 --> 00:08:02.212
<v Brent>projects some of them are written in python most of them are using esp home.

00:08:02.212 --> 00:08:03.572
<v Chris>Yep yep uh.

00:08:03.572 --> 00:08:06.352
<v Brent>But they're not all doing what we want to

00:08:06.352 --> 00:08:11.232
<v Brent>and the hardest part is that these chinese diesel heaters they all have different

00:08:11.232 --> 00:08:16.672
<v Brent>control boards they all have different ecus which control all the logic of you

00:08:16.672 --> 00:08:20.312
<v Brent>know the actual burning of the heater and safety protocols and all that there's

00:08:20.312 --> 00:08:24.272
<v Brent>different like permutations of how those two are connected so some have one

00:08:24.272 --> 00:08:26.252
<v Brent>board but the other control etc so so.

00:08:26.252 --> 00:08:28.592
<v Wes>You can't just flash some generic image.

00:08:28.592 --> 00:08:31.372
<v Chris>It kind of needs to be a pretty good match but there are a couple of

00:08:31.372 --> 00:08:34.272
<v Chris>universal truths yes there are power buttons that we

00:08:34.272 --> 00:08:37.112
<v Chris>know we could short and there is this

00:08:37.112 --> 00:08:39.952
<v Chris>ur protocol that they're likely using but maybe

00:08:39.952 --> 00:08:43.012
<v Chris>slightly modified and maybe they're using a different baud rate

00:08:43.012 --> 00:08:46.052
<v Chris>than the standard bar like there's certain things we can know that are common

00:08:46.052 --> 00:08:50.432
<v Chris>and so we knew at the end of the day we could at least short the power buttons

00:08:50.432 --> 00:08:56.472
<v Chris>but we what we really want is engine data fan speed data chamber temperature

00:08:56.472 --> 00:09:01.492
<v Chris>data it can get all of that the thing's constantly aware of all of that and we wanted to extract it.

00:09:01.492 --> 00:09:06.252
<v Wes>So sort of like a two-pronged mission, you want better control from Home Assistant.

00:09:06.452 --> 00:09:08.232
<v Wes>And then you also want to pull as much info as you can.

00:09:09.253 --> 00:09:14.213
<v Brent>So we settled on using a couple of projects to get started after reading way too much.

00:09:14.833 --> 00:09:21.913
<v Brent>One of them is Pablo Vitaso's ESPHome-Cinbasto, which is, you know, a Chinese webasto.

00:09:22.473 --> 00:09:27.473
<v Brent>That had most of the components we wanted, including how to short the on-off

00:09:27.473 --> 00:09:32.013
<v Brent>button if we couldn't possibly get it working with the serial protocol that's

00:09:32.013 --> 00:09:33.553
<v Brent>built into some of these Chinese heaters.

00:09:33.733 --> 00:09:38.313
<v Brent>And that's the dream, right? Use the data protocol to both control the heater

00:09:38.313 --> 00:09:43.313
<v Brent>and get all of the data from the heater, including whether it's on or not and all the safety.

00:09:43.533 --> 00:09:46.773
<v Brent>So that's the dream, but we had to work our way towards that.

00:09:47.213 --> 00:09:54.073
<v Brent>Luckily, there was a bunch of work by Ray Jones who did some deconstructing

00:09:54.073 --> 00:10:00.613
<v Brent>of the protocol, basically hacking it and learning how this UART protocol on

00:10:00.613 --> 00:10:01.813
<v Brent>these Chinese heaters works.

00:10:01.813 --> 00:10:06.153
<v Brent>not all of it is there however including how to turn it on and off from this

00:10:06.153 --> 00:10:09.853
<v Brent>protocol but you can get a bunch of information and some people have gotten

00:10:09.853 --> 00:10:11.953
<v Brent>this protocol to work with,

00:10:12.553 --> 00:10:19.013
<v Brent>ESPHome and these ESP32s so that was a fabulous place for us to start the trouble is,

00:10:20.340 --> 00:10:26.400
<v Brent>Well, we're just still ESP beginners and, you know, it's not just plug and play.

00:10:26.600 --> 00:10:29.160
<v Brent>So Chris, you had a brilliant idea to bring in a little bit of help.

00:10:29.500 --> 00:10:31.740
<v Chris>Yeah, because, you know, again, like you're saying, we don't really know what

00:10:31.740 --> 00:10:37.620
<v Chris>we're doing. So I thought to myself, if we could establish basic communications

00:10:37.620 --> 00:10:40.200
<v Chris>with the thing, then, you know, over USB,

00:10:40.560 --> 00:10:43.180
<v Chris>then we could at least see if the GPIO ports are turning on and off.

00:10:43.280 --> 00:10:45.100
<v Chris>Maybe we get an idea if the voltage is working.

00:10:45.560 --> 00:10:48.440
<v Wes>You've got a debugging loop you can make some progress on.

00:10:48.440 --> 00:10:54.800
<v Chris>Yeah, and so we got it flashed using ESPHome web connected to my laptop over

00:10:54.800 --> 00:10:56.720
<v Chris>USB, which is super simple now.

00:10:56.720 --> 00:11:00.960
<v Chris>As long as you have Chrome and your user is in like the dial-out group,

00:11:01.020 --> 00:11:04.920
<v Chris>I think it is, then you pretty much have everything you need to flash these

00:11:04.920 --> 00:11:06.880
<v Chris>devices just from a Chromium-based web browser.

00:11:07.100 --> 00:11:11.440
<v Chris>So I went to the ESPHome site, and I got the basic ESPHome image flashed on

00:11:11.440 --> 00:11:16.380
<v Chris>this thing and got it booting with some Wi-Fi, basic Wi-Fi credentials and whatnot.

00:11:16.380 --> 00:11:21.320
<v Chris>And once it was running ESPHome, and it was still connected to my laptop,

00:11:21.700 --> 00:11:26.260
<v Chris>I decided to open up OpenCode, which again is just a fantastic app,

00:11:26.480 --> 00:11:30.660
<v Chris>and took advantage of the Hunter Alpha model, which is available right now,

00:11:30.740 --> 00:11:32.420
<v Chris>which is like a 1 million context model.

00:11:33.600 --> 00:11:36.220
<v Chris>And maybe it's DeepSeq 4, and I don't know.

00:11:36.500 --> 00:11:40.320
<v Wes>We don't know. It's a masked model out there for a review. They train on the

00:11:40.320 --> 00:11:43.000
<v Wes>data. They're kind of, you know, workshopping it before the public release.

00:11:43.000 --> 00:11:46.520
<v Chris>And not something I would use for private information, but when you're just

00:11:46.520 --> 00:11:48.520
<v Chris>hacking on an ESP board, perfs.

00:11:48.520 --> 00:11:50.980
<v Wes>Especially stuff you probably would open source or whatever anyway.

00:11:51.180 --> 00:11:57.060
<v Chris>Yeah. And so it immediately, immediately locked into what we were doing.

00:11:57.080 --> 00:12:01.020
<v Chris>And it started communicating and controlling the ESP32 system.

00:12:02.044 --> 00:12:04.984
<v Chris>Instantly and from that we

00:12:04.984 --> 00:12:07.964
<v Chris>were able to just derive all kinds

00:12:07.964 --> 00:12:10.744
<v Chris>of information like we realized that the baud rate wasn't

00:12:10.744 --> 00:12:14.144
<v Chris>what we expected the communications protocol wasn't we expected we discovered

00:12:14.144 --> 00:12:18.104
<v Chris>a voltage issue because there was a bug in the upstream project like it just

00:12:18.104 --> 00:12:21.804
<v Chris>started opening up all of these problems that we could just start working through

00:12:21.804 --> 00:12:28.524
<v Chris>bit by bit and it would it would uh it would rebuild custom esp home and esp

00:12:28.524 --> 00:12:30.924
<v Chris>troubleshooting firmware Like at one point,

00:12:31.124 --> 00:12:34.204
<v Chris>it built a signal analyzer firmware for us,

00:12:34.524 --> 00:12:39.704
<v Chris>reflashed the ESP device with a signal analyzer so we could start monitoring

00:12:39.704 --> 00:12:42.284
<v Chris>like the voltage and the other information, not just the voltage,

00:12:42.424 --> 00:12:47.744
<v Chris>but the data stream from the diesel heater in real time.

00:12:48.084 --> 00:12:51.104
<v Chris>And then it realized, well, we were getting so much data, it was overloading

00:12:51.104 --> 00:12:55.444
<v Chris>the memory on the ESP home. So then it created a more efficient version of a

00:12:55.444 --> 00:12:59.324
<v Chris>loop and it's out there and sampled the data and it started it started giving

00:12:59.324 --> 00:13:01.444
<v Chris>us so much like direction.

00:13:02.264 --> 00:13:06.384
<v Chris>It was really it was really interesting way because you're sitting there in open code.

00:13:06.644 --> 00:13:11.064
<v Chris>It's talking to an LLM that is then sending commands back down to command line

00:13:11.064 --> 00:13:13.224
<v Chris>tools that are working with the ESP.

00:13:13.644 --> 00:13:18.064
<v Chris>And then it's rebuilding firmware, compiling that to C++ and flashing it.

00:13:18.064 --> 00:13:22.424
<v Chris>And then as we went on, because the context window on this thing is so freaking

00:13:22.424 --> 00:13:25.404
<v Chris>huge, it was remembering, oh, this is a major breakthrough.

00:13:25.544 --> 00:13:29.304
<v Chris>I'll update their agents MD or, hey, if we enable this on the command line,

00:13:29.404 --> 00:13:33.004
<v Chris>we also and even though we would forget, it would remember, I also need to make

00:13:33.004 --> 00:13:37.344
<v Chris>sure it's working in the MQTT layer and it would keep catching stuff that we would forget.

00:13:38.603 --> 00:13:46.683
<v Chris>And we used this for hours, 12 hours maybe, and we got to 21% of the context window.

00:13:46.803 --> 00:13:51.983
<v Chris>So it was so useful. It was bonkers because it took the little bit of knowledge

00:13:51.983 --> 00:13:54.263
<v Chris>we had and extended it away further.

00:13:54.463 --> 00:13:58.103
<v Chris>And we got to a point where this thing was originally we had the upstream image

00:13:58.103 --> 00:14:01.583
<v Chris>wasn't fully functional. It was a bit broken. It had the voltages reversed.

00:14:01.923 --> 00:14:04.983
<v Chris>Instead of not sending voltage, it was sending.

00:14:05.123 --> 00:14:08.663
<v Chris>Instead of not, it was, et cetera. It had it backwards. it fixed

00:14:08.663 --> 00:14:11.783
<v Chris>that but additionally the ability to swap between the different images super

00:14:11.783 --> 00:14:14.883
<v Chris>quick and then figure out where the mistake was

00:14:14.883 --> 00:14:19.583
<v Chris>patch the upstream project recompile

00:14:19.583 --> 00:14:22.563
<v Chris>the image and reflash it it's really helpful

00:14:22.563 --> 00:14:25.363
<v Chris>was it was bonkers the progress we started

00:14:25.363 --> 00:14:28.283
<v Chris>making once we got there because we went from just guessing and guessing

00:14:28.283 --> 00:14:31.883
<v Chris>and guessing to actually being able to work

00:14:31.883 --> 00:14:35.063
<v Chris>with the thing and then it would develop like test

00:14:35.063 --> 00:14:37.743
<v Chris>sequences and it would say okay are you ready

00:14:37.743 --> 00:14:40.863
<v Chris>i'm gonna and then it would it would get your multimeter out we get the multimeter

00:14:40.863 --> 00:14:45.123
<v Chris>out and it would run through test sequences and test sequences and then we realized

00:14:45.123 --> 00:14:49.263
<v Chris>we could do it even more efficient because we kept thinking you know we are

00:14:49.263 --> 00:14:52.743
<v Chris>the slow point here we have to like we have to go get the multimeter and we're

00:14:52.743 --> 00:14:56.523
<v Chris>holding it here and then we're telling the machine what the readings are you're.

00:14:56.523 --> 00:14:57.183
<v Wes>Being its hands.

00:14:57.183 --> 00:15:01.183
<v Chris>And so one of the nice breakthroughs we had was we could actually get the machine

00:15:01.183 --> 00:15:03.763
<v Chris>to read its own voltage levels you want to talk about that a little bit i.

00:15:03.763 --> 00:15:04.903
<v Brent>Was it was such a.

00:15:04.903 --> 00:15:09.543
<v Chris>Bonkers realization esp32 pros they know all this already but yes.

00:15:09.543 --> 00:15:13.603
<v Brent>We are learning thank you for your patience with us uh it was late last night

00:15:13.603 --> 00:15:18.423
<v Brent>and i'm holding this volt meter on these esp pins so that we could try to interpret

00:15:18.423 --> 00:15:22.143
<v Brent>you know how much voltage is on the pins and relay that back to the machine

00:15:22.143 --> 00:15:25.303
<v Brent>who's helping us you know fix all the problems and,

00:15:26.394 --> 00:15:28.994
<v Brent>And I was like, Chris, my hand is getting sore. And he's like,

00:15:29.094 --> 00:15:33.134
<v Brent>I'm tired of like having to give it input the whole time because it was really

00:15:33.134 --> 00:15:35.334
<v Brent>slowing down the feedback loop.

00:15:35.634 --> 00:15:38.694
<v Brent>It was doing great when it was rebuilding ESP to get it working.

00:15:38.814 --> 00:15:42.734
<v Brent>But then when we had to provide it voltage values, everything just slowed to a crawl.

00:15:44.114 --> 00:15:48.094
<v Brent>So it turns out, I don't know how you found this, Chris, but thank you.

00:15:48.234 --> 00:15:51.494
<v Brent>It turns out you can just use the ESP to tell you the voltage.

00:15:51.734 --> 00:15:54.874
<v Brent>So you just do a little jumper to a different pin. And then all of a sudden,

00:15:55.054 --> 00:16:01.534
<v Brent>OpenCode had the ability to modify its software and then do the testing by itself

00:16:01.534 --> 00:16:03.414
<v Brent>and cut out the human completely.

00:16:03.594 --> 00:16:07.414
<v Brent>So the feedback loop was very fast and it was able to work through some of the

00:16:07.414 --> 00:16:09.034
<v Brent>bugs extremely quickly.

00:16:09.274 --> 00:16:11.154
<v Wes>I think Graham's going to be real proud of you boys.

00:16:11.994 --> 00:16:15.554
<v Brent>And Chris and I were just looking at each other with these massive grins,

00:16:15.554 --> 00:16:17.854
<v Brent>just thinking, this is fabulous.

00:16:17.854 --> 00:16:23.234
<v Brent>And it's exactly, Wes, what we saw Graham doing last episode when he described

00:16:23.234 --> 00:16:29.714
<v Brent>that he had a bunch of hardware that he was reverse engineering with microcontrollers to get them,

00:16:29.914 --> 00:16:36.014
<v Brent>like, to make that connection between artificial intelligence helping you with actual real hardware.

00:16:36.134 --> 00:16:40.854
<v Brent>And we accidentally ran into building the same type of machine,

00:16:40.854 --> 00:16:44.614
<v Brent>let's call it, through this diesel heater. It was really, really fun.

00:16:44.614 --> 00:16:49.194
<v Chris>And the reason why it was great to get this voltage information back automatically

00:16:49.194 --> 00:16:53.214
<v Chris>is because the way you can tell if the heater has been triggered or if it's

00:16:53.214 --> 00:16:56.534
<v Chris>shutting down is by reading the voltage levels on one of the pins.

00:16:56.754 --> 00:17:01.514
<v Chris>And so once it could read the voltage level itself, it was able to determine

00:17:01.514 --> 00:17:03.294
<v Chris>if what it had tried had worked or not.

00:17:03.474 --> 00:17:08.574
<v Chris>So the loop of like, try this, does it work? Nope. It would just start speeding up. Yeah.

00:17:09.702 --> 00:17:10.642
<v Wes>You guys had a lunch?

00:17:10.882 --> 00:17:13.982
<v Chris>Well, it was tough. It was like 10.30 last night. We're like,

00:17:14.082 --> 00:17:17.102
<v Chris>we got to pause because we got to go to bed because we got a show to do tomorrow.

00:17:17.262 --> 00:17:18.862
<v Brent>The humans need to rest. It was ready to keep going.

00:17:20.922 --> 00:17:26.402
<v Brent>Another thing it helped with is that we were trying to trigger the heater to

00:17:26.402 --> 00:17:30.242
<v Brent>turn on and off just by shorting one of the micro buttons.

00:17:30.682 --> 00:17:35.122
<v Brent>So it's a little micro switch, and that's what you push your thumb on the controller

00:17:35.122 --> 00:17:38.182
<v Brent>to turn this thing on and off. But we wanted to do that programmatically.

00:17:38.922 --> 00:17:43.822
<v Brent>and so the advice in many of these projects was to use a transistor and i had

00:17:43.822 --> 00:17:48.642
<v Brent>never used a transistor before we on the show have used relays uh turns out

00:17:48.642 --> 00:17:53.302
<v Brent>it's just a itty bitty little relay kind of ish west um yeah.

00:17:53.302 --> 00:17:55.442
<v Wes>Just with more uh quantum physics helping you out.

00:17:55.442 --> 00:18:01.242
<v Brent>Exactly yeah it's more sophisticated yeah i could see jeff now just like i know i know you're.

00:18:01.242 --> 00:18:04.222
<v Wes>Catching up you're getting from like the 1910s to you know yeah.

00:18:04.222 --> 00:18:08.242
<v Brent>Well the thing is i would have never 1960s i would have never tried this without

00:18:08.242 --> 00:18:11.542
<v Brent>like a helping hand so one of the helping hands was these projects having done

00:18:11.542 --> 00:18:16.022
<v Brent>it before and providing a little bit of guidance but the other one was working through,

00:18:16.622 --> 00:18:21.802
<v Brent>my mistakes of implementing the wiring because uh the computer can't do the

00:18:21.802 --> 00:18:25.262
<v Brent>wiring so i had to do the wiring unfortunately but i was learning much doing

00:18:25.262 --> 00:18:28.642
<v Brent>it but you got to water it correctly so that.

00:18:28.642 --> 00:18:30.222
<v Chris>Does help wiring it correctly does help.

00:18:30.222 --> 00:18:37.342
<v Brent>So i was like hey computer um help me diagnose if i did the transistor properly.

00:18:37.342 --> 00:18:42.722
<v Brent>I'm just going to do another jumper to another pin and you tell me if it's firing

00:18:42.722 --> 00:18:44.422
<v Brent>properly by reading more voltage.

00:18:44.642 --> 00:18:49.642
<v Brent>So we had the ESP, you know, give some feedback again to make sure the human

00:18:49.642 --> 00:18:52.442
<v Brent>put the transistor in the right place and the little wires in the right place.

00:18:52.502 --> 00:18:52.962
<v Chris>It's useful.

00:18:53.122 --> 00:18:57.702
<v Brent>And it turned out then it could also know if it pushed the physical button for us.

00:18:57.762 --> 00:19:01.222
<v Brent>So it just made tons of progress and brought us,

00:19:02.294 --> 00:19:06.054
<v Brent>Learning about ESPs in ways that I don't think we would have ran into had we

00:19:06.054 --> 00:19:10.614
<v Brent>just been sitting there like we did a couple of months ago, just tinkering on the ESPs.

00:19:10.774 --> 00:19:14.954
<v Chris>It's such a it's such a fun project because it's a little bit it's like real

00:19:14.954 --> 00:19:21.854
<v Chris>baby electrical stuff and it's a little bit building and it's a little bit of this ESP coding stuff.

00:19:22.983 --> 00:19:26.943
<v Chris>And that in itself is such an educational, rewarding experience that even if

00:19:26.943 --> 00:19:29.743
<v Chris>it didn't work with Home Assistant afterwards, and even if I wasn't automating

00:19:29.743 --> 00:19:32.003
<v Chris>this thing now, it's like I would still do this.

00:19:32.223 --> 00:19:32.363
<v Brent>Yeah.

00:19:32.663 --> 00:19:36.003
<v Chris>You know, it's a lot of fun because you take something that was this total proprietary

00:19:36.003 --> 00:19:41.883
<v Chris>black box, you physically wire into it, and then you begin controlling it with an open source stack.

00:19:42.083 --> 00:19:47.243
<v Brent>It felt like a superpower. It really does. Finally regaining control over what

00:19:47.243 --> 00:19:51.223
<v Brent>was otherwise just a black box that you had an on-off button, and that's about it.

00:19:51.223 --> 00:19:55.343
<v Wes>And it stands out to me like any time in like software development or projects

00:19:55.343 --> 00:19:58.843
<v Wes>that you can have like a short feedback loop where you can try stuff and get

00:19:58.843 --> 00:20:02.963
<v Wes>actual feedback on did that work or not really helps. And it sounds like that's

00:20:02.963 --> 00:20:04.443
<v Wes>exactly what you guys got for yourselves.

00:20:04.623 --> 00:20:07.363
<v Chris>And we just learn more about the device itself. You learn more about how the

00:20:07.363 --> 00:20:10.183
<v Chris>device operates, more about its safety features, which I actually was walked

00:20:10.183 --> 00:20:11.903
<v Chris>away fairly impressed with after this.

00:20:12.123 --> 00:20:15.723
<v Chris>And its simplicity and its design, which is just before it was literally a black

00:20:15.723 --> 00:20:17.043
<v Chris>box. It's really something.

00:20:17.283 --> 00:20:20.203
<v Chris>And the superpowers to be able to kind of work through it and iterate.

00:20:20.203 --> 00:20:23.903
<v Chris>age you know we went from something that initially we thought this is too far

00:20:23.903 --> 00:20:27.803
<v Chris>from the upstream projects we're not going to get this to before we left like

00:20:27.803 --> 00:20:30.743
<v Chris>it was working it was firing up the heater now we just need to get the data

00:20:30.743 --> 00:20:32.243
<v Chris>and stuff like that and sort it out but yeah.

00:20:32.243 --> 00:20:34.323
<v Wes>I was gonna ask what is the where did you leave it exactly.

00:20:34.323 --> 00:20:35.823
<v Chris>Yeah we.

00:20:35.823 --> 00:20:37.463
<v Brent>Just before the show like literally.

00:20:37.463 --> 00:20:43.443
<v Chris>Yeah well probably before the show had started yeah we were running late it was worth it yeah uh.

00:20:43.443 --> 00:20:49.903
<v Brent>Or you tell us audience, was it worth it? We had the ESP, well basically open

00:20:49.903 --> 00:20:51.943
<v Brent>code, was turning the heater on and off.

00:20:52.063 --> 00:20:52.183
<v Chris>Yeah.

00:20:52.523 --> 00:20:56.503
<v Brent>So the ESP was able to turn the heater on and off, transistor worked as expected,

00:20:56.983 --> 00:21:00.903
<v Brent>so that was shorting the little physical button to turn the heater on and turn

00:21:00.903 --> 00:21:06.523
<v Brent>it off with the appropriate amount of push button delay, because as humans we're slow,

00:21:06.643 --> 00:21:10.143
<v Brent>so you push the button for one second and it turns it on, you push it for three

00:21:10.143 --> 00:21:12.203
<v Brent>seconds and it turns it off, it was handling all of that.

00:21:13.682 --> 00:21:16.902
<v Brent>Basic button pushing, check, right? That's completed.

00:21:16.902 --> 00:21:19.382
<v Chris>And that works for anything. Your furnace, fan.

00:21:19.822 --> 00:21:22.242
<v Brent>Think of everywhere there's a microswitch, which is everywhere.

00:21:22.422 --> 00:21:24.302
<v Chris>Anywhere there's, yeah, like all those buttons you have to press,

00:21:24.382 --> 00:21:28.922
<v Chris>you now can remote control. Crazy. You know, a water kettle, like it's crazy.

00:21:29.042 --> 00:21:29.882
<v Brent>Everything. It's so bonkers.

00:21:29.882 --> 00:21:32.942
<v Chris>It's such an unlock at the basic level. It's really exciting.

00:21:33.062 --> 00:21:36.302
<v Brent>Especially when you consider the diagnosis part of it.

00:21:36.622 --> 00:21:41.782
<v Brent>If you can also use an ESP to diagnose electronics, then this takes it to a whole other.

00:21:42.002 --> 00:21:43.562
<v Wes>Yeah, your whole test bench is upgraded.

00:21:43.682 --> 00:21:45.522
<v Brent>Mm-hmm. So we got to the- You know.

00:21:45.582 --> 00:21:49.322
<v Chris>What's funny is not how we expected this to go. No. Did not expect it to go this direction.

00:21:49.482 --> 00:21:49.602
<v Brent>No.

00:21:49.822 --> 00:21:50.102
<v Chris>It was just.

00:21:50.102 --> 00:21:53.102
<v Wes>Totally- You started off very analog, right? Just torn apart regular diesel heater.

00:21:53.222 --> 00:21:55.842
<v Chris>With a, yeah, and a VU meter and some wires, and yeah. VU meter.

00:21:55.842 --> 00:21:57.742
<v Chris>It started very analog. Very dirty.

00:21:57.902 --> 00:21:59.022
<v Brent>It's a multimeter, Chris.

00:21:59.022 --> 00:22:00.142
<v Wes>Yeah, how much diesel did you spell?

00:22:00.282 --> 00:22:02.302
<v Chris>It's a VU meter, and you know it. That's what we call it around here,

00:22:02.422 --> 00:22:03.382
<v Chris>and we're sticking with it.

00:22:03.782 --> 00:22:08.602
<v Brent>Soundboard guy. So we're in the state where it can be turned on and off, which is fabulous.

00:22:08.902 --> 00:22:12.442
<v Brent>I mean, if, Chris, you could live with just that, I think you'd be happy.

00:22:12.642 --> 00:22:12.762
<v Chris>Yep.

00:22:12.762 --> 00:22:15.022
<v Brent>But, you know, we've got to push it a little bit.

00:22:15.222 --> 00:22:16.102
<v Chris>We'll get the data.

00:22:16.222 --> 00:22:20.642
<v Brent>We want this UART protocol to be able to be read in Home Assistant as well.

00:22:20.942 --> 00:22:25.122
<v Brent>There seems to be a little bit more reverse engineering work to do there,

00:22:25.142 --> 00:22:28.962
<v Brent>but OpenCode is sitting there waiting for us when we get back from recording

00:22:28.962 --> 00:22:31.582
<v Brent>the show so that we can continue that reverse engineering.

00:22:31.582 --> 00:22:34.502
<v Chris>It's like a 21% context or 24%, something like that. So, yeah,

00:22:34.622 --> 00:22:35.602
<v Chris>we're good to go for a while.

00:22:36.422 --> 00:22:37.422
<v Wes>Jeff had a question.

00:22:37.542 --> 00:22:37.662
<v Chris>Yeah.

00:22:39.029 --> 00:22:42.069
<v Mumble>Uh, well, it turns out it's not answered yet because you're not finished.

00:22:42.729 --> 00:22:44.649
<v Chris>Oh, I think we're, yeah, go ahead.

00:22:44.889 --> 00:22:48.629
<v Mumble>Okay. I was wondering, uh, where, where do you finish?

00:22:48.729 --> 00:22:53.009
<v Mumble>Like what, what, what, what do you think you end up using as a base on the ESP?

00:22:53.129 --> 00:22:57.529
<v Mumble>Are you going to try to integrate this into ESP home or something else?

00:22:57.709 --> 00:23:01.049
<v Mumble>You know, what, what's the connection point between the ESP and home assistant?

00:23:01.309 --> 00:23:02.409
<v Mumble>How's that going to work? What do you think?

00:23:02.689 --> 00:23:06.649
<v Chris>Yeah. My goal is, is once we kind of get it basically operational to do like

00:23:06.649 --> 00:23:09.189
<v Chris>an ESP home takeover, I'm hoping, you know, that I'll be able to,

00:23:09.289 --> 00:23:12.549
<v Chris>it'll show up in my ESP home dashboard and then I'll just do a takeover and

00:23:12.549 --> 00:23:15.769
<v Chris>control it from there and just do updates as I do them.

00:23:16.449 --> 00:23:19.229
<v Chris>And then, of course, it'll show up, all those will just show up as inputs,

00:23:19.449 --> 00:23:23.649
<v Chris>sensor data and controls to Home Assistant, which is really going to be the big deal.

00:23:24.149 --> 00:23:28.609
<v Chris>You know, I'm in bed and it's cold, hit a button and the heater turns on. I'm going to love that.

00:23:29.129 --> 00:23:32.369
<v Chris>And also it'll be interesting to get, once you have this, I'll have usage data.

00:23:32.369 --> 00:23:36.529
<v Chris>So I'll know how long it runs and those things and maybe even what gear it ran

00:23:36.529 --> 00:23:38.289
<v Chris>in for how long, which is important with these things.

00:23:38.429 --> 00:23:43.369
<v Brent>I was just thinking the exact same thing as we drove from the farm to the studio

00:23:43.369 --> 00:23:47.509
<v Brent>past when the show was supposed to have started because we were playing with this.

00:23:48.329 --> 00:23:51.949
<v Brent>All these ideas of what we could be recording, like you said,

00:23:52.169 --> 00:23:56.049
<v Brent>like hours of service. That's not a piece of data you have currently, but that's trivial.

00:23:56.469 --> 00:23:57.689
<v Chris>It has it. It just doesn't share it.

00:23:57.869 --> 00:23:58.269
<v Brent>Yeah.

00:23:58.549 --> 00:23:59.269
<v Chris>Until now.

00:23:59.569 --> 00:24:02.969
<v Brent>It's so trivial to get in, right? Right. So your maintenance cycle,

00:24:03.069 --> 00:24:05.169
<v Brent>you won't have to wait till it breaks next time.

00:24:05.309 --> 00:24:09.509
<v Brent>You'll kind of have an idea of when you should invite Brent over to rebuild it.

00:24:09.609 --> 00:24:13.229
<v Chris>We really need our society to get to a point where everything is like this.

00:24:13.329 --> 00:24:16.309
<v Chris>And you don't have to use it as a consumer, but it's there if you want to,

00:24:16.369 --> 00:24:20.229
<v Chris>because you put a little open source in it and it just gets so much more useful.

00:24:20.929 --> 00:24:23.849
<v Chris>And honestly, I'm going to maintain the thing better if I have this data, too.

00:24:24.329 --> 00:24:27.849
<v Chris>So that was pretty neat. I have no idea what you've been working on this week,

00:24:27.929 --> 00:24:29.769
<v Chris>Wes. Why don't you regale us with your tails?

00:24:31.194 --> 00:24:33.714
<v Wes>Well, yeah, actually, you're to blame with this.

00:24:33.934 --> 00:24:34.414
<v Chris>Oh, God.

00:24:34.594 --> 00:24:37.834
<v Wes>You know, we have a setup behind the scenes so we can kind of track what the

00:24:37.834 --> 00:24:40.154
<v Wes>rest of us are looking at and share links that we were following.

00:24:40.334 --> 00:24:44.614
<v Wes>You know, most, some, anyway, don't make it to the show, but some of them become segments.

00:24:44.874 --> 00:24:49.314
<v Wes>And this one did. Now, I've been using Firefox primarily.

00:24:49.994 --> 00:24:50.454
<v Chris>A while now.

00:24:50.614 --> 00:24:51.534
<v Wes>Yeah, a long time.

00:24:51.674 --> 00:24:52.314
<v Chris>Before it was cool.

00:24:53.334 --> 00:25:00.894
<v Wes>It's always been cool. but i saw you tag that chrome was working on like a sort

00:25:00.894 --> 00:25:03.854
<v Wes>of native mcp server for itself i.

00:25:03.854 --> 00:25:04.834
<v Chris>Think they've shipped it too.

00:25:04.834 --> 00:25:08.614
<v Wes>They have oh really yeah so that's what i got up to okay.

00:25:08.614 --> 00:25:14.774
<v Chris>So a native mpc npc npc no uh an mcp model context protocol in other words a

00:25:14.774 --> 00:25:17.314
<v Chris>way to remotely connect and communicate with chrome.

00:25:17.314 --> 00:25:20.734
<v Wes>Yeah and you know there's already these things like there's selenium and like

00:25:20.734 --> 00:25:25.034
<v Wes>the newer version of web driver bitty stuff and puppeteer so there's lots of

00:25:25.034 --> 00:25:27.214
<v Wes>ways to like connect to and drive browsers but.

00:25:27.214 --> 00:25:28.814
<v Chris>This is a vendor blessed method really.

00:25:28.814 --> 00:25:31.434
<v Wes>Uh yeah and the other part we should kind of

00:25:31.434 --> 00:25:34.274
<v Wes>like differentiate on is what you're trying to do so i've also

00:25:34.274 --> 00:25:37.914
<v Wes>played with some stuff like just this morning brent was looking at agent

00:25:37.914 --> 00:25:41.534
<v Wes>browser protocol deterministic browser automation uh

00:25:41.534 --> 00:25:44.494
<v Wes>this is another agent in the space uh we had previously

00:25:44.494 --> 00:25:48.174
<v Wes>kind of looked at camo fox which is kind of another player and these are more

00:25:48.174 --> 00:25:52.794
<v Wes>projects in like give your agent its own browser often headless like for its

00:25:52.794 --> 00:25:57.294
<v Wes>own automation use where at least right now i mean you could do either of these

00:25:57.294 --> 00:26:03.074
<v Wes>but what i was interested in is like bringing the agent into your existing current browser.

00:26:03.902 --> 00:26:07.262
<v Chris>Because then I guess it has your credentials, it has your user session information.

00:26:07.462 --> 00:26:09.822
<v Wes>Yeah, and I don't need to do maybe everything, but like there might be some

00:26:09.822 --> 00:26:12.402
<v Wes>stuff I want to automate or some page or just even be able to,

00:26:12.462 --> 00:26:14.562
<v Wes>you know, take a look, double check things.

00:26:14.982 --> 00:26:18.582
<v Chris>I mean, I'll tell you, I don't know if this is a use case you would use,

00:26:18.662 --> 00:26:23.042
<v Chris>but I could see a valid use case being you want to automate some job searches or something like that.

00:26:23.382 --> 00:26:23.662
<v Wes>Totally.

00:26:23.802 --> 00:26:25.442
<v Chris>And you're trying to just create a list of possible job searches.

00:26:25.562 --> 00:26:28.622
<v Chris>I could see that as a very valid use case for this that isn't necessarily abuse.

00:26:28.662 --> 00:26:30.762
<v Chris>And it's just something you're personally doing. You're not doing it at scale.

00:26:30.962 --> 00:26:34.282
<v Wes>Well, and like, yeah, exactly. Right. You could talk about, like,

00:26:34.562 --> 00:26:38.002
<v Wes>scraping at scale and all kinds of stuff that have their own issues, but...

00:26:39.356 --> 00:26:43.956
<v Wes>What you were doing in the last segment, it's kind of like letting a lot of

00:26:43.956 --> 00:26:45.756
<v Wes>these LLMs sort of be your hands, right?

00:26:45.836 --> 00:26:50.176
<v Wes>Like now the agent is the interface and you're still doing the same stuff you would do.

00:26:50.356 --> 00:26:53.456
<v Wes>It's just kind of executing the individual steps and you give it a higher level.

00:26:53.656 --> 00:26:53.876
<v Chris>You've delegated.

00:26:54.216 --> 00:26:59.116
<v Wes>And what is like one of the primary interfaces that we use for like almost all of our tasks every day?

00:26:59.276 --> 00:26:59.776
<v Chris>The web browser.

00:26:59.916 --> 00:27:02.816
<v Wes>That's right. And so to me, it's sort of like extending that where now I can

00:27:02.816 --> 00:27:08.216
<v Wes>talk to the web browser and get tasks done that I would do manually myself anyway.

00:27:08.336 --> 00:27:09.396
<v Chris>Okay. Sounds fair.

00:27:09.876 --> 00:27:14.736
<v Wes>So as an experiment, I often place, pick up grocery orders for myself.

00:27:14.876 --> 00:27:18.436
<v Wes>You know, I go out, I take a dog walk, and it's pretty easy if I've placed an

00:27:18.436 --> 00:27:21.216
<v Wes>order, I can just pick that up on the way back home, then bring it out to the car.

00:27:21.336 --> 00:27:23.776
<v Wes>Works well. And not as many fees as delivery.

00:27:25.276 --> 00:27:29.656
<v Wes>But while the vendor website isn't horrible, it's still kind of a pain to do.

00:27:29.856 --> 00:27:30.396
<v Chris>I can imagine.

00:27:30.536 --> 00:27:34.476
<v Wes>I was looking, they have an API. I just hadn't had time with the trip and all

00:27:34.476 --> 00:27:35.976
<v Wes>that to really look into doing that.

00:27:36.456 --> 00:27:37.956
<v Chris>Your grocery store has an API?

00:27:37.956 --> 00:27:41.896
<v Wes>They do, actually. So props there. Yeah, props. That's nice.

00:27:42.036 --> 00:27:42.996
<v Wes>So that did seem feasible.

00:27:43.276 --> 00:27:45.556
<v Wes>You couldn't place the order, but you could at least build a cart,

00:27:45.716 --> 00:27:48.156
<v Wes>which is probably more than good enough, right? That's the hard part.

00:27:48.776 --> 00:27:53.296
<v Wes>So I thought, you know, Brent and I like this Love Crunch granola.

00:27:53.356 --> 00:27:53.776
<v Brent>Yeah, we do.

00:27:53.936 --> 00:27:57.756
<v Wes>So I've already logged into a Chrome browser here, the latest version,

00:27:57.816 --> 00:27:59.456
<v Wes>which is already in the Upstream Nix packages.

00:27:59.996 --> 00:28:02.816
<v Wes>Yeah. And you could already do this. you

00:28:02.816 --> 00:28:06.236
<v Wes>do need like a little sidecar that's in npm that

00:28:06.236 --> 00:28:10.196
<v Wes>you run that kind of connects and translates mcp so you can drive it with any

00:28:10.196 --> 00:28:16.636
<v Wes>standard ai agent that can do mcp and connects to like the chrome remote debugging

00:28:16.636 --> 00:28:20.716
<v Wes>protocol okay what's new in the current version is that's made much more seamless

00:28:20.716 --> 00:28:25.716
<v Wes>now you turn on remote debugging in chrome and then when you start up,

00:28:26.468 --> 00:28:30.048
<v Wes>If you're using OpenCode, say, and you define in your config the MCP server

00:28:30.048 --> 00:28:34.388
<v Wes>you want to run, when it starts, it can automatically request from Chrome permission,

00:28:34.388 --> 00:28:37.708
<v Wes>and it just pops up a box and you hit OK, and then it's connected.

00:28:39.308 --> 00:28:42.728
<v Wes>And really, if you haven't messed with MCP, it's really just a standard protocol

00:28:42.728 --> 00:28:49.368
<v Wes>that is emitting standardized JSON back and forth that can be done over standard I.O. or over HTTP.

00:28:50.128 --> 00:28:53.568
<v Wes>It's just a way to send requests, and agents can use it to talk to a variety of servers.

00:28:53.588 --> 00:28:56.868
<v Chris>And which method is Chrome using? http i guess.

00:28:56.868 --> 00:29:01.368
<v Wes>Uh no in this case it's a standard io it is using http i believe then to do

00:29:01.368 --> 00:29:04.388
<v Wes>the remote debugging so you could probably do it either way interesting but

00:29:04.388 --> 00:29:07.508
<v Wes>in this case it was easy enough to just run it right from npm did.

00:29:07.508 --> 00:29:09.728
<v Chris>You uh task it to do something interesting or.

00:29:09.728 --> 00:29:12.468
<v Wes>Yeah so i've got it building me a cart here so i thought like.

00:29:12.468 --> 00:29:14.208
<v Chris>Oh you actually had to go through and do the shopping.

00:29:14.208 --> 00:29:17.808
<v Wes>Yeah so i have a started cart and i thought maybe i could see if it would add

00:29:17.808 --> 00:29:19.808
<v Wes>me some granola right here live for us oh.

00:29:19.808 --> 00:29:20.788
<v Chris>Yeah get some granola in there.

00:29:20.788 --> 00:29:21.628
<v Wes>Yeah especially.

00:29:21.628 --> 00:29:22.428
<v Chris>In case Brent visits.

00:29:22.428 --> 00:29:27.828
<v Wes>He loves that so I told it to um to search we'll see if it can manage that it's

00:29:27.828 --> 00:29:31.008
<v Wes>supposed to go search for the granola and so do you see chrome.

00:29:31.008 --> 00:29:33.908
<v Chris>Actually oh so you see it you see chrome actually doing it on the.

00:29:33.908 --> 00:29:36.248
<v Wes>Screen it's the real live oh my god.

00:29:36.248 --> 00:29:40.068
<v Chris>That's so crazy to watch it's typing it out right now in the search box,

00:29:41.509 --> 00:29:45.949
<v Chris>That is, of course, no suggestions came back. It did a perfect search, love crunch canola.

00:29:46.209 --> 00:29:49.669
<v Chris>But no, the search didn't return anything, but that's on the...

00:29:49.669 --> 00:29:51.629
<v Wes>Now it's continuing to the search page, though.

00:29:52.029 --> 00:29:55.969
<v Chris>So it's continuing. It realizes it didn't get results, and it's continuing to troubleshoot.

00:29:56.009 --> 00:30:01.069
<v Wes>Yeah, it's able to take snapshots, which give it sort of like text and what's on the page.

00:30:01.309 --> 00:30:02.069
<v Chris>Like actual pictures?

00:30:02.329 --> 00:30:05.169
<v Wes>Well, so that's like one version. And then, yes, it can take a screenshot.

00:30:05.469 --> 00:30:09.949
<v Chris>So it's getting a version that it can process, some sort of text version it can process.

00:30:09.949 --> 00:30:12.609
<v Wes>Yeah, from the Chrome DevTools sort of setup.

00:30:12.809 --> 00:30:14.889
<v Chris>And then if it needs to, it takes a screenshot. Wow.

00:30:15.169 --> 00:30:17.049
<v Wes>And then from that, it can find stuff to click.

00:30:17.229 --> 00:30:21.809
<v Chris>Does that just litter your file system with screenshots? That's the future West Browse.

00:30:21.849 --> 00:30:22.629
<v Wes>Yeah, that's a good question.

00:30:23.729 --> 00:30:25.449
<v Chris>Security breach. Security breach.

00:30:25.509 --> 00:30:33.149
<v Wes>I am using another testing-free model, Healer Alpha, because it's like a multimodal

00:30:33.149 --> 00:30:36.289
<v Wes>model that includes vision. So it's good at processing the screenshot.

00:30:36.469 --> 00:30:39.529
<v Chris>Oh, interesting. Okay. Right, I guess that would be a thing you'd need.

00:30:39.529 --> 00:30:42.849
<v Wes>Yeah, okay. Added successfully, cart now shows three items, and the Lovecrunch

00:30:42.849 --> 00:30:45.289
<v Wes>shows quantity controls with one in cart.

00:30:45.869 --> 00:30:51.869
<v Wes>And then I could ask it, take me back to the cart and show me my total.

00:30:52.029 --> 00:30:56.049
<v Chris>And now it's going to just connect to the browser and go back to the cart, shopping cart.

00:30:57.349 --> 00:31:00.149
<v Chris>That's pretty fun. I mean, you could definitely see that would be very useful

00:31:00.149 --> 00:31:02.149
<v Chris>also for testing, web testing.

00:31:02.329 --> 00:31:06.989
<v Wes>Oh, sure. Yeah. It's kind of like a puppeteer or a playwright on steroids.

00:31:07.149 --> 00:31:10.669
<v Chris>But now that they've built more of this into Chrome, you're going to see a lot

00:31:10.669 --> 00:31:12.929
<v Chris>of tools standardized around that, I would think.

00:31:13.009 --> 00:31:16.689
<v Wes>So I was curious, like, am I limited to Chrome? I think it might be slightly

00:31:16.689 --> 00:31:19.769
<v Wes>more well built out. But there is another option for Firefox.

00:31:20.009 --> 00:31:20.329
<v Chris>Oh, there is.

00:31:20.489 --> 00:31:26.849
<v Wes>Firefox DevTools MCP, MIT license. Now, I don't think right now this one lets

00:31:26.849 --> 00:31:30.149
<v Wes>you connect to a running instance, or at least that wasn't in their docs.

00:31:30.169 --> 00:31:31.149
<v Wes>You might be able to make it work.

00:31:31.449 --> 00:31:36.009
<v Wes>So right now you can point it at your existing profile, but it launches its own Firefox instance.

00:31:36.269 --> 00:31:39.169
<v Chris>Okay. And it's not upstream from Mozilla.

00:31:39.309 --> 00:31:39.589
<v Wes>Correct.

00:31:39.729 --> 00:31:39.949
<v Chris>Uh-huh.

00:31:40.669 --> 00:31:45.409
<v Wes>But the one I did end up trying, and it didn't quite have, like,

00:31:45.489 --> 00:31:48.529
<v Wes>I think right now it can do stuff with different tabs, but it couldn't make

00:31:48.529 --> 00:31:51.209
<v Wes>or close tabs, which the Chrome one can do.

00:31:51.449 --> 00:31:53.609
<v Wes>But something called LittleFox MCP.

00:31:54.429 --> 00:31:57.749
<v Wes>This one's kind of interesting. So it's, you actually just, I just cloned it

00:31:57.749 --> 00:31:59.909
<v Wes>down and built it locally with NPM.

00:32:00.349 --> 00:32:06.009
<v Wes>And then you set up some sort of Firefox native messaging, a little JSON file

00:32:06.009 --> 00:32:08.149
<v Wes>you copy to your Firefox configuration.

00:32:08.669 --> 00:32:13.269
<v Wes>And then you can, it has an extension that you load as a temporary extension

00:32:13.269 --> 00:32:15.449
<v Wes>in the about debugging area of Firefox.

00:32:15.789 --> 00:32:19.649
<v Wes>And then that's an extension running in Firefox that exposes Firefox's debugging

00:32:19.649 --> 00:32:23.909
<v Wes>capabilities as an MCP server directly. And then you can just connect to it.

00:32:24.667 --> 00:32:28.327
<v Wes>And that actually worked great. I think it was maybe not quite yet as fully

00:32:28.327 --> 00:32:32.567
<v Wes>capable as the Chrome version, but it did also, it was able to take pretty clever advantage.

00:32:32.747 --> 00:32:37.047
<v Wes>It has an inject JavaScript feature. So then the LLM can write its own JavaScript

00:32:37.047 --> 00:32:40.507
<v Wes>that gets run in the context of the page, which you can do a lot with.

00:32:41.107 --> 00:32:43.467
<v Chris>Whoa. Yeah, you could. Huh.

00:32:43.647 --> 00:32:47.947
<v Wes>So it isn't quite as like native and upstream quite as the Chrome version,

00:32:48.147 --> 00:32:50.327
<v Wes>but Firefox isn't totally left behind.

00:32:50.567 --> 00:32:53.367
<v Chris>This is going to be huge for testing. And I hope, you know, these options to

00:32:53.367 --> 00:32:56.927
<v Chris>Firefox, at least you got some options. It's not so bad. That little fox is adorable.

00:32:57.267 --> 00:33:01.007
<v Wes>And, you know, even if you don't want to have, like, it works great with LLMs

00:33:01.007 --> 00:33:03.547
<v Wes>driving it, but even if you don't want to, MCP is a totally standard protocol

00:33:03.547 --> 00:33:07.307
<v Wes>that you can call from regular scripts or CLIs as well.

00:33:07.907 --> 00:33:11.167
<v Chris>Well, that's fun. Thanks for digging into that, Wes. I was very curious about that.

00:33:11.267 --> 00:33:13.207
<v Wes>And, yeah, it's really easy. You don't even need any flags anymore.

00:33:13.367 --> 00:33:17.227
<v Wes>You can just get the latest Chrome and then go into their debugging config,

00:33:17.787 --> 00:33:19.007
<v Wes>remote debugging and turn that on.

00:33:19.707 --> 00:33:24.967
<v Chris>All right. I have a question. I want to ask the audience, what is the most underpowered

00:33:24.967 --> 00:33:27.267
<v Chris>hardware that you're using for something right now?

00:33:27.707 --> 00:33:31.047
<v Chris>And it doesn't have to be this exact moment, but something that was way underpowered

00:33:31.047 --> 00:33:35.007
<v Chris>for the job, but you kept on using it for longer than you should have or something like that.

00:33:35.507 --> 00:33:39.707
<v Chris>Boost in, tell us. It shows a very audience supported at the moment,

00:33:39.727 --> 00:33:41.567
<v Chris>and that could be a great excuse to support us with a boost.

00:33:41.807 --> 00:33:45.847
<v Chris>Your most underpowered hardware you used for the job, boost in and let us know

00:33:45.847 --> 00:33:48.827
<v Chris>because I have a sense it's going to be a great conversation.

00:33:52.027 --> 00:33:56.127
<v Chris>Well, you can help the show reach lucky 13 years old by becoming a member or

00:33:56.127 --> 00:34:00.687
<v Chris>sending a boost, linuxunplugged.com slash membership or support the whole network at jupyter.party.

00:34:00.767 --> 00:34:04.627
<v Chris>You get access to an ad-free version of the show, which that may be of interest

00:34:04.627 --> 00:34:07.907
<v Chris>to you, or you get the bootleg version, which is a lot more show,

00:34:08.067 --> 00:34:09.707
<v Chris>more beginning and after.

00:34:09.947 --> 00:34:13.387
<v Chris>The show keeps on going, did you even know? So you get access to either one

00:34:13.387 --> 00:34:17.567
<v Chris>of those if you become a Jupyter Party member or a Linux Unplugged core contributor.

00:34:17.747 --> 00:34:20.367
<v Chris>You can also support each production. If there was something you liked or you

00:34:20.367 --> 00:34:22.787
<v Chris>want to contribute a little additional value, You can boost in.

00:34:23.227 --> 00:34:26.727
<v Chris>Fountain is making it very, very easy these days. And there's a plethora of

00:34:26.727 --> 00:34:29.407
<v Chris>options over at newpodcastapps.com.

00:34:29.567 --> 00:34:34.547
<v Chris>And the direct audience support will help us get to 13 years of the Unplugged program.

00:34:37.918 --> 00:34:41.418
<v Brent>Well, while I was taking apart your diesel heater and then putting it back together

00:34:41.418 --> 00:34:45.018
<v Brent>again and taking it apart again, you were working on a migration.

00:34:45.298 --> 00:34:49.698
<v Chris>Yeah, a bit of an urgent migration, you might say. So just a quick, quick recap.

00:34:50.118 --> 00:34:55.038
<v Chris>I have been using my custom Hypervibe distribution for about seven months,

00:34:55.038 --> 00:34:59.378
<v Chris>and it now expands across three systems. It's a multi-host Hypervibe,

00:34:59.458 --> 00:35:01.218
<v Chris>and it's worked well for me.

00:35:01.298 --> 00:35:03.558
<v Wes>Some sort of, almost like a Zerg base, it sounds like.

00:35:03.558 --> 00:35:08.278
<v Chris>Yeah. And like a Zerg base, it has a tendency to grow and grow.

00:35:08.618 --> 00:35:11.838
<v Chris>And affect. Maybe it's the user. I'm not quite sure.

00:35:12.038 --> 00:35:16.758
<v Chris>But it had drifted over time, and I started incorporating more server-in-server

00:35:16.758 --> 00:35:23.138
<v Chris>stuff because my B-Link was one of my more robust systems, and it had an AMD, a GPU of types.

00:35:23.378 --> 00:35:28.778
<v Chris>And so I just kept doing more stuff, like local LMs and databases and all kinds

00:35:28.778 --> 00:35:32.418
<v Chris>of little services. And it just was getting way, way out of scope.

00:35:33.138 --> 00:35:36.338
<v Chris>And that's fine. You know, I could deal with it. Didn't really,

00:35:36.438 --> 00:35:40.038
<v Chris>Hypervibe kind of drifted from its purpose as a desktop and had become sort

00:35:40.038 --> 00:35:43.778
<v Chris>of this local desktop server conglomerate.

00:35:44.098 --> 00:35:46.658
<v Chris>I was going to leave it like that for longer than I really should,

00:35:46.858 --> 00:35:48.658
<v Chris>but fate had forced my hand.

00:35:48.958 --> 00:35:49.018
<v Wes>Oh.

00:35:49.338 --> 00:35:54.758
<v Chris>Right before, well, okay, about three months ago, I started having file system issues.

00:35:55.478 --> 00:36:02.298
<v Chris>there was a block on my mvme that butterfs determined was bad but yet the disk

00:36:02.298 --> 00:36:06.678
<v Chris>had not marked bad yet so there was maybe a bit of aggressive precaution on

00:36:06.678 --> 00:36:11.718
<v Chris>butterfs's part and the mvme's firmware had not yet decided i'm going to declare this section bad,

00:36:12.538 --> 00:36:16.338
<v Chris>but it doesn't matter if because or butterfs decided it was that it was and

00:36:16.338 --> 00:36:20.498
<v Chris>so the way around it was to mirror the file system so that way i and then it

00:36:20.498 --> 00:36:24.638
<v Chris>would actually mark that sector bad in the mirroring process.

00:36:24.878 --> 00:36:25.858
<v Wes>And then read from the other...

00:36:27.433 --> 00:36:31.373
<v Brent>This is like another disk, physical solid-state disk?

00:36:31.553 --> 00:36:34.593
<v Chris>So I got an MVME in there, and then I put another, which is one terabyte.

00:36:34.913 --> 00:36:38.573
<v Chris>And then on the bottom, you can install a 2.5 SSD.

00:36:38.953 --> 00:36:42.873
<v Chris>And so I put a 2.5 one terabyte that I had laying around, which at this point

00:36:42.873 --> 00:36:46.753
<v Chris>is precious. So I'd actually had plans for other things. But this way it goes.

00:36:47.613 --> 00:36:52.393
<v Chris>Mirrored it, and I got myself through the holidays to basically right before

00:36:52.393 --> 00:36:53.973
<v Chris>our trip to scale in Planet Nix.

00:36:54.913 --> 00:36:57.833
<v Chris>And I was doing some updates to make sure everything was stable before I left.

00:36:58.613 --> 00:37:01.073
<v Chris>And I started getting read-only file system errors again.

00:37:02.073 --> 00:37:05.433
<v Chris>And the only way to clear it is to reboot. And then just, if you aggressively

00:37:05.433 --> 00:37:08.573
<v Chris>use the system, you know, update packages and really use the hell out of the

00:37:08.573 --> 00:37:12.493
<v Chris>thing, it marks the file system read-only. And then you got to reboot again.

00:37:13.553 --> 00:37:19.113
<v Brent>So you have like a time basically ticking down to when you can't use your system anymore.

00:37:19.113 --> 00:37:20.353
<v Chris>A window of max usage.

00:37:20.513 --> 00:37:20.873
<v Brent>Wow.

00:37:21.153 --> 00:37:22.233
<v Chris>So while we were on the trip.

00:37:22.253 --> 00:37:25.393
<v Wes>That's a good stress test, really. You know, if you can make a system robust

00:37:25.393 --> 00:37:27.933
<v Wes>enough for that, then you'll probably work in any situation.

00:37:28.153 --> 00:37:31.293
<v Chris>So while we were on the trip, I did the right thing and I left it alone and

00:37:31.293 --> 00:37:34.033
<v Chris>just logged out of the desktop, didn't run any desktop apps,

00:37:34.213 --> 00:37:36.673
<v Chris>minimal usage. So the server stuff would still work.

00:37:36.873 --> 00:37:39.033
<v Wes>Wait, but didn't we do some upgrades while we were on?

00:37:39.153 --> 00:37:41.953
<v Chris>Yeah, then we went and did some upgrades because I needed some stuff to work.

00:37:42.033 --> 00:37:43.133
<v Chris>And then it flipped into read-only.

00:37:43.313 --> 00:37:46.633
<v Wes>I was going to say, there was at least one Airbnb night where we were just upgrading open class.

00:37:46.893 --> 00:37:50.493
<v Chris>Yeah, and it forced my system into read-only mode. And then I had to reboot

00:37:50.493 --> 00:37:52.613
<v Chris>this thing remotely when I wasn't sure what state it was in.

00:37:52.613 --> 00:37:53.273
<v Brent>Danger zone.

00:37:54.513 --> 00:37:59.713
<v Chris>Oh, so I had to fix this when I got back. So that was one of my priorities is

00:37:59.713 --> 00:38:02.313
<v Chris>to get working on migrating off this thing.

00:38:03.013 --> 00:38:07.613
<v Chris>And the problem was is this is one of these things like I actually wanted to

00:38:07.613 --> 00:38:12.013
<v Chris>do the right way and not like the sarcastic right way, but the real right way.

00:38:12.213 --> 00:38:14.933
<v Chris>And so I wanted to set up a new host.

00:38:15.893 --> 00:38:21.833
<v Chris>Take all these all these server side services I'd set up, migrate them to the new host and.

00:38:23.084 --> 00:38:27.644
<v Chris>And then start with a fresh, sort of divorce the configurations from Hypervibe

00:38:27.644 --> 00:38:32.344
<v Chris>and start with a new configuration that removes all the desktop and the Wayland

00:38:32.344 --> 00:38:35.224
<v Chris>and all of the desktop applications and is fresh.

00:38:35.404 --> 00:38:37.904
<v Brent>It's like open heart surgery performing over there.

00:38:38.044 --> 00:38:41.604
<v Chris>And so that took a little bit to just kind of, you know.

00:38:41.604 --> 00:38:45.264
<v Wes>I'm thinking it's more like, you know, that Voyager episode where B'Elanna Torres

00:38:45.264 --> 00:38:47.224
<v Wes>is infected with an alien parasite.

00:38:47.364 --> 00:38:47.544
<v Chris>Mm-hmm.

00:38:48.004 --> 00:38:49.064
<v Wes>Sounds kind of more like that.

00:38:49.164 --> 00:38:49.764
<v Brent>Yeah, I think you're right.

00:38:49.944 --> 00:38:52.624
<v Chris>It was. It was like that. And then extracting that took, you know.

00:38:52.624 --> 00:38:56.484
<v Wes>They've kind of grown codependent on things. They're sharing some of the same base infrastructure.

00:38:56.844 --> 00:39:00.064
<v Chris>And much like the doctor, I performed a miracle and saved the day.

00:39:00.364 --> 00:39:04.484
<v Chris>And I'm very proud of it. So I did. I actually, I took the time.

00:39:04.904 --> 00:39:08.584
<v Chris>I started, I think, was it Thursday, Brent? I don't remember now. I think it was Thursday.

00:39:08.944 --> 00:39:14.404
<v Chris>I started at 9 a.m. and I finished at 1130 p.m. And I don't even think I stopped

00:39:14.404 --> 00:39:16.304
<v Chris>for lunch or dinner or anything like that.

00:39:17.104 --> 00:39:20.964
<v Chris>Food was brought to me and I just worked that whole window of time,

00:39:21.504 --> 00:39:25.344
<v Chris>created the new separate configuration a different git repo for it got a clean

00:39:25.344 --> 00:39:29.204
<v Chris>good solid base went through it and tidied up the configuration because there'd

00:39:29.204 --> 00:39:32.764
<v Chris>been a lot of duplicate and drift over time made it really tight you.

00:39:32.764 --> 00:39:34.504
<v Wes>Mean your existing one or the new one.

00:39:34.504 --> 00:39:37.584
<v Chris>Well the new one was based it was forked from the okay i wasn't sure.

00:39:37.584 --> 00:39:38.264
<v Wes>Yeah so you like.

00:39:38.264 --> 00:39:41.804
<v Chris>Then i had to go back afterwards and clean that one up too so that.

00:39:41.804 --> 00:39:43.464
<v Wes>Was that your method was do a fork.

00:39:43.464 --> 00:39:45.064
<v Chris>And then remove.

00:39:45.064 --> 00:39:47.324
<v Wes>The other the complimentary hands from each one.

00:39:47.324 --> 00:39:52.364
<v Chris>Basically yes exactly okay that took a while there's a lot of little edge cases

00:39:52.364 --> 00:39:58.124
<v Chris>and small stuff my own my own fault letting it go this long but it was i was

00:39:58.124 --> 00:40:03.284
<v Chris>using the uh the sync set the think sentry mq970 i think it was a leader yeah

00:40:03.284 --> 00:40:05.444
<v Chris>920 thank you which already.

00:40:05.444 --> 00:40:06.644
<v Wes>We had nicks on and.

00:40:06.644 --> 00:40:08.224
<v Chris>Like a test setup yeah that.

00:40:08.224 --> 00:40:09.644
<v Brent>Uh came from a listener i think right.

00:40:09.644 --> 00:40:13.504
<v Chris>It did ah thank you oh my gosh came in as the kids would say clutch,

00:40:14.414 --> 00:40:19.774
<v Chris>So I got that all working. And then it was really a matter of migrating the data over,

00:40:20.094 --> 00:40:25.594
<v Chris>figuring all that stuff up and then going through and changing paths and fixing

00:40:25.594 --> 00:40:30.274
<v Chris>all that little stuff and trying to stabilize it out and then get the services

00:40:30.274 --> 00:40:33.114
<v Chris>working the way they should again and connecting to the right things.

00:40:33.114 --> 00:40:36.494
<v Chris>um but while i'm

00:40:36.494 --> 00:40:40.114
<v Chris>doing sort of the last phase of the data migration just

00:40:40.114 --> 00:40:43.174
<v Chris>copying like the files and the services

00:40:43.174 --> 00:40:48.374
<v Chris>and just getting all that over the disk on the b-link starts flipping in a read

00:40:48.374 --> 00:40:53.194
<v Chris>only mode on me and keeps interrupting the migration and i'm like come on i'm

00:40:53.194 --> 00:40:57.974
<v Chris>barely i'm like i'm like these are the last 10 of the migration i'm so close

00:40:57.974 --> 00:41:00.494
<v Chris>and it's fighting me the entire time.

00:41:00.734 --> 00:41:03.854
<v Chris>And I'm like doing everything I can. I'm like booting it into minimal mode with

00:41:03.854 --> 00:41:06.314
<v Chris>no graphical environment, just SSH going.

00:41:06.454 --> 00:41:09.734
<v Chris>And I'm trying to do like an SCP to get the last few files off this thing.

00:41:09.874 --> 00:41:13.794
<v Chris>And it made it, the last two hours take so long.

00:41:14.734 --> 00:41:15.674
<v Chris>But when I was done,

00:41:17.648 --> 00:41:21.868
<v Chris>I got it all working on the new, well, the new to me, Lenovo,

00:41:22.508 --> 00:41:24.588
<v Chris>working really great with a good, tight configuration.

00:41:25.808 --> 00:41:30.088
<v Chris>And when I stopped harassing the machine that I was migrating from and stabilized,

00:41:30.428 --> 00:41:35.088
<v Chris>I went back through, cleaned up all the configs, so it's just a Hypervibe-focused desktop again.

00:41:35.088 --> 00:41:35.768
<v Wes>That must have been nice.

00:41:35.788 --> 00:41:36.248
<v Chris>Oh, it is nice.

00:41:36.248 --> 00:41:38.808
<v Wes>You probably dropped so much from your next store.

00:41:38.808 --> 00:41:42.628
<v Chris>It does feel a little bit faster. Now it's dedicated again, and all that stuff's

00:41:42.628 --> 00:41:46.148
<v Chris>on its own isolated, dedicated hardware, which we have KVM set up for so I can

00:41:46.148 --> 00:41:47.868
<v Chris>fire up a few VMs. It's not going

00:41:47.868 --> 00:41:51.908
<v Chris>to be the final server home of all my stuff, but it's a good stopgap.

00:41:52.888 --> 00:41:57.368
<v Chris>And, you know, now if my desktop does fail on me and goes into permanent read-only

00:41:57.368 --> 00:42:01.088
<v Chris>mode, I don't lose all the server-side stuff when I go to nuke and pave and

00:42:01.088 --> 00:42:04.008
<v Chris>then stand it back up again. Like, all of that's been isolated out.

00:42:04.248 --> 00:42:07.768
<v Chris>But the timing of it, like, it couldn't have been crazier because I had that

00:42:07.768 --> 00:42:11.568
<v Chris>trip, and I didn't want to disrupt before I left, and I could tell it was going

00:42:11.568 --> 00:42:15.548
<v Chris>downhill. And then as I'm working on just, you know, it was a it was a fast

00:42:15.548 --> 00:42:16.888
<v Chris>copy, you know, it's a gigabit network.

00:42:17.028 --> 00:42:19.968
<v Chris>So it's not like it's slow, but like even just getting to the point of reading

00:42:19.968 --> 00:42:21.608
<v Chris>the file system was pushing it.

00:42:22.068 --> 00:42:24.208
<v Chris>So that's rough. Yeah.

00:42:24.508 --> 00:42:25.428
<v Wes>So it was time to move.

00:42:25.868 --> 00:42:29.348
<v Chris>Just in time. I couldn't believe how down to the wire that that became.

00:42:29.688 --> 00:42:32.768
<v Brent>How do you feel about data integrity of your clone?

00:42:33.128 --> 00:42:39.068
<v Chris>Good. I'm very happy with the process because it gave me a chance to recover.

00:42:39.068 --> 00:42:43.788
<v Chris>I have been using Restic to back up to an R2 storage bucket.

00:42:44.068 --> 00:42:45.528
<v Chris>And then so it gave me a chance to do some of that.

00:42:46.208 --> 00:42:50.888
<v Chris>And I found a bunch of like legacy config stuff that was from versions of projects

00:42:50.888 --> 00:42:55.908
<v Chris>that start with one name and then changed or upgraded or have a new image on whatever.

00:42:56.828 --> 00:43:00.048
<v Chris>Like it gave me a chance to go through and find all that stuff that had kind of drifted.

00:43:00.688 --> 00:43:04.628
<v Chris>So at the end of it, it was totally worth it. But always I sore.

00:43:04.828 --> 00:43:06.828
<v Chris>You know, because when you sit there at the computer like that hunched over

00:43:06.828 --> 00:43:08.488
<v Chris>for 12 hours, just like fever hacking.

00:43:09.657 --> 00:43:12.677
<v Chris>You end up like with a sore, at least I do. I ended up with like a sore back and all of that.

00:43:12.797 --> 00:43:16.297
<v Wes>It's especially rough because you sort of like get back to where you were before.

00:43:16.677 --> 00:43:19.737
<v Wes>In a better way, ready to build again, but just, you know.

00:43:19.997 --> 00:43:22.397
<v Chris>Yeah. Yeah, there is that aspect to it. It's.

00:43:23.137 --> 00:43:24.417
<v Wes>It must be done, right?

00:43:24.417 --> 00:43:29.417
<v Chris>It must be done. Yeah. And that Lenovo was the perfect machine for what I'm doing.

00:43:30.357 --> 00:43:33.417
<v Chris>It does have that PCI expansion slot. And so I am pondering,

00:43:33.557 --> 00:43:36.717
<v Chris>could I like drop an external GPU if I could get my hands on one?

00:43:37.797 --> 00:43:41.617
<v Chris>and now I still need to replace my Odroid with something else and I'm thinking

00:43:41.617 --> 00:43:42.957
<v Chris>maybe another ThinkCenter.

00:43:43.217 --> 00:43:46.597
<v Brent>All you need is another disk, Chris. That machine is fantastic.

00:43:47.537 --> 00:43:54.777
<v Chris>Yeah I am running a little baby Olama model on it and when it works it really pushes all the cores.

00:43:55.777 --> 00:43:59.097
<v Chris>There's no room. It's really pushing it.

00:43:59.177 --> 00:44:03.157
<v Wes>Although So you just refurb that to Brantley and then you get the new one leader.

00:44:03.297 --> 00:44:06.897
<v Chris>I have to be honest with you it

00:44:06.897 --> 00:44:09.797
<v Chris>really this hardware the ThinkCenter what is it the 9

00:44:09.797 --> 00:44:12.537
<v Chris>it's the M920Q thank you

00:44:12.537 --> 00:44:15.617
<v Chris>and it's got I think the best thing about it it's got

00:44:15.617 --> 00:44:23.057
<v Chris>32 gigs of RAM and it has two separate disks it has an NVMe for the system and

00:44:23.057 --> 00:44:29.757
<v Chris>a SATA it's kind of like my B-Link did it has a SATA for the VM images and the

00:44:29.757 --> 00:44:34.117
<v Chris>language models and what not and that's on a compressed BcacheFS file system,

00:44:34.757 --> 00:44:36.417
<v Chris>So it's really snappy and great.

00:44:37.057 --> 00:44:42.097
<v Chris>And it will load, but with 32 gigs of RAM and an i5 8500T,

00:44:43.452 --> 00:44:46.332
<v Chris>It really pushes the limits of what this thing can do.

00:44:46.512 --> 00:44:50.932
<v Chris>But I have to say, you would not know sitting right next to it.

00:44:51.012 --> 00:44:53.372
<v Chris>It doesn't make a bunch of noise. It's totally silent still.

00:44:53.872 --> 00:44:58.692
<v Brent>While I was tinkering with all these electronics and soldering various things

00:44:58.692 --> 00:45:03.172
<v Brent>to Chris's diesel heater, it was right there on the table next to me.

00:45:03.412 --> 00:45:08.712
<v Brent>And it was virtually silent. Like you were pushing that thing like crazy and you would never know it.

00:45:08.812 --> 00:45:15.312
<v Brent>And it was like a foot in front of my ear holes. So it, I think, really impressed me.

00:45:15.752 --> 00:45:19.452
<v Chris>Now, for the listeners that are sick of the AI stuff, I put this just in this

00:45:19.452 --> 00:45:20.652
<v Chris>section. I'll mention it really quick.

00:45:20.812 --> 00:45:23.932
<v Chris>One of the things I've been taking advantage of is an ACP.

00:45:24.602 --> 00:45:27.822
<v Chris>and open code so i can control open code remotely

00:45:27.822 --> 00:45:30.782
<v Chris>and so part of the migration when i had to step away i was literally doing

00:45:30.782 --> 00:45:33.742
<v Chris>through telegram and having to execute bits and

00:45:33.742 --> 00:45:36.402
<v Chris>to check like the scripts to make sure all the paths were updated and when

00:45:36.402 --> 00:45:39.382
<v Chris>we were doing stuff i could just keep working and then i came back for

00:45:39.382 --> 00:45:42.082
<v Chris>a bit and it was not so i could step out go take care of something with

00:45:42.082 --> 00:45:45.322
<v Chris>the kids come back sit back down and i never stopped the migration

00:45:45.322 --> 00:45:48.342
<v Chris>process ever like so the like total

00:45:48.342 --> 00:45:51.582
<v Chris>of two hours i was probably away from the screen i was still working on it and

00:45:51.582 --> 00:45:54.502
<v Chris>and being able to do this where i am delegating to

00:45:54.502 --> 00:45:58.302
<v Chris>a machine this and delegating to a machine and then it's just a matter of coming

00:45:58.302 --> 00:46:02.102
<v Chris>back and checking the work and making sure it all finished and it it really

00:46:02.102 --> 00:46:05.262
<v Chris>made it sort of like a con something i could continually do throughout throughout

00:46:05.262 --> 00:46:08.442
<v Chris>the entire day so that was really neat too and i just thought i'd mention that

00:46:08.442 --> 00:46:13.562
<v Chris>because why not let you step away let me step away and keep the process going which was and.

00:46:13.562 --> 00:46:16.262
<v Wes>Maybe means you could you know on a day you knew you'd be busy you might have

00:46:16.262 --> 00:46:20.002
<v Wes>a little more gumption to take on that task because you know like it can kind

00:46:20.002 --> 00:46:22.322
<v Wes>of run while you're off taking care of necessary things.

00:46:22.322 --> 00:46:25.662
<v Chris>Yeah we had brent at the farm you know you got to keep an eye on him kids are

00:46:25.662 --> 00:46:29.482
<v Chris>running around chasing brent usually usually chasing brent yeah it's.

00:46:29.482 --> 00:46:30.222
<v Wes>All the other way around.

00:46:30.222 --> 00:46:36.102
<v Chris>Yeah but it's pretty it was it was pretty neat to at the end of it be like it's

00:46:36.102 --> 00:46:39.522
<v Chris>totally done you know like a lot of times you do these kinds of projects and

00:46:39.522 --> 00:46:44.462
<v Chris>there's a few things that hang out there for a week or two but kind of doing

00:46:44.462 --> 00:46:47.282
<v Chris>that loop of okay check these paths check these files and doing all that it

00:46:47.282 --> 00:46:49.782
<v Chris>was when i was done at the end of the, at the marathon,

00:46:50.062 --> 00:46:52.542
<v Chris>it was totally done. Job finished.

00:46:52.962 --> 00:46:55.862
<v Brent>Oh, Chris, don't you know nothing around here is totally done?

00:46:56.042 --> 00:46:57.062
<v Chris>Yeah, I probably shouldn't say that.

00:46:58.434 --> 00:47:03.514
<v Chris>Well, we should mention that LinuxFest Northwest is just 40 days away. Just 40 days.

00:47:04.654 --> 00:47:09.874
<v Chris>Bellingham Technical College, the beautiful Pacific Northwest that time of year. April 24th to the 26th.

00:47:10.774 --> 00:47:12.694
<v Chris>So soon. So, so soon.

00:47:12.794 --> 00:47:14.074
<v Wes>We need to talk about our live show.

00:47:14.414 --> 00:47:18.274
<v Brent>Oh, yeah. We're doing a talk. Collective talk. It's not a talk. We're talking.

00:47:18.514 --> 00:47:19.614
<v Chris>Is that the plan? Is that what we're doing?

00:47:19.774 --> 00:47:21.974
<v Wes>Mm-hmm. We signed up.

00:47:22.574 --> 00:47:26.994
<v Chris>Yeah. So here's the thing. We got to decide if we want to do it in a room again

00:47:26.994 --> 00:47:29.674
<v Chris>or a booth. And I kind of vote booth, but then we have a booth.

00:47:31.454 --> 00:47:36.214
<v Chris>But, you know what I mean? But the thing is, is like the room thing hasn't been a great vibe.

00:47:36.754 --> 00:47:40.774
<v Brent>The trick with the room is all of a sudden we have to like filter in there and

00:47:40.774 --> 00:47:44.774
<v Brent>stand up our entire infrastructure, which is hard to do before a talk.

00:47:45.254 --> 00:47:48.114
<v Chris>They're not designed for people at computers. They're designed for people standing

00:47:48.114 --> 00:47:51.694
<v Chris>and doing a presentation. So when we're sitting, nobody can see us and we can't see them.

00:47:51.814 --> 00:47:55.334
<v Brent>But what they do have is loudspeakers. So we'd have to figure out.

00:47:55.614 --> 00:47:55.714
<v Chris>Yeah, and screens.

00:47:56.054 --> 00:47:57.154
<v Brent>That's also true.

00:47:57.154 --> 00:48:01.014
<v Chris>But if we got a booth at the TV screen and we brought a speaker we might be

00:48:01.014 --> 00:48:01.934
<v Chris>able to I don't know well you.

00:48:01.934 --> 00:48:03.074
<v Brent>Should ask the audience what.

00:48:03.074 --> 00:48:04.354
<v Chris>Do they want are you.

00:48:04.354 --> 00:48:07.634
<v Brent>Joining us LinuxFest Northwest just north of Seattle.

00:48:08.034 --> 00:48:10.834
<v Chris>And if so what do you want and if you've been to one what have you preferred

00:48:10.834 --> 00:48:12.054
<v Chris>at the booth or in the room.

00:48:12.814 --> 00:48:13.694
<v Brent>We're not doing both.

00:48:13.694 --> 00:48:18.054
<v Chris>No either one although it's one or the other although I also think it'd be really

00:48:18.054 --> 00:48:21.754
<v Chris>awesome if the weather was great to do it outside just saying wow.

00:48:22.414 --> 00:48:23.414
<v Brent>You're getting ambitious.

00:48:23.414 --> 00:48:27.174
<v Chris>Right just hook up use jupes for power I think that'd be pretty great Anyways,

00:48:27.354 --> 00:48:31.894
<v Chris>LinuxFest Northwest, if you want more details, it is LinuxFestNorthwest.org.

00:48:32.134 --> 00:48:35.054
<v Chris>We hope to see you. We'll be there with our bells on.

00:48:40.684 --> 00:48:43.504
<v Brent>Oh wow while we were busy working a bunch of boosts came

00:48:43.504 --> 00:48:46.624
<v Brent>in including a baller boost here from spooky set

00:48:46.624 --> 00:48:58.624
<v Brent>com two boosts came in for a total of 60 663 sets thank you for the readback

00:48:58.624 --> 00:49:03.324
<v Brent>of scale and planet nix last week sounded like a great time for you guys here's

00:49:03.324 --> 00:49:05.744
<v Brent>some value for your time there Thank you.

00:49:06.464 --> 00:49:12.384
<v Chris>We appreciate that. You know, it's a burden, but somebody has to do it.

00:49:12.464 --> 00:49:17.184
<v Chris>No, they're both actually a bit of a burden, I guess, but also we really enjoy it a lot.

00:49:18.084 --> 00:49:20.524
<v Chris>So we appreciate that. Also, Wes, get yourself ready.

00:49:21.444 --> 00:49:23.784
<v Chris>Grab your map because it is time.

00:49:23.844 --> 00:49:24.944
<v Wes>It's a zip code?

00:49:25.104 --> 00:49:29.684
<v Chris>I know. It's been a minute. There you go, buddy. There you go.

00:49:30.364 --> 00:49:32.984
<v Wes>Okay. So we got two seven...

00:49:34.784 --> 00:49:36.524
<v Brent>We've got to add an ESP to that thing.

00:49:37.404 --> 00:49:42.564
<v Wes>27330. That looks to be Sanford, North Carolina in Lee County.

00:49:42.884 --> 00:49:45.924
<v Chris>Hello, North Carolina. Thank you for boosting in.

00:49:45.984 --> 00:49:48.524
<v Wes>Tell me if I got that right. I feel rusty. It's been a minute.

00:49:49.284 --> 00:49:51.844
<v Brent>Also, I don't think there was any math in this zip code boost.

00:49:51.884 --> 00:49:52.544
<v Wes>It's so nice.

00:49:52.864 --> 00:49:53.944
<v Chris>It does make it easier.

00:49:54.224 --> 00:49:58.424
<v Wes>I love math. Something about show math. It's a whole other type of math.

00:49:58.664 --> 00:50:03.164
<v Chris>It is. It is. Outdoor Geek comes in with 50,000 SATs.

00:50:06.055 --> 00:50:11.055
<v Chris>Thank you for your coverage of scale in Planet Nix. Guys, thank you for recognizing the work there.

00:50:11.175 --> 00:50:15.695
<v Chris>I don't mean to sound weird about it, but it is a ton of ebbing work,

00:50:15.795 --> 00:50:18.715
<v Chris>and you have to schedule your life and travel, and it's hard on the body.

00:50:18.795 --> 00:50:21.435
<v Chris>It's hard on the family. So thank you very much, Outdoor Geek, 50,000 sats.

00:50:21.715 --> 00:50:23.955
<v Chris>And thank you, Spooky, for that as well.

00:50:24.735 --> 00:50:28.915
<v Wes>Turd Ferguson boosts in with 22,222 sats.

00:50:31.875 --> 00:50:35.755
<v Wes>Sending a McDuck-sized value for your coverage of Planet Nix and scale.

00:50:36.155 --> 00:50:38.375
<v Wes>Thanks for going for those of us who can't.

00:50:40.855 --> 00:50:44.715
<v Chris>Thank you, turd. Again, thank you. We appreciate that very, very much.

00:50:45.395 --> 00:50:49.955
<v Wes>Also, it was wonderful to see all of you who did make it. Seeing our own listeners

00:50:49.955 --> 00:50:51.535
<v Wes>at events like that is always our favorite.

00:50:51.615 --> 00:50:55.615
<v Chris>Names and faces. Names and faces. And it changes it for us. It probably changes

00:50:55.615 --> 00:50:58.035
<v Chris>it for them, too, in a weird way, but for us in a better way.

00:50:59.115 --> 00:51:03.295
<v Brent>Well, Morak boosted in 2,385 Zadoshis.

00:51:04.915 --> 00:51:07.015
<v Brent>long time listener first time

00:51:07.015 --> 00:51:11.375
<v Brent>booster love the show wish i could give more but thank you for what you do.

00:51:11.375 --> 00:51:16.615
<v Chris>Hey first time booster thank you thank you welcome aboard appreciate you very

00:51:16.615 --> 00:51:23.195
<v Chris>much gene bean is here with 4444 sats yeah that was two rows of duckos,

00:51:28.368 --> 00:51:32.088
<v Chris>Okay, guys, who was that extra person on the show for LUP657?

00:51:32.968 --> 00:51:35.948
<v Chris>Although apparently I didn't boost last episode enough, I thought about it several

00:51:35.948 --> 00:51:37.508
<v Chris>times. So here's a little bit extra.

00:51:37.628 --> 00:51:38.408
<v Brent>Oh, sweet.

00:51:38.868 --> 00:51:44.488
<v Chris>So we introduced producer Jason in the pre-pre-show, I believe.

00:51:44.668 --> 00:51:45.328
<v Wes>Classic us.

00:51:45.668 --> 00:51:47.088
<v Brent>Otherwise known as the members feed.

00:51:47.288 --> 00:51:53.068
<v Chris>Yeah. And so that was our bad. I think maybe the best way to get familiar would

00:51:53.068 --> 00:51:54.668
<v Chris>be to check out an old brunch with Brent.

00:51:54.928 --> 00:51:58.168
<v Brent>We do have a brunch with Brent. And if you look up Brunch with Brent,

00:51:58.348 --> 00:52:02.948
<v Brent>that's brunch.show, you can look for the dear old Jason Spizak,

00:52:03.048 --> 00:52:05.608
<v Brent>who we did a split episode. There's two episodes there.

00:52:06.268 --> 00:52:12.048
<v Brent>And Jason is a dear friend of the show and a dear friend of mine and also happens

00:52:12.048 --> 00:52:15.608
<v Brent>to be a professional voice actor, if you didn't notice.

00:52:15.908 --> 00:52:17.608
<v Chris>And part of the fun for us, right, is when we're down there,

00:52:17.688 --> 00:52:21.648
<v Chris>we get to see friends that we don't get to see otherwise. And he was in the

00:52:21.648 --> 00:52:22.648
<v Chris>area and was able to stay with us.

00:52:22.648 --> 00:52:26.928
<v Brent>I also might have been talking to him on the phone on the drive to the show

00:52:26.928 --> 00:52:30.728
<v Brent>today and got a tease that he might join us for LinuxFest Northwest.

00:52:31.088 --> 00:52:31.628
<v Wes>Oh, that'd be great.

00:52:31.848 --> 00:52:32.568
<v Chris>That'd be awesome.

00:52:32.708 --> 00:52:37.308
<v Brent>So we might have some live boost sounds for our live show at LinuxFest.

00:52:37.488 --> 00:52:43.408
<v Chris>Yeah, so we, I guess in our minds, we had checked that box and I apologize about that.

00:52:44.128 --> 00:52:47.128
<v Chris>And it's something we try to be better about. But when we're live and there's

00:52:47.128 --> 00:52:49.948
<v Chris>a lot going on, I think it was a little bit easier for us to lose track.

00:52:50.368 --> 00:52:53.828
<v Chris>Thank you, Gene. I'm glad you asked. and it's good to hear from you. Missed you.

00:52:54.288 --> 00:52:56.808
<v Chris>Magnolia Mayhem's here with a row of ducks.

00:52:58.215 --> 00:53:01.375
<v Chris>I may not be sitting on a pile big enough to send a million sats,

00:53:01.495 --> 00:53:03.275
<v Chris>but I hope this helps you recover from the trip.

00:53:03.415 --> 00:53:06.955
<v Chris>A row of ducks to celebrate the first eggs from our new ducks on the farm.

00:53:08.075 --> 00:53:08.695
<v Brent>That's sweet.

00:53:09.055 --> 00:53:12.095
<v Chris>I saw him in the chat room while we were talking about the ESP32 saying,

00:53:12.115 --> 00:53:13.895
<v Chris>I've got to do something like this for a chicken coop.

00:53:14.195 --> 00:53:16.535
<v Chris>I think that'd be really cool. Thank you for the row of ducks.

00:53:16.695 --> 00:53:18.475
<v Chris>Appreciate it. Thank you, everybody who boosted the show.

00:53:18.815 --> 00:53:22.455
<v Chris>We really do appreciate you. 2,000 sats is the cutoff to get it read on air.

00:53:22.855 --> 00:53:25.695
<v Chris>And, of course, thank you to those of you who stream sats just as you listen.

00:53:25.695 --> 00:53:31.375
<v Chris>And collectively, all of you stacked 36,532 SATs stream it. So it's a pretty

00:53:31.375 --> 00:53:32.275
<v Chris>good boost for this week.

00:53:33.095 --> 00:53:39.835
<v Chris>Really, thank you very much. That brings us to a grand total of 178,568 SATs.

00:53:44.317 --> 00:53:47.117
<v Chris>Not too bad. Thank you, everybody who supports the show. We really,

00:53:47.217 --> 00:53:50.097
<v Chris>really do appreciate it. Of course, shout out to our members as well.

00:53:52.897 --> 00:53:56.757
<v Chris>All right, we have a trifecta of picks to leave you with. And the first one,

00:53:56.757 --> 00:54:00.717
<v Chris>I feel bad. I should have mentioned this a while ago.

00:54:00.917 --> 00:54:03.137
<v Chris>I've been using this app a lot.

00:54:03.657 --> 00:54:06.837
<v Chris>And when you need it, you really need it. Do you know what I'm talking about? One of those?

00:54:07.117 --> 00:54:07.997
<v Brent>Well, I have an admission.

00:54:08.337 --> 00:54:08.777
<v Chris>What's that?

00:54:08.897 --> 00:54:11.857
<v Brent>I really needed it about two years ago and installed it on my system.

00:54:11.857 --> 00:54:14.197
<v Brent>And it's still installed. I forgot to tell you guys about it.

00:54:14.197 --> 00:54:14.337
<v Wes>What?

00:54:14.617 --> 00:54:15.317
<v Chris>Two years?

00:54:16.257 --> 00:54:17.797
<v Wes>What else is he hoarding?

00:54:17.877 --> 00:54:19.957
<v Chris>I'm like two months, and I'm feeling bad here.

00:54:20.237 --> 00:54:22.977
<v Wes>You didn't even have the van there, so where are you hiding all this stuff?

00:54:23.197 --> 00:54:31.097
<v Chris>Unbelievable. So Lossless Cut is a simple, super fast tool to trim and cut video without any loss.

00:54:31.677 --> 00:54:35.957
<v Chris>You want to cut a segment out. You want to cut audio out. You have GoPro footage,

00:54:36.077 --> 00:54:40.997
<v Chris>camera footage, a YouTube clip, a movie. whatever FFMPEG can read,

00:54:41.257 --> 00:54:45.277
<v Chris>it can cut without making any re-encode.

00:54:45.457 --> 00:54:49.917
<v Chris>So not only is it super fast, but you lose zero quality. So that's why it's called lossless cut.

00:54:50.357 --> 00:54:53.777
<v Wes>I also think it has the ability for times when you might have like keyframe

00:54:53.777 --> 00:54:56.637
<v Wes>issues where you might not be able to make a clean lossless cut,

00:54:56.797 --> 00:55:00.577
<v Wes>the ability to just re-encode to like interpolate between those parts.

00:55:00.877 --> 00:55:04.997
<v Chris>I'd say it's even a little more powerful than AvidMux, which is also really great in this category.

00:55:05.717 --> 00:55:09.397
<v Chris>For those of you that maybe you want to cut commercials out of TV shows that

00:55:09.397 --> 00:55:13.537
<v Chris>you've recorded with a DVR or you want to remove an audio or video track and

00:55:13.537 --> 00:55:15.977
<v Chris>discard the other either or it'll do that.

00:55:16.097 --> 00:55:18.757
<v Chris>Or you want to add music without having to re-encode the video or you want to

00:55:18.757 --> 00:55:20.957
<v Chris>add subtitles without having to re-encode the video.

00:55:21.697 --> 00:55:28.837
<v Chris>It will do that. It can read chapters. It can change format of an H.264 TV recording

00:55:28.837 --> 00:55:31.477
<v Chris>to TS or to MP4, whatever it is you might need.

00:55:32.117 --> 00:55:36.257
<v Chris>If you recorded something on the wrong orientation and you need to fix the rotation

00:55:36.257 --> 00:55:39.897
<v Chris>of the video, it can do that without re-encoding. I mean, the list goes on and on.

00:55:40.417 --> 00:55:43.637
<v Chris>It's a great application and GPL2 licensed.

00:55:44.726 --> 00:55:49.326
<v Chris>Now, our next pick, this is not a silver bullet for this problem,

00:55:49.346 --> 00:55:54.946
<v Chris>but you'll hear us talk about local LLMs and local AI from time to time.

00:55:55.306 --> 00:56:01.066
<v Chris>And there is an app on the web that lets you test your system to see what models you could likely run.

00:56:01.486 --> 00:56:05.026
<v Chris>And it's called CanIRun.ai.

00:56:05.926 --> 00:56:11.266
<v Chris>CanIRun.ai. And it's a quick WebGPL test to see which models would most likely

00:56:11.266 --> 00:56:12.706
<v Chris>operate on your hardware.

00:56:14.309 --> 00:56:17.609
<v Chris>And it ranks them for you and tells you what kind of tokens you could expect.

00:56:18.029 --> 00:56:22.849
<v Chris>And if you go to the tier list, it tells you, oh, this machine does better than

00:56:22.849 --> 00:56:23.949
<v Chris>my workstation upstairs.

00:56:24.269 --> 00:56:26.909
<v Chris>All of the models are in the F tier on this station.

00:56:27.849 --> 00:56:31.269
<v Wes>Yeah, so it's able to use WebGPU to detect your graphics card.

00:56:31.489 --> 00:56:33.889
<v Wes>And then from that, it just kind of knows what's going on. And then,

00:56:33.969 --> 00:56:37.589
<v Wes>of course, there's a dropdown here so you can specify if you want to override it, which is great.

00:56:37.769 --> 00:56:41.309
<v Chris>Yeah, but the idea is, now this isn't, like I said, this isn't accounting for

00:56:41.309 --> 00:56:49.149
<v Chris>everything because simply they can't do that with WebGPU and WebGL.

00:56:49.389 --> 00:56:49.789
<v Wes>WebGupu.

00:56:49.889 --> 00:56:52.709
<v Chris>Goopu. They can't really get all of the features and functions,

00:56:52.709 --> 00:56:56.029
<v Chris>but they can tell you this model that supports tools that you can run locally,

00:56:56.029 --> 00:56:58.709
<v Chris>you can expect about this token output at this speed.

00:56:59.149 --> 00:57:02.609
<v Chris>So you get a rough idea if it's even worth it or not. And what I like about

00:57:02.609 --> 00:57:04.909
<v Chris>the tier list is it really puts it in perspective.

00:57:05.289 --> 00:57:08.269
<v Chris>You get S, A, B, C, D, and F tiers.

00:57:09.089 --> 00:57:10.689
<v Chris>And for me, I'm all in the F tier.

00:57:11.289 --> 00:57:11.729
<v Wes>Yeah.

00:57:12.049 --> 00:57:13.009
<v Chris>Oh, I don't even really.

00:57:13.029 --> 00:57:17.309
<v Wes>Or you can see, you know, oh, I can only ever even get to see on models I don't even want to run.

00:57:17.629 --> 00:57:18.569
<v Chris>Yeah. Yeah.

00:57:19.189 --> 00:57:19.629
<v Wes>But.

00:57:19.989 --> 00:57:20.449
<v Chris>Good to know.

00:57:20.609 --> 00:57:21.629
<v Wes>Someday it'll change.

00:57:21.869 --> 00:57:25.609
<v Chris>Yeah, maybe. Maybe. Can I run dot a I.

00:57:25.929 --> 00:57:29.489
<v Chris>And on this same line, if you hate web apps and you want something with more

00:57:29.489 --> 00:57:31.629
<v Chris>detail and more insight into your system.

00:57:32.889 --> 00:57:37.369
<v Chris>LLM fit hundreds of models and providers. One command to find what runs on your

00:57:37.369 --> 00:57:43.449
<v Chris>hardware. a terminal TUI that finds the right-sized LM model for your system's RAM, CPU, GPU.

00:57:43.689 --> 00:57:47.229
<v Chris>It detects your hardware, scores each model across quality, speed,

00:57:47.389 --> 00:57:52.949
<v Chris>fit, and context dimensions, and tells you which ones actually run on your machine.

00:57:54.449 --> 00:57:56.069
<v Chris>And has a flake.

00:57:56.169 --> 00:57:57.449
<v Wes>Okay, okay.

00:57:57.869 --> 00:57:58.689
<v Chris>MIT licensed.

00:57:59.109 --> 00:58:02.649
<v Wes>So I can just run this, and then it'll go tell me info?

00:58:02.849 --> 00:58:05.249
<v Chris>Yeah, and it's a really nice TUI as well.

00:58:06.600 --> 00:58:10.200
<v Chris>And you can search, so it has a search field, so if you know which model you're

00:58:10.200 --> 00:58:12.320
<v Chris>looking for and you just want to go right to that, you can put it in there.

00:58:12.500 --> 00:58:14.540
<v Wes>Written in Rust, a little Python in there.

00:58:14.620 --> 00:58:20.300
<v Chris>The other thing that's really fun is it gives you just a handle on how many

00:58:20.300 --> 00:58:23.740
<v Chris>open source LLMs there are.

00:58:23.840 --> 00:58:27.240
<v Chris>I think in my head there's four. Oh, no.

00:58:27.900 --> 00:58:29.460
<v Wes>Have you ever even been to Hugging Face?

00:58:29.680 --> 00:58:34.560
<v Chris>Yeah, Hugging Face does put it in perspective. But seeing it broken down by

00:58:34.560 --> 00:58:39.420
<v Chris>what my machine could possibly run still, there's so many options for various different jobs.

00:58:40.220 --> 00:58:44.980
<v Chris>It's way broader than I really appreciated. So anyways, you know,

00:58:45.100 --> 00:58:46.480
<v Chris>web app, TUI, whichever you want.

00:58:46.640 --> 00:58:49.560
<v Chris>I think the TUI is a little better. LLM fit. Did you get a chance to try it?

00:58:49.980 --> 00:58:51.600
<v Wes>I think I'm building it right now.

00:58:51.740 --> 00:58:54.280
<v Chris>Oh, you have to build the rest stuff, I imagine.

00:58:54.860 --> 00:58:55.800
<v Wes>But I'm happy to.

00:58:56.000 --> 00:58:59.680
<v Chris>Yeah, yeah. So there you go. We'll have the links in the show notes for all

00:58:59.680 --> 00:59:02.300
<v Chris>of that. Big shout out to the lossless cut project.

00:59:02.920 --> 00:59:08.160
<v Chris>They have really been handy because we deal with large, large recordings and

00:59:08.160 --> 00:59:11.240
<v Chris>we don't want to have to re encode them. That would just make them look more like garbage.

00:59:11.420 --> 00:59:14.040
<v Chris>So the lossless cut project has been fantastic.

00:59:14.240 --> 00:59:18.740
<v Chris>Links at Linux unplugged.com slash six, five, eight.

00:59:19.780 --> 00:59:23.280
<v Chris>Whoa, that's really close to the big seven. Oh, that's really close.

00:59:23.460 --> 00:59:23.800
<v Wes>We're not ready.

00:59:24.180 --> 00:59:29.640
<v Chris>We are not ready. Also, just a reminder, we'd like you to boost in with the

00:59:29.640 --> 00:59:33.060
<v Chris>most underpowered hardware you're using for any particular job.

00:59:33.260 --> 00:59:36.800
<v Chris>Could be a web machine, or maybe it's something in the wall.

00:59:37.060 --> 00:59:40.980
<v Chris>Maybe it's something running actually critical workloads. Fake NAS.

00:59:41.840 --> 00:59:45.260
<v Chris>Oh, fake NAS. You know, that kind of thing. I just think that'd be fascinating

00:59:45.260 --> 00:59:48.200
<v Chris>to see what people are getting out of older hardware these days,

00:59:48.400 --> 00:59:51.120
<v Chris>especially with the prices of things. So do let us know.

00:59:54.926 --> 00:59:57.806
<v Chris>We are back into the groove, and I promise we'll try to be, you know,

00:59:57.866 --> 01:00:01.686
<v Chris>we will be on time next week. So make it a Linux Tuesday on a Sunday.

01:00:01.906 --> 01:00:06.186
<v Chris>Join us Sunday, 10 a.m. Pacific, 1 p.m. Eastern, over at jblive.tv.

01:00:06.826 --> 01:00:12.066
<v Chris>And Wes Payne, before they go, we should let them know there is extra data they could get.

01:00:12.366 --> 01:00:15.566
<v Wes>Oh, yeah. Some of it's even magical structured data.

01:00:15.626 --> 01:00:15.886
<v Chris>JSON.

01:00:16.266 --> 01:00:17.466
<v Wes>Yeah, computers love it.

01:00:17.566 --> 01:00:17.686
<v Chris>JSON.

01:00:17.986 --> 01:00:19.226
<v Wes>Uh-huh, chapter information.

01:00:19.466 --> 01:00:19.686
<v Chris>That's right.

01:00:19.806 --> 01:00:23.606
<v Wes>Yeah, the precise time codes for you to jump right to the content that you want.

01:00:24.186 --> 01:00:28.046
<v Wes>or if you want the entire show as text, we have that too.

01:00:28.266 --> 01:00:33.686
<v Chris>Yep. It's available in our feed. You can get it from there or just get a podcasting 2.0 app.

01:00:33.906 --> 01:00:38.066
<v Chris>Don't forget about our Matrix Room, a huge community going 24-7 and that mumble

01:00:38.066 --> 01:00:41.266
<v Chris>room live during the show before and after as well.

01:00:41.466 --> 01:00:44.646
<v Chris>Thank you so much for joining us on this week's episode of Your Unplugged Program

01:00:44.646 --> 01:00:46.846
<v Chris>and we'll see you right back here next Sunday.

01:01:28.319 --> 01:01:30.019
<v Chris>All right. Did you get it working, Wes?

01:01:30.199 --> 01:01:36.319
<v Wes>I did. Like a madman. I probably have NixLD enabled, which would do it for me,

01:01:36.359 --> 01:01:37.619
<v Wes>but I disabled it for my talk.

01:01:38.359 --> 01:01:41.119
<v Wes>And I could have made a custom plate for it, but I decided to just YOLO,

01:01:41.219 --> 01:01:44.679
<v Wes>and I told OpenCode to use PatchElf to fix it, because it's a Rust binary,

01:01:44.719 --> 01:01:48.079
<v Wes>so it really only needed the dynamic linker part updated to use the Nix one

01:01:48.079 --> 01:01:49.579
<v Wes>and not the standard place for it.

01:01:50.719 --> 01:01:54.539
<v Wes>And in about 10 seconds, it was done. It's working? It's working, yeah.

01:01:54.859 --> 01:01:55.899
<v Chris>It looks great, doesn't it?

01:01:55.939 --> 01:01:56.759
<v Wes>Yeah, it really does look great.

01:01:56.759 --> 01:02:00.839
<v Chris>It's a good UI. It's a good little TUI. And what does it say the best candidate

01:02:00.839 --> 01:02:03.279
<v Chris>for your ThinkPad T480 is there?

01:02:03.359 --> 01:02:07.819
<v Wes>That would be the Microsoft Fi tiny mixture of experts instruct.

01:02:08.659 --> 01:02:13.819
<v Wes>But I would get 140 tokens per second.

01:02:13.879 --> 01:02:15.279
<v Chris>All right. Oh, well, there you go.

01:02:15.419 --> 01:02:17.559
<v Wes>I do think actually they have, I don't know if it's all of them,

01:02:17.619 --> 01:02:21.859
<v Wes>but they have some Fi models that are like trained from, I think like fully

01:02:21.859 --> 01:02:26.039
<v Wes>licensed stuff or as well as like a bunch of kind of curated synthetic data.

01:02:26.139 --> 01:02:26.619
<v Chris>That's cool.

01:02:26.799 --> 01:02:28.579
<v Wes>Yeah. So there's some progress on that front, too.

01:02:28.759 --> 01:02:29.479
<v Chris>The ethical model.

