WEBVTT

00:00:00.005 --> 00:00:02.965
<v Chris>I just about drank all my Red Bull. Oh, I did drink all my Red Bull.

00:00:03.205 --> 00:00:03.945
<v Brent>Uh-oh.

00:00:04.565 --> 00:00:05.205
<v Wes>Uh-oh.

00:00:05.485 --> 00:00:08.605
<v Chris>Wes brought me a winter iced edition.

00:00:08.745 --> 00:00:09.305
<v Wes>They're pretty nice.

00:00:09.525 --> 00:00:14.345
<v Chris>The iced vanilla berry. It's quite pleasant. It's a nice winter treat.

00:00:14.505 --> 00:00:17.525
<v Chris>Do you think they'll have this in the summer? Because I think it could be refreshing all year round.

00:00:17.585 --> 00:00:20.305
<v Wes>I think you're right. Maybe pour it over a little ice in the summer while you're sitting on the deck.

00:00:20.425 --> 00:00:22.465
<v Chris>I think it could be our drink of choice on the road trip.

00:00:22.845 --> 00:00:24.025
<v Wes>Do you think they'll sponsor us?

00:00:24.945 --> 00:00:28.065
<v Chris>You know, B-Rent's talking about flying into Vancouver and then coming down

00:00:28.065 --> 00:00:32.885
<v Chris>with us in the car to California I support that I know wouldn't that be nice I.

00:00:32.885 --> 00:00:34.985
<v Brent>Know that wasn't plan A, B or C but plan.

00:00:34.985 --> 00:00:39.045
<v Chris>A sounds fabulous boys trip I'll miss the van but it'll be a solid boys trip well I know.

00:00:39.665 --> 00:00:43.945
<v Brent>I know I know if it wasn't like so many mountain passes that are really snowy

00:00:43.945 --> 00:00:46.385
<v Brent>to get there plus like a five day trek.

00:00:46.385 --> 00:00:48.125
<v Chris>I understand of course we.

00:00:48.125 --> 00:00:48.805
<v Wes>Do want you fresh.

00:00:48.805 --> 00:00:53.765
<v Chris>Every Airbnb we booked is only for two people so you will have to sleep in the car but that's fun,

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

00:01:10.445 --> 00:01:11.065
<v Wes>My name is Wes.

00:01:11.265 --> 00:01:12.205
<v Brent>And my name is Brent.

00:01:12.545 --> 00:01:15.885
<v Chris>Hello, gentlemen. Well, as we prepare to hit the road for Planet Nix,

00:01:15.985 --> 00:01:19.285
<v Chris>we're going to chat with two individuals who have seen some major shifts and

00:01:19.285 --> 00:01:24.325
<v Chris>transition in Linux over the years, and we're going to get their take on where we stand right now.

00:01:24.525 --> 00:01:27.345
<v Chris>Then we're going to round out the show with some great booths and picks and

00:01:27.345 --> 00:01:31.765
<v Chris>a lot more. It's a big episode, so before we get there, we've got to say time-appropriate

00:01:31.765 --> 00:01:34.885
<v Chris>greetings to our virtual lug, which is PJ. Hello, PJ!

00:01:37.124 --> 00:01:39.904
<v Chris>No shade to all the folks up on quiet listening. To be honest with you,

00:01:40.144 --> 00:01:42.764
<v Chris>if I was listening to the show live, that's how I'd be doing it.

00:01:42.904 --> 00:01:43.804
<v Chris>I'd be up there in the quiet listening.

00:01:44.464 --> 00:01:46.904
<v Wes>No risk of accidentally showing up on stream.

00:01:47.184 --> 00:01:49.904
<v Chris>Yeah. That way I can make my fart noises and stuff and it doesn't want it.

00:01:50.184 --> 00:01:52.464
<v Wes>And we get to see it, right? That is true. Everyone else watching,

00:01:52.544 --> 00:01:55.044
<v Wes>it's a little hard to tell. We know you're there, but it's a little hard.

00:01:55.224 --> 00:01:55.624
<v Chris>It's nice for us.

00:01:55.644 --> 00:01:56.424
<v Wes>With Mumble, it's right there.

00:01:56.464 --> 00:02:01.564
<v Chris>It gives it the live vibe. We are live every single Sunday over at jblive.tv. Is that what it is?

00:02:02.024 --> 00:02:02.664
<v Wes>Jblive.tv.

00:02:02.904 --> 00:02:03.144
<v Chris>Is that where you go?

00:02:03.144 --> 00:02:07.164
<v Wes>Or jblive.fm if you just want a tight little HTTP MP3 stream.

00:02:07.264 --> 00:02:08.884
<v Chris>Wes, what if I just want to do it in my podcast app?

00:02:09.144 --> 00:02:09.964
<v Wes>You can do that.

00:02:10.084 --> 00:02:10.364
<v Chris>I can?

00:02:10.504 --> 00:02:15.604
<v Wes>Both live audio and live video if it supports an alternate enclosure.

00:02:15.864 --> 00:02:17.304
<v Chris>Whoa, in the podcast app?

00:02:17.384 --> 00:02:18.964
<v Wes>That's crazy. It's got to be 2.0.

00:02:19.224 --> 00:02:22.484
<v Chris>Okay. Well, let's say good morning to our friends over at Define.net.

00:02:22.584 --> 00:02:27.184
<v Chris>Go to Define.net slash unplugged and meet Manage Nebula from Define Networking.

00:02:27.324 --> 00:02:32.624
<v Chris>It's a decentralized VPN built on the open source Nebula platform that we love.

00:02:33.144 --> 00:02:36.824
<v Chris>And it's optimized for speed, simplicity, and security.

00:02:37.064 --> 00:02:42.324
<v Chris>And unlike the other systems out there, there isn't a central provider or a

00:02:42.324 --> 00:02:44.544
<v Chris>central control plane that can knock you offline.

00:02:44.764 --> 00:02:47.784
<v Chris>In fact, you can build out the network as resilient as you like.

00:02:47.784 --> 00:02:51.804
<v Chris>You can let them manage it entirely. You can have one system to talk into another

00:02:51.804 --> 00:02:55.364
<v Chris>system for backups, or you can have a worldwide enterprise system.

00:02:55.744 --> 00:02:59.584
<v Chris>It's best in class. It's very impressive. It's one of the projects that we have

00:02:59.584 --> 00:03:04.904
<v Chris>followed from the very beginning, and we're super excited to have them on the show because we love it.

00:03:05.004 --> 00:03:08.744
<v Chris>We've been, like, totally dialed into where this thing's going, and we're using it.

00:03:09.124 --> 00:03:12.324
<v Chris>Nebula was built in 2017. That's how long we have been fanboys.

00:03:12.684 --> 00:03:15.964
<v Chris>So go check it out because you can get started, 100 hosts for free,

00:03:16.064 --> 00:03:17.084
<v Chris>no credit card required.

00:03:17.244 --> 00:03:21.944
<v Chris>You go to defined.net slash unplugged, and you deserve a better VPN experience,

00:03:21.944 --> 00:03:25.224
<v Chris>one that you fully control, especially when it's your infrastructure and you're

00:03:25.224 --> 00:03:29.124
<v Chris>going to use it for a while. Defined.net slash Unplugged.

00:03:29.164 --> 00:03:31.624
<v Chris>And thank you to Defined for supporting the Unplugged program,

00:03:31.884 --> 00:03:33.904
<v Chris>our one and only sponsor right now.

00:03:35.990 --> 00:03:40.130
<v Chris>Well, Planet Nix is just one episode away. We will be in studio,

00:03:40.350 --> 00:03:44.390
<v Chris>although I was thinking it would be fun to just hit the road early and do one

00:03:44.390 --> 00:03:45.510
<v Chris>show from- You're right.

00:03:45.730 --> 00:03:46.410
<v Brent>Just to do it.

00:03:46.730 --> 00:03:52.390
<v Chris>Just to do it, but then I think about what a pain in our behind that would be, and I think- No.

00:03:52.470 --> 00:03:53.650
<v Wes>It's a lot more work for no reason.

00:03:53.690 --> 00:03:57.790
<v Chris>We'll just drive harder and faster. So we have one more episode in studio,

00:03:57.990 --> 00:04:02.390
<v Chris>and then we're hitting the road to Pasadena for Planet Nix and, of course, Scale.

00:04:02.890 --> 00:04:06.270
<v Chris>Planet Nix is bringing engineers from Anthropics, Spotify, Microsoft,

00:04:06.650 --> 00:04:12.570
<v Chris>and AWS for just practical getting things done Nix talks, nerd workshops.

00:04:12.850 --> 00:04:16.530
<v Chris>The agenda is live March 5th through the 6th. Check it out. Planet Nix.

00:04:16.730 --> 00:04:17.450
<v Chris>It's going to be amazing.

00:04:18.430 --> 00:04:21.730
<v Chris>Phlox is sending us there. I'm very, very grateful for that because this is

00:04:21.730 --> 00:04:25.150
<v Chris>something that we would have so much FOMO on if we couldn't make it.

00:04:25.150 --> 00:04:26.090
<v Wes>Oh, my gosh. I know. So much.

00:04:26.190 --> 00:04:30.110
<v Chris>It would be so intense. And Phlox is the perfect company to do this.

00:04:30.230 --> 00:04:33.250
<v Chris>They're in the right position. they're trying to make reproducible dev environments

00:04:33.250 --> 00:04:36.230
<v Chris>that are actually usable for everyday folks they're kind of you know in the

00:04:36.230 --> 00:04:38.310
<v Chris>mix here so we're going to have a meetup,

00:04:38.810 --> 00:04:42.630
<v Chris>it's going to be great meetup.com slash jupiter broadcasting the details aren't

00:04:42.630 --> 00:04:46.070
<v Chris>necessarily final there but we will get them locked in we do appreciate if you're

00:04:46.070 --> 00:04:50.970
<v Chris>going to make it if you can sign up because it lets the venue know one more unplugged boys.

00:04:51.470 --> 00:04:52.250
<v Wes>I'm getting nervous.

00:04:52.250 --> 00:04:53.470
<v Chris>Hopefully the weather's great,

00:04:54.516 --> 00:04:55.076
<v Chris>I hope so.

00:04:55.396 --> 00:04:57.556
<v Wes>Why do you say things like that? You're just setting us up.

00:04:57.556 --> 00:04:58.096
<v Brent>I know, right?

00:04:58.236 --> 00:05:01.116
<v Chris>If you can't make it too, we would appreciate any support you can provide.

00:05:01.816 --> 00:05:05.376
<v Chris>A boost or becoming a member would be a big help because the show is running

00:05:05.376 --> 00:05:08.936
<v Chris>hyper lean at the beginning of the year. And these are pretty expensive for us.

00:05:09.136 --> 00:05:12.896
<v Wes>And maybe also let us know what you want to see out of some of our coverage.

00:05:12.976 --> 00:05:15.196
<v Wes>The things you're curious about, stuff we can check in on.

00:05:15.436 --> 00:05:21.136
<v Chris>We're going to be at scale too. And that is the largest Linux event in the Northern American area.

00:05:21.316 --> 00:05:24.316
<v Chris>And so there's a lot there. We will be on the ground.

00:05:24.896 --> 00:05:28.776
<v Chris>We do have a promo code. You can use unpludge, U-N-P-L-G, to sign up and get

00:05:28.776 --> 00:05:30.116
<v Chris>40% off your tickets to scale.

00:05:30.656 --> 00:05:34.496
<v Chris>And if you're nowhere in the area, you're not going, you're just sick and tired

00:05:34.496 --> 00:05:37.296
<v Chris>of us talking about this, the good news is we're almost done.

00:05:37.616 --> 00:05:39.356
<v Chris>And then you won't have to hear us go on about this anymore.

00:05:39.696 --> 00:05:42.116
<v Chris>And we do appreciate your patience. Really, we do.

00:05:47.876 --> 00:05:51.736
<v Chris>Well, we had a chance to sit down with Michael Stonke, the VP of Engineering at Phlox.

00:05:51.736 --> 00:05:54.556
<v Chris>And i did a little of my

00:05:54.556 --> 00:05:58.216
<v Chris>internet stalking before we sat down with michael and

00:05:58.216 --> 00:06:02.576
<v Chris>i discovered that he's been responsible for some projects that we have all used

00:06:02.576 --> 00:06:07.216
<v Chris>and benefited from in one form or another so he joins us now he'll be at planet

00:06:07.216 --> 00:06:11.956
<v Chris>nix in just a couple of weeks as well giving a talk yep giving a talk a good

00:06:11.956 --> 00:06:15.436
<v Chris>talk we'll have that linked in the show notes so let's welcome michael to the program.

00:06:19.172 --> 00:06:23.232
<v Michael>A.K.A. Stonkey, welcome to the Unplugged program. It's great to have you, sir.

00:06:23.972 --> 00:06:27.972
<v Michael>No, thanks for having me. So you are the VP of Engineering at Phlox,

00:06:28.032 --> 00:06:31.012
<v Michael>and I think that is particularly interesting.

00:06:31.152 --> 00:06:34.132
<v Michael>I'm just going to get right into it because this is my bad.

00:06:34.272 --> 00:06:37.792
<v Michael>I didn't realize that you were the co-founder of the extra packages for Enterprise

00:06:37.792 --> 00:06:40.352
<v Michael>Linux back in the day in 2005.

00:06:41.512 --> 00:06:45.912
<v Michael>And now here you are all these days later at Phlox doing Nick stuff.

00:06:46.112 --> 00:06:49.992
<v Michael>Still involved in packaging, turns out. Yeah, I mean, that was kind of how it

00:06:49.992 --> 00:06:52.912
<v Michael>came full circle was when Flux kind of reached out to me.

00:06:53.012 --> 00:06:58.312
<v Michael>I was like, wait, that was me to run a whole business based on packaging? Hell yeah, I'm so in.

00:06:59.912 --> 00:07:03.392
<v Michael>So yeah, I mean, I've loved packaging my entire life. It was just one of the

00:07:03.392 --> 00:07:05.372
<v Michael>coolest things I have ever gotten to do and work on.

00:07:05.512 --> 00:07:08.252
<v Michael>And so why would I not want to keep doing it?

00:07:08.772 --> 00:07:10.632
<v Michael>And, you know, there's different ways, there's different theories,

00:07:10.792 --> 00:07:13.852
<v Michael>but I've packaged for basically every Unix and Linux under the sun.

00:07:14.212 --> 00:07:17.412
<v Michael>And they all have advantages and disadvantages. advantages and nix

00:07:17.412 --> 00:07:20.272
<v Michael>was actually something i had looked at first in i'm

00:07:20.272 --> 00:07:22.952
<v Michael>gonna say 2007 2008 somewhere in there

00:07:22.952 --> 00:07:25.992
<v Michael>and and i just thought okay a bunch of haskell people decided packaging

00:07:25.992 --> 00:07:28.792
<v Michael>just wasn't difficult enough um and they made

00:07:28.792 --> 00:07:33.532
<v Michael>nix and so i kind of dismissed it for a long time and you know obviously kind

00:07:33.532 --> 00:07:35.852
<v Michael>of sitting on the sidelines i saw things mature and stuff like that but i really

00:07:35.852 --> 00:07:38.532
<v Michael>hadn't given it a shot until flox had reached out and i started playing with

00:07:38.532 --> 00:07:42.072
<v Michael>it again i was like oh there's actually a lot here that i really like so yeah

00:07:42.072 --> 00:07:46.612
<v Michael>and looking back on it i would have changed my career completely if I'd have known Nix,

00:07:46.692 --> 00:07:52.072
<v Michael>because some of the work that I was hiring dozens of people to do probably could have been removed.

00:07:52.352 --> 00:07:54.692
<v Michael>Oh, yeah.

00:07:55.252 --> 00:08:00.092
<v Michael>So I guess also for a little bit of background, you spent some real interesting

00:08:00.092 --> 00:08:03.652
<v Michael>time at Puppet during a real key moment in history and CircleCI.

00:08:04.012 --> 00:08:07.992
<v Michael>So that really feels like a very interesting background to now bring to Nix,

00:08:08.072 --> 00:08:14.292
<v Michael>because it's a totally, totally different world and sort of almost a 20-year

00:08:14.292 --> 00:08:17.772
<v Michael>journey to kind of bring you to this point. It still must have been quite the leap, though.

00:08:17.892 --> 00:08:20.892
<v Michael>I have to imagine from that background, going to what you're doing today,

00:08:20.992 --> 00:08:23.212
<v Michael>that must have been a bit of a mental learning process.

00:08:24.930 --> 00:08:28.230
<v Michael>The tech wasn't too bad. I mean, there's, there's new words,

00:08:28.330 --> 00:08:30.670
<v Michael>you know, you hear things like derivation or you hear things,

00:08:30.850 --> 00:08:34.790
<v Michael>you know, like provenance, you know, spoken about so regularly and things like

00:08:34.790 --> 00:08:36.490
<v Michael>that. And like, that's, that's fine.

00:08:37.030 --> 00:08:40.990
<v Michael>And it, but so there was new vocabulary to learn, but most of the principles

00:08:40.990 --> 00:08:44.410
<v Michael>were basically the same, you know, it was like, why do I chatter the immutable

00:08:44.410 --> 00:08:45.530
<v Michael>bit of my distribution server?

00:08:45.690 --> 00:08:48.590
<v Michael>Well, because it should be read only. So you can't ship the same thing with

00:08:48.590 --> 00:08:51.830
<v Michael>the same version with a different shah sum. And it's like, well,

00:08:51.950 --> 00:08:53.730
<v Michael>it just handles that internally.

00:08:54.010 --> 00:08:58.170
<v Michael>Like, you know, so there's a lot of those principles made total sense once I unpacked them.

00:08:58.250 --> 00:09:02.350
<v Michael>And there were other things that didn't make sense and frankly still don't to a lot of degrees.

00:09:03.050 --> 00:09:06.370
<v Michael>You know, there's just choices that are made. I'm like, I have no idea why this

00:09:06.370 --> 00:09:08.750
<v Michael>decision was made or for whom this was made.

00:09:08.870 --> 00:09:13.470
<v Michael>You know, was it made to make one developer's life easier or every user of Nix easier?

00:09:13.630 --> 00:09:17.690
<v Michael>You know, things like that. And I'm, you know, and again, there's just not,

00:09:18.190 --> 00:09:21.310
<v Michael>every technology has these moments. So it's like, this is not unique to Nix.

00:09:21.910 --> 00:09:26.130
<v Michael>Yeah. But, you know, kind of from the puppet world, where we wanted to declare

00:09:26.130 --> 00:09:28.770
<v Michael>the state, we wanted to have, you know, state enforcement and all of that.

00:09:28.910 --> 00:09:33.430
<v Michael>Looking at Nix, you actually end up in a very similar kind of CSE,

00:09:33.450 --> 00:09:37.110
<v Michael>you know, graph theory, I'm going to walk my dependencies kind of mode.

00:09:37.410 --> 00:09:39.970
<v Michael>It's almost the same stuff. It's just applied through a, you know,

00:09:40.070 --> 00:09:42.810
<v Michael>different language lens, different client server models and,

00:09:42.930 --> 00:09:45.350
<v Michael>you know, things like that. So, yeah, maybe you flip it a bit,

00:09:45.430 --> 00:09:47.830
<v Michael>right, where you can the system's working with you instead of sort of having

00:09:47.830 --> 00:09:50.690
<v Michael>to impose item potency from afar after the fact.

00:09:51.665 --> 00:09:55.105
<v Michael>Right, right. It does make me, it does kind of stand out to me that,

00:09:55.265 --> 00:09:59.445
<v Michael>you know, between Apple and Puppet and Circle, like, you've been involved clearly

00:09:59.445 --> 00:10:02.465
<v Michael>with a lot of the different lifecycle in software, not just,

00:10:02.605 --> 00:10:04.545
<v Michael>you know, building a backend service that runs a SaaS.

00:10:04.705 --> 00:10:08.305
<v Michael>It's like actually having to do good builds and get them out there on infrastructure

00:10:08.305 --> 00:10:11.005
<v Michael>and get them configured and running properly on end machines,

00:10:11.005 --> 00:10:14.025
<v Michael>which I think probably connects a bit to Fox's mission, too.

00:10:14.785 --> 00:10:19.185
<v Michael>Yeah, I mean, you know, at Puppet, it was built basically a whole distribution

00:10:19.185 --> 00:10:21.525
<v Michael>of this thing called Puppet Enterprise. that had to run on all these different

00:10:21.525 --> 00:10:24.025
<v Michael>platforms. We're testing on 100 different targets or whatever.

00:10:24.225 --> 00:10:26.825
<v Michael>And so through that testing, we had to build custom CI systems because there

00:10:26.825 --> 00:10:29.585
<v Michael>was nothing off the shelf that did anything that we needed it to do.

00:10:30.405 --> 00:10:33.985
<v Michael>And eventually that's where CircleCI comes in. They see me give presentations

00:10:33.985 --> 00:10:36.405
<v Michael>on the way we build and test Puppet and they're like, we'd love to have you.

00:10:36.505 --> 00:10:39.665
<v Michael>And so I get to go do that, which is super fun because the cost of being wrong

00:10:39.665 --> 00:10:42.385
<v Michael>at Puppet was you had to ship a new version.

00:10:42.585 --> 00:10:44.805
<v Michael>You had to wait for your customer to take it up. And that might be a change

00:10:44.805 --> 00:10:47.825
<v Michael>window that's nine months from now before they even get it installed and all that.

00:10:48.245 --> 00:10:51.225
<v Michael>You go to CircleCI and it's like, Like we can ship literally 85 times.

00:10:52.225 --> 00:10:56.245
<v Michael>And it was just awesome. You know, like that is so cool. And then at Flux,

00:10:56.365 --> 00:10:58.645
<v Michael>there's a little bit of both because it's like a client piece and a server piece.

00:10:58.705 --> 00:11:01.385
<v Michael>And the servers, we can be moving all around and we can be updating and,

00:11:01.405 --> 00:11:04.585
<v Michael>you know, adding new observability capabilities or, you know, whatever all the time.

00:11:05.145 --> 00:11:08.485
<v Michael>And then on the client, we ship it every two weeks and roughly,

00:11:08.705 --> 00:11:11.025
<v Michael>I mean, almost always every two weeks, but every now and then we take a week

00:11:11.025 --> 00:11:13.225
<v Michael>break if it's like a holiday week or we're all at an offsite or something.

00:11:13.445 --> 00:11:17.565
<v Michael>But, you know, and that gives you that client on your computers,

00:11:17.745 --> 00:11:20.725
<v Michael>whether it's, you know, client, server, laptop, whatever, but,

00:11:20.845 --> 00:11:24.365
<v Michael>and, and so it has a little bit of both of those like backgrounds that I really,

00:11:24.385 --> 00:11:25.665
<v Michael>you know, got to, got to work in.

00:11:25.745 --> 00:11:29.485
<v Michael>And so it, I would say, generally, it leverages a lot of my background pretty well.

00:11:30.405 --> 00:11:34.105
<v Michael>So then, okay, where is the gap now for regular enterprise adoption?

00:11:34.265 --> 00:11:38.885
<v Michael>Because you kind of just made a great case, but it still seems a little slow. I mean, it's picking up.

00:11:39.852 --> 00:11:46.252
<v Michael>Yeah, I think that a lot of the friction is, it's like socio-technical,

00:11:46.352 --> 00:11:47.032
<v Michael>it's not just technical.

00:11:47.232 --> 00:11:50.652
<v Michael>And so you have, you know, I think Nix is, it's cool.

00:11:51.432 --> 00:11:54.812
<v Michael>It's, it's, well, the documentation and the getting started guides are still

00:11:54.812 --> 00:11:57.772
<v Michael>a little bit esoteric, or maybe you're like, this one's weird if you're doing

00:11:57.772 --> 00:11:59.252
<v Michael>it in this way versus that way.

00:11:59.252 --> 00:12:02.132
<v Michael>But a lot of companies end up evaluating nicks for

00:12:02.132 --> 00:12:04.792
<v Michael>using it and what we find is there's kind of one person who's the

00:12:04.792 --> 00:12:08.052
<v Michael>champion of the nicks you know experience and if

00:12:08.052 --> 00:12:10.792
<v Michael>that champion is no longer available for whatever reason you

00:12:10.792 --> 00:12:14.512
<v Michael>know they win the lottery they leave they get hit by a bus they are on pto they

00:12:14.512 --> 00:12:20.332
<v Michael>have a baby whatever it is the nicks effort kind of stagnates and then basically

00:12:20.332 --> 00:12:23.112
<v Michael>gets a bad rap because people like oh this nicks stuff no one understands it

00:12:23.112 --> 00:12:26.652
<v Michael>but like we rely on it this sucks it's always broken no one knows how to fix

00:12:26.652 --> 00:12:29.112
<v Michael>it why do i have to learn all this that That doesn't get totally different.

00:12:29.512 --> 00:12:34.632
<v Michael>Yeah, right, right. And so, you know, when Michael, our founder.

00:12:35.732 --> 00:12:38.652
<v Michael>You know, was at D.E. Shaw, which is a giant hedge fund, you know,

00:12:38.692 --> 00:12:41.592
<v Michael>big financial services. Cost being rung there, very high, by the way.

00:12:42.152 --> 00:12:44.192
<v Michael>You know, you're talking millions of dollars a minute at times.

00:12:44.472 --> 00:12:47.932
<v Michael>So, and so for them, they needed a lot of precision, which meant they need to

00:12:47.932 --> 00:12:51.272
<v Michael>know where software came from and everything. And so they found Nix as this build system.

00:12:51.512 --> 00:12:55.452
<v Michael>And he was, this is awesome. My developers can't use this. And so,

00:12:55.592 --> 00:12:58.852
<v Michael>he started working on what are the abstraction layers, what are the patterns,

00:12:58.972 --> 00:13:01.912
<v Michael>what are the workflows that people need, and that was eventually spun out to become Phlox.

00:13:02.092 --> 00:13:05.932
<v Michael>And as we've been developing Phlox, it's been, well, how do we work on team

00:13:05.932 --> 00:13:11.112
<v Michael>collaboration and team usage and team understanding versus kind of that superhuman

00:13:11.112 --> 00:13:14.632
<v Michael>individual that maybe eats, sleeps, and breathes this stuff and sees it more

00:13:14.632 --> 00:13:16.572
<v Michael>religiously than probably pragmatically.

00:13:17.272 --> 00:13:22.792
<v Michael>And I think for us, if you're religious and love Nix about it, cool, that's fine.

00:13:23.659 --> 00:13:26.419
<v Michael>I think a lot of people just want to get their work done and move on and that's

00:13:26.419 --> 00:13:29.119
<v Michael>cool too and so we want to help you do that with these principles that are

00:13:29.119 --> 00:13:32.139
<v Michael>awesome from nix yeah kind of it kind of reminds me of of editors you

00:13:32.139 --> 00:13:34.899
<v Michael>know you could do something where you have a custom neovim setup and it really

00:13:34.899 --> 00:13:38.059
<v Michael>fits you and you've like made it bespoke and it's great and it works really

00:13:38.059 --> 00:13:40.799
<v Michael>well but you can't really onboard someone to that and it's kind of nix is the

00:13:40.799 --> 00:13:44.579
<v Michael>same way right it's a it's a private superpower it's incredible but yeah trying

00:13:44.579 --> 00:13:48.199
<v Michael>to make sure everyone else is on the same page with your particular way of injecting

00:13:48.199 --> 00:13:50.699
<v Michael>the right uh modules different story.

00:13:52.046 --> 00:13:55.086
<v Michael>For us, like, one of the more interesting things I would say about,

00:13:55.086 --> 00:13:59.466
<v Michael>like, Flox right now is we're not just trying to be, like, Nix++ or Nix with a veneer.

00:13:59.646 --> 00:14:02.326
<v Michael>You know, like, there are other capabilities within Flox that are more about

00:14:02.326 --> 00:14:06.526
<v Michael>portability of usage and about acceleration of environments and,

00:14:06.606 --> 00:14:09.506
<v Michael>like, all these kind of environmental things that are, I would say,

00:14:09.566 --> 00:14:12.466
<v Michael>more Flox primitives than, like, Nix primitives at this point.

00:14:12.506 --> 00:14:15.266
<v Michael>And that's really important to us as well because we don't just want to be,

00:14:15.386 --> 00:14:17.366
<v Michael>like, Nix++ because if all you're going to do is make Nix better,

00:14:17.546 --> 00:14:20.086
<v Michael>just go work upstream and make Nix better. Like, that's the right thing to do.

00:14:20.546 --> 00:14:24.566
<v Michael>But we were trying to build it more with a commercial eye toward adoption from,

00:14:24.566 --> 00:14:27.766
<v Michael>you know, businesses that actually want to want to get work done and have a

00:14:27.766 --> 00:14:28.746
<v Michael>build system that's consistent.

00:14:29.086 --> 00:14:31.666
<v Michael>Any of those primitives stand out? I'm just kind of curious.

00:14:31.786 --> 00:14:35.326
<v Michael>I've dabbled with Phlox, but I haven't used it in part of a shipping team yet or anything.

00:14:35.646 --> 00:14:40.166
<v Michael>Yeah, I mean, I think the Phlox environment is kind of the thing that we would say is different.

00:14:40.286 --> 00:14:43.606
<v Michael>You know, in a lot of ways, it resembles a Nix profile, but it's like a Nix

00:14:43.606 --> 00:14:46.606
<v Michael>profile that is a big superset of what a Nix profile can do.

00:14:46.606 --> 00:14:48.826
<v Michael>You know, we have service management within there.

00:14:48.926 --> 00:14:53.246
<v Michael>So you can have developer services kind of into, you know, you could say flock

00:14:53.246 --> 00:14:56.346
<v Michael>services start or flock services status and kind of get, you know,

00:14:56.406 --> 00:14:58.006
<v Michael>I have my Postgres running, I have my Redis running.

00:14:58.166 --> 00:15:01.086
<v Michael>So the second I can clone the thing I'm going to go work on,

00:15:01.266 --> 00:15:03.026
<v Michael>I can just clone, activate, start services.

00:15:03.066 --> 00:15:06.606
<v Michael>And now I've basically got a working developer setup, you know, within moments.

00:15:06.786 --> 00:15:10.546
<v Michael>And then more on the runtime side or, you know, builder side,

00:15:10.706 --> 00:15:13.706
<v Michael>you can build custom packages. You can add them in there. you can activate things

00:15:13.706 --> 00:15:16.886
<v Michael>where you have libraries enabled to compile against or you only have binaries

00:15:16.886 --> 00:15:19.626
<v Michael>in the bin path. It works with ZSH and not just Bash.

00:15:19.786 --> 00:15:23.426
<v Michael>So there's all sorts of enhancements that we've done there but some of them

00:15:23.426 --> 00:15:27.826
<v Michael>are also just not things that a Nix shell sets out to do and that's totally fine.

00:15:29.266 --> 00:15:32.446
<v Michael>For us, we want the Flux environment to be the unit of change.

00:15:32.606 --> 00:15:35.786
<v Michael>It's got history, it's got generations, you can roll back to previous versions

00:15:35.786 --> 00:15:39.186
<v Michael>of it, everything like that so that it's more of an enterprise capability.

00:15:39.786 --> 00:15:43.546
<v Michael>Yeah, that makes a lot a sense of kind of taking some of the ideas in the broader

00:15:43.546 --> 00:15:48.966
<v Michael>ecosystem in ways Nix gets right and maybe applying them to a broader scope of ideas. That's neat.

00:15:49.829 --> 00:15:53.389
<v Michael>Yeah, if you kind of think about like a thing that was a unit of work and all

00:15:53.389 --> 00:15:57.449
<v Michael>the CNCF workflows and, you know, we built all sorts of tooling around it and everything.

00:15:57.609 --> 00:16:00.749
<v Michael>And it's kind of similar like that. And we just we use the Phlox environment.

00:16:00.869 --> 00:16:03.429
<v Michael>It's not to say we can't work with containers, by the way. We totally work with

00:16:03.429 --> 00:16:05.989
<v Michael>containers, but you don't have to. It's optional. Yeah.

00:16:06.709 --> 00:16:09.989
<v Michael>OK, so I want to shift gears and talk a little bit about another gap that I

00:16:09.989 --> 00:16:12.489
<v Michael>think maybe you're bringing up in a talk on Friday.

00:16:13.169 --> 00:16:15.649
<v Michael>So I kind of wanted to get a sense of, oh, I don't have a picture.

00:16:15.649 --> 00:16:17.929
<v Michael>I kind of want to get a sense of what you'll be talking about,

00:16:18.449 --> 00:16:21.509
<v Michael>Nix and AI, are we there yet?

00:16:21.669 --> 00:16:26.489
<v Michael>And then you have a line in here, why aren't more ML teams using Nix?

00:16:27.482 --> 00:16:31.002
<v Michael>Yeah, well, so there's like so many threads to pull on in that topic.

00:16:31.342 --> 00:16:38.162
<v Michael>And I mean, I think part of it is model distribution is, it's expensive and

00:16:38.162 --> 00:16:40.442
<v Michael>it's bespoke to a large degree.

00:16:40.602 --> 00:16:44.582
<v Michael>It's like your home directory has a dot, you know, olama directory or whatever.

00:16:44.922 --> 00:16:47.982
<v Michael>And it's just got gigabytes and gigabytes of stuff in there.

00:16:48.142 --> 00:16:51.782
<v Michael>And if you have another user on the same system, they have this same thing.

00:16:52.282 --> 00:16:54.402
<v Michael>They also have gigabytes and gigabytes of stuff in there. It's just like,

00:16:54.882 --> 00:16:56.982
<v Michael>I mean, just from an efficiency standpoint, it makes me angry.

00:16:56.982 --> 00:17:01.282
<v Michael>But like also is it versioned is it packaged like how do you know what's in

00:17:01.282 --> 00:17:04.262
<v Michael>it where did it come from was it from hugging face was it you know did you get

00:17:04.262 --> 00:17:06.942
<v Michael>it straight from somewhere else did you just go download it off github like

00:17:06.942 --> 00:17:11.042
<v Michael>there's all sorts of needs there for those ai and ml teams and i think you can

00:17:11.042 --> 00:17:13.782
<v Michael>just look at it as well what if they were just packaged and like you know

00:17:14.202 --> 00:17:17.682
<v Michael>they should be read only like those models shouldn't be being written to so

00:17:17.682 --> 00:17:21.522
<v Michael>like a lot of the things that nix does by default you kind of want those those

00:17:21.522 --> 00:17:26.222
<v Michael>those defaults and And so packaging some of that, but also, you know,

00:17:26.342 --> 00:17:27.802
<v Michael>just being able to pass it around and be like,

00:17:27.962 --> 00:17:30.662
<v Michael>you know, we, a lot of those models also don't care what architecture they run on.

00:17:30.742 --> 00:17:33.962
<v Michael>So you don't need like a package specific, like this is on AR64 and this is

00:17:33.962 --> 00:17:37.322
<v Michael>on, you know, PowerPC or whatever. It's like, it's, it's just inputs.

00:17:37.602 --> 00:17:41.182
<v Michael>So not all of them depends on the model exactly, but like, you know,

00:17:41.562 --> 00:17:42.802
<v Michael>there's just different ways of doing that stuff.

00:17:42.822 --> 00:17:46.502
<v Michael>And so I think that's part of it, but also one of my favorite things I've been

00:17:46.502 --> 00:17:50.242
<v Michael>doing since I've worked at Phlox is I have a program that I like to throw and

00:17:50.242 --> 00:17:52.922
<v Michael>say, generating expression to build this program.

00:17:53.842 --> 00:17:58.822
<v Michael>And I'll throw it at an LLM. It's a really, really simple Go program, I'll be honest.

00:17:58.922 --> 00:18:02.882
<v Michael>Like it's maybe got, I don't know, maybe 15 dependencies and like most of those

00:18:02.882 --> 00:18:07.942
<v Michael>are really well-known Go stuff, like nothing esoteric. And when I first did it,

00:18:08.747 --> 00:18:11.767
<v Michael>i'd iterate with chat tpt 30 35 times to

00:18:11.767 --> 00:18:15.407
<v Michael>get a build that worked yeah and it was like crappy and

00:18:15.407 --> 00:18:18.467
<v Michael>like now you know if you pull up like anti-gravity or

00:18:18.467 --> 00:18:21.967
<v Michael>claude or whatever and just be like hey yeah give me a nix expression that

00:18:21.967 --> 00:18:24.907
<v Michael>it one shots it yeah and like that is a huge difference and

00:18:24.907 --> 00:18:27.967
<v Michael>so now when it one shots it's like is this the best nix expression

00:18:27.967 --> 00:18:30.707
<v Michael>i've ever seen no that's right um you know does it

00:18:30.707 --> 00:18:34.067
<v Michael>do everything the way that i would prefer it to be done no but

00:18:34.067 --> 00:18:36.887
<v Michael>does it give me the package it does i'm like that's huge and

00:18:36.887 --> 00:18:39.867
<v Michael>so some of this is you want of look at like evals over time

00:18:39.867 --> 00:18:42.687
<v Michael>and the way that most models are are kind of scored is they

00:18:42.687 --> 00:18:45.367
<v Michael>have these things called formal evaluations and we've never built one of those

00:18:45.367 --> 00:18:48.147
<v Michael>for nicks i just had this program that i've been using for three years and like

00:18:48.147 --> 00:18:50.487
<v Michael>that's what i've been doing that's been my eval and so i'll probably end up

00:18:50.487 --> 00:18:56.347
<v Michael>talking about that i love that yeah that is really okay i'll be there um yeah

00:18:56.347 --> 00:19:00.327
<v Michael>all right so i have i have a question unrelated but i have to ask you before

00:19:00.327 --> 00:19:04.327
<v Michael>we let you go because you know i was doing my due diligence and uh i always

00:19:04.327 --> 00:19:06.707
<v Michael>like to check out a guy's GitHub before he comes on the show.

00:19:07.307 --> 00:19:12.247
<v Michael>And I noticed that you have a project called Mandatory Fun, a repository called

00:19:12.247 --> 00:19:14.367
<v Michael>Mandatory Fun. What's this about?

00:19:15.367 --> 00:19:19.227
<v Michael>So it's basically this idea that I had with a buddy of mine,

00:19:19.307 --> 00:19:24.587
<v Michael>or maybe a couple buddies of mine, that was, we love to make different collaboration software.

00:19:24.887 --> 00:19:27.487
<v Michael>And basically, you can think of it as like shitposting at scale.

00:19:27.747 --> 00:19:32.447
<v Michael>I don't know if I can say that, but I will. You can beep it out, I guess. So, but,

00:19:33.036 --> 00:19:36.396
<v Michael>Like some of it was, we wanted a pipeline where you could shoot your AI generated

00:19:36.396 --> 00:19:39.376
<v Michael>images as fast as you can and it would drop it into a channel in Slack.

00:19:39.556 --> 00:19:44.876
<v Michael>And like, it's just fun that way. Or like we had, you know, like I think a lot

00:19:44.876 --> 00:19:46.336
<v Michael>of my Hubot extensions are in there.

00:19:46.556 --> 00:19:49.836
<v Michael>We have a lot, you know, a lot of like bot related activities in there.

00:19:51.276 --> 00:19:53.616
<v Michael>And then some of the stuff I was also playing with how does a monorepo work?

00:19:53.756 --> 00:19:56.036
<v Michael>Because that is a giant monorepo with several subprojects.

00:19:56.236 --> 00:19:59.056
<v Michael>And honestly, the more that I played with it, the less I like monorepos again.

00:19:59.296 --> 00:20:00.936
<v Michael>I go back and forth every time.

00:20:01.496 --> 00:20:04.216
<v Michael>Just like the industry. Yeah, the grass is always greener where I'm not standing.

00:20:06.896 --> 00:20:10.096
<v Michael>But, I mean, generally, I also have a thing where, like, if you have,

00:20:10.116 --> 00:20:13.036
<v Michael>like, a permanent Zoom meeting and somebody joins, they can throw a webhook

00:20:13.036 --> 00:20:15.016
<v Michael>and, like, notify you through Slack so that you can say, hey,

00:20:15.036 --> 00:20:15.856
<v Michael>somebody's joined the Zoom.

00:20:15.916 --> 00:20:18.416
<v Michael>And so, like, my buddies and I have, like, a standing Zoom. And if somebody's

00:20:18.416 --> 00:20:21.216
<v Michael>there, you get a notification, and you can be like, I have time to join right

00:20:21.216 --> 00:20:22.136
<v Michael>now and say hi or whatever.

00:20:22.356 --> 00:20:27.096
<v Michael>And so it's just stuff like that where it's a bunch of how do you collaborate with your friends?

00:20:27.336 --> 00:20:30.056
<v Michael>And, I mean, not to say that it wouldn't work in a work setting,

00:20:30.096 --> 00:20:33.396
<v Michael>but it certainly wasn't designed that way. And that's why we pulled the name

00:20:33.396 --> 00:20:34.836
<v Michael>Mandatory Fun as just an idea.

00:20:35.156 --> 00:20:39.116
<v Michael>So I think just it's a great it's a great just a great title.

00:20:39.416 --> 00:20:42.036
<v Michael>Mandatory Fun. That's that's always that's always how it works.

00:20:42.156 --> 00:20:47.056
<v Michael>And a nice mix of, you know, right. These sort of collaboration, corporate workflows.

00:20:47.456 --> 00:20:50.836
<v Michael>But yeah, like real people want to do it in a more casual way to get fun stuff done.

00:20:51.536 --> 00:20:53.696
<v Michael>Yeah. Yeah. Well, and there's no rule that says you can't have fun while you're

00:20:53.696 --> 00:20:55.916
<v Michael>working. So I encourage people to do that.

00:20:56.356 --> 00:20:58.196
<v Michael>Well, I think we're going to have a lot of fun at Planet Nix.

00:20:58.336 --> 00:20:59.376
<v Michael>I'm really looking forward to it.

00:20:59.816 --> 00:21:03.616
<v Michael>Yeah, I certainly hope so. you know I think we have we have several hundred

00:21:03.616 --> 00:21:06.056
<v Michael>people registered right now and we usually get about several hundred more during

00:21:06.056 --> 00:21:10.036
<v Michael>the last week so you know it should be should be four or five hundred people which is,

00:21:11.492 --> 00:21:15.832
<v Michael>And there's so much going on this year. It's going to be just like the energy

00:21:15.832 --> 00:21:17.232
<v Michael>there, I think is going to be crazy.

00:21:17.372 --> 00:21:19.812
<v Michael>People are going to be laptops, open building stuff.

00:21:20.312 --> 00:21:25.352
<v Michael>Yeah. We, I mean, we have work areas. We have, you know, kind of workshop tables. We have talks.

00:21:25.652 --> 00:21:27.212
<v Michael>We're going to have stickers. We're going to have giveaways,

00:21:27.392 --> 00:21:29.212
<v Michael>trivias, all sorts of stuff.

00:21:29.952 --> 00:21:31.712
<v Michael>Gosh, we got to get ourselves to California.

00:21:34.272 --> 00:21:37.332
<v Michael>Mike, thank you for coming on and chatting with us. And I look forward to seeing

00:21:37.332 --> 00:21:41.032
<v Michael>you in California in just a few days. All right. Well, thank you so much. Thank you, sir.

00:21:44.312 --> 00:21:47.772
<v Chris>Well, if you would like to support this here production, you can do so directly,

00:21:47.872 --> 00:21:49.912
<v Chris>linuxunplugged.com slash membership,

00:21:50.192 --> 00:21:53.952
<v Chris>and you get access to the bootleg feed, which is nice and long.

00:21:54.492 --> 00:21:58.112
<v Chris>Or you can get the ad-free, which is tight and, you know, great,

00:21:58.212 --> 00:22:00.572
<v Chris>I guess. It's still got Drew's touches, which is really the best part.

00:22:00.732 --> 00:22:04.112
<v Wes>Yeah, you get it clean, super well-produced, well-mastered.

00:22:04.352 --> 00:22:07.992
<v Chris>You get all the shows, ad-free and bootleg, at jupyter.party if you want to

00:22:07.992 --> 00:22:10.632
<v Chris>support the whole network and help us get down to scale.

00:22:10.772 --> 00:22:15.572
<v Chris>And, of course, you can send us a boost to get us down there as well. Appreciate that.

00:22:18.923 --> 00:22:22.143
<v Chris>Well, Kelsey Hightower is back. He joined us about a year ago.

00:22:22.203 --> 00:22:25.843
<v Chris>He's a software engineer who calls himself retired, although for somebody who's

00:22:25.843 --> 00:22:30.043
<v Chris>retired, he still works quite a bit. He hits the speaker scene a lot.

00:22:30.263 --> 00:22:34.003
<v Chris>He is known renownedly for his Kubernetes work, open source advocacy,

00:22:34.563 --> 00:22:36.643
<v Chris>really an insightful speaker.

00:22:36.883 --> 00:22:40.143
<v Chris>And he's going to be joining us at Planet Nix, but we had a chance to sit down

00:22:40.143 --> 00:22:42.123
<v Chris>and talk with him before Planet Nix.

00:22:45.063 --> 00:22:49.703
<v Chris>Kelsey welcome back to the unplugged program and happy pre-planet nix to you.

00:22:49.703 --> 00:22:51.723
<v Kelsey>Oh happy to be here you guys have

00:22:51.723 --> 00:22:55.443
<v Kelsey>that whole broadcast studio i'm glad i broke out the re20 today like i.

00:22:55.443 --> 00:22:56.163
<v Chris>Was literally gonna.

00:22:56.163 --> 00:22:57.183
<v Kelsey>Go pure ipods.

00:22:57.183 --> 00:22:58.583
<v Chris>Oh my.

00:22:58.583 --> 00:23:00.443
<v Kelsey>God now now i understand why i.

00:23:00.443 --> 00:23:00.683
<v Chris>Got the.

00:23:00.683 --> 00:23:01.583
<v Kelsey>Mixed pre out for you all.

00:23:01.583 --> 00:23:04.483
<v Chris>You fit in you look good right yeah we got the same leg yeah

00:23:04.483 --> 00:23:07.423
<v Chris>we appreciate it so the last time we talked it was

00:23:07.423 --> 00:23:10.523
<v Chris>just before planet nix and of course we saw you at planet nix last year um

00:23:10.523 --> 00:23:13.763
<v Chris>but it feels like since then there has

00:23:13.763 --> 00:23:17.083
<v Chris>been a just next level

00:23:17.083 --> 00:23:19.943
<v Chris>of i'm trying not to use the word hype kelsey but

00:23:19.943 --> 00:23:22.923
<v Chris>it's all i can think of hype around ai system

00:23:22.923 --> 00:23:28.063
<v Chris>management agentic development and management of systems and it strikes me you

00:23:28.063 --> 00:23:31.543
<v Chris>made a really i think keen observation in an interview you had with jet brains

00:23:31.543 --> 00:23:36.543
<v Chris>back in december and you said that you spent your whole career trying to make

00:23:36.543 --> 00:23:40.003
<v Chris>these systems as determinate as possible, right?

00:23:40.083 --> 00:23:43.023
<v Chris>To know exactly what they're going to produce every single time.

00:23:43.723 --> 00:23:49.463
<v Chris>And this is, in this last year or two, it's kind of flipping that on its head a little bit.

00:23:49.543 --> 00:23:52.523
<v Chris>And I wanted to know if you could expand on that comment you made in that JetBrains

00:23:52.523 --> 00:23:53.843
<v Chris>interview, because I thought that was pretty insightful.

00:23:54.423 --> 00:23:57.403
<v Kelsey>Yeah, I think for a lot of people who have been doing either software development,

00:23:57.623 --> 00:24:04.423
<v Kelsey>IT operations, even the lights in your home, When you push the button to turn

00:24:04.423 --> 00:24:06.383
<v Kelsey>the lights off, you want the lights to turn off.

00:24:06.923 --> 00:24:09.903
<v Kelsey>You don't want to push the button and the lights like, I'm thinking about turning

00:24:09.903 --> 00:24:13.223
<v Kelsey>off your lights, but given that you haven't eaten dinner yet,

00:24:13.443 --> 00:24:14.823
<v Kelsey>I'm going to keep the lights on.

00:24:15.625 --> 00:24:20.325
<v Kelsey>Like, that's not what you're expecting. We expect these systems to be deterministic.

00:24:20.445 --> 00:24:22.225
<v Kelsey>So these are machines first and foremost.

00:24:22.705 --> 00:24:27.065
<v Kelsey>And when we build machines, we kind of want them to do exactly what they're

00:24:27.065 --> 00:24:29.745
<v Kelsey>designed to do. Light switch on, light switch off.

00:24:29.985 --> 00:24:33.625
<v Kelsey>And so when you turn that into the software world, anytime we get behavior that

00:24:33.625 --> 00:24:38.845
<v Kelsey>we ourselves didn't intentionally design, we call those bugs or defects or security

00:24:38.845 --> 00:24:40.565
<v Kelsey>vulnerabilities if they're ever exploited.

00:24:41.005 --> 00:24:44.465
<v Kelsey>And so we've been spending the last, I don't know, couple of decades trying

00:24:44.465 --> 00:24:48.405
<v Kelsey>to build reproducible software, deterministic software, right?

00:24:48.445 --> 00:24:49.785
<v Kelsey>We want these things to be predictable.

00:24:50.085 --> 00:24:54.885
<v Kelsey>So then we can make promises. Like we have SLA as a whole discipline around

00:24:54.885 --> 00:24:58.485
<v Kelsey>observability is saying that if this thing doesn't do what it's supposed to

00:24:58.485 --> 00:25:00.665
<v Kelsey>do, then we have a problem.

00:25:01.005 --> 00:25:05.425
<v Kelsey>And so what you get with an LLM, so let's say you take away some of the deterministic

00:25:05.425 --> 00:25:11.885
<v Kelsey>work. So to me, the value of an LLM is just somewhat of a human persona that

00:25:11.885 --> 00:25:13.285
<v Kelsey>we can lay on top of these systems.

00:25:13.505 --> 00:25:15.945
<v Kelsey>So instead of just telling people what the temperature is today,

00:25:16.205 --> 00:25:20.865
<v Kelsey>maybe this thing can say it in a very polite way or maybe in a kind way.

00:25:21.005 --> 00:25:23.305
<v Kelsey>It's like, oh, that was a fun interaction.

00:25:23.805 --> 00:25:28.205
<v Kelsey>But it also does another thing that I remember for the first time when I wrote a regular expression.

00:25:29.056 --> 00:25:33.536
<v Kelsey>I want to write a regular expression to filter out all the email addresses.

00:25:33.956 --> 00:25:38.776
<v Kelsey>And so you craft this like you think is the best regular expression in the world.

00:25:39.176 --> 00:25:43.636
<v Kelsey>And then you find out that it's not actually capturing all the email addresses.

00:25:44.056 --> 00:25:47.436
<v Kelsey>Because either A, you didn't understand what's a valid email address,

00:25:47.536 --> 00:25:49.436
<v Kelsey>or it's a really hard problem to solve.

00:25:49.936 --> 00:25:54.336
<v Kelsey>And so now, what was the saying back then? If you use regular expressions to

00:25:54.336 --> 00:25:56.056
<v Kelsey>solve a problem, now you have two problems.

00:25:56.056 --> 00:25:56.596
<v Wes>Exactly.

00:25:57.296 --> 00:26:00.236
<v Kelsey>And so I think the regular expression was the first time I think a lot of us

00:26:00.236 --> 00:26:02.736
<v Kelsey>have ran into something that just looking at the regular expression,

00:26:02.976 --> 00:26:05.456
<v Kelsey>you can't really tell what it's going to do.

00:26:05.696 --> 00:26:09.356
<v Kelsey>But there's a lot of power in this kind of Swiss army knife approach.

00:26:09.536 --> 00:26:14.176
<v Kelsey>And LLM can say, look, maybe you didn't write your software to create XML output

00:26:14.176 --> 00:26:17.036
<v Kelsey>and JSON output and YAML output.

00:26:17.456 --> 00:26:21.936
<v Kelsey>If you just code the data structure, you now have this universal tool that can

00:26:21.936 --> 00:26:23.696
<v Kelsey>convert between these different formats,

00:26:23.956 --> 00:26:29.896
<v Kelsey>making a JPEG or an MPEG or a PDF out of an invoice, that is an amazing capability

00:26:29.896 --> 00:26:35.516
<v Kelsey>that is in some ways subjective on how to format a PDF from an HTML doc.

00:26:35.816 --> 00:26:40.236
<v Kelsey>And so the LLM allows you to do all of that. So I understand why people are super excited.

00:26:40.656 --> 00:26:44.256
<v Kelsey>But at the same time, though, then we see ourselves now with the flexibility,

00:26:44.556 --> 00:26:50.476
<v Kelsey>building a bunch of guardrails to make sure that it doesn't generate something

00:26:50.476 --> 00:26:52.276
<v Kelsey>that's out of bounds from our expectations.

00:26:52.276 --> 00:26:56.476
<v Kelsey>So that's kind of what I meant by we spent our whole careers making these deterministic,

00:26:56.616 --> 00:27:00.196
<v Kelsey>predictable systems, and now we're letting them a little bit more loose.

00:27:00.336 --> 00:27:02.836
<v Kelsey>And then we're all like crossing our fingers that they don't turn off the Internet.

00:27:03.396 --> 00:27:06.776
<v Chris>It does surprise me. And we're kind of rushing into it, too, in a way.

00:27:06.996 --> 00:27:10.496
<v Wes>You touched on some of the like how it can manipulate outputs or transform data

00:27:10.496 --> 00:27:13.876
<v Wes>or maybe, you know, shuffle things on a pipeline or between deterministic tools.

00:27:14.056 --> 00:27:18.996
<v Wes>And I've also heard you touch on maybe thinking of AI as a like a surface level

00:27:18.996 --> 00:27:20.956
<v Wes>interface. I wonder if you could maybe expand on that.

00:27:20.956 --> 00:27:24.436
<v Kelsey>So this part I think is very important. If you just take a timeout,

00:27:24.616 --> 00:27:27.976
<v Kelsey>you don't want to bash the technology. We don't even have to take a position

00:27:27.976 --> 00:27:29.116
<v Kelsey>on whether it's helpful or not.

00:27:30.000 --> 00:27:34.080
<v Kelsey>But the reality is the CPU architecture is the same.

00:27:34.680 --> 00:27:39.060
<v Kelsey>The programming languages are the same. So that means the things that you could

00:27:39.060 --> 00:27:42.640
<v Kelsey>do, you could have always done given these particular tools.

00:27:42.860 --> 00:27:47.380
<v Kelsey>And for me, that takes the magic out of all of this. So then if you use an LLM

00:27:47.380 --> 00:27:49.720
<v Kelsey>to write code, what is the LLM doing?

00:27:50.000 --> 00:27:54.280
<v Kelsey>Well, the LLM is producing syntax in the way that you would have produced syntax.

00:27:54.540 --> 00:27:59.360
<v Kelsey>So that means it sits at the surface, Meaning what it outputs is still targeting

00:27:59.360 --> 00:28:02.980
<v Kelsey>the same output you would have done, which is also at the surface.

00:28:03.380 --> 00:28:06.980
<v Kelsey>Now, what would a below-the-surface technology look like?

00:28:07.180 --> 00:28:10.460
<v Kelsey>It would look like, let's just bypass Golang and the JVM.

00:28:10.520 --> 00:28:16.000
<v Kelsey>Let's go straight to assembly, right? Let's just go and program the logic gates directly.

00:28:16.500 --> 00:28:19.800
<v Kelsey>And that's not really what most people are doing. Most people are literally

00:28:19.800 --> 00:28:24.160
<v Kelsey>just providing themselves with a better user experience. And I'll give you another

00:28:24.160 --> 00:28:26.800
<v Kelsey>example, which is, I think, more applicable to the average person.

00:28:27.620 --> 00:28:33.980
<v Kelsey>If you ask an LLM to give me a summary of this particular document or in my

00:28:33.980 --> 00:28:37.980
<v Kelsey>database, the customer that spent the most money in June of last year.

00:28:38.480 --> 00:28:42.580
<v Kelsey>Now, you could have done that with SQL, but SQL is very cumbersome.

00:28:42.660 --> 00:28:44.580
<v Kelsey>It's very strict. You have to know the dialect.

00:28:44.840 --> 00:28:48.320
<v Kelsey>And sometimes the SQL is very far away from your intent.

00:28:48.320 --> 00:28:53.980
<v Kelsey>And so the ability just to make that one statement and then have the LLM at

00:28:53.980 --> 00:28:59.680
<v Kelsey>the surface translate that into the correct SQL query and then return a response,

00:28:59.960 --> 00:29:04.380
<v Kelsey>that is the perfect level of abstraction for what most people want to do,

00:29:04.500 --> 00:29:09.400
<v Kelsey>which makes it highly effective on being able to interface to lots of existing systems.

00:29:09.400 --> 00:29:14.520
<v Kelsey>And I think this is why LLMs in some ways are deserving of some of the hype

00:29:14.520 --> 00:29:19.200
<v Kelsey>and the attention that they're getting because they can be very useful in many domains.

00:29:20.693 --> 00:29:26.173
<v Chris>So I wonder with this established and your thoughts on going from very deterministic

00:29:26.173 --> 00:29:30.993
<v Chris>systems to sort of not so deterministic, you don't really always know what you're going to get.

00:29:31.453 --> 00:29:36.173
<v Chris>Is there a layer here at the environment level to kind of manage this?

00:29:36.273 --> 00:29:39.373
<v Chris>Is this an area where you think maybe particularly NICS could have some strengths?

00:29:39.773 --> 00:29:43.733
<v Chris>Curious on your thoughts on almost solving it from a different direction in this instance.

00:29:44.473 --> 00:29:47.613
<v Kelsey>So we were to talk about NICS in particular. So what does NICS represent?

00:29:48.193 --> 00:29:53.633
<v Kelsey>Below the surface, Nix has tried to work really hard to give you at least a reproducible outcome.

00:29:54.413 --> 00:29:58.253
<v Kelsey>If your app that you're building requires a specific set of libraries,

00:29:59.193 --> 00:30:04.193
<v Kelsey>we've tried for a long time to get away with semantic versioning, like this is 1.1.2.

00:30:05.113 --> 00:30:08.793
<v Kelsey>But it turns out those are just suggestions, right? Nothing stops a developer

00:30:08.793 --> 00:30:12.993
<v Kelsey>from re-releasing 1.1.2 that does something totally different.

00:30:13.073 --> 00:30:15.133
<v Wes>Your version of a miner is not mine.

00:30:15.273 --> 00:30:21.133
<v Kelsey>Right? Exactly. So in that world, it's almost like, ah, you can't really trust these labels.

00:30:21.293 --> 00:30:26.033
<v Kelsey>So I think what Nix does really good is it says, look, let's just turn our file

00:30:26.033 --> 00:30:29.273
<v Kelsey>system into a data store and, you know, make these things predictable.

00:30:29.473 --> 00:30:32.433
<v Kelsey>Sometimes you need a different version of Ruby on the same system.

00:30:32.873 --> 00:30:35.993
<v Kelsey>And the fact that it acknowledges that and leans into that and just gives us

00:30:35.993 --> 00:30:38.253
<v Kelsey>a tool to deal with that kind of complexity.

00:30:38.713 --> 00:30:43.153
<v Kelsey>So we take that diamond problem and we just try to give it an honest solution.

00:30:43.693 --> 00:30:47.093
<v Kelsey>These are the things you depend on. Here's the things that make it work.

00:30:47.233 --> 00:30:50.293
<v Kelsey>And just give you a way to articulate that, express that, discover that.

00:30:50.613 --> 00:30:54.793
<v Kelsey>And so if you think about it from the AI perspective, then what you have is guardrails.

00:30:55.533 --> 00:30:58.733
<v Kelsey>So if you want to express a build, if you want to express output,

00:30:59.293 --> 00:31:02.573
<v Kelsey>what you have now is at least a framework where you're not starting from scratch

00:31:02.573 --> 00:31:06.453
<v Kelsey>and say, hey, at the surface, I would like you to build my application.

00:31:06.833 --> 00:31:11.093
<v Kelsey>Well, if you were to target maybe the next ecosystem, you get something super

00:31:11.093 --> 00:31:14.453
<v Kelsey>reproducible. And I always like to think about the quality of these tools as

00:31:14.453 --> 00:31:17.573
<v Kelsey>if I were to remove the LLM, what am I left with?

00:31:18.645 --> 00:31:21.765
<v Kelsey>And I think you're left with something that's still usable, even if you chose

00:31:21.765 --> 00:31:25.545
<v Kelsey>not to use an LLM again, maybe downstream, your build system,

00:31:25.865 --> 00:31:28.245
<v Kelsey>your deployment systems, generating S-bombs.

00:31:28.405 --> 00:31:32.145
<v Kelsey>Those things can be done without the magic of AI and all of its complexities,

00:31:32.145 --> 00:31:35.685
<v Kelsey>because you've kind of targeted something that's going to be a little bit more

00:31:35.685 --> 00:31:37.285
<v Kelsey>strict and domain driven.

00:31:37.425 --> 00:31:40.865
<v Kelsey>So that's where I see tools like Nextill having a ton of value.

00:31:41.025 --> 00:31:44.445
<v Kelsey>And this is why I think the explosion of things like skills and MCP,

00:31:44.625 --> 00:31:48.185
<v Kelsey>where you can just say, hey, let's not invent package management or build systems.

00:31:48.705 --> 00:31:51.565
<v Kelsey>Let's just teach these tools how to leverage them.

00:31:51.825 --> 00:31:54.465
<v Wes>Something else I saw you talking about recently with our other guest today,

00:31:54.645 --> 00:31:59.465
<v Wes>Michael Stonke from Phlox, is you're looking back at the original Borg paper

00:31:59.465 --> 00:32:03.305
<v Wes>and kind of pointing out that, you know, they weren't really using Docker for

00:32:03.305 --> 00:32:05.425
<v Wes>Borg, even though Kubernetes these days does, right?

00:32:05.465 --> 00:32:09.745
<v Wes>They were using a package manager that turns out kind of shared a lot of properties with Nix.

00:32:09.785 --> 00:32:11.945
<v Wes>And you've been also making the point, which I really like that,

00:32:12.605 --> 00:32:16.425
<v Wes>you know, okay, I can do this stuff at the surface, but if we haven't necessarily

00:32:16.425 --> 00:32:20.125
<v Wes>mastered 20-year-old tech, from Nix to just a lot of other things,

00:32:20.345 --> 00:32:22.365
<v Wes>like maybe we need to be looking at that too.

00:32:23.665 --> 00:32:27.125
<v Kelsey>You make it a really important point. I mean, I have this thing now where I

00:32:27.125 --> 00:32:30.245
<v Kelsey>just try to take all my technology offline from like eight to eight.

00:32:31.505 --> 00:32:35.925
<v Kelsey>12 hours of uncomputer-assisted thinking.

00:32:37.065 --> 00:32:40.965
<v Kelsey>And so those are the shower thoughts, the prep time before you go to bed,

00:32:41.185 --> 00:32:42.045
<v Kelsey>you know, while you're cleaning.

00:32:42.565 --> 00:32:46.745
<v Kelsey>And I thought about it. It's like, you know, most companies have struggled with

00:32:46.745 --> 00:32:48.305
<v Kelsey>even deciding what to build.

00:32:50.001 --> 00:32:54.121
<v Kelsey>And a lot of times when you ship something, you can't just go take it back.

00:32:55.041 --> 00:32:58.821
<v Kelsey>And the part where you say, hey, now AI lets us move 10 times faster.

00:32:59.681 --> 00:33:05.861
<v Kelsey>Sometimes I hear 10 times more tech debt, 10 times more bugs,

00:33:06.721 --> 00:33:09.841
<v Kelsey>10 times more things you shouldn't have shipped in the first place.

00:33:10.861 --> 00:33:14.941
<v Kelsey>And so when I think about our ability to understand what's available in our

00:33:14.941 --> 00:33:17.281
<v Kelsey>tool, I'm looking at, I'm staring at a collection of tools.

00:33:18.501 --> 00:33:22.281
<v Kelsey>And a lot of times, I think people never really understood the core decision

00:33:22.281 --> 00:33:23.381
<v Kelsey>that happened with Docker.

00:33:23.841 --> 00:33:25.881
<v Kelsey>Docker comes after decades of

00:33:25.881 --> 00:33:32.401
<v Kelsey>decisions around trying to reinvent package managers, RPM, Debian files.

00:33:32.601 --> 00:33:35.681
<v Kelsey>It's just so many of them, Jim, and they're all kind of solving the same problem.

00:33:36.141 --> 00:33:40.121
<v Kelsey>There is nothing you can do with one programming language on its own.

00:33:40.301 --> 00:33:44.441
<v Kelsey>At some point, you're going to have a form function interface to some C library,

00:33:45.041 --> 00:33:47.421
<v Kelsey>SQLite, LibC. It's just something's going to happen.

00:33:47.701 --> 00:33:52.121
<v Kelsey>And we all try to pretend that that wasn't real or that Debian and RPM could get us there.

00:33:52.321 --> 00:33:56.761
<v Kelsey>And so we just kept rebuilding these package managers trying to solve problems we've created.

00:33:57.281 --> 00:33:59.241
<v Kelsey>Docker is born from that world.

00:34:00.295 --> 00:34:04.055
<v Kelsey>Docker just says, well, if that's what it's going to be, let us just let you

00:34:04.055 --> 00:34:06.815
<v Kelsey>keep doing that. And look, it was fun.

00:34:07.075 --> 00:34:11.615
<v Kelsey>It did speed things up. But in many ways, it sped up the mistakes.

00:34:12.015 --> 00:34:15.815
<v Kelsey>There are now far more things to scan than before.

00:34:16.075 --> 00:34:20.455
<v Kelsey>So before we were scanning servers and VMs. Now we're scanning apps.

00:34:20.655 --> 00:34:22.695
<v Kelsey>We're literally scanning apps for OS vulnerabilities.

00:34:23.315 --> 00:34:27.095
<v Kelsey>We're scanning apps for all of these things that now are getting packaged because

00:34:27.095 --> 00:34:29.475
<v Kelsey>we're still doing the same mentality as before.

00:34:30.315 --> 00:34:33.795
<v Kelsey>I think if you rewind the clock back 20 years and say, hey, what's the real

00:34:33.795 --> 00:34:37.595
<v Kelsey>problem? The real problem is we don't really even know what our dependencies are.

00:34:38.515 --> 00:34:41.595
<v Kelsey>The real problem, we don't even know what we're linking out to these days.

00:34:42.395 --> 00:34:46.095
<v Kelsey>And the vendoring approach, it just kind of created a mess. So that original

00:34:46.095 --> 00:34:47.975
<v Kelsey>Borg paper was like, you know what?

00:34:48.215 --> 00:34:50.935
<v Kelsey>The best way to think about software is in a holistic way.

00:34:51.375 --> 00:34:55.115
<v Kelsey>You can't think about the Ruby ecosystem independently of the C ecosystem.

00:34:55.555 --> 00:34:59.295
<v Kelsey>And so what you do is you just say at some point, this is just how computers work.

00:34:59.475 --> 00:35:03.675
<v Kelsey>Apps will start, and then they will reach out across the file system loading

00:35:03.675 --> 00:35:05.555
<v Kelsey>things that they need in order to run.

00:35:06.315 --> 00:35:12.115
<v Kelsey>So that NPM package is much closer to the NICS philosophy around intentionality

00:35:12.115 --> 00:35:16.235
<v Kelsey>around what's on your machines, intentionality around what we link to,

00:35:16.355 --> 00:35:18.795
<v Kelsey>and then you manage the system from that regard.

00:35:18.955 --> 00:35:22.555
<v Kelsey>And then I think it's a little easier to think about secure software supply

00:35:22.555 --> 00:35:28.355
<v Kelsey>chains, but you need to know what the software supply is before you can secure it.

00:35:28.875 --> 00:35:30.395
<v Kelsey>And so I think it's just thinking of what we're dealing with.

00:35:30.495 --> 00:35:34.375
<v Kelsey>And again, and I said this at the Nix event, there's nothing stopping someone

00:35:34.375 --> 00:35:38.695
<v Kelsey>from saying, hey, Docker is a really awesome way to package and distribute things.

00:35:39.275 --> 00:35:43.475
<v Kelsey>What if I was using Nix inside of a Docker image? So I still get the portability.

00:35:43.735 --> 00:35:48.395
<v Kelsey>I still get access to things like Heroku and, you know, Lambda and all of these

00:35:48.395 --> 00:35:49.815
<v Kelsey>container only platforms.

00:35:50.195 --> 00:35:53.415
<v Kelsey>But that container image, when combined with intentionality,

00:35:53.655 --> 00:35:57.495
<v Kelsey>I do think gets us there much faster than starting over from scratch.

00:35:58.927 --> 00:36:02.767
<v Chris>Well said. Kelsey, I'm really looking forward to Planet Nix and your talk.

00:36:03.627 --> 00:36:07.227
<v Chris>First up, first up, you and Ron, and we're going to be there.

00:36:07.227 --> 00:36:07.667
<v Wes>I think you mean chat.

00:36:07.967 --> 00:36:11.527
<v Chris>Chat, right. It's going to be a chat. Thank you so much for taking a little

00:36:11.527 --> 00:36:15.087
<v Chris>bit of time and joining us on a Sunday to talk about this and get us in the

00:36:15.087 --> 00:36:18.987
<v Chris>mood and the mindset for Planet Nix. I hope we get a chance to talk at the event, too.

00:36:19.547 --> 00:36:20.767
<v Kelsey>I'll be around. Thanks for having me.

00:36:20.927 --> 00:36:21.527
<v Chris>Yeah, thanks, Kelsey.

00:36:26.667 --> 00:36:32.647
<v Brent>And now it is time for le boost we have a row of grandpa ducks 22 000.

00:36:34.350 --> 00:36:35.290
<v Chris>You said it. I had to do it.

00:36:37.850 --> 00:36:41.370
<v Brent>Starting us off, we've got a row of, what are these, Grandpa Ducks?

00:36:41.530 --> 00:36:47.250
<v Brent>22,222 Satoshis from Chuck Runamuck.

00:36:49.570 --> 00:36:52.710
<v Brent>Chuck says, how are you now? Good?

00:36:52.870 --> 00:36:54.950
<v Chris>Hey, how are you? Fine, and you?

00:36:56.270 --> 00:37:02.010
<v Brent>I was building a new VM server the other day. What's your go-to remote desktop app?

00:37:02.370 --> 00:37:06.330
<v Brent>It used to be VNC for me. I use it all through my corporate career.

00:37:06.490 --> 00:37:09.410
<v Brent>Then X2Go was the new hotness for a while.

00:37:09.690 --> 00:37:16.270
<v Brent>That got janky, though, so I switched to No Machine, which I think is the proprietary mother of X2Go.

00:37:16.570 --> 00:37:19.030
<v Brent>What do you use now to connect to your headless desktops?

00:37:19.310 --> 00:37:26.290
<v Chris>You mean besides my psychic intuition? I got to give a shout-out for my old buddy KRDC.

00:37:26.790 --> 00:37:28.310
<v Chris>Are you guys familiar with this one, KRDC?

00:37:28.550 --> 00:37:30.110
<v Wes>Yeah, I haven't used it in a minute.

00:37:31.030 --> 00:37:34.530
<v Chris>It's nice. You can get them all on there in a list. It'll still do RDP. It'll do VNC.

00:37:35.470 --> 00:37:39.770
<v Chris>It'll do what you need. A lot of days, people are using themselves some kind

00:37:39.770 --> 00:37:41.710
<v Chris>of VM that has a web interface as well.

00:37:41.790 --> 00:37:44.810
<v Chris>So you've got yourself like a cockpit option if you're going with your natives

00:37:44.810 --> 00:37:49.070
<v Chris>or, you know, the Proxmox type thing where you get yourself a console interface.

00:37:50.210 --> 00:37:54.030
<v Chris>That's pretty popular. Right? Is that good? You think that's good? You got any? You have it?

00:37:54.430 --> 00:38:00.110
<v Brent>In a different flavor, you know, we've used Rust Desk quite a lot to do remote

00:38:00.110 --> 00:38:03.330
<v Brent>access. It's not quite, you know, for a virtual machine necessarily,

00:38:03.330 --> 00:38:07.330
<v Brent>but that can work in a pinch if you need to do that kind of thing.

00:38:07.810 --> 00:38:10.790
<v Chris>Yeah, I still like Rustisk. And they've updated for Wayland quite a while ago

00:38:10.790 --> 00:38:12.050
<v Chris>now, so that's been working, which is really good.

00:38:12.130 --> 00:38:15.010
<v Wes>And we've seen a lot of Wayland improvement generally, I think,

00:38:15.050 --> 00:38:19.470
<v Wes>in terms of remote desktop, both like in GNOME and Plasma, but more broadly, too.

00:38:20.410 --> 00:38:25.370
<v Chris>Well, thank you, Mr. Runamuck. We appreciate you. Distro Stu's here with Spaceballs

00:38:25.370 --> 00:38:27.650
<v Chris>Boost. That's 1, 2, 3, 4, 5 sats.

00:38:32.506 --> 00:38:36.946
<v Chris>Chris, you mentioned Uptime Kuma in your network setup. I've been using Gatis,

00:38:37.046 --> 00:38:42.086
<v Chris>which is similar, but has a declarative config for endpoint monitors.

00:38:42.586 --> 00:38:45.426
<v Chris>Here you go. Here's my Nix setup. It links me to that. Side note,

00:38:45.686 --> 00:38:48.366
<v Chris>I set the service up to debug some networking issues.

00:38:48.786 --> 00:38:54.406
<v Chris>Turned out my switch by switching my router to OpenSense to Nix was the solution. Hey, we've been there.

00:38:54.586 --> 00:38:55.106
<v Brent>Very nice.

00:38:55.566 --> 00:39:00.246
<v Chris>You know what? Honestly, Linux makes a great router. Why do you think all these

00:39:00.246 --> 00:39:01.526
<v Chris>embedded systems are based on Linux?

00:39:01.526 --> 00:39:04.766
<v Wes>Especially, right, you're not trying to push, like, tens of gigabits per second

00:39:04.766 --> 00:39:07.026
<v Wes>where you need some, like, hardware offload or something in,

00:39:07.026 --> 00:39:08.306
<v Wes>like, an enterprise use case.

00:39:08.446 --> 00:39:11.806
<v Wes>Like, you just have a gigabit or something. Like, modern Linux will be fine.

00:39:12.966 --> 00:39:15.306
<v Chris>More than fine. It'll be fantastic.

00:39:16.206 --> 00:39:18.466
<v Wes>And so Nick's boosts in with 5,000 cents.

00:39:20.561 --> 00:39:24.901
<v Wes>I'm glad to hear you're doubling down on Matrix. You had me going for a moment there, Chris.

00:39:25.181 --> 00:39:29.461
<v Wes>I thought you were going to announce a switch to Discord. You might have thought that too.

00:39:29.641 --> 00:39:30.041
<v Chris>Yeah, I did.

00:39:30.401 --> 00:39:33.661
<v Wes>It does make me wonder though, why don't you just use Mattermost?

00:39:33.761 --> 00:39:37.841
<v Wes>After the glowing review in the previous episode, is it not a better, more stable fit?

00:39:38.221 --> 00:39:42.161
<v Wes>You could even use your AI minions to set up a separate instance for the community.

00:39:43.361 --> 00:39:47.641
<v Chris>Mattermost has sort of a Slack vibe. It doesn't really seem to be the right

00:39:47.641 --> 00:39:50.081
<v Chris>tool for the job. Do you have that impression as well? It's a good tool.

00:39:50.081 --> 00:39:54.341
<v Wes>Yeah, I think maybe for some communities, you know, I've seen some folks kind of do that where...

00:39:54.341 --> 00:39:55.541
<v Chris>Well, you use Slack for some communities.

00:39:55.561 --> 00:39:58.881
<v Wes>Right, yes, exactly. But I think for the style we're going for,

00:39:59.061 --> 00:40:01.981
<v Wes>especially with the amount of, like, self-hosting, interop, like,

00:40:02.061 --> 00:40:04.421
<v Wes>something like Matrix and the Federation and the ability for other,

00:40:04.421 --> 00:40:06.801
<v Wes>you know, people to run their own servers or use ours or, like,

00:40:06.961 --> 00:40:10.501
<v Wes>another community one and be able to all connect together is pretty killer.

00:40:11.381 --> 00:40:15.141
<v Wes>You know, there are maybe other options. XMPP, we used IRC for a long time,

00:40:15.221 --> 00:40:18.001
<v Wes>but those had at least closer to some of that.

00:40:18.661 --> 00:40:22.701
<v Chris>You know, I'm surprised XMPP hasn't come up more recently with the discussions

00:40:22.701 --> 00:40:24.961
<v Chris>of agents and agent-to-agent communication.

00:40:25.041 --> 00:40:28.061
<v Chris>Seems like XMPP should be getting a little bit more love than it is.

00:40:28.781 --> 00:40:32.261
<v Chris>Yeah, I think, don't you think, Brent, the federating aspect is pretty big for us?

00:40:32.621 --> 00:40:35.861
<v Brent>I think it's big and it's also quite fun. Like, as an audience member,

00:40:36.001 --> 00:40:39.621
<v Brent>to have your servers federated to other audience members and the studio,

00:40:39.761 --> 00:40:43.001
<v Brent>it's just a really fun networking paradigm.

00:40:43.381 --> 00:40:50.141
<v Brent>I'm going to say paradigm. mm-hmm well kiwi bitcoin guide boosted in 2500 satoshis,

00:40:52.368 --> 00:40:58.008
<v Brent>I got an OpenClaw question. What are the pros and cons of self-hosting OpenClaw

00:40:58.008 --> 00:40:59.448
<v Brent>on a server in a homeland?

00:40:59.848 --> 00:41:04.148
<v Brent>After looking at my options, I thought I'd try hosting the agent on a Pi at home.

00:41:04.308 --> 00:41:09.348
<v Brent>But a friend pointed out malware and security vulnerabilities and suggested a VPS instead.

00:41:09.868 --> 00:41:14.688
<v Brent>What would you suggest? And can you recommend a good VPS service suitable for this particular task?

00:41:14.888 --> 00:41:17.408
<v Chris>We've sort of been debating this very question behind the scenes.

00:41:18.028 --> 00:41:23.168
<v Wes>It depends a lot on what you task it to do and what you allow it to do and are

00:41:23.168 --> 00:41:26.008
<v Wes>hoping that it does and what it can reach out to.

00:41:26.668 --> 00:41:30.508
<v Wes>Like on the VBS side, a lot could be suitable because it depends on your workload.

00:41:30.948 --> 00:41:34.048
<v Wes>You know, especially if you're using a LLM provider that's not you,

00:41:34.368 --> 00:41:35.828
<v Wes>that stuff's all offloaded.

00:41:36.168 --> 00:41:40.688
<v Wes>So besides just like the OpenClock gateway, which is a node service running

00:41:40.688 --> 00:41:44.288
<v Wes>a server, it's only ever doing what other commands it needs to do from the work

00:41:44.288 --> 00:41:49.468
<v Wes>you're putting into it. on the LAN side, it might depend on like what access do you want it to have.

00:41:49.608 --> 00:41:52.808
<v Wes>It can be really useful if maybe you want it to be able to run scripts to make

00:41:52.808 --> 00:41:56.028
<v Wes>reports or control your audio bookshelf or your jellyfin or something,

00:41:56.028 --> 00:41:58.808
<v Wes>or maybe you want to do some network segmentation.

00:41:58.948 --> 00:42:02.708
<v Wes>So all it can do is reach the outside network, except for some blessed paths

00:42:02.708 --> 00:42:05.608
<v Wes>that you allow with tightly controlled API keys.

00:42:05.768 --> 00:42:08.388
<v Wes>So there's a lot of different ways you could, but you need to kind of understand

00:42:08.388 --> 00:42:11.208
<v Wes>what you want it to do and what you're willing to accept the risk for.

00:42:11.368 --> 00:42:15.088
<v Chris>I think there's a couple of easy yes, no branches on this path.

00:42:15.508 --> 00:42:17.888
<v Chris>If you have a machine that can run a local model,

00:42:18.736 --> 00:42:22.816
<v Chris>Run it locally because then you don't have a cloud dependency when it comes to the LLM reasoning.

00:42:23.496 --> 00:42:27.716
<v Chris>I think also there is an argument to be made to run it local if your intention

00:42:27.716 --> 00:42:32.176
<v Chris>is to have it interact with Jellyfin and Home Assistant and your RAR stack and things like that.

00:42:32.396 --> 00:42:36.196
<v Chris>If a lot of its work is going to be executing local APIs, it will have to still

00:42:36.196 --> 00:42:38.216
<v Chris>do reasoning and instructions with the LLM.

00:42:38.336 --> 00:42:41.656
<v Chris>But then a lot of that execution can actually take place via scripts that it

00:42:41.656 --> 00:42:43.456
<v Chris>creates and those run persistently local.

00:42:44.016 --> 00:42:48.696
<v Chris>And a lot of us actually have systems that are capable of running models that

00:42:48.696 --> 00:42:51.136
<v Chris>can at least be used for memory systems and things like that.

00:42:51.276 --> 00:42:53.516
<v Chris>So it's something that I think we're both debating.

00:42:53.776 --> 00:42:57.536
<v Chris>It really, like Wes said, comes down to a big depends. But there are a couple

00:42:57.536 --> 00:43:01.476
<v Chris>of yes-no paths. And the number one yes path is if you can run a local model.

00:43:01.856 --> 00:43:05.656
<v Chris>If you don't intend to integrate with local self-hosted services on your LAN

00:43:05.656 --> 00:43:08.236
<v Chris>a lot, I think that's another vote for going with a VPS.

00:43:08.536 --> 00:43:12.036
<v Wes>Yeah, and it might depend, like, is it mostly pulling strings on APIs?

00:43:12.036 --> 00:43:15.636
<v Wes>Is it doing research and making reports for you? There's a lot of different

00:43:15.636 --> 00:43:17.076
<v Wes>modalities you can use with this stuff.

00:43:17.636 --> 00:43:18.596
<v Chris>Yeah, good question.

00:43:18.836 --> 00:43:19.756
<v Wes>Let us know what you do.

00:43:19.936 --> 00:43:23.316
<v Brent>I'm going to go the complete other way as a suggestion and suggest that you

00:43:23.316 --> 00:43:25.656
<v Brent>install this on an ESP32.

00:43:25.996 --> 00:43:32.136
<v Brent>I saw two projects that's, one of them's called Mimi Claw and used an ESP32 to get this running.

00:43:32.496 --> 00:43:36.956
<v Brent>And there's another project out there, OpenClaw ESP32. So if you want to go

00:43:36.956 --> 00:43:39.076
<v Brent>the Jeff route, we will send this your way.

00:43:39.296 --> 00:43:40.056
<v Chris>Wow, that's crazy.

00:43:40.556 --> 00:43:42.756
<v Wes>Yeah, that way it's not powerful enough to really harm anything.

00:43:43.696 --> 00:43:46.136
<v Chris>That's something else, isn't it? Or at least you can catch up to it,

00:43:46.176 --> 00:43:50.596
<v Chris>right? All right, I'll take the next cue. McEwitt comes in with 2,048 sats.

00:43:51.828 --> 00:43:55.148
<v Chris>Just says, keep up the good work. Thank you very much. Appreciate that value.

00:43:55.488 --> 00:43:59.868
<v Chris>And Sam H comes in with a row of duckariskies. That's 2,222 sats.

00:44:00.988 --> 00:44:03.568
<v Chris>I'm definitely interested in hearing you talk about the clause.

00:44:03.808 --> 00:44:05.748
<v Chris>I'm very conscious of the security concerns.

00:44:05.948 --> 00:44:09.868
<v Chris>But I thought your basics in LUP 654, isolated setup, dedicated accounts,

00:44:09.988 --> 00:44:11.908
<v Chris>etc., were a helpful starting point.

00:44:12.088 --> 00:44:17.448
<v Chris>It'd be nice to see open-claw variants that defaulted to local models and an open chat platform.

00:44:18.368 --> 00:44:18.508
<v Wes>True.

00:44:18.508 --> 00:44:22.508
<v Chris>Yeah, a lot of these are based around Discord or Telegram or Slack.

00:44:22.948 --> 00:44:26.588
<v Chris>Like I was saying just a moment ago, I think XMPP has been left out in this.

00:44:26.788 --> 00:44:26.868
<v Wes>Yeah.

00:44:27.208 --> 00:44:31.128
<v Chris>There are some other solutions out there, and there are plug-in systems available.

00:44:31.508 --> 00:44:35.228
<v Chris>But I agree. I think the two other projects that haven't really solved this

00:44:35.228 --> 00:44:38.588
<v Chris>but I'm watching with some interest are IronClaw and Nanoclaw.

00:44:39.448 --> 00:44:41.828
<v Chris>IronClaw is, surprise, surprise, Rust-based.

00:44:43.348 --> 00:44:46.548
<v Chris>And Nanoclaw is Python-based, but a nice, tight little Python project.

00:44:47.108 --> 00:44:51.428
<v Chris>And they're doing different things security-wise. And so we're seeing several of these now develop.

00:44:51.648 --> 00:44:54.788
<v Wes>You know, the other thing maybe to think about is, Kelsey touched on this,

00:44:54.948 --> 00:44:59.028
<v Wes>is consider what you have the agents do and what you make deterministic.

00:44:59.228 --> 00:45:02.328
<v Wes>Because if they're just triggering scripts that you've already blessed and aren't

00:45:02.328 --> 00:45:05.768
<v Wes>going to surprisingly call the delete API, you'll probably have a better time

00:45:05.768 --> 00:45:09.248
<v Wes>than if it just has full access to everything and you expect it to kind of do

00:45:09.248 --> 00:45:10.308
<v Wes>that dynamically every time.

00:45:11.848 --> 00:45:16.088
<v Wes>Pete Zinger boosts in with the 7,680 cents.

00:45:20.414 --> 00:45:23.354
<v Wes>I'm relatively new to the show and only started listening last year.

00:45:23.594 --> 00:45:25.194
<v Wes>Well, welcome. Thanks for listening.

00:45:25.714 --> 00:45:29.934
<v Wes>A few weeks back, I got talking to Abe, and he showed me a concept video from

00:45:29.934 --> 00:45:37.034
<v Wes>1967 called 1999 AD, where the home computer would talk to other computers to do things.

00:45:37.174 --> 00:45:39.734
<v Wes>He's also been helping me run my own Abe's.

00:45:40.234 --> 00:45:44.214
<v Wes>I have two, and I just let them be, I don't call them Pete's because Petiverse

00:45:44.214 --> 00:45:46.074
<v Wes>doesn't have the same zing to it.

00:45:46.494 --> 00:45:50.074
<v Wes>I am more sure than ever that this separation of duty is the way to go.

00:45:50.414 --> 00:45:53.714
<v Wes>Separate AIs that have, oh, no, the boost got cut off.

00:45:53.794 --> 00:45:57.754
<v Chris>Yeah, cut off there. Yeah. But I'm imagining you saying that they have separate tasks or jobs, right?

00:45:57.874 --> 00:46:02.114
<v Chris>Because if you keep them relatively focused, they don't wander off and get lost

00:46:02.114 --> 00:46:03.574
<v Chris>in the context and whatnot like that.

00:46:03.634 --> 00:46:07.034
<v Chris>And you can also then scope the permissions and things like that.

00:46:07.254 --> 00:46:09.474
<v Wes>And probably easier to manage the context window.

00:46:09.694 --> 00:46:12.634
<v Chris>Yeah. Yeah. And memories and all kinds of things. Yeah, absolutely.

00:46:13.034 --> 00:46:16.594
<v Wes>Thanks for the report. And that's exciting. Let the Abe spread.

00:46:16.754 --> 00:46:19.434
<v Chris>I've thought about that, too. I wish I could call mine Chris's and have a Chris

00:46:19.434 --> 00:46:22.734
<v Chris>first, but it just, it just doesn't have the same ring, does it?

00:46:23.254 --> 00:46:28.834
<v Wes>Southern fried sassaboo sin with a row of ducks. Condolences to Brent.

00:46:29.394 --> 00:46:31.234
<v Wes>Silver is a nice consolation prize.

00:46:31.434 --> 00:46:33.214
<v Chris>Oh, this is a sports ball reference, isn't it?

00:46:33.574 --> 00:46:37.614
<v Brent>This is a hockey reference in both genders.

00:46:38.154 --> 00:46:42.574
<v Brent>We played the U.S. and lost both games in overtime to you folk.

00:46:42.974 --> 00:46:46.654
<v Brent>So darn you. Shaking fist. Shaking fist over there at you both.

00:46:46.654 --> 00:46:49.874
<v Chris>Yeah, well, we personally had something to do with it, so feeling pretty good

00:46:49.874 --> 00:46:53.274
<v Chris>about that. Didn't even know about it. Actually, I did. I saw the cheating, at least.

00:46:55.514 --> 00:46:58.094
<v Chris>I saw the embarrassing, disgraceful cheating.

00:46:59.014 --> 00:47:00.714
<v Wes>His friend didn't bring up on his own.

00:47:00.794 --> 00:47:01.634
<v Chris>No, interesting, huh?

00:47:01.974 --> 00:47:02.934
<v Brent>I didn't see any of that.

00:47:03.414 --> 00:47:06.054
<v Chris>All right, well, thank you, everybody, who streamed or boosted,

00:47:06.154 --> 00:47:07.294
<v Chris>even below the 2,000-set cutoff.

00:47:07.754 --> 00:47:13.114
<v Chris>You sat streamers, 22 of you collectively, sent in a nice, a little bit more than a row of McDuck's.

00:47:14.719 --> 00:47:19.479
<v Chris>22,649 sats sent in by our sats streamers. And you combine that with our boosters.

00:47:19.679 --> 00:47:23.399
<v Chris>It's a pretty light week, and we are getting ready for some big trips,

00:47:23.559 --> 00:47:25.899
<v Chris>big coverage, and very light on the sponsors.

00:47:26.419 --> 00:47:29.619
<v Chris>So we'd love to see some support from you next week if you are in the mood.

00:47:29.739 --> 00:47:34.599
<v Chris>We got 80,388 sats this week. It's all right.

00:47:36.519 --> 00:47:40.999
<v Chris>It's okay. It's all right. It's all right. Don't cry. It's okay. Are you all right?

00:47:41.259 --> 00:47:42.079
<v Brent>So sad.

00:47:42.879 --> 00:47:45.519
<v Chris>It's all right. It's all right. These happen, especially because we had a great

00:47:45.519 --> 00:47:47.599
<v Chris>New Year's and end of year. We really do appreciate that.

00:47:48.219 --> 00:47:52.959
<v Chris>But your boys are getting ready to head off into, what do you call it,

00:47:53.319 --> 00:47:55.519
<v Chris>the rough? It's not a battlefield.

00:47:56.259 --> 00:47:58.579
<v Chris>It's a nerd field, really. We're getting ready for it either way.

00:47:58.719 --> 00:47:59.899
<v Chris>And the boys could use some support.

00:47:59.999 --> 00:48:01.119
<v Wes>The great conference cloud.

00:48:01.379 --> 00:48:05.579
<v Chris>Yeah. We sacrifice our health so you don't have to. Actually,

00:48:05.619 --> 00:48:07.419
<v Chris>I think we've been really lucky the last couple of days.

00:48:07.419 --> 00:48:08.679
<v Wes>We have done very well. It's not.

00:48:09.079 --> 00:48:09.759
<v Chris>That California brings.

00:48:09.759 --> 00:48:11.439
<v Brent>You've got a whole regiment, I think, is helping.

00:48:11.859 --> 00:48:15.299
<v Chris>You know what? I should think more about that. I should get that locked in is

00:48:15.299 --> 00:48:17.599
<v Chris>what I should do. Thank you, everybody who does support us. And,

00:48:17.659 --> 00:48:19.739
<v Chris>of course, thank you to our members who put that on autopilot.

00:48:20.399 --> 00:48:22.119
<v Chris>Keeps us going. Means the world to us.

00:48:23.799 --> 00:48:26.799
<v Chris>Well, we got too many picks this week. Most of it's my fault,

00:48:26.799 --> 00:48:29.339
<v Chris>but you boys also found some really good ones.

00:48:29.879 --> 00:48:35.199
<v Chris>And let's talk about WebSocket Cam. It's an app for Android that exposes your camera.

00:48:35.799 --> 00:48:39.199
<v Wes>That's right. Access Android camera via WebSocket client API.

00:48:39.619 --> 00:48:43.379
<v Wes>You can also run AI and computer vision tests with ease from a live camera.

00:48:43.659 --> 00:48:50.579
<v Wes>Stream written in a hundred percent colin gpl3.0 and you can get it on obtainium i.

00:48:50.579 --> 00:48:55.439
<v Chris>Think you should be their ad man you know written in 100 pure cotton.

00:48:55.439 --> 00:48:59.879
<v Wes>I have yet i can't full disclosure i haven't had a chance to try this yet but

00:48:59.879 --> 00:49:03.199
<v Wes>as someone who's used droid cam more than a handful of times over the years

00:49:03.199 --> 00:49:07.199
<v Wes>having more options of taking advantage of a probably decent camera you've already

00:49:07.199 --> 00:49:09.419
<v Wes>paid for and is in your pocket i think is really neat.

00:49:10.039 --> 00:49:13.539
<v Chris>I agree with you, Wes Payne. Good pick. Stay tuned for Brent's fantastic pick

00:49:13.539 --> 00:49:15.579
<v Chris>in a moment. Well, I don't know if it was Brent's, but I'm giving it to him.

00:49:15.959 --> 00:49:18.759
<v Chris>I want to just mention that I have created a couple of projects.

00:49:18.759 --> 00:49:22.259
<v Chris>If you are playing around with the claws, one of the things that OpenClaw doesn't

00:49:22.259 --> 00:49:24.599
<v Chris>have built in, which is a little disappointing, and I'd love to see him fixed

00:49:24.599 --> 00:49:28.459
<v Chris>one day, is an MCP bridge or an MCP client.

00:49:28.579 --> 00:49:30.959
<v Chris>But you can add one via a plugin.

00:49:31.239 --> 00:49:36.019
<v Chris>So I have built one, an OpenClaw plugin that bridges any MCP HTTP server as

00:49:36.019 --> 00:49:37.599
<v Chris>a native tool to OpenClaw.

00:49:38.119 --> 00:49:42.819
<v Chris>They don't have one yet, but MCPs are big. The model context protocols out there, they're big.

00:49:43.299 --> 00:49:47.039
<v Chris>And OpenClaw is kind of not really built to solve it directly.

00:49:47.039 --> 00:49:51.159
<v Chris>They recommend you use MCP Importer, which uses a CLI interface.

00:49:51.599 --> 00:49:57.419
<v Chris>So I created a plugin that lets you use MCPs directly in OpenClaw.

00:49:57.559 --> 00:49:59.659
<v Wes>And you're already running it in production, is my understanding.

00:49:59.799 --> 00:50:05.159
<v Chris>I am. It's working well. And to that end, then I created a MCP server for fresh

00:50:05.159 --> 00:50:09.559
<v Chris>RSS, which definitely should have one. But since they don't have one, well, now we have one.

00:50:09.899 --> 00:50:14.539
<v Chris>So it's an MCP server I created that sits in front of the Fresh RSS Google Reader

00:50:14.539 --> 00:50:19.199
<v Chris>API, exposing the feed management as tools for your AI agent.

00:50:19.419 --> 00:50:21.499
<v Chris>It supports streamable HTTP transport.

00:50:22.519 --> 00:50:25.879
<v Chris>And it's very easy to get going on Nix. Flake is ready for you.

00:50:26.019 --> 00:50:29.599
<v Chris>The details on how to set it up in your config are all there for you.

00:50:29.719 --> 00:50:32.999
<v Chris>It just requires a password that you set up on the Fresh RSS server.

00:50:33.319 --> 00:50:35.519
<v Chris>And then you plug it into your gateway once you have my other thing working.

00:50:35.519 --> 00:50:38.959
<v Chris>And there's even a guide on there for your agent if you're too lazy to do it for yourself.

00:50:40.019 --> 00:50:43.919
<v Chris>And you should see significant token savings when you do this because it uses

00:50:43.919 --> 00:50:48.499
<v Chris>a lot less reasoning, pulling down the whole XML feed and going through it and

00:50:48.499 --> 00:50:49.939
<v Chris>just sorting out the few things that you want.

00:50:50.379 --> 00:50:55.099
<v Chris>Because the MCP server exposes in particular options and tools and makes it

00:50:55.099 --> 00:50:58.099
<v Chris>a lot more efficient. So it's a great way to get like a daily briefing.

00:50:59.386 --> 00:51:00.546
<v Chris>Without burning a bunch of tokens.

00:51:00.766 --> 00:51:03.306
<v Wes>Yeah. Do you have any workflows you're willing to share around like what you

00:51:03.306 --> 00:51:05.926
<v Wes>have your agent using these tools to pull from fresh RSS?

00:51:06.366 --> 00:51:09.426
<v Chris>So mostly on demand stuff for when I'm prepping a show, I can be like,

00:51:09.486 --> 00:51:11.766
<v Chris>hey, what are the headlines in this category? Because I've broken the shows

00:51:11.766 --> 00:51:13.246
<v Chris>down into individual categories now.

00:51:13.566 --> 00:51:17.326
<v Chris>And then a supplement to that in my morning brief, which has a lot of stuff in it.

00:51:17.886 --> 00:51:21.326
<v Chris>I have headlines from each. I have the top headlines from each category for

00:51:21.326 --> 00:51:24.026
<v Chris>each show that shows up in a morning brief that's pulling from fresh RSS.

00:51:24.166 --> 00:51:24.646
<v Wes>Very nice.

00:51:24.646 --> 00:51:28.546
<v Chris>And the thing that's really great about that is all I have to do is add and

00:51:28.546 --> 00:51:35.346
<v Chris>delete feeds in Fresh RSS, and it won't show me the stories I've already read in Fresh RSS.

00:51:35.546 --> 00:51:39.086
<v Chris>So I'm only seeing the stuff that's unread that's been exposed to me because

00:51:39.086 --> 00:51:41.146
<v Chris>all of that is just in Fresh RSS already.

00:51:41.426 --> 00:51:43.986
<v Chris>So it's really cool. And I like it a lot.

00:51:44.406 --> 00:51:48.706
<v Chris>All right. Who wants to tell us about this utility that promises to replace

00:51:48.706 --> 00:51:50.446
<v Chris>your home folder? Tell me about this.

00:51:51.906 --> 00:51:52.946
<v Wes>Wessel? Wessel?

00:51:53.206 --> 00:51:54.446
<v Chris>What is it, Brentley? Did you find this?

00:51:54.646 --> 00:51:57.486
<v Brent>Is it a WESH project? WESH, did you make this one?

00:51:57.786 --> 00:52:00.406
<v Chris>This is great. Why would I want to replace my home folder?

00:52:00.486 --> 00:52:05.906
<v Wes>Yeah, I think I've found this, and I'm not sure if it's a great idea or not, but I love it.

00:52:06.066 --> 00:52:09.966
<v Wes>It's super inventive. It's a clever idea, and for some folks' workflow,

00:52:10.106 --> 00:52:11.246
<v Wes>maybe it is the right idea.

00:52:11.486 --> 00:52:13.926
<v Chris>Yeah, okay, give us an example, a little tastier why you might want to use this.

00:52:13.926 --> 00:52:18.026
<v Wes>Well, organize your computer by replacing user folders with SimLinks project folders.

00:52:18.206 --> 00:52:18.386
<v Chris>Okay.

00:52:18.486 --> 00:52:22.246
<v Wes>It's a tool that helps you by creating individual download, desktop,

00:52:22.506 --> 00:52:26.386
<v Wes>et cetera, right, like the XDG standard folders you're used to from like your home der, right?

00:52:26.906 --> 00:52:30.646
<v Wes>For each project, it replaces the original folders with symlinks to the folders

00:52:30.646 --> 00:52:32.186
<v Wes>of the current active project.

00:52:32.406 --> 00:52:36.086
<v Wes>Now the random files you download will be placed in the download folder they belong to.

00:52:36.206 --> 00:52:40.626
<v Wes>Also, all the like .config files you might have for project specific settings,

00:52:40.826 --> 00:52:44.426
<v Wes>maybe for IDEs or tools or whatever, those all get sandboxed too.

00:52:44.826 --> 00:52:46.966
<v Chris>Brent, I think you ought to set this up right before the trip.

00:52:47.186 --> 00:52:48.966
<v Chris>So that way you could give us a report on how it goes.

00:52:49.146 --> 00:52:55.326
<v Chris>You know, we could talk about it while you're on the trip I don't think anything's going to go wrong It.

00:52:55.326 --> 00:52:59.766
<v Wes>Is written in Rust and has the MIT license so maybe that makes you feel better.

00:53:00.919 --> 00:53:01.859
<v Chris>What do you think, Brent? You give it a go?

00:53:02.679 --> 00:53:07.119
<v Brent>The hardest decision is to decide what a project is.

00:53:07.219 --> 00:53:12.239
<v Brent>Because I feel like our trip is like a meta project and there are multi-projects within it. Yeah, yeah.

00:53:12.439 --> 00:53:14.139
<v Chris>That's the most Brent answer possible.

00:53:14.299 --> 00:53:17.459
<v Brent>Isn't it? Well, I'm true to form. True to form.

00:53:18.559 --> 00:53:21.099
<v Chris>Yeah, I feel like the hard question is where do you sim link to?

00:53:21.759 --> 00:53:25.639
<v Chris>You know? Do you put it on your scary raid? That's probably not a good idea. But it's fast.

00:53:25.639 --> 00:53:28.179
<v Wes>I think it might already have a spot that it uses.

00:53:28.419 --> 00:53:29.059
<v Chris>Oh, that's lame.

00:53:29.439 --> 00:53:30.559
<v Wes>But you can probably configure that.

00:53:30.559 --> 00:53:34.239
<v Chris>Well, see, what I like about being able to do it myself is I won't be consistent

00:53:34.239 --> 00:53:35.419
<v Chris>over the years that I use this.

00:53:35.619 --> 00:53:38.759
<v Chris>So I'll start with one spot, and then a couple years go by, I'll start doing

00:53:38.759 --> 00:53:42.879
<v Chris>it in another spot. And you give me four or five years, and I'll have symlinks all over the place.

00:53:43.679 --> 00:53:49.119
<v Chris>It's really kind of, it's like a web of knowledge on my file system via symlinks.

00:53:49.239 --> 00:53:51.479
<v Wes>You can't find anything, but it's all there.

00:53:51.639 --> 00:53:55.139
<v Chris>Yeah, it's all linked. It's all there. Somebody could probably put it together,

00:53:55.159 --> 00:53:56.919
<v Chris>you know, if they came back and pieced it all together.

00:53:57.579 --> 00:54:00.459
<v Chris>All right just one more episode before we hit the

00:54:00.459 --> 00:54:04.179
<v Chris>road meetup.com slash jupiter broadcasting is where you go if you're going to

00:54:04.179 --> 00:54:09.339
<v Chris>be there we want to see you and don't forget you can get 40 percent off your

00:54:09.339 --> 00:54:16.319
<v Chris>scale registration when you use our promo code on pledge you n p l g 40 that

00:54:16.319 --> 00:54:18.679
<v Chris>ain't that ain't nothing that ain't nothing,

00:54:20.533 --> 00:54:27.073
<v Chris>With that, links over at linuxunplugged.com slash 655, if you can believe it.

00:54:27.213 --> 00:54:30.973
<v Chris>You got any pro tips for people before we get here? Like maybe fancy JSON chapters

00:54:30.973 --> 00:54:32.593
<v Chris>or transcripts, things like that?

00:54:32.653 --> 00:54:33.813
<v Wes>We have both those things.

00:54:33.933 --> 00:54:34.053
<v Chris>What?

00:54:34.053 --> 00:54:37.913
<v Wes>Yeah, that's right. We have cloud chapters. So it's a JSON file that your podcatcher

00:54:37.913 --> 00:54:39.573
<v Wes>can download or you or your agent.

00:54:40.033 --> 00:54:42.993
<v Wes>And it tells you where we talked about the things in the show.

00:54:43.133 --> 00:54:46.733
<v Wes>But if you need more granularity than all of the words that we said,

00:54:47.133 --> 00:54:49.453
<v Wes>you know, up to some possible error rate.

00:54:49.673 --> 00:54:53.513
<v Wes>Never, never. Those are included in SRT and VTT format that you can get in the feed.

00:54:53.733 --> 00:54:57.953
<v Wes>And these days we're trying, not always, you know, new, but we're adding an

00:54:57.953 --> 00:55:00.293
<v Wes>MP4 in an alternate enclosure as well.

00:55:00.513 --> 00:55:03.193
<v Chris>You know, we ought to start, we ought to just advertise to sponsors.

00:55:03.293 --> 00:55:05.593
<v Chris>Hey, yeah, we're the agentic ready podcast.

00:55:05.833 --> 00:55:06.033
<v Wes>That's right.

00:55:06.133 --> 00:55:09.313
<v Chris>We've got our chapters in JSON and we have our transcripts in two formats.

00:55:10.173 --> 00:55:13.653
<v Wes>And we have rich podcasting 2.0 metadata via the tags.

00:55:13.873 --> 00:55:15.093
<v Chris>That's right. And that also means.

00:55:18.733 --> 00:55:23.753
<v Chris>That means we're lit. We are live every single Sunday using the live item tag,

00:55:23.753 --> 00:55:27.133
<v Chris>so you can listen to your podcast app of choice, or you can go to jblive.tv.

00:55:27.273 --> 00:55:31.613
<v Chris>If you're on the go, check out that clean audio feed over at jblive.fm.

00:55:32.013 --> 00:55:35.513
<v Chris>Links to everything over at linuxunplugged.com. That's the source of truth,

00:55:35.553 --> 00:55:37.933
<v Chris>and I'll give one more shout to our virtual lug.

00:55:38.353 --> 00:55:40.613
<v Chris>Details at jupyterbroadcasting.com slash mumble.

00:55:41.193 --> 00:55:43.693
<v Chris>You never know, when we're on the road, it can be hit and miss.

00:55:43.793 --> 00:55:45.953
<v Chris>So you probably want to join next week, just so you can try it out,

00:55:45.993 --> 00:55:47.753
<v Chris>because you know if we're in studio, there will be a mumble room.

00:55:47.933 --> 00:55:50.313
<v Chris>So you probably ought to join us. Next week.

00:55:51.313 --> 00:55:55.013
<v Chris>Make it a Tuesday on a Sunday. All right. Thank you so much for joining us on

00:55:55.013 --> 00:55:56.653
<v Chris>this week's episode of the Unplugged program.

00:55:56.853 --> 00:55:59.473
<v Chris>And we'll see you right back here next Sunday.

