1
00:00:00,000 --> 00:00:02,000
Oh shit.

2
00:00:02,000 --> 00:00:03,000
Oops.

3
00:00:03,000 --> 00:00:04,000
Okay.

4
00:00:04,000 --> 00:00:05,000
Wow.

5
00:00:05,000 --> 00:00:06,000
Okay.

6
00:00:06,000 --> 00:00:07,000
Let's get going.

7
00:00:07,000 --> 00:00:10,000
Um, I'm going to go on my snack.

8
00:00:10,000 --> 00:00:13,000
I got so excited.

9
00:00:13,000 --> 00:00:15,000
I'm going to go on my snack.

10
00:00:15,000 --> 00:00:17,000
I got so excited.

11
00:00:17,000 --> 00:00:18,000
Okay.

12
00:00:18,000 --> 00:00:19,000
Oh shit.

13
00:00:19,000 --> 00:00:20,000
Oops.

14
00:00:20,000 --> 00:00:21,000
Okay.

15
00:00:21,000 --> 00:00:22,000
Wow.

16
00:00:22,000 --> 00:00:23,000
Okay.

17
00:00:23,000 --> 00:00:24,000
Let's get going.

18
00:00:24,000 --> 00:00:26,000
Um, I'm going to go on my snack.

19
00:00:26,000 --> 00:00:27,000
I got so excited.

20
00:00:27,000 --> 00:00:28,000
Okay.

21
00:00:28,000 --> 00:00:29,000
And a little bit.

22
00:00:29,000 --> 00:00:30,000
Yeah.

23
00:00:30,000 --> 00:00:32,000
You're going to ask me to introduce myself and my project.

24
00:00:32,000 --> 00:00:34,000
I think that I'm going to be awkward, right?

25
00:00:34,000 --> 00:00:35,000
But it'd be so fun.

26
00:00:35,000 --> 00:00:36,000
I didn't mean to be thinking.

27
00:00:36,000 --> 00:00:38,000
It's been recording for like, two years.

28
00:00:38,000 --> 00:00:40,000
I'm going to be like,

29
00:00:40,000 --> 00:00:41,000
I didn't mean to be thinking.

30
00:00:41,000 --> 00:00:42,000
I didn't mean to be thinking.

31
00:00:42,000 --> 00:00:43,000
It's been recording for like,

32
00:00:43,000 --> 00:00:44,000
fifty minutes though.

33
00:00:44,000 --> 00:00:45,000
Yeah.

34
00:00:45,000 --> 00:00:46,000
I know.

35
00:00:46,000 --> 00:00:47,000
I know what you've been doing.

36
00:00:47,000 --> 00:00:48,000
Okay.

37
00:00:48,000 --> 00:00:49,000
Are you concerned?

38
00:00:49,000 --> 00:00:50,000
Mmm.

39
00:00:50,000 --> 00:00:51,000
Wait.

40
00:00:51,000 --> 00:00:52,000
I know you've been preparing me and teasing me into it.

41
00:00:52,000 --> 00:00:53,000
I've done a marvelous job.

42
00:00:53,000 --> 00:01:01,000
But I have been aware of it.

43
00:01:01,000 --> 00:01:02,000
Okay.

44
00:01:02,000 --> 00:01:03,000
Yeah.

45
00:01:03,000 --> 00:01:04,000
Yeah.

46
00:01:04,000 --> 00:01:05,000
Yeah.

47
00:01:05,000 --> 00:01:06,000
Yeah.

48
00:01:06,000 --> 00:01:07,000
Yeah.

49
00:01:07,000 --> 00:01:08,000
Yeah.

50
00:01:08,000 --> 00:01:09,000
Yeah.

51
00:01:09,000 --> 00:01:10,000
Yeah.

52
00:01:10,000 --> 00:01:11,000
Yeah.

53
00:01:11,000 --> 00:01:12,000
Yeah.

54
00:01:12,000 --> 00:01:13,000
Yeah.

55
00:01:13,000 --> 00:01:14,000
Yeah.

56
00:01:14,000 --> 00:01:15,000
Yeah.

57
00:01:15,000 --> 00:01:16,000
Yeah.

58
00:01:16,000 --> 00:01:17,000
Yeah.

59
00:01:17,000 --> 00:01:18,000
Yeah.

60
00:01:18,000 --> 00:01:19,000
Yeah.

61
00:01:19,000 --> 00:01:20,000
Yeah.

62
00:01:20,000 --> 00:01:21,000
Yeah.

63
00:01:21,000 --> 00:01:22,000
Yeah.

64
00:01:22,000 --> 00:01:31,000
And the music you just heard was a creation by our guest today, which is Aliyosha from the Willow Project.

65
00:01:31,000 --> 00:01:38,000
Throughout the episode, you might hear a few more tunes gathered here and there.

66
00:01:38,000 --> 00:01:44,000
And if you want to hear more, just check out their website, worm-blossom.org, which they

67
00:01:44,000 --> 00:01:47,000
host together with Sammy.

68
00:01:47,000 --> 00:01:52,000
Today, we will be hearing a bit of a more, I guess, Aliyosha called it theoretical computer

69
00:01:52,000 --> 00:01:53,000
science.

70
00:01:53,000 --> 00:02:02,000
Take on these kind of protocols and specifically a walkthrough of Willow and what makes Willow

71
00:02:02,000 --> 00:02:07,000
particularly secure compared to most other protocols in the scene.

72
00:02:07,000 --> 00:02:13,000
So with no further ado, let's dive in.

73
00:02:23,000 --> 00:02:45,000
Thank you so much for joining me here today, Aliyosha.

74
00:02:45,000 --> 00:02:52,000
We have been chatting away for a solid 20 minutes already.

75
00:02:52,000 --> 00:03:00,000
And now it's time for the official podcast.

76
00:03:00,000 --> 00:03:05,000
So you and I have known each other for quite a few years now.

77
00:03:05,000 --> 00:03:06,000
True.

78
00:03:06,000 --> 00:03:11,000
And it started in the, I want to say infamous, but it's not very infamous.

79
00:03:11,000 --> 00:03:13,000
It's more like famous, but it's also not famous.

80
00:03:13,000 --> 00:03:14,000
It should be infamous.

81
00:03:14,000 --> 00:03:21,000
And what we're talking about is of course, it's got a lot.

82
00:03:21,000 --> 00:03:27,000
For those who have no clue what's got a lot is, do you want to give a quick debrief on

83
00:03:27,000 --> 00:03:29,000
the sailor's network?

84
00:03:29,000 --> 00:03:30,000
Oh, no.

85
00:03:30,000 --> 00:03:36,000
You get an unusual debrief on that if I'm the one to do it.

86
00:03:36,000 --> 00:03:38,000
I'm sure I can give it a try.

87
00:03:38,000 --> 00:03:46,000
So in a year that might have been 2015 or something, a person in New Zealand named Dominic

88
00:03:46,000 --> 00:03:53,000
Tar decided that the world needs better technology for certain things, including social networking.

89
00:03:53,000 --> 00:03:56,000
I mean, actually you wanted to build a package manager, which is something I can deeply relate

90
00:03:56,000 --> 00:04:00,000
to, but it got derailed a bit.

91
00:04:00,000 --> 00:04:07,000
So secure scatterbout is this protocol by which people or rather their computers can

92
00:04:07,000 --> 00:04:11,000
exchange information in a way that is not dependent on their always being a direct

93
00:04:11,000 --> 00:04:13,000
internet connection available.

94
00:04:13,000 --> 00:04:20,000
So Dominic basically lived on a sailboat and didn't have internet for very long periods

95
00:04:20,000 --> 00:04:28,000
of time, but that shouldn't stop him from just writing down stuff like in a diary and

96
00:04:28,000 --> 00:04:30,000
maybe later just synchronizing it with other peers.

97
00:04:30,000 --> 00:04:32,000
That's what scatterbout is essentially.

98
00:04:32,000 --> 00:04:39,000
You write a kind of diary of entries and you tell your computer who your friends are and

99
00:04:39,000 --> 00:04:45,000
then the data is automatically exchanged between you whenever there's connectivity and crucially

100
00:04:45,000 --> 00:04:48,000
that connectivity doesn't need to be direct.

101
00:04:48,000 --> 00:04:53,000
So if I wanted to see Dominic's post, I wouldn't need to connect to Dominic directly, but rather

102
00:04:53,000 --> 00:04:56,000
I would just need to find anyone else who already had Dominic's post and then I would

103
00:04:56,000 --> 00:05:02,000
be able to receive them and also verify that they had not been altered, that they really

104
00:05:02,000 --> 00:05:04,000
were what Dominic had intended.

105
00:05:04,000 --> 00:05:08,000
But why not just use internet though?

106
00:05:08,000 --> 00:05:12,000
Why it works over the internet potentially.

107
00:05:12,000 --> 00:05:13,000
What's the difference?

108
00:05:13,000 --> 00:05:18,000
Why don't you just like Facebook message someone or something?

109
00:05:18,000 --> 00:05:19,000
Right.

110
00:05:19,000 --> 00:05:20,000
Right.

111
00:05:21,000 --> 00:05:31,000
So it might come as a bit of surprise, but I'm not terribly fond of Facebook and neither

112
00:05:31,000 --> 00:05:32,000
was Dominic Tarr.

113
00:05:32,000 --> 00:05:35,000
So hi, come on.

114
00:05:35,000 --> 00:05:43,000
Because you actually gone quite far with that.

115
00:05:43,000 --> 00:05:47,000
Do you have a smartphone?

116
00:05:47,000 --> 00:05:48,000
I do.

117
00:05:48,000 --> 00:05:49,000
You do.

118
00:05:49,000 --> 00:05:50,000
Yes.

119
00:05:50,000 --> 00:05:52,000
I've never seen you use one.

120
00:05:52,000 --> 00:05:57,000
That's correct because you've never seen me being controlled whether I have a ticket

121
00:05:57,000 --> 00:05:59,000
in public transport in Berlin.

122
00:05:59,000 --> 00:06:02,000
That's why I have a smartphone.

123
00:06:02,000 --> 00:06:06,000
Oh, so it's kind of forced into the system aspect.

124
00:06:06,000 --> 00:06:07,000
Yep.

125
00:06:07,000 --> 00:06:08,000
Yeah.

126
00:06:08,000 --> 00:06:09,000
Makes sense.

127
00:06:09,000 --> 00:06:16,000
But yeah, it touches on the whole bigger picture of things though.

128
00:06:16,000 --> 00:06:26,000
And while we met on Scolobot, you are currently working on a project called Willow, which

129
00:06:26,000 --> 00:06:31,000
is the next generation of these kind of networks that would work even if you're out

130
00:06:31,000 --> 00:06:35,000
sailing on a sailboat and you don't have access to internet but want to communicate with your

131
00:06:35,000 --> 00:06:39,000
friends.

132
00:06:39,000 --> 00:06:48,000
So first of all, if we skip the whole Y of like, okay, Facebook is horrible.

133
00:06:48,000 --> 00:06:51,000
Surveyor of the state, society, you know, of these things.

134
00:06:51,000 --> 00:07:01,000
I knew this wasn't Blizzard and I wouldn't have to say it.

135
00:07:01,000 --> 00:07:03,000
Yeah, they are.

136
00:07:03,000 --> 00:07:12,000
But if we then dive instead straight into Y Willow, because that's not as implicit.

137
00:07:12,000 --> 00:07:13,000
Fair.

138
00:07:13,000 --> 00:07:19,000
Why did you start Willow when Scolobot was around?

139
00:07:19,000 --> 00:07:26,000
So first of all, it's difficult for me to answer that because I never sat down and said,

140
00:07:26,000 --> 00:07:31,000
these are the three reasons that make me want to do this thing, right?

141
00:07:31,000 --> 00:07:40,000
Instead, it's a whole set of feelings and drives that lead into putting the time into

142
00:07:40,000 --> 00:07:41,000
this.

143
00:07:41,000 --> 00:07:47,000
But as far as I have managed to identify, like career and concepts in what is driving me,

144
00:07:47,000 --> 00:07:57,000
I would say the two primary ones are the fragility of the default way of going about it and a

145
00:07:57,000 --> 00:08:03,000
sort of carelessness toward users, where tools can be turned against the users.

146
00:08:03,000 --> 00:08:09,000
And the fragility aspect of it, that's what we just, you know, move to the sidelines as

147
00:08:09,000 --> 00:08:15,000
being implicit in Facebook's bed for multiple reasons.

148
00:08:15,000 --> 00:08:16,000
But I mean-

149
00:08:16,000 --> 00:08:21,000
So when you say fragility, if I'm translating it into my own terms, just to understand, does

150
00:08:21,000 --> 00:08:24,000
that mean like security risks?

151
00:08:24,000 --> 00:08:27,000
And like, or what do you mean with fragility?

152
00:08:27,000 --> 00:08:35,000
Not necessarily security, but just we are dependent on certain information technology,

153
00:08:35,000 --> 00:08:36,000
right?

154
00:08:36,000 --> 00:08:41,000
We treat it as infrastructure and we treat it as being there and working and stuff starts

155
00:08:41,000 --> 00:08:47,000
breaking in the real world once computers start breaking, which is very wild if you consider

156
00:08:47,000 --> 00:08:50,000
the role that computer plays 40 years ago.

157
00:08:50,000 --> 00:08:55,000
And this fragility, like one of the most basic aspects of course is just when Dominic

158
00:08:55,000 --> 00:09:00,000
on his boat doesn't have an internet connection, he cannot send stuff to the Facebook server.

159
00:09:00,000 --> 00:09:02,000
So that's not going to work.

160
00:09:02,000 --> 00:09:07,000
So in that sense, it's very fragile, it depends on always available internet connection, right?

161
00:09:07,000 --> 00:09:16,000
But then also, it's fragile at really every single part and every single link of the chain

162
00:09:16,000 --> 00:09:20,000
that leads from a sending message to be receiving message, right?

163
00:09:20,000 --> 00:09:25,000
It goes through a single server that server might be hacked, there might be government

164
00:09:25,000 --> 00:09:31,000
regulation that forces it to shut it down.

165
00:09:31,000 --> 00:09:40,000
And the idea of these local first peer-to-peer projects that kind of unifies the whole space,

166
00:09:40,000 --> 00:09:47,000
I think, is to combat that fragility and to replace it with a project that actually

167
00:09:47,000 --> 00:09:52,000
more inspired by nature, I would say, where there's a lot of like optimistically trying

168
00:09:52,000 --> 00:09:55,000
things out in many directions at the same time, right?

169
00:09:55,000 --> 00:10:00,000
Which can be as simple as optimistically replicating the data across many machines instead of just

170
00:10:00,000 --> 00:10:03,000
a single direct path, right?

171
00:10:03,000 --> 00:10:07,000
It's very natural for computer scientists to say, let's find the one shortest path and

172
00:10:07,000 --> 00:10:09,000
send data that way because that's the most efficient.

173
00:10:09,000 --> 00:10:12,000
It's also the most fragile thing you could possibly do.

174
00:10:12,000 --> 00:10:20,000
All the peer-to-peer projects or most of them are going away that tries to avoid this

175
00:10:20,000 --> 00:10:21,000
fragility, right?

176
00:10:21,000 --> 00:10:27,000
And in the infamous, hopefully, Scuttlebutt, especially in the early days, there was the

177
00:10:27,000 --> 00:10:35,000
saying of no global singletons and rejecting every entity, every concept of which there

178
00:10:35,000 --> 00:10:40,000
would be only one and on which you would be dependent, which is not...

179
00:10:40,000 --> 00:10:41,000
What's like...

180
00:10:41,000 --> 00:10:44,000
Okay, so I know singletons is like...

181
00:10:44,000 --> 00:10:50,000
Because we talked about this in previous podcasts, in example, a singleton, like in one way one

182
00:10:50,000 --> 00:10:55,000
could say a centralized server, but in another way one could also say DHT, right?

183
00:10:55,000 --> 00:10:56,000
Like a distributed hash table.

184
00:10:56,000 --> 00:10:59,000
Exactly, or a blockchain, right?

185
00:10:59,000 --> 00:11:07,000
So there is kind of shades where the peer-to-peer projects position themselves along this axis

186
00:11:07,000 --> 00:11:10,000
of how thoroughly do you avoid global singletons.

187
00:11:10,000 --> 00:11:11,000
You can...

188
00:11:11,000 --> 00:11:13,000
I mean, you can go pretty far.

189
00:11:13,000 --> 00:11:15,000
You can say there's only one internet.

190
00:11:15,000 --> 00:11:17,000
You shouldn't use the internet.

191
00:11:17,000 --> 00:11:21,000
You should use any kind of available network.

192
00:11:21,000 --> 00:11:27,000
That's a rather extreme way of taking things, but it's also kind of sensible, I would say,

193
00:11:27,000 --> 00:11:31,000
it makes sense to not hard code dependence on the internet and to your protocol.

194
00:11:31,000 --> 00:11:32,000
Yeah.

195
00:11:32,000 --> 00:11:34,000
Right, and like...

196
00:11:34,000 --> 00:11:37,000
And this is why we're those, right?

197
00:11:37,000 --> 00:11:45,000
Well, that's one side of it, but really if all I cared about was not having global singletons,

198
00:11:45,000 --> 00:11:54,000
then I was to be unscattered but, because scattered but is probably the most pure experiment

199
00:11:54,000 --> 00:11:59,000
in this regard that actually gained traction.

200
00:11:59,000 --> 00:12:05,000
But then the other aspect that I mentioned beyond just fragility would be, well, essentially,

201
00:12:05,000 --> 00:12:11,000
the ability to webinise the network, the system, the tools against its users.

202
00:12:11,000 --> 00:12:15,000
And this is what you mentioned with Care for People.

203
00:12:15,000 --> 00:12:16,000
Yes.

204
00:12:16,000 --> 00:12:17,000
Yeah.

205
00:12:18,000 --> 00:12:27,000
So rather than being enabling webinisation of the network against its users, you're trying

206
00:12:27,000 --> 00:12:29,000
to take an approach of Care for People.

207
00:12:29,000 --> 00:12:32,000
But what does that mean in practice when you're building a protocol?

208
00:12:32,000 --> 00:12:36,000
Because it's not like, is it more heart emojis?

209
00:12:36,000 --> 00:12:41,000
Maybe you should about that as a strategy.

210
00:12:41,000 --> 00:12:45,000
You know, there's at least five differently coloured heart emojis, right?

211
00:12:45,000 --> 00:12:49,000
And so you've just encode everything using different colours of the heart emerging.

212
00:12:49,000 --> 00:12:51,000
We might be onto something.

213
00:12:51,000 --> 00:12:56,000
It's not exactly human readable, but as a human, whatever you look at, you get a good vibe.

214
00:12:56,000 --> 00:13:01,000
But we are actually slightly onto something, because if one looks at your website, like

215
00:13:01,000 --> 00:13:08,000
Willow, and you're also a personal website, is it worm.blossom?

216
00:13:08,000 --> 00:13:10,000
Worm-blossom.org.

217
00:13:10,000 --> 00:13:13,000
Worm-blossom.org.

218
00:13:13,000 --> 00:13:24,000
And where you have this expression, which is also very much thanks to your co-creator,

219
00:13:25,000 --> 00:13:26,000
Sammy.

220
00:13:26,000 --> 00:13:30,000
And she is a fantastic cartoon artist.

221
00:13:30,000 --> 00:13:33,000
And so it's a little protocol.

222
00:13:33,000 --> 00:13:35,000
Comic artist.

223
00:13:35,000 --> 00:13:37,000
Oh, comic artist.

224
00:13:37,000 --> 00:13:39,000
Sammy would yell at me if I didn't jump in here right now.

225
00:13:39,000 --> 00:13:42,000
What's the name?

226
00:13:42,000 --> 00:13:44,000
You'd have to ask Sammy that.

227
00:13:44,000 --> 00:13:47,000
But let's just call her an illustrator.

228
00:13:47,000 --> 00:13:48,000
Okay, illustrator.

229
00:13:48,000 --> 00:13:54,000
Well, she's a fantastic illustrator, and like the whole Willow protocol is very well documented,

230
00:13:54,000 --> 00:13:56,000
one of the best of its kind.

231
00:13:56,000 --> 00:14:00,000
Which is something we could talk about, and we will talk about pretty soon.

232
00:14:02,000 --> 00:14:07,000
But is this also part of the care you're talking about?

233
00:14:08,000 --> 00:14:09,000
No, and yes.

234
00:14:10,000 --> 00:14:11,000
Okay.

235
00:14:13,000 --> 00:14:14,000
I don't know.

236
00:14:14,000 --> 00:14:16,000
Feelings are mushy things.

237
00:14:16,000 --> 00:14:19,000
Okay, okay, this was actually before.

238
00:14:19,000 --> 00:14:23,000
I slightly interrupted you by raising my hand.

239
00:14:23,000 --> 00:14:27,000
And that was because you keep coming back to your feelings.

240
00:14:28,000 --> 00:14:34,000
And me as knowing you, you have a lot of feelings, of course, as anyone does.

241
00:14:35,000 --> 00:14:42,000
But your feelings are often seemingly, intuitively connected to deeper thought.

242
00:14:43,000 --> 00:14:45,000
Because something that the listener might not know,

243
00:14:46,000 --> 00:14:49,000
you are not pure developer TM.

244
00:14:49,000 --> 00:14:51,000
You're actually like a mathematician, right?

245
00:14:52,000 --> 00:14:54,000
Well, technically no, but...

246
00:14:54,000 --> 00:14:55,000
And a musician.

247
00:14:56,000 --> 00:14:58,000
Well, technically no, but...

248
00:14:58,000 --> 00:14:59,000
Yeah.

249
00:15:03,000 --> 00:15:04,000
Actually, no, I shouldn't do that.

250
00:15:04,000 --> 00:15:07,000
Yes, I said identify as a musician.

251
00:15:07,000 --> 00:15:07,000
Yeah.

252
00:15:07,000 --> 00:15:09,000
And screw labels.

253
00:15:09,000 --> 00:15:11,000
So yes, I'm a musician, damn it.

254
00:15:11,000 --> 00:15:11,000
Yes, you are.

255
00:15:13,000 --> 00:15:15,000
But no, I like the proper training.

256
00:15:15,000 --> 00:15:21,000
Like, I don't know enough analysis, and not enough topology to call myself a mathematician.

257
00:15:21,000 --> 00:15:22,000
I'm sorry.

258
00:15:23,000 --> 00:15:27,000
Yes, the maths computer scientist I've taken a fairly theory heavy

259
00:15:27,000 --> 00:15:28,000
and maths laden route.

260
00:15:28,000 --> 00:15:29,000
Let's phrase it like that.

261
00:15:29,000 --> 00:15:31,000
Let's phrase it like that then.

262
00:15:31,000 --> 00:15:33,000
But when you talk about feelings,

263
00:15:34,000 --> 00:15:38,000
are those feelings maybe also connected to,

264
00:15:39,000 --> 00:15:41,000
okay, I'm trying to remember the terminology we just used,

265
00:15:41,000 --> 00:15:46,000
but like these theory-laden perspectives that you also hold?

266
00:15:47,000 --> 00:15:48,000
That's a good question.

267
00:15:49,000 --> 00:15:50,000
Like, I've...

268
00:15:50,000 --> 00:15:59,000
I've always been very guided, both in which things I'm exploring

269
00:15:59,000 --> 00:16:01,000
and in which shape that exploration takes,

270
00:16:03,000 --> 00:16:04,000
by a sense of aesthetics almost.

271
00:16:05,000 --> 00:16:10,000
Like, seeing solutions that are not beautiful

272
00:16:11,000 --> 00:16:13,000
makes me want to replace them.

273
00:16:14,000 --> 00:16:19,000
Which is both a strength and a curse in some sense.

274
00:16:19,000 --> 00:16:27,000
It's a strength because it leaves me dissatisfied with things that

275
00:16:27,000 --> 00:16:33,000
many other people who don't then develop their own protocols from scratch

276
00:16:33,000 --> 00:16:34,000
will just accept.

277
00:16:36,000 --> 00:16:41,000
And I do think the problems are real that we can identify there.

278
00:16:42,000 --> 00:16:48,000
So it's good to have a sort of innate motivation to try to improve on things.

279
00:16:50,000 --> 00:16:52,000
Right, so that's how I would say it's a strength.

280
00:16:54,000 --> 00:16:56,000
And I guess it's a weakness in two senses.

281
00:16:56,000 --> 00:17:03,000
One, purely in the conventional academic slash mathematical sense.

282
00:17:03,000 --> 00:17:05,000
That's not a valid argument.

283
00:17:07,000 --> 00:17:12,000
Right, so communicating stuff needs a different kind of work.

284
00:17:14,000 --> 00:17:17,000
And two also, sometimes reality is just messy,

285
00:17:17,000 --> 00:17:24,000
and I need to stop myself from considering messiness as unappealing or unaesthetic.

286
00:17:25,000 --> 00:17:26,000
But I think this is also...

287
00:17:26,000 --> 00:17:29,000
Okay, this is a weird maybe relation to Mink,

288
00:17:29,000 --> 00:17:32,000
but there's this anime called Orb.

289
00:17:33,000 --> 00:17:34,000
You've never heard of it.

290
00:17:34,000 --> 00:17:38,000
No, it's a quite nice anime I would say.

291
00:17:38,000 --> 00:17:47,000
But the topic of the anime is about mathematicians who started

292
00:17:47,000 --> 00:17:51,000
looking at, is it called the heuristic bottle?

293
00:17:51,000 --> 00:17:56,000
The basically that the sun is in the center and the earth is rotating around the sun,

294
00:17:57,000 --> 00:18:02,000
which was like a thing only have herrhetics would say back in the day.

295
00:18:02,000 --> 00:18:04,000
Oh, is it a place of Poland?

296
00:18:06,000 --> 00:18:07,000
Good question.

297
00:18:07,000 --> 00:18:14,000
I don't actually know where geographically it is, but one of the perspectives that I

298
00:18:14,000 --> 00:18:18,000
keeps coming back to is that these mathematicians that were looking at

299
00:18:21,000 --> 00:18:25,000
what convinced them was the truth, even though they had enjoyed getting killed for it,

300
00:18:26,000 --> 00:18:30,000
because they were saying something that was going against the word of God, so to speak.

301
00:18:33,000 --> 00:18:37,000
They kept coming back to the sense of beauty and cleanness,

302
00:18:38,000 --> 00:18:41,000
and that's something that me, I've never been able to relate to,

303
00:18:41,000 --> 00:18:48,000
because I'm not a mathematician, and I haven't dove deep into that space.

304
00:18:49,000 --> 00:18:55,000
But I'm also understanding that as an artist, I'm not like someone who speaks the language of math,

305
00:18:56,000 --> 00:18:56,000
so to speak.

306
00:18:59,000 --> 00:19:03,000
There is a sense of an a beauty that isn't necessarily a rejection of messiness,

307
00:19:04,000 --> 00:19:11,000
but it can also be the beauty of nature.

308
00:19:11,000 --> 00:19:12,000
In many ways.

309
00:19:14,000 --> 00:19:20,000
I mean, I do know that being guided by a sense of beauty is fairly common amongst mathematicians.

310
00:19:20,000 --> 00:19:25,000
Like, I'm not the weird one out there, at least not amongst mathematicians.

311
00:19:26,000 --> 00:19:34,000
There is a beautiful piece of writing called Lockhart's Lament, which does a good job of conveying

312
00:19:34,000 --> 00:19:37,000
the beauty in mathematics to non-mathematicians.

313
00:19:38,000 --> 00:19:42,000
So I'll ask you to put a link to that into the description.

314
00:19:42,000 --> 00:19:44,000
Also, how did we get here?

315
00:19:44,000 --> 00:19:47,000
It feels like a vast change of it.

316
00:19:47,000 --> 00:19:57,000
The starting point of this was how you're weaving in illustrations and weaving in your own music is

317
00:19:57,000 --> 00:20:02,000
available on word.org, or word slash blossom.org.

318
00:20:02,000 --> 00:20:09,000
And you're taking this approach to your work that is rooted in care for people.

319
00:20:10,000 --> 00:20:14,000
And care for people is multifaceted.

320
00:20:15,000 --> 00:20:20,000
Yeah, and accordingly, I can take my answer to very many different directions.

321
00:20:22,000 --> 00:20:26,000
Let's start with the answer that doesn't lead us immediately back to where we actually started

322
00:20:26,000 --> 00:20:28,000
from, but let's go somewhere completely different.

323
00:20:28,000 --> 00:20:29,000
Not completely different.

324
00:20:30,000 --> 00:20:38,000
So the comics and the music and the playful updates are a form of self-defense.

325
00:20:40,000 --> 00:20:47,000
Because working on this stuff is difficult and it takes discipline and it takes a lot of time

326
00:20:47,000 --> 00:20:49,000
that you cannot put into other things.

327
00:20:50,000 --> 00:20:55,000
And especially if you are on a deadline due to grant work, for example, and you need to just

328
00:20:55,000 --> 00:20:59,000
deliver this feature because food costs money in our society.

329
00:21:01,000 --> 00:21:13,000
I had that that takes us tall and like we've reached multiple times points or at the very least

330
00:21:13,000 --> 00:21:16,000
I have reached points where it became very difficult for me to actually do the work

331
00:21:16,000 --> 00:21:20,000
despite having obligations that we should do the work.

332
00:21:21,000 --> 00:21:30,000
So at some point, Sam and I sat together virtually in a call and talked about what we might do

333
00:21:31,000 --> 00:21:34,000
to help us with that and to bring more joy into the process.

334
00:21:35,000 --> 00:21:42,000
And this started with me suggesting let's do a dev diary, which is actually a tradition

335
00:21:42,000 --> 00:21:47,000
we took from Scuttlebutt, where people would just post regular updates on which work they

336
00:21:48,000 --> 00:21:49,000
have been doing.

337
00:21:49,000 --> 00:21:57,000
And so we never developed this concept of let's just do weekly updates about everything we've done.

338
00:21:59,000 --> 00:22:08,000
And it's funny. So I proposed that and Sammy was not amused. She didn't like the idea at all

339
00:22:08,000 --> 00:22:13,000
because it was adding more work, which was not the work we were supposed to be doing.

340
00:22:14,000 --> 00:22:15,000
There were other factors involved.

341
00:22:15,000 --> 00:22:17,000
But let's leave it at that.

342
00:22:17,000 --> 00:22:23,000
And so she took one day or two days of mulling it over and then she came back to me and said,

343
00:22:23,000 --> 00:22:30,000
okay, we can do this, but then we have to do it right, which means making it exuberant and

344
00:22:31,000 --> 00:22:35,000
actually expressing stuff beyond just the updates.

345
00:22:37,000 --> 00:22:42,000
And then it was clear from the very start that she would be drawing effectively a webcomic.

346
00:22:43,000 --> 00:22:47,000
And then that I would be doing background music for it.

347
00:22:47,000 --> 00:23:15,000
So that's where that started. And then we ended this period of just being highly

348
00:23:15,000 --> 00:23:21,000
motivated. And we used our own build framework for generating the website and we built that

349
00:23:21,000 --> 00:23:31,000
we kept building on it. And that led into a very virtuous cycle where I at least suddenly wanted

350
00:23:31,000 --> 00:23:36,000
to get work done so that I could post about it because it felt good. And also just having

351
00:23:38,000 --> 00:23:42,000
the weekly update to work to work across the week.

352
00:23:42,000 --> 00:23:45,000
It gave you a bunch of mini deadlines, which are great for motivation.

353
00:23:46,000 --> 00:23:50,000
So that's how that came about. And then people seemed to like it,

354
00:23:52,000 --> 00:23:58,000
which was also like when we realized, oh, there's people reading this. This is weird.

355
00:23:59,000 --> 00:24:05,000
And there's people interacting with us because of this. Like we have a community, it's on Discord.

356
00:24:05,000 --> 00:24:12,000
For now, it's obviously going to migrate to a Willow alternative. But no, people are showing

357
00:24:12,000 --> 00:24:20,000
up there. And then we did this experiment of posting a little help wanted snippets where we'll say,

358
00:24:20,000 --> 00:24:27,000
hey, here's an easy task that we could do. But also someone else could do it. And people started

359
00:24:27,000 --> 00:24:37,000
doing these. So yeah, the whole site just like this website. It's been a good thing.

360
00:24:40,000 --> 00:24:47,000
And it's still fun to do. And we're still dreaming up stuff we want to do with it. And then need to

361
00:24:47,000 --> 00:24:51,000
balance that with the reality of putting too much time to the website is also maybe a bit

362
00:24:52,000 --> 00:25:00,000
of an unwise decision. But yeah, so that's a huge tangent on why there's drawings and music

363
00:25:00,000 --> 00:25:12,000
on our weekly devlog website. But now to come back to the other aspect of care for users. I mean,

364
00:25:12,000 --> 00:25:20,000
it's parents. Basically, we have a responsibility. We design protocols that we want to be used by

365
00:25:20,000 --> 00:25:24,000
non-technical people. We don't want people to use an application because it's built on top of

366
00:25:24,000 --> 00:25:32,000
Willow. We want people to use an application because it's a good application. And ideally,

367
00:25:32,000 --> 00:25:36,000
that application is built on Willow. And thus, the users inherit certain benefits. They're not

368
00:25:36,000 --> 00:25:43,000
necessarily aware of. And hopefully they will never need to be aware of them even. It should be

369
00:25:43,000 --> 00:25:50,000
invisible and getting off point. Well, actually, that's a great timing of you getting off point.

370
00:25:51,000 --> 00:25:59,000
And because I'm a little bit curious here, because you mentioned that the user would inherit some

371
00:25:59,000 --> 00:26:05,000
specific benefits without necessarily having to be aware of what specific benefits they're getting

372
00:26:06,000 --> 00:26:13,000
from using an application that's running over Willow. But I'm curious here, like,

373
00:26:14,000 --> 00:26:18,000
when we started this conversation, they were comparing with Scuttlebutt. But not everyone

374
00:26:18,000 --> 00:26:29,000
was Scuttlebutt. So just to start off, what are the benefits of having an application over Willow?

375
00:26:29,000 --> 00:26:34,000
What are the different qualities that come with that?

376
00:26:37,000 --> 00:26:42,000
How does it differ from making a regular web application? You know what I mean?

377
00:26:43,000 --> 00:26:49,000
I mean, regular web applications are fine except they're fragile. I think the more interesting

378
00:26:49,000 --> 00:26:54,000
part is once you leave all that fragile stuff behind and move into the peer-to-peer world,

379
00:26:54,000 --> 00:27:02,000
and then the community over the past decade or so, decades, technically has done a very good job

380
00:27:02,000 --> 00:27:08,000
of building anti-fredgile stuff or, you know, some communities. Are you referring to work by

381
00:27:08,000 --> 00:27:18,000
Taylorview, like anti-fredgility stuff? Not consciously, so. Oh, cool. Okay. I am roughly aware of that work.

382
00:27:18,000 --> 00:27:26,000
But no, I just meant it's not fragile. It's an intuitive term. Yeah. Yeah. Which

383
00:27:26,000 --> 00:27:33,000
holds high to tangent, loading very specific meaning, like technical meaning in a specific context,

384
00:27:33,000 --> 00:27:40,000
one to very intuitive terms. It's a great cause for miscommunication. Yeah, that's very true.

385
00:27:40,000 --> 00:27:47,000
So. We're staying focused. We can do this. I'm going to stay focused now. You don't have to stay focused.

386
00:27:47,000 --> 00:27:58,000
So no. What? No. Why didn't you say so from the very start? So this morning, breakfast.

387
00:27:58,000 --> 00:28:05,000
What did you have in a breakfast? Serious. What are we doing? Yes. What time?

388
00:28:06,000 --> 00:28:15,000
How did they differ from other cereals? So why you should use Willow? Why Willow is better than

389
00:28:15,000 --> 00:28:21,000
everyone else? No. Here we go. We actually had a conversation about this just last night because

390
00:28:21,000 --> 00:28:30,000
we were out at a bar. Indeed. Our listeners don't need to know that. I mean, just organically replay

391
00:28:30,000 --> 00:28:38,000
that full conversation. But I don't know. Okay. Since I was a slash sarcasm,

392
00:28:38,000 --> 00:28:40,000
friend one who didn't pick that up. I'm not Gosh's voice.

393
00:28:43,000 --> 00:28:49,000
Well, I thought we were just going to edit that out. But thank you very much. No, no, no. This is

394
00:28:49,000 --> 00:28:59,000
staying. 100%. Yeah. Maybe we can just edit that into two parts like comedy episode.

395
00:29:01,000 --> 00:29:09,000
Okay. Insert Jingle from Aliyasha. Oh, no, you meant editing. Darn it.

396
00:29:12,000 --> 00:29:19,000
So welcome back. Now we're staying focused. We sidetracked. Now we're going to sidetrack into

397
00:29:19,000 --> 00:29:25,000
two other topics. But before we sidetrack into two other topics, we're going to continue on the

398
00:29:25,000 --> 00:29:31,000
thread of the qualities that are inherent of a protocol such as willow and maybe specifically

399
00:29:31,000 --> 00:29:37,000
willow. Let's start with like what's protocols like willow, which are usually like routing agnostic,

400
00:29:38,000 --> 00:29:46,000
which is a term, but basically that you could use it over sneaker net, like put stuff on USB or

401
00:29:46,000 --> 00:29:52,000
that you could put it on a route, your data, the image network or Bluetooth and bounce it between

402
00:29:52,000 --> 00:29:59,000
phones or the regular internet. And now we have the peer-to-peer quality. And then we also have

403
00:29:59,000 --> 00:30:07,000
the local first quality. And like willow is from my perspective, a very classic example of like

404
00:30:07,000 --> 00:30:14,000
a peer-for-peer application or a protocol. Yeah. But here's what we're trying to provide beyond that.

405
00:30:15,000 --> 00:30:23,000
We are trying very hard to enable features such as strong deletion, deletion of metadata,

406
00:30:24,000 --> 00:30:29,000
user agency over which stuff propagates where and how to get rid of it later.

407
00:30:30,000 --> 00:30:35,000
So number one, on a regular application, I can just delete my data. Why does that matter?

408
00:30:35,000 --> 00:30:45,000
You can delete your data. Wow. Why have we thought of that yet?

409
00:30:47,000 --> 00:30:55,000
No. So here's the thing. There's several facets to the question of deletion in distributed systems.

410
00:30:55,000 --> 00:31:03,000
So once you put something on the internet, anyone might have it, right? Like it might be downloaded

411
00:31:03,000 --> 00:31:09,000
by somebody else. And if you then delete it on your machine locally, that doesn't really help

412
00:31:09,000 --> 00:31:15,000
because it's still on different machines. And you can ask other people nicely to also delete

413
00:31:15,000 --> 00:31:20,000
their copies of the data. And if all of them comply, then yay, you deleted the thing truly.

414
00:31:20,000 --> 00:31:29,000
However, if somebody took a screenshot and printed it out, then no computer protocol is going to be

415
00:31:29,000 --> 00:31:36,000
able to break into their home and destroy that printout. So there are certain limits to which

416
00:31:36,000 --> 00:31:42,000
forms of deletion you can achieve. But in this peer-to-peer space where one of the core tenants

417
00:31:42,000 --> 00:31:47,000
is essentially that data stored redundantly on multiple machines. And you don't really know

418
00:31:47,000 --> 00:31:53,000
in advance which machines those might be. There is a very tempting way of going about deletion,

419
00:31:53,000 --> 00:31:58,000
which is just to give up on it. You might say, well, in no chance, you can't force people to

420
00:31:58,000 --> 00:32:02,000
delete it. It's open source. They might just modify that client and not delete stuff.

421
00:32:02,000 --> 00:32:09,000
So why even bother? That's one approach. And a surprisingly large number of protocols takes

422
00:32:09,000 --> 00:32:17,000
that approach and makes choices in their data models. So kind of that choices, that's it at the very

423
00:32:17,000 --> 00:32:25,000
heart of how you insert data into these systems that rely on deletion, not really being a priority.

424
00:32:26,000 --> 00:32:34,000
Right? Scatterbut is... Well, it should be infamous for many reasons. One of them is that

425
00:32:34,000 --> 00:32:42,000
its core data structure, essentially whenever you post new data, the new data contains the

426
00:32:42,000 --> 00:32:49,000
reference to prior data. And Scatterbut says you have to kind of check the validity of that

427
00:32:49,000 --> 00:32:53,000
reference. And that also includes changing the validity of, well, the thing you're referencing,

428
00:32:53,000 --> 00:32:58,000
that references thing before it as well. So you have to check that step as well. And you kind of

429
00:32:58,000 --> 00:33:04,000
have to step through the full chain and verify everything, which means you can't delete anything.

430
00:33:04,000 --> 00:33:09,000
Everything has to be always available in order to perform this sort of verification.

431
00:33:09,000 --> 00:33:15,000
So Scatterbut is inherently unable to delete stuff up to certain caveats.

432
00:33:15,000 --> 00:33:21,000
So basically, on regular internet, it's difficult to get something deleted because

433
00:33:21,000 --> 00:33:29,000
whomever could download it. On Scatterbut it was essentially an inbuilt function of the protocol

434
00:33:29,000 --> 00:33:34,000
to make sure that things did not get deleted. Yes. And in Scatterbut, like the data structure

435
00:33:34,000 --> 00:33:40,000
is called an append-only log. And more recently, there's been a lot of protocols exploring stuff

436
00:33:40,000 --> 00:33:48,000
like Merkeljags, which is roughly put a generalization of this, where instead of having only one preceding

437
00:33:48,000 --> 00:33:51,000
thing, you need to validate, you kind of multiple things you need to validate.

438
00:33:51,000 --> 00:33:58,000
That's very rightly speaking, what a Merkadag is. And yeah, all of these are very

439
00:33:58,000 --> 00:34:05,000
anti-deletion in some sense. And I'm not buying the argument that says, well,

440
00:34:06,000 --> 00:34:10,000
don't expect things to go away if you've put them on the internet. Like, just don't

441
00:34:10,000 --> 00:34:16,000
put things on the internet then. But I do want to put things on the internet. And I get it can't be

442
00:34:16,000 --> 00:34:23,000
that black and white. So at the very least, the protocol should be able to, like, I should be able

443
00:34:23,000 --> 00:34:34,000
to signal intent, I would like this to be deleted. Because sure, there might be malicious peers

444
00:34:34,000 --> 00:34:40,000
who will not respect this intent. But you know, most human beings are kind of okay. And also,

445
00:34:40,000 --> 00:34:45,000
most human beings don't modify this software. And they run their computer. So

446
00:34:47,000 --> 00:34:57,000
I actually think the prior is more important. But any of yeah. Anyway, so if most people

447
00:34:58,000 --> 00:35:04,000
do honor deletion requests, so if I post something and then I later delete that,

448
00:35:04,000 --> 00:35:12,000
then the malicious user has to obtain the data kind of in the window where it was not yet deleted,

449
00:35:12,000 --> 00:35:18,000
right? And that window relative to the duration of the universe, that window is going to shrink

450
00:35:18,000 --> 00:35:23,000
and shrink and shrink and shrink. Right? Like, even if it's been online for two weeks before I

451
00:35:23,000 --> 00:35:29,000
deleted it for two years, like in 50 years time for the vast majority, it should have been deleted.

452
00:35:29,000 --> 00:35:34,000
And this becomes especially important because like one of the use cases that we saw in Scuttlebutt

453
00:35:34,000 --> 00:35:41,000
was a lot of the networks where Scuttlebutt suddenly saw uprights and downloads was like,

454
00:35:41,000 --> 00:35:46,000
for example, Myanmar when the word broke out. And that kind of I remember was quite worrying at the

455
00:35:46,000 --> 00:35:52,000
time because a lot of the qualities of Scuttlebutt is definitely not made for safe communication

456
00:35:52,000 --> 00:35:58,000
because if someone eventually found out that, whoa, their communication has been compromised when

457
00:35:58,000 --> 00:36:04,000
they were trying to have safe communication with their peers in Myanmar and they just could not

458
00:36:04,000 --> 00:36:10,000
delete anything and became a huge security risk. Yeah, I know at least one person who,

459
00:36:10,000 --> 00:36:15,000
when that happened, suddenly had to spend all their time making sure that people did not use

460
00:36:15,000 --> 00:36:22,000
Scuttlebutt over there. Yeah, so being able to solve this is quite like, deeply critical.

461
00:36:23,000 --> 00:36:27,000
But then Willow enables the vision?

462
00:36:29,000 --> 00:36:34,000
It's by signaling. It enables the vision in the way that you just described.

463
00:36:36,000 --> 00:36:42,000
Yes, but it also attempts to do that fairly thoroughly. So here is another problem with

464
00:36:42,000 --> 00:36:48,000
distributed systems where, or with our particular brand of distributed systems, where essentially

465
00:36:48,000 --> 00:36:53,000
data might take a long time to get somewhere and might take different paths and you don't know

466
00:36:53,000 --> 00:37:01,000
when which updates will arrive somewhere. So if I first say, let's use the default example from

467
00:37:01,000 --> 00:37:09,000
our own website, we write some data and we give it kind of the name, I hate my boss.

468
00:37:11,000 --> 00:37:17,000
Or Trump. Sure, let's stay with our boss. So I don't actually hate my boss.

469
00:37:17,000 --> 00:37:26,000
So it's easy for me to do use that example. You post a poop emoji kind of to the, and you name

470
00:37:26,000 --> 00:37:32,000
that thing, I hate my boss. And later you, for mysterious reasons, regret posting that.

471
00:37:33,000 --> 00:37:39,000
And you might want to get rid of that. Well, you can delete the poop emoji by saying,

472
00:37:39,000 --> 00:37:46,000
please delete the data that I named, I hate my boss. There's a certain problem with propagating

473
00:37:46,000 --> 00:37:51,000
a marker saying, please delete the data, I named, I hate my boss across the network.

474
00:37:51,000 --> 00:37:56,000
Again, it doesn't quite suffice to convince your boss that you never hated them in the first place.

475
00:37:56,000 --> 00:38:02,000
If on their machine, they get a request, please delete, I hate my boss. And the boss is like,

476
00:38:02,000 --> 00:38:07,000
what? Yeah, like even if they never got the poop emoji, they still got the metadata that something

477
00:38:07,000 --> 00:38:14,000
happens somewhere. Right. And that's, for example, something that I, I don't know many other projects

478
00:38:14,000 --> 00:38:18,000
that try to solve that, but we found a quite elegant solution there.

479
00:38:18,000 --> 00:38:25,000
But Willow has this hierarchical approach to effectively naming the data you put in there.

480
00:38:25,000 --> 00:38:31,000
You can just think of it as like a path in a file system. Whenever I want to insert data into Willow,

481
00:38:31,000 --> 00:38:37,000
I essentially select a folder inside Willow and that folder might live in a different folder or

482
00:38:37,000 --> 00:38:43,000
directory. Right. Until there's actually the data file. And what we can do is essentially,

483
00:38:43,000 --> 00:38:51,000
we have something that looks like deleting a folder high up in the hierarchy. So if I

484
00:38:51,000 --> 00:38:59,000
post, I hate my boss inside something code, well, posts, for example, then I could just say,

485
00:38:59,000 --> 00:39:07,000
please delete the posts on the directory. And then that is the request that gets circulated around

486
00:39:07,000 --> 00:39:13,000
that kind of stays around. Right. So everyone knows I had a post directory launch,

487
00:39:13,000 --> 00:39:18,000
once, which makes sense of kind of the education we're using to communicate as a post directory.

488
00:39:19,000 --> 00:39:25,000
But there's no trace of me having posted. I hate my boss inside the directory.

489
00:39:27,000 --> 00:39:34,000
So that was one of the first things that you said differentiated Willow from other somewhere,

490
00:39:34,000 --> 00:39:39,000
like peer for peer protocols. I can just also give you the next thing that's on my mind as you

491
00:39:39,000 --> 00:39:46,000
say that, because it fits well with what I just have been described, which is that we give these

492
00:39:46,000 --> 00:39:53,000
hierarchical names to data. So essentially whenever you publish something, it's like placing it in a,

493
00:39:53,000 --> 00:40:00,000
like, at a certain place in a file system. But that's surprisingly rather atypical.

494
00:40:01,000 --> 00:40:08,000
It's atypical, because many systems are built on a different kind of addressing called content

495
00:40:08,000 --> 00:40:17,000
addressing, where you don't assign a name that has meaning to certain data. But instead what you do

496
00:40:17,000 --> 00:40:24,000
is you take the data, you put it into a magic concept called a cryptographic secure hash function.

497
00:40:24,000 --> 00:40:31,000
And what this hash function spits out is a random looking string of garbage that uniquely

498
00:40:31,000 --> 00:40:38,000
identifies the data and that random looking string has been, has been computed from the data you

499
00:40:38,000 --> 00:40:44,000
put into that. So if, you know, if some monkey sits at a typewriter and writes the works of Shakespeare,

500
00:40:44,000 --> 00:40:50,000
and at a different typewriter, a different monkey happens to also write the exact works of Shakespeare,

501
00:40:50,000 --> 00:40:56,000
and both monkeys independently put their output through the same hash function. The shorter

502
00:40:56,000 --> 00:41:00,000
random looking identifier, which is a lot shorter than the actual works of Shakespeare is going to

503
00:41:00,000 --> 00:41:08,000
look, there's going to be identical for both of them. And then systems use that to request data,

504
00:41:08,000 --> 00:41:14,000
for example. The same technology is also used in the append only lots of scuttlebutt or the

505
00:41:14,000 --> 00:41:21,000
generalization to mercury's, because when I spoke earlier of new things, reference old things,

506
00:41:21,000 --> 00:41:28,000
what that actually means is new things contain this, contain the digest of the case of scuttlebutt,

507
00:41:28,000 --> 00:41:36,000
the previous, the previous message. Yeah. And well, that's a certain problem, because

508
00:41:37,000 --> 00:41:45,000
suppose I was able to delete an old thing, but somebody has the new things that's

509
00:41:45,000 --> 00:41:51,000
still pointing to the old thing by manner of just including the digest of the old thing.

510
00:41:52,000 --> 00:42:00,000
Now I can confirm the guess as to what the old thing has been. Like, if I'm like, my boss might

511
00:42:00,000 --> 00:42:07,000
think, well, they probably posted a poop emoji. So they take a poop emoji and they feed it into

512
00:42:07,000 --> 00:42:13,000
the hash function, and they get a digest. And if that digest kind of matches the thing,

513
00:42:14,000 --> 00:42:21,000
like the old thing, of which the new thing includes the insecure digest, then they can confirm that

514
00:42:21,000 --> 00:42:25,000
guess. And it's got what you can never get rid of that, because you needed to keep this

515
00:42:25,000 --> 00:42:32,000
this chain. So basically content addressing has immediate consequences for deletion. And

516
00:42:33,000 --> 00:42:40,000
there's, there's multiple ways of looking at it. So one of them is to treat this as a feature and say,

517
00:42:40,000 --> 00:42:45,000
it's censorship resistant, and you never get link rot. Right. So link rot is the concept that

518
00:42:45,000 --> 00:42:50,000
when you have a hyperlink on the web, so one website points to different websites. Quite often,

519
00:42:50,000 --> 00:42:55,000
the other website doesn't exist any longer and you just get, sorry, I couldn't find this. And

520
00:42:56,000 --> 00:43:02,000
with these, these let's call them cipherlinks, because it's kind of a cute name,

521
00:43:02,000 --> 00:43:07,000
with these cipherlinks that there isn't really a thing, because anyone who still has that old

522
00:43:07,000 --> 00:43:14,000
website knows its hash and can just feed it back. So you can't really delete stuff, because it

523
00:43:14,000 --> 00:43:20,000
doesn't even matter whether something has been created or are not. Like, it doesn't matter if I

524
00:43:20,000 --> 00:43:24,000
posted the poop emoji, if anyone who might not have been me posted the poop emoji,

525
00:43:24,000 --> 00:43:30,000
but would have the same hash. Right. So then that thing would be retrievable by that hash.

526
00:43:30,000 --> 00:43:37,000
Like there's no direct connection to me as an entity with intent in this kind of system.

527
00:43:38,000 --> 00:43:43,000
And I'm not quite sure why I'm going with this. You were going into the direction of like how

528
00:43:44,000 --> 00:43:49,000
will it visit differently? And you know that that's where you want me to go, because I'm using

529
00:43:49,000 --> 00:43:51,000
too much time, I wasn't going there at all.

530
00:43:53,000 --> 00:43:56,000
Well, then I carried you right and I would not know.

531
00:43:57,000 --> 00:43:59,000
Then I tried reading my own mind for another second.

532
00:44:04,000 --> 00:44:06,000
Oh, yes. I know where I was going. Linkrod.

533
00:44:06,000 --> 00:44:07,000
Yeah, you must go.

534
00:44:07,000 --> 00:44:14,000
So yes. So this kind of content addressing, it can be said to solve linkrod, because it doesn't

535
00:44:14,000 --> 00:44:19,000
matter whether the server where the data originally lived goes offline, because that never mattered

536
00:44:19,000 --> 00:44:25,000
in the first place. All that mattered was that somebody figured out that a particular piece of

537
00:44:25,000 --> 00:44:32,000
data maps to a particular digest. And from that moment on that, that connection has been made,

538
00:44:32,000 --> 00:44:36,000
and anyone who ever had the data can now answer the request for the digest.

539
00:44:37,000 --> 00:44:41,000
And it's not dependent on a single server, which can eliminate the main cause of linkrod.

540
00:44:41,000 --> 00:44:47,000
But the problem here is, of course, you also can't deliberately induce linkrod.

541
00:44:47,000 --> 00:44:52,000
Like sometimes you just want your website to not be on the web anymore.

542
00:44:53,000 --> 00:44:59,000
So building the web on this technology, which many projects have enthusiastically tried to do

543
00:44:59,000 --> 00:45:05,000
in the name of censorship, resistance, and well, anti-fragility actually.

544
00:45:05,000 --> 00:45:12,000
That has deep flaws, because it robs humans of the agency to retract something.

545
00:45:14,000 --> 00:45:21,000
And one of the core ideas behind WOODO is that we believe that there is a different way.

546
00:45:21,000 --> 00:45:28,000
So if we have kind of the classic way the web does it, which is links just point to a location.

547
00:45:29,000 --> 00:45:34,000
And by removing the data from that location, you can delete stuff, but also

548
00:45:34,000 --> 00:45:37,000
locations just rot away because you need to pay for them on the web,

549
00:45:38,000 --> 00:45:41,000
and servers run on electricity, and servers grow old.

550
00:45:43,000 --> 00:45:47,000
So you kind of get linkrod back into the system, and then there's the opposite approach of

551
00:45:49,000 --> 00:45:54,000
making links really, really unrotable to the point where you can't get rid of them, even if you

552
00:45:54,000 --> 00:46:03,000
wanted to. And what WOODO does instead is something different. It allows people to assign meaningful

553
00:46:03,000 --> 00:46:10,000
names to the data. So I as a user can say, I want this poop emoji to be addressed not as

554
00:46:12,000 --> 00:46:17,000
the secure head, the secure digest of the poop emoji. And neither I want to say, well,

555
00:46:17,000 --> 00:46:21,000
you need to retrieve the poop emoji from this particular server. But rather, I just say, well,

556
00:46:21,000 --> 00:46:27,000
this poop emoji, it's going to be a reachable under the name I hate my boss, as posted by me,

557
00:46:27,000 --> 00:46:31,000
where me in the sense is an entity participating in the network, which,

558
00:46:31,000 --> 00:46:37,000
practically speaking, just means some public key of a group of graphically secure

559
00:46:37,000 --> 00:46:42,000
signature scheme. The standard form of identity in distributed networks,

560
00:46:42,000 --> 00:46:47,000
like the public and private key. Yeah, pretty much. Instead of a login with the password.

561
00:46:49,000 --> 00:46:53,000
Right. Yeah, I think going to the details of that would actually take us off too much on the

562
00:46:53,000 --> 00:47:01,000
attention. So we will. Yeah, let's just assume that we know what a public key and a secret key

563
00:47:01,000 --> 00:47:07,000
in a signature scheme. I didn't. So this is kind of important. It's not that there's like on the

564
00:47:07,000 --> 00:47:13,000
whole world, everybody now associates, I hate my boss with a poop emoji, rather that's tied to me.

565
00:47:13,000 --> 00:47:20,000
But if somebody asks, well, which data did Ayasha assigned to, I hate my boss, then they would be

566
00:47:20,000 --> 00:47:25,000
getting back a poop emoji. Yeah. And the way this word is really works, it's really just I

567
00:47:26,000 --> 00:47:32,000
create a record saying the name I hate my boss now maps to a poop emoji, signed Ayasha.

568
00:47:32,000 --> 00:47:37,000
Yeah. Where instead of signing Ayasha, I actually use my secret key to generate a secure signature

569
00:47:37,000 --> 00:47:42,000
that anyone who knows my public key can verify as actually belonging to that, like having been

570
00:47:42,000 --> 00:47:46,000
produced by the person having the secret key for that public key, poor, this is.

571
00:47:46,000 --> 00:47:50,000
But no one else would be able to reproduce that like signature.

572
00:47:50,000 --> 00:47:55,000
Exactly. Only I am able to produce the signature. And therefore, by trying to guess if you had

573
00:47:55,000 --> 00:48:01,000
posted poop emoji, even by trying to guess that you posted poop emoji or thinking that they have

574
00:48:01,000 --> 00:48:07,000
the answer, they wouldn't be able to replicate the exact same post because they don't have your

575
00:48:07,000 --> 00:48:15,000
private key. Yeah. So nobody can pretend that I posted a poop emoji, except for me myself.

576
00:48:15,000 --> 00:48:21,000
And then it's not really pretending. And so the cool thing about this is this does not rot

577
00:48:21,000 --> 00:48:26,000
on its own. Right. The signature is going to stay valid until the end of time. At least that's

578
00:48:26,000 --> 00:48:32,000
what cryptographers pretend. And that's great. And we're going to make that a sound too. Right. So

579
00:48:32,000 --> 00:48:40,000
if as long as the cryptographic primitive stays secure, the thing is just as durable as a content

580
00:48:40,000 --> 00:48:48,000
addressing thing, you're right. It's just like, if I die, then in 40 years, there's still going to be

581
00:48:48,000 --> 00:48:54,000
kind of my signature on I hate my boss being mapped to a poopy. How did we end?

582
00:48:56,000 --> 00:49:04,000
I don't think I've said poop emoji this often my entire life. In total. Good thing it's just a

583
00:49:04,000 --> 00:49:09,000
private conversation between my good friends and myself. Yeah, it's not a dependable log.

584
00:49:10,000 --> 00:49:18,000
So suppose I'm deeply unhappy with that. And I want to change that poop emoji to a unicorn emoji.

585
00:49:21,000 --> 00:49:28,000
Then I can. I just have to issue the new record saying, I am holder of the secret

586
00:49:28,000 --> 00:49:34,000
fee for the following public key. Short-hand for that. I am Yasha. Now associate the

587
00:49:35,000 --> 00:49:41,000
friend about a boss with a unicorn emoji with an irony emoji. Let's just pretend there's an

588
00:49:41,000 --> 00:49:49,000
irony mode just probably an iron ingot and then something. Yeah. So I can just do that. And

589
00:49:49,000 --> 00:49:55,000
all I really need then is to attach to these two signed records one saying, I have my boss poopy

590
00:49:55,000 --> 00:50:00,000
emoji and one saying, I have my boss irony emoji. All I need is a way for telling which of them

591
00:50:00,000 --> 00:50:07,000
is newer than the other. And then kind of everyone who gets the newer one can throw away the old one.

592
00:50:08,000 --> 00:50:15,000
And this way we still get the ability to override stuff to mutate data and also effectively to

593
00:50:16,000 --> 00:50:23,000
deletion willows just a special case of overwriting some stuff. And so you get the

594
00:50:23,000 --> 00:50:30,000
intentional parts where you deliberately want to remove data from the web. But you get rid of the

595
00:50:30,000 --> 00:50:34,000
passive link rod that is inserted into the web depending on your point of view,

596
00:50:34,000 --> 00:50:40,000
either by virtue of being dependent on locations or by virtue of being dependent on capital flowing

597
00:50:40,000 --> 00:50:47,000
into a system. Yeah. And that's one of the big hypotheses that we're exploring that this actually

598
00:50:47,000 --> 00:50:54,000
works and that it creates value. So this whole concept, like where did it start? Where does it come

599
00:50:55,000 --> 00:51:03,000
from? We all designed it on our own. No, it is for Asian whatsoever. We're really young.

600
00:51:05,000 --> 00:51:18,000
Yeah. Willow, and in particular the ideas that I just talked about, is based on a prior project

601
00:51:18,000 --> 00:51:24,000
called Earth Star. And Earth Star in turn grew out of Scuttlebutt actually in a sense,

602
00:51:25,000 --> 00:51:31,000
because there was a user on Scuttlebutt called Cinnamon who is no longer with us sadly. But Cinnamon

603
00:51:31,000 --> 00:51:37,000
at the time saw problems with Scuttlebutt that not many other people were talking about at the time,

604
00:51:39,000 --> 00:51:44,000
many of which I've talked about by now, like the the paragraphs of being unable to delete things

605
00:51:45,000 --> 00:51:50,000
and kind of how structurally they anchored in the usage of the abandoned only log. And

606
00:51:51,000 --> 00:51:58,000
Cinnamon eventually realized that Scuttlebutt cannot or should not be the future and started

607
00:51:58,000 --> 00:52:06,000
their own protocol, which was called Earth Star. And Earth Star was based on this idea of these

608
00:52:06,000 --> 00:52:13,000
signed bindings of mapping human legible names deliberately to data rather than just using content

609
00:52:13,000 --> 00:52:22,000
addressing. And then Sammy joined that effort actually way before me. And the way I then later

610
00:52:22,000 --> 00:52:32,000
joined, I caught COVID and took some aspirin and then felt very sassy. And for some reason

611
00:52:32,000 --> 00:52:39,000
decided to write a little document how I would do Earth Star from Scuttlebutt if I could,

612
00:52:39,000 --> 00:52:46,000
but I would never do that obviously. I gave it the worst possible name so that nobody could

613
00:52:46,000 --> 00:52:53,000
ever take it seriously, which was soil sun as opposed to Earth Star. So soil sun, which nobody

614
00:52:53,000 --> 00:53:05,000
should name their protocol soil sun. I had a good, all right? And especially when it's okay.

615
00:53:06,000 --> 00:53:15,000
No. It's very fertile. Indeed. And Sammy for some reason took it seriously. And Sammy for some

616
00:53:15,000 --> 00:53:24,000
reason wanted to implement it and acquired funding and gave it a good name. So Willow actually comes

617
00:53:24,000 --> 00:53:31,000
from the aspirin that I took. Oh, I didn't know this part of the story. That's beautiful. Now you

618
00:53:31,000 --> 00:53:38,000
know. Oh my god. Yeah. But there is also a certain part that you brought in and I can assume

619
00:53:39,000 --> 00:53:47,000
what did you call it? Soil. Soil sun. Yeah. Soil sun. The tagline was a minimalistic reimagining

620
00:53:47,000 --> 00:53:54,000
of Earth Star. Did you bring in something that you're quite well known in our circles for is like

621
00:53:54,000 --> 00:54:03,000
rich base sub reconciliation? I did not. Well, depending on how you would like to treat causality,

622
00:54:04,000 --> 00:54:11,000
I did not bring in orange base set reconciliation when with the soil sun draft, the soil sun draft

623
00:54:12,000 --> 00:54:18,000
just started out as we me removing a bunch of stuff. And then as it turned into Willow,

624
00:54:18,000 --> 00:54:26,000
later adding back other kinds of stuff, no way to set reconciliation. Yeah. There's there's a good

625
00:54:26,000 --> 00:54:38,000
story there actually. So back in the day, it's it's 2019, I think. I have been active on scutter

626
00:54:38,000 --> 00:54:44,000
but at one point, the strange thing happened where like a real the real world professor joined the

627
00:54:44,000 --> 00:54:51,000
network. Yeah, this person joined the network showed off some work of this and was really cool.

628
00:54:51,000 --> 00:54:57,000
And you know, you you stalk these people on social media and turns out they chaired the

629
00:54:58,000 --> 00:55:04,000
computer networking group at the University of Basel that professor is called Christian

630
00:55:04,000 --> 00:55:14,000
Tuden or CFT was a scutter part and stuff escalated. We ended up writing a paper. So a CFT and Eric

631
00:55:14,000 --> 00:55:24,000
Lavera, who later also did a post after a position in Basel and me and Dominic Tar himself wrote this

632
00:55:25,000 --> 00:55:30,000
indeed. We wrote those paper on Sophia's cut about and actually got it published and that was

633
00:55:30,000 --> 00:55:38,000
quite fun. And you know, at one point, Eric and I got invited to Basel University and we spent

634
00:55:38,000 --> 00:55:44,000
two days, I think, there just working on this paper and I running out our thoughts. And through

635
00:55:44,000 --> 00:55:53,000
that, I got to know Christian Julian, who in 2019 then invited me to do a semester in his group as an

636
00:55:53,000 --> 00:56:00,000
intern, essentially. And during that semester, I set out thinking a lot about the pendant only logs.

637
00:56:01,000 --> 00:56:07,000
But what actually happened very much inspired by postings of Cinnamon on Scutterbutt about kind

638
00:56:07,000 --> 00:56:14,000
of the dangers with a pendant only logs. And not only the dangers, but also this inherent limitation

639
00:56:14,000 --> 00:56:19,000
of one thing has to come after the other, which is not great if you want to use multiple devices

640
00:56:19,000 --> 00:56:25,000
because you know, you might just post stuff on one device and on the other concurrently before they

641
00:56:25,000 --> 00:56:29,000
have talked to each other. You might want to pick, you probably want to be able to do that, but then

642
00:56:29,000 --> 00:56:34,000
the append only log does weird things and is unhappy and your data becomes corrupted and everyone has

643
00:56:34,000 --> 00:56:43,000
to reject it and to sadness. So Cinnamon and I were both exploring on Scutterbutt, notions of how to

644
00:56:43,000 --> 00:56:50,000
avoid that. And at the time, I was very fascinated with category theory of all things, which is this

645
00:56:50,000 --> 00:56:57,000
arcane branch of mathematics. And very central to that branch of mathematics is the notion of

646
00:56:57,000 --> 00:57:03,000
everything of every concept having a kind of dual concept that you get for free, kind of you can look

647
00:57:03,000 --> 00:57:09,000
at everything from two different viewpoints. But they're essentially the same, but kind of different.

648
00:57:10,000 --> 00:57:17,000
And I was wondering what is the dual to the log or rather sequence, because there's certain

649
00:57:17,000 --> 00:57:23,000
context and computer science where kind of the operation of saying first this, then that exists,

650
00:57:23,000 --> 00:57:29,000
and then the dual notion for that is either that or the other. The important part being that either

651
00:57:29,000 --> 00:57:34,000
that or the other, the order doesn't matter. Right, you always choose one of them, it doesn't matter

652
00:57:35,000 --> 00:57:40,000
whether you placed one first or the other first. You can still choose the same thing and

653
00:57:41,000 --> 00:57:48,000
irrespective of how they were placed, I'm rambling, as opposed to sequencing stuff,

654
00:57:48,000 --> 00:57:53,000
we're saying first this, then that there's clearly a notion of one comes before the other.

655
00:57:54,000 --> 00:58:02,000
So I was wondering a lot about how does the the logliness of secure Scutterbutt, which is all about

656
00:58:02,000 --> 00:58:08,000
sequencing stuff in order. Well, if the dual to that is not caring about the order and just

657
00:58:08,000 --> 00:58:14,000
having a collection of stuff, which we call a set in mathematics, how does that relate to each other?

658
00:58:14,000 --> 00:58:20,000
And then is there a nice way for efficiently reconciling the difference between two sets?

659
00:58:21,000 --> 00:58:26,000
Because we never set the C explicitly, but the main reason why Scutterbutt uses this highly

660
00:58:26,000 --> 00:58:34,000
restrictive and kind of yucky append-only log is because it makes for extremely efficient and

661
00:58:34,000 --> 00:58:41,000
simple data synchronization. I just like, if you and I meet and both of us are interested in the

662
00:58:41,000 --> 00:58:46,000
data that Dominic has published, then I just say, well, I have the first 200 things Dominic has

663
00:58:46,000 --> 00:58:52,000
published. And you say, oh, cool, but I already have 212 things. So what you then do is you just

664
00:58:52,000 --> 00:58:57,000
send the newest 12 things to me and that's it. So all we really needed to exchange in order to

665
00:58:57,000 --> 00:59:03,000
get communication going were two numbers, right? Who has how much stuff? That's extremely cool and

666
00:59:03,000 --> 00:59:11,000
simple and doesn't work at all for unordered collections, so for sets. So I ended up spending

667
00:59:11,000 --> 00:59:17,000
most of my time in Basa trying to figure out how to do that, like how to reconcile sets.

668
00:59:18,000 --> 00:59:26,000
And so I read a bunch of papers. I found this one paper that had a solution, but which was ugly.

669
00:59:27,000 --> 00:59:33,000
We talked about it now. I'm driven by things not being pretty enough. And that paper,

670
00:59:34,000 --> 00:59:42,000
what it did essentially was it forced a certain structure on the things in the set. So rather

671
00:59:42,000 --> 00:59:48,000
than saying I inserted things in this order in the sets in the set, and now that's the structure

672
00:59:48,000 --> 00:59:52,000
that wouldn't work, because if you insert things in different order, you still end up with the same

673
00:59:52,000 --> 00:59:58,000
set. If you insert the same things, right, if I first insert Apple and then banana or if I first

674
00:59:59,000 --> 01:00:03,000
insert banana and then Apple, I still get the set containing banana and apple.

675
01:00:03,000 --> 01:00:09,000
And so you can't really do it based on the ordering, but what you can do is you can just say, well,

676
01:00:09,000 --> 01:00:18,000
for any possible combination of fruits, I'm just going to define kind of a rigid structure of them,

677
01:00:18,000 --> 01:00:22,000
which could be added simple. It's kind of just sort them alphabetically, for example. For various

678
01:00:22,000 --> 01:00:27,000
reasons, that's not efficient to just sort them in the list, but you need to arrange them in a tree,

679
01:00:27,000 --> 01:00:31,000
which is a particular kind of data structure we don't really need to get into. But what they did is

680
01:00:31,000 --> 01:00:39,000
they built a tree whose shape depended uniquely on the contents. Then they put

681
01:00:39,000 --> 01:00:45,000
Merkle labels on that, which we probably don't need to go into. But if you know what a Merkle tree is,

682
01:00:45,000 --> 01:00:51,000
that's the core idea of theirs. They just do a special unique Merkle tree for every set, and then

683
01:00:51,000 --> 01:00:58,000
you just kind of compare the first part of each tree, the root node, do they have the same Merkle

684
01:00:58,000 --> 01:01:02,000
label? If so, then you know the trees are identical. If not, then you kind of compare the

685
01:01:02,000 --> 01:01:06,000
left and the right child. Rocky speaking, that's the ideal here. The paper being

686
01:01:07,000 --> 01:01:10,000
called, I don't actually know the name. I will put the link somewhere.

687
01:01:10,000 --> 01:01:15,000
And you've written a paper on this? No, that's the thing that I found ugly.

688
01:01:15,000 --> 01:01:19,000
Oh, but you've written a paper on rangeface, so very conservation.

689
01:01:19,000 --> 01:01:27,000
Yes. So which was my take on how to do things instead, where the important part is effectively,

690
01:01:27,000 --> 01:01:32,000
you do a very similar technique of kind of saying I compare kind of the highest point on the tree,

691
01:01:32,000 --> 01:01:35,000
and if they are equal, then I know that everything is equal. And if they are not,

692
01:01:35,000 --> 01:01:43,000
kind of look at the next lower layer in the tree and start comparing points in that layer and so on.

693
01:01:44,000 --> 01:01:52,000
But the core difference in my work was that I didn't mandate a particular shape of tree,

694
01:01:52,000 --> 01:01:58,000
but rather I would say you can use any kind of tree that stores the same sort of data.

695
01:01:59,000 --> 01:02:05,000
And you can see the main work somehow, and I probably shouldn't explain the details

696
01:02:05,000 --> 01:02:10,000
right now that would take a while. But if you are curious about it, then go read the paper.

697
01:02:11,000 --> 01:02:20,000
No, don't read the papers. That paper, that paper was written so that it would make it past

698
01:02:20,000 --> 01:02:25,000
reviewers. I mean, yeah, actually you'd read the paper.

699
01:02:25,000 --> 01:02:28,000
So think about it. What do you, where would you send people?

700
01:02:30,000 --> 01:02:31,000
I shouldn't be stumped by this.

701
01:02:34,000 --> 01:02:37,000
I'm deeply saddened that I am stumped by this.

702
01:02:39,000 --> 01:02:45,000
So before I wrote the paper, I actually just put a little write up on GitHub that does a lot of

703
01:02:45,000 --> 01:02:49,000
hand waving, but probably is a way better entry point than the paper itself.

704
01:02:50,000 --> 01:02:52,000
So I can link to that.

705
01:02:53,000 --> 01:02:55,000
And I can look for some other resources.

706
01:02:55,000 --> 01:03:01,000
And right now we are at time because I'm trying to keep these compact enough that they're

707
01:03:01,000 --> 01:03:10,000
in listenable. And so is there any final note you'd like to pitch in before we close this

708
01:03:10,000 --> 01:03:12,000
beautiful introduction chapter?

709
01:03:16,000 --> 01:03:24,000
Thank you.

710
01:03:24,000 --> 01:03:31,000
So

