WEBVTT

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

00:00:16.389 --> 00:00:17.259
<v Wes>My name is Wes.

00:00:17.259 --> 00:00:18.179
<v Brent>And my name is Brent.

00:00:18.179 --> 00:00:23.129
<v Chris>Hello, gentlemen. Well, coming up on the show today, has the best use case for

00:00:23.129 --> 00:00:27.307
<v Chris>Noster finally been discovered, and it might not be what you're thinking?

00:00:27.626 --> 00:00:31.614
<v Chris>We're going to take a look at Buzz, the new tool that is sort of like multiplayer

00:00:32.003 --> 00:00:33.593
<v Chris>for agentic assistant work.

00:00:33.890 --> 00:00:35.859
<v Chris>And then we're going to round the show out with some great boosts,

00:00:36.179 --> 00:00:37.907
<v Chris>some picks, and a lot more.

00:00:38.191 --> 00:00:41.289
<v Chris>So before we get to that, We've got to start by saying time-appropriate greetings

00:00:41.289 --> 00:00:45.799
<v Chris>to our virtual lug. Hello, MumbleRoom. Hey, Chris. Hello, Brent.

00:00:46.259 --> 00:00:46.779
<v Brent>Hello, hello.

00:00:47.379 --> 00:00:49.409
<v Wes>Thank you for joining us, even when we're remote.

00:00:49.409 --> 00:00:54.749
<v Chris>Yes, hello up here from the beautiful, smoky BC. We're up in Brent's pad this week.

00:00:54.749 --> 00:00:55.289
<v Brent>Delicious.

00:00:55.289 --> 00:00:58.971
<v Chris>Hanging out, enjoying ourselves some wildfire smoke.

00:00:59.360 --> 00:01:03.449
<v Chris>And just extremely grateful for our friends over at Defined Networking.

00:01:03.449 --> 00:01:07.049
<v Chris>And I think you're going to love it. Go to Defined.net slash unplugged and meet

00:01:07.049 --> 00:01:11.089
<v Chris>Manage Nebula from Defined Networking. A decentralized VPN built on the open-source

00:01:11.089 --> 00:01:15.039
<v Chris>Nebula platform that is awesome, and we're using the crap out of it.

00:01:15.353 --> 00:01:21.849
<v Chris>Nebula, it was originally created to connect Slack's global infrastructure. Could you imagine?

00:01:23.550 --> 00:01:24.330
<v Chris>Could you imagine this?

00:01:24.330 --> 00:01:26.769
<v Wes>Could you imagine? I tried to imagine what it was like before they had Nebula.

00:01:26.819 --> 00:01:26.919
<v Brent>Oh.

00:01:27.739 --> 00:01:30.029
<v Chris>And the kind of data that they have to protect. I mean, it's just absolutely

00:01:30.029 --> 00:01:35.171
<v Chris>bonkers. And it has to be resilient. It has to scale. It has to be absolutely bonkers fast.

00:01:35.699 --> 00:01:40.076
<v Chris>That's what Slack needed, and that's what Nebula delivered.

00:01:40.314 --> 00:01:43.739
<v Chris>And you can get it now, right now, defined.net slash unplugged for 100 hosts

00:01:43.739 --> 00:01:45.289
<v Chris>free, no credit card required.

00:01:45.609 --> 00:01:47.819
<v Chris>They also include a lighthouse now to get you going right away,

00:01:47.819 --> 00:01:52.168
<v Chris>but you can self-host your own lighthouse so you have complete real control over your mesh network.

00:01:52.557 --> 00:01:56.889
<v Chris>No tech company between you and your infrastructure. No big tech login required.

00:01:56.889 --> 00:01:59.406
<v Chris>Keys is how it works. It's so elegant.

00:01:59.719 --> 00:02:02.384
<v Chris>Check it out at defined.net slash unplugged.

00:02:02.773 --> 00:02:05.373
<v Chris>And a big thank you to Define for sponsoring the Unplugged program.

00:02:07.428 --> 00:02:10.452
<v Chris>Well, we got no housekeeping, but we'd love to know what you think of the remote

00:02:10.452 --> 00:02:14.072
<v Chris>show audio. And if you watch the video and any of it comes together at all,

00:02:14.072 --> 00:02:19.921
<v Chris>we have no idea. So you can go to boost.jupiterbroadcasting.com and let us know your thoughts.

00:02:20.246 --> 00:02:22.573
<v Chris>Or you can send us an email, like Mars did.

00:02:23.189 --> 00:02:27.101
<v Wes>Hey, guys. Y'all meet at Nostert wondering if you've heard of Buzz,

00:02:27.409 --> 00:02:31.962
<v Wes>which seems to be a self-hostable Slack alternative that also enables human

00:02:31.962 --> 00:02:33.498
<v Wes>and agent collaboration.

00:02:33.783 --> 00:02:39.890
<v Wes>You can check out their code repo github.com slash block slash buzz or the main website buzz.xyz.

00:02:40.366 --> 00:02:44.532
<v Wes>While the tech does seem cool and the back end is written in Rust.

00:02:45.492 --> 00:02:46.632
<v Chris>Oh, is it now?

00:02:46.632 --> 00:02:46.932
<v Wes>Yes, it is.

00:02:46.992 --> 00:02:49.311
<v Chris>We didn't notice that. Oh, no, we didn't. No.

00:02:49.973 --> 00:02:53.532
<v Wes>I find some of the vision docs in their repo to be really fascinating.

00:02:54.603 --> 00:02:58.772
<v Wes>I think Buzz is actually started by Jack Dorsey or at least his block organization.

00:02:58.772 --> 00:03:02.502
<v Wes>So not sure how I feel about that. But if it truly supports sovereignty and

00:03:02.502 --> 00:03:05.755
<v Wes>it functions and has features and they do what it says on the tin,

00:03:06.056 --> 00:03:08.332
<v Wes>then it might be worthwhile to play around with.

00:03:08.686 --> 00:03:12.233
<v Wes>Keep up the wonderful work on the podcast. Yours truly, Mars.

00:03:12.471 --> 00:03:16.812
<v Chris>Mars, you asked the right question. Does it actually deliver what it says on

00:03:16.812 --> 00:03:19.611
<v Chris>the tin or is this just a big joke?

00:03:20.110 --> 00:03:22.659
<v Chris>So Buzz is also kind of...

00:03:23.390 --> 00:03:26.839
<v Chris>Maybe considered a bit of a Slack killer. I think that's underselling what it

00:03:26.839 --> 00:03:31.140
<v Chris>does, but it includes a lot of the Slack-like collaboration and chat features.

00:03:32.299 --> 00:03:35.479
<v Chris>And so if, depending on your workflow, this could be very, very useful.

00:03:35.959 --> 00:03:39.559
<v Chris>And it's Apache 2.0 license, so it is open source. And like Mar said,

00:03:39.559 --> 00:03:43.161
<v Chris>they've put it up on GitHub, and it is moving really, really fast these days.

00:03:43.352 --> 00:03:46.778
<v Wes>One of the projects that's actively getting commits pushed to it while we cover it on the show.

00:03:47.539 --> 00:03:47.619
<v Brent>Yeah.

00:03:47.619 --> 00:03:48.989
<v Chris>Is it right now? It is.

00:03:48.999 --> 00:03:50.259
<v Brent>I mean, the kernel gets that sometimes.

00:03:50.259 --> 00:03:53.800
<v Chris>26 minutes ago, as we record, on a Sunday.

00:03:54.086 --> 00:03:58.149
<v Chris>So they describe it as a self-hostable workspace where humans and AI agents

00:03:58.149 --> 00:04:00.616
<v Chris>share the same rooms. And we'll try to explain what that really means here in a minute.

00:04:01.419 --> 00:04:04.999
<v Chris>A buzz community is the workspace where a user reaches by URL.

00:04:05.599 --> 00:04:08.243
<v Chris>There's a Noster Relay on the back end, which we'll talk about more,

00:04:08.620 --> 00:04:11.419
<v Chris>that sort of acts as a central server. Every message, reaction,

00:04:11.419 --> 00:04:15.616
<v Chris>workflow step, review approval, and Git event, talk more about that,

00:04:15.923 --> 00:04:17.747
<v Chris>is a signed event in one log.

00:04:17.996 --> 00:04:20.597
<v Chris>Same shape, same identity, same model, same audit trail.

00:04:21.265 --> 00:04:25.142
<v Chris>And in practice, it just kind of feels like a team workspace with a chat app.

00:04:25.142 --> 00:04:29.812
<v Chris>But under the hood, every event is logged and everything has a cryptographic

00:04:29.812 --> 00:04:33.072
<v Chris>signature, which is very useful. And we'll talk about that.

00:04:33.072 --> 00:04:37.402
<v Wes>Yeah, part of the value idea here is, okay, you have to do a lot of work if

00:04:37.402 --> 00:04:42.512
<v Wes>you say have something like Slack to bring in maybe helpers or automation or the results from

00:04:42.912 --> 00:04:46.982
<v Wes>your build system when you put a new update or someone opens a new PR and needs

00:04:46.982 --> 00:04:50.957
<v Wes>a review and that has to be surfaced and all of those things that we end up dragging in there.

00:04:51.548 --> 00:04:54.352
<v Wes>Well, what if you just had them in there from the start in a system that was

00:04:54.352 --> 00:04:58.172
<v Wes>designed to know about all of them, and that was built on top of Nostre,

00:04:58.172 --> 00:05:01.002
<v Wes>which is essentially just JSON with a lot of cryptography on top so that you

00:05:01.002 --> 00:05:03.326
<v Wes>have an audited log of all of the events that are flowing?

00:05:03.988 --> 00:05:08.822
<v Chris>Yes, and the architecture is such that it is actually Nostre first.

00:05:08.822 --> 00:05:13.402
<v Chris>So what that means is, like in the Slack workflow or a Teams workflow,

00:05:13.402 --> 00:05:15.842
<v Chris>we've also experimented with Mattermost.

00:05:16.208 --> 00:05:20.772
<v Chris>they generally have like a bot api and you go create a bot account and you go

00:05:20.772 --> 00:05:24.212
<v Chris>set up an api for your bot and then you go to your whatever your bot is and

00:05:24.212 --> 00:05:27.034
<v Chris>you put the api in there you put a url in there and get it all connected and

00:05:27.394 --> 00:05:30.070
<v Chris>it can do a few things in your slack or matter most or whatever it might be,

00:05:30.529 --> 00:05:34.172
<v Chris>that's not how buzz works since buzz is noster first and everything is done

00:05:34.172 --> 00:05:36.532
<v Chris>as a noster event and there's a cli as well,

00:05:37.112 --> 00:05:40.572
<v Chris>everything can be managed and set up by agents like they can humans.

00:05:40.572 --> 00:05:47.386
<v Chris>They essentially share some of the same privileges and workflow capabilities in Buzz.

00:05:48.500 --> 00:05:55.585
<v Chris>And I think that's particularly a big advantage for Buzz because it means that

00:05:55.585 --> 00:05:57.154
<v Chris>you can tell, you can task your agent,

00:05:57.572 --> 00:06:01.385
<v Chris>go set up a project room for this project and it's linked to this GitHub project

00:06:01.385 --> 00:06:04.526
<v Chris>and bring these five people in with read-only permission.

00:06:05.089 --> 00:06:08.315
<v Chris>And the agent just goes and does all of that and sends out the invites instead

00:06:08.315 --> 00:06:12.775
<v Chris>of you having to go create the room, invite an agent in. It's just a more natural process.

00:06:13.408 --> 00:06:18.495
<v Wes>And it means everything is the same. all you're doing with the fancy buzz desktop

00:06:18.495 --> 00:06:21.175
<v Wes>client which we can talk about because that's kind of the main way experience,

00:06:21.628 --> 00:06:25.915
<v Wes>is sending signed events to the nostril relay and that's all the agent does

00:06:25.915 --> 00:06:29.015
<v Wes>either so by if you want to audit what the agent's doing you're also getting

00:06:29.015 --> 00:06:31.705
<v Wes>to audit what the human's doing and it's the same thing it's not two separate

00:06:31.705 --> 00:06:35.465
<v Wes>systems and it's all just right there and it's a you know building on top of

00:06:35.465 --> 00:06:36.581
<v Wes>nostril which is essentially,

00:06:37.150 --> 00:06:41.355
<v Wes>like you have this you have this relay and you can post events to it and it's

00:06:41.355 --> 00:06:45.775
<v Wes>just a super simple json data structure The wire protocol is NIP01.

00:06:45.775 --> 00:06:49.695
<v Wes>Events have six fields. The ID, the pub key that corresponds to your identity,

00:06:49.695 --> 00:06:54.058
<v Wes>which is your private key, kind, tags, content, and the signature.

00:06:54.511 --> 00:06:57.015
<v Wes>And the kind integer is basically the way you dispatch stuff.

00:06:57.015 --> 00:06:59.335
<v Wes>So if you want a new feature, you make a new kind number.

00:06:59.793 --> 00:07:02.775
<v Wes>And then, of course, it's all connected over WebSocket, and it lets you do things

00:07:02.775 --> 00:07:05.365
<v Wes>like subscribe to queries. So you can kind of ask, like, hey,

00:07:05.365 --> 00:07:08.832
<v Wes>give me events that match this shape. I want to be told when those come in.

00:07:09.128 --> 00:07:11.479
<v Wes>And that lets you form sort of this two-way communication.

00:07:11.792 --> 00:07:16.775
<v Wes>And then Buzz on top of this defines 80 plus different event kinds across some

00:07:16.775 --> 00:07:19.669
<v Wes>of the standard ranges and some of their own custom ranges.

00:07:20.076 --> 00:07:25.235
<v Wes>And that means, again, like you need to know the semantics of what Buzz's stuff

00:07:25.235 --> 00:07:29.085
<v Wes>is. But beyond that, the only thing you need to really know if you want to play

00:07:29.085 --> 00:07:30.995
<v Wes>in the system is how Nostra works.

00:07:31.895 --> 00:07:37.115
<v Chris>Yeah, I think the advantage to it being Nostra is a couple of primary things.

00:07:37.115 --> 00:07:42.680
<v Chris>It's an open protocol. So instead of it being based on a proprietary back-end or whatever...

00:07:43.598 --> 00:07:45.993
<v Chris>It's a fully open protocol that's documented. Like Wes said,

00:07:45.993 --> 00:07:47.985
<v Chris>the way they're doing things is via NIPs.

00:07:48.316 --> 00:07:52.501
<v Chris>And a NIP is a NOSTER improvement proposal. And so you can add functionality

00:07:52.751 --> 00:07:55.764
<v Chris>in an open source way to NOSTER through these NIPs.

00:07:56.019 --> 00:07:58.633
<v Chris>And then people can determine if they want to implement them at the client side

00:07:58.633 --> 00:07:59.775
<v Chris>or not and at the relay side.

00:08:00.036 --> 00:08:05.313
<v Chris>And so they haven't had to concoct any kind of proprietary way of doing this.

00:08:05.661 --> 00:08:09.208
<v Chris>They've been able to just leverage an open network. So that's the first thing.

00:08:09.597 --> 00:08:13.973
<v Chris>The other thing that I think really stands out is everybody that participates

00:08:13.973 --> 00:08:19.693
<v Chris>in a Noster network in the protocol gets an NPUB and an NSEC.

00:08:19.693 --> 00:08:24.183
<v Chris>They get a public key and a private key, and everything gets signed with this.

00:08:25.363 --> 00:08:27.946
<v Chris>Listeners are probably at least loosely familiar with this concept.

00:08:28.341 --> 00:08:31.238
<v Chris>But imagine now applying that at the agent level.

00:08:31.499 --> 00:08:36.787
<v Chris>So now you have a cryptographic identity for every agent that's working.

00:08:37.107 --> 00:08:41.703
<v Chris>So you can actually tie it back to a specific agent and cryptographically verify

00:08:41.703 --> 00:08:42.981
<v Chris>it was that agent or human.

00:08:43.457 --> 00:08:47.914
<v Chris>And that, because it's just a public private key pair is portable.

00:08:48.193 --> 00:08:52.353
<v Chris>So if later on you build up a cooler agent that has way more superpowers,

00:08:52.353 --> 00:08:54.590
<v Chris>but you want to use that identity, you can.

00:08:54.799 --> 00:08:57.833
<v Chris>And Nostra makes it really easy to spin up a new identity. Like you can,

00:08:57.833 --> 00:09:00.291
<v Chris>you know, just a new cryptographic public key and private key.

00:09:00.523 --> 00:09:03.753
<v Chris>And so you could create a new identity for another bot and you can verify there

00:09:03.753 --> 00:09:06.343
<v Chris>really are the people that the bot claims it is.

00:09:06.343 --> 00:09:12.333
<v Chris>And I think that isn't a problem that has been solved yet in any other way with

00:09:12.333 --> 00:09:19.209
<v Chris>agents other than APIs and KYC that Anthropic and OpenAI, I suppose, would run.

00:09:19.505 --> 00:09:24.083
<v Chris>But this is a distributed, open-source way where everybody involved and every

00:09:24.083 --> 00:09:27.703
<v Chris>action involved, every Git commit and everything, has a public-private key signing

00:09:27.703 --> 00:09:32.653
<v Chris>that can be audited and traced, which adds to the reliability and troubleshooting of these things.

00:09:33.466 --> 00:09:36.972
<v Chris>So I think that's one of the bigger innovations Buzz is bringing by using Noster.

00:09:37.268 --> 00:09:41.042
<v Chris>And that's why kind of the beginning, I was like, this might be one of Noster's best uses yet.

00:09:42.497 --> 00:09:45.533
<v Chris>Ironically, it's not doing it with a distributed relay. See,

00:09:45.533 --> 00:09:48.933
<v Chris>typically with a Noster client, the relay can be many.

00:09:49.353 --> 00:09:53.196
<v Chris>You could just substitute any relay for any other relay for the most part, if you wanted to.

00:09:53.823 --> 00:09:58.593
<v Chris>But in this case, you're using one specific relay. You can self-host that relay,

00:09:58.593 --> 00:10:00.243
<v Chris>but you're using one specific relay.

00:10:00.435 --> 00:10:05.120
<v Brent>Why do you think they made that design decision? because the default NOSTER, wouldn't that work too?

00:10:06.293 --> 00:10:09.163
<v Chris>Wes could probably explain it better than me, but there's just certain jobs

00:10:09.163 --> 00:10:13.933
<v Chris>that the relay is doing. You can have it executing webhooks and doing scheduled jobs.

00:10:16.016 --> 00:10:19.653
<v Chris>It's holding more information than a typical NOSTER relay would be by default.

00:10:20.473 --> 00:10:21.673
<v Chris>Was that a fair assessment, you think, Wes?

00:10:21.673 --> 00:10:25.063
<v Wes>Yeah, I think that's probably about right. You can do more integrations,

00:10:25.063 --> 00:10:27.413
<v Wes>like in particular when we talk about the Git stuff. That's something that's

00:10:27.413 --> 00:10:28.810
<v Wes>happening here on the back end.

00:10:29.117 --> 00:10:33.912
<v Wes>So it is in one sense a standard relay, but it also offers some more stuff on the side.

00:10:34.953 --> 00:10:39.043
<v Wes>And I think they are exploring how to do more multi-member communities,

00:10:39.043 --> 00:10:44.000
<v Wes>but for this first thing, it's sort of just targeting like the community is the relay.

00:10:45.213 --> 00:10:49.677
<v Brent>Is there also a challenge with these NIPs in that like it might not be adopted

00:10:49.857 --> 00:10:51.976
<v Brent>by all the relays? No, it doesn't really?

00:10:52.133 --> 00:10:55.873
<v Chris>No, because they're implementing their own client, right? So they're implementing

00:10:55.873 --> 00:10:58.343
<v Chris>their own relay and their own client. And so as long as they support it,

00:10:58.343 --> 00:11:01.403
<v Chris>it's fine. And if you want to build your own, you just, the NIP is documented.

00:11:01.403 --> 00:11:01.926
<v Brent>Yeah, okay.

00:11:02.933 --> 00:11:05.809
<v Chris>So that, I think, the Nostra aspect. Is there anything else you want to talk

00:11:06.001 --> 00:11:09.433
<v Chris>about Nostra before I move on from that? I mean, we're going to come back to

00:11:09.433 --> 00:11:10.733
<v Chris>when we talk about bringing our own bots.

00:11:10.733 --> 00:11:11.763
<v Wes>Yeah, I think that's fine for now.

00:11:11.763 --> 00:11:14.603
<v Chris>Okay, so then the other thing that I think Buzz is bringing early on,

00:11:14.603 --> 00:11:19.313
<v Chris>and we should mention this is in early development, and they're probably a pretty

00:11:19.313 --> 00:11:21.117
<v Chris>big category of people it's not ready for yet.

00:11:21.239 --> 00:11:24.543
<v Chris>But one of the things that is going to probably be attractive to folks in our

00:11:24.543 --> 00:11:30.190
<v Chris>audience is they've integrated shared compute, and it's done really, really well.

00:11:30.597 --> 00:11:34.243
<v Chris>So I think it's one of their more ambitious ideas. And anybody that has the

00:11:34.243 --> 00:11:36.466
<v Chris>Buzz client in a community, in a workspace...

00:11:37.227 --> 00:11:41.242
<v Chris>can go into a section that's basically the compute section of the app.

00:11:42.304 --> 00:11:48.150
<v Chris>And the Buzz app will review your hardware and determine which open source model,

00:11:48.800 --> 00:11:50.736
<v Chris>is best going to run on your machine.

00:11:50.736 --> 00:11:51.435
<v Brent>Jeff needs this.

00:11:51.615 --> 00:11:56.836
<v Chris>And for me, it selected, first the default was Quen 2.5, but it said actually

00:11:56.836 --> 00:11:58.477
<v Chris>Gemma 4 is going to work better on your machine.

00:11:58.779 --> 00:12:02.796
<v Chris>And I think we should allocate 48 gigabytes of virtual RAM, of your video RAM.

00:12:04.305 --> 00:12:07.523
<v Chris>So I say, okay, and I turn that box on. And what happens now is any members

00:12:07.523 --> 00:12:12.883
<v Chris>of my Buzz community can access that shared compute, and they can opt in their

00:12:12.883 --> 00:12:14.766
<v Chris>compute as well if they want.

00:12:15.358 --> 00:12:19.493
<v Chris>And that, to me, seems to be like the missing piece that we have been asking

00:12:19.493 --> 00:12:21.143
<v Chris>for on this show in particular.

00:12:21.143 --> 00:12:21.943
<v Wes>Sure have been.

00:12:21.943 --> 00:12:27.973
<v Chris>It's so great. No API keys, no cloud bill. The relay handles the trust boundary.

00:12:27.973 --> 00:12:30.553
<v Chris>It handles connecting. That's another thing the relay does that probably the

00:12:30.553 --> 00:12:31.583
<v Chris>standard relay wouldn't do.

00:12:32.233 --> 00:12:36.363
<v Chris>and so you get a compute mesh entirely desktop client side.

00:12:36.363 --> 00:12:37.013
<v Brent>That's so cool.

00:12:37.013 --> 00:12:41.193
<v Wes>Yeah the discovery just the the part the relay really does is um a member's

00:12:41.193 --> 00:12:45.583
<v Wes>mesh lm node publishes a special kind a bookmark set event with a buzz mesh

00:12:45.583 --> 00:12:49.293
<v Wes>status tag content is json and then basically just tells it like look this is

00:12:49.293 --> 00:12:51.498
<v Wes>what i'm offering i have this model here's how to get to it

00:12:51.893 --> 00:12:55.313
<v Wes>and then when a consumer needs a model it can query the relay for fresh mesh

00:12:55.313 --> 00:12:59.428
<v Wes>status events from the current members verifies owner binding that kind of all the security stuff

00:12:59.771 --> 00:13:04.763
<v Wes>and then basically you always have sort of a proxy local open ai compatible

00:13:04.763 --> 00:13:07.273
<v Wes>endpoint from the buzz desktop thing and then

00:13:07.693 --> 00:13:11.603
<v Wes>when you connect then that just basically then starts forwarding to whichever

00:13:11.603 --> 00:13:15.897
<v Wes>of the local options over the mesh or the remote ones over the mesh that you want to use,

00:13:16.425 --> 00:13:18.956
<v Wes>so from your client side you could just point the same thing at it and then,

00:13:19.432 --> 00:13:23.443
<v Wes>make use of the different models that are provided by you on the mesh which is pretty cool that's.

00:13:23.443 --> 00:13:30.432
<v Chris>So cool mars mentioned this in his email to us and i know wes you noticed this too is um they have,

00:13:30.949 --> 00:13:34.490
<v Chris>a pretty well flushed out vision for the project,

00:13:34.988 --> 00:13:37.893
<v Chris>and not like computer vision i mean like idea of where it's going to go in the

00:13:37.893 --> 00:13:41.453
<v Chris>future and kind of the full idea so even though they're not there yet because

00:13:41.453 --> 00:13:43.440
<v Chris>it's early days kind of the full idea of,

00:13:43.916 --> 00:13:46.623
<v Chris>like what you could expect this to be and one of the things they outline is

00:13:46.623 --> 00:13:49.773
<v Chris>there's these different surfaces right you have your home surface stream form

00:13:49.773 --> 00:13:53.453
<v Chris>dms agents workflows and search and all that kind of stuff.

00:13:53.453 --> 00:13:57.093
<v Wes>Yeah, here's how they put it. One community is your entire workspace.

00:13:57.093 --> 00:14:00.593
<v Wes>Work, conversation, agents, automation, artifacts, docs, one domain,

00:14:00.593 --> 00:14:02.771
<v Wes>one identity system, one search index,

00:14:03.292 --> 00:14:06.485
<v Wes>MyProject.com in a browser shows your repos. Git clone works.

00:14:06.694 --> 00:14:09.118
<v Wes>Open the Buzz app and you're in the channels where the work happens.

00:14:09.118 --> 00:14:11.778
<v Wes>No GitHub, no Discord, no stitching five services together.

00:14:12.178 --> 00:14:15.668
<v Wes>The project lives in one place and that place is yours. Run your own relay for

00:14:15.668 --> 00:14:18.850
<v Wes>one community or let an operator host thousands on shared infrastructure.

00:14:19.338 --> 00:14:24.103
<v Wes>Same open source code base. Same URL is your workspace experience. Either way.

00:14:24.359 --> 00:14:28.968
<v Chris>And one of the ideas, right, is that you're working with the agents in tandem

00:14:28.968 --> 00:14:32.131
<v Chris>on projects. And so you're bringing in Git issues.

00:14:32.352 --> 00:14:36.528
<v Chris>the agent is tracking that and you're having like you would a conversation with

00:14:36.528 --> 00:14:40.868
<v Chris>a co-worker and i think maybe we should touch a little bit on how they kind

00:14:40.868 --> 00:14:45.894
<v Chris>of invasion get and get like workflows being integrated because i don't know if it's fully there yet.

00:14:46.062 --> 00:14:50.058
<v Wes>Yeah we haven't tried this part and you might need to have your own relay so

00:14:50.058 --> 00:14:53.628
<v Wes>right now we've we have we've been making progress towards it but we have not

00:14:53.628 --> 00:14:56.648
<v Wes>hosted our own relay yet just because this is all super new so we want to try

00:14:56.648 --> 00:14:59.837
<v Wes>it out so we're trying the hosted relay that you get by default but,

00:15:00.325 --> 00:15:03.348
<v Wes>there is git integration So firstly, it's built on top of S3.

00:15:03.348 --> 00:15:07.998
<v Wes>So you provide it in S3 as the backend storage for it. Objects are stored as

00:15:07.998 --> 00:15:12.475
<v Wes>content-addressed packs and a manifest JSON that tracks refs and the pack list.

00:15:12.771 --> 00:15:14.391
<v Wes>No database holding Git objects.

00:15:15.218 --> 00:15:21.478
<v Wes>And then they do sort of a NIP 98 hijack. Essentially, they use the Git credential helper,

00:15:21.966 --> 00:15:26.645
<v Wes>to plug in Nostr as the identity layer. So the helper signs a Nostr event over

00:15:26.645 --> 00:15:28.495
<v Wes>the repo URL instead of a password.

00:15:28.935 --> 00:15:32.305
<v Wes>The relay verifies the Nostr sig. That's the entire auth layer.

00:15:32.305 --> 00:15:34.915
<v Wes>No SSH keys, no tokens, no OAuth.

00:15:34.915 --> 00:15:37.025
<v Chris>That is such a brilliant use of Nostr once again.

00:15:37.025 --> 00:15:38.455
<v Wes>Just a signed JSON event.

00:15:38.455 --> 00:15:40.035
<v Chris>It becomes the identity layer everywhere.

00:15:40.335 --> 00:15:45.585
<v Wes>And then the Nostr events themselves basically are the feed that builds the

00:15:45.585 --> 00:15:51.925
<v Wes>UI layer. So a successful Git push emits kind 3618 into the Buzz channel.

00:15:51.925 --> 00:15:54.721
<v Wes>Patches, PRs, issues are all just NOSTER events too.

00:15:55.029 --> 00:15:58.013
<v Wes>The channel timeline is the code review surface.

00:15:58.391 --> 00:16:01.635
<v Wes>And then there's also some policy stuff, like you can do protection rules and

00:16:01.966 --> 00:16:06.773
<v Wes>various other things. But it's all basically tried to be plumbed on top of S3 and NOSTER.

00:16:06.919 --> 00:16:08.880
<v Wes>And then it's an HTTP server on top.

00:16:09.495 --> 00:16:12.595
<v Chris>And of course, if you use their hosted version, they just set all that up for

00:16:12.595 --> 00:16:15.855
<v Chris>you. If you want to self-host it, you've got to provide the S3 backend.

00:16:16.914 --> 00:16:21.169
<v Chris>But to the Nostra as the identity layer there, Nostra as the authentication layer there.

00:16:21.391 --> 00:16:25.205
<v Wes>And what's crucial is it's Git's standard smart HTTP protocol.

00:16:25.205 --> 00:16:27.898
<v Wes>The credential helper just swaps the password for a Nostra event.

00:16:28.164 --> 00:16:33.475
<v Wes>The server swaps the file system for S3 and CAS. Git itself doesn't know anything changed.

00:16:33.475 --> 00:16:33.955
<v Chris>It's pretty cool.

00:16:33.955 --> 00:16:37.335
<v Wes>And that was part of the goal, right? If you're going to be replacing something

00:16:37.335 --> 00:16:40.985
<v Wes>like, hey, we also do code hosting, you kind of need it to work with mostly standard tools.

00:16:40.985 --> 00:16:41.975
<v Brent>That's really elegant.

00:16:41.975 --> 00:16:48.015
<v Chris>What I was able to do, too, is I was able to bring over my NSEC identity to

00:16:48.015 --> 00:16:50.907
<v Chris>Buzz. So when I logged into our Buzz community...

00:16:52.050 --> 00:16:56.057
<v Chris>It was the same identity I have on Noster. So you can verify my key across multiple

00:16:56.057 --> 00:16:58.047
<v Chris>platforms now, so you know it's really me in there.

00:16:58.366 --> 00:17:00.777
<v Chris>And I didn't have to create a new account. I didn't have to create a new profile.

00:17:00.777 --> 00:17:02.174
<v Chris>I didn't even have to set a profile picture.

00:17:02.853 --> 00:17:06.899
<v Chris>I just signed in with my NSEC, and it pulled that from the Noster network,

00:17:07.190 --> 00:17:11.451
<v Chris>and I'm using that same identity now across five apps. It's so awesome.

00:17:11.648 --> 00:17:14.697
<v Wes>Which also means there is some multi-relay support already, because that stuff

00:17:14.697 --> 00:17:15.727
<v Wes>was synced to other relays.

00:17:15.727 --> 00:17:20.817
<v Chris>Yeah, true, true. So I think the Git integration is particularly useful.

00:17:20.817 --> 00:17:25.766
<v Chris>The way they foresee these agents interacting with the external world is going to be through MCPs.

00:17:26.131 --> 00:17:33.897
<v Chris>And when you install Buzz, they kind of intend for you to use it as an agent

00:17:33.897 --> 00:17:37.728
<v Chris>orchestration platform itself, sort of like an OpenClaw or a Hermes.

00:17:38.030 --> 00:17:41.887
<v Chris>And then you can tie it to an API key for the compute, or you can use Codex

00:17:41.887 --> 00:17:44.497
<v Chris>or Cloud Desktop or whatever. There's a couple options there.

00:17:44.874 --> 00:17:50.017
<v Chris>and it acts as the agentic harness. And then they foresee you using MCPs and

00:17:50.017 --> 00:17:54.157
<v Chris>whatnot to interact with the external world and Git and all this kind of stuff is integrated.

00:17:54.493 --> 00:17:59.517
<v Chris>And the idea would be that if you were a business or a small team and you didn't

00:17:59.517 --> 00:18:04.487
<v Chris>already have, I think, an OpenClaw or a Hermes setup today, you would deploy

00:18:04.487 --> 00:18:07.607
<v Chris>Buzz and it would come with a handful of agents. You could create more.

00:18:08.025 --> 00:18:11.357
<v Wes>Yeah, and we kind of tried it a little bit from there. We took two paths.

00:18:11.357 --> 00:18:17.387
<v Wes>One is you can do what's called a Buzz agent. where it has its own sub-process

00:18:17.387 --> 00:18:22.087
<v Wes>that spawns as the agent's runtime and loop, and it directly goes and talks

00:18:22.087 --> 00:18:24.726
<v Wes>to, say, an OpenAI-compatible endpoint that you put in there.

00:18:25.213 --> 00:18:28.577
<v Wes>But the other one is it can launch a different harness via ACP,

00:18:29.037 --> 00:18:31.777
<v Wes>sort of, you know, Cloud Code or Codex or OpenCode or something,

00:18:32.027 --> 00:18:35.359
<v Wes>and that can also be sort of how you run the agent.

00:18:36.178 --> 00:18:38.438
<v Wes>which we tried a little bit with your setup.

00:18:38.438 --> 00:18:42.198
<v Chris>Yeah. So do you think there's any other basics we've talked about before we

00:18:42.198 --> 00:18:44.628
<v Chris>talked about integration and what we tried to do with it? Is there any other

00:18:44.628 --> 00:18:48.038
<v Chris>high-level stuff around Buzz? I mean, people can always ask if they have questions.

00:18:48.038 --> 00:18:53.268
<v Brent>But let's talk about installation because you had to wrap it a little bit for our own purposes.

00:18:53.728 --> 00:18:57.128
<v Wes>Yeah, true. So out of the box, I think they have a Mac app. I don't know about

00:18:57.128 --> 00:19:00.460
<v Wes>a Windows app. Mobile is just shipping now, so it's moving really fast.

00:19:00.814 --> 00:19:04.999
<v Wes>Obviously, we wanted to try it on Linux, and they do have an app image and a dev.

00:19:05.348 --> 00:19:09.713
<v Wes>I spent a little time I assume those will probably work pretty widely and they've already made,

00:19:10.323 --> 00:19:13.368
<v Wes>improvements to some of the app and stuff to make like the gstreamer libraries

00:19:13.368 --> 00:19:16.988
<v Wes>it bundles a little more compatible on a wider class of distros which is maybe

00:19:16.988 --> 00:19:18.048
<v Wes>partly what I was running into,

00:19:18.568 --> 00:19:21.898
<v Wes>I tried getting you know there's app image run for Nix OS and so I spent a little

00:19:21.898 --> 00:19:25.298
<v Wes>time trying to get that to work ultimately it just became easier to do some

00:19:25.298 --> 00:19:30.568
<v Wes>patch elfing on the files in the dev so I was able to make a flake for that that builds the,

00:19:31.088 --> 00:19:35.978
<v Wes>buzz desktop app which is Atari app with TypeScript UI Atari's like this Rust

00:19:35.978 --> 00:19:40.374
<v Wes>runtime electron alternative that is, frankly, a lot nicer, actually.

00:19:40.850 --> 00:19:45.228
<v Wes>And then it also gives you the Buzz CLI, which is like JSON output primarily,

00:19:45.228 --> 00:19:47.334
<v Wes>really intended to support agentic use.

00:19:47.793 --> 00:19:50.998
<v Wes>And then on the flip side, you could also run the Relay, which is the Rust application,

00:19:50.998 --> 00:19:52.953
<v Wes>which we're not doing yet, and it's a separate package.

00:19:53.908 --> 00:19:56.228
<v Chris>Mm-hmm. There you go. Although we'll probably play around with running Relay.

00:19:56.228 --> 00:19:59.528
<v Brent>And it's moving fast, as you mentioned. It's super, super fast.

00:19:59.528 --> 00:20:03.808
<v Wes>I'm already one release behind on the desktop app, and I built it twice yesterday.

00:20:04.228 --> 00:20:08.488
<v Chris>There you go. So, um, I think that's, those are some good basics.

00:20:08.488 --> 00:20:11.258
<v Chris>I do feel like there's, it's such a big topic and it is moving so fast that

00:20:11.258 --> 00:20:14.648
<v Chris>I think there's some more stuff to cover. But one of the things I wanted to

00:20:14.648 --> 00:20:19.628
<v Chris>mention is we're going to attempt to share a invite link for our buzz community.

00:20:19.628 --> 00:20:23.160
<v Chris>We created a Jupiter colony buzz community and, um,

00:20:23.788 --> 00:20:27.923
<v Chris>We may have figured out a way to invite you where I don't have to individually

00:20:27.923 --> 00:20:31.013
<v Chris>add your end pubs. It's experimental. Yeah. So it might not work.

00:20:31.013 --> 00:20:34.283
<v Wes>That is one area I was looking a little before the show. And if we do ever eventually

00:20:34.283 --> 00:20:38.313
<v Wes>run our own relay, there is an environment variable you can set that just says

00:20:38.313 --> 00:20:41.393
<v Wes>like, not even the method we're doing, like just have at it,

00:20:41.393 --> 00:20:43.793
<v Wes>come join the community. So that could be a future. Not sure.

00:20:43.793 --> 00:20:44.175
<v Chris>Right.

00:20:44.373 --> 00:20:46.043
<v Wes>I don't think we can do that with the hosted relay.

00:20:46.043 --> 00:20:49.923
<v Chris>But I think we do have an invite link that is valid for 30 days where I don't

00:20:49.923 --> 00:20:50.903
<v Chris>have to add their end pub.

00:20:50.903 --> 00:20:53.103
<v Wes>And help us test it because we've already made accounts.

00:20:53.260 --> 00:20:56.243
<v Chris>Yeah, we've made accounts. We're in there in the Buzz community,

00:20:56.243 --> 00:20:57.236
<v Chris>and we're going to be playing with it.

00:20:57.794 --> 00:21:00.763
<v Chris>I mean, we figure why not kick the tires on their hosted setup,

00:21:00.763 --> 00:21:02.683
<v Chris>figure out what doesn't work, and then we'll run our own eventually.

00:21:02.683 --> 00:21:03.573
<v Wes>Yeah, after we've learned a few lessons.

00:21:03.573 --> 00:21:06.553
<v Chris>Because I actually think there could be real use for JB here.

00:21:07.053 --> 00:21:11.613
<v Chris>We don't really have a particular agentic harness picked out for JB,

00:21:11.973 --> 00:21:16.091
<v Chris>and we would really love to find something like Slack that isn't Slack.

00:21:16.341 --> 00:21:20.623
<v Chris>So this sort of solves both of those problems. And yes, we have a public Jupyter

00:21:20.623 --> 00:21:24.283
<v Chris>Broadcasting GitHub, but for a lot of our internal tooling, we've been considering

00:21:24.283 --> 00:21:29.145
<v Chris>a self-hosted GitLab or 4G or something, and maybe this would help us with that as well.

00:21:29.679 --> 00:21:33.143
<v Chris>But I think the question becomes that if you've already been playing with agents,

00:21:33.143 --> 00:21:39.136
<v Chris>or if you want to run a different agentic harness, like an OpenClaw or a Hermes,

00:21:39.490 --> 00:21:42.103
<v Chris>how do you integrate that with something like Buzz?

00:21:42.103 --> 00:21:46.773
<v Chris>Since Buzz is trying to both be the agentic harness and also the collaboration

00:21:46.773 --> 00:21:49.167
<v Chris>space, you want to bring your existing agents in if you have them.

00:21:49.538 --> 00:21:54.321
<v Chris>That right now is a bit of a mixed bag, and we tried to get it working,

00:21:54.618 --> 00:21:55.970
<v Chris>and we'll tell you how it went next.

00:22:05.119 --> 00:22:08.434
<v Brent>Well, I'll admit, yesterday while you two were heads down working on all this

00:22:08.434 --> 00:22:11.744
<v Brent>stuff, I was packing some boxes. So I don't quite know how all this went.

00:22:11.784 --> 00:22:13.937
<v Brent>Yeah, and moving motorcycles around. Well, that's true. That was the fun part.

00:22:14.267 --> 00:22:19.311
<v Brent>So, Wes, you ran into, I'm sure, some problems. Some things went well. How did it go yesterday?

00:22:19.444 --> 00:22:23.444
<v Wes>Yeah, well, okay, so we got a few default agents set up, right?

00:22:23.444 --> 00:22:24.504
<v Wes>We got that kind of baked.

00:22:24.964 --> 00:22:28.703
<v Wes>I put in an open router API key, and so we got one agent going that could do that.

00:22:29.150 --> 00:22:32.734
<v Wes>And then Chris had it hooked up to Codex, and so we had another agent like that.

00:22:32.734 --> 00:22:36.702
<v Wes>We already started running into some bugs. For instance, right now,

00:22:37.103 --> 00:22:38.502
<v Wes>we can't use each other's agent.

00:22:39.564 --> 00:22:42.344
<v Wes>We can see them. They're in the same channels and all that, right?

00:22:42.344 --> 00:22:43.430
<v Wes>Because it's all just Noster.

00:22:44.164 --> 00:22:46.444
<v Wes>But there's a bug in the client. And maybe it's fixed. Again,

00:22:46.444 --> 00:22:50.083
<v Wes>I'm one version behind at this point. But I think that's still open.

00:22:51.598 --> 00:22:54.784
<v Wes>When you do tagging, it's just another piece. It's like a tag that goes in the

00:22:54.784 --> 00:22:59.655
<v Wes>Noster event. So there is a difference between if the UI highlights it as a

00:23:00.038 --> 00:23:03.544
<v Wes>structured little tag versus if you just type at username or whatever.

00:23:04.079 --> 00:23:08.724
<v Wes>and so because it does that it tries to uh we can't add each other's bots and

00:23:08.724 --> 00:23:12.384
<v Wes>that's how you talk to them so already running into some problems and it's sort of,

00:23:12.964 --> 00:23:16.223
<v Wes>you know it's early project and i think it was really inspired by something,

00:23:16.681 --> 00:23:19.884
<v Wes>you know it's by folks that are doing a lot of agentic development and maybe

00:23:19.884 --> 00:23:22.994
<v Wes>using something like open code or clod code and we've talked a little bit about

00:23:22.994 --> 00:23:27.154
<v Wes>this it's kind of a context shift a mind shift between if you're running something

00:23:27.154 --> 00:23:30.744
<v Wes>like hermes or open claw yeah sort of flips the model a little bit.

00:23:30.744 --> 00:23:31.554
<v Chris>Yeah really yeah.

00:23:31.554 --> 00:23:36.156
<v Wes>And so right now buzz is really optimized for, like, either it runs it directly,

00:23:36.661 --> 00:23:39.958
<v Wes>or it launches your harness for you as an ACP.

00:23:40.562 --> 00:23:43.702
<v Wes>Right? So it'll launch open code as an ACP and it can use it.

00:23:44.469 --> 00:23:48.738
<v Wes>that's not really super compatible with, like, I already have my own whole NixOS

00:23:48.738 --> 00:23:51.738
<v Wes>server that maintains itself as a Hermes instance. Like, I want to use that.

00:23:52.098 --> 00:23:54.168
<v Wes>I mean, I might use some of these other bots, too. And that's where Chris is

00:23:54.168 --> 00:23:57.708
<v Wes>talking about, like, there's a difference between if you have a bunch of existing

00:23:57.708 --> 00:24:00.798
<v Wes>infrastructure or if you can kind of start fresh.

00:24:01.071 --> 00:24:05.188
<v Chris>Yeah. Yeah, if you're already into building your own agentic system and you

00:24:05.188 --> 00:24:09.218
<v Chris>have been using them for a bit, it's a little trickier to integrate them with Buzz at this point.

00:24:09.218 --> 00:24:11.572
<v Brent>It sounds like every couple months that's a disadvantage.

00:24:11.886 --> 00:24:15.398
<v Chris>Yeah, although it seems to be that native Hermes integration,

00:24:15.398 --> 00:24:19.704
<v Chris>or at least an initial form of it, is landing upstream in Buzz.

00:24:20.518 --> 00:24:24.108
<v Wes>Yeah, they're working on it. I think it's making it so it becomes ACP-aware,

00:24:24.108 --> 00:24:26.907
<v Wes>so you could use Hermes ACP with it.

00:24:27.146 --> 00:24:30.931
<v Chris>In our testing so far, though, there has been some limitations when using the ACP.

00:24:31.684 --> 00:24:35.330
<v Chris>It hasn't been as useful as just setting up the CLI or trying to go NOSTER directly.

00:24:35.875 --> 00:24:40.438
<v Wes>Yeah for sure and um it it's still kind of built around this notion of like

00:24:40.738 --> 00:24:44.688
<v Wes>the buzz desktop because the relay is really pretty stateless minus like the

00:24:44.688 --> 00:24:46.538
<v Wes>git stuff right yeah um so like

00:24:46.538 --> 00:24:49.238
<v Wes>your desktop is going to be doing a lot of this stuff which means then,

00:24:49.778 --> 00:24:52.308
<v Wes>you're kind of it's all doing the desktop and then it's launching more services

00:24:52.308 --> 00:24:54.847
<v Wes>under that and all the mcp stuff is like,

00:24:55.694 --> 00:25:01.278
<v Wes>standard i own only so it's really not built with much sort of networking in mind but you know what,

00:25:02.550 --> 00:25:07.348
<v Wes>is nostr and that's where it's sort of like okay the direct buzz integrations

00:25:07.348 --> 00:25:12.384
<v Wes>we did get it working with the cli that was working pretty well so like you just export your nsec,

00:25:12.837 --> 00:25:16.658
<v Wes>and then you can set the right relay url and you run the buzz cli and you can

00:25:16.658 --> 00:25:21.058
<v Wes>list channels you can get events and you can send messages and all that so i was able to trigger,

00:25:21.774 --> 00:25:25.928
<v Wes>uh my bot or chris's bot by the cli because it doesn't have that bug you can

00:25:25.928 --> 00:25:30.408
<v Wes>tell it exactly who to like at mention or whatever but that's not really the

00:25:30.408 --> 00:25:31.688
<v Wes>experience we were going for.

00:25:31.688 --> 00:25:36.938
<v Wes>What we wanted, right, was we wanted MyHermes to be able to participate in Buzz

00:25:36.938 --> 00:25:38.794
<v Wes>as its own thing, like as a full...

00:25:39.706 --> 00:25:43.244
<v Wes>just like me, right? And so that was kind of our goal. And what's great about

00:25:43.244 --> 00:25:48.134
<v Wes>that is the root of that is Nostre because it's all gated on the Nostre private key.

00:25:48.454 --> 00:25:51.584
<v Chris>It is the core of the architecture, right? Like it's not an API.

00:25:51.584 --> 00:25:56.754
<v Chris>It is built around Nostre. So if your application or agent can speak in the

00:25:56.754 --> 00:25:58.688
<v Chris>Nostre protocol, you can talk to Buzz.

00:25:59.251 --> 00:26:03.654
<v Wes>And so this is where it's so great because I could have a bot help, right?

00:26:03.654 --> 00:26:06.937
<v Wes>So like I generated the new NPUB and NSEC for it,

00:26:07.425 --> 00:26:11.614
<v Wes>but then because i already had my own nsec that you had added for me with my

00:26:11.614 --> 00:26:13.733
<v Wes>regular buzz account and i was an admin,

00:26:14.180 --> 00:26:18.334
<v Wes>the relay would let me sign events to make admin updates right and so what i

00:26:18.334 --> 00:26:22.215
<v Wes>needed to do then is i could take my new bot you know my hermes's new key

00:26:22.569 --> 00:26:27.084
<v Wes>and then add that to the relays relay members table which is a kind 90 30 admin

00:26:27.084 --> 00:26:31.160
<v Wes>event and that kind of controls if you don't have it wide open that controls who's allowed in,

00:26:31.764 --> 00:26:35.594
<v Wes>uh and then it could just add it to channels it could set uh you know set its

00:26:35.594 --> 00:26:39.974
<v Wes>nice screen name set its user profile because all of those are just signed events

00:26:39.974 --> 00:26:43.316
<v Wes>to the relay so that got us an identity but next,

00:26:44.169 --> 00:26:48.794
<v Wes>you know we actually needed to be able to talk to this thing and so one we did

00:26:48.794 --> 00:26:51.364
<v Wes>investigate a few different options here right we wanted to take the easiest

00:26:51.364 --> 00:26:54.594
<v Wes>path and the fastest path because uh we were both trying to pack in yeah.

00:26:54.934 --> 00:26:55.402
<v Chris>Yeah yeah um.

00:26:55.974 --> 00:26:59.123
<v Wes>And so one thing is we did see that you could have

00:26:59.558 --> 00:27:03.254
<v Wes>uh workflows so you could set it like hey when an event comes in like that looks

00:27:03.254 --> 00:27:07.454
<v Wes>like this that tags this user has this in the reply or whatever run this you

00:27:07.454 --> 00:27:11.347
<v Wes>know it's kind of like a yaml style workflow run this thing send a webhook it had webhooks,

00:27:12.032 --> 00:27:15.674
<v Wes>it has scheduled events you can set up crons in there so we kind of got some

00:27:15.674 --> 00:27:18.734
<v Wes>of that working but again we weren't running our own relay and this is where

00:27:18.734 --> 00:27:20.043
<v Wes>i really think we could probably do more,

00:27:21.894 --> 00:27:26.258
<v Wes>I got the crons working, but when I tried to do the, like, at mention thing,

00:27:26.678 --> 00:27:29.748
<v Wes>the webhooks were just never fined. So I don't know if that's just a bug or

00:27:29.748 --> 00:27:31.688
<v Wes>it's turned off for the hosted thing, so they just don't have to,

00:27:31.688 --> 00:27:33.468
<v Wes>like, smash the internet with a bunch of webhooks.

00:27:33.468 --> 00:27:36.428
<v Chris>And they're growing. The adoption they're seeing right now is bonkers.

00:27:36.428 --> 00:27:39.138
<v Chris>I can imagine the fact that the relays are even up and running is impressive.

00:27:39.138 --> 00:27:39.518
<v Brent>Yeah.

00:27:39.518 --> 00:27:42.038
<v Wes>So we were kind of hoping you could get a first version of this where,

00:27:42.038 --> 00:27:46.148
<v Wes>like, the webhook would wake Hermes webhook integration, and then the bot could

00:27:46.148 --> 00:27:48.673
<v Wes>wake up, and it would have the buzz CLI, and then it could reply.

00:27:48.795 --> 00:27:49.155
<v Chris>Yeah.

00:27:49.625 --> 00:27:51.198
<v Wes>And that was kind of like a poor man's version.

00:27:51.198 --> 00:27:54.438
<v Chris>Yeah, because you're depending on this thing, you know, the webhook firing,

00:27:54.438 --> 00:27:57.158
<v Chris>then it's got to fire up the CLI first, and the LLM's got to interpret what

00:27:57.158 --> 00:27:59.836
<v Chris>it gets from the CLI. There's a lot of bits and pieces in there.

00:28:00.335 --> 00:28:06.968
<v Wes>So what we ultimately did is we built ourselves basically first-class buzz support,

00:28:06.968 --> 00:28:08.478
<v Wes>or as close as we could get, right?

00:28:08.478 --> 00:28:14.058
<v Wes>So the Dataflow is a buzz user. Let's say I'm trying to tag my bot,

00:28:14.058 --> 00:28:18.238
<v Wes>right? We got my bot added in there, so I tag my bot, ask it for some advice.

00:28:19.018 --> 00:28:21.743
<v Wes>I asked it, for example, to check if Linux Unplugged was live right now.

00:28:22.858 --> 00:28:26.128
<v Wes>That goes to the Nostra Relay. Fans out to anyone that's subscribed to that

00:28:26.128 --> 00:28:28.221
<v Wes>kind of event, which is like updates in the channel.

00:28:28.865 --> 00:28:33.189
<v Wes>And then I have a buzz bridge running. And that's a little Python sidecar system

00:28:33.189 --> 00:28:36.557
<v Wes>D service. It connects to the relay via WebSocket, which is how Nostra works.

00:28:36.963 --> 00:28:43.489
<v Wes>It authenticates as my Hermes bot. And then it filters for mentions of its name in the channel.

00:28:43.489 --> 00:28:47.609
<v Wes>And then anytime it gets a match, it forwards that to a little web server I'm

00:28:47.609 --> 00:28:51.839
<v Wes>running in a Hermes adapter plugin that's running. So then it receives the message,

00:28:51.839 --> 00:28:55.220
<v Wes>creates a structured event, dispatches to Hermes agent pipeline.

00:28:55.609 --> 00:28:58.909
<v Wes>And then Hermes processes and returns a text response. and then we send that

00:28:58.909 --> 00:29:02.249
<v Wes>back to the bridge, which is able to sort of do all the Nostra stuff,

00:29:02.249 --> 00:29:04.589
<v Wes>sign it correctly, and publish it to the relay.

00:29:04.589 --> 00:29:09.469
<v Wes>And then so from the Hermes side, it basically just looks exactly like how Telegram

00:29:09.469 --> 00:29:12.249
<v Wes>looks. So you can have sessions on Buzz and you can have sessions on Telegram.

00:29:12.849 --> 00:29:15.547
<v Chris>It's another platform it connects to. Exactly.

00:29:15.727 --> 00:29:19.099
<v Wes>It's not perfect. Like some of the tool call metadata has ended up in the general

00:29:19.099 --> 00:29:21.879
<v Wes>channel instead of like the thread that I was asking it in or that kind of thing.

00:29:21.879 --> 00:29:23.959
<v Wes>But I mean, it's working.

00:29:23.959 --> 00:29:26.249
<v Chris>I mean, the project might want to take a look at this. Hermes,

00:29:26.249 --> 00:29:30.829
<v Chris>you guys should take a look at this. just this is just native nostril integration

00:29:30.829 --> 00:29:31.909
<v Chris>and it's better than the acp.

00:29:32.249 --> 00:29:35.249
<v Wes>And you might not need to really have like i have it in two pieces where we

00:29:35.249 --> 00:29:38.109
<v Wes>have this like bridge server and then the part partly because it just made it

00:29:38.109 --> 00:29:41.079
<v Wes>simpler and it was faster instead of having to rebuild hermes a bunch i could

00:29:41.079 --> 00:29:44.014
<v Wes>just iterate on the bridge and it's just like a htp protocol

00:29:44.369 --> 00:29:47.249
<v Wes>but if you wanted to there's nothing stopping you from having a hermes plugin

00:29:47.249 --> 00:29:48.749
<v Wes>that just does all of that in

00:29:49.109 --> 00:29:52.757
<v Wes>one little box so there's definitely a lot of potential here and there's no

00:29:53.082 --> 00:29:56.599
<v Wes>because it is not some custom thing on some custom protocol.

00:29:56.599 --> 00:30:00.909
<v Wes>Because it is just Nostra and libraries exist for this, it is all open to build

00:30:00.909 --> 00:30:03.649
<v Wes>on. We don't have to have a Buzz SDK to make any progress.

00:30:04.772 --> 00:30:07.869
<v Chris>This is the bit that we should have said at the top because people that aren't

00:30:07.869 --> 00:30:13.269
<v Chris>into this are probably tuned out by now. But what will be missed by our community

00:30:13.269 --> 00:30:15.755
<v Chris>is this is the most Linux-friendly,

00:30:16.672 --> 00:30:21.848
<v Chris>slack killer that's ever been invented and it has the most devops workflow kind

00:30:21.848 --> 00:30:24.668
<v Chris>of feature set that's ever been implemented in one of these.

00:30:24.668 --> 00:30:29.193
<v Wes>It's super transparent the apis are all out there there's standard libraries to work with them.

00:30:29.524 --> 00:30:34.608
<v Chris>Uh the entire entirety of the nostril ecosystem is open source every nip is

00:30:34.608 --> 00:30:38.918
<v Chris>open source that they're using and buzz is apache 2.0 open source and,

00:30:39.438 --> 00:30:45.008
<v Chris>everything is an open protocol you can build simple clients in really just minutes

00:30:45.008 --> 00:30:47.566
<v Chris>there's lots of example code out there for Nostra clients as well.

00:30:48.042 --> 00:30:54.148
<v Chris>We as a free software community have, we are so foreign to how much how well

00:30:54.148 --> 00:30:55.878
<v Chris>this is built for us that we don't even recognize it.

00:30:56.398 --> 00:31:00.111
<v Chris>We don't even recognize it. We're so unused to it. When it happens we don't see it.

00:31:00.564 --> 00:31:02.218
<v Wes>And it's so composable, right? Like you don't,

00:31:03.024 --> 00:31:07.262
<v Wes>You don't have to have a Slack API. You can just, no permissions needed.

00:31:07.262 --> 00:31:07.712
<v Chris>Right.

00:31:07.712 --> 00:31:10.202
<v Wes>Like, you could, I mean, you might need, depending on how the relay is set up,

00:31:10.202 --> 00:31:13.032
<v Wes>you might need to author the relay or whatever. But, like, you can just subscribe

00:31:13.032 --> 00:31:16.602
<v Wes>to whatever events you want. I only care about Git PRs. I only care about messages

00:31:16.602 --> 00:31:19.542
<v Wes>from Chris. I don't need a full client. I can just have a Python script that

00:31:19.542 --> 00:31:21.692
<v Wes>does that and triggers whatever downstream automation I want.

00:31:21.692 --> 00:31:23.322
<v Chris>Or creates a dashboard.

00:31:23.322 --> 00:31:23.982
<v Wes>Totally.

00:31:23.982 --> 00:31:30.301
<v Chris>The dashboard could be the consumer, not the chat client. And so when you think about this is

00:31:30.638 --> 00:31:34.642
<v Chris>your projects and your infrastructure and your, all of this,

00:31:34.642 --> 00:31:37.722
<v Chris>like it really does matter that you can self-host this and that it is using

00:31:37.722 --> 00:31:39.078
<v Chris>an open protocol and standards.

00:31:39.433 --> 00:31:42.622
<v Chris>It matters more than I think we wanted to admit because we were so stuck with

00:31:42.622 --> 00:31:43.868
<v Chris>such bad options before.

00:31:44.407 --> 00:31:48.192
<v Chris>But now you've got a central spot where the agent and the human and everything

00:31:48.192 --> 00:31:51.442
<v Chris>is tracked and they can work together. It's just so fantastic.

00:31:51.442 --> 00:31:54.582
<v Wes>And, you know, we had been kind of struggling. Like we've been Nostra curious.

00:31:54.582 --> 00:31:57.062
<v Wes>You've played around with it. I think we've all played a little bit with it.

00:31:57.062 --> 00:31:58.312
<v Wes>You know, Fountain has support.

00:31:59.373 --> 00:32:03.262
<v Wes>but we hadn't really crossed a line yet to like, okay, I can see how there could

00:32:03.262 --> 00:32:06.082
<v Wes>be compounding returns when you have a relay, but like we didn't,

00:32:06.082 --> 00:32:09.443
<v Wes>there was no killer app yet that we'd really pushed us to have the relay.

00:32:09.780 --> 00:32:13.042
<v Wes>And this could be that. And then you could really see how you could build a lot more on top.

00:32:13.042 --> 00:32:16.232
<v Chris>Yeah, you just keep building. And once you have that as an identity layer,

00:32:16.232 --> 00:32:17.852
<v Chris>why wouldn't we build it into our other applications?

00:32:18.172 --> 00:32:21.222
<v Chris>Even our internal tooling, why not? If we've all got mpubs and nsacs and whatnot,

00:32:21.222 --> 00:32:23.252
<v Chris>it'd be an easy way for us to authenticate our internal tooling.

00:32:23.252 --> 00:32:27.152
<v Wes>And then we don't have to rely on some GitHub OAuth or whatever random third-party system.

00:32:27.672 --> 00:32:28.712
<v Chris>Yeah, it's decentralized.

00:32:29.212 --> 00:32:30.632
<v Brent>But then you'd know it was me trolling you.

00:32:32.965 --> 00:32:35.612
<v Wes>Yeah, you better sign any updates you make to my default text editor.

00:32:36.012 --> 00:32:40.632
<v Chris>Right. As excited I am about Buzz now, I think there could be potential for us to use it at JB.

00:32:41.632 --> 00:32:45.532
<v Chris>I do think for most people, it's maybe worth waiting a little bit just because

00:32:45.532 --> 00:32:50.032
<v Chris>of the speed of development. And if you've already got something set up,

00:32:50.032 --> 00:32:53.522
<v Chris>if you're brand new to this concept, this actually could be a pretty nice way

00:32:53.522 --> 00:32:55.140
<v Chris>to get started. They make it really easy.

00:32:55.726 --> 00:33:00.166
<v Chris>The primary vector is you just download the desktop app and go through the signup workflow.

00:33:00.843 --> 00:33:03.101
<v Chris>At some point, you're going to have to figure out how you want to do compute,

00:33:03.101 --> 00:33:04.849
<v Chris>but they'll help you with that as well.

00:33:05.671 --> 00:33:08.691
<v Chris>I mean, it really is bringing so many different tools into one place that if

00:33:08.691 --> 00:33:12.281
<v Chris>you haven't yet experimented with an agent platform, Buzz could be a good way

00:33:12.281 --> 00:33:14.056
<v Chris>to go, and at least you're using an open source one.

00:33:14.363 --> 00:33:17.608
<v Chris>It's backed by a company like Block that's got funding, and they're going to be around for a while.

00:33:19.077 --> 00:33:24.571
<v Brent>The thing I would say from my experience is you don't necessarily need to even

00:33:24.571 --> 00:33:27.171
<v Brent>know that there's Nostra on the back end.

00:33:27.171 --> 00:33:27.951
<v Chris>No, absolutely.

00:33:27.951 --> 00:33:31.348
<v Brent>But as a regular user, you need an NPUB, right?

00:33:31.592 --> 00:33:32.671
<v Chris>But it'll help you generate that.

00:33:32.671 --> 00:33:37.041
<v Brent>Exactly. And then other than that, it just looks like any other productivity

00:33:37.041 --> 00:33:38.651
<v Brent>chat app for teams and stuff.

00:33:39.337 --> 00:33:42.453
<v Chris>Yeah, we're focused on the NOSTA part because it's like finally somebody built

00:33:42.866 --> 00:33:45.981
<v Chris>a web browser on this hypertext transport protocol standard that we're really

00:33:45.981 --> 00:33:49.581
<v Chris>excited about. And look, this cool web browser that's using this hypertext transport

00:33:49.581 --> 00:33:51.336
<v Chris>protocol, I think it's got a lot of potential.

00:33:51.561 --> 00:33:54.001
<v Chris>Aren't you guys excited? It's finally happening.

00:33:54.001 --> 00:33:55.021
<v Brent>Yeah, but what can we do then?

00:33:55.021 --> 00:33:59.311
<v Chris>But like the average, you know, web user today doesn't give a crap that the

00:33:59.311 --> 00:34:01.571
<v Chris>web uses HTTP. It doesn't matter at all.

00:34:02.031 --> 00:34:06.151
<v Chris>That's the same here. But as nerds, we're excited about the fact that Nostra

00:34:06.151 --> 00:34:08.905
<v Chris>is actually getting used in a really elegant, useful way here.

00:34:09.277 --> 00:34:13.191
<v Chris>It's not truly distributed, but it is distributed in the sense that you can

00:34:13.191 --> 00:34:14.484
<v Chris>self-host your own relay.

00:34:14.943 --> 00:34:16.220
<v Brent>And the beautiful thing is like.

00:34:18.118 --> 00:34:20.988
<v Brent>built for nerds but it's also just built for everybody.

00:34:21.308 --> 00:34:21.908
<v Chris>Oh yeah it's.

00:34:21.908 --> 00:34:25.548
<v Brent>Beautiful like simple ui yeah they did an amazing job and they're only four

00:34:25.548 --> 00:34:27.058
<v Brent>months in which is really impressive.

00:34:27.249 --> 00:34:30.208
<v Wes>It is still new there like the uis keep getting updates i'm seeing that in the

00:34:30.208 --> 00:34:34.208
<v Wes>commits and like yeah there's some stuff you can do like via yaml or the config

00:34:34.208 --> 00:34:36.468
<v Wes>file and you might want to because some of the like editing settings can be

00:34:36.468 --> 00:34:39.718
<v Wes>a little fussy right now that kind of thing but that's just going to be the polish layer right.

00:34:39.718 --> 00:34:43.018
<v Chris>Yeah yeah and there may be some things that are just simpler to fire off right

00:34:43.018 --> 00:34:46.278
<v Chris>now via the cli that aren't exposed in the gui totally they'll probably add

00:34:46.278 --> 00:34:49.348
<v Chris>but yeah Yeah, and the mobile apps are just shipping for Android and iOS,

00:34:49.348 --> 00:34:52.758
<v Chris>and they're looking good, but early. You know, it's good, but early.

00:34:52.758 --> 00:34:56.998
<v Brent>So do we have an URL we can share with the community for joining our crazy Buzz system?

00:34:56.998 --> 00:35:04.508
<v Chris>Yeah, it's not super simple for the long invite, but the community URL is colony.communities.buzz.xyz.

00:35:05.584 --> 00:35:08.408
<v Chris>And we'll have an invite link to get you access in the show notes.

00:35:08.408 --> 00:35:14.848
<v Chris>But the community itself is colony.communities.buzz.xyz, and that's self-hosted,

00:35:14.848 --> 00:35:16.126
<v Chris>or that's hosted on their relay.

00:35:16.503 --> 00:35:20.410
<v Chris>we may host one eventually or maybe we'll host our private one I could imagine

00:35:20.723 --> 00:35:24.358
<v Chris>keeping our public community buzz if it's stuck around on a public relay on

00:35:24.358 --> 00:35:28.108
<v Chris>their services and then our internal one would be a self-hosted something like

00:35:28.108 --> 00:35:31.208
<v Chris>that kind of like how we probably should have done Matrix yeah.

00:35:31.588 --> 00:35:31.888
<v Brent>Learning,

00:35:42.208 --> 00:35:45.128
<v Brent>holy jeez, while we've been busy this week some boosts came in,

00:35:51.252 --> 00:36:01.392
<v Brent>we have quite a baller boost here karen sent us in a what is this a mighty row of ducks oh 222 222 sets.

00:36:07.471 --> 00:36:08.505
<v Chris>Wow, thank you.

00:36:08.505 --> 00:36:11.335
<v Brent>This was also sent via our web boost, just putting that in there.

00:36:11.335 --> 00:36:11.848
<v Chris>Okay.

00:36:12.225 --> 00:36:16.995
<v Brent>He says, not really giving back on a particular episode, just trying to give the show a little love.

00:36:16.995 --> 00:36:17.935
<v Wes>Oh, thank you.

00:36:17.935 --> 00:36:18.195
<v Chris>Thank you.

00:36:18.195 --> 00:36:18.999
<v Wes>Always welcome.

00:36:19.139 --> 00:36:22.018
<v Chris>Love is appreciated. Send it back your way.

00:36:22.517 --> 00:36:26.305
<v Wes>Well, Greg, the lawyer comes in with 150,000 cents.

00:36:26.305 --> 00:36:26.535
<v Chris>All right.

00:36:26.675 --> 00:36:27.330
<v Brent>Wow.

00:36:30.830 --> 00:36:33.055
<v Wes>Boost and end to support the trip to Canada.

00:36:33.055 --> 00:36:33.595
<v Chris>Aha.

00:36:33.595 --> 00:36:34.104
<v Brent>Did you make it?

00:36:34.895 --> 00:36:35.405
<v Chris>We did.

00:36:35.405 --> 00:36:35.895
<v Wes>We did.

00:36:35.895 --> 00:36:36.583
<v Chris>Right, yeah.

00:36:36.937 --> 00:36:41.725
<v Wes>I'm on the verge of joining the ranks of Tesla Nation. I look forward to trading stories.

00:36:41.725 --> 00:36:42.695
<v Chris>Greg the lawyer.

00:36:42.835 --> 00:36:42.915
<v Brent>Wow.

00:36:43.375 --> 00:36:46.225
<v Chris>It's, you know, I don't like to talk about it because I don't like becoming,

00:36:46.225 --> 00:36:50.817
<v Chris>sounding like I'm a salesperson because I don't, you know. But the self-driving will change your life.

00:36:52.315 --> 00:36:56.690
<v Chris>The car drove us all the way from my farm to here.

00:36:57.143 --> 00:37:01.295
<v Chris>I overtook twice, not for safety reasons, but just because I wanted to pass a guy.

00:37:02.275 --> 00:37:05.276
<v Brent>For unsafety reasons. Yeah, for the opposite of safety reasons.

00:37:05.432 --> 00:37:11.195
<v Chris>Speed reasons but otherwise the car drove us so for probably a total of 30 seconds i drove.

00:37:11.195 --> 00:37:15.245
<v Wes>Through the mountains through long hours of no connectivity.

00:37:15.245 --> 00:37:20.549
<v Chris>Yeah hours of no cell signal driving and navigating just fine um and the energy you get,

00:37:21.361 --> 00:37:25.215
<v Chris>versus a 12-hour drive where you do all the driving is it's incredible right

00:37:25.215 --> 00:37:27.915
<v Chris>like you still have the energy to set up your campsite interact with the people

00:37:27.915 --> 00:37:31.185
<v Chris>you're coming to see and say hi to them like in the past when i'd take the rv

00:37:31.185 --> 00:37:32.640
<v Chris>i'd show up and I'd be like, Hadiyah, can you just,

00:37:33.401 --> 00:37:37.115
<v Chris>hold people off for 10 minutes so I can just have 10 minutes of quiet to get my shit together?

00:37:37.995 --> 00:37:41.205
<v Chris>Because it's tough. It's tough when you drive a rig like that for 12 hours.

00:37:41.205 --> 00:37:44.703
<v Chris>But in the car, it drives itself that's climate controlled.

00:37:44.813 --> 00:37:47.577
<v Chris>It's so easy, Greg. You're going to love it.

00:37:48.320 --> 00:37:50.235
<v Chris>You're going to love it, Greg. Tell us how it goes, okay?

00:37:50.235 --> 00:37:53.205
<v Brent>Greg, make sure you use Chris's referral code.

00:37:53.205 --> 00:37:55.795
<v Chris>I should have. Greg, I probably have one, Greg.

00:37:56.595 --> 00:37:57.615
<v Brent>Is that a really thing?

00:37:58.795 --> 00:38:01.704
<v Chris>I don't know. Whomever whiz comes in with a row McDuck's.

00:38:03.172 --> 00:38:07.300
<v Chris>What I'm looking for is a back-end database with structured data managed by

00:38:07.300 --> 00:38:10.890
<v Chris>an LLM. A series of wiki pages in addition to adding their own natural language

00:38:10.890 --> 00:38:12.913
<v Chris>relationships and semantic info.

00:38:13.285 --> 00:38:17.150
<v Chris>It will then dynamically be referenced and reference the structured data when

00:38:17.150 --> 00:38:18.860
<v Chris>appropriate. What you got?

00:38:19.280 --> 00:38:20.460
<v Brent>That's a challenge.

00:38:20.460 --> 00:38:22.520
<v Wes>Yeah, I don't know if I have that, but I want that now.

00:38:22.580 --> 00:38:24.590
<v Chris>Isn't that kind of log sack in a way? Yeah, it's close.

00:38:24.590 --> 00:38:27.730
<v Wes>I don't know if it's exactly that with the wiki pages, but it does do a lot

00:38:27.730 --> 00:38:29.540
<v Wes>of nice stuff with references in the graph.

00:38:29.540 --> 00:38:30.060
<v Chris>All right.

00:38:30.480 --> 00:38:33.318
<v Wes>And it is now using a backend database and tons of structured data.

00:38:33.445 --> 00:38:33.940
<v Chris>It's getting there.

00:38:33.940 --> 00:38:35.169
<v Wes>Including a nice query language.

00:38:35.495 --> 00:38:39.410
<v Chris>Mm-hmm, mm-hmm. Yeah, we, yeah. Patient tech in our chat room says,

00:38:39.410 --> 00:38:42.520
<v Chris>wait, you guys went without a follow, without a map that we could follow? That's true.

00:38:42.520 --> 00:38:43.740
<v Wes>Yeah, we didn't do a tracker.

00:38:44.260 --> 00:38:47.510
<v Chris>Two reasons. It wasn't a race. Brenda was already here. But the other reason

00:38:47.510 --> 00:38:50.960
<v Chris>is a ginormous portion of our drive does not have cells in the chat.

00:38:50.980 --> 00:38:51.370
<v Brent>Yeah, that's true.

00:38:51.400 --> 00:38:52.650
<v Chris>So we were just out of it.

00:38:52.650 --> 00:38:54.920
<v Brent>Well, weren't you getting a Starlink? Didn't that?

00:38:54.920 --> 00:38:57.370
<v Chris>Shut up, shut up. That's too soon.

00:38:57.370 --> 00:39:03.500
<v Brent>Gene Bean sends in a row of ducks. Saying, for Linux Unplugged 675,

00:39:03.500 --> 00:39:06.887
<v Brent>have you played with the BBS on MeshTastic yet?

00:39:07.862 --> 00:39:09.040
<v Chris>Is this a thing?

00:39:09.040 --> 00:39:11.635
<v Wes>Apparently, Gene does not send us a link.

00:39:11.740 --> 00:39:16.120
<v Chris>I mean, I see a Reddit thread introducing, I think this kind of rings a bell,

00:39:16.120 --> 00:39:21.080
<v Chris>actually. Introducing MeshBBS, bringing old-school open-source BBS fun to MeshTastic.

00:39:21.600 --> 00:39:24.190
<v Chris>This is 10 months ago. I've been working on a project called MeshBBS.

00:39:24.190 --> 00:39:25.944
<v Chris>I think this was sent in. This is ringing a bell now.

00:39:26.479 --> 00:39:29.610
<v Chris>And I think it's ready to share. MeshBBS is a lightweight, text-based bulletin

00:39:29.610 --> 00:39:35.130
<v Chris>board system. we know PBS is okay Gene you may have just created Gene strikes

00:39:35.130 --> 00:39:38.950
<v Chris>again you may have just created a little project Gene how awesome would it be

00:39:38.950 --> 00:39:40.405
<v Chris>if we could BBS over Mesh-tastic.

00:39:40.863 --> 00:39:41.450
<v Brent>Jeff get on it.

00:39:41.821 --> 00:39:51.148
<v Chris>Yeah PJ geez Brian from Boise thank you Gene Brian from Boise comes in with 4,444 Satushers,

00:39:53.800 --> 00:39:57.740
<v Chris>Our family took a trip, our first multi-state EV road trip, last week.

00:39:57.740 --> 00:40:01.480
<v Chris>We stopped in La Grande, Oregon at Electrify America Station with chargers labeled

00:40:01.480 --> 00:40:03.199
<v Chris>for 150 kilowatt and 350 kilowatt.

00:40:03.547 --> 00:40:07.529
<v Chris>They maxed out at 50 and 80. The screen wouldn't respond, so I had to call support.

00:40:08.139 --> 00:40:11.370
<v Chris>Oh, man. When I went down the road to a charge point station and started charging

00:40:11.370 --> 00:40:15.041
<v Chris>through the Kia app, I got decent speeds, and then we were on our way.

00:40:15.465 --> 00:40:18.200
<v Chris>I took a quick trip to Portland, or I'm sorry, Port Townsend,

00:40:18.200 --> 00:40:21.320
<v Chris>Washington, where the Level 3 charging was fast enough. Scan a QR code,

00:40:21.320 --> 00:40:23.210
<v Chris>pay it directly in the browser. No account needed.

00:40:23.210 --> 00:40:23.580
<v Wes>Okay.

00:40:23.580 --> 00:40:23.980
<v Brent>Nice.

00:40:24.560 --> 00:40:29.280
<v Chris>So on our ride out, every stop was a different vendor of EV.

00:40:29.580 --> 00:40:32.340
<v Brent>That's right. So that is painful.

00:40:32.340 --> 00:40:33.150
<v Wes>Sampling them all.

00:40:33.150 --> 00:40:36.757
<v Chris>And ironically, the only one we had a problem, one did overheat,

00:40:36.931 --> 00:40:39.200
<v Chris>but it was like 113 degrees Fahrenheit outside.

00:40:39.200 --> 00:40:40.030
<v Brent>That's not that hot.

00:40:40.030 --> 00:40:41.040
<v Chris>I know, but it did.

00:40:41.040 --> 00:40:42.160
<v Brent>They should be designed for this.

00:40:42.160 --> 00:40:44.450
<v Chris>Also, the power hose was like totally screwed up.

00:40:44.450 --> 00:40:48.150
<v Wes>We were able to just move to like another one in the lot and charge.

00:40:48.150 --> 00:40:48.670
<v Brent>So not so bad.

00:40:48.670 --> 00:40:49.790
<v Chris>But the big embarrassment of

00:40:49.790 --> 00:40:54.360
<v Chris>the trip was Rivian. Rivian, for non-Rivian owners, was such a facepalm.

00:40:54.680 --> 00:40:59.512
<v Chris>Their recent app UI update actually removes the ability to do charging.

00:40:59.697 --> 00:41:01.580
<v Chris>There's nothing in the UI to start a charge.

00:41:01.580 --> 00:41:05.460
<v Wes>I know that sounds like it can't possibly be true, but it is.

00:41:07.380 --> 00:41:11.377
<v Chris>Brian, it was so bad because we were out there in 113 degrees and we cannot

00:41:11.749 --> 00:41:15.590
<v Chris>figure out this app. And we think maybe we have like heat delirium or something.

00:41:15.590 --> 00:41:20.510
<v Chris>Like there's just no way that Rivian, an actual company that builds cars.

00:41:20.510 --> 00:41:23.370
<v Wes>Nice car. I mean, we've seen in lights and reviews. It's crazy.

00:41:23.370 --> 00:41:23.840
<v Chris>It was crazy.

00:41:23.940 --> 00:41:26.600
<v Wes>And the screen is like impossible to read in the glaring sunlight.

00:41:26.600 --> 00:41:31.250
<v Chris>Yeah, it's so bad. So bad. So like when you had a chance to go to a supercharger,

00:41:31.250 --> 00:41:34.880
<v Chris>it was like, oh, that's work. We'll go that. We'll go even out of our way if

00:41:34.880 --> 00:41:37.290
<v Chris>we had to. It was because you just know you're going to plug in. It's going to work.

00:41:37.766 --> 00:41:41.340
<v Chris>This was wild. But other than that, it was actually really good. And,

00:41:43.420 --> 00:41:47.326
<v Chris>even with that, we still had sufficient coverage where we were never, ever, ever, ever,

00:41:48.028 --> 00:41:50.713
<v Chris>in like the red we were always plenty of charge.

00:41:50.713 --> 00:41:54.523
<v Wes>Yeah you we had built out a whole plan of like try to charge here we expect

00:41:54.523 --> 00:41:57.783
<v Wes>to be at this you know a depleted charge level when we get to the next stop

00:41:57.783 --> 00:41:59.293
<v Wes>and we're almost always way above that.

00:41:59.293 --> 00:42:03.453
<v Chris>The situation is is that you charge so fast these days that it really isn't

00:42:03.453 --> 00:42:06.848
<v Chris>a big deal to just put a little extra buffer on there so we always had extra buffer.

00:42:07.021 --> 00:42:09.313
<v Brent>So you didn't have any like distance anxiety and all.

00:42:09.313 --> 00:42:10.623
<v Chris>Never never once.

00:42:10.623 --> 00:42:12.813
<v Brent>More just compatibility with the.

00:42:12.813 --> 00:42:16.203
<v Chris>Charger anxiety yeah okay interesting but even when that charger didn't work

00:42:16.203 --> 00:42:21.905
<v Chris>because we had built up such a buffer we just moved on to the next one nice Wes you want to take Dan.

00:42:22.046 --> 00:42:23.723
<v Wes>Yeah Dan comes in with a hundred.

00:42:23.723 --> 00:42:24.583
<v Chris>Dollars oh.

00:42:31.422 --> 00:42:35.291
<v Wes>Since Linux Unplugged is having revenue problems, I'd throw a few bucks extra.

00:42:35.291 --> 00:42:35.731
<v Chris>Thank you.

00:42:35.731 --> 00:42:36.671
<v Wes>Can I advertise?

00:42:37.071 --> 00:42:37.361
<v Chris>Yes.

00:42:37.361 --> 00:42:42.821
<v Wes>Once a month, I'll tell you my favorite floss. This month, try out Street Complete for Android.

00:42:43.117 --> 00:42:46.199
<v Wes>It's a gamified way to make OpenStreetMap better.

00:42:46.350 --> 00:42:47.651
<v Chris>Street Complete.

00:42:47.651 --> 00:42:48.985
<v Wes>One more way to ditch Google.

00:42:49.235 --> 00:42:50.511
<v Chris>I like that it's gamified.

00:42:50.511 --> 00:42:51.131
<v Wes>That's cool.

00:42:51.431 --> 00:42:51.851
<v Brent>Make it fun.

00:42:52.491 --> 00:42:54.041
<v Chris>Honestly, I don't know why more

00:42:54.041 --> 00:42:57.811
<v Chris>people don't boost in and shout out a business or a project they love.

00:42:58.291 --> 00:43:02.651
<v Chris>It just seems like a brilliant use of the medium to me. So, absolutely do it.

00:43:02.651 --> 00:43:05.251
<v Chris>So, streetcomplete at streetcomplete.app.

00:43:05.878 --> 00:43:09.491
<v Chris>Help improve OpenStreetMap with StreetComplete. This app finds missing map data

00:43:09.491 --> 00:43:12.345
<v Chris>in your vicinity and displays it on a map as a quest.

00:43:12.565 --> 00:43:17.250
<v Chris>Solve each quest by visiting the location on the map and answering simple questions to update the map.

00:43:17.604 --> 00:43:20.501
<v Chris>The info you enter is directly added to OpenStreetMap in your name without the

00:43:20.501 --> 00:43:21.702
<v Chris>need to use another editor.

00:43:22.010 --> 00:43:25.991
<v Brent>That's awesome. I have to say, I used this app.

00:43:26.431 --> 00:43:28.131
<v Wes>Oh, you've been hiding it from us.

00:43:28.371 --> 00:43:32.391
<v Brent>Maybe 10 years ago. something like a super long time ago because I was trying

00:43:32.391 --> 00:43:36.871
<v Brent>to push for better maps on Android. I mean, we're still, we can do better.

00:43:37.191 --> 00:43:39.204
<v Chris>Well, we need better maps outside of Google.

00:43:39.760 --> 00:43:45.981
<v Brent>Yes. And at that time, the OpenStreetMap data for North America was so-so compared

00:43:45.981 --> 00:43:48.921
<v Brent>to Europe, right? Because it was quite a bit more popular there.

00:43:48.921 --> 00:43:53.211
<v Brent>So I was trying to do my part. And I will have to say it was a great app back then.

00:43:53.425 --> 00:43:55.411
<v Brent>I couldn't even imagine how great it is now.

00:43:55.891 --> 00:43:58.591
<v Brent>It's probably pretty awesome. So I'm going to give this a shot.

00:43:59.651 --> 00:44:04.130
<v Chris>Great. Senior Smile comes in with a member boost.

00:44:06.202 --> 00:44:13.109
<v Chris>Now that Brent has dropped plain text accounting, I want an entire segment on it. Oh, senior smile.

00:44:14.689 --> 00:44:17.869
<v Chris>I have a soft spot. I used Microsoft Money before in 2005.

00:44:17.869 --> 00:44:18.389
<v Brent>Oh, my goodness.

00:44:18.569 --> 00:44:19.919
<v Wes>Microsoft Money. I forgot about that.

00:44:20.089 --> 00:44:23.279
<v Chris>Early Money was so much better than Quicken back then. I mean,

00:44:23.279 --> 00:44:24.449
<v Chris>for my use, it was incredible.

00:44:24.449 --> 00:44:25.028
<v Brent>Why'd you get rid of it?

00:44:25.138 --> 00:44:28.220
<v Chris>Well, I wasn't really a Windows user, but when I got to play around with it, I was always blown away.

00:44:28.551 --> 00:44:33.949
<v Chris>I converted to GNU Cash for a while, then KMyMoney, and then BeanCount plus

00:44:33.949 --> 00:44:37.160
<v Chris>Fava. And now I'm back to K-Money plus H-Ledger.

00:44:37.358 --> 00:44:40.929
<v Chris>What are you all doing for your personal or business accounting?

00:44:41.749 --> 00:44:44.578
<v Chris>Well, mine's called... I hired out.

00:44:45.109 --> 00:44:46.819
<v Brent>You have a human doing it? You don't need software?

00:44:46.819 --> 00:44:48.810
<v Chris>Yeah, but mine's a little more complicated than the average bear.

00:44:49.469 --> 00:44:49.738
<v Brent>Wes?

00:44:50.829 --> 00:44:54.319
<v Wes>I have used plain text accounting in the past.

00:44:54.319 --> 00:44:58.019
<v Wes>Right now, my accounting needs are fairly simple.

00:44:58.019 --> 00:45:02.608
<v Wes>So I don't have a crazy system. But especially now with the rise of more tools to help,

00:45:03.130 --> 00:45:06.479
<v Wes>I was actually considering I used the original Ledger although I've played with

00:45:06.479 --> 00:45:10.429
<v Wes>HLedger more than a few times and it does seem like now that like manipulating

00:45:10.429 --> 00:45:14.109
<v Wes>the data double checking things writing scripts around it is easier it kind

00:45:14.109 --> 00:45:16.453
<v Wes>of might be the time where I go back to it.

00:45:17.889 --> 00:45:23.523
<v Brent>I don't feel so bad about my decision then because I was dabbling with this plain text accounting,

00:45:25.660 --> 00:45:27.189
<v Brent>because it follows all of our principles guys it.

00:45:27.189 --> 00:45:28.149
<v Wes>Sure does this.

00:45:28.149 --> 00:45:34.640
<v Brent>Is exactly what I want and I but then I realized I guess, much like Wes, which surprises me that,

00:45:35.946 --> 00:45:41.259
<v Brent>I don't have any of the programming skills to bring up my own reports for the

00:45:41.259 --> 00:45:44.147
<v Brent>things I wanted to know around my own finances.

00:45:44.890 --> 00:45:47.399
<v Brent>And so that's the number one thing that kept me from using it.

00:45:47.399 --> 00:45:51.869
<v Brent>But these days, I feel like we've got several robots that are way better at this than I am.

00:45:51.869 --> 00:45:54.919
<v Wes>It's interesting. My main reason was not that I think I could do.

00:45:54.919 --> 00:45:56.409
<v Wes>Mine was mostly just I didn't,

00:45:58.432 --> 00:46:01.427
<v Wes>I didn't have enough things where I needed the granularity, right?

00:46:01.427 --> 00:46:04.147
<v Wes>So it's like, I want to do a high level budget to understand where my cash flows

00:46:04.147 --> 00:46:08.067
<v Wes>are going. But the idea of making sure that each record is accurate was not

00:46:08.067 --> 00:46:10.497
<v Wes>the priority. So that was the part where I was like, that's not really worth

00:46:10.497 --> 00:46:13.148
<v Wes>it. I don't need the granularity right now. If I did, then I would.

00:46:14.077 --> 00:46:15.597
<v Wes>But you're right. Reporting is a whole other aspect.

00:46:16.985 --> 00:46:22.027
<v Chris>You know, I just realized, boy, maybe if I had a cash flow. We do need an income

00:46:22.027 --> 00:46:25.367
<v Chris>to track. All right. We got to move on, you guys. Good question, though.

00:46:25.367 --> 00:46:27.299
<v Wes>We should maybe do a segment in the future. Sure.

00:46:27.299 --> 00:46:29.437
<v Brent>Moan sent in a members boost.

00:46:31.261 --> 00:46:34.905
<v Brent>It reads, I also recently wanted to change up my notes app. Oh, dangerous.

00:46:35.316 --> 00:46:40.375
<v Brent>Obsidian is great, but I wanted an open source, simple, and got the struct from

00:46:40.375 --> 00:46:45.955
<v Brent>the OS like Obsidian. So I settled on VS Codium with a custom workspace that

00:46:45.955 --> 00:46:50.300
<v Brent>only has one tab, no sidebars, and a search bar at the top.

00:46:50.468 --> 00:46:52.745
<v Wes>Interesting. Custom little environment, kind of.

00:46:52.745 --> 00:46:55.535
<v Chris>I like that for a dedicated editor. Seems like it gets tough,

00:46:55.535 --> 00:46:56.975
<v Chris>like, in the mobile application.

00:46:56.975 --> 00:46:57.450
<v Brent>Right.

00:46:58.095 --> 00:47:00.865
<v Chris>But for a dedicated sit-down, like, a notes PC in the garage.

00:47:02.145 --> 00:47:05.105
<v Brent>I understand this. I've wanted like a dedicated application.

00:47:05.105 --> 00:47:08.545
<v Brent>I'm using Kate these days and have for a very long time.

00:47:08.905 --> 00:47:11.285
<v Brent>But I do many things in Kate. But having like one dedicated,

00:47:11.285 --> 00:47:14.375
<v Brent>like you always bring it up, maybe even with a keyboard shortcut and it's always

00:47:14.375 --> 00:47:15.951
<v Brent>your notes app. That sounds sexy.

00:47:16.509 --> 00:47:21.814
<v Wes>Anton comes in with a member boost. I'm thinking of trying Hermes at work.

00:47:22.105 --> 00:47:25.495
<v Wes>To be useful, I need to teach you to be a subject matter expert by feeding it

00:47:25.495 --> 00:47:29.199
<v Wes>a bunch of vendor docs, rdocs, example configs, that kind of thing.

00:47:29.378 --> 00:47:31.205
<v Wes>Can it learn that much information?

00:47:31.685 --> 00:47:33.265
<v Wes>Any tips for giving it lots of data?

00:47:34.525 --> 00:47:36.345
<v Chris>Well, do you have any before I give mine?

00:47:36.345 --> 00:47:36.824
<v Wes>Go for it.

00:47:36.935 --> 00:47:41.905
<v Chris>So it's going to kind of depend on what the subject matter is format, right?

00:47:41.905 --> 00:47:45.575
<v Chris>So if you could get all of the things you wanted to know in a really easy,

00:47:45.575 --> 00:47:48.400
<v Chris>readable format, maybe structured data or even simple markdown,

00:47:49.445 --> 00:47:50.725
<v Chris>you're going to have some options.

00:47:50.725 --> 00:47:53.785
<v Chris>So here's what we do. And this is just going to be our workflow.

00:47:53.785 --> 00:47:58.965
<v Chris>But we want to index every podcast, what we've talked about,

00:47:58.965 --> 00:48:03.115
<v Chris>what projects we've talked about, what picks we've made, what we said about

00:48:03.115 --> 00:48:04.816
<v Chris>a certain subject, what predictions we made.

00:48:05.199 --> 00:48:07.785
<v Chris>And so we're using a tool called QMD.

00:48:08.589 --> 00:48:14.515
<v Chris>And QMD is like a vector index and search tool that takes your markdown or your structured data.

00:48:14.515 --> 00:48:19.455
<v Chris>And it sort of creates these relationships in the search database that then

00:48:19.455 --> 00:48:24.292
<v Chris>the agent or you using the command line can go back. And so, for example,

00:48:25.064 --> 00:48:30.751
<v Chris>We could go back and we could say, you know, besides episode 677,

00:48:30.751 --> 00:48:32.040
<v Chris>when else did Anton boost in?

00:48:32.551 --> 00:48:36.071
<v Chris>And the agent would go back and find that specific thing for us by using the

00:48:36.071 --> 00:48:37.915
<v Chris>transcripts, which then have been vectorized.

00:48:38.275 --> 00:48:41.511
<v Chris>And then we use QMD as the front end to search that and query it and index it.

00:48:42.042 --> 00:48:45.032
<v Chris>So QMD could be one route. I'm sure there's probably a thousand ways to solve this.

00:48:45.165 --> 00:48:50.481
<v Wes>I think the core piece is at that scale, you can't just rely on it all being in context.

00:48:50.481 --> 00:48:50.831
<v Chris>Yes.

00:48:50.831 --> 00:48:52.881
<v Wes>Unless you have some crazy giant context model.

00:48:52.881 --> 00:48:56.651
<v Chris>Yeah, what you're going to need to rely on is skills to access a storage that's

00:48:56.651 --> 00:48:57.721
<v Chris>quickly and retrievable, right?

00:48:57.721 --> 00:49:01.521
<v Wes>So as you have it go through all of that, it needs to be generating some sort

00:49:01.521 --> 00:49:04.032
<v Wes>of persistent on-disk output, whether that's,

00:49:04.891 --> 00:49:08.341
<v Wes>you know, an LLM wiki-style thing, whatever kind of structure you want it to

00:49:08.341 --> 00:49:12.131
<v Wes>have, and then also perhaps is maintaining a database, or the harness is automatically

00:49:12.131 --> 00:49:14.941
<v Wes>doing it, or you're having it feed it into QMD directly.

00:49:14.941 --> 00:49:17.771
<v Wes>There's a lot of options there, but essentially you could kind of make sure

00:49:17.771 --> 00:49:21.481
<v Wes>that it's building a structure so that in the future, it has clear skills and

00:49:21.481 --> 00:49:24.895
<v Wes>clear storage of where everything, when it doesn't know something,

00:49:25.104 --> 00:49:28.192
<v Wes>it has clear guidance for how to go learn it so that it has it fresh in that context.

00:49:29.131 --> 00:49:33.831
<v Chris>Yeah. All right. James Mudd comes in with a member boost. Loving the EV bonus,

00:49:33.831 --> 00:49:37.972
<v Chris>working as a dev at a large UK CPO. All of your complaints are valid.

00:49:38.518 --> 00:49:41.873
<v Chris>But I think maybe things are a bit better here than they are in the U.S.

00:49:42.186 --> 00:49:46.461
<v Chris>Not sure if you know about Octopus Electroverse, but it's great for charging

00:49:46.461 --> 00:49:50.531
<v Chris>stops and planning Android Auto and CarPlay. electroverse.com.

00:49:50.531 --> 00:49:52.731
<v Wes>That's a great name. I'm not familiar, but cool.

00:49:52.731 --> 00:49:57.332
<v Chris>Yeah. Uh, I have been using a better route planner a bit, but, um,

00:49:59.212 --> 00:50:03.252
<v Chris>I sort of went overboard and created the ultimate front end for my agent.

00:50:03.252 --> 00:50:08.102
<v Chris>So it's basically able to query every EV database that has an API,

00:50:08.102 --> 00:50:12.612
<v Chris>including government databases. And then the big unlock that I think was the

00:50:12.612 --> 00:50:16.282
<v Chris>TomTom API. Because the TomTom API turns out to have a ton of stuff about EV

00:50:16.282 --> 00:50:18.073
<v Chris>and charging stations and all this kind of stuff.

00:50:18.270 --> 00:50:20.412
<v Wes>So you just did what Anton was asking about?

00:50:20.412 --> 00:50:22.769
<v Chris>I guess. Yeah. I guess so.

00:50:23.210 --> 00:50:24.592
<v Brent>You're welcome, Anton. You sharing that thing?

00:50:26.092 --> 00:50:26.882
<v Chris>You want to take Tristan?

00:50:26.882 --> 00:50:29.932
<v Brent>Sure. Tristan sends in a member boost Oh,

00:50:31.969 --> 00:50:37.636
<v Brent>About music playing boosts. Listening to this episode on an iPod.

00:50:37.636 --> 00:50:38.306
<v Chris>Oh, wow.

00:50:38.306 --> 00:50:38.896
<v Brent>Wow.

00:50:39.656 --> 00:50:41.176
<v Chris>Still spinning rust? That's incredible.

00:50:41.936 --> 00:50:42.536
<v Brent>You can upgrade them.

00:50:42.536 --> 00:50:43.811
<v Chris>Yeah, I know, but still.

00:50:43.979 --> 00:50:44.473
<v Wes>But did he?

00:50:44.659 --> 00:50:44.936
<v Chris>Did he, yeah.

00:50:45.396 --> 00:50:49.076
<v Brent>Earlier this year, I started Music Walks with my three-year-old.

00:50:49.916 --> 00:50:53.256
<v Brent>Bought him a cheap MP3 player and just set off my old iPod.

00:50:53.714 --> 00:50:59.636
<v Brent>The member URL for this podcast is an age-nix secret in my nix config and syncs

00:50:59.636 --> 00:51:02.386
<v Brent>to my iPod when I plug it in overnight.

00:51:02.386 --> 00:51:04.636
<v Chris>That, well done, sir.

00:51:04.636 --> 00:51:05.136
<v Brent>Wow.

00:51:05.456 --> 00:51:09.356
<v Chris>Wow, that is very, very impressive.

00:51:10.316 --> 00:51:11.298
<v Wes>Showing us the way.

00:51:12.064 --> 00:51:12.876
<v Chris>Mm-hmm. Mm-hmm.

00:51:15.344 --> 00:51:20.386
<v Chris>Wow. Anonymous comes in with a member boost. If an anti-AI project gets an AI

00:51:20.386 --> 00:51:24.176
<v Chris>contribution, well, that's really no different than a project with a CLA getting

00:51:24.176 --> 00:51:26.145
<v Chris>a patch from someone who hasn't signed the CLA.

00:51:26.475 --> 00:51:29.246
<v Chris>You inform them why you can't accept it, and if they don't comply,

00:51:29.246 --> 00:51:31.868
<v Chris>optionally treat the bug like a feature request without patch.

00:51:32.501 --> 00:51:35.686
<v Chris>That kind of seems like a pretty reasonable, I suppose it depends on the severity,

00:51:35.686 --> 00:51:37.995
<v Chris>but that seems kind of like a reasonable view.

00:51:37.995 --> 00:51:40.826
<v Wes>Yeah, I think especially for maybe like a feature request or a big,

00:51:40.826 --> 00:51:42.677
<v Wes>yeah, patches. And hey, look, I added this thing.

00:51:43.148 --> 00:51:45.746
<v Wes>I think where it does get trickier, like you're saying is, hey,

00:51:45.746 --> 00:51:48.516
<v Wes>I noticed this flaw in the code base and here's a patch, but are you going to

00:51:48.516 --> 00:51:50.646
<v Wes>throw the whole thing out or are you still going to fix the flaw?

00:51:50.646 --> 00:51:54.296
<v Wes>Do you do the implementation work yourself? Do you rely on that code and fix

00:51:54.296 --> 00:51:56.098
<v Wes>it up yourself or do you just throw it all away?

00:51:56.609 --> 00:52:00.386
<v Chris>Yeah, the other wrinkle there, like Linus has said too is like if one LM tool

00:52:00.386 --> 00:52:04.116
<v Chris>has discovered your zero day or whatever you can probably assume another one

00:52:04.116 --> 00:52:07.546
<v Chris>has or will very soon so there is a bit of urgency to it.

00:52:07.889 --> 00:52:11.046
<v Wes>And that's where there's maybe a distinction between sort of stuff you asked

00:52:11.046 --> 00:52:13.780
<v Wes>for and did yourself and then stuff that just shows up at your door,

00:52:15.247 --> 00:52:17.537
<v Wes>Eric the Magician comes in with a member boost.

00:52:17.537 --> 00:52:17.901
<v Chris>Hey, Eric.

00:52:18.499 --> 00:52:23.287
<v Wes>Eric says, no to ads. Speaking about our ad-free membership.

00:52:23.287 --> 00:52:23.578
<v Chris>Yeah.

00:52:23.681 --> 00:52:28.917
<v Wes>It took me too long to realize, though, that a membership discount meant less money for you.

00:52:28.917 --> 00:52:29.318
<v Chris>Oh.

00:52:29.614 --> 00:52:32.667
<v Wes>I have for years now, though, tried to increase what I pay each month.

00:52:32.667 --> 00:52:35.767
<v Wes>It's not a lot, but I hope this can nudge others in the same direction.

00:52:35.767 --> 00:52:36.387
<v Chris>Thank you, Eric.

00:52:36.387 --> 00:52:36.827
<v Wes>Yeah, thank you.

00:52:36.827 --> 00:52:37.327
<v Brent>That's very kind.

00:52:37.327 --> 00:52:38.597
<v Wes>Thank you for the support for years, too.

00:52:38.597 --> 00:52:42.017
<v Chris>Really, really do appreciate it because, like, you know, starting to build a

00:52:42.017 --> 00:52:44.933
<v Chris>leg is here at the show. We want to keep going. and you guys are making it possible.

00:52:45.096 --> 00:52:49.747
<v Chris>I'll wrap this up. ATX BBQ Nerd comes in and says, thanks for the AI coverage.

00:52:49.747 --> 00:52:50.959
<v Chris>You keep it grounded and useful.

00:52:51.423 --> 00:52:53.167
<v Chris>Linux feels more and more punk every year.

00:52:53.867 --> 00:52:56.687
<v Chris>That really, when we saw that come in, I was like, that really feels true.

00:52:57.507 --> 00:53:00.584
<v Chris>That really resonated. Thank you very much. Appreciate that, ATX BBQ.

00:53:00.990 --> 00:53:03.837
<v Chris>Thank you, everybody who boosted, including those of you who streamed those

00:53:03.837 --> 00:53:07.242
<v Chris>sats. 14 of you did, and collectively, not a bad little boost yourselves.

00:53:07.585 --> 00:53:12.031
<v Chris>You stacked 32,539 satoshis.

00:53:15.667 --> 00:53:20.222
<v Chris>You will in just a moment once you break it all down and you combine that with our boosters,

00:53:20.681 --> 00:53:23.467
<v Chris>wow you know you just never know what direction it's going to go look at this

00:53:23.467 --> 00:53:26.787
<v Chris>you never do know you don't I thought for sure we were going to come in light

00:53:26.787 --> 00:53:30.747
<v Chris>this week on a travel week too because it happens so often but no you all stepped

00:53:30.747 --> 00:53:33.727
<v Chris>up and you supported us when you combine the Fiat boosts and you value them

00:53:33.727 --> 00:53:35.157
<v Chris>at the current SATs to USD

00:53:35.488 --> 00:53:40.834
<v Chris>our total for this week when you combine it all together is 568,249,

00:53:42.169 --> 00:53:43.203
<v Chris>Satoshis is,

00:53:46.634 --> 00:53:49.610
<v Chris>Not going to complain about that at all. Heck no. Thank you,

00:53:49.610 --> 00:53:51.130
<v Chris>everybody, very, very much.

00:53:51.130 --> 00:53:54.540
<v Chris>It does mean the world to us, and we really appreciate everybody taking advantage

00:53:54.540 --> 00:53:56.387
<v Chris>of boost.jupiterbroadcasting.com,

00:53:56.700 --> 00:53:59.670
<v Chris>and we still have a good batch coming in through the traditional podcasting

00:53:59.670 --> 00:54:03.610
<v Chris>2.0 apps, and great to see the members taking advantage of their free member

00:54:03.610 --> 00:54:06.836
<v Chris>perk and getting to send a free boost every single episode. We love seeing that, too.

00:54:07.740 --> 00:54:10.990
<v Chris>Thank you to our members, and thank you to everybody who boosted this here value-for-value

00:54:10.990 --> 00:54:12.739
<v Chris>podcast. We really appreciate you.

00:54:13.047 --> 00:54:17.820
<v Chris>Yes, we do have dynamic ads. No, they don't pay much, and they're not like the traditional ad market.

00:54:17.820 --> 00:54:23.540
<v Chris>And we think with this combination, we can continue on. And I hope,

00:54:23.540 --> 00:54:27.610
<v Chris>I call it, I hope, we'll see, but I call it preventing the Linux magazine fate

00:54:27.610 --> 00:54:28.969
<v Chris>happening to Linux podcasts.

00:54:30.310 --> 00:54:33.526
<v Chris>Thank you, everybody. And with that, you know what? It's time for the picks.

00:54:35.569 --> 00:54:37.433
<v Chris>And, Wes, you found us a Pipewire pick.

00:54:37.949 --> 00:54:40.588
<v Wes>Yeah, I thought you might need it. You know, we're doing remote streaming.

00:54:40.588 --> 00:54:41.978
<v Wes>We're doing more audio stuff.

00:54:41.978 --> 00:54:46.728
<v Chris>Could not have been better timed. It is also a modern GTK LibWadia application.

00:54:46.728 --> 00:54:48.638
<v Wes>Yeah, it's a control center for Pipewire.

00:54:48.638 --> 00:54:50.848
<v Chris>Ooh. Tell me about it.

00:54:50.848 --> 00:54:52.758
<v Wes>Really, for any Linux distro running Pipewire.

00:54:52.758 --> 00:54:52.938
<v Chris>Yeah.

00:54:52.938 --> 00:54:57.112
<v Wes>Right now, it's packaged in the AUR. There's install instructions for Fedora, Ubuntu, and Debian.

00:54:57.367 --> 00:55:00.968
<v Wes>Not sure if it's in Nix yet, but surely, you know, we can fix that.

00:55:00.968 --> 00:55:01.535
<v Chris>Matter of time.

00:55:01.674 --> 00:55:06.158
<v Wes>Yeah. it does uh a lot uh i guess you could say just new in the most recent

00:55:06.538 --> 00:55:10.378
<v Wes>version there's now a patch bay a live node graph of the whole session audio

00:55:10.378 --> 00:55:16.674
<v Wes>and midi it's got a live monitor per service cpu and ram sparklines x-run and dsp load meters

00:55:17.017 --> 00:55:21.602
<v Wes>it now has effects insert racks of ladspa or lv2 plugins into the signal path

00:55:22.036 --> 00:55:26.178
<v Wes>virtual devices create null sinks virtual microphones combined aggregate devices

00:55:26.178 --> 00:55:31.298
<v Wes>and buses and submixes each runs its own tiny process temporary or persistent

00:55:31.298 --> 00:55:35.290
<v Wes>you choose, so creating or removing one never interrupts playback.

00:55:35.846 --> 00:55:38.138
<v Chris>The new patch bay they're working on is looking really good.

00:55:39.458 --> 00:55:43.346
<v Chris>I think it may eventually replace QP Graph that I use right now.

00:55:43.695 --> 00:55:46.868
<v Brent>These projects remind me that we're not the only pipeware nerds out there.

00:55:46.868 --> 00:55:51.699
<v Chris>I know, it's great to see. The live monitoring looks good. What I think stands out to me,

00:55:52.622 --> 00:55:57.979
<v Chris>is the way the developer has managed to put together a pretty clean,

00:55:58.397 --> 00:56:01.956
<v Chris>easy-to-follow UI for something that is extremely complicated and has a ton

00:56:01.956 --> 00:56:04.106
<v Chris>of UI elements. There's just so much.

00:56:04.106 --> 00:56:06.356
<v Wes>And have you ever seen the output of some of the pipework tools?

00:56:06.356 --> 00:56:11.176
<v Wes>You get just gobs of JSON. And yeah, so this not only has a bunch of that exposed,

00:56:11.176 --> 00:56:15.326
<v Wes>and you can do a lot of standard monitoring stuff, but you can also do fancy stuff all in one UI.

00:56:16.246 --> 00:56:19.566
<v Chris>In your standard desktop audio pipeline, you can insert effects.

00:56:19.566 --> 00:56:20.666
<v Chris>So if you're watching something that's

00:56:20.666 --> 00:56:23.265
<v Chris>a little too quiet, you could pop a compressor on right there you know.

00:56:23.451 --> 00:56:27.126
<v Wes>But from the same thing that can just sort of like manage your basic devices yeah,

00:56:27.646 --> 00:56:32.106
<v Wes>yeah just that's the thing it's like we've we've had a lot of great tooling but then in particular

00:56:32.483 --> 00:56:36.676
<v Wes>before linux audio was so bifurcated between like also at first and then pulse

00:56:36.676 --> 00:56:38.840
<v Wes>and then with jack on the side as its own universe

00:56:39.124 --> 00:56:42.706
<v Wes>and pipewire is finally bringing them together but we've had a lot of composable

00:56:42.706 --> 00:56:46.106
<v Wes>tools mostly but have never really gotten to the full thing that it could be

00:56:46.106 --> 00:56:48.536
<v Wes>in the new era and maybe this is the start i feel.

00:56:48.536 --> 00:56:50.606
<v Chris>Like I think it is actually, that's such a great way to put it.

00:56:50.606 --> 00:56:54.946
<v Chris>It's actually unlocking the real Pipewire potential. And we've needed good,

00:56:54.946 --> 00:56:56.296
<v Chris>good. Oh, I'm so excited about it.

00:56:56.306 --> 00:56:57.826
<v Wes>Because the bones are great. The bones are there.

00:56:57.826 --> 00:56:59.806
<v Chris>They're there. Pipewire controller.

00:57:00.126 --> 00:57:04.606
<v Brent>I've also said at the end of the read me here, there's a, if you like tinkering

00:57:04.606 --> 00:57:08.146
<v Brent>like me, here are some cool Git hubs to visit for sound tools list.

00:57:08.766 --> 00:57:13.089
<v Brent>And there are, I don't know, 10 different Linux audio sound tools here all worth looking at.

00:57:13.745 --> 00:57:16.199
<v Chris>I didn't even see that. That's fun.

00:57:16.437 --> 00:57:18.498
<v Brent>Okay. There's one even called gentle dynamics.

00:57:19.317 --> 00:57:22.665
<v Chris>It's been a good week of finding tools. Oh, yeah, classic easy effects is listed

00:57:22.665 --> 00:57:24.095
<v Chris>in there. Got to give that a shout-out.

00:57:24.095 --> 00:57:27.195
<v Wes>Also kind of great. I think you'll have to see there's a thanks at the end to

00:57:27.195 --> 00:57:31.105
<v Wes>Wim Taman's, past guest on our show, creator of Pipewire, who I guess reviewed

00:57:31.105 --> 00:57:33.505
<v Wes>some of the server page's quantum and buffer settings.

00:57:33.505 --> 00:57:33.881
<v Brent>Cool.

00:57:34.108 --> 00:57:35.375
<v Wes>And helped fix some bugs.

00:57:35.375 --> 00:57:39.405
<v Chris>All right, so that pick and all our links are at linuxunplugged.com,

00:57:39.405 --> 00:57:45.776
<v Chris>and this right here was episode 677, so you can go to linuxunplugged.com slash 677 to get a link to that.

00:57:46.461 --> 00:57:49.468
<v Chris>Buzz and some of the documentation, other things we've talked about,

00:57:49.909 --> 00:57:52.645
<v Chris>and our invite link, if you want to join our Buzz community and,

00:57:53.005 --> 00:57:54.930
<v Chris>you know, give it a shot. I have no idea if it's going to work.

00:57:55.725 --> 00:57:57.045
<v Wes>Sorry about that. Yeah, totally.

00:57:58.165 --> 00:57:58.805
<v Brent>Try it with us.

00:57:58.805 --> 00:58:03.475
<v Chris>Try it with us, and let's learn it together, I say. And really,

00:58:04.021 --> 00:58:06.675
<v Chris>really let us know what you think if you try it. Seriously.

00:58:06.675 --> 00:58:08.325
<v Wes>Yeah, boost in. Boost in your Buzz hot takes.

00:58:08.325 --> 00:58:12.972
<v Chris>We want to hear it. We want to hear it. And also you can go to linuxunplugged.com slash contact.

00:58:13.220 --> 00:58:17.125
<v Chris>Of course, you can make it a Linux Tuesday on a Sunday. You can join us next

00:58:17.125 --> 00:58:21.847
<v Chris>Sunday at 10 a.m. Pacific, 1 p.m. Eastern, or go to jblive.tv whenever you want,

00:58:22.137 --> 00:58:23.655
<v Chris>and just see if it's live. That's what I say.

00:58:23.655 --> 00:58:25.125
<v Wes>You see where we are. We're not going to be here.

00:58:25.125 --> 00:58:25.568
<v Chris>That's right.

00:58:26.415 --> 00:58:27.065
<v Brent>I won't be here.

00:58:27.489 --> 00:58:29.202
<v Chris>No, none of us are.

00:58:29.202 --> 00:58:31.392
<v Brent>We're all going to be in a different country.

00:58:31.392 --> 00:58:32.862
<v Wes>We'll be on the other side of the continent.

00:58:33.482 --> 00:58:37.632
<v Brent>This is a send-off show. I'm not leaving. I'm just leaving this place.

00:58:37.632 --> 00:58:43.182
<v Chris>Yeah, the last broadcast from the cottage. I'm glad we could be here for it. That's nice, right?

00:58:43.182 --> 00:58:44.192
<v Brent>It is.

00:58:44.192 --> 00:58:47.512
<v Chris>That is cool. Wes, before we go, why don't you tell people a few pro tips,

00:58:47.512 --> 00:58:48.962
<v Chris>like extra data around the show.

00:58:48.962 --> 00:58:50.002
<v Wes>Ooh, you like extra data.

00:58:50.002 --> 00:58:51.062
<v Chris>I love extra data, Wes.

00:58:51.962 --> 00:58:55.362
<v Wes>We upgraded the audio stream, so we have a video stream, one of those fancy

00:58:55.362 --> 00:58:58.708
<v Wes>newfangled mp4 files that's no way yep same thing you get

00:58:59.057 --> 00:59:03.432
<v Wes>um just with more data a lot more data actually uh but if you like small text

00:59:03.432 --> 00:59:07.108
<v Wes>files or medium-sized text that's my speed yeah well we have srt

00:59:07.480 --> 00:59:11.942
<v Wes>or vtt which includes diarization so it says what chris said and what i said

00:59:11.942 --> 00:59:14.822
<v Wes>oh yeah and it might actually get it right most of the time it should.

00:59:16.002 --> 00:59:16.772
<v Brent>Am i in there too.

00:59:16.772 --> 00:59:19.522
<v Wes>You're in there too and the mumble room and actually i.

00:59:19.982 --> 00:59:20.732
<v Chris>Had to delete all of Brent.

00:59:20.732 --> 00:59:22.232
<v Wes>Stuff. Oh, that happens in post, right?

00:59:22.232 --> 00:59:23.727
<v Chris>That was where actually most of the time was spent.

00:59:24.266 --> 00:59:27.282
<v Wes>And if you just know that it's really all about the audience and you want to

00:59:27.282 --> 00:59:30.142
<v Wes>jump right to the boost segment or the feedback segment or you just are here

00:59:30.142 --> 00:59:33.102
<v Wes>for the picks only and that's fine too, we have chapters for that.

00:59:33.102 --> 00:59:37.142
<v Chris>A lot of you are just here for the picks. We understand. Thank you everybody.

00:59:37.142 --> 00:59:39.882
<v Chris>We really appreciate you joining us. Brentley, thank you for hosting us.

00:59:40.662 --> 00:59:42.432
<v Brent>Thanks for helping me pack up all my junk.

00:59:42.432 --> 00:59:44.982
<v Chris>Well, who doesn't love moving? Right?

00:59:45.482 --> 00:59:46.572
<v Wes>It's a national pastime.

00:59:46.572 --> 00:59:51.762
<v Chris>I says to myself, I get five days off a year max and I want to spend all five

00:59:51.762 --> 00:59:53.682
<v Chris>moving. That's what I says to myself, you know?

00:59:53.682 --> 00:59:57.892
<v Brent>Well, you know, the faster we do it, the more we get to hang out in the mountains.

00:59:57.892 --> 01:00:02.362
<v Chris>So the harder we work in the 100-degree weather, the more fun we get to have. There you have it.

01:00:02.362 --> 01:00:03.762
<v Wes>Hey, at least it's not your stuff.

01:00:04.542 --> 01:00:07.421
<v Chris>It actually makes it a lot easier. It really does. It really does.

01:00:08.362 --> 01:00:10.982
<v Chris>All right. Thank you, everybody, for joining us. We really do appreciate you,

01:00:10.982 --> 01:00:14.002
<v Chris>and hope you enjoyed this week's episode. Let us know how we did with a boost

01:00:14.002 --> 01:00:16.991
<v Chris>or an email. Don't forget you can join us in that mumble room.

01:00:18.241 --> 01:00:21.615
<v Chris>We've got that over at linuxunplugged.com along with our Matrix info,

01:00:21.615 --> 01:00:23.836
<v Chris>how to subscribe, and the back catalog.

01:00:24.805 --> 01:00:27.645
<v Chris>But with that, thank you so much for joining us on this week's episode of Your

01:00:27.645 --> 01:00:32.735
<v Chris>Unplugged Program. And we'll see you next Tuesday, as in Sunday.

