1
00:00:11,488 -->
00:00:16,213
Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.
2
00:00:16,213 -->
00:00:17,136
My name is Wes.
3
00:00:17,351 -->
00:00:18,353
And my name is Brent.
4
00:00:18,353 -->
00:00:23,043
Hello, gentlemen. Coming up on the show this week, Greg KH has been busy.
5
00:00:23,043 -->
00:00:25,124
Seven Linux kernels landed on Saturday.
6
00:00:25,693 -->
00:00:30,763
Almost all of them were in LTS. We'll break down what changed and what releases
7
00:00:30,763 -->
00:00:32,479
just might fit your home lab best.
8
00:00:32,879 -->
00:00:40,333
And then why generating truly random numbers is so dang hard and how it's gone so bad in the past.
9
00:00:40,333 -->
00:00:42,574
We'll talk about that and we'll round it out with some boosts,
10
00:00:42,910 -->
00:00:45,893
some picks, and a lot more. So before we get there, let's say time appropriate
11
00:00:45,893 -->
00:00:48,993
greetings to our virtual lug. Hello, Mumble Room.
12
00:00:50,653 -->
00:00:51,463
Hello, guys.
13
00:00:51,463 -->
00:00:52,355
Hello, Brent.
14
00:00:52,506 -->
00:00:55,283
And hello up there in the quiet listening and everybody watching live over at
15
00:00:55,283 -->
00:00:58,189
jblav.tv, making it a Tuesday on a Sunday.
16
00:00:59,012 -->
00:01:02,518
And good morning to our friends at Defined Networking.
17
00:01:02,855 -->
00:01:07,743
Check out Defined.net slash unplugged and sign up for Managed Nebula 100 hosts
18
00:01:07,743 -->
00:01:09,380
for free, no credit card required.
19
00:01:09,780 -->
00:01:15,765
Nebula is one of my favorite technologies, and Manage Nebula makes it so straightforward,
20
00:01:16,166 -->
00:01:18,197
and now they give you a lighthouse to get going real quick.
21
00:01:18,998 -->
00:01:25,173
Picture a Mesh VPN completely and totally under your control with a design that
22
00:01:25,173 -->
00:01:28,524
is intelligent and low resources from the beginning.
23
00:01:28,908 -->
00:01:32,423
Something designed to connect some of the most important and sensitive data
24
00:01:32,423 -->
00:01:36,833
around the world is now available to you and, through the magic of cryptography,
25
00:01:36,833 -->
00:01:38,474
is very straightforward to set up.
26
00:01:38,817 -->
00:01:41,443
You get strong encryption, direct device-to-vice connections,
27
00:01:41,443 -->
00:01:45,503
and you can self-host Lighthouse Nodes, giving you complete control over the
28
00:01:45,503 -->
00:01:48,488
network that you depend on. That's huge.
29
00:01:49,457 -->
00:01:54,821
So go get started. 100 hosts for free. No credit card required at Defined.net slash unplugged.
30
00:01:55,239 -->
00:01:58,814
Go check it out. We love it. Defined.net slash unplugged.
31
00:02:01,164 -->
00:02:03,710
You know, we just have a really quick housekeeping this week.
32
00:02:04,270 -->
00:02:07,890
We wanted to say thank you. We meant to say thank you last week when we were
33
00:02:07,890 -->
00:02:09,366
remote at Brent's place.
34
00:02:09,883 -->
00:02:13,870
But it dawned on us afterwards, once again, a big thank you to everybody who
35
00:02:13,870 -->
00:02:15,287
helped us get those headsets.
36
00:02:16,048 -->
00:02:17,270
It's almost been, what, two years now?
37
00:02:17,870 -->
00:02:22,180
Those things have been just solid. I don't think they've never ever caused us
38
00:02:22,180 -->
00:02:25,545
a technical issue we've had to solve. Everything else has, but never those headsets.
39
00:02:25,713 -->
00:02:30,154
It's crazy. It's crazy what a reduction in complexity and gear that was for us, too.
40
00:02:30,972 -->
00:02:35,700
Really? Yeah. I mean, at that point, it's them and a mixer of some kind that
41
00:02:35,700 -->
00:02:36,650
can handle enough inputs.
42
00:02:36,650 -->
00:02:36,934
Yeah.
43
00:02:37,085 -->
00:02:37,770
And then a computer.
44
00:02:37,770 -->
00:02:41,960
And without them, it's big microphones and stands and separate headphones and
45
00:02:41,960 -->
00:02:47,300
wires for all of that to work. And it's nuts. It's nuts. So thank you so much.
46
00:02:47,300 -->
00:02:48,463
We just wanted to take a moment.
47
00:02:49,210 -->
00:02:53,210
And it's like every time we use them, we're like, oh, so, so freaking grateful,
48
00:02:53,210 -->
00:02:56,077
the members and the listeners, too. People contributed from all around.
49
00:02:57,650 -->
00:03:01,420
I want to thank you two boys And the Mumble Room for doing a nice little send
50
00:03:01,420 -->
00:03:07,680
off Of my beloved studio That was nice That thing has done quite a few episodes
51
00:03:07,680 -->
00:03:12,244
So I want to say thanks for your One last hurrah in there It was really great.
52
00:03:15,716 -->
00:03:21,305
Seven kernels on a Saturday. Greg KH shipped a bunch of stable kernels in one
53
00:03:21,305 -->
00:03:23,959
window. I'm hoping he's taking a summer vacation after this.
54
00:03:24,418 -->
00:03:29,329
Six of them were LTS point releases and some big numbers in here, boys. Check this out.
55
00:03:29,903 -->
00:03:32,399
6.12.100.
56
00:03:33,305 -->
00:03:38,065
6.1.180. Get ready for this. It's still kicking.
57
00:03:38,419 -->
00:03:41,345
Linux 5.10.262.
58
00:03:42,925 -->
00:03:46,495
Yeah, those are basically point release numbers, right? so those get bumped
59
00:03:46,495 -->
00:03:50,755
up as Greg releases new ones so you can kind of tell how long he's been doing those.
60
00:03:50,755 -->
00:03:51,105
Yeah.
61
00:03:51,105 -->
00:03:53,430
I'm glad he's keeping track because we're not.
62
00:03:53,987 -->
00:04:00,576
Linus also tagged Linux 7.2 RC5 over the weekend, so he called it quite the massive RC5.
63
00:04:00,912 -->
00:04:03,925
This really kind of brings it up to a total of seven. So we got these six stable
64
00:04:03,925 -->
00:04:08,592
point releases, and then the new 7.2, which kills AppleTalk, is reaching RC5.
65
00:04:09,144 -->
00:04:12,945
And it has quite a bit of changes in it because there's been a lot of AI-assisted
66
00:04:12,945 -->
00:04:14,827
patching that's been hitting the kernel recently.
67
00:04:15,779 -->
00:04:21,076
It's a lot. What do you say, Wes? You want to break some of it down for us?
68
00:04:21,076 -->
00:04:24,526
Yeah, I guess just take it to handle on what kernels we're talking about here.
69
00:04:24,526 -->
00:04:28,906
Well, sort of before the big push, Greg released 7.1.5. 7.2 is not out,
70
00:04:28,906 -->
00:04:30,566
right? So we're doing the 7.1 thing.
71
00:04:30,566 -->
00:04:31,126
Yes, thank you.
72
00:04:31,466 -->
00:04:36,646
And then, of course, as you said, Linus released 7.2 RC5. We're expecting 7.2
73
00:04:36,646 -->
00:04:39,586
to come out maybe sometimes around August 16th, somewhere in there.
74
00:04:41,306 -->
00:04:43,886
Obviously, depending on how many RCs Linus deems necessary.
75
00:04:46,446 -->
00:04:52,986
And then, so that was July 26, and then on July 30, yeah, six LTS point releases.
76
00:04:52,986 -->
00:04:55,826
So we got, we'll go from the newest and then kind of get older.
77
00:04:56,166 -->
00:04:58,486
We got 618.41.
78
00:04:58,486 -->
00:04:58,946
Wow.
79
00:04:58,946 -->
00:05:02,246
That's the newest, quote unquote, active LTS, right? 618.
80
00:05:02,246 -->
00:05:02,406
Okay.
81
00:05:02,826 -->
00:05:07,206
That has an end of life coming up in December 2028. Then we had,
82
00:05:07,706 -->
00:05:16,426
let's see here, 612.100, Debian 13 Trixie and RHEL 10 base. That EOL is also December 2028.
83
00:05:16,426 -->
00:05:19,706
That's, I mean, 2028's not that far away, but pretty good. So these are going
84
00:05:19,706 -->
00:05:22,105
to, this will be the kernel that ends up in people's RHEL 10.
85
00:05:22,320 -->
00:05:24,926
So this will be pretty widely used kernel 612-100.
86
00:05:24,926 -->
00:05:29,076
And it's the first time we start seeing the involvement of the civil infrastructure
87
00:05:29,076 -->
00:05:36,664
platforms SuperLTS that's going to try and keep this thing alive until December 2035.
88
00:05:38,406 -->
00:05:39,091
I'm sorry.
89
00:05:39,973 -->
00:05:40,652
What did you say?
90
00:05:41,117 -->
00:05:42,069
Yeah, 2035.
91
00:05:43,294 -->
00:05:45,399
Wow, yeah, yeah. That's incredible.
92
00:05:45,399 -->
00:05:49,079
So basically, it's a Linux Foundation project, the civil infrastructure platform,
93
00:05:49,459 -->
00:05:51,949
with a bunch of industry folks, right? Like Siemens, Toshiba,
94
00:05:51,949 -->
00:05:53,199
Hitachi, Mux, so people that.
95
00:05:53,199 -->
00:05:54,719
Build like- I hope Google's in there with Android.
96
00:05:54,719 -->
00:06:00,069
Right? Long-term embedded industrial systems. And so it kind of exists to extend
97
00:06:00,069 -->
00:06:02,799
kernel.org, which often does it for like roughly two years.
98
00:06:03,539 -->
00:06:07,772
But they're trying to offer stuff more like 10 plus, 20, you know?
99
00:06:08,155 -->
00:06:13,329
So if you want to run 612-100, you can say that you're running a super LTS kernel.
100
00:06:13,329 -->
00:06:19,589
Yeah, that's right. Okay, we also got 66147. That has an end of life of 2027.
101
00:06:19,589 -->
00:06:21,359
That's getting pretty close, December as well.
102
00:06:23,379 -->
00:06:28,949
61180, that's a Debian 12 bookworm base. That AOL is December 2027 as well.
103
00:06:28,959 -->
00:06:29,680
Also coming up.
104
00:06:30,005 -->
00:06:34,639
And would you believe it? We are still pushing updates to the 5 series kernel.
105
00:06:34,639 -->
00:06:38,115
Yes, we're on 7 now. that's like two giant numbers ago uh,
106
00:06:38,919 -->
00:06:46,359
so this is 5 15 213 that's the ubuntu 2204 lts base that's coming up soon though
107
00:06:46,359 -->
00:06:50,349
end of life december 2026 as far as obviously ubuntu does their own work but
108
00:06:50,349 -->
00:06:52,029
yeah in terms of kernel.org.
109
00:06:52,029 -->
00:06:53,867
Right right then they're on their own after that.
110
00:06:54,018 -->
00:07:00,119
And then the last but the least i don't know that's up to you uh 5 10 262 that's
111
00:07:00,119 -->
00:07:05,549
the debian 11 era kernel.org end of life December 2026 coming right up but this
112
00:07:05,549 -->
00:07:08,089
one is also under that super long term support
113
00:07:08,449 -->
00:07:10,493
to January 2031.
114
00:07:11,439 -->
00:07:14,585
When you see that, when you see they get the super long-term support,
115
00:07:15,473 -->
00:07:18,985
I think the obvious giveaway here is like these have ended up in some sort of,
116
00:07:19,589 -->
00:07:24,229
widely deployed corporate system, some image that's on a bunch of consumer devices
117
00:07:24,229 -->
00:07:25,819
or control devices, something like that.
118
00:07:25,819 -->
00:07:29,369
Yeah, and things shipped that like aren't easy to update or maybe are certified.
119
00:07:29,369 -->
00:07:32,039
And so you need, if you change the kernel, you got to do a whole new certification.
120
00:07:32,039 -->
00:07:34,049
You might not be able to do updates in place.
121
00:07:34,752 -->
00:07:41,539
But a lot of these drop off in 2027. A couple of drop off in December of this year.
122
00:07:41,539 -->
00:07:46,789
Two of them drop off. So like Greg's list, I don't know if he's responsible
123
00:07:46,789 -->
00:07:50,569
for the super long term, but like Greg's list does shorten a little bit in a year or two.
124
00:07:50,569 -->
00:07:53,389
And that's part of sort of the two-year thing, right? It's like the kernel.org
125
00:07:53,389 -->
00:07:57,879
team has to maintain stable kernels that like, you know, actual people pull from.
126
00:07:57,879 -->
00:08:00,089
And they work on whatever the latest kernel is all the time.
127
00:08:00,089 -->
00:08:02,679
It's just, you know, you have to handle who's going to actually support this,
128
00:08:02,679 -->
00:08:07,199
which is where it is nice to see the companies involved in wanting to run ancient
129
00:08:07,199 -->
00:08:10,457
kernels stepping up to sort of take on some of that ownership.
130
00:08:10,771 -->
00:08:14,349
So, Brent, I think last time we were looking at some of the patch sets that
131
00:08:14,349 -->
00:08:18,569
were hitting 7.2, there was a lot of stuff in video, a lot of video drivers.
132
00:08:18,569 -->
00:08:23,164
What are we seeing that got your attention in 7.2 RC5? The new freshness.
133
00:08:23,890 -->
00:08:28,598
There is new freshness. There's AMD GPU compute stuff in there.
134
00:08:28,801 -->
00:08:35,479
that's a 42x regressions though on some of the 7.0 point releases so stable
135
00:08:35,479 -->
00:08:42,949
diffusion xl via comfy ui went from a nine second to uh 388 seconds.
136
00:08:42,949 -->
00:08:44,589
That's a pretty significant regression.
137
00:08:45,109 -->
00:08:45,569
Okay so.
138
00:08:46,049 -->
00:08:49,477
All right so maybe 7.2 don't don't use it on amg compute systems just yet.
139
00:08:49,982 -->
00:08:54,699
I mean some of those are fixed upstream in 7.0.13 but not every single distro
140
00:08:54,699 -->
00:08:59,682
has picked them up yet so So take your chances or do some research, I would say.
141
00:09:00,361 -->
00:09:04,789
I also saw a fair amount of pent-up networking work. Wes had a stat here that
142
00:09:04,789 -->
00:09:08,030
over a third of the patches that landed were networking alone.
143
00:09:08,883 -->
00:09:12,109
And again, I think, Brent, that's more of like the AI-assisted code stuff only
144
00:09:12,109 -->
00:09:15,094
sitting in the networking branch. It just, to me, seems like...
145
00:09:16,006 -->
00:09:19,030
We're going to need, like, a spring cleaning next year or something.
146
00:09:20,214 -->
00:09:22,481
How much are you hoping to clear out? As much as we cleared out?
147
00:09:22,481 -->
00:09:25,791
Well, if we're willing to get rid of AppleTalk, then where is the line, boys?
148
00:09:26,591 -->
00:09:29,711
I think you're right. We're probably going to see more of that as basically
149
00:09:29,711 -->
00:09:32,291
every subsystem in the kernel gets more and more pressure.
150
00:09:32,731 -->
00:09:37,600
The stuff that is no longer load-bearing is just the desire to cut it is going to increase.
151
00:09:38,065 -->
00:09:43,300
But to your point about, like, that massive 42x regression compared to Linux 7.0,
152
00:09:44,553 -->
00:09:48,731
So that stuff stings, but most people that are using that stuff in a production
153
00:09:48,731 -->
00:09:51,901
workload where they're using the actual AMD compute infrastructure,
154
00:09:51,901 -->
00:09:53,991
I doubt they're going to install 7.2.
155
00:09:53,991 -->
00:09:58,731
And AMD does seem to be actively contributing upstream, so I imagine they're
156
00:09:58,731 -->
00:09:59,611
going to be working on that.
157
00:09:59,611 -->
00:10:05,921
I think part of the story here is kind of like what and why do you choose a particular kernel?
158
00:10:05,921 -->
00:10:08,691
How do you go about doing that, right? So it's like some of these things are,
159
00:10:08,691 -->
00:10:12,181
yeah, you hit it if you are upgrading, but do you need to upgrade for hardware
160
00:10:12,181 -->
00:10:15,131
enablement? Do you need some sort of new feature? Are you really looking for
161
00:10:15,131 -->
00:10:16,461
a potential performance improvement?
162
00:10:16,461 -->
00:10:22,191
There's another wrinkle to it as well, as sometimes the drivers or system support
163
00:10:22,191 -->
00:10:24,581
do get backported to these older releases.
164
00:10:24,581 -->
00:10:29,441
So you might see that they started contributing drivers at the 7.0 series,
165
00:10:29,441 -->
00:10:31,696
but sometimes, like the NVIDIA stuff...
166
00:10:32,583 -->
00:10:37,420
IOMMU stuff, that stuff gets backported. And so the older kernels can sometimes
167
00:10:37,420 -->
00:10:40,651
end up with that. So I think you could think about it in tiers here, right?
168
00:10:41,556 -->
00:10:45,950
If you're looking through an LTS lens and you're just looking at long-term stable
169
00:10:45,950 -->
00:10:49,030
kernels, you want to set up a box and forget about it for as long as possible.
170
00:10:49,030 -->
00:10:51,090
I mean, you still need to update, but you won't have to redo your kernel.
171
00:10:51,870 -->
00:10:54,763
Then that's, I think, right off the bat, that's Linux 6.18.
172
00:10:55,750 -->
00:10:59,410
It is the current, quote-unquote, bleeding-edge LTS. It has some of the newer
173
00:10:59,410 -->
00:11:01,438
AMD, NVIDIA stuff backported.
174
00:11:02,330 -->
00:11:06,150
And it will last until 2028. That gets you a pretty long runway.
175
00:11:06,150 -->
00:11:09,980
Yeah, I suppose that comes down to like what are you supporting and how many
176
00:11:09,980 -->
00:11:12,710
updates are you willing to do? How long can you go without changing kernels?
177
00:11:13,090 -->
00:11:19,760
Yeah. Or like you said, is it just doing stupid file serving and maybe DNS?
178
00:11:19,760 -->
00:11:24,322
And it's like something you run on a Raspberry Pi or it's a low-end networking box.
179
00:11:24,769 -->
00:11:31,961
Then you don't need 6.18. Something like 6.12 will be around until possibly 2035.
180
00:11:32,118 -->
00:11:35,770
So talk about a box for networking infrastructure you could just set and forget
181
00:11:35,770 -->
00:11:38,091
and just do quarterly updates on.
182
00:11:38,460 -->
00:11:41,420
And you're not going to have to worry about a new kernel. So 6.12 could potentially
183
00:11:41,420 -->
00:11:44,340
be around until 2035. That's the one for those machines.
184
00:11:44,340 -->
00:11:47,390
It's funny it feels old, right? 6.12 kind of sounds a little old.
185
00:11:47,390 -->
00:11:51,050
But, I mean, it was a kernel we really talked about a lot on the show.
186
00:11:51,050 -->
00:11:53,530
It was a big one. Preempt RT stuff.
187
00:11:54,070 -->
00:11:56,860
I mean, there's just a bunch of stuff. And I think it was pretty widely deployed,
188
00:11:56,860 -->
00:11:59,070
which is why it's getting that long-term support.
189
00:11:59,070 -->
00:12:03,670
Right. Preempt RT. Right. Also, the note in here that it's considered one of
190
00:12:03,670 -->
00:12:06,098
the most battle-tested kernels of all of them.
191
00:12:06,876 -->
00:12:10,560
And that's their opinion. So, okay. Let's go with that. So, 6.12 seems like
192
00:12:10,560 -->
00:12:14,480
a real winner if you don't need super modern hardware and you're cool with the
193
00:12:14,480 -->
00:12:15,392
setup and forget it kernel.
194
00:12:15,763 -->
00:12:18,710
Then after that, like, I think it sort of just drops off and it's,
195
00:12:18,710 -->
00:12:21,270
okay, well, you're just going to go with whatever distro you want.
196
00:12:21,270 -->
00:12:23,881
This is really if you're even making an active decision, right?
197
00:12:23,970 -->
00:12:26,330
Right, because Debian's going to manage their kernel release.
198
00:12:26,330 -->
00:12:29,910
Ubuntu will manage theirs. There's going to be stuff that they're just going
199
00:12:29,910 -->
00:12:33,150
to take care of for you, and you may end up on a different kernel at some point
200
00:12:33,150 -->
00:12:34,078
when you just upgrade the distro.
201
00:12:34,937 -->
00:12:37,577
But if you are actively making a choice, and I'd like to know how many of you
202
00:12:37,577 -->
00:12:42,427
really are actively making a choice, which kernel do you actually pick?
203
00:12:42,427 -->
00:12:45,437
Like, I'd like to know how many of you are actually doing that. I mean, we do.
204
00:12:45,437 -->
00:12:47,807
Yeah, we definitely do. I mean, we're running this end kernel.
205
00:12:48,467 -->
00:12:51,567
And then back in the day when this was a KDE Neon box here in the studio,
206
00:12:52,007 -->
00:12:54,567
you were doing the mainline tool to just kind of get the freshest kernels.
207
00:12:54,567 -->
00:12:58,177
And on FakeNez, we're doing the LTS kernel. We're doing one of the LTS kernels
208
00:12:58,177 -->
00:13:03,316
just because we hardly ever update that box and we don't want it to break when we do ZFS updates.
209
00:13:03,775 -->
00:13:07,693
And so we did go to the LTS gear for the rolling arch-based server.
210
00:13:08,338 -->
00:13:11,443
And so I wonder how many people out there are, A, actively choosing their kernel.
211
00:13:12,273 -->
00:13:15,227
I bet it's a minority. And I wonder, B, which kernels they're choosing.
212
00:13:15,227 -->
00:13:17,637
So boostin, boost.jupiterbroadcasting.com and let us know.
213
00:13:17,637 -->
00:13:21,117
Yeah, I like that. It turns out you can have a rolling distro with a stable
214
00:13:21,117 -->
00:13:22,987
kernel or a stable distro with a rolling kernel.
215
00:13:22,987 -->
00:13:28,227
I like it. I mean, on our desktop boxes, we just go full rolling with everything.
216
00:13:28,227 -->
00:13:33,407
But on the server, it's not that crazy, I think, to have an LTS kernel and a
217
00:13:33,407 -->
00:13:36,127
rolling user land. I mean, we've been proving it for how many years on that
218
00:13:36,127 -->
00:13:39,144
fake NAS box, abusing it, doing rando updates.
219
00:13:40,148 -->
00:13:42,687
Isn't it just lots of luck, though? I don't know.
220
00:13:42,687 -->
00:13:45,967
I think the cottonwood is structural. It helps at this point.
221
00:13:45,967 -->
00:13:50,881
It's really about, well, for us, right, it was down to we wanted rock solid ZFS support.
222
00:13:51,955 -->
00:13:56,287
And sometimes ZFS doesn't keep up with the current kernel. And if you load the
223
00:13:56,287 -->
00:13:59,497
current kernel, you can sometimes not have a loadable ZFS. And so for us,
224
00:13:59,497 -->
00:14:04,418
it just made a lot of sense. I think if we were doing Bcache FS or ButterFS on that machine.
225
00:14:04,831 -->
00:14:05,617
Probably wouldn't be a big deal.
226
00:14:05,617 -->
00:14:09,817
It probably wouldn't matter. But then if we were trying to use an NVIDIA driver or an AMD driver.
227
00:14:09,817 -->
00:14:10,437
Then it could be.
228
00:14:10,437 -->
00:14:13,654
It could be. So again, I'd like to know how you pick and what you pick.
229
00:14:14,061 -->
00:14:17,927
Let us know. But let's talk about 7.2 because I feel like we've been building
230
00:14:17,927 -->
00:14:20,587
to this for weeks, especially since we learned about the death of AppleTalk
231
00:14:20,587 -->
00:14:23,047
coming at 7.2. So what stands out to you, Wes?
232
00:14:23,552 -->
00:14:24,933
Yeah, there's a lot of exciting stuff.
233
00:14:25,968 -->
00:14:30,668
A few highlights for today, though. The cache-aware task scheduler.
234
00:14:30,668 -->
00:14:31,108
Yeah, buddy.
235
00:14:31,108 -->
00:14:34,498
The scheduler now knows which cores share a cache.
236
00:14:34,498 -->
00:14:38,788
It groups tasks that share data onto the same cache domain, so you stop paying
237
00:14:38,788 -->
00:14:43,288
cache miss penalties across cores. Now, we should be clear, this really only
238
00:14:43,288 -->
00:14:47,008
counts if you are on a system like Epic or Xeon that has multiple cache domains.
239
00:14:47,008 -->
00:14:49,063
You're not going to see it on a single cache domain device.
240
00:14:49,470 -->
00:14:53,738
But if you have that, this is basically like a free performance when you don't
241
00:14:53,738 -->
00:14:56,428
do anything except upgrade your kernel and things get faster.
242
00:14:56,428 -->
00:14:58,708
See all those Xeon CPUs, boys?
243
00:14:58,708 -->
00:14:59,298
Sweet.
244
00:14:59,298 -->
00:15:03,582
I'm going to go dust off that old Mac Pro upstairs that's like 15 years old that's got Xeons in it.
245
00:15:04,023 -->
00:15:08,618
And I'm going to... Actually, I do have an active Xeon system in production that I think about it.
246
00:15:08,618 -->
00:15:09,268
Oh. So I love it.
247
00:15:09,268 -->
00:15:09,625
I love it.
248
00:15:09,834 -->
00:15:10,838
Well, time to update.
249
00:15:10,838 -->
00:15:11,384
Mm-hmm.
250
00:15:11,494 -->
00:15:12,848
Or it will be in August.
251
00:15:12,848 -->
00:15:13,218
Yeah.
252
00:15:14,068 -->
00:15:16,358
Okay. Not the only work on the scheduler, though.
253
00:15:16,388 -->
00:15:16,838
Okay.
254
00:15:16,838 -->
00:15:19,368
And scheduler stuff. I mean, not only is it one of the trickiest areas,
255
00:15:19,368 -->
00:15:22,508
I think, of the whole kernel, but it can tend to really, you know,
256
00:15:22,508 -->
00:15:24,968
it can have regressions pretty easily. It can be very noticeable,
257
00:15:24,968 -->
00:15:27,690
or it can have a lot of performance impact.
258
00:15:28,056 -->
00:15:30,923
So another change is a fairer GPU scheduler.
259
00:15:31,583 -->
00:15:35,368
The kernel's DRM scheduler used to default to high priority for GPU jobs.
260
00:15:36,028 -->
00:15:40,188
Now it defaults to fair. So GPU time gets distributed more evenly when you've
261
00:15:40,188 -->
00:15:41,736
got multiple things competing for it.
262
00:15:42,276 -->
00:15:45,208
And if you're running GPU pass-through to a VM or something like that,
263
00:15:45,208 -->
00:15:50,687
while also running all your fancy desktop compositing as you do, this should help.
264
00:15:51,180 -->
00:15:55,278
if you've just got like one gpu you know churning away at like a ml task or
265
00:15:55,278 -->
00:15:59,058
just rendering one thing specifically you probably won't notice but again these
266
00:15:59,058 -->
00:16:03,679
are hardware specific but that even makes them you know a little more challenging to do yeah,
267
00:16:04,352 -->
00:16:05,947
So it's impressive we're seeing the changes.
268
00:16:05,947 -->
00:16:09,887
Okay, you got anything for a guy that's just got a regular old computer that
269
00:16:09,887 -->
00:16:14,116
doesn't have like Xeons or, you know, multiple Goopoos?
270
00:16:14,609 -->
00:16:17,587
Well, we do have memory reclaiming. How about that?
271
00:16:17,587 -->
00:16:19,447
All right. I like that.
272
00:16:19,447 -->
00:16:22,939
The kernel's page reclaim got a lot smarter in 7.2.
273
00:16:23,677 -->
00:16:28,797
MGLRU improvements are showing 30 to 100% higher throughput on things like MongoDB,
274
00:16:29,277 -->
00:16:30,847
which is kind of just a test workload.
275
00:16:30,847 -->
00:16:31,210
All right.
276
00:16:31,466 -->
00:16:35,837
And your page allocator isn't stuck and always handing out 2MB anymore.
277
00:16:35,837 -->
00:16:40,173
It can hand out 16K, 32K, 64K pages, smaller bits.
278
00:16:40,382 -->
00:16:44,427
It means less overhead on every memory lookup. And that means instead of having
279
00:16:44,427 -->
00:16:49,014
to allocate more stuff than you actually need, programs can request and get
280
00:16:49,246 -->
00:16:50,017
more reasonable amounts.
281
00:16:50,837 -->
00:16:52,577
I can't believe that wasn't a thing already.
282
00:16:52,577 -->
00:16:55,707
Yeah. There's definitely some of that in here.
283
00:16:55,707 -->
00:17:00,131
You're telling me the huge page allocator in Linux has been stuck at 2 megabytes forever?
284
00:17:00,729 -->
00:17:01,106
Yeah.
285
00:17:02,702 -->
00:17:06,341
Wow. Okay. That's a big one. That's a big one. All right. You got me.
286
00:17:06,351 -->
00:17:11,341
And it should mean container startup and teardown in particular should be noticeably faster.
287
00:17:11,341 -->
00:17:13,731
All right. All right. You got me on board, Wes.
288
00:17:13,731 -->
00:17:16,331
And maybe you don't want to be using it, but if you do...
289
00:17:16,751 -->
00:17:16,994
What?
290
00:17:17,552 -->
00:17:19,241
Your pal swap also got faster.
291
00:17:19,241 -->
00:17:21,201
Oh, you know, you never know. Sometimes you got to swap.
292
00:17:21,201 -->
00:17:25,111
Yeah. Back in the old days, the bad old days, swap used to route different memory
293
00:17:25,111 -->
00:17:28,678
types through different code paths. That's gone, cleaned up, unified.
294
00:17:28,893 -->
00:17:30,855
Less bookkeeping, less bloat.
295
00:17:31,598 -->
00:17:34,118
and at the end of the day that just makes it faster.
296
00:17:34,321 -->
00:17:39,156
I like to put my swap on a ram disc so i'm glad to see that performance has been improved.
297
00:17:39,429 -->
00:17:44,514
Now it's not all good news necessarily there are some regressions here um that,
298
00:17:45,461 -->
00:17:48,881
you know that's being worked on though but rfs in particular is in a bit of
299
00:17:48,881 -->
00:17:54,121
active surgery um large folio supports on by default now okay and they've improved
300
00:17:54,121 -->
00:17:58,510
things there was a previous direct io regression that got a fix
301
00:17:58,940 -->
00:18:01,581
a 59 throughput fix no less.
302
00:18:01,581 -->
00:18:02,493
Jeez, okay.
303
00:18:02,783 -->
00:18:06,521
But, as a result of that, you know, so you had to do that to get the new fix.
304
00:18:06,521 -->
00:18:08,234
You had to get the performance improvement.
305
00:18:08,495 -->
00:18:11,334
We got large folio support that speeds things up. Right. But,
306
00:18:11,589 -->
00:18:13,354
it did also introduce regression itself.
307
00:18:13,824 -->
00:18:18,161
In particular, if you're running KVM guess with RAM backed by a ButterFS file,
308
00:18:18,161 -->
00:18:21,127
so it's like a particular setup, it can cause a deadlock.
309
00:18:22,845 -->
00:18:22,951
Hmm.
310
00:18:23,501 -->
00:18:27,171
But they're working on the patch. I don't know yet if that's going to land in
311
00:18:27,171 -->
00:18:30,441
7.2 ultimately. I hope so. But, we haven't gotten there yet.
312
00:18:30,441 -->
00:18:34,697
And then they will backport it to Linux 6.12.
313
00:18:35,121 -->
00:18:40,141
And perhaps in a way where if this is only in the RC, then perhaps then it's
314
00:18:40,141 -->
00:18:42,395
a way that you just never have a possibility of getting it at all.
315
00:18:43,471 -->
00:18:47,061
I'm like working through all my VMs and like, is this going to hit me?
316
00:18:47,061 -->
00:18:48,551
And I think actually one of them does.
317
00:18:49,231 -->
00:18:55,061
Yeah, I could see that getting me. What you need is a super fast external storage
318
00:18:55,061 -->
00:18:56,843
in a different file system.
319
00:18:57,611 -->
00:19:01,787
Maybe some new stack for the universal serial bus could enable this,
320
00:19:01,787 -->
00:19:03,637
Wes? Maybe a new iteration?
321
00:19:03,637 -->
00:19:07,817
Oh, maybe. Yeah, we are seeing USB 4 streaming support coming.
322
00:19:08,457 -->
00:19:11,557
There's not hardware really, I think, out there a ton of it yet that you could
323
00:19:11,557 -->
00:19:13,847
actually use. So this is the case where the kernel sort of leads the way with,
324
00:19:14,777 -->
00:19:17,907
people doing upstream development, right? Where before the hardware exists,
325
00:19:17,907 -->
00:19:20,677
it's in the kernel. So then when the hardware does exist, you just plug it in
326
00:19:20,677 -->
00:19:21,557
and the kernel supports it.
327
00:19:21,557 -->
00:19:22,537
That's so great.
328
00:19:23,137 -->
00:19:26,037
Also stuff that isn't super used yet and isn't a little more experimental,
329
00:19:26,037 -->
00:19:30,377
but fun to watch because we've been paying attention is sub scheduler support
330
00:19:30,377 -->
00:19:34,338
in the sketch X system that's, that enables you to write your own scheduler.
331
00:19:34,703 -->
00:19:38,767
What's the difference between a scheduled task and a sub scheduled task, Wes?
332
00:19:38,924 -->
00:19:42,437
Well, like you can, you have a finer grain on, you know, because,
333
00:19:42,917 -->
00:19:47,317
and you can change, you can basically have tasks that have their own schedulers, right?
334
00:19:47,317 -->
00:19:50,687
So you can have, instead of one scheduler that has to know about how to schedule
335
00:19:50,687 -->
00:19:54,297
everything for every type of task, it can then have its own subscheduler that
336
00:19:54,297 -->
00:19:56,037
can schedule just that type of task.
337
00:19:56,037 -->
00:19:56,827
That's awesome.
338
00:19:56,827 -->
00:19:59,457
And then you can optimize it more, like maybe specifically you're trying to
339
00:19:59,457 -->
00:20:02,597
run a database server, right? And the database does all kinds of stuff that
340
00:20:02,597 -->
00:20:05,757
other kinds of applications don't do. And so you might need a scheduler that's
341
00:20:05,757 -->
00:20:08,157
aware, like, oh, give the database priority on this kind of thing.
342
00:20:08,157 -->
00:20:10,027
Dang it. You're going to make me run 7.2.
343
00:20:10,027 -->
00:20:11,307
Well, that was the idea.
344
00:20:11,307 -->
00:20:12,140
Dang it.
345
00:20:12,575 -->
00:20:16,217
I don't know why. I just like the number 7.2. It's got a good round shape in my brain.
346
00:20:16,217 -->
00:20:17,037
Yeah, it does.
347
00:20:17,097 -->
00:20:20,177
It's got a nice color, so we should all be running it.
348
00:20:20,177 -->
00:20:24,102
There has been. I mean, I was teasing earlier, But there has been a bit of cleanup
349
00:20:24,432 -->
00:20:26,116
in the 7.2 kernel release as well.
350
00:20:26,261 -->
00:20:29,997
Quite a bit of cleanup. You mentioned the networking stack.
351
00:20:30,317 -->
00:20:30,667
Mm-hmm.
352
00:20:30,859 -->
00:20:36,857
And you mentioned a third of the patch of RC5 is networking alone.
353
00:20:37,257 -->
00:20:41,147
So mostly driver-side stuff. And Linus himself said, nothing in there strikes
354
00:20:41,147 -->
00:20:42,654
me as particularly strange or scary.
355
00:20:44,037 -->
00:20:44,977
So don't worry, guys.
356
00:20:47,171 -->
00:20:47,977
Oh, man.
357
00:20:48,988 -->
00:20:52,186
Also, there's a, hey, you remember the Sega Dreamcast? Yeah.
358
00:20:52,355 -->
00:20:56,157
Did you guys play that? Yeah. That was like a peak late nineties, really.
359
00:20:56,302 -->
00:20:58,688
Oh, I played the heck out of that. Yeah. That was 1998.
360
00:20:58,798 -->
00:20:58,935
Wow.
361
00:20:59,529 -->
00:21:04,835
Well, the Dreamcast is still getting driver fixes. So there's a mouse driver
362
00:21:04,835 -->
00:21:05,655
null pointer dereference.
363
00:21:05,655 -->
00:21:06,629
It had drivers at all?
364
00:21:07,215 -->
00:21:08,195
And a mouse? Okay.
365
00:21:08,615 -->
00:21:13,585
I mean, we should investigate maybe. So there was a null pointer dereference
366
00:21:13,585 -->
00:21:16,068
since 2017 and that's been fixed.
367
00:21:16,695 -->
00:21:18,195
That's got to be an LLM fix.
368
00:21:18,535 -->
00:21:18,925
For sure.
369
00:21:18,925 -->
00:21:19,615
That's got to be.
370
00:21:21,215 -->
00:21:24,285
I mean, it's kind of interesting almost that this happened. And are people on
371
00:21:24,285 -->
00:21:26,755
the list being like, why do we still support the Dreamcast?
372
00:21:27,315 -->
00:21:28,705
You can't have AppleTalk.
373
00:21:28,705 -->
00:21:30,335
But the Dreamcast is totally fine.
374
00:21:30,335 -->
00:21:33,475
I like to think there's a couple of load-bearing Dreamcasts out there running
375
00:21:33,475 -->
00:21:36,555
the LAMP stack. That's what I like.
376
00:21:36,555 -->
00:21:40,035
Look, it's been hosting my personal website since 1998.
377
00:21:40,035 -->
00:21:43,065
Or it's like some kernel developer's email server from like,
378
00:21:43,065 -->
00:21:44,715
yeah, 99 or something like that.
379
00:21:45,315 -->
00:21:48,371
Like in 2000, he gave up on it and just turned into a Linux mail server.
380
00:21:49,103 -->
00:21:50,107
And they're still maintaining it.
381
00:21:51,116 -->
00:21:56,265
Well, they might be running off disks, so GDROMs, those disks,
382
00:21:56,904 -->
00:22:00,442
mount properly now in the Gamecast, just in case you're having that problem.
383
00:22:01,942 -->
00:22:05,571
But don't forget, i486 is also gone from that.
384
00:22:06,900 -->
00:22:08,122
Wow, right.
385
00:22:08,122 -->
00:22:08,525
Yeah.
386
00:22:08,885 -->
00:22:11,056
Hey, 14,000 lines removed, though.
387
00:22:11,753 -->
00:22:16,062
It's true. That's quite a few. That's 80 whole files.
388
00:22:16,402 -->
00:22:23,740
And Linus says here, zero real reason for anybody to waste one second of development effort on this.
389
00:22:24,419 -->
00:22:30,782
It launched in 1989, supported for 37 years in total, which is 18 years after
390
00:22:30,782 -->
00:22:32,598
Intel stopped making them.
391
00:22:33,375 -->
00:22:38,582
6.12 LTS still supports it, though, till 2036. So don't worry, Chris.
392
00:22:38,942 -->
00:22:41,922
That 6.12 is the MVP kernel, guys.
393
00:22:43,222 -->
00:22:46,838
Yeah, you want your Apple talk, you want your 486.
394
00:22:48,662 -->
00:22:51,556
Honestly, if we're still going in 2035, 2036,
395
00:22:55,782 -->
00:23:00,342
hand to sky, I hope, we should load up 612 and get a 486 box that we can still get booting going.
396
00:23:00,342 -->
00:23:00,562
Yeah.
397
00:23:00,562 -->
00:23:02,030
That would be pretty great.
398
00:23:03,068 -->
00:23:05,975
And the Dreamcast, right? All right. I mean, this is pretty solid,
399
00:23:05,975 -->
00:23:08,575
right? We've got a lot of kernel releases here. I mean, a lot of times you're
400
00:23:08,575 -->
00:23:11,025
not even going to have to think about this. We like to think about it.
401
00:23:11,025 -->
00:23:14,236
We like to pick. But I think a lot of us don't actually have to think about it that much.
402
00:23:14,695 -->
00:23:17,376
We hope that maybe you're the kind of person that does give it some thought.
403
00:23:17,765 -->
00:23:21,648
Seven kernels. Two of them are finally aging out at the end of this year.
404
00:23:22,755 -->
00:23:25,131
And one that does kind of break your GPU performance, so be careful.
405
00:23:25,294 -->
00:23:30,195
But the clear MVPs for home labs, if you need modern graphics hardware,
406
00:23:30,195 -->
00:23:33,990
is 618. and if you just want to set it and forget it forever, is 6.12.
407
00:23:34,553 -->
00:23:39,121
I mean, 6.12 is getting the fixes that we talked about for the performance regressions.
408
00:23:39,400 -->
00:23:43,974
It's getting support until 2035, and it's going to support 486.
409
00:23:44,369 -->
00:23:47,435
Probably also has AppleTalk in there. I mean, probably has AppleTalk, right?
410
00:23:47,435 -->
00:23:48,035
It does.
411
00:23:48,035 -->
00:23:50,592
Oh, my goodness. What an MVP of a kernel.
412
00:23:50,923 -->
00:23:52,624
Are we calling it the legacy kernel?
413
00:23:54,069 -->
00:23:57,935
I think we should call it the MVP super kernel. I mean, that's what they call it. It's the MVP super.
414
00:23:58,371 -->
00:23:58,771
Let's do it.
415
00:23:59,236 -->
00:24:02,165
We got all kinds of links in the show notes. if you would like to nerd out and
416
00:24:02,165 -->
00:24:05,485
read more. And there is some good reading in there. And you know where to find
417
00:24:05,485 -->
00:24:07,171
those show notes over at linuxunplugged.com.
418
00:24:17,925 -->
00:24:21,805
Well, we got a really nice email into the show this week, or more accurately,
419
00:24:21,805 -->
00:24:24,440
into my personal email. And here's the title.
420
00:24:24,759 -->
00:24:28,143
Serious Security Advisory for Your Cold Card.
421
00:24:29,188 -->
00:24:32,671
And I thought this was a scam at first because I've been getting a lot of really,
422
00:24:33,466 -->
00:24:37,617
quite sophisticated spam into my email. And it's been very entertaining to watch.
423
00:24:37,617 -->
00:24:39,399
But nope, this one's real.
424
00:24:39,881 -->
00:24:45,285
And it got me a little nervous about what the heck is happening out there.
425
00:24:45,744 -->
00:24:48,797
Do you guys have any idea why I got this email?
426
00:24:48,797 -->
00:24:51,717
This is really a tragic story.
427
00:24:52,217 -->
00:24:59,057
As of this weekend, almost 2,000 addresses have been drained of nearly $90 million worth of Bitcoin,
428
00:25:00,057 -->
00:25:03,907
affecting cold card wallets, initially the cold card Mark III devices,
429
00:25:04,610 -->
00:25:08,277
and then later expanded to include certain Mark IV, Mark V, and cold card Q
430
00:25:08,617 -->
00:25:11,557
firmware versions, basically everything but the most current emergency firmware
431
00:25:11,557 -->
00:25:12,743
that was released over the weekend.
432
00:25:13,478 -->
00:25:18,424
And it comes down to an issue in how the cold card generated random numbers.
433
00:25:19,271 -->
00:25:24,887
You know, we're going to get into this. Randomness has been a real challenge
434
00:25:24,887 -->
00:25:29,482
and a challenge for Linux, too, that has gone wrong in catastrophe kind of ways.
435
00:25:30,370 -->
00:25:35,517
So in this case, the cold card had a firmware bug that sent the seed generation down the wrong path.
436
00:25:35,517 -->
00:25:41,717
Instead of using the hardware that was built in to derive a seed phrase or a
437
00:25:41,717 -->
00:25:45,736
key that had low entropy, it was falling back to like a Python script.
438
00:25:45,922 -->
00:25:50,997
In fact, a micro Python script that roughly generated an entropy of 40 bits
439
00:25:50,997 -->
00:25:53,898
on the Mark III and 72 bits on the later devices.
440
00:25:54,090 -->
00:25:57,807
Yeah, it's essentially the micro Python runtime provides sort of like a random,
441
00:25:57,807 -->
00:26:00,138
a basic random generated. It'd be fine if you were using it for,
442
00:26:00,272 -->
00:26:03,527
like, you know, an offset in a cron job or something like that.
443
00:26:03,527 -->
00:26:06,497
But it is not meant to be cryptographically secure.
444
00:26:06,497 -->
00:26:10,779
Yeah, it doesn't generate complex enough cryptography that it can't be figured out.
445
00:26:11,365 -->
00:26:14,327
So the hardware was designed to generate strong randomness. The hardware was
446
00:26:14,327 -->
00:26:19,183
present. It was working, but it just wasn't being used, which is really a tragedy.
447
00:26:19,735 -->
00:26:25,133
And so because people can now mathematically derive the...
448
00:26:25,993 -->
00:26:29,681
the seeds, they are able to essentially restore wallets on remote systems and
449
00:26:29,681 -->
00:26:33,671
drain the cold cards without ever having your cold card connected to the internet
450
00:26:33,671 -->
00:26:34,681
or your computer active.
451
00:26:35,171 -->
00:26:38,341
Yeah. So essentially without the hardware part that was supposed to be like
452
00:26:38,341 -->
00:26:43,021
the secure random entropy, the fallback random number generator was seeded from
453
00:26:43,021 -->
00:26:46,811
the chip's UID, which is like a unique ID on the chip that has a limited possible
454
00:26:46,811 -->
00:26:50,101
amount of numbers, and a boot time timer state.
455
00:26:50,542 -->
00:26:55,301
And neither of those are truly secret. And a lot of them, it turns out to be
456
00:26:55,301 -->
00:26:58,461
kind of closer to a predictable range than something random.
457
00:26:58,821 -->
00:27:02,441
And then so if you can kind of constrain the space of things that the initial
458
00:27:02,441 -->
00:27:05,951
secrets generated from, then you can explore that space and the rest of it's
459
00:27:05,951 -->
00:27:07,110
all just deterministic.
460
00:27:07,585 -->
00:27:11,352
And then you can generate a whole bunch of private keys at once and then just go check them.
461
00:27:11,642 -->
00:27:15,241
Yeah. And before the computing machine became easily accessible to us,
462
00:27:15,241 -->
00:27:18,211
analysis confirmed in the past that the hardware worked. That's what people
463
00:27:18,211 -->
00:27:21,441
really focused on in their audits is that the hardware did what the hardware said it did.
464
00:27:21,481 -->
00:27:27,601
But they didn't test if the actual path to activate it was working until LLM-assisted
465
00:27:27,601 -->
00:27:30,160
security reviews came along and discovered it.
466
00:27:30,874 -->
00:27:35,181
Yeah, because the code to use the hardware is in the binary.
467
00:27:35,181 -->
00:27:38,252
Like it's built in, it's available. It's just never called.
468
00:27:38,443 -->
00:27:44,481
Yeah, yeah. So the code exists, it works, but they failed to verify it was actually being used.
469
00:27:45,113 -->
00:27:49,369
And so as a result, attackers have been able to access people's funds.
470
00:27:50,106 -->
00:27:52,661
And that's a tragedy because people thought they were doing the best thing they
471
00:27:52,661 -->
00:27:54,919
could for themselves. They were keeping them offline and all of that.
472
00:27:55,661 -->
00:28:01,951
And it got us thinking about some of the previous times in Linux where random
473
00:28:01,951 -->
00:28:03,638
number generation has gone horribly wrong.
474
00:28:04,137 -->
00:28:09,063
It's not necessarily a hardware story itself. It's really about the difficulty,
475
00:28:09,551 -->
00:28:12,631
of generating true randomness on deterministic systems, right?
476
00:28:12,631 -->
00:28:15,051
Because if you give a computer the same input, you're going to get the same
477
00:28:15,051 -->
00:28:16,053
output every single time.
478
00:28:16,430 -->
00:28:20,001
So the limitation then is how do you generate something that is truly uniquely
479
00:28:20,001 -->
00:28:21,708
random on a deterministic system?
480
00:28:22,461 -->
00:28:27,094
And it has to be something that's sound and secure and hopefully as future-proof as possible.
481
00:28:27,570 -->
00:28:31,053
So when something like this happens, well, you don't get rugged.
482
00:28:31,587 -->
00:28:35,739
And that is more difficult than it seems. And it's something that Linux has
483
00:28:35,739 -->
00:28:39,349
been working on since the very early days, like since 1994.
484
00:28:39,349 -->
00:28:42,569
Yeah. It's essentially cryptographic security is essentially a bet,
485
00:28:42,569 -->
00:28:44,991
right? It's like not a law of physics. It's not a guarantee.
486
00:28:45,327 -->
00:28:50,249
You are just trying to do everything you can to have a giant pool of randomness to pull from.
487
00:28:50,778 -->
00:28:55,879
and then keep that hidden and secret and intact across the entire chain.
488
00:28:55,879 -->
00:28:59,579
And there really is a chain. Like it's not just, you know, give me number and
489
00:28:59,579 -->
00:29:01,529
done. It takes a lot of setup.
490
00:29:02,214 -->
00:29:06,299
So kind of how it works today, the very first step is some of the most important
491
00:29:06,299 -->
00:29:09,969
and that's getting quote unquote unpredictable inputs. And this is stuff that
492
00:29:09,969 -->
00:29:12,388
comes from a large space that's really hard to guess.
493
00:29:12,788 -->
00:29:17,279
So Linux, the kernel is continuously collecting small little timing variations
494
00:29:17,279 -->
00:29:20,179
and environmental noise and pieces of the system that are sensitive to things
495
00:29:20,179 -->
00:29:23,649
like that. So when does a hardware interrupt fire? Which one fired?
496
00:29:23,649 -->
00:29:28,759
It can even be like noise from the disk, user input, just things that the system
497
00:29:28,759 -->
00:29:29,979
generates that are unique.
498
00:29:29,979 -->
00:29:34,180
Totally. CPU timing, bootloader provided seeds you can use if you want to try,
499
00:29:34,627 -->
00:29:36,769
to bootstrap randomness in a VM.
500
00:29:37,065 -->
00:29:41,989
You can also use hardware things either like included by your CPU manufacturer
501
00:29:41,989 -->
00:29:44,106
or an add-on device or something like that.
502
00:29:44,600 -->
00:29:48,319
And part of the idea here is that no, you're not trying to make sure to have
503
00:29:48,319 -->
00:29:52,249
every single source needing to be perfect on its own, you can try to mix them
504
00:29:52,249 -->
00:29:55,439
together so that even if some don't have as much randomness in there as you
505
00:29:55,439 -->
00:29:59,478
think, you're still getting a good final randomness on the other side.
506
00:30:00,401 -->
00:30:04,842
So after you're able to find a bunch of different sources, you mix that into your entropy pool.
507
00:30:05,375 -->
00:30:10,161
And you need to be careful because the most dangerous time is when you boot something up fresh.
508
00:30:10,161 -->
00:30:13,251
Because there hasn't been a lot of time for environmental noise to get into
509
00:30:13,251 -->
00:30:15,721
the system. There hasn't been that you haven't really done anything yet.
510
00:30:15,721 -->
00:30:20,111
It's all kind of starting code cold from the very non-random initial firmware
511
00:30:20,111 -->
00:30:22,633
and like, you know, first code that runs on the system.
512
00:30:23,062 -->
00:30:27,021
And so a lot of work over the years has been around like, do we need to block
513
00:30:27,021 -->
00:30:30,431
if there's not enough randomness or not? What does it mean to have enough randomness or not?
514
00:30:30,611 -->
00:30:33,981
And Intel has tried to solve it with their RAND kind of built-in stuff that's
515
00:30:33,981 -->
00:30:36,611
trying to generate some noise. But, of course, that thing's a black box.
516
00:30:36,611 -->
00:30:38,711
You can't use it as the one source of truth.
517
00:30:38,711 -->
00:30:41,001
Yes. And that's where, like, the kernel folks have said, like,
518
00:30:41,001 -->
00:30:44,291
it's OK to use, we think, but we're not going to rely on it in terms of being
519
00:30:44,291 -->
00:30:46,951
the only option. We're going to make sure we mix it into a bunch of other stuff.
520
00:30:46,951 -->
00:30:49,371
So even if it is compromised, that limits the damage.
521
00:30:49,371 -->
00:30:55,361
Yeah, I would say, in a way, the random generator in Linux is a story of learning
522
00:30:55,361 -->
00:31:00,644
that we need multiple sources and we need to make sure that we don't trust any one particular source.
523
00:31:01,149 -->
00:31:05,861
We have a clip from Jason Donfeld, and he took over the Linux random generation
524
00:31:05,861 -->
00:31:08,967
system from Theodore So, who originally created it in 94.
525
00:31:09,472 -->
00:31:13,901
And this was some of Jason's observations when he started working on it.
526
00:31:13,901 -->
00:31:17,811
And, you know, he's a developer and he tells it like it is. But I think if you
527
00:31:17,811 -->
00:31:19,751
look through that, it's a fair assessment.
528
00:31:19,751 -->
00:31:23,481
It's in Random.c, which is really old code. It dates back, as far as I could
529
00:31:23,481 -->
00:31:26,181
find, to version 1.3.30. I
530
00:31:26,181 -->
00:31:29,604
mean, it's really ancient code. There's a copyright date on it from 1994.
531
00:31:30,266 -->
00:31:33,998
So I think that even the code was living someplace else before there.
532
00:31:35,188 -->
00:31:39,511
But actually, considering when it was written, it's not so bad.
533
00:31:40,436 -->
00:31:45,817
it's held up remarkably well despite the knowledge that was around in that time,
534
00:31:47,460 -->
00:31:52,905
and I think for all intents and purposes it's okay, it's held up it's been done,
535
00:31:53,874 -->
00:31:56,783
with some reasonable intelligence but yeah,
536
00:31:57,967 -->
00:32:01,640
Still, over time, there's been a lot of complexity added to it.
537
00:32:02,116 -->
00:32:06,022
But that complexity is kind of necessary in order to generate randomness that
538
00:32:06,022 -->
00:32:07,932
doesn't have one single point of failure as well.
539
00:32:07,932 -->
00:32:11,172
Yeah, I think his point, too, is sort of identifying, like, what's the essential
540
00:32:11,172 -->
00:32:14,412
complexity and what's sort of the complexity that's just crept in over years
541
00:32:14,412 -->
00:32:18,951
of maintenance? And how do we keep what we need, but also keep it simple enough to understand?
542
00:32:19,206 -->
00:32:24,338
And so on Linux, as an end user, you perceive this as there's dev random and there's dev u random.
543
00:32:24,854 -->
00:32:28,062
And when I was reading about this, one of the things that I thought was really
544
00:32:28,062 -->
00:32:32,502
fascinating is early on, DevRandom, or maybe it was DevURandom,
545
00:32:32,502 -->
00:32:36,813
I can't remember, but one of them would essentially let an application ask for a random number.
546
00:32:37,679 -->
00:32:41,220
but wouldn't force the application to wait for the correct answer.
547
00:32:41,376 -->
00:32:44,617
And so applications would query, but this thing would take a minute to generate,
548
00:32:44,617 -->
00:32:47,327
and then they would be like, okay, got it, when they didn't actually have like
549
00:32:47,327 -->
00:32:51,895
a truly random number generated. And so later on, they had to create an API,
550
00:32:52,365 -->
00:32:55,262
that would force the application.
551
00:32:55,807 -->
00:32:58,315
It's just called get random. It's the get random API on the Linux kernel.
552
00:32:58,768 -->
00:33:02,237
They had to create this API that would essentially manage all of that for the
553
00:33:02,237 -->
00:33:05,397
application so they could, in a sense, force the application to wait for true
554
00:33:05,397 -->
00:33:06,499
randomness to be generated.
555
00:33:06,743 -->
00:33:11,097
but then for compatibility reasons they had to like allow the api to also keep
556
00:33:11,097 -->
00:33:13,467
that working in the background and just allow the application to move on and
557
00:33:13,467 -->
00:33:16,267
think it had everything it needed like it's it's this funny kind of line they
558
00:33:16,267 -->
00:33:21,324
have to walk every time they try to make a change to the system so i imagine complexity does seep in.
559
00:33:21,853 -->
00:33:25,887
Yeah and i think part of it was just being confused around like the intentions
560
00:33:25,887 -->
00:33:30,277
like you random versus random was like never super clear but what the new interface
561
00:33:30,277 -->
00:33:34,189
is able to do and get random is it has um underneath there's crng ready
562
00:33:34,421 -->
00:33:38,427
and so the kernel now tracks whether its random number generator has been seeded with enough
563
00:33:38,803 -->
00:33:42,767
quote-unquote real entropy to be trusted and that's the gate you want
564
00:33:43,187 -->
00:33:46,327
to wait for it doesn't really matter if you've generated a bunch after that
565
00:33:46,327 -->
00:33:50,170
which is sort of where the you random versus random didn't ultimately make sense
566
00:33:50,466 -->
00:33:52,584
but what does matter is especially at early boot
567
00:33:53,009 -->
00:33:57,527
has the pool itself had enough mixed in entropy yet and that you probably do
568
00:33:57,527 -->
00:34:00,152
want to wait for and that's where it becomes important to like,
569
00:34:00,750 -->
00:34:04,757
you know not roll your own stuff to rely on standard apis to rely on trusted
570
00:34:04,757 -->
00:34:09,027
audited libraries that are using the correct code paths because that can and
571
00:34:09,027 -->
00:34:10,630
does change over the years.
572
00:34:11,356 -->
00:34:13,962
There's been improvements. Is there anything else you want to touch on before
573
00:34:13,962 -->
00:34:15,402
we talk about when it went horribly wrong?
574
00:34:16,110 -->
00:34:18,942
No, I guess just the rough idea is,
575
00:34:21,402 -->
00:34:25,662
you grab random bits, you mix them into a pool, you wait until that pool has
576
00:34:25,662 -->
00:34:30,402
sufficient entropy, then you use deterministic pseudo-random number generator
577
00:34:30,402 -->
00:34:33,943
stuff like cha-cha 20 in the current kernel and that sort of stretches that value.
578
00:34:34,234 -->
00:34:39,232
it can't add more stuff, but it can turn like initial secret seeds into big
579
00:34:39,232 -->
00:34:40,729
long streams of random numbers.
580
00:34:40,956 -->
00:34:43,572
And that's what you actually pull from. And they sort of generate ephemeral
581
00:34:43,572 -->
00:34:46,282
keys and then generate stuff and then throw them away. And there's a whole process
582
00:34:46,282 -->
00:34:49,162
around that, but it's not adding new entropy. It's just using the entropy you
583
00:34:49,162 -->
00:34:52,728
have to get as many random bits as you actually need for user space.
584
00:34:54,286 -->
00:34:57,696
Okay, so when you don't get enough random bits, you have situations like the
585
00:34:57,696 -->
00:35:05,966
cold card or a situation that lasted multiple years, CVE 2008-0166,
586
00:35:05,966 -->
00:35:08,690
also known as Debian's OpenSSL bug.
587
00:35:09,826 -->
00:35:14,926
I remember this one. And it started very innocently. A Debian package maintainer
588
00:35:14,926 -->
00:35:19,806
was trying to silence a memory analysis tool, a Valgrant warning about OpenSSL
589
00:35:20,166 -->
00:35:22,059
utilizing uninitialized memory.
590
00:35:22,366 -->
00:35:25,913
And it seemed like, okay, well, this is an easy two-line fix. Clean that up.
591
00:35:26,145 -->
00:35:29,466
And normally that's good, right? Because why are you reading from memory that
592
00:35:29,466 -->
00:35:32,146
hasn't been initialized? It can't possibly have a value you want.
593
00:35:32,146 -->
00:35:37,140
Right. So they remove those lines of code. They ship it. Everything seems to be fine.
594
00:35:37,691 -->
00:35:42,606
The issue was is that they had basically really cut down the entropy of the
595
00:35:42,606 -->
00:35:47,866
keys that were getting generated for things like OpenSSL, which you can imagine what that impacts.
596
00:35:47,866 -->
00:35:51,426
In fact, it didn't just impact OpenSSL. It was like everything that needed a
597
00:35:51,426 -->
00:35:57,996
cert. So SSH, all your X509 keys, like everything got affected by this.
598
00:35:58,385 -->
00:36:03,691
And the worst part was it was out in the wild for two years before researchers discovered it.
599
00:36:04,606 -->
00:36:12,625
So this bug, which affected OpenSSL, the random number generator,
600
00:36:13,726 -->
00:36:19,875
was introduced two years ago due to a Debian-specific patch.
601
00:36:20,467 -->
00:36:22,632
So it's a Tebian-specific bug,
602
00:36:24,780 -->
00:36:31,836
and remained undiscovered for two years, almost exactly two years until Luciano
603
00:36:31,836 -->
00:36:38,503
discovered this, and it was published on May of 2008.
604
00:36:39,217 -->
00:36:43,996
Think about the scope of this for a moment, right? You've got to reissue and
605
00:36:43,996 -->
00:36:50,549
revoke every key that was created from 2006 to 2008.
606
00:36:51,083 -->
00:36:52,759
There were, I mean, just...
607
00:36:53,817 -->
00:36:56,503
Maybe millions, could have been in the millions that were affected by that.
608
00:36:56,503 -->
00:36:58,853
It was a massive, massive issue.
609
00:36:58,853 -->
00:37:04,219
Yeah, it also affected a chunk of live Tor relay nodes at the time, which isn't great.
610
00:37:05,063 -->
00:37:09,103
Under the hood, what was happening is that OpenSSL was actually intentionally
611
00:37:09,103 -->
00:37:14,403
using uninitialized memory as an unpredictability source. The idea is on different
612
00:37:14,403 -->
00:37:17,713
systems, other processes, whatever has been in that system, how it came up in
613
00:37:17,713 -->
00:37:19,388
the hardware, all of that will be different.
614
00:37:19,642 -->
00:37:24,936
And so it's one of the very few times you might actually legitimately read from uninitialized memory.
615
00:37:25,081 -->
00:37:28,323
Valgrind doesn't know that. And there hadn't been any infrastructure or communication
616
00:37:28,323 -->
00:37:31,343
or clearly comments around it or whatever to, like, make it clear.
617
00:37:31,343 -->
00:37:34,543
And so when you remove that, it wasn't like there was no other sources,
618
00:37:34,543 -->
00:37:38,663
but it was essentially only the process ID that was left in the pool of entropy.
619
00:37:38,663 -->
00:37:42,161
And so that's like a number between 1 and, like, 32K at the time.
620
00:37:43,443 -->
00:37:46,733
And that's not enough, right? Right. You'll start having. And so what how they
621
00:37:46,733 -->
00:37:50,263
found it is that they found real world collisions out there.
622
00:37:50,263 -->
00:37:50,553
Right.
623
00:37:50,553 -->
00:37:55,473
And that's the only way you can, because if you just look at output from this
624
00:37:55,473 -->
00:37:58,313
random number generator, you can do statistical tests on it.
625
00:37:58,313 -->
00:38:01,713
You can look at just sampling that one value won't tell you.
626
00:38:01,713 -->
00:38:04,833
It doesn't tell you how big of a space it came from you. The only way to do
627
00:38:04,833 -->
00:38:09,337
it is by looking at huge samples of the outputs in the real world, effectively.
628
00:38:09,674 -->
00:38:13,143
And so it's it's really hard to do, especially for a developer making a change.
629
00:38:13,143 -->
00:38:15,258
And it's kind of the thing that tends to favor the attacker.
630
00:38:16,773 -->
00:38:22,195
It strikes me, too, that if an automation tool led to a mistake like this today,
631
00:38:22,683 -->
00:38:26,003
we would probably spend 90 percent of the discussion having an existential panic
632
00:38:26,003 -->
00:38:29,266
about automation tools and 10 percent of the discussion about the actual bug.
633
00:38:29,794 -->
00:38:32,083
But back then, it wasn't that wasn't the conversation at all.
634
00:38:32,083 -->
00:38:36,139
And it was so it was so massive. And there was a lot of downstream issues as well.
635
00:38:37,127 -->
00:38:41,143
And it's reminiscent of the cold card issue.
636
00:38:41,683 -->
00:38:46,021
When you dig through it, you know, it looks like this person that made this
637
00:38:46,021 -->
00:38:48,741
commitment, I don't know for sure, but it looks like maybe they were a Python
638
00:38:48,741 -->
00:38:51,701
person and they didn't understand the C code and they didn't really know what they were looking at.
639
00:38:52,125 -->
00:38:56,511
They thought they applied a fix that solved an error that was happening when
640
00:38:56,511 -->
00:38:58,361
they were compiling the firmware.
641
00:38:58,361 -->
00:39:01,891
They would get this compiler error over and over again, and the guy went in,
642
00:39:01,891 -->
00:39:05,781
or the gal, I don't know who it was, went in and made the change that ultimately
643
00:39:05,781 -->
00:39:09,058
bypassed the hardware and used the MicroPython.
644
00:39:09,991 -->
00:39:13,441
And they resolved the build error and considered it fixed.
645
00:39:13,713 -->
00:39:19,761
And all the tests were making sure that the build flag was there to say enable
646
00:39:19,761 -->
00:39:21,551
the hardware RNG, and it was there.
647
00:39:21,891 -->
00:39:25,041
It was just supposed to be a one, and it was a zero. And there was no check
648
00:39:25,041 -->
00:39:27,931
on the value. There was only ever a check that the var existed.
649
00:39:28,551 -->
00:39:33,595
So I just sat there for 20 months just waiting for somebody to come along with a tool to find it.
650
00:39:34,623 -->
00:39:37,821
And it is a case, right, if you did add your own passphrase thing on top,
651
00:39:37,821 -->
00:39:40,321
if you had brought in your own sources of randomness.
652
00:39:40,321 -->
00:39:43,145
Yeah, which you can with a cold card. You can provide your own entropy.
653
00:39:43,458 -->
00:39:46,421
But if you didn't. You have to do that, right? And if you're buying a device
654
00:39:46,421 -->
00:39:47,411
like that, you assume it's...
655
00:39:47,411 -->
00:39:49,461
Part of the value was like, well, this has a hardware source.
656
00:39:49,461 -->
00:39:51,091
That's part of why I'm buying it.
657
00:39:51,751 -->
00:39:55,392
It's so sad that the exact thing they were promising is the thing they didn't do.
658
00:39:56,951 -->
00:39:57,171
Yes.
659
00:39:57,491 -->
00:39:58,181
Unintentionally.
660
00:39:58,181 -->
00:40:02,288
And it was for people that had all the best intentions. But it makes me realize,
661
00:40:02,445 -->
00:40:04,761
you said at the beginning, or towards the middle there, Wes,
662
00:40:04,761 -->
00:40:08,337
you said, you know, don't reinvent the wheel. Try to use things that exist.
663
00:40:09,531 -->
00:40:14,721
In a crazy twist of fate, people that rolled on a Linux box and used the Linux
664
00:40:14,721 -->
00:40:17,509
random number generator are better off.
665
00:40:18,707 -->
00:40:22,747
And I think there's a lesson in that. And it's why Linux is so important to
666
00:40:22,747 -->
00:40:27,727
us as a society is that it is a general technology platform where there are
667
00:40:27,727 -->
00:40:31,916
people with mutual incentives that are improving the system and making it and testing it.
668
00:40:32,305 -->
00:40:37,147
And every time we go outside of that and we recreate something, you take on risk.
669
00:40:37,147 -->
00:40:41,457
And this time it's a type of risk that was at the firmware provider level when
670
00:40:41,457 -->
00:40:46,317
a lot of people were thinking about physical security and air gapping and 9-volt
671
00:40:46,317 -->
00:40:47,896
batteries and all this kind of stuff.
672
00:40:49,047 -->
00:40:50,740
And we're not really focused on the actual threat.
673
00:40:50,978 -->
00:40:55,877
And it also speaks to open source is not enough. Maybe that will help in our
674
00:40:55,877 -->
00:40:59,007
new era of automated reviews. But the code was out there, right?
675
00:40:59,007 -->
00:41:02,877
It wasn't that it was, obviously the hardware is somewhat hidden, but the code was there.
676
00:41:02,877 -->
00:41:05,837
You know, it wasn't like a truly open source license. And I think if it had
677
00:41:05,837 -->
00:41:09,697
been like a GPL license, maybe more people would have built off of it and discovered
678
00:41:09,697 -->
00:41:12,657
this. But because they didn't want people doing that, they did like some sort
679
00:41:12,657 -->
00:41:14,895
of like read only you can view license kind of crap.
680
00:41:15,400 -->
00:41:18,204
And this is also one of the side effects of that.
681
00:41:18,598 -->
00:41:22,097
And it just goes back to like, that's why Linux is so important,
682
00:41:22,097 -->
00:41:25,127
is we have solved some of these problems and they continue to be monitored and
683
00:41:25,127 -->
00:41:27,307
maintained and it's done right.
684
00:41:27,307 -->
00:41:32,117
And it really comes back to like we invented it once and we've continued to iterate on it.
685
00:41:32,117 -->
00:41:36,617
And what started back in 1994 as kind of a simple system has developed into
686
00:41:36,617 -->
00:41:44,287
this truly robust multi-source of noise and entropy, truly great as we can get
687
00:41:44,287 -->
00:41:46,901
on these determined systems, random number generator.
688
00:41:47,483 -->
00:41:52,727
And that's just one of the many gifts of Linux is that these things like networking
689
00:41:52,727 -->
00:41:56,977
and disk IO and random number generation and cryptographic signals,
690
00:41:56,977 -->
00:42:00,307
all this stuff is handled by Linux for us. Such a gift.
691
00:42:00,307 -->
00:42:04,307
We get a world-class product for free. You don't have to go buy a proprietary,
692
00:42:06,067 -->
00:42:10,907
cryptographic enhanced private OS from Microsoft or from Qualcomm or for whatever.
693
00:42:10,907 -->
00:42:12,767
And just trust that they got that aspect right.
694
00:42:12,767 -->
00:42:16,507
Right. No, you just use the standard kernel that is open source and anyone can download.
695
00:42:25,622 -->
00:42:29,216
Oh my goodness, gents, there are some boosts here. We're going to start with
696
00:42:29,216 -->
00:42:31,172
our baller, Greg the Lawyer.
697
00:42:35,426 -->
00:42:39,406
Greg came in with 133,333,
698
00:42:42,506 -->
00:42:42,586
sets.
699
00:42:42,586 -->
00:42:42,948
Whoa!
700
00:42:52,328 -->
00:42:54,923
Thank you, Greg. Appreciate that.
701
00:42:55,236 -->
00:42:59,477
Greg is also adhering by the rules of the show. One of the boosts is a row of sticks.
702
00:43:00,322 -->
00:43:00,717
Was that a row?
703
00:43:00,717 -->
00:43:03,497
And it said, well, the other one is actually.
704
00:43:03,497 -->
00:43:03,937
It is now.
705
00:43:05,777 -->
00:43:10,377
We've said that, I think, twice. He wants to reward early movers on Buzz.
706
00:43:10,757 -->
00:43:16,047
Not for me, but as a Mac user since 1984, I appreciate those early adopters.
707
00:43:16,047 -->
00:43:16,807
Aw, thank you.
708
00:43:16,807 -->
00:43:17,497
Aw, sweet.
709
00:43:17,497 -->
00:43:22,367
Yeah, Greg came coming in with a live boost here because we got low support
710
00:43:22,367 -->
00:43:25,467
for last week's episode and we realized we probably should have waited a year
711
00:43:25,467 -->
00:43:26,937
to cover Buzz, and so thank you.
712
00:43:26,937 -->
00:43:27,057
Greg.
713
00:43:27,557 -->
00:43:29,217
And thanks for hanging with us, audience.
714
00:43:29,217 -->
00:43:33,177
Also a few Satoshis in there to feed those chickens. I do have,
715
00:43:33,577 -->
00:43:36,527
I wonder how I could get those public in a way that wouldn't drain my internet.
716
00:43:37,015 -->
00:43:41,100
But I do have a few cameras set up on those chickens. But do I want to dedicate,
717
00:43:42,575 -->
00:43:46,284
one to two megabits of my precious Starlink upload link? I don't know.
718
00:43:46,551 -->
00:43:47,487
But if I can think of a way.
719
00:43:47,537 -->
00:43:49,878
Isn't that why you got the mini?
720
00:43:50,069 -->
00:43:53,037
Well, no, I do the backup. Oh. The connecting backup.
721
00:43:53,037 -->
00:43:54,427
We've been planning this for months, really.
722
00:43:54,427 -->
00:43:57,607
And then if I have to switch to it for production, maybe I pause the streams or something.
723
00:43:57,607 -->
00:44:01,197
What about a system where people, it's like you boost and then the stream is
724
00:44:01,197 -->
00:44:02,877
opened for a certain amount of time?
725
00:44:02,877 -->
00:44:04,417
Opens the Ngrok tunnel to your knees.
726
00:44:04,417 -->
00:44:07,657
Yeah, so you get like 10, you know, send in a couple sets and you get like 10
727
00:44:07,657 -->
00:44:08,507
minutes of chicken camp.
728
00:44:08,507 -->
00:44:11,426
That's great. They are the best chickens. You would not believe.
729
00:44:12,277 -->
00:44:14,627
Like Labradors. Like they get on our lap and they just snuggle.
730
00:44:14,627 -->
00:44:19,287
It's ridiculous. And Boss, the rooster, he's got a routine now in the evening
731
00:44:19,287 -->
00:44:21,741
around sunset. He comes in and watches TV on the couch with us.
732
00:44:22,856 -->
00:44:23,674
What's his favorite show?
733
00:44:24,481 -->
00:44:27,860
I mean, mostly it's Magnum, but last night he was watching YouTube.
734
00:44:29,117 -->
00:44:32,977
He doesn't mind. He just likes the colors. Nice. Turd Ferguson comes.
735
00:44:32,977 -->
00:44:34,157
And thank you very much, Greg.
736
00:44:34,837 -->
00:44:35,707
You basically brought up the
737
00:44:35,707 -->
00:44:40,031
whole trend for the episode. Turd Ferguson comes in with a row of McDucks.
738
00:44:42,081 -->
00:44:48,222
That's 22,222 Satoshis. Oh, it's a live boost.
739
00:44:48,617 -->
00:44:52,721
The cold card mess has me tired. We trusted the hardware because it was offline,
740
00:44:53,081 -->
00:44:57,063
but the bug was already baked in and waiting fun times ahead.
741
00:44:58,246 -->
00:45:01,526
Yeah, pretty brutal. And then it can just sort of disappear out from under you.
742
00:45:01,526 -->
00:45:04,166
You don't have to do anything. It's just moved in a transaction,
743
00:45:04,166 -->
00:45:05,496
and the next time you check, it's gone.
744
00:45:05,496 -->
00:45:07,814
You're like Brent and you take a few days, you go check, and it's gone.
745
00:45:09,046 -->
00:45:11,646
I did check this morning because I thought that was a responsible thing to do.
746
00:45:11,646 -->
00:45:16,766
Not gone yet. Don't try anything on me. But I've got some homework to do after the show.
747
00:45:17,266 -->
00:45:18,466
Can you describe your gold card more to me?
748
00:45:19,026 -->
00:45:24,706
You know, it makes me think like, yeah, what else? That is a good point.
749
00:45:25,166 -->
00:45:26,096
Oh, that's a good question.
750
00:45:26,096 -->
00:45:29,696
We're just getting this thing rolling, right? Because what do you think the
751
00:45:29,696 -->
00:45:36,216
coincidence is that it happened a few days after Kimmy K3 with Open Weights came out publicly?
752
00:45:36,216 -->
00:45:40,006
And it's one of the only really current top tier models that doesn't restrict
753
00:45:40,006 -->
00:45:43,438
you from doing cybersecurity stuff. And then three days later, this exploit's found.
754
00:45:44,553 -->
00:45:48,816
I think it depends on how long it took to do some of the pre-work.
755
00:45:48,816 -->
00:45:50,326
But it's a good question.
756
00:45:50,326 -->
00:45:54,146
We may find they were cooking for months. Or we may find that they slammed it
757
00:45:54,146 -->
00:45:57,516
in 10 minutes with K3. Because the reason why I bring that up is now people
758
00:45:57,516 -->
00:46:00,786
have tried it, and it finds it in 5, 10 minutes. It's just immediate.
759
00:46:00,786 -->
00:46:03,916
Yeah, I think the main question is from finding it, how long does it take to
760
00:46:03,916 -->
00:46:05,666
generate all of the private keys?
761
00:46:05,666 -->
00:46:07,773
It's a massive sweep and all of that. Yeah, yeah, for sure.
762
00:46:08,016 -->
00:46:11,824
And I assume there was some staging before you actually submit all the transactions.
763
00:46:11,981 -->
00:46:13,699
but who knows that's a great question.
764
00:46:14,007 -->
00:46:18,206
I'm sure we'll be i mean that's the thing about the blockchain people are already putting it all.
765
00:46:18,206 -->
00:46:23,719
Together well e scott boosts in with 2371 sats,
766
00:46:24,926 -->
00:46:29,779
what what what what happened with nextcloud i have two separate instances running
767
00:46:29,988 -->
00:46:34,416
i even moved slash data off my windows 7 ntfs share to a proper zfs mirror with
768
00:46:34,416 -->
00:46:36,446
backups also this is a star trek.
769
00:46:41,278 -->
00:46:46,522
So a quick version is I had like a cold stop will not be using xCloud ever again
770
00:46:46,522 -->
00:46:52,806
moment just because the data it wiped out was some of the most valuable data possible.
771
00:46:53,166 -->
00:46:58,262
And so what happened is I went to view a text file just using the viewer like
772
00:46:58,262 -->
00:47:01,618
it's in the web interface and you click on a .txt file,
773
00:47:02,280 -->
00:47:06,432
and it opened and the instant it opened, it wiped the document,
774
00:47:06,432 -->
00:47:09,502
it put some escape characters in the top left corner and then it immediately
775
00:47:09,502 -->
00:47:10,721
wrote that to the file system.
776
00:47:11,824 -->
00:47:14,792
and it should have just been a document viewer. It shouldn't have been writing,
777
00:47:14,792 -->
00:47:17,752
and it did it instantly. And Wes, you looked it up, and it turned out to be
778
00:47:17,752 -->
00:47:23,834
some sort of in-browser issue that is very rare but happened on the client-side rendering.
779
00:47:24,931 -->
00:47:28,502
And I realized for what I need, there was just too much going on there.
780
00:47:28,502 -->
00:47:32,092
And the fact that by just viewing my most important document,
781
00:47:32,092 -->
00:47:35,252
which is what I used NextCloud for, was for its privacy, totally offline,
782
00:47:35,252 -->
00:47:38,340
off the Internet, by just viewing that document, I wiped it out.
783
00:47:38,943 -->
00:47:43,242
And that was when I was like, I don't need any of this. And I decided at that
784
00:47:43,242 -->
00:47:45,683
moment I was going to stop using it, which has been a real pain in my butt.
785
00:47:48,005 -->
00:47:53,512
But when something fails that catastrophically on you, sometimes it just leaves
786
00:47:53,512 -->
00:47:54,202
a bad taste in your mouth.
787
00:47:54,902 -->
00:47:57,032
And that's after it worked for me for a long, long time.
788
00:47:57,032 -->
00:47:59,432
And it doesn't mean it still couldn't be a great CalDev suite.
789
00:47:59,432 -->
00:48:02,432
There's lots of roles it still makes sense for, especially if you have robust
790
00:48:02,432 -->
00:48:04,312
backups and it's just one place to look at them.
791
00:48:04,312 -->
00:48:06,902
It was just sort of the last straw, honestly, because it's been a lot to upgrade
792
00:48:06,902 -->
00:48:10,859
and manage over the years. and I sort of have rolled back what I use it for to some degree.
793
00:48:11,342 -->
00:48:14,603
And so that was sort of the last thing I was really, really relying on it for and it bit me.
794
00:48:14,760 -->
00:48:16,293
And made you reconsider. Do I even need it?
795
00:48:16,484 -->
00:48:16,890
Yeah.
796
00:48:17,906 -->
00:48:23,232
I did look it up. 2371 is a well-known year in Star Trek. So we got a few things.
797
00:48:23,232 -->
00:48:25,650
Well, third season DS9 begins then.
798
00:48:26,312 -->
00:48:30,062
It's also the year USS Voyager launched on its ill-fated mission.
799
00:48:31,042 -->
00:48:35,682
And it's Star Trek Generations is set in that year when Captain Kirk meets Captain Picard.
800
00:48:35,682 -->
00:48:39,024
That was such a great time for Star Trek. That was such a great time.
801
00:48:41,230 -->
00:48:42,445
Thank you, sir. Appreciate the boost.
802
00:48:42,445 -->
00:48:42,885
Thank you, E-Scott.
803
00:48:43,035 -->
00:48:43,232
Unicorn,
804
00:48:45,395 -->
00:48:48,718
1999 came in with 6,000 sats.
805
00:48:54,860 -->
00:48:59,565
At some points in open source and with some projects who had to sign off that
806
00:48:59,565 -->
00:49:04,827
you were the author of the code and had not used any source that was also not clean.
807
00:49:05,587 -->
00:49:11,515
But now with AI, that doesn't really matter. It seems the who owns AI code question
808
00:49:11,515 -->
00:49:13,232
is not completely solved.
809
00:49:13,761 -->
00:49:15,369
Wait, why is that? Why is that?
810
00:49:15,990 -->
00:49:20,125
Well, there's still active legal debates around it as one. So,
811
00:49:20,125 -->
00:49:23,765
like, for instance, some courts have said that pure, like, if all you did was
812
00:49:23,765 -->
00:49:26,247
one-shot code, it can't be copyrighted at all.
813
00:49:27,883 -->
00:49:32,919
So I think the question of, you know, exactly the law has not caught up with
814
00:49:32,919 -->
00:49:35,199
the current tool set is sort of one aspect of it.
815
00:49:35,199 -->
00:49:39,519
Like we have some cases that mostly dealt with code in the era of browser tabs
816
00:49:39,519 -->
00:49:43,129
and nothing that's really dealt with the case of you're doing project management
817
00:49:43,129 -->
00:49:46,769
on an agentic harness and then you edited some parts of it or you reviewed it.
818
00:49:47,648 -->
00:49:50,979
So I think that's where some camps concerns are coming from,
819
00:49:50,979 -->
00:49:53,119
just in that it is still an open legal question.
820
00:49:53,119 -->
00:49:57,679
But it seems like if my self-driving car runs into Brent and smashes his van
821
00:49:57,679 -->
00:49:59,972
up, I'm legally responsible for that.
822
00:50:00,320 -->
00:50:02,596
It doesn't matter if the AI degenerated that.
823
00:50:03,182 -->
00:50:08,209
Yeah, but that's a legal sort of – it's a separate set of law essentially,
824
00:50:08,209 -->
00:50:12,949
right? Like this was a judge making a case about if you could copyright pure AI-generated content.
825
00:50:13,169 -->
00:50:13,749
Oh, copyright, copyright.
826
00:50:13,749 -->
00:50:16,709
Yes. So like when you make something – not everything is copyrightable,
827
00:50:16,709 -->
00:50:20,516
but if it is a copyrightable expression, not just the idea but the expression,
828
00:50:21,869 -->
00:50:23,149
you get to sign copyright.
829
00:50:23,149 -->
00:50:26,229
to it that's how you add a license to your code files but they're saying if
830
00:50:26,229 -->
00:50:30,969
all you did was prompt a single ai to generate code that cannot currently be.
831
00:50:30,969 -->
00:50:36,639
Copyrighted i just think in the context of most most not all but most free software
832
00:50:36,639 -->
00:50:39,799
project this is really ant humping because who's responsible is the person who
833
00:50:39,799 -->
00:50:41,894
submits it and this is sort of full stop,
834
00:50:42,922 -->
00:50:46,029
i mean this anything else is just sort of ant humping now when you're working
835
00:50:46,029 -->
00:50:49,389
on a giant international project maybe that's really where things matter like
836
00:50:49,389 -->
00:50:51,129
that i think but that's my opinion.
837
00:50:51,129 -->
00:50:55,869
There were some explorations of laws in europe though that recently suggested
838
00:50:55,869 -->
00:51:01,260
that open source software might be responsible if people use it in certain contexts so,
839
00:51:02,212 -->
00:51:07,359
that's an interesting angle unicorn 99 here wants to clarify though i'm not
840
00:51:07,359 -->
00:51:10,500
anti-ai i'm anti-corporate exploitation.
841
00:51:10,786 -->
00:51:14,999
Boy sure the corporate ai aspect is so obnoxious so tiring i agree with you
842
00:51:14,999 -->
00:51:19,129
there it's the worst about it it's the worst thing about it and yet We need
843
00:51:19,129 -->
00:51:22,065
their precious GPUs, at least for now.
844
00:51:22,604 -->
00:51:26,405
Hey, Mr. Mayhem's back with 16,000 Satoshis.
845
00:51:28,622 -->
00:51:31,606
Look at that. Boost the roost, boost the roost, boost the roost.
846
00:51:31,734 -->
00:51:34,770
Something broke. It's a fill-in boost. Well, boost the roost indeed. Thank you.
847
00:51:36,424 -->
00:51:42,189
Appreciate that. And that is all of the paid boosts, but we do have some member
848
00:51:42,189 -->
00:51:43,909
boosts. Would you like to kick that off, Wes?
849
00:51:44,329 -->
00:51:46,374
Oh, you know how I love a good member boost.
850
00:51:47,036 -->
00:51:47,789
Hey, Unicorn's back.
851
00:51:47,789 -->
00:51:51,669
Oh, Unicorn1999 comes in with a member boost.
852
00:51:51,669 -->
00:51:52,069
Hey!
853
00:51:53,845 -->
00:51:57,099
I think tech people bringing up the copyright issue is not only crap,
854
00:51:57,099 -->
00:52:00,422
but partially how copyright is always used by corporations against us users.
855
00:52:00,869 -->
00:52:03,979
Like, it was okay back in the day for ISPs to host Usenet servers full of TV
856
00:52:03,979 -->
00:52:06,149
shows, but not okay for people to download and share.
857
00:52:08,489 -->
00:52:11,719
We don't talk about Usenet. We don't talk about Usenet. Yeah,
858
00:52:11,719 -->
00:52:15,399
no, I think it's like we're talking about two different things here, Unicorn.
859
00:52:16,043 -->
00:52:19,329
Because everything you just said I completely agree with. I just think there's
860
00:52:19,329 -->
00:52:23,699
hypocrisy in folks that, you know, have their RAR stack set up or whatever,
861
00:52:23,699 -->
00:52:28,689
or rip DVDs, then now concerned that LLMs are ripping content,
862
00:52:28,689 -->
00:52:30,346
right? There's just hypocrisy in that.
863
00:52:30,758 -->
00:52:34,426
But yeah, using copyright as a kludge is never good.
864
00:52:34,746 -->
00:52:39,269
There's also sort of like, we're seeing projects now, which is perhaps reasonable
865
00:52:39,269 -->
00:52:40,669
in that they are much more established,
866
00:52:41,271 -->
00:52:44,510
projects, but we see projects now that are having concerns over copyright questions
867
00:52:44,945 -->
00:52:48,609
that maybe were different than how Linux was treated and being actively developed
868
00:52:48,609 -->
00:52:51,749
in the ESCO era, where there were similar sort of copyright questions.
869
00:52:51,749 -->
00:52:55,319
Mm-hmm, mm-hmm, mm-hmm, mm-hmm, yeah.
870
00:52:55,319 -->
00:52:57,406
Mm-hmm.
871
00:52:57,406 -->
00:53:02,269
All right, well, Greg, the lawyer's here with a memboost. Welcome back to the
872
00:53:02,269 -->
00:53:05,469
States. I hope the trip was flock-free. You know, I'm not sure.
873
00:53:06,009 -->
00:53:07,178
I doubt it, though. I doubt it.
874
00:53:08,169 -->
00:53:11,209
He says, I got fed up with Dario's nonsense and switched back to Codex.
875
00:53:11,209 -->
00:53:13,668
I figure their model is better because they broke out first.
876
00:53:16,149 -->
00:53:21,458
The weird feeling when switching VC-funded frontier models is how I fight in part for open source.
877
00:53:22,171 -->
00:53:24,929
Yeah, although if it makes you feel better, the Codex is open source.
878
00:53:25,449 -->
00:53:27,756
The backend isn't, but the Codex client is open source.
879
00:53:28,383 -->
00:53:29,956
Amadeus member boosts in.
880
00:53:32,726 -->
00:53:37,915
My workflow of cleaning up my own drives is using a great Rust tool called Dust.
881
00:53:38,625 -->
00:53:42,605
Find out what takes up space, old hugging face models, old Proton versions from
882
00:53:42,605 -->
00:53:44,395
Steam, Podman containers, et cetera.
883
00:53:44,755 -->
00:53:48,095
Works great, and I'm using it on every machine I control or manage.
884
00:53:48,615 -->
00:53:49,755
The Podman containers makes me chocolate.
885
00:53:50,595 -->
00:53:54,035
Thank you for concluding the very realistic selection of actual disk usage.
886
00:53:54,035 -->
00:53:55,336
Yeah, yeah, really, yeah.
887
00:53:56,451 -->
00:53:59,225
And Dust is a Apache 2 license.
888
00:53:59,225 -->
00:54:01,535
Good to see. Nice little extra pick there.
889
00:54:01,535 -->
00:54:05,402
We've got Joshua here with a free members boost.
890
00:54:07,387 -->
00:54:11,275
I'm a software engineer and always have ideas for side projects,
891
00:54:11,275 -->
00:54:13,796
but no time to actually make the most of them.
892
00:54:14,446 -->
00:54:19,085
Cloud Code has really changed that, though, but I worry about making my new
893
00:54:19,085 -->
00:54:23,545
projects open source because of public backlash, since they're all written with
894
00:54:23,545 -->
00:54:26,020
AI. Do you have any advice?
895
00:54:26,728 -->
00:54:32,025
I would bet Joshua that you would actually find the reverse problem is going
896
00:54:32,025 -->
00:54:35,065
to be your issue is that if you open source it and it's popular,
897
00:54:35,065 -->
00:54:38,605
you're going to have a lot of people that are contributing back with AI assistant code development.
898
00:54:38,930 -->
00:54:41,455
You're going to have a lot more of that than your people that drive by your
899
00:54:41,455 -->
00:54:42,599
repo and get upset at you.
900
00:54:42,762 -->
00:54:45,745
Yeah. Like I think it would be different. Like if you if you vibe something
901
00:54:45,745 -->
00:54:49,655
up and go share it on three subreddits at once. And like there's there are versions
902
00:54:49,655 -->
00:54:51,995
of that where you can get yourself in trouble. But if all you're doing is sort
903
00:54:51,995 -->
00:54:55,852
of putting it out there, I don't think you'll receive too much backlash.
904
00:54:56,252 -->
00:54:58,235
Anonymous comes in with a member boost.
905
00:55:01,013 -->
00:55:04,595
It never occurred to me that a nutcase might not only have a thousand tabs open,
906
00:55:04,595 -->
00:55:08,449
but that nutcase might also have them scattered across dozen of windows.
907
00:55:08,756 -->
00:55:10,771
Absolute madness!
908
00:55:18,244 -->
00:55:19,774
I know, I know.
909
00:55:19,774 -->
00:55:23,214
Are we, it says anonymous, but I don't know. I kind of smell the PJ booze.
910
00:55:27,174 -->
00:55:31,314
I don't think I've been called a nutcase before and certainly not for my tab habits.
911
00:55:31,654 -->
00:55:33,374
Well, I came from the whole squirrel thing.
912
00:55:33,374 -->
00:55:36,524
Yeah, as a squirrel father, I think you would put yourself in the nutcase category.
913
00:55:36,524 -->
00:55:40,170
Yeah, that's fair. That's actually kind of a compliment. Thank you, anonymous.
914
00:55:40,833 -->
00:55:43,630
Well, SensorSmile comes in with our last member boost.
915
00:55:49,331 -->
00:55:53,737
I'm finally ready to start playing with AI. However, I'm not sure where to start.
916
00:55:54,125 -->
00:55:55,524
I have a local Quen model up with
917
00:55:55,524 -->
00:55:59,454
Lama CPP. The built-in chat interface is boring. How do I code with this?
918
00:55:59,794 -->
00:56:04,284
Hermes? How do you do long-running agent? A beginner's guide for the tech experienced.
919
00:56:04,284 -->
00:56:07,964
This is SeniorSmile. You're like, you're starting with Bitcoin by installing
920
00:56:07,964 -->
00:56:10,640
a node before you've acquired sats.
921
00:56:11,534 -->
00:56:14,914
I mean, not necessarily a bad way to go to truly learn from the ground up, but,
922
00:56:16,456 -->
00:56:21,953
you might You might just spend a month with OpenCode and OpenCode Go subscription,
923
00:56:22,452 -->
00:56:25,814
and learn that because what they're going to have for you is agents that are,
924
00:56:25,814 -->
00:56:27,214
A, optimized for coding, B,
925
00:56:27,949 -->
00:56:29,708
work right out of the box with tool calls.
926
00:56:30,062 -->
00:56:33,114
And when you're going to do your own Quinn and your Lama CPP,
927
00:56:33,114 -->
00:56:36,314
I love it, but you're going to need to use a front-end interface.
928
00:56:36,314 -->
00:56:38,564
You're going to have to pick one that understands all that stuff,
929
00:56:38,564 -->
00:56:42,044
that knows how to work with that stuff. And that, when you're just getting into
930
00:56:42,044 -->
00:56:44,774
all of this, feels like a little extra complexity before you've even really
931
00:56:44,774 -->
00:56:46,212
figured out what they can even do for you.
932
00:56:46,601 -->
00:56:50,544
And they could also help like if you do get open code going or whatever.
933
00:56:50,544 -->
00:56:51,544
Then you can have it set it up for.
934
00:56:51,544 -->
00:56:57,674
You exactly you can have open code talk to Lama CPP no problem but that's just
935
00:56:57,674 -->
00:57:00,294
more stuff you kind of get in that isn't actually playing with AI but you can
936
00:57:00,294 -->
00:57:03,654
have the AI sort of bridge the gap and then try out both local and cloud hosted.
937
00:57:03,654 -->
00:57:07,394
Not too bad there Westpain alright thank you everybody who supported this episode
938
00:57:07,394 -->
00:57:12,504
with a boost we had 18 of you stream sats as you listened along and collectively
939
00:57:12,504 -->
00:57:16,727
you all stacked 17,625 Satoshis for the show.
940
00:57:19,775 -->
00:57:25,491
And you bring it all together with everybody who boosted. We stacked a humble
941
00:57:25,491 -->
00:57:30,567
but very grateful 198,570 Satoshis.
942
00:57:30,845 -->
00:57:34,041
Not the best hourly rate when you split it four ways, as we do,
943
00:57:34,041 -->
00:57:38,119
or five ways, really. I think it was like five in there, but we still appreciate the support.
944
00:57:38,252 -->
00:57:41,625
It is a lean season. When you hear the dynamic ads, you know we're hurting.
945
00:57:42,136 -->
00:57:43,061
But we really appreciate the
946
00:57:43,061 -->
00:57:46,072
members and the boost. It's also one of our favorite segments on the show.
947
00:57:46,333 -->
00:57:50,153
It's stuff we never really plan to talk about, but often is great conversation.
948
00:57:50,420 -->
00:57:55,681
And you can send a boost by going to boost.jupyterbroadcasting.com or jupyterbroadcasting.com
949
00:57:55,681 -->
00:57:59,162
slash membership or linuxunplugged.com slash membership to be a member.
950
00:57:59,655 -->
00:58:02,181
That's it from us for the boost. Thank you, everybody who supported us.
951
00:58:27,013 -->
00:58:30,453
And we got a couple of pics before we get out of here. This is one I've been
952
00:58:30,453 -->
00:58:34,693
sitting on for a while because I thought maybe we would use it for our Texas trip.
953
00:58:35,604 -->
00:58:39,733
But I think I'd like to put it out there and get a sense if the audience likes
954
00:58:39,733 -->
00:58:42,344
it and if anybody deploys it before we use it.
955
00:58:42,617 -->
00:58:45,233
But I could see this being very useful for us in the future.
956
00:58:45,233 -->
00:58:47,058
It's called Trek. I already like the name.
957
00:58:47,876 -->
00:58:51,963
It's a self-hostable travel trip planner with real-time collab features,
958
00:58:52,483 -->
00:58:57,043
interactive maps, progressive web support, single sign-on, planning budgets,
959
00:58:57,043 -->
00:58:59,190
packing lists, and more.
960
00:58:59,579 -->
00:59:04,083
I mean, this thing, and it looks good. It looks like a top-grade commercial
961
00:59:04,083 -->
00:59:05,483
application that you can self-host.
962
00:59:05,912 -->
00:59:11,044
And then you can work with your friends, your family, whatever it might be, together to plan a trip.
963
00:59:11,160 -->
00:59:14,346
And, like, you know, make your big plans, put your budgets in there,
964
00:59:14,671 -->
00:59:17,493
get it all on a calendar. You can subscribe to the calendars.
965
00:59:17,493 -->
00:59:18,340
Like, you know what I'm saying?
966
00:59:18,635 -->
00:59:21,433
Like, this is a real tool with interactive maps and stuff like that.
967
00:59:21,433 -->
00:59:23,715
So you get a journal for every trip.
968
00:59:24,040 -->
00:59:27,494
You get real-time collaborative planning. You see it all on a map.
969
00:59:27,696 -->
00:59:29,322
It has lists and categories.
970
00:59:29,635 -->
00:59:32,063
It has – you can put in, like, we're going to go on a vacation.
971
00:59:32,063 -->
00:59:35,284
You can have it pre-visualize that. You can track costs per person.
972
00:59:35,650 -->
00:59:41,213
You can drag things around and drop them on the calendar. And Wes, it's got an API.
973
00:59:41,213 -->
00:59:43,416
Ooh, okay. Okay.
974
00:59:44,868 -->
00:59:46,237
This looks really nice.
975
00:59:46,976 -->
00:59:48,866
Yeah, I'm pretty excited about it. Like I said, I haven't had a chance to try
976
00:59:48,866 -->
00:59:51,416
it myself, but I think somebody out there in the audience might be willing to
977
00:59:51,416 -->
00:59:52,316
give it a go and let us know.
978
00:59:52,693 -->
00:59:57,383
It is AGPL3.0, and it is primarily TypeScript.
979
00:59:58,121 -->
01:00:03,136
It's got a Docker Compose setup, Kubernetes if that's your style. Yeah, okay.
980
01:00:03,136 -->
01:00:04,286
Yeah, yeah.
981
01:00:04,424 -->
01:00:07,976
The real-time collab part sounds quite interesting. We could just be on a call,
982
01:00:07,976 -->
01:00:10,031
workshopping a trip, trying things out.
983
01:00:10,739 -->
01:00:13,206
Teasing Brent about how long he has to drive, because we'll just put it right
984
01:00:13,206 -->
01:00:14,076
there on the map in front of him.
985
01:00:14,376 -->
01:00:14,576
Right.
986
01:00:15,436 -->
01:00:20,156
It'll probably help me with that part. One of the big questions I have is, will it nix?
987
01:00:21,292 -->
01:00:24,207
Well, of course. It does also have a Docker if you just want to go that way.
988
01:00:24,723 -->
01:00:29,216
But from that, you could get to a declarative Podman configuration and about
989
01:00:29,216 -->
01:00:30,936
two licks and two shakes of a lamp's tail.
990
01:00:31,256 -->
01:00:33,816
Oh, it includes built-in MCP as well as an API. Great.
991
01:00:35,236 -->
01:00:38,556
I mean, you could see how maybe our agents use this to have a plan and they
992
01:00:38,556 -->
01:00:39,396
just tell us when they're done.
993
01:00:40,056 -->
01:00:43,656
All right, Brentley, you got a little sneaky pick. I believe that you wanted
994
01:00:43,656 -->
01:00:46,120
to pull forward, as they said.
995
01:00:46,544 -->
01:00:52,860
I'm representing this sneaky pick as producer Jeff actually brought this up to me and he said, Brent.
996
01:00:53,789 -->
01:00:56,964
This is perfect for me and therefore probably perfect for you.
997
01:00:57,092 -->
01:01:01,794
It's a to-do app that is called C'est Fait, which is French,
998
01:01:01,794 -->
01:01:06,879
but I'm going to declare that everybody else can probably just say C-Fit.
999
01:01:07,094 -->
01:01:08,194
Oh, yeah. I would have sold it.
1000
01:01:08,194 -->
01:01:09,182
You tell me what you should call it.
1001
01:01:09,339 -->
01:01:10,454
Can we get the French one more time?
1002
01:01:10,454 -->
01:01:11,731
I would have said C'est Fait.
1003
01:01:12,594 -->
01:01:13,154
Or C'est Fait.
1004
01:01:13,154 -->
01:01:16,084
C'est Fait. I know, because it's got a cat. So I would have gone with cat,
1005
01:01:16,880 -->
01:01:18,064
you know, because it has a cat logo.
1006
01:01:18,064 -->
01:01:21,924
Yeah, yeah. Yeah, that works too. A silent F, right? In French,
1007
01:01:21,924 -->
01:01:24,174
that really means it's done, which I think it's kind of clever.
1008
01:01:24,174 -->
01:01:25,576
Ah, I gotcha. Okay.
1009
01:01:26,121 -->
01:01:30,044
But it's built for people who, quote, want keyboard-centric efficiency,
1010
01:01:30,044 -->
01:01:33,494
which I have been looking for forever. Jeff, you know me so well.
1011
01:01:33,981 -->
01:01:37,514
It looks like you can use it comfortably from the command line via TUI.
1012
01:01:37,994 -->
01:01:43,684
You can use a desktop GUI if you want or on the go with a native Android app.
1013
01:01:43,684 -->
01:01:45,266
Ain't no Electron in here.
1014
01:01:46,061 -->
01:01:49,044
It's got a TUI and a graphical app and an Android app.
1015
01:01:49,044 -->
01:01:50,096
This is impressive.
1016
01:01:50,974 -->
01:01:53,274
I don't know how none of us found this It's also.
1017
01:01:53,594 -->
01:01:56,864
It's apparently available in FlatHub already, FreeBSD There's obviously,
1018
01:01:56,864 -->
01:02:00,714
it's in FDroid and Google Play There's Windows releases maybe There's Mac OS
1019
01:02:00,714 -->
01:02:03,044
stuff, the only thing I'm not seeing is Nix really, but we can.
1020
01:02:03,044 -->
01:02:08,671
Get that done As a long time, and slightly ashamed Todoist user This,
1021
01:02:09,002 -->
01:02:13,814
this cooks I think this is blowing Todoist away Even at the UI layer.
1022
01:02:14,226 -->
01:02:17,854
To find shortcuts on the fly Wow Yeah.
1023
01:02:17,854 -->
01:02:22,417
It's nice, there's a little detail here It's 69.5% rust.
1024
01:02:23,351 -->
01:02:24,396
All right. You know what?
1025
01:02:24,884 -->
01:02:25,331
Does that count?
1026
01:02:26,203 -->
01:02:30,308
We'll give it to it. It's over 50%. It's over 50%. Everyday usage.
1027
01:02:30,308 -->
01:02:32,350
Press the question mark and navigate to the help tab.
1028
01:02:32,855 -->
01:02:35,108
Configurations in the CLI-2E under the hood.
1029
01:02:35,968 -->
01:02:39,026
All right. So, PJ, you've been trying this? Like, what's the dealio? What do you think?
1030
01:02:39,676 -->
01:02:43,758
It really did catch my eye. I found it in F-Droid just going to do some updates,
1031
01:02:43,758 -->
01:02:44,728
and it was right there on the front.
1032
01:02:46,050 -->
01:02:51,248
Yeah. I really do like it. I like that the Linux desktop app and the phone app,
1033
01:02:51,248 -->
01:02:56,197
they look very similar. They're not these giant, there's no giant changes between the two.
1034
01:02:56,313 -->
01:02:56,615
Right.
1035
01:02:57,428 -->
01:03:01,008
So you don't need to necessarily learn all the key bindings because I never
1036
01:03:01,008 -->
01:03:02,635
will remember them anyways.
1037
01:03:03,122 -->
01:03:07,358
And I really like the subtasks. You can tree out things. I dream of an idea
1038
01:03:07,358 -->
01:03:09,065
of having dependency tasks.
1039
01:03:09,367 -->
01:03:12,988
This ain't quite that, but the subtasks kind of get you there. So I've been using it.
1040
01:03:12,988 -->
01:03:15,778
So it's like a, it's like subtasks isn't quite a project, but you can have a
1041
01:03:15,778 -->
01:03:18,353
task with a bunch of things you got to do to complete it.
1042
01:03:19,236 -->
01:03:22,538
Yeah, exactly. So I have, I'm kind of using it for goals.
1043
01:03:22,538 -->
01:03:25,998
Like I have, you know, truck repairs, right. And then a bunch of subtasks under
1044
01:03:25,998 -->
01:03:28,788
that of the different things I want to do for my truck, you know,
1045
01:03:28,788 -->
01:03:32,238
house repairs or home things I want to do. And I can have a bunch of subtasks
1046
01:03:32,238 -->
01:03:34,422
for that. And it's been working out pretty well for that. I like that a lot.
1047
01:03:34,793 -->
01:03:38,323
Just a dedicated place. I can put the things I want to get done or,
1048
01:03:38,671 -->
01:03:41,488
oh, I've got 15 minutes to kill. What kind of thing can I do?
1049
01:03:41,488 -->
01:03:44,527
Well, here's a whole list of things I want to try. I want to do.
1050
01:03:44,760 -->
01:03:45,018
Right.
1051
01:03:45,018 -->
01:03:46,270
And I'll forget about them otherwise.
1052
01:03:47,208 -->
01:03:49,370
How is the self-hosting side set up the server side?
1053
01:03:50,634 -->
01:03:52,957
I'm using NextCloud to sync everything up.
1054
01:03:53,211 -->
01:03:57,021
Oh, so you don't have to run a backend in particular? You could just have it sync?
1055
01:03:57,021 -->
01:03:59,266
Whatever CalDev server you want to use, yeah.
1056
01:03:59,901 -->
01:04:07,851
Oh, okay. I see. I see. So they include Radical, a self-hosted lightweight feature
1057
01:04:07,851 -->
01:04:11,497
complete thing you can use, or, yeah, NextCloud. Huh.
1058
01:04:12,610 -->
01:04:17,001
This is great, Jeff. Nice find. I'm glad Brent, I'm glad he pulled it forward.
1059
01:04:17,641 -->
01:04:18,050
Mm-hmm.
1060
01:04:19,366 -->
01:04:22,572
I may give this a try afterwards. Especially if I could store it,
1061
01:04:22,740 -->
01:04:25,103
of course, I don't know. If I could store it in something, we'll see.
1062
01:04:25,470 -->
01:04:27,801
Yeah, especially if we can compose it with a few other things.
1063
01:04:27,801 -->
01:04:31,681
The fact that it's got the Android layer solved, there's a lot of promise.
1064
01:04:31,681 -->
01:04:35,411
There's a lot I like about it. And the client's in Flathub, which is nice.
1065
01:04:35,411 -->
01:04:36,973
And the Android version's in F-Droid.
1066
01:04:37,166 -->
01:04:42,675
Which is nice. Okay, so PJ's now game correspondent, right? And I guess he's also like a...
1067
01:04:42,872 -->
01:04:43,585
Productivity.
1068
01:04:43,830 -->
01:04:45,021
Yeah, productivity expert.
1069
01:04:46,240 -->
01:04:50,061
Productivity John. PJ still works for that. Productivity John.
1070
01:04:50,841 -->
01:04:52,001
Lifestyle expert.
1071
01:04:52,001 -->
01:04:57,494
Yeah. And a few other things. Solar, long hair, floor showers.
1072
01:04:57,977 -->
01:04:59,741
Oh, floor showers. He's got that down.
1073
01:04:59,741 -->
01:05:01,161
He does have the floor showers down.
1074
01:05:01,161 -->
01:05:03,879
Also our on-site Californian expert.
1075
01:05:04,354 -->
01:05:07,841
It's true. If you want to know anything about California, you just ask PJ. All right.
1076
01:05:07,841 -->
01:05:12,921
Well, we'll have links to everything we talked about at linuxunplugged.com slash 678.
1077
01:05:12,921 -->
01:05:16,348
We're slowly working our way to 700, so we hope you stick with us and join us
1078
01:05:16,666 -->
01:05:20,401
live. You can make it a Tuesday on a Sunday, 10 a.m. Pacific,
1079
01:05:20,401 -->
01:05:22,872
1 p.m. Eastern, over at jblive.tv.
1080
01:05:23,400 -->
01:05:25,811
I say before we go, we tell people some pro tips. We should always,
1081
01:05:25,811 -->
01:05:27,504
maybe we should start the show with these.
1082
01:05:28,481 -->
01:05:30,501
Instead of burying it all the way at the absolute end of the show?
1083
01:05:30,501 -->
01:05:30,831
Right.
1084
01:05:30,831 -->
01:05:34,006
We should, like, do a reverse show sometime. We should start from the bottom.
1085
01:05:35,306 -->
01:05:37,686
Flip the duck. Surely a bot could flip the duck.
1086
01:05:38,573 -->
01:05:40,013
We should flip the show.
1087
01:05:40,473 -->
01:05:41,413
All right, next week.
1088
01:05:41,593 -->
01:05:44,983
We should think about that. That could be a lot of fun. Don't you think?
1089
01:05:44,983 -->
01:05:45,513
Probably.
1090
01:05:45,513 -->
01:05:45,941
Oh, yeah.
1091
01:05:46,103 -->
01:05:48,443
At least tell us what we like and don't like about doing it.
1092
01:05:48,443 -->
01:05:51,653
How do you handle the intro and the outro? Do you do the outro at the beginning?
1093
01:05:51,653 -->
01:05:54,993
Because that would really screw with new folks. Like, you lose them immediately.
1094
01:05:54,993 -->
01:05:57,363
Oh, go for it. Come on. What's one episode?
1095
01:05:57,363 -->
01:06:00,702
I don't know. I think if we could, the intro is the only thing.
1096
01:06:00,858 -->
01:06:05,203
We need some input on that, but I would totally be down for a reverso episode. That could be fun.
1097
01:06:05,203 -->
01:06:09,063
No, it works perfectly. You start and you say, about the same bat time,
1098
01:06:09,063 -->
01:06:13,183
same bat channel, you know, make it a Linux on a Tuesday, on a Sunday, and join us Sunday.
1099
01:06:13,183 -->
01:06:14,802
But then we play the outro music in what?
1100
01:06:16,369 -->
01:06:17,503
No, it starts with the outro music.
1101
01:06:17,503 -->
01:06:18,093
We'll figure it out.
1102
01:06:20,433 -->
01:06:22,753
I don't think we will. And then you intro the show at the end.
1103
01:06:22,753 -->
01:06:23,753
I think we need help.
1104
01:06:24,073 -->
01:06:25,213
Drew will save us.
1105
01:06:25,573 -->
01:06:28,013
Oh, yeah, sure. Yeah. All right. Okay, very good.
1106
01:06:28,013 -->
01:06:31,673
But in the meantime, JSON. It's in the cloud and in the feed.
1107
01:06:31,673 -->
01:06:37,083
We put JSON in our XML, but then we also put like text in there in the form of a VTT.
1108
01:06:37,083 -->
01:06:38,498
That's true. So you can have it either way.
1109
01:06:38,643 -->
01:06:43,333
And we put in a link. It's not the whole MP4 but there's a link to an MP4 embedded within.
1110
01:06:43,333 -->
01:06:46,783
Yeah. So you could watch it in video version and you may be surprised there's
1111
01:06:46,783 -->
01:06:50,693
visuals but because we're such effing pros you can just listen to the audio
1112
01:06:50,693 -->
01:06:53,823
version and it never detracts from that to such a degree you wouldn't even know
1113
01:06:53,823 -->
01:06:56,911
there's a video version. How about that? Ha!
1114
01:06:57,914 -->
01:07:01,943
So yeah, you can find that MP4 in the feed as well and our Mumble Room is always
1115
01:07:01,943 -->
01:07:05,583
going every single Sunday. So do join us live. It's fun. It's unique.
1116
01:07:05,583 -->
01:07:06,854
And not a lot of podcasts do it.
1117
01:07:11,540 -->
01:07:14,419
And, of course, links to everything we talked about at our website,
1118
01:07:14,419 -->
01:07:17,969
linuxunplugged.com. And the back catalog and all the other great shows over
1119
01:07:17,969 -->
01:07:20,989
at jupiterbroadcasting.com. As long as you want to check it out,
1120
01:07:20,989 -->
01:07:24,044
you might as well go to the calendar. It's over there in a contact page as well.
1121
01:07:25,152 -->
01:07:28,359
Would you believe it? And last but not least, you can get a message and support
1122
01:07:28,359 -->
01:07:32,309
the show at boost.jupiterbroadcasting.com. And you members, don't you forget
1123
01:07:32,309 -->
01:07:36,623
you get a free boost every single episode because we appreciate you so much.
1124
01:07:36,826 -->
01:07:38,626
In fact, we appreciate you just for listening.
1125
01:07:38,852 -->
01:07:42,521
Thank you so much for listening to this week's episode of your Unplugged program.
1126
01:07:42,730 -->
01:07:43,560
And you know what we're going to do?
1127
01:07:44,071 -->
01:07:46,809
We're going to work on a show right after this, get cooking on another one,
1128
01:07:46,809 -->
01:07:50,828
and we're going to see you right back here next Tuesday, as in Sunday.