1
00:00:00,000 --> 00:00:12,800
Trust is a function. It is more than just a feeling. In a world of infinite noise,

2
00:00:12,800 --> 00:00:20,440
the only signal that matters is the one you verify. We are here to map the graph,

3
00:00:21,180 --> 00:00:26,000
order the protocol, and build the immune system for the decentralized web.

4
00:00:26,000 --> 00:00:29,760
Welcome to the signal processing layer.

5
00:00:30,860 --> 00:00:33,720
This is Say What?

6
00:00:41,100 --> 00:00:44,460
Welcome to the second episode of Say What?

7
00:00:45,060 --> 00:00:51,880
Today we're debugging the intersection of AI and the web of trust with the architect Jesus.

8
00:00:51,880 --> 00:01:01,120
We're tracing his build history through the protocol, from projects like DVM-CP and ContextVM to his latest one, Relator.

9
00:01:01,780 --> 00:01:10,200
This is a technical deep dive into how machine intelligence can be engineered to serve human reputation rather than capture it.

10
00:01:10,760 --> 00:01:13,900
A quick protocol reminder before we execute.

11
00:01:14,620 --> 00:01:17,260
There are no corporate sponsors in this bunker.

12
00:01:17,900 --> 00:01:20,940
This frequency is strictly peer-to-peer.

13
00:01:20,940 --> 00:01:26,880
If you extract actionable signal from this conversation, consider returning the value.

14
00:01:27,720 --> 00:01:33,900
Boosts, zaps, and streaming sats are the only proof of work that keep this node running.

15
00:01:34,520 --> 00:01:42,140
You can also commit to the signal by locking in a subscription to PlepChain Radio on Fountain.

16
00:01:42,800 --> 00:01:44,780
Let's get into the code.

17
00:01:45,260 --> 00:01:47,520
Jesus, welcome to Say What.

18
00:01:47,520 --> 00:01:57,620
hey thank you for having me here yes thank you for being here uh jesus i've uh i came across

19
00:01:57,620 --> 00:02:04,200
i've obviously seen your name on nostril i've been on nostril for three years and it's come up in on

20
00:02:04,200 --> 00:02:11,320
the timeline uh but i think i started paying attention around a year or so ago or it might

21
00:02:11,320 --> 00:02:17,740
have been even less than a year when I saw something you posted about DVMCP.

22
00:02:19,120 --> 00:02:23,280
And then after that, that sort of morphed into ContextVM.

23
00:02:23,480 --> 00:02:26,520
And now here we are with your latest project, Relator.

24
00:02:26,760 --> 00:02:31,760
But before we get into all of that, maybe let's just talk about your build history on

25
00:02:31,760 --> 00:02:32,020
Nostro.

26
00:02:32,020 --> 00:02:35,340
When did you join and what was your first project?

27
00:02:36,620 --> 00:02:37,100
Nice.

28
00:02:37,300 --> 00:02:37,540
Yes.

29
00:02:37,540 --> 00:02:40,660
so I joined Nosser for a first time

30
00:02:40,660 --> 00:02:42,780
three years ago as well

31
00:02:42,780 --> 00:02:44,480
something around that

32
00:02:44,480 --> 00:02:46,720
the first time that I heard something

33
00:02:46,720 --> 00:02:47,760
about Nosser was

34
00:02:47,760 --> 00:02:49,480
from a podcast

35
00:02:49,480 --> 00:02:52,020
of a Spanish podcaster

36
00:02:52,020 --> 00:02:54,240
he's a good friend

37
00:02:54,240 --> 00:02:56,240
and he did a

38
00:02:56,240 --> 00:02:58,320
shout out Luna, he's a good friend too

39
00:02:58,320 --> 00:02:58,600
yeah

40
00:02:58,600 --> 00:03:01,740
so he did a podcast with

41
00:03:01,740 --> 00:03:02,980
Kameri

42
00:03:02,980 --> 00:03:05,540
three years ago

43
00:03:05,540 --> 00:03:06,540
something like that

44
00:03:06,540 --> 00:03:15,740
and that was the first time that I heard about Nocer and yeah, my head exploded at that time

45
00:03:15,740 --> 00:03:23,580
and I started to think about that more and more and at that time I was working for a company of a

46
00:03:23,580 --> 00:03:32,380
friend where we were doing open source software and consultancy. Then I discovered Nocer and I

47
00:03:32,380 --> 00:03:38,880
I started to put more time and effort into basically learning everything around it.

48
00:03:40,140 --> 00:03:45,340
You know, everything related to how keepers work.

49
00:03:46,840 --> 00:03:52,460
And, you know, identifying the relation between Nocer, Bitcoin.

50
00:03:53,280 --> 00:04:02,140
And, you know, I had this aha moment after working in my first project in Nocer.

51
00:04:02,140 --> 00:04:07,180
that was basically a little key storage CLI

52
00:04:07,180 --> 00:04:09,980
that I call Nozzle Starter.

53
00:04:11,620 --> 00:04:14,320
I created that because at that time

54
00:04:14,320 --> 00:04:16,100
in Nozzle we didn't have too many clients

55
00:04:16,100 --> 00:04:19,460
and the one that I used the most at that time

56
00:04:19,460 --> 00:04:22,220
was one called Nozzle Console

57
00:04:22,220 --> 00:04:25,240
which was a CLI client

58
00:04:25,240 --> 00:04:31,880
created by Vichel, I think that is the name.

59
00:04:32,140 --> 00:04:39,140
It's a developer that is not currently in Nosr, I don't see him very actively active lately.

60
00:04:39,140 --> 00:04:50,140
But I started with that, I started with a key storage solution because in order to log in to Nosr console

61
00:04:50,140 --> 00:04:56,140
you had to basically copy and paste the NSEC in the terminal.

62
00:04:56,140 --> 00:05:12,260
And you know, bash and the terminal have a history, so it felt a bit insecure to let that private key float in plain text on the history of my terminal.

63
00:05:12,260 --> 00:05:14,280
so yeah

64
00:05:14,280 --> 00:05:16,240
so then I created this

65
00:05:16,240 --> 00:05:18,320
little case storage basically

66
00:05:18,320 --> 00:05:20,260
to load NOSER

67
00:05:20,260 --> 00:05:21,800
console without

68
00:05:21,800 --> 00:05:26,380
letting a trace of

69
00:05:26,380 --> 00:05:28,420
the private key in the

70
00:05:28,420 --> 00:05:29,340
history of the terminal

71
00:05:29,340 --> 00:05:32,440
yeah that was it

72
00:05:32,440 --> 00:05:34,420
that was my first exploration of NOSER

73
00:05:34,420 --> 00:05:37,800
by the way

74
00:05:37,800 --> 00:05:39,120
can I just

75
00:05:39,120 --> 00:05:42,220
the key sort of floating around in plain

76
00:05:42,220 --> 00:05:44,300
text. This is not as

77
00:05:44,300 --> 00:05:45,640
uncommon even today.

78
00:05:46,660 --> 00:05:48,280
There are some setups that

79
00:05:48,280 --> 00:05:49,360
I've, you know,

80
00:05:49,840 --> 00:05:52,140
so this stream now

81
00:05:52,140 --> 00:05:53,920
is being live streamed, our conversation

82
00:05:53,920 --> 00:05:56,180
on zap.stream, and

83
00:05:56,180 --> 00:05:58,100
it's on my personal

84
00:05:58,100 --> 00:05:58,580
server.

85
00:06:00,400 --> 00:06:02,020
So I run my own instance of

86
00:06:02,020 --> 00:06:04,000
zap.stream, and in the initial

87
00:06:04,000 --> 00:06:04,540
setup,

88
00:06:05,760 --> 00:06:07,460
it required me to

89
00:06:07,460 --> 00:06:09,220
paste my raw NSEC

90
00:06:09,220 --> 00:06:11,180
into the config file

91
00:06:11,180 --> 00:06:17,400
obviously that's not the case anymore but it's it just goes to show that even today

92
00:06:17,400 --> 00:06:25,300
your nsec floating around uh in in plain text is uh is a fairly is not that uncommon

93
00:06:25,300 --> 00:06:35,280
no definitely not um i think that that is uh one of the most kind of tricky points of

94
00:06:35,280 --> 00:06:37,380
nocer of the user experience

95
00:06:37,380 --> 00:06:39,540
because, you know, it's a new

96
00:06:39,540 --> 00:06:41,360
paradigm. Basically, you have keys

97
00:06:41,360 --> 00:06:43,160
and the user is responsible

98
00:06:43,160 --> 00:06:45,280
for managing those keys.

99
00:06:46,020 --> 00:06:47,620
And right now, we have very good solutions

100
00:06:47,620 --> 00:06:49,500
like things

101
00:06:49,500 --> 00:06:51,420
like Amber and Remote Sign-In

102
00:06:51,420 --> 00:06:52,860
that I think that is

103
00:06:52,860 --> 00:06:55,460
the good, the best

104
00:06:55,460 --> 00:06:57,000
UX for

105
00:06:57,000 --> 00:06:59,340
key management. But

106
00:06:59,340 --> 00:07:01,500
it's true. Like today, we're still

107
00:07:01,500 --> 00:07:03,580
having private keys

108
00:07:03,580 --> 00:07:05,280
in plain text floating around.

109
00:07:06,940 --> 00:07:07,200
Yeah.

110
00:07:07,540 --> 00:07:09,600
It's a task to educate the user

111
00:07:09,600 --> 00:07:10,720
and everyone to

112
00:07:10,720 --> 00:07:12,440
use the tools.

113
00:07:15,120 --> 00:07:15,320
Yeah.

114
00:07:15,820 --> 00:07:17,340
So carry on, Jesus.

115
00:07:17,900 --> 00:07:19,740
So once you did that key storage

116
00:07:19,740 --> 00:07:21,520
for the command line tool that you were

117
00:07:21,520 --> 00:07:23,880
working on, what was...

118
00:07:23,880 --> 00:07:24,000
Yeah.

119
00:07:25,100 --> 00:07:26,600
Yeah, I started with that.

120
00:07:27,460 --> 00:07:29,800
After that, I was

121
00:07:29,800 --> 00:07:31,260
creating Nostry.

122
00:07:31,980 --> 00:07:33,340
Nostry with

123
00:07:33,340 --> 00:07:34,720
basically was

124
00:07:34,720 --> 00:07:37,280
an alternative to Linktree

125
00:07:37,280 --> 00:07:39,260
which I assume

126
00:07:39,260 --> 00:07:40,300
you already know

127
00:07:40,300 --> 00:07:43,360
this service to publish a list

128
00:07:43,360 --> 00:07:45,320
of links for your

129
00:07:45,320 --> 00:07:46,520
socials and

130
00:07:46,520 --> 00:07:49,360
websites and anything

131
00:07:49,360 --> 00:07:50,860
is very

132
00:07:50,860 --> 00:07:53,080
used a lot in

133
00:07:53,080 --> 00:07:55,220
the music industry by

134
00:07:55,220 --> 00:07:56,900
groups and so on

135
00:07:56,900 --> 00:07:59,240
basically to share links for their work

136
00:07:59,240 --> 00:08:00,740
and

137
00:08:00,740 --> 00:08:02,540
I created this nostril

138
00:08:02,540 --> 00:08:06,320
was my first social client in Nosser.

139
00:08:08,100 --> 00:08:10,340
Yeah, that was well received.

140
00:08:12,180 --> 00:08:13,980
People are still using it today.

141
00:08:15,060 --> 00:08:18,780
I'm a bit ashamed that I haven't

142
00:08:18,780 --> 00:08:22,480
did any maintenance on it for some time,

143
00:08:22,760 --> 00:08:24,020
quite a long time.

144
00:08:25,180 --> 00:08:28,500
But I really need to revive it

145
00:08:28,500 --> 00:08:31,580
because there is a lot of value there

146
00:08:31,580 --> 00:08:36,260
and people are still using it, even if I'm not maintaining it too much,

147
00:08:36,880 --> 00:08:42,120
which is a good sign because everything is still working and nothing broke.

148
00:08:43,080 --> 00:08:46,980
But definitely it deserves a maintenance.

149
00:08:48,580 --> 00:08:54,080
Can I, you know, something very useful, and I don't know if Nostry, I've seen Nostry,

150
00:08:54,600 --> 00:09:01,020
I haven't used it extensively, but what would be super useful is if someone creates a Nostry,

151
00:09:01,580 --> 00:09:05,160
and then they're at a meetup or a conference or something,

152
00:09:05,200 --> 00:09:07,520
and they want to exchange contact info,

153
00:09:07,740 --> 00:09:09,720
and they pull up a QR code,

154
00:09:10,540 --> 00:09:12,740
and that takes them to their nostril.

155
00:09:12,740 --> 00:09:15,320
And then there should be an export feature

156
00:09:15,320 --> 00:09:22,020
that's able to export all of that into a contact link on their phone.

157
00:09:22,420 --> 00:09:24,420
And I don't know how standardized that is.

158
00:09:24,600 --> 00:09:27,440
I mean, this is not an area I'm particularly familiar with,

159
00:09:27,940 --> 00:09:30,160
the contact data standard,

160
00:09:30,160 --> 00:09:35,820
but whether it's portable across iOS, Android, Graphene, and so on.

161
00:09:36,340 --> 00:09:38,160
But that would be kind of a cool thing.

162
00:09:38,260 --> 00:09:41,460
You have your Nostri, it's a QR code that takes you there,

163
00:09:41,520 --> 00:09:44,340
and then there's a button that allows you to export it directly into contacts.

164
00:09:45,680 --> 00:09:47,320
Yeah, yeah, indeed that would be nice.

165
00:09:48,140 --> 00:09:53,040
I don't know how it would work the support function in the different platforms,

166
00:09:53,280 --> 00:09:56,420
but definitely it will work.

167
00:09:57,480 --> 00:10:00,080
But yeah, Nostri was something good.

168
00:10:00,160 --> 00:10:02,540
still something very valuable, I think

169
00:10:02,540 --> 00:10:03,620
it's a good tool

170
00:10:03,620 --> 00:10:05,760
and I have a bunch of ideas

171
00:10:05,760 --> 00:10:08,420
because, you know

172
00:10:08,420 --> 00:10:10,680
ahead from Nostry

173
00:10:10,680 --> 00:10:12,600
I have been exploring the

174
00:10:12,600 --> 00:10:13,800
contact

175
00:10:13,800 --> 00:10:16,380
apps of Nostry

176
00:10:16,380 --> 00:10:18,020
I, during

177
00:10:18,020 --> 00:10:20,240
an edition of Cyberding and Generating, I was

178
00:10:20,240 --> 00:10:22,620
working on an unreleased

179
00:10:22,620 --> 00:10:24,020
app that

180
00:10:24,020 --> 00:10:25,880
probably Gigi

181
00:10:25,880 --> 00:10:27,620
will

182
00:10:27,620 --> 00:10:29,920
shame me for

183
00:10:29,920 --> 00:10:32,080
for that because I never released it.

184
00:10:32,080 --> 00:10:34,100
I'm still there in the vault.

185
00:10:35,000 --> 00:10:38,500
But I was creating an app called Colorillo.

186
00:10:39,900 --> 00:10:41,780
Basically, creating...

187
00:10:41,780 --> 00:10:42,880
What was the name of it?

188
00:10:43,740 --> 00:10:44,160
Sorry.

189
00:10:44,380 --> 00:10:44,860
Colorillo.

190
00:10:45,280 --> 00:10:48,440
Colorillo, like a color in Spanish.

191
00:10:48,580 --> 00:10:48,700
Colorillo, okay.

192
00:10:49,140 --> 00:10:49,340
Yeah.

193
00:10:50,080 --> 00:10:57,160
But the idea behind that app was basically to create a contact list application for you.

194
00:10:57,160 --> 00:11:06,140
So you have all the details of your contacts, you can navigate them by a system of colors.

195
00:11:06,440 --> 00:11:11,900
That's basically why the name, because at the time I was exploring the, you know,

196
00:11:11,980 --> 00:11:19,780
extracting an X color string from the first six characters of the X public key.

197
00:11:19,780 --> 00:11:22,760
and basically with that

198
00:11:22,760 --> 00:11:24,660
representing all the contacts

199
00:11:24,660 --> 00:11:27,260
in a palette of colors

200
00:11:27,260 --> 00:11:30,120
basically to

201
00:11:30,120 --> 00:11:33,040
have a way to navigate the contacts

202
00:11:33,040 --> 00:11:35,140
without needing to search

203
00:11:35,140 --> 00:11:36,960
I was exploring basically the relation

204
00:11:36,960 --> 00:11:38,880
between the colors and the contacts

205
00:11:38,880 --> 00:11:42,760
in some way to understand

206
00:11:42,760 --> 00:11:43,600
if that

207
00:11:43,600 --> 00:11:46,700
was a good system to remember

208
00:11:46,700 --> 00:11:48,860
what contacts

209
00:11:48,860 --> 00:11:52,420
belong to what color and easily or quickly navigate them.

210
00:11:53,260 --> 00:11:57,760
And also that app, the goal or the vision behind that app

211
00:11:57,760 --> 00:12:00,640
was to help you clean the contact list

212
00:12:00,640 --> 00:12:04,480
because, you know, I'm sure that,

213
00:12:04,900 --> 00:12:06,360
I don't know how is your contact list,

214
00:12:06,360 --> 00:12:14,080
but mine is full of dead people, dead endpaps,

215
00:12:14,340 --> 00:12:18,380
because, you know, my public is very old,

216
00:12:18,860 --> 00:12:21,180
It's three years old.

217
00:12:22,980 --> 00:12:30,140
There is a lot of people that I have been following that they are not in NOSR anymore.

218
00:12:31,140 --> 00:12:33,000
I have thousands of contacts.

219
00:12:34,940 --> 00:12:44,700
That's ensure that I'm putting a lot of pressure in social clients because every time I enter in a social client, they have to pull all the information from that.

220
00:12:45,360 --> 00:12:48,840
And there are thousands of users of MPUBs.

221
00:12:48,860 --> 00:12:56,220
my contact list so the idea behind colorillo was create a tool to help you navigate that contact

222
00:12:56,220 --> 00:13:05,340
list and clean clean clean it up from all contacts from your own criteria like you use

223
00:13:06,140 --> 00:13:08,380
the idea that is that you was able to

224
00:13:10,700 --> 00:13:18,140
select or create your criteria to determine what are dead endpaps and whatnot and filter them out

225
00:13:18,860 --> 00:13:19,600
easily.

226
00:13:22,300 --> 00:13:23,040
So yeah,

227
00:13:23,140 --> 00:13:24,860
I think that I'm going to

228
00:13:24,860 --> 00:13:26,920
mix both. I'm going to mix

229
00:13:26,920 --> 00:13:28,860
Nostry and the idea behind

230
00:13:28,860 --> 00:13:31,120
Colorillo and extend

231
00:13:31,120 --> 00:13:32,700
it through Web of Trust.

232
00:13:32,800 --> 00:13:34,800
That is something that I'm working on.

233
00:13:35,780 --> 00:13:36,680
So that was,

234
00:13:36,820 --> 00:13:38,940
I was actually going to say, when we get to the Web of

235
00:13:38,940 --> 00:13:41,000
Trust part, this to

236
00:13:41,000 --> 00:13:43,120
me sounds like a pretty good use case, actually.

237
00:13:43,540 --> 00:13:45,140
But also, do you

238
00:13:45,140 --> 00:13:46,820
know the Daniel on Nostry?

239
00:13:47,820 --> 00:13:48,300
Yeah.

240
00:13:48,860 --> 00:13:59,610
He I think created an app a couple of months back called Something Zombies right And the idea is very similar Yeah yeah yeah I really like the idea

241
00:14:00,610 --> 00:14:04,530
I think that's Zombies versus, I don't know.

242
00:14:04,610 --> 00:14:06,090
I don't remember the name exactly.

243
00:14:06,270 --> 00:14:07,110
I don't want to be wrong.

244
00:14:07,750 --> 00:14:10,450
But yeah, I know what app you're talking about.

245
00:14:10,550 --> 00:14:11,310
It's very fun.

246
00:14:11,830 --> 00:14:12,650
And I really like it.

247
00:14:12,890 --> 00:14:14,930
So yeah, it's a very similar concept.

248
00:14:15,550 --> 00:14:17,890
I don't know exactly what is the criteria behind.

249
00:14:18,310 --> 00:14:21,450
the Daniels app, but it's similar.

250
00:14:21,590 --> 00:14:24,630
It's basically helping you to clean the contact list.

251
00:14:27,930 --> 00:14:33,610
And that's an important point for a lot of non-technical users

252
00:14:33,610 --> 00:14:38,250
to be aware of, which is every time your contact,

253
00:14:38,790 --> 00:14:40,470
and you mentioned this, right?

254
00:14:41,890 --> 00:14:44,470
Well, first of all, it's nice to have a clean contact list.

255
00:14:44,550 --> 00:14:47,530
Why do you want to have dead zombie endpubs in there,

256
00:14:47,530 --> 00:14:49,850
like people who abandoned the protocol and have disappeared.

257
00:14:50,850 --> 00:14:55,110
But the other thing is you put a load on a relay every single time.

258
00:14:55,330 --> 00:14:56,530
That thing loads, right?

259
00:14:56,890 --> 00:14:57,150
Yeah.

260
00:14:57,950 --> 00:14:58,290
Oh, yeah.

261
00:14:59,130 --> 00:15:02,170
And it's also a kind of a fingerprint, you know.

262
00:15:03,930 --> 00:15:08,870
Your social graph is somehow a fingerprint of yours,

263
00:15:09,570 --> 00:15:10,390
a social fingerprint.

264
00:15:10,390 --> 00:15:17,390
That can be some privacy concerns there as well.

265
00:15:17,530 --> 00:15:26,850
But yeah, the main case for me to clean your contact list is to keep it healthy, because

266
00:15:26,850 --> 00:15:33,810
the contact list is in Noster now more than else with the, you know, web of trust and

267
00:15:33,810 --> 00:15:38,210
rankings and trust desertions and so on.

268
00:15:38,210 --> 00:15:43,050
That contact list is being used for different stuff.

269
00:15:43,050 --> 00:15:50,550
it clean is basically helped Nasser to be more healthy to have better

270
00:15:50,550 --> 00:15:58,170
calculations or things because that data is used as a source of

271
00:15:58,170 --> 00:16:04,290
truth for these computations so it really makes sense to have it clean so

272
00:16:04,290 --> 00:16:10,170
having tools to clean it to clean that is something important in my

273
00:16:10,170 --> 00:16:10,570
point of view.

274
00:16:14,050 --> 00:16:16,010
So, Coloreo is

275
00:16:16,010 --> 00:16:18,170
waiting for web of trust

276
00:16:18,170 --> 00:16:18,690
integration.

277
00:16:19,790 --> 00:16:22,190
So, we'll get to that when we talk about Relator

278
00:16:22,190 --> 00:16:23,410
and the work you're doing there.

279
00:16:23,710 --> 00:16:25,210
So, what happened after Coloreo?

280
00:16:27,110 --> 00:16:27,850
I mean,

281
00:16:28,290 --> 00:16:29,850
a lot of things happened

282
00:16:29,850 --> 00:16:32,170
after and before

283
00:16:32,170 --> 00:16:33,250
Coloreo. But

284
00:16:33,250 --> 00:16:36,130
at that time, I was already participating

285
00:16:36,130 --> 00:16:37,530
in sovereign engineering.

286
00:16:37,530 --> 00:16:47,670
and I was part of the first, the participants of the first cohort, was lucky enough to be part of

287
00:16:47,670 --> 00:16:55,170
that and it was magical to be honest, kind of turning point to meet all that talented people

288
00:16:55,170 --> 00:17:01,190
and share a space with them and share discussions and ponchas of course.

289
00:17:01,190 --> 00:17:05,710
so yeah I have been working

290
00:17:05,710 --> 00:17:07,650
a lot in Nosser

291
00:17:07,650 --> 00:17:08,610
in different projects

292
00:17:08,610 --> 00:17:11,210
all of them are public and open source

293
00:17:11,210 --> 00:17:13,810
I have been

294
00:17:13,810 --> 00:17:15,570
helping and

295
00:17:15,570 --> 00:17:17,410
contributing to different projects

296
00:17:17,410 --> 00:17:19,230
in the Nosser ecosystem

297
00:17:19,230 --> 00:17:21,590
I was working

298
00:17:21,590 --> 00:17:21,950
for

299
00:17:21,950 --> 00:17:24,130
I was working with

300
00:17:24,130 --> 00:17:27,590
guys from Preveo Markets at some point

301
00:17:27,590 --> 00:17:29,750
also

302
00:17:29,750 --> 00:17:31,510
with other people.

303
00:17:32,610 --> 00:17:33,570
Now I'm

304
00:17:33,570 --> 00:17:36,050
contributing to Marmot ES

305
00:17:36,050 --> 00:17:37,630
as well. There is

306
00:17:37,630 --> 00:17:39,550
Marmot protocol,

307
00:17:40,070 --> 00:17:41,870
MLS and white noise.

308
00:17:43,110 --> 00:17:43,830
We are doing

309
00:17:43,830 --> 00:17:46,050
this TypeScript

310
00:17:46,050 --> 00:17:48,090
implementation of Marmot

311
00:17:48,090 --> 00:17:50,030
protocol, which is

312
00:17:50,030 --> 00:17:50,490
very cool.

313
00:17:51,290 --> 00:17:53,950
Soon we'll flourish.

314
00:17:56,190 --> 00:17:56,790
Excellent.

315
00:17:56,990 --> 00:17:58,910
I think a lot of us

316
00:17:58,910 --> 00:18:04,070
are waiting with bated breath for Marmot to manifest itself

317
00:18:04,070 --> 00:18:06,870
so that it can finally stop using Signal and Telegram

318
00:18:06,870 --> 00:18:09,650
and move to something Nostro native.

319
00:18:10,570 --> 00:18:11,970
Yeah, it's coming along pretty nicely.

320
00:18:13,510 --> 00:18:19,730
We already have working demos for basically a chat application,

321
00:18:20,290 --> 00:18:21,670
everything running in the browser,

322
00:18:22,470 --> 00:18:26,490
implemented with our Marmot TS implementation.

323
00:18:26,490 --> 00:18:30,010
it's pretty nice to see

324
00:18:30,010 --> 00:18:30,750
to be honest

325
00:18:30,750 --> 00:18:33,510
I think that that will unlock

326
00:18:33,510 --> 00:18:35,210
a lot of things

327
00:18:35,210 --> 00:18:36,890
So let me

328
00:18:36,890 --> 00:18:39,670
I should probably get Jeff G at some point

329
00:18:39,670 --> 00:18:41,110
to talk to him about this

330
00:18:41,110 --> 00:18:42,410
but from your understanding

331
00:18:42,410 --> 00:18:45,950
obviously White Noise is

332
00:18:45,950 --> 00:18:48,070
a reference implementation of the Mahmoud

333
00:18:48,070 --> 00:18:49,570
protocol but there will be others

334
00:18:49,570 --> 00:18:52,090
like the TypeScript one that you're working on

335
00:18:52,090 --> 00:18:54,050
or maybe you're working on libraries

336
00:18:54,050 --> 00:18:55,630
someone's going to take your TypeScript libraries

337
00:18:55,630 --> 00:19:00,590
and actually build another reference app on the Marmot protocol, right?

338
00:19:02,310 --> 00:19:08,510
Will messages across these implementations of Marmot be interoperable

339
00:19:08,510 --> 00:19:09,890
or will they be siloed?

340
00:19:11,390 --> 00:19:14,930
Yeah, yeah, they will be interoperable totally.

341
00:19:15,730 --> 00:19:16,950
I mean, they should be, definitely.

342
00:19:19,090 --> 00:19:21,530
MLS is a quite complex protocol.

343
00:19:22,730 --> 00:19:24,970
It's very cool, but quite complex.

344
00:19:25,630 --> 00:19:33,990
and this complexity means that there are subtle details that you need to take care about

345
00:19:33,990 --> 00:19:36,710
to basically be interpretable

346
00:19:36,710 --> 00:19:46,010
and those little nuances are the things that are difficult to manage

347
00:19:46,010 --> 00:19:53,570
or to get fully because the RFC of MLS is a very long document

348
00:19:53,570 --> 00:19:57,270
and very difficult to transverse.

349
00:19:59,010 --> 00:20:01,030
But it's a common protocol.

350
00:20:03,110 --> 00:20:05,130
If we get it right,

351
00:20:05,270 --> 00:20:07,150
and I think that we are doing it right,

352
00:20:07,890 --> 00:20:10,350
definitely it should be interoperable.

353
00:20:11,070 --> 00:20:12,250
It will be interoperable, yes.

354
00:20:13,050 --> 00:20:15,410
And I understand it in theory, right, Jesus?

355
00:20:15,410 --> 00:20:17,170
But the reason I'm asking is,

356
00:20:18,270 --> 00:20:20,690
DMing is so broken on NOSTA right now.

357
00:20:20,750 --> 00:20:22,390
And I'm not just talking about NIPO 4.

358
00:20:22,390 --> 00:20:28,530
right is there's there's some clients that implement gift wrap their nip 17 the multi

359
00:20:28,530 --> 00:20:35,150
malmi uh bless him is working on on double ratchet for iris yeah and now there's going to be these

360
00:20:35,150 --> 00:20:41,590
marmot clients so like so someone obviously so for folks i'm sure everyone knows as well just

361
00:20:41,590 --> 00:20:46,570
it's worth saying if you're using a nostra client that only supports nip or four and someone sends

362
00:20:46,570 --> 00:20:51,910
you a nip 17 dm you're not going to see it right and the other way around i mean typically

363
00:20:51,910 --> 00:20:56,050
yes, a lot of the NIP 17 clients have just said, you know what, I'm not even going to deal with

364
00:20:56,050 --> 00:21:03,550
NIP 4. So if you, there's no communication. So if some, for example, someone's iOS user and you're

365
00:21:03,550 --> 00:21:11,830
using Nostor, I believe Nostor has moved almost fully to NIP 17. I don't know if they've still,

366
00:21:12,130 --> 00:21:16,730
Fabian has still kept the support for NIP 4. But let's just say they've moved fully to NIP 17.

367
00:21:16,730 --> 00:21:22,030
If I send them a NIPA 4 DM from Primal or from Darmus,

368
00:21:22,150 --> 00:21:23,690
they're not going to see it, right?

369
00:21:23,830 --> 00:21:25,590
So it's just so broken.

370
00:21:26,010 --> 00:21:27,790
There's no interoperability in DMs.

371
00:21:28,010 --> 00:21:30,410
And there are all of these different implementations coming out.

372
00:21:30,650 --> 00:21:33,150
So that's kind of where my question is coming from,

373
00:21:33,230 --> 00:21:39,090
given how complex Marmot is, or the MLS is, rather, right?

374
00:21:40,130 --> 00:21:44,690
So I think if someone can solve that problem properly and cleanly,

375
00:21:44,690 --> 00:21:45,570
it'll be amazing.

376
00:21:45,570 --> 00:21:54,130
yeah yeah definitely um you know i have a very controversial opinion about dm and on nocer

377
00:21:54,130 --> 00:22:01,670
because definitely nipo 4 is something very bad for your privacy but it's the the communication

378
00:22:01,670 --> 00:22:08,190
channel of last resort because everyone is going to be able to see it and even if even if you are

379
00:22:08,190 --> 00:22:16,530
and someone could carry your message to the receiver.

380
00:22:18,190 --> 00:22:22,910
Even that, you have very bad privacy, but it works reliably.

381
00:22:23,870 --> 00:22:28,570
It's something that we should not use for regular communication,

382
00:22:29,030 --> 00:22:36,650
but I think that is a very interesting perspective to have about Nipo4

383
00:22:36,650 --> 00:22:38,790
that is the last resort communication.

384
00:22:39,590 --> 00:22:40,830
It's very simple.

385
00:22:41,650 --> 00:22:42,490
It works.

386
00:22:42,990 --> 00:22:45,490
It leaks metadata, for sure.

387
00:22:46,250 --> 00:22:47,430
But it works.

388
00:22:47,990 --> 00:22:51,010
But ahead of that controversial take,

389
00:22:52,510 --> 00:22:54,350
what we are doing in Marmot at the end

390
00:22:54,350 --> 00:22:56,630
is creating high-level libraries.

391
00:22:57,410 --> 00:22:59,610
So developers doesn't need to worry about

392
00:22:59,610 --> 00:23:03,410
the low-level details of the protocol of MLS.

393
00:23:03,610 --> 00:23:04,490
That is very complex.

394
00:23:06,650 --> 00:23:16,410
They can use built on top of the high level libraries that they care about, or the lower level details.

395
00:23:17,410 --> 00:23:28,130
I hope that someday we have a consistent environment for the DMs of Nosr,

396
00:23:28,130 --> 00:23:31,890
because I think that there is a very good use case.

397
00:23:31,890 --> 00:23:44,050
I don't know if the answer is to put things on relays, because that intrinsically means that the data in some way is public.

398
00:23:45,430 --> 00:23:55,730
So maybe the solution is to, I don't know, use ephemeral events, use relays as a transport, but not relying on them for storage.

399
00:23:55,730 --> 00:23:57,950
and in some way

400
00:23:57,950 --> 00:23:59,830
MLS or Marmot

401
00:23:59,830 --> 00:24:01,830
it's like that

402
00:24:01,830 --> 00:24:03,670
because a lot of the thing

403
00:24:03,670 --> 00:24:06,170
that allows users to use

404
00:24:06,170 --> 00:24:08,650
MLS or Marmot

405
00:24:08,650 --> 00:24:10,510
protocol happens client

406
00:24:10,510 --> 00:24:10,890
side

407
00:24:10,890 --> 00:24:13,470
what

408
00:24:13,470 --> 00:24:16,350
is transmitted by relays are

409
00:24:16,350 --> 00:24:18,830
very cryptic

410
00:24:18,830 --> 00:24:20,530
blocks of encrypted

411
00:24:20,530 --> 00:24:21,010
data

412
00:24:21,010 --> 00:24:24,750
which doesn't mean nothing if the client

413
00:24:24,750 --> 00:24:29,530
if the user client doesn't have the correct data.

414
00:24:30,070 --> 00:24:32,510
So there is a lot going on client-side.

415
00:24:33,630 --> 00:24:37,450
What happens on the relays is very cryptic.

416
00:24:39,670 --> 00:24:41,150
So yeah, I don't know.

417
00:24:42,210 --> 00:24:43,490
Definitely it's a good solution.

418
00:24:45,290 --> 00:24:47,930
But yeah, let's see how it plays out.

419
00:24:50,330 --> 00:24:50,970
Yeah.

420
00:24:50,970 --> 00:24:56,870
All right, so let's get to, let's fast forward.

421
00:24:57,870 --> 00:25:00,210
You were part of the first Sorbonne Engineering Cohort.

422
00:25:00,450 --> 00:25:01,150
So when was that?

423
00:25:01,250 --> 00:25:03,110
Like late 2023, early 2024?

424
00:25:03,550 --> 00:25:07,110
I think that was the one that you had that huge presentation

425
00:25:07,110 --> 00:25:08,590
at Bitcoin Atlantis, right?

426
00:25:09,010 --> 00:25:11,590
Like it was supposed to be half an hour, one hour presentation

427
00:25:11,590 --> 00:25:13,670
and it ended up being like four hours or something.

428
00:25:14,630 --> 00:25:15,750
Yeah, yeah, yeah.

429
00:25:15,750 --> 00:25:16,390
That was really fun.

430
00:25:17,230 --> 00:25:17,910
That was really fun.

431
00:25:18,710 --> 00:25:20,610
That room was, I tried to get in.

432
00:25:20,970 --> 00:25:24,050
I couldn't get in because there was like people spilling out of that room.

433
00:25:25,270 --> 00:25:25,790
Nice.

434
00:25:26,410 --> 00:25:27,510
Yeah, yeah, yeah.

435
00:25:27,550 --> 00:25:28,570
That was really good.

436
00:25:29,910 --> 00:25:35,090
I mean, the experience in sovereign engineering, the first one and the rest of them,

437
00:25:35,210 --> 00:25:37,610
I have been participating on almost all of them.

438
00:25:37,610 --> 00:25:47,050
But the first one was kind of special because of the Bitcoin Atlantis happening just straight after the cohort.

439
00:25:47,050 --> 00:25:49,090
so it was

440
00:25:49,090 --> 00:25:50,610
really magical

441
00:25:50,610 --> 00:25:53,570
to basically end the cohort

442
00:25:53,570 --> 00:25:55,670
with a bunch of

443
00:25:55,670 --> 00:25:57,550
new ideas, with a bunch of

444
00:25:57,550 --> 00:25:58,250
new friends

445
00:25:58,250 --> 00:26:01,730
and be able

446
00:26:01,730 --> 00:26:03,010
to present all of that

447
00:26:03,010 --> 00:26:05,390
in front of people that

448
00:26:05,390 --> 00:26:07,530
cares about the thing that you are

449
00:26:07,530 --> 00:26:07,850
building

450
00:26:07,850 --> 00:26:11,470
and yeah that was really nice

451
00:26:11,470 --> 00:26:13,570
I will have good

452
00:26:13,570 --> 00:26:14,450
experiences about

453
00:26:14,450 --> 00:26:15,890
Sovereign and Geren

454
00:26:15,890 --> 00:26:18,290
and recommend everyone to

455
00:26:18,290 --> 00:26:19,830
I mean every engineer

456
00:26:19,830 --> 00:26:22,430
interested in us to participate there

457
00:26:22,430 --> 00:26:24,230
because it's a good experience

458
00:26:24,230 --> 00:26:26,870
And we're only seeing the benefits

459
00:26:26,870 --> 00:26:28,510
of some of the work that went

460
00:26:28,510 --> 00:26:30,550
there now, when I say we

461
00:26:30,550 --> 00:26:32,450
I mean as just regular users

462
00:26:32,450 --> 00:26:34,790
the people, right, like stuff like Blossom

463
00:26:34,790 --> 00:26:37,110
came out of, it might have come out of the first one

464
00:26:37,110 --> 00:26:38,830
right Jesus, or was it the second

465
00:26:38,830 --> 00:26:39,150
Yeah

466
00:26:39,150 --> 00:26:41,950
Yeah, yeah, first one

467
00:26:41,950 --> 00:26:44,390
Yeah, so Blossom came out of that

468
00:26:44,390 --> 00:26:48,050
other things which I'm forgetting right now.

469
00:26:48,250 --> 00:26:51,430
And we're beginning to experience the benefits now

470
00:26:51,430 --> 00:26:54,730
of all of those things a year and a half later.

471
00:26:55,210 --> 00:26:56,950
So that's really cool stuff.

472
00:26:57,510 --> 00:27:00,390
For sure, people should check out Sovereign Engineering.

473
00:27:00,390 --> 00:27:05,410
Shout out Andre Loja as well from Free Madeira, Bitcoin Atlantis.

474
00:27:05,770 --> 00:27:10,930
He's one of the unspoken heroes of that, of Sovereign Engineering.

475
00:27:12,090 --> 00:27:13,210
Yeah, yeah, yeah.

476
00:27:13,210 --> 00:27:23,130
I mean everything happens in his co-work. He's a very nice guy. Yeah, I mean he's really nice.

477
00:27:27,850 --> 00:27:39,370
Free Madeira is a very cool group of people and they do meetups. There is also the people

478
00:27:39,370 --> 00:27:50,620
from the bitcoin work there in madeira which is really nice there is a good community there Yeah for sure

479
00:27:53,020 --> 00:27:56,120
Let's fast forward a little bit by a few months.

480
00:27:56,320 --> 00:27:58,100
Bitcoin Atlantis was March of 2024.

481
00:27:58,460 --> 00:28:02,200
Let's get to September, October of 2024,

482
00:28:02,540 --> 00:28:05,080
when really, to me,

483
00:28:05,420 --> 00:28:09,920
a lot of the AI acceleration became apparent to people.

484
00:28:09,920 --> 00:28:13,740
Before that, people were using ChatGPT for silly things.

485
00:28:14,060 --> 00:28:16,480
But then the reasoning models came out.

486
00:28:16,600 --> 00:28:17,980
Then MCP servers came out.

487
00:28:18,000 --> 00:28:21,020
All of that was happening in late 2024, right?

488
00:28:21,480 --> 00:28:27,140
So I think early 2025, you launched DVMCP, correct?

489
00:28:28,340 --> 00:28:28,680
Yeah.

490
00:28:29,060 --> 00:28:34,720
I think that's a week or two before servering Engineering 3.

491
00:28:34,720 --> 00:28:38,160
because I remember to

492
00:28:38,160 --> 00:28:40,320
to see

493
00:28:40,320 --> 00:28:42,560
the specification of MCP

494
00:28:42,560 --> 00:28:44,700
because

495
00:28:44,700 --> 00:28:46,460
that came out as you said

496
00:28:46,460 --> 00:28:48,080
late 2024

497
00:28:48,080 --> 00:28:50,740
the first specification of MCP

498
00:28:50,740 --> 00:28:52,840
and then I

499
00:28:52,840 --> 00:28:53,940
got it

500
00:28:53,940 --> 00:28:55,800
used earlier

501
00:28:55,800 --> 00:28:57,140
2025

502
00:28:57,140 --> 00:29:00,580
and started with the specification

503
00:29:00,580 --> 00:29:02,100
and that was used

504
00:29:02,100 --> 00:29:03,840
some weeks before

505
00:29:03,840 --> 00:29:05,660
Sovereign Engineering 3 start.

506
00:29:07,500 --> 00:29:10,100
I was reading the spec, you know,

507
00:29:10,220 --> 00:29:14,960
and I was realizing, okay, this is JSON RPC.

508
00:29:16,040 --> 00:29:17,760
All the communication is JSON RPC.

509
00:29:18,120 --> 00:29:19,180
Everything is JSON.

510
00:29:19,780 --> 00:29:21,060
JSON schemas.

511
00:29:21,700 --> 00:29:22,280
Wait a second.

512
00:29:22,500 --> 00:29:25,460
I know a protocol that is JSON-based

513
00:29:25,460 --> 00:29:27,140
and is transmitted by the race.

514
00:29:28,100 --> 00:29:32,800
And, you know, then I have that spark in my head

515
00:29:32,800 --> 00:29:36,340
and I said, okay, this is an interesting way to,

516
00:29:37,760 --> 00:29:40,420
it's something interesting to bridge,

517
00:29:40,700 --> 00:29:41,960
basically, NCP and Nasser.

518
00:29:43,360 --> 00:29:44,540
And yeah, I started to work.

519
00:29:45,060 --> 00:29:46,860
First iteration was called DBNCP.

520
00:29:49,340 --> 00:29:53,120
Yeah, then I moved to Context VM,

521
00:29:53,560 --> 00:29:55,240
the rebranding for different reasons.

522
00:29:55,460 --> 00:29:56,600
We can talk about that.

523
00:29:57,540 --> 00:29:59,820
But yeah, that was more or less a timeline.

524
00:29:59,820 --> 00:30:07,400
And maybe let's talk about ContextVM, and then we'll get to Relator right after that, Jesus.

525
00:30:08,420 --> 00:30:14,960
For someone who's listening, and maybe they've seen some of your posts, but they haven't actually sat down and used ContextVM,

526
00:30:16,360 --> 00:30:25,060
what exactly is it? How can, well, first of all, is it a tool for regular users, or do you need to be a technical person to use it?

527
00:30:25,060 --> 00:30:36,660
I mean, context-vm itself is a protocol, basically put together in OCR and MCP.

528
00:30:36,660 --> 00:30:49,580
A bit of history about this and why I moved from dbmcp to context-vm is that at the beginning

529
00:30:49,580 --> 00:30:52,620
when MCP was something unexplored,

530
00:30:53,660 --> 00:30:56,440
I wanted to learn about the protocol,

531
00:30:56,440 --> 00:30:59,240
you know, about the insights of the protocol,

532
00:30:59,420 --> 00:31:01,860
about the weeds, getting to the weeds of it.

533
00:31:02,840 --> 00:31:07,580
And I developed DB MCP as a kind of following

534
00:31:07,580 --> 00:31:10,160
a kitchen sink approach, you know,

535
00:31:10,280 --> 00:31:12,880
like re-implementing big parts of everything

536
00:31:12,880 --> 00:31:15,680
in order to learn.

537
00:31:15,680 --> 00:31:18,880
then

538
00:31:18,880 --> 00:31:21,580
after working with

539
00:31:21,580 --> 00:31:22,520
MCP

540
00:31:22,520 --> 00:31:25,840
for quite a while in DBNCP

541
00:31:25,840 --> 00:31:27,560
I realized that

542
00:31:27,560 --> 00:31:29,520
you know

543
00:31:29,520 --> 00:31:31,680
the best place for no service

544
00:31:31,680 --> 00:31:33,940
is to sit at the transport

545
00:31:33,940 --> 00:31:35,840
level of MCP

546
00:31:35,840 --> 00:31:37,560
and just worry

547
00:31:37,560 --> 00:31:39,940
about carrying messages

548
00:31:39,940 --> 00:31:42,000
through the channel

549
00:31:42,000 --> 00:31:43,100
to the transport layer

550
00:31:43,100 --> 00:31:45,200
which in this case is relays

551
00:31:45,200 --> 00:31:50,580
and it used basically a public key cryptography

552
00:31:50,580 --> 00:31:52,920
of Nocer for authentication, authorization.

553
00:31:56,240 --> 00:31:59,580
And basically, when I realized that,

554
00:32:00,220 --> 00:32:04,500
when I realized what is the best design

555
00:32:04,500 --> 00:32:06,940
or the better design for this,

556
00:32:07,300 --> 00:32:09,380
I moved to ContextVM.

557
00:32:09,540 --> 00:32:10,840
I rebranded to ContextVM.

558
00:32:11,480 --> 00:32:12,720
That was one of the reasons.

559
00:32:12,720 --> 00:32:23,540
other of the reasons that dbmcp started following a more dbm-ish approach or you know where dbms

560
00:32:23,540 --> 00:32:32,460
have this job kinds for for sending requests a different job kind for for receiving the request

561
00:32:32,460 --> 00:32:35,000
and another kind for feedback.

562
00:32:36,100 --> 00:32:40,580
So you have three kinds for a normal operation

563
00:32:40,580 --> 00:32:47,640
and you also have segregated kinds for jobs.

564
00:32:48,580 --> 00:32:51,320
So for example, if you want algorithmic feeds,

565
00:32:52,000 --> 00:32:55,240
you have a kind, but if you want a translation,

566
00:32:55,780 --> 00:32:59,460
you have a different kind for the job that you are requesting.

567
00:32:59,460 --> 00:33:03,760
So when I was developing the BNCP, I followed that pattern.

568
00:33:04,740 --> 00:33:13,460
And then moving forward to Context BN, when I realized the best place for NOSER in the MCP ecosystem,

569
00:33:14,400 --> 00:33:23,080
which is sitting at the transport level, I moved also to a more minimalistic approach,

570
00:33:23,080 --> 00:33:27,240
where I moved to ephemeral events,

571
00:33:27,920 --> 00:33:30,860
which are events that are not supposed to be stored in relays.

572
00:33:31,720 --> 00:33:35,780
And also I started to use one kind,

573
00:33:36,140 --> 00:33:39,180
one single kind for all the communications,

574
00:33:39,380 --> 00:33:43,220
for requests, responses, everything in the middle.

575
00:33:43,960 --> 00:33:47,560
So basically I was treating that kind as a kind of socket,

576
00:33:47,560 --> 00:33:52,460
as a kind of pipe with relays.

577
00:33:53,080 --> 00:34:02,380
And all of that seemed enough reasons to move and to rebrand the project.

578
00:34:03,380 --> 00:34:11,640
And also, at that time, there was a project called DB-MCP as well in the MCP world

579
00:34:11,640 --> 00:34:14,820
that stands for Damn Vulnerable MCP.

580
00:34:14,820 --> 00:34:21,860
which was a kind of hack-the-box MCP

581
00:34:21,860 --> 00:34:26,780
basically to discover and to explore the security model of MCP.

582
00:34:27,660 --> 00:34:30,480
I didn't want it to be related with that.

583
00:34:32,380 --> 00:34:36,300
And different things, so I decided to move forward

584
00:34:36,300 --> 00:34:39,600
and to rebrand it as Context VM.

585
00:34:40,420 --> 00:34:42,000
And I think that was a good decision, to be honest.

586
00:34:44,820 --> 00:34:56,440
So if I wanted to use Context VM today, and let's just say I'm a semi-technical user, what type of use case could I use it for and what would my steps be?

587
00:34:58,920 --> 00:35:08,100
I mean, the cool part of this is that you can do anything you want using this server client architecture.

588
00:35:08,100 --> 00:35:13,300
because one thing that I haven't mentioned yet is that, you know, everyone,

589
00:35:13,780 --> 00:35:17,620
and this is one of the questions that I received the most, one of the most common doops,

590
00:35:19,000 --> 00:35:23,460
is that, okay, MCP is something related with IA.

591
00:35:26,300 --> 00:35:31,700
So I don't want this to play with LLMs or nothing like that.

592
00:35:31,700 --> 00:35:40,560
and I mean the thing to understand here is that MCP is a protocol for communicating

593
00:35:40,560 --> 00:35:45,160
and it has a client-server topology

594
00:35:45,160 --> 00:35:53,200
and it uses JSON-RPC as the underlying schema or shapes of the messages

595
00:35:53,200 --> 00:35:56,700
so it's really a protocol to connect things

596
00:35:56,700 --> 00:36:04,540
you know uh it used that it was created specifically for for lms uh to connect with

597
00:36:04,540 --> 00:36:11,500
external tools but what it really is is a protocol to connect tools you know or external things

598
00:36:12,140 --> 00:36:21,260
between between client and server um this is what this is why you can why it got so so hyped

599
00:36:21,260 --> 00:36:28,700
because basically everyone was able to connect their Gmail account

600
00:36:28,700 --> 00:36:34,100
to their LNMs or their calendars or their databases or...

601
00:36:34,100 --> 00:36:35,960
File system, which is a big one.

602
00:36:35,960 --> 00:36:40,620
Yeah, their file system, exactly, or domotics, you know, through NCP.

603
00:36:41,060 --> 00:36:46,980
And that really pumped the protocol

604
00:36:46,980 --> 00:36:51,480
because it was the first standard way to provide these tools to LLMs.

605
00:36:51,480 --> 00:36:56,740
Before that, we had a tool calling or function calling

606
00:36:56,740 --> 00:36:59,660
that is something similar to NCP,

607
00:37:00,000 --> 00:37:04,760
but in a more lowest-level approach.

608
00:37:07,200 --> 00:37:10,480
But yeah, basically, NCP is a protocol to connect things,

609
00:37:11,340 --> 00:37:15,540
to connect clients and servers to perform this communication.

610
00:37:16,980 --> 00:37:36,160
It's used that it's designed for LLens, which is something interesting because it comes with different fields in the schemas of tools and the server, which are thought basically to put natural language there.

611
00:37:36,160 --> 00:37:42,960
So you can put titles for the tools, descriptions.

612
00:37:44,100 --> 00:37:48,860
You have a field that is called instructions for the server.

613
00:37:49,660 --> 00:37:59,920
So it's really a mix of natural language and JSON schema for defining the shapes and the types and so on.

614
00:37:59,920 --> 00:38:04,660
which is very interesting because it creates a self-describing server

615
00:38:04,660 --> 00:38:12,040
or a self-describing service that doesn't require a standard source of documentation

616
00:38:12,040 --> 00:38:16,320
to understand how it works or what each tool does

617
00:38:16,320 --> 00:38:21,400
because it already comes with a natural language description.

618
00:38:21,840 --> 00:38:22,640
So it's very interesting.

619
00:38:22,640 --> 00:38:30,040
um yeah so has this let me ask you this uh just a specific question about this

620
00:38:30,040 --> 00:38:36,020
was one and you know when mcps came came out it was over a year ago right late 2024

621
00:38:36,020 --> 00:38:45,640
yeah the cool thing was you could then use your uh cursor or uh or even visual studio right if you

622
00:38:45,640 --> 00:38:51,240
visual studio code if you if you use some a plugin like cline you add your mcp servers then you can

623
00:38:51,240 --> 00:38:54,460
point it to a folder or a directory on your computer.

624
00:38:54,620 --> 00:38:56,200
It can look at an Excel file.

625
00:38:56,280 --> 00:38:57,100
It can do stuff for you.

626
00:38:57,120 --> 00:39:01,100
You write it in natural language, and then all of these cool things are happening, right?

627
00:39:01,120 --> 00:39:03,820
You can aggregate receipts and all of that stuff.

628
00:39:04,580 --> 00:39:09,020
One thing I haven't found, and maybe this is just I haven't searched properly,

629
00:39:09,020 --> 00:39:13,620
or I just have had bad luck in finding it, is when you're building an app,

630
00:39:14,420 --> 00:39:17,460
Vibe Coding an app, let's just say, and you deploy it somewhere,

631
00:39:17,460 --> 00:39:19,620
is there an MCP server

632
00:39:19,620 --> 00:39:21,260
or can I use context VM

633
00:39:21,260 --> 00:39:24,640
that allows me to plug directly

634
00:39:24,640 --> 00:39:25,680
into the browser console

635
00:39:25,680 --> 00:39:29,580
and look at the errors that come there?

636
00:39:29,680 --> 00:39:32,720
Because that's kind of a big deal, right?

637
00:39:33,300 --> 00:39:35,160
There's a lot of these vibe-coded apps

638
00:39:35,160 --> 00:39:36,200
when you deploy them

639
00:39:36,200 --> 00:39:37,680
like you've got to go through

640
00:39:37,680 --> 00:39:40,020
the way I do it is I go to the console

641
00:39:40,020 --> 00:39:41,080
I copy the error

642
00:39:41,080 --> 00:39:42,840
I put it back in the LLM

643
00:39:42,840 --> 00:39:44,000
and the LLM has to interpret

644
00:39:44,000 --> 00:39:45,820
and it's a complete nuisance.

645
00:39:45,820 --> 00:39:48,620
is there a way of automating that?

646
00:39:49,660 --> 00:39:52,280
Yeah, there are different MCP servers

647
00:39:52,280 --> 00:39:54,800
that give you that

648
00:39:54,800 --> 00:39:58,240
I think that the first option

649
00:39:58,240 --> 00:40:01,900
that we had for that

650
00:40:01,900 --> 00:40:05,940
was the Playwright MCP

651
00:40:05,940 --> 00:40:10,780
Playwright is a kind of framework

652
00:40:10,780 --> 00:40:12,760
to do browser automation

653
00:40:12,760 --> 00:40:16,000
through scripting.

654
00:40:17,120 --> 00:40:19,360
Basically, you can use that to

655
00:40:19,360 --> 00:40:21,600
automate your browser

656
00:40:21,600 --> 00:40:24,840
and, you know, get all the details

657
00:40:24,840 --> 00:40:29,000
from executing or from loading

658
00:40:29,000 --> 00:40:32,400
a page or an address.

659
00:40:33,340 --> 00:40:36,400
And that's already something that you can use for that

660
00:40:36,400 --> 00:40:39,940
to basically debug web applications.

661
00:40:40,760 --> 00:40:42,200
So yeah, there are solutions already.

662
00:40:42,760 --> 00:40:44,760
You don't need a context VM for that.

663
00:40:45,760 --> 00:40:52,760
The use case for context VM is basically to have a remote service or things that are running elsewhere

664
00:40:53,760 --> 00:41:00,760
and to be able to connect like you are connecting to a local server.

665
00:41:01,760 --> 00:41:09,760
Because even if it's remote, you can connect to it without any hassle or any difficult configuration.

666
00:41:09,760 --> 00:41:17,000
because everything works over Nocer and use relays as a message buses.

667
00:41:17,000 --> 00:41:25,120
So you don't need to worry about IP addresses, DNS, firewalls or nothing like that.

668
00:41:25,120 --> 00:41:33,500
You could basically spin up a context VM server from a coffee shop or something and it will

669
00:41:33,500 --> 00:41:51,090
be reachable instantly through Nocer This is quite powerful and I think that there have been a lot of different and crazy experiments around that Pete Wien that is a good friend and I also a big fan of ContextVM he did an experiment

670
00:41:51,090 --> 00:41:58,530
on basically running a ContextVM server over the WiFi of a plane.

671
00:41:58,530 --> 00:42:02,530
He was able to receive a request during the flight.

672
00:42:02,530 --> 00:42:05,030
It's pretty crazy to think about.

673
00:42:06,150 --> 00:42:08,190
Mile-high club for ContextVM.

674
00:42:10,010 --> 00:42:10,810
What's that?

675
00:42:12,090 --> 00:42:16,790
Now, the mile-high in the air

676
00:42:16,790 --> 00:42:20,550
and you're receiving ContextVM requests.

677
00:42:21,110 --> 00:42:22,030
But yeah, that's pretty cool.

678
00:42:23,130 --> 00:42:23,690
Yeah.

679
00:42:24,590 --> 00:42:29,410
I mean, you can run it in a server in your phone as well.

680
00:42:29,690 --> 00:42:31,750
You can run it in a Raspberry Pi.

681
00:42:32,530 --> 00:42:40,770
The possibilities that come with basically putting a service online without any hassle

682
00:42:40,770 --> 00:42:43,650
I think that are quite interesting

683
00:42:43,650 --> 00:42:48,770
There are different people working on projects apart of me

684
00:42:48,770 --> 00:42:53,410
that are really creating some really cool stuff

685
00:42:53,410 --> 00:42:58,690
But yeah, I don't know if I explain this properly

686
00:42:58,690 --> 00:43:03,890
please just ask if you think that I can explain it better.

687
00:43:05,110 --> 00:43:07,290
No, that's great. That's super helpful.

688
00:43:08,670 --> 00:43:10,290
So, Jesus, let's move to Relator.

689
00:43:10,950 --> 00:43:12,030
And I think that's the one,

690
00:43:13,770 --> 00:43:17,670
that's the Web of Trust solution that you rolled out.

691
00:43:18,270 --> 00:43:20,470
That was, what, a month or two ago?

692
00:43:20,950 --> 00:43:22,650
Right? Relator is pretty new, isn't it?

693
00:43:23,730 --> 00:43:24,090
Yeah.

694
00:43:24,750 --> 00:43:25,150
Yeah.

695
00:43:25,150 --> 00:43:27,530
Yeah, I think something like that.

696
00:43:27,530 --> 00:43:32,030
I don't remember the exact dates, but yeah, a month or two.

697
00:43:34,290 --> 00:43:41,890
Yeah, Relator was the result of different conversations that we had during Sovereign Engineering 5,

698
00:43:43,050 --> 00:43:50,250
especially around conversations with Gigi and some of them with Hazard as well.

699
00:43:50,250 --> 00:43:53,590
you know, it came from

700
00:43:53,590 --> 00:43:55,450
a natural frustration

701
00:43:55,450 --> 00:43:56,070
because

702
00:43:56,070 --> 00:43:59,350
in Nosser, currently

703
00:43:59,350 --> 00:44:01,510
we don't have an open source

704
00:44:01,510 --> 00:44:03,230
solution to do

705
00:44:03,230 --> 00:44:05,250
what Vertex

706
00:44:05,250 --> 00:44:06,990
started to do, basically.

707
00:44:07,750 --> 00:44:09,330
And the frustration was to

708
00:44:09,330 --> 00:44:10,930
basically have something open source

709
00:44:10,930 --> 00:44:13,330
that you can run and that you can understand

710
00:44:13,330 --> 00:44:14,130
and reason about

711
00:44:14,130 --> 00:44:16,910
that everyone can run

712
00:44:16,910 --> 00:44:18,430
or anyone can run.

713
00:44:18,430 --> 00:44:21,030
and it offers

714
00:44:21,030 --> 00:44:23,610
same kind of service

715
00:44:23,610 --> 00:44:24,650
that Vertex

716
00:44:24,650 --> 00:44:27,590
which is a pretty good service

717
00:44:27,590 --> 00:44:29,290
shout out to Pip

718
00:44:29,290 --> 00:44:32,530
but yeah

719
00:44:32,530 --> 00:44:35,650
it's something close

720
00:44:35,650 --> 00:44:37,770
and the idea

721
00:44:37,770 --> 00:44:39,710
was basically put together

722
00:44:39,710 --> 00:44:41,050
something open source

723
00:44:41,050 --> 00:44:43,230
fully self-hostable

724
00:44:43,230 --> 00:44:46,810
with the idea of

725
00:44:46,810 --> 00:44:52,470
that it could run anywhere in the computer of a pleb.

726
00:44:52,470 --> 00:44:58,610
You don't need a very expensive machine to run this,

727
00:45:00,130 --> 00:45:03,750
but you can run it in a Raspberry Pi even if you want.

728
00:45:04,550 --> 00:45:09,630
I mean, the public instance of Relator that we are running

729
00:45:09,630 --> 00:45:13,530
which receives a lot of requests

730
00:45:13,530 --> 00:45:17,250
because I integrated with Waterlight.

731
00:45:17,690 --> 00:45:21,810
There's another project that came from this exploration.

732
00:45:22,770 --> 00:45:27,590
But basically, my instance of Relator is receiving a lot of requests

733
00:45:27,590 --> 00:45:32,110
and it's running in a very cheap $2 VPS.

734
00:45:33,630 --> 00:45:36,630
It's still performing very well because, you know,

735
00:45:36,630 --> 00:45:43,170
it has response times of 50 milliseconds or 40 milliseconds for search.

736
00:45:43,530 --> 00:45:46,410
it's behaving pretty well,

737
00:45:47,030 --> 00:45:49,450
it's quite performant and efficient.

738
00:45:50,270 --> 00:45:53,750
So it can be run anywhere.

739
00:45:55,050 --> 00:45:58,510
That was the idea behind Redator, create this.

740
00:46:00,190 --> 00:46:02,710
So actually, let's talk about that,

741
00:46:02,950 --> 00:46:04,770
the compute requirement, right?

742
00:46:04,770 --> 00:46:08,290
So you mentioned Vertex, which uses personalized page rank,

743
00:46:09,070 --> 00:46:13,010
which is like a take on Google's original search algorithm,

744
00:46:13,010 --> 00:46:20,870
right page rank the other web of trust service provider is uh is brainstorm which which is

745
00:46:20,870 --> 00:46:27,770
nosfabrica is developing that one uh it looks at follows meets today anyway it's extensible but

746
00:46:27,770 --> 00:46:33,210
today just looks at follows meets and reports you can obviously add other signals like zaps and so

747
00:46:33,210 --> 00:46:38,010
on if you want to looks at those it comes up with scores completely personalized and then publishes

748
00:46:38,010 --> 00:46:43,590
them using trusted assertions and then there's relator what is the algorithm so well actually

749
00:46:43,590 --> 00:46:50,070
before you answer that both in the case of personalized page rank and in the case of

750
00:46:50,070 --> 00:46:58,030
brainstorm which is which produces grape rank you know it's computationally incredibly intensive

751
00:46:58,030 --> 00:47:03,410
because you have to go through this entire graph database right and crunch through all of these

752
00:47:03,410 --> 00:47:06,090
numbers and it's

753
00:47:06,090 --> 00:47:08,030
tricky to run those computations

754
00:47:08,030 --> 00:47:10,050
on a Raspberry Pi for instance

755
00:47:10,050 --> 00:47:11,830
so what is the algorithm

756
00:47:11,830 --> 00:47:14,070
in the case of

757
00:47:14,070 --> 00:47:16,090
Relator and how are you able to get it to

758
00:47:16,090 --> 00:47:16,450
run

759
00:47:16,450 --> 00:47:19,990
in a low compute

760
00:47:19,990 --> 00:47:20,430
environment

761
00:47:20,430 --> 00:47:23,170
yes so

762
00:47:23,170 --> 00:47:24,270
basically

763
00:47:24,270 --> 00:47:27,010
yeah I think that

764
00:47:27,010 --> 00:47:29,830
the algorithm behind Relator is

765
00:47:29,830 --> 00:47:31,510
very close in the spirit

766
00:47:31,510 --> 00:47:33,950
to grape rank

767
00:47:33,950 --> 00:47:35,990
because both

768
00:47:35,990 --> 00:47:37,890
basically use different

769
00:47:37,890 --> 00:47:40,110
signals to compose

770
00:47:40,110 --> 00:47:41,670
the thrust or the score

771
00:47:41,670 --> 00:47:45,110
but the

772
00:47:45,110 --> 00:47:47,810
algorithm is basically

773
00:47:47,810 --> 00:47:50,010
a weight formula

774
00:47:50,010 --> 00:47:51,750
of different components

775
00:47:51,750 --> 00:47:54,090
that at the end are

776
00:47:54,090 --> 00:47:56,330
crystallized

777
00:47:56,330 --> 00:47:58,170
and zoomed in a

778
00:47:58,170 --> 00:47:59,750
number between

779
00:47:59,750 --> 00:48:01,250
1 and 0

780
00:48:01,250 --> 00:48:06,850
You know, everything is a floating point, a floating point number, a float.

781
00:48:08,910 --> 00:48:16,950
And basically, it takes different signals or different validators, validation signals,

782
00:48:17,850 --> 00:48:26,250
and the perspective of a source pubkey, which basically is used as a kind of rule of thumb

783
00:48:26,250 --> 00:48:30,610
to have a component in this formula

784
00:48:30,610 --> 00:48:34,210
that weighs 50%

785
00:48:34,210 --> 00:48:40,150
in the case of the instance of Relator that we are running.

786
00:48:40,710 --> 00:48:42,030
Because the cool part of this is that

787
00:48:42,030 --> 00:48:45,830
by running Relator, anyone can tune that,

788
00:48:46,030 --> 00:48:46,930
can tune the algorithm,

789
00:48:47,190 --> 00:48:51,410
and can tune the weights that compose the algorithm.

790
00:48:52,350 --> 00:48:55,950
So basically, you have this component

791
00:48:55,950 --> 00:49:04,750
that is the primary component, which is the social graph distance between the source public key

792
00:49:05,390 --> 00:49:10,350
and the target public key that you are attempting to perform the calculation.

793
00:49:11,390 --> 00:49:19,550
And the distance between the source and the target is then translated to a float,

794
00:49:20,510 --> 00:49:27,950
basically using a decay function. So for example, if the source pub key and the target pub key

795
00:49:29,390 --> 00:49:40,750
they are one of distance, the output is one, okay, the result of that component. Then if the

796
00:49:40,750 --> 00:49:43,110
if the distance is two,

797
00:49:44,270 --> 00:49:47,710
the decay function basically map that

798
00:49:47,710 --> 00:49:50,130
to a float number as well.

799
00:49:51,190 --> 00:49:53,490
In the case of the data...

800
00:49:53,490 --> 00:49:57,090
Sorry, just so I understand the concept of distance,

801
00:49:57,410 --> 00:49:58,430
you mean hops, right?

802
00:49:58,510 --> 00:50:00,010
So if you're following someone,

803
00:50:00,150 --> 00:50:00,830
distance is one,

804
00:50:01,310 --> 00:50:03,610
a follow of a follow is a distance of two, correct?

805
00:50:04,130 --> 00:50:04,270
Okay.

806
00:50:04,670 --> 00:50:05,250
Yeah, exactly.

807
00:50:05,250 --> 00:50:07,890
Basically, distance one

808
00:50:07,890 --> 00:50:10,970
is what the source path key follows.

809
00:50:12,270 --> 00:50:20,190
And distance two is what the follows of the source follows.

810
00:50:21,130 --> 00:50:22,610
So, yeah, hops, basically.

811
00:50:23,550 --> 00:50:23,870
Yeah.

812
00:50:24,870 --> 00:50:28,310
Yeah, so basically, as I was saying,

813
00:50:28,910 --> 00:50:34,490
we have a decay function that basically maps the distance

814
00:50:34,490 --> 00:50:36,410
to a floating point, to a float.

815
00:50:36,410 --> 00:50:38,630
so if you are at distance 1

816
00:50:38,630 --> 00:50:41,230
you have 1, if you are at distance 2

817
00:50:41,230 --> 00:50:42,310
you have

818
00:50:42,310 --> 00:50:43,870
0.85

819
00:50:43,870 --> 00:50:46,550
or something around that

820
00:50:46,550 --> 00:50:48,590
if you are at distance 3

821
00:50:48,590 --> 00:50:50,810
you have 0.7

822
00:50:50,810 --> 00:50:52,250
or something like that

823
00:50:52,250 --> 00:50:53,710
and then

824
00:50:53,710 --> 00:50:56,470
Is this some Fibonacci decay

825
00:50:56,470 --> 00:50:57,210
or something?

826
00:50:57,690 --> 00:51:00,010
1 to 0.0

827
00:51:00,010 --> 00:51:02,550
Not exactly

828
00:51:02,550 --> 00:51:04,510
I mean I tried to

829
00:51:04,510 --> 00:51:14,590
model the curve of the decay function to basically decay harder when the distance is more than

830
00:51:14,590 --> 00:51:25,250
three. So ahead from three, the result of that component is bigger, start to be more

831
00:51:25,250 --> 00:51:26,650
pronunciated

832
00:51:26,650 --> 00:51:28,690
and the

833
00:51:28,690 --> 00:51:31,270
6 that is out of the graph

834
00:51:31,270 --> 00:51:33,230
and this is based on different

835
00:51:33,230 --> 00:51:34,990
studies and different papers

836
00:51:34,990 --> 00:51:37,550
So you've put

837
00:51:37,550 --> 00:51:39,570
together this decay function

838
00:51:39,570 --> 00:51:41,030
and it sounds like some kind of

839
00:51:41,030 --> 00:51:43,790
I don't think it sounds like some kind of stepwise

840
00:51:43,790 --> 00:51:44,870
function right like

841
00:51:44,870 --> 00:51:47,130
if you're saying after 3 it's more

842
00:51:47,130 --> 00:51:48,950
than it's before 3

843
00:51:48,950 --> 00:51:51,290
so it's not some kind of

844
00:51:51,290 --> 00:51:52,770
existing

845
00:51:52,770 --> 00:51:57,110
curve, right? You've looked at different studies and you've sort of pieced it together.

846
00:51:58,210 --> 00:52:01,490
No, I try to basically collapse

847
00:52:01,490 --> 00:52:05,430
there, different things about social dynamics and things

848
00:52:05,430 --> 00:52:09,170
that we can extract from the graph and map that to

849
00:52:09,170 --> 00:52:12,210
a number, to a float from 0 to 1.

850
00:52:14,350 --> 00:52:15,470
Basically because

851
00:52:15,470 --> 00:52:21,610
if you are starting to be, if you have a target pub key that is

852
00:52:21,610 --> 00:52:24,310
up to four hops

853
00:52:24,310 --> 00:52:26,010
that means that

854
00:52:26,010 --> 00:52:28,630
a lot of people

855
00:52:28,630 --> 00:52:30,810
in your graph

856
00:52:30,810 --> 00:52:31,770
in your social graph

857
00:52:31,770 --> 00:52:33,810
is not following it

858
00:52:33,810 --> 00:52:35,770
because for example

859
00:52:35,770 --> 00:52:39,390
if the source pub key

860
00:52:39,390 --> 00:52:40,750
and the target pub key

861
00:52:40,750 --> 00:52:42,270
are at one

862
00:52:42,270 --> 00:52:43,590
distance one

863
00:52:43,590 --> 00:52:46,470
the source pub key

864
00:52:46,470 --> 00:52:48,170
can control that distance

865
00:52:48,170 --> 00:52:50,450
so if the source pub key

866
00:52:50,450 --> 00:52:54,370
unfollows you, you are going to be at distance 2.

867
00:52:55,150 --> 00:52:58,450
Okay? But if you are at distance 2,

868
00:52:58,950 --> 00:53:02,590
then it's much harder to go

869
00:53:02,590 --> 00:53:06,370
from 2 to 3. Because to go from

870
00:53:06,370 --> 00:53:10,490
2 to 3, all the follows of the

871
00:53:10,490 --> 00:53:14,590
source path key should unfollow you at the same time.

872
00:53:15,570 --> 00:53:18,230
And to go from 3 to 4,

873
00:53:18,230 --> 00:53:20,410
the same but exponentially

874
00:53:20,410 --> 00:53:23,030
in the hub

875
00:53:23,030 --> 00:53:26,570
then from 4 to 5

876
00:53:26,570 --> 00:53:28,390
more exponential and 6

877
00:53:28,390 --> 00:53:30,610
is out of the graph

878
00:53:30,610 --> 00:53:32,110
is all of Noster

879
00:53:32,110 --> 00:53:33,970
yeah exactly

880
00:53:33,970 --> 00:53:35,490
yeah because

881
00:53:35,490 --> 00:53:38,370
this is basically

882
00:53:38,370 --> 00:53:40,470
the rule of thumb

883
00:53:40,470 --> 00:53:42,690
in related

884
00:53:42,690 --> 00:53:44,770
because

885
00:53:44,770 --> 00:53:45,990
basically this

886
00:53:45,990 --> 00:53:47,790
weighted formula

887
00:53:47,790 --> 00:53:57,250
take these components as a 50% of the final scoring or the final number and

888
00:53:57,250 --> 00:54:07,350
the other 50% are these trust signals that users or operators of Relator can

889
00:54:07,350 --> 00:54:16,850
modify. Basically those signals are like if the user... in the case of the

890
00:54:16,850 --> 00:54:23,410
main relator or the public relator instance that we are running. The components of the

891
00:54:23,410 --> 00:54:28,450
signals that we are taking there to do the computation is basically if the user have a

892
00:54:28,450 --> 00:54:39,730
published relay list, if the user have a valid NIPO5, if the user have reciprocity with the

893
00:54:39,730 --> 00:54:42,130
the source pub key.

894
00:54:44,410 --> 00:54:49,210
Yeah, if it has a lightning address set up in its profile.

895
00:54:51,730 --> 00:54:53,090
And yeah, that's it.

896
00:54:53,770 --> 00:54:59,970
So those signals are also mapped to a float number.

897
00:55:01,010 --> 00:55:06,250
And together with the components, the other 50% components are zoomed up

898
00:55:06,250 --> 00:55:08,970
and the result is the final score.

899
00:55:09,730 --> 00:55:12,970
So that makes complete sense, right?

900
00:55:12,970 --> 00:55:17,770
In some sense, when you map those, whatever signals you take, right?

901
00:55:17,830 --> 00:55:21,050
Like you said, the existence of a lightning address, NIPO5,

902
00:55:21,210 --> 00:55:23,250
and you could do anything, how many times they zapped.

903
00:55:23,650 --> 00:55:25,730
You can pick anything as a signal, for example.

904
00:55:25,970 --> 00:55:29,030
Yeah, you can count GNs, you know, if you want.

905
00:55:29,170 --> 00:55:31,850
That could be a good trust signal.

906
00:55:32,790 --> 00:55:33,210
Sure.

907
00:55:33,240 --> 00:55:41,940
So those have weights of their own, and for today you assign those weights, right, to these signals?

908
00:55:43,100 --> 00:55:52,160
Okay, and then those weights get multiplied with the distance weights, and it collapses into one score per relationship, right?

909
00:55:52,160 --> 00:55:55,060
So I want to make sure I understand.

910
00:55:55,820 --> 00:55:58,880
So if I'm the one who's requesting the scores,

911
00:55:59,380 --> 00:56:02,260
I have, let's say, 300 people at distance one,

912
00:56:02,760 --> 00:56:04,660
maybe 20,000 people at distance two,

913
00:56:05,000 --> 00:56:07,880
like whatever, 300,000 people at distance three.

914
00:56:08,940 --> 00:56:14,280
If I request a score, I need to get all 300,000 scores, right?

915
00:56:15,120 --> 00:56:17,660
And those scores get calculated

916
00:56:17,660 --> 00:56:21,940
by doing this weighted average across distances

917
00:56:21,940 --> 00:56:23,640
and signal weights as well.

918
00:56:24,020 --> 00:56:25,200
Yes, exactly.

919
00:56:25,500 --> 00:56:27,420
So this is what I mean.

920
00:56:27,460 --> 00:56:29,700
This is like a very complicated computation.

921
00:56:30,160 --> 00:56:31,320
How are you able to get it?

922
00:56:33,180 --> 00:56:38,000
Because what is this magic that you're able to get it to do on a Raspberry Pi?

923
00:56:39,340 --> 00:56:44,640
Yeah, I mean, I think it's not that complex at the end.

924
00:56:44,640 --> 00:57:05,840
If you are able to organize and to have a clear life cycle of the whole process and model the whole process in a way that is conservative with the resources that it consumes, the computation that it needs to develop in order to have all the computation done.

925
00:57:05,840 --> 00:57:08,980
you can get it to work

926
00:57:08,980 --> 00:57:11,300
well and perform

927
00:57:11,300 --> 00:57:13,200
well in resource

928
00:57:13,200 --> 00:57:13,800
constrained

929
00:57:13,800 --> 00:57:16,460
environments

930
00:57:16,460 --> 00:57:19,100
because

931
00:57:19,100 --> 00:57:20,080
basically

932
00:57:20,080 --> 00:57:25,260
Relator is not doing

933
00:57:25,260 --> 00:57:27,700
real-time computations all the time

934
00:57:27,700 --> 00:57:29,200
like for every request

935
00:57:29,200 --> 00:57:31,880
you have a TTL

936
00:57:31,880 --> 00:57:33,280
time to leave

937
00:57:33,280 --> 00:57:34,500
for the

938
00:57:34,500 --> 00:57:38,940
score and the result of the validations.

939
00:57:40,120 --> 00:57:45,220
That TTL determines the freshness of the output.

940
00:57:46,020 --> 00:57:49,360
So from time to time there is a

941
00:57:49,360 --> 00:57:52,880
schedule job that

942
00:57:52,880 --> 00:57:58,600
basically refresh the stale

943
00:57:58,600 --> 00:58:02,740
computations. And it does that

944
00:58:02,740 --> 00:58:10,740
in a conservative way so it really doesn't put a lot of pressure on the machine.

945
00:58:10,740 --> 00:58:19,140
The other part is the stack that I choose for this which is specifically designed for

946
00:58:19,140 --> 00:58:29,740
work on resource-constrained environments which is basically DACDB which is an embedded

947
00:58:29,740 --> 00:58:38,740
database for all app in process for specifically design for analytics that it performs really well

948
00:58:38,740 --> 00:58:46,540
on the edge you know and is embedded embedded means that you don't need to run a separate

949
00:58:46,540 --> 00:58:54,060
service a site so everything is contained in the same program the database is a file

950
00:58:54,060 --> 00:58:56,640
you can copy that file

951
00:58:56,640 --> 00:58:57,920
you can download that file

952
00:58:57,920 --> 00:58:59,280
you can transmit that file

953
00:58:59,280 --> 00:59:01,200
it's a file

954
00:59:01,200 --> 00:59:04,440
it's not like a Postgres database

955
00:59:04,440 --> 00:59:09,260
or a Neo4j database

956
00:59:09,260 --> 00:59:11,640
or a Redis

957
00:59:11,640 --> 00:59:12,740
or nothing like that

958
00:59:12,740 --> 00:59:13,780
it's embedded

959
00:59:13,780 --> 00:59:16,000
indeed

960
00:59:16,000 --> 00:59:18,640
DACDB is a very interesting database

961
00:59:18,640 --> 00:59:19,900
for this kind of things

962
00:59:19,900 --> 00:59:22,720
because they take seriously

963
00:59:22,720 --> 00:59:25,300
these things about

964
00:59:25,300 --> 00:59:25,840
because

965
00:59:25,840 --> 00:59:28,300
DuckDB is a single node

966
00:59:28,300 --> 00:59:30,700
engine which means that

967
00:59:30,700 --> 00:59:32,700
it's supposed not to be shared

968
00:59:32,700 --> 00:59:34,460
it's just to be run

969
00:59:34,460 --> 00:59:36,820
in the same thing, single node

970
00:59:36,820 --> 00:59:38,660
and they run very crazy

971
00:59:38,660 --> 00:59:40,340
benchmarks on phones

972
00:59:40,340 --> 00:59:42,580
with huge data sets and

973
00:59:42,580 --> 00:59:44,760
sorting that stuff and doing

974
00:59:44,760 --> 00:59:45,600
different operations

975
00:59:45,600 --> 00:59:48,760
they are

976
00:59:48,760 --> 00:59:50,700
very cool, they are really cool, they are fully

977
00:59:50,700 --> 00:59:51,500
open source as well

978
00:59:51,500 --> 01:00:10,060
So I'm very careful with the stack that issues for Relator and Context VM because one of the things that open source developers tend to forget is that the license of the libraries that you use determines the final license that your software can have.

979
01:00:11,500 --> 01:00:20,360
All the software that I'm using, all the libraries and everything, I'm very careful with that because I really want the stack to be fully open source.

980
01:00:20,360 --> 01:00:24,520
but yeah that is the magic behind

981
01:00:24,520 --> 01:00:26,200
Relator and why

982
01:00:26,200 --> 01:00:28,860
it works well

983
01:00:28,860 --> 01:00:30,420
in this kind of environment

984
01:00:30,420 --> 01:00:35,080
magic is .db

985
01:00:35,080 --> 01:00:36,800
it sounds like and a few other things

986
01:00:36,800 --> 01:00:37,400
so

987
01:00:37,400 --> 01:00:40,100
I mean I can

988
01:00:40,100 --> 01:00:41,760
if you are interested I think that

989
01:00:41,760 --> 01:00:44,860
I can just give a previous

990
01:00:44,860 --> 01:00:45,680
historic

991
01:00:45,680 --> 01:00:48,820
timeline of how

992
01:00:48,820 --> 01:00:51,040
Relator was developed because

993
01:00:51,040 --> 01:00:52,540
at the beginning I didn't start

994
01:00:52,540 --> 01:00:54,480
with TagTV.

995
01:00:54,780 --> 01:00:56,460
I started with SQLite

996
01:00:56,460 --> 01:00:58,340
and

997
01:00:58,340 --> 01:01:00,540
Martin Malmi's

998
01:01:00,540 --> 01:01:03,080
Nocell Social Graph library

999
01:01:03,080 --> 01:01:04,480
which

1000
01:01:04,480 --> 01:01:06,600
in Spirit is the same that

1001
01:01:06,600 --> 01:01:08,920
a library that I created for

1002
01:01:08,920 --> 01:01:11,200
Relator that is called Nocell Social

1003
01:01:11,200 --> 01:01:12,800
DAC which is

1004
01:01:12,800 --> 01:01:15,060
the same that Martin Malmi's

1005
01:01:15,060 --> 01:01:16,460
do but

1006
01:01:16,460 --> 01:01:18,680
instead of loading

1007
01:01:18,680 --> 01:01:19,800
everything on memory

1008
01:01:19,800 --> 01:01:22,420
just use

1009
01:01:22,420 --> 01:01:24,320
DACDB as the engine for

1010
01:01:24,320 --> 01:01:25,680
the graph computations

1011
01:01:25,680 --> 01:01:27,500
you know

1012
01:01:27,500 --> 01:01:29,800
everything in Related started

1013
01:01:29,800 --> 01:01:32,640
well with the Martis

1014
01:01:32,640 --> 01:01:33,860
libraries

1015
01:01:33,860 --> 01:01:36,560
and SQLite database

1016
01:01:36,560 --> 01:01:38,080
but

1017
01:01:38,080 --> 01:01:39,860
it started to show

1018
01:01:39,860 --> 01:01:40,940
the cracks

1019
01:01:40,940 --> 01:01:44,140
very quickly because

1020
01:01:44,140 --> 01:01:46,180
you know search

1021
01:01:46,180 --> 01:01:49,680
Search is a heavy topic.

1022
01:01:50,380 --> 01:01:53,640
You know, it's a very difficult task indeed

1023
01:01:53,640 --> 01:01:58,420
to basically have a huge data set of metadata

1024
01:01:58,420 --> 01:02:05,680
and just perform a search that supposedly is going to return to you

1025
01:02:05,680 --> 01:02:11,620
the most relevant results from that huge set of data.

1026
01:02:11,620 --> 01:02:18,280
and when I was the first iterations of Relator when it used the the Martis

1027
01:02:18,280 --> 01:02:27,160
Marmies library and SQLite I had a very huge bottleneck there because basically

1028
01:02:27,160 --> 01:02:34,960
in order to perform a search I had to first go to SQLite and do a full-text

1029
01:02:34,960 --> 01:02:40,480
search in the database in the in the table of the metadata then get an

1030
01:02:40,480 --> 01:02:43,180
an arbitrary number of candidates,

1031
01:02:44,080 --> 01:02:49,360
then those candidates resolve the score for all of them,

1032
01:02:50,420 --> 01:02:53,820
sort the results, and then slice it

1033
01:02:53,820 --> 01:02:56,940
to basically respect the limit of the filter.

1034
01:02:58,320 --> 01:03:02,060
That was painful because, you know,

1035
01:03:02,060 --> 01:03:06,580
you never was sure about the number of candidates

1036
01:03:06,580 --> 01:03:08,180
to take from the database.

1037
01:03:08,180 --> 01:03:16,860
because maybe you take a hundred but you know the the most relevant result is

1038
01:03:16,860 --> 01:03:27,320
101 you know is at 101 so it's quite arbitrary and that was creating a bad experience and a huge

1039
01:03:27,320 --> 01:03:35,660
performance bottleneck because every time you have to compute trust or the scores scores for

1040
01:03:35,660 --> 01:03:39,580
a random number or an arbitrary number of candidates

1041
01:03:39,580 --> 01:03:43,940
hoping to have the best or the most relevant results

1042
01:03:43,940 --> 01:03:47,560
in that candidate, which is arbitrary.

1043
01:03:48,100 --> 01:03:51,060
So then I moved to Nocell Social DAC.

1044
01:03:51,340 --> 01:03:55,560
That is the same concept that the Nocell Social Graph library

1045
01:03:55,560 --> 01:04:00,700
from Martin Malmys, but everything is in DACDB.

1046
01:04:00,700 --> 01:04:03,880
so I moved from SQLite

1047
01:04:03,880 --> 01:04:05,420
plus Martins Malme

1048
01:04:05,420 --> 01:04:06,860
library to

1049
01:04:06,860 --> 01:04:08,600
use DAGDB

1050
01:04:08,600 --> 01:04:10,240
and everything there

1051
01:04:10,240 --> 01:04:12,760
so it allowed me to

1052
01:04:12,760 --> 01:04:15,060
do joins

1053
01:04:15,060 --> 01:04:17,100
and perform everything

1054
01:04:17,100 --> 01:04:19,180
in SQL

1055
01:04:19,180 --> 01:04:21,520
to perform searches

1056
01:04:21,520 --> 01:04:23,200
and that really

1057
01:04:23,200 --> 01:04:25,460
improved the experience by a lot

1058
01:04:25,460 --> 01:04:26,700
and the performance because

1059
01:04:26,700 --> 01:04:28,480
now instead of

1060
01:04:28,480 --> 01:04:30,800
do the candidate things,

1061
01:04:31,580 --> 01:04:35,080
I could basically get the most relevant results

1062
01:04:35,080 --> 01:04:38,100
from the database straight out of the database

1063
01:04:38,100 --> 01:04:41,860
without needing to do all the score computation

1064
01:04:41,860 --> 01:04:43,600
after getting the candidates.

1065
01:04:45,180 --> 01:04:48,640
So yeah, all of that are the engineering decisions

1066
01:04:48,640 --> 01:04:55,640
and all of them was in order to accomplish

1067
01:04:55,640 --> 01:05:01,280
accomplish the vision behind it later of being able to run everywhere on any device.

1068
01:05:03,300 --> 01:05:03,780
That's great.

1069
01:05:04,260 --> 01:05:08,680
So we have, as of today, there's three Web of Trust service providers

1070
01:05:08,680 --> 01:05:17,060
that essentially you can, as a user, can request the scores, I guess,

1071
01:05:17,980 --> 01:05:21,740
for your Web of Trust, for your entire network.

1072
01:05:21,940 --> 01:05:24,020
Now, I think Vertex works a little differently.

1073
01:05:24,020 --> 01:05:26,720
it's an API call and I don't think

1074
01:05:26,720 --> 01:05:28,200
they put a number on a person.

1075
01:05:29,480 --> 01:05:30,300
I should talk to,

1076
01:05:30,540 --> 01:05:32,660
should have Pip on the show just so that he does

1077
01:05:32,660 --> 01:05:34,600
a deep dive on Vertex.

1078
01:05:34,920 --> 01:05:35,540
But in your case,

1079
01:05:36,660 --> 01:05:38,620
do you support

1080
01:05:38,620 --> 01:05:40,620
an API call or have you gone straight to

1081
01:05:40,620 --> 01:05:41,540
trusted assertions?

1082
01:05:43,220 --> 01:05:44,600
No, no, no. I mean, the first,

1083
01:05:44,600 --> 01:05:46,380
the main API of

1084
01:05:46,380 --> 01:05:47,640
Relator is ContextVM.

1085
01:05:49,060 --> 01:05:50,640
Everything, that was

1086
01:05:50,640 --> 01:05:51,020
the first

1087
01:05:51,020 --> 01:05:56,020
the first API, now I integrated with Trusted Assertions,

1088
01:05:59,060 --> 01:06:04,060
which basically publish events on relays above the ranks.

1089
01:06:04,960 --> 01:06:23,362
So yeah these two interfaces are complementary because you know Context VM gives you a request pattern similar to the VMs or RPC systems and that is necessary for things like a search

1090
01:06:24,022 --> 01:06:32,882
I cannot rely on a produce-consumer approach, which is basically what is NOS or the trusted

1091
01:06:32,882 --> 01:06:42,622
assertions approach to perform search because you need to basically publish all the events

1092
01:06:42,622 --> 01:06:48,702
with all the possible searches that someone could do, which is impossible and doesn't

1093
01:06:48,702 --> 01:06:49,182
make sense.

1094
01:06:49,182 --> 01:06:55,162
So for that, the request response pattern is necessary.

1095
01:06:55,162 --> 01:06:57,762
but the other

1096
01:06:57,762 --> 01:06:59,942
the produce consumer pattern

1097
01:06:59,942 --> 01:07:02,162
that fits more

1098
01:07:02,162 --> 01:07:03,102
naturally in Nosser

1099
01:07:03,102 --> 01:07:05,962
the concept behind

1100
01:07:05,962 --> 01:07:07,102
the trusted assertions

1101
01:07:07,102 --> 01:07:09,622
is complementary because

1102
01:07:09,622 --> 01:07:11,682
it allows

1103
01:07:11,682 --> 01:07:13,822
a much easier integration

1104
01:07:13,822 --> 01:07:15,202
in any client because

1105
01:07:15,202 --> 01:07:17,162
clients can use

1106
01:07:17,162 --> 01:07:19,322
create filters

1107
01:07:19,322 --> 01:07:21,662
as they create for

1108
01:07:21,662 --> 01:07:23,202
render a fit

1109
01:07:23,202 --> 01:07:25,782
but instead of getting the feed

1110
01:07:25,782 --> 01:07:28,502
they can just get the trusted assertions

1111
01:07:28,502 --> 01:07:29,402
events

1112
01:07:29,402 --> 01:07:31,762
but yeah

1113
01:07:31,762 --> 01:07:33,842
both interfaces are present in Reader

1114
01:07:33,842 --> 01:07:35,562
you can request ranks

1115
01:07:35,562 --> 01:07:38,342
or you can fetch ranks from relays

1116
01:07:38,342 --> 01:07:40,562
yeah

1117
01:07:40,562 --> 01:07:43,542
it contains both APIs

1118
01:07:43,542 --> 01:07:44,842
and you're right

1119
01:07:44,842 --> 01:07:46,762
it's different use cases

1120
01:07:46,762 --> 01:07:48,822
different complementary use cases

1121
01:07:48,822 --> 01:07:51,882
let's talk about the spam mitigation one

1122
01:07:51,882 --> 01:07:56,042
which I think trusted assertions are probably better suited for.

1123
01:07:56,502 --> 01:07:58,362
And I'll lay it out here, right?

1124
01:07:58,682 --> 01:08:04,822
So let's say I'm a user and I want to calculate the web of trust scores for my network

1125
01:08:04,822 --> 01:08:13,122
because I'm seeing a lot of junk on my, you know, just bots shilling, you know, crypto stuff.

1126
01:08:13,322 --> 01:08:15,742
They're shilling some pills, this and that, right?

1127
01:08:15,822 --> 01:08:17,582
So I'm like, I don't want to see any of this stuff.

1128
01:08:18,082 --> 01:08:19,342
Why are they getting into my comments?

1129
01:08:19,802 --> 01:08:21,002
So I go to Relator.

1130
01:08:21,002 --> 01:08:24,002
I choose Relator as my service provider

1131
01:08:24,002 --> 01:08:27,382
and I get my scores calculated

1132
01:08:27,382 --> 01:08:30,202
and let's just say I'm an Amethyst user.

1133
01:08:30,822 --> 01:08:32,682
Relator blasts out the trusted assertions

1134
01:08:32,682 --> 01:08:35,942
and then I go to Amethyst

1135
01:08:35,942 --> 01:08:37,942
and I choose Relator as my service provider.

1136
01:08:38,802 --> 01:08:40,562
That's how the flow works, right?

1137
01:08:41,642 --> 01:08:42,302
More or less.

1138
01:08:42,902 --> 01:08:45,082
The way that Amethyst is implemented

1139
01:08:45,082 --> 01:08:48,402
the user doesn't need to configure nothing on Amethyst.

1140
01:08:48,402 --> 01:08:51,122
the user can go to

1141
01:08:51,122 --> 01:08:52,982
brainstorm for example

1142
01:08:52,982 --> 01:08:53,382
that is

1143
01:08:53,382 --> 01:08:56,422
one or the other

1144
01:08:56,422 --> 01:08:59,022
service of Web of Trust

1145
01:08:59,022 --> 01:08:59,882
that we talk about

1146
01:08:59,882 --> 01:09:02,222
or relator

1147
01:09:02,222 --> 01:09:03,502
XYZ

1148
01:09:03,502 --> 01:09:05,322
and

1149
01:09:05,322 --> 01:09:08,682
indeed I'm not sure if in brainstorm

1150
01:09:08,682 --> 01:09:09,202
you can

1151
01:09:09,202 --> 01:09:11,142
I think that you can

1152
01:09:11,142 --> 01:09:13,222
but basically edit

1153
01:09:13,222 --> 01:09:16,482
your list of

1154
01:09:16,482 --> 01:09:17,542
trusted providers

1155
01:09:17,542 --> 01:09:26,402
and you can do that in Relator XC for sure. You can just go there and select or add to your list

1156
01:09:26,402 --> 01:09:36,862
of trusted providers the pub key of the Relator server and Amethyst will just pick that up and

1157
01:09:36,862 --> 01:09:46,382
render things, render numbers on your screen and use that for the Web of Trust stuff. So yeah,

1158
01:09:46,382 --> 01:09:50,862
you don't really need to modify or to edit nothing in Ametiz.

1159
01:09:51,022 --> 01:09:52,802
Everything happens elsewhere.

1160
01:09:53,862 --> 01:09:55,902
I don't know if Vitor will implement something

1161
01:09:55,902 --> 01:09:59,182
to allow, modify the list of trusted providers.

1162
01:09:59,542 --> 01:10:02,142
But yeah, in any case, the flow is that.

1163
01:10:02,262 --> 01:10:07,582
The flow is that the user find a provider.

1164
01:10:08,582 --> 01:10:14,682
The provider publish these events, these trusted assertions.

1165
01:10:14,682 --> 01:10:17,082
and then the user have to

1166
01:10:17,082 --> 01:10:19,062
publish another event that

1167
01:10:19,062 --> 01:10:20,822
is a list of the

1168
01:10:20,822 --> 01:10:22,122
trust sets providers

1169
01:10:22,122 --> 01:10:24,742
and yeah that's all

1170
01:10:24,742 --> 01:10:26,622
and then

1171
01:10:26,622 --> 01:10:28,822
so then I go back to Amethyst and

1172
01:10:28,822 --> 01:10:30,942
I don't know if VTOR

1173
01:10:30,942 --> 01:10:32,822
has implemented the filtering yet

1174
01:10:32,822 --> 01:10:34,402
right now it's just I can see

1175
01:10:34,402 --> 01:10:35,922
when I see a comment

1176
01:10:35,922 --> 01:10:38,902
I'll still see the comment but I'll see a number

1177
01:10:38,902 --> 01:10:40,882
on top of that of whoever that

1178
01:10:40,882 --> 01:10:42,702
pub key is that npub is

1179
01:10:42,702 --> 01:10:43,022
right

1180
01:10:43,022 --> 01:10:47,102
but presumably he can add an option in settings

1181
01:10:47,102 --> 01:10:47,982
where I can go and say,

1182
01:10:48,262 --> 01:10:50,582
don't show me comments for anyone whose score is below 20

1183
01:10:50,582 --> 01:10:53,282
because they're probably bots or something like that.

1184
01:10:54,542 --> 01:10:54,802
Yes.

1185
01:10:56,022 --> 01:10:56,642
Yeah, exactly.

1186
01:10:58,022 --> 01:10:59,022
Let's talk about...

1187
01:10:59,702 --> 01:11:00,382
Sorry, go ahead.

1188
01:11:00,522 --> 01:11:01,882
Finish your thought, Jesus.

1189
01:11:02,322 --> 01:11:02,942
Sorry, no.

1190
01:11:02,942 --> 01:11:08,822
I don't know if you were going to jump from the spam prevention topic,

1191
01:11:08,822 --> 01:11:19,862
but I can share another thing that I'm working on that is related to the water lie.

1192
01:11:19,862 --> 01:11:34,782
And water lie is an experiment of a relay that is moderated by the social dynamics of these scores and these web of trust things.

1193
01:11:34,782 --> 01:11:50,002
Because basically, I picked the example of Pip from the relay framework that he had for creating relays.

1194
01:11:51,002 --> 01:11:52,562
And he had an example there.

1195
01:11:53,342 --> 01:11:59,542
And that is basically a bucket algorithm for spam prevention and rate limiting.

1196
01:11:59,542 --> 01:12:04,862
then I took that example

1197
01:12:04,862 --> 01:12:11,422
I refactored it to work with later

1198
01:12:11,422 --> 01:12:15,282
and then what I got is a relay

1199
01:12:15,282 --> 01:12:23,282
that doesn't declare or set very hard rules

1200
01:12:23,962 --> 01:12:27,682
or specific rules for who can publish or what not

1201
01:12:27,682 --> 01:12:35,702
and it is moderated by the social dynamics that are expressed as numbers or ranks

1202
01:12:35,702 --> 01:12:38,742
that comes from relator in this case.

1203
01:12:39,102 --> 01:12:44,942
So the bucket algorithm is basically imagine that you have a bucket

1204
01:12:44,942 --> 01:12:52,082
and the capacity of the bucket is the capacity that you have to publish in this case in the relay.

1205
01:12:53,042 --> 01:12:55,542
You have a refill rate.

1206
01:12:55,542 --> 01:13:02,022
okay and that refill rate if you for example spend all the capacity of your

1207
01:13:02,022 --> 01:13:12,262
bucket it will be refilled at a constant rate so what this relay is doing the

1208
01:13:12,262 --> 01:13:20,342
water relay that I'm running a public instance at water.relator.hyc

1209
01:13:20,342 --> 01:13:37,682
What it's doing is that when you send an event, the relay is contacting with the relator, getting the score or the rank for that pubkey and determining the size of the bucket.

1210
01:13:37,682 --> 01:13:40,042
so if you are a reputable

1211
01:13:40,042 --> 01:13:41,182
pubkey

1212
01:13:41,182 --> 01:13:44,382
with a high score

1213
01:13:44,382 --> 01:13:46,402
you're going to get a big

1214
01:13:46,402 --> 01:13:47,982
bucket, let's say

1215
01:13:47,982 --> 01:13:50,542
thousands of posts a day

1216
01:13:50,542 --> 01:13:52,582
and

1217
01:13:52,582 --> 01:13:54,342
if you are a non-reputable

1218
01:13:54,342 --> 01:13:56,482
or a pubkey

1219
01:13:56,482 --> 01:13:58,342
with a very low rank

1220
01:13:58,342 --> 01:14:00,542
you will have

1221
01:14:00,542 --> 01:14:02,102
less capacity to

1222
01:14:02,102 --> 01:14:04,142
chat

1223
01:14:04,142 --> 01:14:05,202
or to publish

1224
01:14:05,202 --> 01:14:07,622
but, for part

1225
01:14:07,622 --> 01:14:16,602
and if you have a zero rank you're still allowed to publish just that you are restricted to kind

1226
01:14:16,602 --> 01:14:23,422
ones and kind ones without links in this case because I noticed that this is one of the the

1227
01:14:23,422 --> 01:14:30,322
shape of the spans of the spam in Nocer is kind ones with with loads of links and things or

1228
01:14:30,322 --> 01:14:39,802
photographs or images or media. Basically, pubkeys with rank zero are still able to publish

1229
01:14:39,802 --> 01:14:48,762
just to allow new people to solve the bootstrapping problem, where a new pubkey that doesn't

1230
01:14:48,762 --> 01:14:54,442
have a sociograph or someone that doesn't have any of these components that no one knows

1231
01:14:54,442 --> 01:14:59,302
can just publish a GM, for example, or any kind of node

1232
01:14:59,302 --> 01:15:01,682
and start to create connections.

1233
01:15:02,982 --> 01:15:07,702
You know, as that unknown pubkey start to create connections

1234
01:15:07,702 --> 01:15:11,782
and start to follow people and people start to follow that pubkey,

1235
01:15:12,602 --> 01:15:14,822
the rank will evolve

1236
01:15:14,822 --> 01:15:19,282
and the size of the bucket will evolve as well.

1237
01:15:19,282 --> 01:15:22,242
So the publish capacity will evolve with that.

1238
01:15:22,242 --> 01:15:25,162
that is the concept

1239
01:15:25,162 --> 01:15:27,022
the experiment behind the

1240
01:15:27,022 --> 01:15:29,142
waterline which is

1241
01:15:29,142 --> 01:15:30,142
this

1242
01:15:30,142 --> 01:15:33,182
moderation by social

1243
01:15:33,182 --> 01:15:34,202
dynamics basically

1244
01:15:34,202 --> 01:15:37,042
and this logic

1245
01:15:37,042 --> 01:15:38,862
lives on the relay

1246
01:15:38,862 --> 01:15:41,062
for, ok

1247
01:15:41,062 --> 01:15:41,962
that's interesting

1248
01:15:41,962 --> 01:15:45,122
yeah it's a very decoupled

1249
01:15:45,122 --> 01:15:46,942
architecture because you have the relay

1250
01:15:46,942 --> 01:15:48,382
in one side

1251
01:15:48,382 --> 01:15:50,942
which is just cares

1252
01:15:50,942 --> 01:15:52,642
about Relay stuff.

1253
01:15:53,482 --> 01:15:54,982
And in the other side, you have Relator

1254
01:15:54,982 --> 01:15:56,882
that is running as a separate service

1255
01:15:56,882 --> 01:15:58,402
through ContextVM.

1256
01:15:59,342 --> 01:16:01,242
And the Relay can basically,

1257
01:16:01,582 --> 01:16:03,462
when it have to request

1258
01:16:03,462 --> 01:16:05,562
a new rank computation or something,

1259
01:16:06,282 --> 01:16:07,522
it use ContextVM,

1260
01:16:07,882 --> 01:16:08,762
gets the rank,

1261
01:16:09,062 --> 01:16:12,062
and use that rank for this bucket algorithm.

1262
01:16:13,222 --> 01:16:15,882
So they are very decoupled things.

1263
01:16:16,702 --> 01:16:17,702
And for example,

1264
01:16:17,702 --> 01:16:18,902
if you want to run

1265
01:16:18,902 --> 01:16:22,262
a relator instance

1266
01:16:22,262 --> 01:16:24,942
and you run a waterline instance,

1267
01:16:25,042 --> 01:16:26,102
you can connect both

1268
01:16:26,102 --> 01:16:29,822
or do any kind of combination

1269
01:16:29,822 --> 01:16:31,022
in that sense.

1270
01:16:32,702 --> 01:16:32,902
Yeah.

1271
01:16:34,362 --> 01:16:36,742
Yeah, that's super interesting, Jesus.

1272
01:16:37,082 --> 01:16:37,662
So let's actually,

1273
01:16:37,762 --> 01:16:38,642
so that ties into

1274
01:16:38,642 --> 01:16:40,762
the question I was about to ask you

1275
01:16:40,762 --> 01:16:42,582
before you talked about this,

1276
01:16:42,582 --> 01:16:43,202
which is,

1277
01:16:45,162 --> 01:16:45,742
you know, this is,

1278
01:16:45,942 --> 01:16:46,942
people can say,

1279
01:16:47,122 --> 01:17:00,024
now this might not be true But the perception of something like this is you doing some kind of rationing right This bucket size based on score Similarly on Amethyst if you put a number on someone face it not very nice right

1280
01:17:00,044 --> 01:17:01,584
It's like this is a social credit score.

1281
01:17:02,064 --> 01:17:11,024
And I think, you know, a lot of us who are working in this world, we know that it's not, it's all personalized, right?

1282
01:17:11,024 --> 01:17:17,924
So all of these scores are calculated from a point of view of the individual who's requesting the scores.

1283
01:17:18,164 --> 01:17:18,944
It's not being assigned.

1284
01:17:19,064 --> 01:17:20,744
Amethyst is not giving you a score.

1285
01:17:20,884 --> 01:17:23,244
Relator is not giving you a score.

1286
01:17:23,384 --> 01:17:29,404
Relator is just providing the mathematical framework for a user to calculate a score from their perspective.

1287
01:17:30,564 --> 01:17:31,344
Yeah, and it's transparent.

1288
01:17:31,744 --> 01:17:32,744
The algorithm is transparent.

1289
01:17:32,984 --> 01:17:38,624
And the components that compose that rank, final rank, is transparent.

1290
01:17:40,064 --> 01:17:40,544
Right.

1291
01:17:40,544 --> 01:17:43,864
Right. But what, you know, we can explain that.

1292
01:17:43,944 --> 01:17:49,384
But like to an average user, non-technical user, they come in and let's say they're new to Nostra.

1293
01:17:49,564 --> 01:17:53,064
And they're like, well, your bucket is really small because no one knows you.

1294
01:17:53,484 --> 01:17:55,524
And I'm like, my God, I'm being rationed.

1295
01:17:55,824 --> 01:17:58,804
Then they go to Amethyst. Sorry about that. That's my dog.

1296
01:17:59,444 --> 01:18:06,124
Then they go to Amethyst and they see a number on their face or on people's faces.

1297
01:18:06,124 --> 01:18:09,584
And like, what is this? It's like social credit score. I'm being rationed here.

1298
01:18:09,584 --> 01:18:18,444
How would you sort of talk to a non-technical new user and just maybe, you know, help them through the sphere?

1299
01:18:19,844 --> 01:18:26,584
Yeah. So I think that my rationale here is, you know, trust is a scaling solution.

1300
01:18:28,224 --> 01:18:37,704
Thanks to trust, we can go further scale system, especially decentralized systems, right?

1301
01:18:37,704 --> 01:18:48,344
Because if you have a centralized platform that manages that for you and is totally opaque,

1302
01:18:50,824 --> 01:19:00,264
yeah, I mean, that is a very dark pattern, right?

1303
01:19:00,264 --> 01:19:06,084
but we have to recognize that trust is a scaling solution

1304
01:19:06,084 --> 01:19:10,244
to basically perform actions between individuals

1305
01:19:10,244 --> 01:19:13,164
ahead from its own trust

1306
01:19:13,164 --> 01:19:15,684
or its own vision of the world

1307
01:19:15,684 --> 01:19:18,584
it allows me to collaborate with you for example

1308
01:19:18,584 --> 01:19:20,344
I don't know you personally

1309
01:19:20,344 --> 01:19:25,564
but I know people that are my friends that trust you

1310
01:19:25,564 --> 01:19:29,604
so that trust that my friend has

1311
01:19:29,604 --> 01:19:32,844
for you allows me to trust you.

1312
01:19:32,844 --> 01:19:36,724
So it's just my trust has scale

1313
01:19:36,724 --> 01:19:39,844
and we can collaborate without friction

1314
01:19:40,484 --> 01:19:43,064
or knowing that we want to collaborate

1315
01:19:43,064 --> 01:19:45,764
with the person that we want to collaborate

1316
01:19:45,764 --> 01:19:48,584
and thanks to this trust.

1317
01:19:49,264 --> 01:19:51,104
This is especially true, I think,

1318
01:19:51,524 --> 01:19:55,004
for, you know, protocol like NOSER

1319
01:19:55,004 --> 01:20:00,224
where everything is scattered,

1320
01:20:01,764 --> 01:20:04,564
it's centralized, there is no central authorities.

1321
01:20:06,404 --> 01:20:07,864
If we don't have this,

1322
01:20:08,424 --> 01:20:10,604
or if we don't have a way to express this,

1323
01:20:11,024 --> 01:20:12,464
to express this trust,

1324
01:20:12,684 --> 01:20:14,924
we can't escape relations between people

1325
01:20:14,924 --> 01:20:18,344
and everything feels death in that sense.

1326
01:20:18,484 --> 01:20:20,984
Because you can't solve the problem.

1327
01:20:21,124 --> 01:20:23,024
It's a chicken and egg problem, right?

1328
01:20:23,024 --> 01:20:27,104
You first have to interact, people have to see you.

1329
01:20:29,904 --> 01:20:36,024
Thanks to trust, we can create staff that are more advanced

1330
01:20:36,024 --> 01:20:41,644
and can surpass the limits of the decentralized environments like this.

1331
01:20:42,344 --> 01:20:42,624
Like Nasser.

1332
01:20:44,604 --> 01:20:46,344
Especially, it's true because...

1333
01:20:46,344 --> 01:20:48,244
No, no, go ahead. Go ahead, Jesus.

1334
01:20:48,244 --> 01:20:50,084
no it's just that

1335
01:20:50,084 --> 01:20:52,404
you know

1336
01:20:52,404 --> 01:20:54,424
a rank a number can be scary

1337
01:20:54,424 --> 01:20:56,304
and can feel like a social credit

1338
01:20:56,304 --> 01:20:58,464
but I think that the important

1339
01:20:58,464 --> 01:21:00,444
part here is to understand

1340
01:21:00,444 --> 01:21:01,324
that

1341
01:21:01,324 --> 01:21:04,264
if that rank is produced

1342
01:21:04,264 --> 01:21:06,424
by the perspective

1343
01:21:06,424 --> 01:21:08,184
of someone that is

1344
01:21:08,184 --> 01:21:10,444
an individual as well

1345
01:21:10,444 --> 01:21:12,144
as you and it has its own

1346
01:21:12,144 --> 01:21:14,224
criteria to determine what

1347
01:21:14,224 --> 01:21:16,144
it wants to trust and what not

1348
01:21:16,144 --> 01:21:18,504
and all of that is

1349
01:21:18,504 --> 01:21:20,904
transparent in the sense that

1350
01:21:20,904 --> 01:21:22,944
you understand what is behind that

1351
01:21:22,944 --> 01:21:25,004
number or what components

1352
01:21:25,004 --> 01:21:26,744
have been taken

1353
01:21:26,744 --> 01:21:28,684
into account to basically

1354
01:21:28,684 --> 01:21:30,744
get that output

1355
01:21:30,744 --> 01:21:32,944
that

1356
01:21:32,944 --> 01:21:34,704
from my point of view that is

1357
01:21:34,704 --> 01:21:36,964
much less scary and not

1358
01:21:36,964 --> 01:21:38,444
scary at all because it's

1359
01:21:38,444 --> 01:21:39,524
basically

1360
01:21:39,524 --> 01:21:42,244
something natural and organic

1361
01:21:42,244 --> 01:21:43,384
in human relations

1362
01:21:43,384 --> 01:21:48,444
like my perspective is something relative to me

1363
01:21:48,444 --> 01:21:52,844
if I choose how to model that

1364
01:21:52,844 --> 01:21:54,864
it's my decision

1365
01:21:54,864 --> 01:21:56,524
and you can see that

1366
01:21:56,524 --> 01:21:58,244
you can agree with that

1367
01:21:58,244 --> 01:22:00,184
or not

1368
01:22:00,184 --> 01:22:01,524
there is no problem

1369
01:22:01,524 --> 01:22:02,804
you can run your own

1370
01:22:02,804 --> 01:22:05,364
there is nothing imposed top down

1371
01:22:05,364 --> 01:22:08,084
and everything is transparent

1372
01:22:08,084 --> 01:22:11,004
and I think that is the important thing

1373
01:22:11,004 --> 01:22:13,804
to educate someone who might be new to this,

1374
01:22:13,864 --> 01:22:17,864
who might have seen how centralized systems impose these cores

1375
01:22:17,864 --> 01:22:20,264
or manifest these cores.

1376
01:22:21,044 --> 01:22:24,004
Completely agree there on the education part.

1377
01:22:24,984 --> 01:22:27,704
And also agree with your earlier point,

1378
01:22:28,604 --> 01:22:32,524
which is I think that the user experience on NOSTA

1379
01:22:32,524 --> 01:22:36,784
has been suffering from spam and just poor discovery

1380
01:22:36,784 --> 01:22:38,024
and poor curation.

1381
01:22:38,024 --> 01:22:45,264
because these trust-based solutions, personalized trust-based solutions, have not existed.

1382
01:22:45,964 --> 01:22:51,044
Which leads me to, I guess, a follow-on question, which is,

1383
01:22:51,304 --> 01:22:53,304
you've been here three years, I've been here three years.

1384
01:22:53,444 --> 01:22:56,044
You know, a lot of us have been here for that long.

1385
01:22:56,604 --> 01:23:00,084
Why has it taken this long for this realization to come that,

1386
01:23:00,084 --> 01:23:07,184
look, we need this layer of trust to actually make NOSTA meaningful and usable for most people?

1387
01:23:08,024 --> 01:23:15,304
I think that is the uniqueness of the challenge, you know.

1388
01:23:17,904 --> 01:23:22,364
Before Nosher, the most similar thing we had is PGP, right?

1389
01:23:23,264 --> 01:23:27,384
And PGP in spirit is very similar to Nosher.

1390
01:23:28,244 --> 01:23:34,504
And they were the ones that came up with this concept of Web of Trust.

1391
01:23:34,504 --> 01:23:57,404
And Web of Trust for them was basically key parties where people in real life, in mid-space, show up with the fingerprint of their public keys, basically to allow their peers to establish a relation between the key and the person that is behind that.

1392
01:23:58,824 --> 01:24:04,424
That was called Web of Trust and came from that epoch, from that time.

1393
01:24:04,504 --> 01:24:22,804
That was a unique challenge and I think that we are reviving that in Nozer with even more uniqueness because we surpassed some of the limitations that PGP had.

1394
01:24:22,804 --> 01:24:32,704
because basically to use PGP you have to use a medium to transmit an encrypted message.

1395
01:24:33,604 --> 01:24:41,844
I think that the most popular medium was email, basically to encrypt the emails between people.

1396
01:24:41,844 --> 01:24:46,604
but Noceris is a

1397
01:24:46,604 --> 01:24:47,804
decentralized

1398
01:24:47,804 --> 01:24:51,364
protocol

1399
01:24:51,364 --> 01:24:52,764
where people

1400
01:24:52,764 --> 01:24:55,804
run on mpups that are just numbers

1401
01:24:55,804 --> 01:24:57,544
that anyone can generate for free

1402
01:24:57,544 --> 01:24:59,204
can just take

1403
01:24:59,204 --> 01:25:02,044
and sign messages

1404
01:25:02,044 --> 01:25:04,244
and publish them in relays

1405
01:25:04,244 --> 01:25:05,724
and

1406
01:25:05,724 --> 01:25:08,004
I think that the trust

1407
01:25:08,004 --> 01:25:09,604
problem is

1408
01:25:09,604 --> 01:25:16,024
such unique or have present unique challenges for an environment like Nosser.

1409
01:25:16,824 --> 01:25:26,164
And I think that there is a lot there because the why behind this taking so long.

1410
01:25:26,644 --> 01:25:33,904
Because we need to realize things before and also we need data basically to have to compute things.

1411
01:25:34,444 --> 01:25:37,284
Because it's also a chicken and egg problem.

1412
01:25:37,284 --> 01:25:42,744
but now we have all this history behind

1413
01:25:42,744 --> 01:25:47,904
and people can find different ways to represent trust

1414
01:25:47,904 --> 01:25:50,944
and the data wasn't present before.

1415
01:25:51,364 --> 01:25:54,704
So the uniqueness of the challenge

1416
01:25:54,704 --> 01:25:56,924
and the amount of data present,

1417
01:25:57,544 --> 01:26:01,104
I think that is the reason why this took so long.

1418
01:26:02,364 --> 01:26:04,784
Yeah, I think you hit the nail on the head, Jesus.

1419
01:26:05,504 --> 01:26:09,624
I think it took this long for people to actually realize how to solve it.

1420
01:26:09,624 --> 01:26:16,204
And even if they had realized this two years ago, right, how best to approach this, the data wasn't there.

1421
01:26:16,784 --> 01:26:22,984
So I think it's a nice confluence of these two things that are happening, which is people have given it some thought over the last three years.

1422
01:26:23,244 --> 01:26:29,564
And I think people, as you can see, like with Relator and Brainstorm, it's kind of converging on a similar type thing.

1423
01:26:29,564 --> 01:26:35,124
personalized scores using an extensible set of signals, fully transparent.

1424
01:26:35,364 --> 01:26:39,024
You apply a weight based on distance, based on the type of signal.

1425
01:26:39,544 --> 01:26:41,144
Again, the weights are transparent.

1426
01:26:41,564 --> 01:26:45,524
You can, and I'm sure with Relator, you can change the weights if you wanted to, right,

1427
01:26:45,644 --> 01:26:46,824
on each of these signals.

1428
01:26:47,384 --> 01:26:50,084
I think that, so, you know, you're seeing that happening with Relator.

1429
01:26:50,184 --> 01:26:51,304
You're seeing that happening with Brainstorm.

1430
01:26:51,304 --> 01:26:56,764
I'm sure the next one, that next provider comes out will, you know, have a, you know,

1431
01:26:56,764 --> 01:27:01,724
that approach to transparency and portability,

1432
01:27:01,904 --> 01:27:03,764
composability, and so on, extensibility.

1433
01:27:05,524 --> 01:27:07,824
So I think that realization,

1434
01:27:08,944 --> 01:27:11,504
it's almost a collective realization that's happening now.

1435
01:27:11,964 --> 01:27:15,364
It's taken three years, and then we have the data to act on it.

1436
01:27:16,584 --> 01:27:17,684
Yeah, yeah, exactly.

1437
01:27:18,684 --> 01:27:19,064
Exactly.

1438
01:27:19,064 --> 01:27:22,864
I really believe that was one of the main reasons.

1439
01:27:22,864 --> 01:27:44,806
Also because you know exactly for the same reason of the uniqueness of the challenge Nostar itself is something new it just has four years something very young very young protocol and it really presents challenges in its topology and how it works and so on

1440
01:27:44,806 --> 01:28:00,946
So I think that it's a combination of all of that, but principally the trust, how to express it, we are understanding that now, and also the data, the amount of data that was there.

1441
01:28:00,946 --> 01:28:11,506
talking about something that really excites me that is coming to Relator is basically a new

1442
01:28:11,506 --> 01:28:21,446
system that I'm creating for plugins or for these two sorry so basically to configure what are the

1443
01:28:21,446 --> 01:28:29,706
signals that you take to for the for the computations because currently Relator allows you to

1444
01:28:29,706 --> 01:28:35,886
to modify what are the signals that you take for the computation,

1445
01:28:36,066 --> 01:28:37,786
the signal that we talked about before,

1446
01:28:38,366 --> 01:28:43,966
that currently by default are if the user has a relay list,

1447
01:28:43,966 --> 01:28:48,806
if the user has a lining address set in their profiles,

1448
01:28:49,606 --> 01:28:52,546
if the ones that we talked about before.

1449
01:28:53,206 --> 01:28:57,986
And developers could modify and add new validations,

1450
01:28:57,986 --> 01:29:04,606
but in the current version of Relator that would mean to modify the source code of Relator

1451
01:29:04,606 --> 01:29:12,046
which nowadays is fairly easy with LLMs but still presenting friction

1452
01:29:12,046 --> 01:29:18,206
I'm very excited for a plugin system that I'm developing for Relator

1453
01:29:18,206 --> 01:29:24,806
which is based on an expression language that is called ELO or ELO

1454
01:29:24,806 --> 01:29:38,326
and it basically allows me to design a system where these signals can be expressed in very concise expressions

1455
01:29:38,326 --> 01:29:42,446
that can be bundled as NOSER events.

1456
01:29:42,446 --> 01:29:51,726
So basically the idea is that anyone can create these programs for signals,

1457
01:29:51,726 --> 01:29:54,726
publish them on Nozir

1458
01:29:54,726 --> 01:29:58,526
and people can use them

1459
01:29:58,526 --> 01:30:00,286
in their relator instances

1460
01:30:00,286 --> 01:30:04,626
so if I'm a relator operator

1461
01:30:04,626 --> 01:30:06,566
starting to decide

1462
01:30:06,566 --> 01:30:08,786
what trust means for me

1463
01:30:08,786 --> 01:30:11,066
or what the rank

1464
01:30:11,066 --> 01:30:13,586
that a relator is outputting

1465
01:30:13,586 --> 01:30:15,166
what that means

1466
01:30:15,166 --> 01:30:18,106
I will be able to go to Nozir

1467
01:30:18,106 --> 01:30:21,826
in a marketplace manner

1468
01:30:21,826 --> 01:30:26,206
and see what validators or what things are there,

1469
01:30:26,586 --> 01:30:27,886
what people have been created,

1470
01:30:29,506 --> 01:30:31,986
just with the ease of a click

1471
01:30:31,986 --> 01:30:37,226
or configure the algorithm

1472
01:30:37,226 --> 01:30:40,726
and set the weights for all those signals.

1473
01:30:40,726 --> 01:30:44,646
So this effectively creates a marketplace of these signals

1474
01:30:44,646 --> 01:30:53,586
and it allows people to create, to curate, to share, to use.

1475
01:30:54,666 --> 01:31:02,086
This excites me a lot because I think that this is the materialization of the vision behind Relator

1476
01:31:02,086 --> 01:31:04,866
and with a good experience for the user

1477
01:31:04,866 --> 01:31:15,346
because you will be able to determine, tune, and understand why the rank

1478
01:31:15,346 --> 01:31:17,946
or what is the rank that is coming out from Relator.

1479
01:31:17,946 --> 01:31:24,566
So for example, if I'm publishing a signal or an expression

1480
01:31:24,566 --> 01:31:34,406
that measures the amount of GMs or the amount of subs that a user received,

1481
01:31:34,866 --> 01:31:38,806
I can just pick those, configure them in Relator,

1482
01:31:39,506 --> 01:31:41,446
because they are no-serie events,

1483
01:31:41,626 --> 01:31:43,926
and Relator can just fetch them from Relator,

1484
01:31:44,926 --> 01:31:47,926
and use them for the computations.

1485
01:31:49,386 --> 01:31:50,826
I think that's really cool.

1486
01:31:52,566 --> 01:31:54,146
Is this feature out yet?

1487
01:31:55,266 --> 01:31:55,526
No.

1488
01:31:56,446 --> 01:32:01,446
No, I was trying to put it together for this podcast,

1489
01:32:01,446 --> 01:32:06,866
but I was thrilled by different things, by work.

1490
01:32:07,506 --> 01:32:13,546
Also, yesterday we released a new CLI for a set of skills for ContextVM,

1491
01:32:13,666 --> 01:32:15,846
for developing things on ContextVM.

1492
01:32:17,886 --> 01:32:23,866
This new feature for Relator needs a bit more of polishing.

1493
01:32:24,706 --> 01:32:26,686
It's basically to provide... It's working already.

1494
01:32:27,086 --> 01:32:28,546
It's totally feasible.

1495
01:32:28,546 --> 01:32:33,226
I have tests and indeed makes Relator even more efficient and performance.

1496
01:32:35,166 --> 01:32:37,286
But it's not released yet.

1497
01:32:37,966 --> 01:32:44,646
I need to polish the user experience in the sense of publishing

1498
01:32:44,646 --> 01:32:48,886
and setting up these signals from Nocer.

1499
01:32:49,506 --> 01:32:51,046
But it's coming along nicely.

1500
01:32:52,486 --> 01:32:55,646
Nice. Yeah, certainly something to look forward to.

1501
01:32:55,646 --> 01:32:57,146
Jesus

1502
01:32:57,146 --> 01:32:58,946
this has been great

1503
01:32:58,946 --> 01:33:00,926
great conversation

1504
01:33:00,926 --> 01:33:02,386
thank you for educating us

1505
01:33:02,386 --> 01:33:04,946
the audience about Relator

1506
01:33:04,946 --> 01:33:07,046
and all the work that you've done

1507
01:33:07,046 --> 01:33:08,226
on NOSTA

1508
01:33:08,226 --> 01:33:10,886
with Context VM, DVM-CP

1509
01:33:10,886 --> 01:33:12,106
maybe one day we'll see

1510
01:33:12,106 --> 01:33:12,966
Coloria

1511
01:33:12,966 --> 01:33:16,286
I think that

1512
01:33:16,286 --> 01:33:18,226
it's going to be

1513
01:33:18,226 --> 01:33:20,286
everything part of NOSTA

1514
01:33:20,286 --> 01:33:22,026
and when I

1515
01:33:22,026 --> 01:33:23,626
revive NOSTA

1516
01:33:23,626 --> 01:33:26,066
it's going to come with these features.

1517
01:33:27,886 --> 01:33:28,886
So, yeah.

1518
01:33:29,706 --> 01:33:33,526
Relator scores, kill the zombies with all the relator scores,

1519
01:33:33,646 --> 01:33:34,346
and that's going to be great.

1520
01:33:35,806 --> 01:33:37,726
Yeah, exactly.

1521
01:33:37,926 --> 01:33:40,766
I mean, Nosser is very fun, definitely.

1522
01:33:41,586 --> 01:33:48,466
If I can say something from this time working on Nosser,

1523
01:33:49,386 --> 01:33:52,186
it is very fun to develop on Nosser.

1524
01:33:52,186 --> 01:33:54,646
it's also quite frustrating

1525
01:33:54,646 --> 01:33:55,246
sometimes

1526
01:33:55,246 --> 01:33:58,246
because the challenges

1527
01:33:58,246 --> 01:33:59,306
that it presents

1528
01:33:59,306 --> 01:34:02,526
how standards

1529
01:34:02,526 --> 01:34:04,266
are standardized

1530
01:34:04,266 --> 01:34:05,826
talking about MIPS

1531
01:34:05,826 --> 01:34:08,026
and so on

1532
01:34:08,026 --> 01:34:09,906
so sometimes it's very frustrating

1533
01:34:09,906 --> 01:34:11,566
very frustrating

1534
01:34:11,566 --> 01:34:13,446
but very fun as well

1535
01:34:13,446 --> 01:34:15,126
so it's a balance

1536
01:34:15,126 --> 01:34:16,906
no for sure

1537
01:34:16,906 --> 01:34:19,886
it's the emergent and messy

1538
01:34:19,886 --> 01:34:21,866
consensus of being part of

1539
01:34:21,866 --> 01:34:23,706
a decentralized

1540
01:34:23,706 --> 01:34:25,146
group.

1541
01:34:26,406 --> 01:34:28,406
Look, I think people have the right attitude

1542
01:34:28,406 --> 01:34:30,486
here, because there's two ways of looking

1543
01:34:30,486 --> 01:34:32,186
at it. You can have a decentralized

1544
01:34:32,186 --> 01:34:34,446
mob, and it's complete

1545
01:34:34,446 --> 01:34:36,506
chaos, or you can

1546
01:34:36,506 --> 01:34:38,486
have a decentralized mob, and it's only a little

1547
01:34:38,486 --> 01:34:39,906
bit of chaos, but mostly fun,

1548
01:34:40,446 --> 01:34:42,186
which thankfully, at least

1549
01:34:42,186 --> 01:34:43,866
until now, that's what Nostro has been.

1550
01:34:45,186 --> 01:34:45,386
Yeah.

1551
01:34:46,646 --> 01:34:48,466
My only critic

1552
01:34:48,466 --> 01:34:50,426
for Nostro is

1553
01:34:50,426 --> 01:34:58,546
that the governance or at least the standards are not easy to navigate.

1554
01:34:58,846 --> 01:35:01,346
If you are someone new, like a new developer,

1555
01:35:01,746 --> 01:35:05,046
trying to figure out how to develop something on Nocer,

1556
01:35:05,686 --> 01:35:08,186
it's going to have a hard time trying to navigate Nibs

1557
01:35:08,186 --> 01:35:10,146
and to understand how to do things.

1558
01:35:10,846 --> 01:35:15,226
I have expertise now after three years working on that,

1559
01:35:15,366 --> 01:35:20,026
working on this, and I understand how things work and so on.

1560
01:35:20,026 --> 01:35:23,866
But yeah, someone new wanting to develop something in Nozir,

1561
01:35:24,286 --> 01:35:26,406
it's going to you see a lot of mess.

1562
01:35:27,406 --> 01:35:29,806
And that presents a lot of friction.

1563
01:35:31,546 --> 01:35:36,906
Yeah, also I wrote an article some time ago,

1564
01:35:36,906 --> 01:35:39,446
I think during Sovereign Engineering 5,

1565
01:35:40,526 --> 01:35:42,786
that is called Enemies of Nozir.

1566
01:35:43,726 --> 01:35:48,466
It's a reflection about open source protocols.

1567
01:35:50,026 --> 01:35:51,846
and how they get captured,

1568
01:35:52,986 --> 01:35:57,546
and how the same history can repeat on Nostra.

1569
01:35:59,446 --> 01:36:03,026
So I don't know if you read that, but...

1570
01:36:03,026 --> 01:36:05,846
I remember seeing it.

1571
01:36:05,886 --> 01:36:06,946
It was a while back, right?

1572
01:36:07,846 --> 01:36:09,706
Yeah, some months ago, yeah.

1573
01:36:10,646 --> 01:36:11,986
I'll tell you what, Jesus,

1574
01:36:12,246 --> 01:36:14,866
I will put all of those links in the show notes,

1575
01:36:14,866 --> 01:36:16,546
and I'll certainly read it as well,

1576
01:36:16,626 --> 01:36:17,506
The Enemies of Nostra.

1577
01:36:17,926 --> 01:36:19,986
I'll link that, I'll link ContextVM,

1578
01:36:20,026 --> 01:36:24,866
I'll link Relator, Nostri, anything else you want me to link.

1579
01:36:24,986 --> 01:36:26,946
I'll put all of that in the show notes

1580
01:36:26,946 --> 01:36:30,566
so that our audience can check it out as well.

1581
01:36:31,866 --> 01:36:33,366
No, that sounds good.

1582
01:36:34,266 --> 01:36:34,626
Awesome.

1583
01:36:35,546 --> 01:36:38,086
All right, Jesus, again, thank you.

1584
01:36:38,586 --> 01:36:40,766
Great conversation, very educational.

1585
01:36:40,906 --> 01:36:44,166
Thank you for everything you do to make Nostri a better place,

1586
01:36:44,906 --> 01:36:46,966
make it more fun despite the challenges.

1587
01:36:46,966 --> 01:36:48,426
Thank you for being patient.

1588
01:36:48,426 --> 01:36:53,046
and not running away and going crazy.

1589
01:36:53,406 --> 01:36:54,326
It's worth it.

1590
01:36:54,566 --> 01:36:55,246
It's worth it.

1591
01:36:55,706 --> 01:36:58,666
It's worth it because we are leaning towards

1592
01:36:58,666 --> 01:37:04,086
a very scary thing.

1593
01:37:04,706 --> 01:37:06,086
But yeah, thank you so much.

1594
01:37:06,206 --> 01:37:07,906
I appreciate it so much, your words.

1595
01:37:09,186 --> 01:37:11,106
Yeah, let's continue building.

1596
01:37:11,866 --> 01:37:13,526
Let's continue building indeed.

1597
01:37:13,526 --> 01:37:17,266
Thank you to our live stream audience for listening.

1598
01:37:17,266 --> 01:37:18,566
Thank you for the zaps.

1599
01:37:18,806 --> 01:37:20,566
If you are listening to this recording,

1600
01:37:20,786 --> 01:37:23,986
I hope you're doing so on a modern Podcasting 2.0 app

1601
01:37:23,986 --> 01:37:25,126
such as Fountain.

1602
01:37:25,846 --> 01:37:27,966
If you found value in this conversation,

1603
01:37:28,186 --> 01:37:29,906
if it gave you a new mental model,

1604
01:37:30,126 --> 01:37:31,226
a moment of clarity,

1605
01:37:31,826 --> 01:37:34,226
or just a respite from the noise,

1606
01:37:34,586 --> 01:37:36,926
then please consider returning the value.

1607
01:37:37,466 --> 01:37:40,406
You can stream sats as you listen on Fountain

1608
01:37:40,406 --> 01:37:43,466
or another Podcasting 2.0 app,

1609
01:37:43,886 --> 01:37:46,626
or you could become a monthly subscriber

1610
01:37:46,626 --> 01:37:49,066
to keep the signal strong.

1611
01:37:50,146 --> 01:37:51,386
Thank you, folks.

1612
01:37:51,926 --> 01:37:52,806
See you next time.
