1
00:00:00,000 --> 00:00:08,080
Welcome to Pleb Chain Radio, a live show brought to you by Plebs for Plebs, which focuses

2
00:00:08,080 --> 00:00:10,940
on the intersection of NOSTER and Bitcoin protocols.

3
00:00:11,700 --> 00:00:16,700
Join QW and Avi as they run down the weekly news and developments, breaking down the current

4
00:00:16,700 --> 00:00:21,600
thing and the future frontier with the foundation of decentralization, the builders, thinkers,

5
00:00:21,840 --> 00:00:22,780
doers, and plebs.

6
00:00:25,600 --> 00:00:27,740
All right, we are live.

7
00:00:27,740 --> 00:00:43,740
Welcome gentle plebs to the lightning-laced airwaves. Today is Friday the 25th of July and it is episode 122 of Pleb Chain Radio.

8
00:00:43,740 --> 00:00:52,440
It is 2.06pm on the east coast of the United States at the time of recording. We have a fun show ahead of you.

9
00:00:52,440 --> 00:01:08,200
Kieran, the creator of Zap.Stream and Snot Social, a man who has been physically, not physically, but digitally under attack for the last couple of weeks.

10
00:01:08,800 --> 00:01:12,580
He will talk about that and much, much more.

11
00:01:12,580 --> 00:01:19,920
and a reminder folks if you are listening to this show on apple or spotify first of all thank you for

12
00:01:19,920 --> 00:01:26,220
listening but i would urge you to hit pause and switch over to the fountain podcasting app where

13
00:01:26,220 --> 00:01:32,240
you can earn some sats and support the value for value revolution as you listen and while you're

14
00:01:32,240 --> 00:01:38,880
there if you can hit that subscribe button we would genuinely appreciate it that would unlock

15
00:01:38,880 --> 00:01:41,980
exclusive bonus content for you.

16
00:01:42,940 --> 00:01:45,920
This show is streamed live on zap.stream

17
00:01:45,920 --> 00:01:49,580
and any other Nostra client that supports streaming

18
00:01:49,580 --> 00:01:53,240
such as Amethyst and Nostur.

19
00:01:54,040 --> 00:01:56,300
And QW, you've been paying attention

20
00:01:56,300 --> 00:01:58,620
to Bitcoin and Nostra culture in the last week.

21
00:01:58,840 --> 00:01:59,900
What have you witnessed?

22
00:02:02,180 --> 00:02:04,720
Yeah, Avi, I, what?

23
00:02:05,280 --> 00:02:07,020
Something interesting happened yesterday

24
00:02:07,020 --> 00:02:08,600
and I didn't think it was really possible.

25
00:02:08,880 --> 00:02:11,440
And I'm curious about your thoughts on it.

26
00:02:12,280 --> 00:02:16,320
Did Starlink go down across the globe?

27
00:02:17,340 --> 00:02:21,260
I thought it was like kind of a decentralized satellite system.

28
00:02:21,780 --> 00:02:22,620
Did you see that?

29
00:02:23,760 --> 00:02:24,900
I did see that.

30
00:02:25,000 --> 00:02:26,280
I didn't dig into it.

31
00:02:26,280 --> 00:02:27,820
I didn't either.

32
00:02:28,020 --> 00:02:31,820
I mean, I guess my assumption would be just kind of like it's a fallback, you know.

33
00:02:32,120 --> 00:02:36,140
Like if you're a Bitcoin miner, you have, oh, I'm on Starlink.

34
00:02:36,140 --> 00:02:42,300
you know and I checked out their Twitter page their X page and most of what they're every

35
00:02:42,300 --> 00:02:50,560
almost every post they say the you know you're reliable internet I just I wonder I mean I didn't

36
00:02:50,560 --> 00:02:54,680
think you know it's one thing if it was a nation that went down like oh it's just down in the

37
00:02:54,680 --> 00:03:00,640
states or the western hemisphere but it was like the whole globe that sounds decentralized Avi

38
00:03:00,640 --> 00:03:03,200
decentralized?

39
00:03:07,080 --> 00:03:13,020
I mean, even when you have that many satellites, it appears you can still go down.

40
00:03:13,840 --> 00:03:20,780
And it really makes me think about anything, because essentially Nostra is a bunch of

41
00:03:20,780 --> 00:03:27,980
satellites, right? A bunch of relays. I don't know if we can ever go down because we truly

42
00:03:27,980 --> 00:03:35,040
are decentralized. But it's interesting in that standpoint. Assumptions are made, but then all of

43
00:03:35,040 --> 00:03:40,560
a sudden the servers go offline and the globe does not have Starlink. So I thought that was an

44
00:03:40,560 --> 00:03:47,840
interesting thing that happened. Another thing is you're at 80% of your funding, Avi, for episode

45
00:03:47,840 --> 00:03:55,520
three of Finding Home. Do you want to talk about that? Yeah. So as I mentioned last week, I launched

46
00:03:55,520 --> 00:03:57,680
a fundraiser on Angor,

47
00:03:57,840 --> 00:04:00,420
which is a new protocol, really.

48
00:04:00,920 --> 00:04:02,040
It's not a platform.

49
00:04:02,220 --> 00:04:03,980
It's a protocol for fundraising,

50
00:04:04,560 --> 00:04:05,720
self-custodial fundraising,

51
00:04:06,020 --> 00:04:08,900
that uses Bitcoin Script and Noster.

52
00:04:10,040 --> 00:04:11,840
It's still new and experimental.

53
00:04:12,620 --> 00:04:16,360
And I had a chat with that team there.

54
00:04:16,540 --> 00:04:17,480
They were super supportive

55
00:04:17,480 --> 00:04:20,940
and want to support their mission.

56
00:04:22,060 --> 00:04:23,640
In fact, we're going to have their CEO,

57
00:04:23,640 --> 00:04:29,460
Dan Gershoni on the show in a month or so to talk about that.

58
00:04:29,660 --> 00:04:32,560
But I did try them out.

59
00:04:32,980 --> 00:04:40,580
And it's a six million sat raise that I'm trying to do for episode three.

60
00:04:41,680 --> 00:04:46,200
And there have been some really generous donors who've come in.

61
00:04:46,200 --> 00:04:51,100
They will, of course, get, as appropriate, the executive producer credit

62
00:04:51,100 --> 00:04:56,080
or the associate producer credit based on what they've donated.

63
00:04:56,780 --> 00:04:58,460
But yes, I am 80% there.

64
00:04:58,980 --> 00:05:01,900
So for those listening, if you want me to get over the line

65
00:05:01,900 --> 00:05:08,520
and film an amazing episode about food, travel, and finding home

66
00:05:08,520 --> 00:05:13,980
in Asuncion, Paraguay this September, I would appreciate your support.

67
00:05:14,900 --> 00:05:18,580
And have you dedicated any of these episodes to me, Avi?

68
00:05:20,200 --> 00:05:20,880
Yet.

69
00:05:21,100 --> 00:05:22,940
Not yet. Not yet.

70
00:05:23,640 --> 00:05:27,220
Okay, soon, soon. The hopium is filling my heart.

71
00:05:28,220 --> 00:05:32,620
Next up, let's see here. It is the 25th of July.

72
00:05:33,160 --> 00:05:37,400
So that would mean in about six days, August 1st.

73
00:05:37,400 --> 00:05:39,620
Well, maybe seven days. I don't know how many days.

74
00:05:39,780 --> 00:05:42,240
But August 1st through 3rd, Lake Satoshi.

75
00:05:43,120 --> 00:05:46,040
It's in Michigan. Get your camping gear.

76
00:05:46,780 --> 00:05:49,620
You know what? This is a big circular economy event.

77
00:05:49,620 --> 00:05:58,580
I've seen pictures, I've been in some of the chats that people are bringing meat from all over the region, vegetables, lots of trading.

78
00:05:59,140 --> 00:06:00,720
This is my kind of event, Avi.

79
00:06:01,300 --> 00:06:08,260
Lots of homesteaders, permacultures bringing all their creativity to camp out on the lake.

80
00:06:08,260 --> 00:06:20,560
I'm curious if Rev Hoddle will have his generator maybe cooling his tent with his new invention, his ASIC cooler.

81
00:06:21,180 --> 00:06:22,400
Curious about that.

82
00:06:22,660 --> 00:06:29,520
But yeah, if I was in the area 100%, I would be going to Lake Satoshi, and it might be even an annual thing.

83
00:06:29,860 --> 00:06:31,520
I'm actually going camping tomorrow, Avi.

84
00:06:32,520 --> 00:06:33,660
I camp in the woods.

85
00:06:33,720 --> 00:06:34,720
You camp under the bridges.

86
00:06:34,720 --> 00:06:36,960
It's a little different, but you know what?

87
00:06:36,960 --> 00:06:38,800
But home is where the heart is.

88
00:06:39,140 --> 00:06:40,160
Sometimes you've got to find it.

89
00:06:41,660 --> 00:06:42,360
That's right.

90
00:06:42,640 --> 00:06:44,480
And oftentimes the heart is under a bridge.

91
00:06:46,080 --> 00:06:51,840
So the sermon today, I've been thinking about this because this week has been a little funny.

92
00:06:52,000 --> 00:06:57,160
I mean, it kind of channels, it's kind of chapter two of Noster is dead.

93
00:06:57,160 --> 00:07:00,740
And I've seen some people that really just focus on stats so much.

94
00:07:00,840 --> 00:07:06,180
They care about how many reactions they got, how many reactions they got this week versus,

95
00:07:06,180 --> 00:07:10,940
you know, last month, you know, maybe they're not being heard. Maybe people are just scrolling

96
00:07:10,940 --> 00:07:16,560
and they're just kind of busy right now. Maybe it's hot summer and they're vacationing or

97
00:07:16,560 --> 00:07:23,900
maybe they're just really tired from a hot day. But the sermon is Nostra's truth beyond need.

98
00:07:24,720 --> 00:07:30,960
And the question is, does Nostra need? No, Nostra doesn't need. Like Bitcoin, it's kin and spirit.

99
00:07:30,960 --> 00:07:37,900
Noster is a tool, forged in freedom, tempered by resilience. It has already succeeded not by

100
00:07:37,900 --> 00:07:45,040
chasing applause, but by existing as a beacon of what's possible. What remains is the froth of

101
00:07:45,040 --> 00:07:50,580
human desires, bubbling up from our restless hearts. Some internally cry out, I want to profit

102
00:07:50,580 --> 00:07:56,240
from Noster. Others lament openly, we need more people, or my voice isn't heard like it used to be.

103
00:07:56,240 --> 00:07:59,620
The chorus repeats, more people, more marketing, more.

104
00:07:59,980 --> 00:08:07,000
But let's be clear, NOSTER, this open, borderless, censorship-resistant, permissionless protocol, cares nothing for growth.

105
00:08:07,380 --> 00:08:13,960
It stands indifferent in our cravings if it's we, the people of this network, who yearn, hunger, who demand for more.

106
00:08:15,180 --> 00:08:16,540
But are we ready for more, Avi?

107
00:08:16,780 --> 00:08:21,400
If a stampede of users flooded NOSTER tomorrow, would its foundation hold strong?

108
00:08:21,560 --> 00:08:23,040
Is it truly built to last?

109
00:08:23,240 --> 00:08:24,680
I don't have that answer.

110
00:08:24,680 --> 00:08:28,000
My gut whispers, not yet. My heart asks, what's the rush?

111
00:08:28,380 --> 00:08:32,400
Why this relentless push for a flood when the ground beneath us is still settling?

112
00:08:33,240 --> 00:08:34,660
What I can say is this.

113
00:08:34,800 --> 00:08:39,660
In the dawn of AI, in the shadow of the EU crackdowns on so-called hate speech,

114
00:08:40,180 --> 00:08:44,280
in the rising tide of authoritarian Orwellian digital control,

115
00:08:44,520 --> 00:08:46,100
we hold something extraordinary.

116
00:08:46,580 --> 00:08:51,260
We have the decentralized tools, tools like Nostra that empower humanity,

117
00:08:51,260 --> 00:08:54,360
that shield the basic rights of individuals to speak,

118
00:08:54,680 --> 00:08:55,780
to think, to be.

119
00:08:56,060 --> 00:08:57,320
For me, that's enough.

120
00:08:57,800 --> 00:08:58,720
It's more than enough.

121
00:08:58,820 --> 00:08:59,660
So let's pause.

122
00:08:59,880 --> 00:09:01,400
Let us build, not chase.

123
00:09:01,820 --> 00:09:04,560
Let us value what Noster already is,

124
00:09:04,700 --> 00:09:05,920
a bastion of liberty,

125
00:09:06,280 --> 00:09:07,740
not a vessel of our greed.

126
00:09:08,220 --> 00:09:09,880
In the moment, in these moments,

127
00:09:09,980 --> 00:09:10,680
in this moment,

128
00:09:11,200 --> 00:09:12,720
these tools in our hands,

129
00:09:12,800 --> 00:09:14,820
we have the power to protect what matters most,

130
00:09:14,820 --> 00:09:17,280
and that is the truth worth standing for.

131
00:09:18,160 --> 00:09:19,040
Thank you, Avi.

132
00:09:21,360 --> 00:09:22,720
Well said, Kidabir.

133
00:09:22,720 --> 00:09:43,740
I think there is this, yeah, there is a fatalism that seems to have set in, not amongst everyone, but I am hearing a somewhat rising chorus of that, which is like, as you said, oh, my posts aren't getting as many likes as they did last month or whatever it is.

134
00:09:43,740 --> 00:09:45,760
and it is interesting to watch.

135
00:09:45,940 --> 00:09:49,300
It does feel a bit like an Oster Bear Market, I will say,

136
00:09:49,900 --> 00:09:53,940
but things are still being built, right?

137
00:09:53,940 --> 00:09:57,620
People are experimenting with Vibe-coded apps,

138
00:09:57,700 --> 00:09:59,460
most of which will end up in graveyards.

139
00:10:00,740 --> 00:10:02,300
But let's just set that aside.

140
00:10:02,540 --> 00:10:03,300
Maybe that's it.

141
00:10:03,420 --> 00:10:06,640
People are tired of clicking Vibe-coded apps to try out.

142
00:10:08,280 --> 00:10:11,000
I'm going to go play with an app that actually works for a little while

143
00:10:11,000 --> 00:10:11,760
and I'll be back.

144
00:10:13,740 --> 00:10:42,080
Oh, man. Now it's ebbs and flows. It's just like, you know, me and you, we've had some highs and lows. You know, it just, and sometimes life is really busy. So you're looking at, you're looking at Noster in a different perspective than you would if you were just a Saturday morning, coffee and chill, you know, so it's, emotions can always show when, you know, it seems dramatic at times. So I'm just a chill person. So I don't know.

145
00:10:42,080 --> 00:10:49,720
Now, I have noticed our show numbers in the last month or so have gone down by about 10 or 20%.

146
00:10:49,720 --> 00:10:54,400
Now, having said that, we're churning out two episodes a week.

147
00:10:54,780 --> 00:11:00,300
That's what we've been doing with the bonus episodes that we're doing.

148
00:11:00,460 --> 00:11:06,220
So on an episode-by-episode basis, our numbers are down by 10 or 20%.

149
00:11:06,220 --> 00:11:11,120
But aggregate, they're actually up if you add up our monthly numbers.

150
00:11:11,120 --> 00:11:14,160
But yeah, but that said, we'll see how it plays out.

151
00:11:14,280 --> 00:11:17,960
I think patience is key here.

152
00:11:18,680 --> 00:11:21,780
Paper Bitcoin summer can be distracting, Javi, you know,

153
00:11:21,860 --> 00:11:24,200
and we haven't been talking about it enough, I suppose.

154
00:11:26,840 --> 00:11:30,780
Well, but QW, speaking of something that is here to stay,

155
00:11:31,520 --> 00:11:34,580
we have the creator of Zap.Stream, Kieran.

156
00:11:35,060 --> 00:11:36,980
Welcome back to the show.

157
00:11:36,980 --> 00:11:48,832
thank you glad to be back again after a long hiatus Yeah we were your first podcast appearance weren we

158
00:11:49,932 --> 00:11:51,232
I think so, maybe.

159
00:11:51,232 --> 00:11:55,532
Yeah, I remember you mentioned it during Odell asked you that.

160
00:11:56,212 --> 00:11:58,892
Then Odell came back with, we're not a real podcast.

161
00:11:59,252 --> 00:12:02,672
And I think that was probably one of the highest acclimates.

162
00:12:03,072 --> 00:12:06,352
As a pleb, I felt like I could never get.

163
00:12:06,352 --> 00:12:11,852
you know Avi we're just not it's not real you know we're not real so it's all good

164
00:12:11,852 --> 00:12:22,832
so we have a burning question as we always do Kieran is Noster dead and if so what does it need

165
00:12:22,832 --> 00:12:34,532
to be alive ah that's a good question I don't think it's dead but um but maybe I'm the wrong

166
00:12:34,532 --> 00:12:38,772
person to ask because my head's always down you know I'm always just working on something

167
00:12:38,772 --> 00:12:46,412
so I'm not I don't really have my you know finger on the pulse on how active Nostra users are I kind

168
00:12:46,412 --> 00:12:53,252
of just like I see Nostra as something that's it's kind of like Bitcoin that it's like inevitable

169
00:12:53,252 --> 00:12:59,732
in that is as long as we keep building I mean that's the most important thing because the idea

170
00:12:59,732 --> 00:13:04,352
is still the same. So as long as we, you know, keep our heads down and keep working, then

171
00:13:04,352 --> 00:13:11,232
eventually the people will come. Do you feel like the trend of the society or the globe,

172
00:13:11,432 --> 00:13:15,912
I mean, all these different jurisdictions, you think the trend is we're going to need

173
00:13:15,912 --> 00:13:23,492
more and more Nostra as the years go on? I think so. Maybe what people are feeling

174
00:13:23,492 --> 00:13:29,272
is kind of this pullback from censorship on other platforms,

175
00:13:29,272 --> 00:13:33,292
like, oh, the censorship stories are dying out,

176
00:13:33,392 --> 00:13:35,672
so let's just go back to X or whatever.

177
00:13:36,792 --> 00:13:42,012
And that's maybe what we're seeing is kind of a change in the news cycle, I guess.

178
00:13:42,412 --> 00:13:47,132
So it's only a matter of time before more and more censorship stories come out

179
00:13:47,132 --> 00:13:50,812
and people go to Noster and some will stick around,

180
00:13:50,932 --> 00:13:53,332
some will stay around for a while and others will leave.

181
00:13:53,492 --> 00:14:00,232
so we just have to wait and see i guess yeah what are your thoughts abhi you you feeling uh

182
00:14:00,232 --> 00:14:04,832
you feeling bullish on free speech and on other platforms

183
00:14:04,832 --> 00:14:15,312
well certainly not um i i also think position if you're talking about growing nosto

184
00:14:15,312 --> 00:14:22,012
and this is the nice thing right everyone has a every nosto nosto enthusiast who wants to

185
00:14:22,012 --> 00:14:29,652
spread the word has their own way of doing it i i just happen to think that the censorship resistant

186
00:14:29,652 --> 00:14:38,672
pitch or the uh you own your own identity all of that's that's sort of stuff that that pitch

187
00:14:38,672 --> 00:14:44,992
has a niche audience and maybe it will get a few people in who are interested in that sort of thing

188
00:14:44,992 --> 00:14:52,532
But I think if you're looking at mass appeal, that line of thinking probably will fall flat.

189
00:14:52,952 --> 00:14:58,672
But rather, it needs to shift to something like Nostra is the most fun place on the Internet.

190
00:14:58,812 --> 00:15:06,152
Look at all of these really cool things you can do, such as live stream and earn money as you're doing it.

191
00:15:06,912 --> 00:15:10,472
So that would be my way of growing Nostra.

192
00:15:11,992 --> 00:15:14,932
Maybe we are going through a bit of a bear market right now.

193
00:15:14,992 --> 00:15:17,072
in terms of user adoption.

194
00:15:17,272 --> 00:15:20,272
But the people who are still here are having fun.

195
00:15:20,332 --> 00:15:21,212
I'm still having fun.

196
00:15:21,972 --> 00:15:24,792
So it's not too concerning to me.

197
00:15:25,132 --> 00:15:29,552
But speaking of a lot of people using Zap.stream, Kieran,

198
00:15:30,212 --> 00:15:34,192
a lot of people have been using Zap.stream

199
00:15:34,192 --> 00:15:35,432
in the last two weeks.

200
00:15:35,472 --> 00:15:36,472
Do you want to talk about that?

201
00:15:38,992 --> 00:15:41,352
Yes, there's a...

202
00:15:41,352 --> 00:15:42,912
Yeah, people are coming to Zap.stream.

203
00:15:43,092 --> 00:15:43,832
They're trying it out.

204
00:15:44,992 --> 00:15:54,112
It's definitely been growing, surprisingly, honestly, with all the issues we've been having, because a lot of people have been asking me, you know, when is it going to be back up so we can start streaming?

205
00:15:56,352 --> 00:15:58,292
But yeah, it's kind of steadily growing.

206
00:15:58,512 --> 00:16:00,712
I wouldn't say that there was like a massive explosion of people.

207
00:16:02,632 --> 00:16:06,392
Again, I try to, you know, just keep working on things.

208
00:16:06,392 --> 00:16:09,872
So I'm not I'm not too focused on numbers, to be honest.

209
00:16:09,872 --> 00:16:15,332
I just like to build out this new platform that I'm trying to roll out.

210
00:16:15,672 --> 00:16:18,032
And we'll talk about that a bit more in a bit.

211
00:16:18,292 --> 00:16:23,132
But in terms of, you know, the current setup, yeah, it's slowly growing.

212
00:16:23,372 --> 00:16:26,132
I guess I'm in the wrong time zone as well for a lot of people.

213
00:16:27,012 --> 00:16:29,072
A lot of the streamers are US-based.

214
00:16:29,252 --> 00:16:32,812
So sometimes I'll come back and I'll check, you know, when I wake up the next day.

215
00:16:32,932 --> 00:16:37,612
And there's been like five or six different people streaming that I've never seen stream

216
00:16:37,612 --> 00:16:38,972
because they're just in a different time zone.

217
00:16:39,872 --> 00:16:42,612
Right. But you did have...

218
00:16:42,612 --> 00:16:43,632
How does that feel?

219
00:16:45,392 --> 00:16:50,772
Yeah, it's, I guess, I don't know. I don't really feel anything about it.

220
00:16:50,772 --> 00:16:58,912
Some person just started streaming from Thailand or some person just started streaming from Zambodia.

221
00:16:59,352 --> 00:17:03,992
I mean, you build something that's just used worldwide.

222
00:17:03,992 --> 00:17:08,532
obviously we're always weighted to the states because it seems like that's just

223
00:17:08,532 --> 00:17:16,872
maybe where all the the best internet uh and access is i don't know but uh yeah you you just

224
00:17:16,872 --> 00:17:22,652
don't feel you don't feel anything huh i guess i definitely do feel something when someone new

225
00:17:22,652 --> 00:17:26,472
starts streaming like if i'm if i'm online or i'm working on something i'll usually check out

226
00:17:26,472 --> 00:17:31,272
their stream and say hi or whatever and ask them what they think about it that's always exciting

227
00:17:31,272 --> 00:17:35,992
you know when you see someone new it's like oh where did they come from or like how do they find

228
00:17:35,992 --> 00:17:40,172
the how do they find zappstream because we don't really we don't advertise really at all so it's

229
00:17:40,172 --> 00:17:45,352
all kind of word of mouth or or something like that or people post from nostr but there's there's

230
00:17:45,352 --> 00:17:49,612
sometimes people who like they're just new to nostr in general and they just start streaming

231
00:17:49,612 --> 00:17:54,812
and it's like it's pretty cool what i mean is like after the fact when people have streamed i'm like

232
00:17:54,812 --> 00:18:00,452
oh that's cool you know like i didn't get to see it myself so i don't get to experience it

233
00:18:00,452 --> 00:18:25,552
Sometimes it makes you look in the mirror of what you built, you know, where you're kind of like, and I built this and people, you build it and they will come type of mentality and they actually start coming and people are actually building a monetization or maybe even a job on your permissionless marketplace there where your consumer and creator meet.

234
00:18:25,552 --> 00:18:31,592
yeah definitely it's also it's also pretty cool to see you know other other people building

235
00:18:31,592 --> 00:18:35,912
interoperable apps like that's that's always really exciting because

236
00:18:35,912 --> 00:18:40,832
it kind of kind of gives more value to to what you've built i guess because

237
00:18:40,832 --> 00:18:46,892
more people are excited about streaming and and those developers are exciting about excited about

238
00:18:46,892 --> 00:18:51,772
adding it to their apps or even new brand new apps with different ideas you know that have

239
00:18:51,772 --> 00:18:53,692
different ideas to Zapstream, but they're

240
00:18:53,692 --> 00:18:55,772
kind of building on top of Zapstream

241
00:18:55,772 --> 00:18:57,432
the streaming

242
00:18:57,432 --> 00:18:58,972
backend that I've built.

243
00:19:02,432 --> 00:19:03,872
Sorry, what were you talking

244
00:19:03,872 --> 00:19:04,452
about before?

245
00:19:05,712 --> 00:19:07,352
No, I was curious.

246
00:19:08,352 --> 00:19:09,732
Yeah, before you cut me off and

247
00:19:09,732 --> 00:19:11,672
talked about Zambodia, which is not a real

248
00:19:11,672 --> 00:19:12,052
country.

249
00:19:13,532 --> 00:19:14,992
Or was it Zanzibar?

250
00:19:16,712 --> 00:19:17,592
There's Zambia

251
00:19:17,592 --> 00:19:18,372
and there's Cambodia.

252
00:19:21,772 --> 00:19:27,532
uh karen you recently had a denial of service attack a long-running one

253
00:19:27,532 --> 00:19:33,092
on zap.stream what do you do you know why that happened what the motivation might have been

254
00:19:33,092 --> 00:19:42,752
you say recently but it's actually still ongoing like even right now it's just been kind of mostly

255
00:19:42,752 --> 00:19:47,892
mitigated for the time being um it's still right now i'm looking at the graphs and i have it open

256
00:19:47,892 --> 00:19:51,972
and it's like 500 megabits per second still, like right now.

257
00:19:54,332 --> 00:19:56,832
But yeah, it's been going on for almost two weeks now actually.

258
00:19:57,412 --> 00:19:58,252
It's actually Friday.

259
00:19:59,072 --> 00:20:00,932
Yeah, Friday, two weeks ago it started.

260
00:20:02,672 --> 00:20:04,872
I don't think it's necessarily zap.stream.

261
00:20:05,692 --> 00:20:08,472
A lot of people seem to think that it is related to zap.stream

262
00:20:08,472 --> 00:20:09,852
but I don't think it is.

263
00:20:10,292 --> 00:20:13,452
It seems to be more related to other projects that I'm working on

264
00:20:13,452 --> 00:20:17,392
namely this VPS provider that I built.

265
00:20:17,892 --> 00:20:20,992
they seem to be targeting that more specifically.

266
00:20:21,752 --> 00:20:24,272
But obviously everything that I host

267
00:20:24,272 --> 00:20:26,532
and everything that I run is on the same server

268
00:20:26,532 --> 00:20:27,252
and the same network.

269
00:20:27,432 --> 00:20:30,972
So they're all kind of susceptible to this attack.

270
00:20:32,112 --> 00:20:33,792
But I don't really know who it is.

271
00:20:34,632 --> 00:20:36,972
I can't really, I can't even make a guess

272
00:20:36,972 --> 00:20:38,072
on who it might be.

273
00:20:38,312 --> 00:20:41,632
And they're very, it's kind of a very long time

274
00:20:41,632 --> 00:20:43,412
to attack one network.

275
00:20:43,572 --> 00:20:45,032
Like two weeks is a very long time.

276
00:20:45,752 --> 00:20:47,832
Normally, you know, you think about a week maximum.

277
00:20:47,892 --> 00:20:49,052
and this has been two weeks now.

278
00:20:49,212 --> 00:20:54,032
So they're very persistent and dedicated in this attack.

279
00:20:54,332 --> 00:20:57,532
So there's nothing really I can do, of course,

280
00:20:57,612 --> 00:20:59,952
because they're sending traffic to me

281
00:20:59,952 --> 00:21:01,732
and I can't stop them.

282
00:21:05,732 --> 00:21:09,072
And I guess the solution to that really

283
00:21:09,072 --> 00:21:12,892
is to decentralize the backend, right?

284
00:21:13,132 --> 00:21:14,672
And we'll get there,

285
00:21:14,672 --> 00:21:18,032
and I think you're doing some work with NIP94 on that.

286
00:21:18,792 --> 00:21:21,092
But maybe before we dive into that,

287
00:21:21,132 --> 00:21:22,592
because that can get a little technical,

288
00:21:24,072 --> 00:21:27,612
do you want to break down in simple terms

289
00:21:27,612 --> 00:21:31,332
how zap.stream works today?

290
00:21:33,552 --> 00:21:35,972
It's servers that you currently host, correct?

291
00:21:38,052 --> 00:21:40,672
Yeah, so in the very beginning of zap.stream,

292
00:21:40,672 --> 00:21:42,152
it was kind of like, you know,

293
00:21:42,372 --> 00:21:44,452
just a perfect concept, really.

294
00:21:44,672 --> 00:21:49,592
to see what kind of stream interactions would be like on Noster

295
00:21:49,592 --> 00:21:52,772
because that's really what Zap.stream is.

296
00:21:52,772 --> 00:21:57,372
It's just a link to a stream posted somewhere on a central server.

297
00:21:58,492 --> 00:22:00,152
So in the beginning, there was no central server.

298
00:22:00,492 --> 00:22:01,612
I just kind of built something.

299
00:22:02,352 --> 00:22:05,212
And then you could basically post a link to your stream

300
00:22:05,212 --> 00:22:07,152
on wherever you host it.

301
00:22:08,312 --> 00:22:11,032
And then thinking more about it,

302
00:22:11,172 --> 00:22:14,212
it's kind of a very technical thing to do

303
00:22:14,212 --> 00:22:15,412
is to host your own stream.

304
00:22:16,052 --> 00:22:18,252
So I decided to build this backend,

305
00:22:18,752 --> 00:22:19,672
this centralized backend,

306
00:22:20,152 --> 00:22:24,532
just to make it easier for people to stream on Zapstream.

307
00:22:24,892 --> 00:22:28,312
So it's, you know, the same as any other streaming backend.

308
00:22:28,432 --> 00:22:31,512
It just manages all of the Nostra side of things

309
00:22:31,512 --> 00:22:33,352
and it hosts a stream for you.

310
00:22:33,632 --> 00:22:35,632
So it just simplifies the flow,

311
00:22:35,772 --> 00:22:38,112
kind of the same as you would expect

312
00:22:38,112 --> 00:22:39,992
from a Twitch or from a YouTube.

313
00:22:40,192 --> 00:22:41,352
So you just put in the stream key.

314
00:22:42,392 --> 00:22:43,472
Whenever you start streaming,

315
00:22:43,472 --> 00:22:45,432
your stream is available on the site.

316
00:22:46,152 --> 00:22:48,072
So the backend kind of manages

317
00:22:48,072 --> 00:22:51,072
all of the Noster publishing and all of that

318
00:22:51,072 --> 00:22:52,332
just to make it easier for people.

319
00:22:56,412 --> 00:22:58,552
Now, for a streaming server,

320
00:22:59,272 --> 00:23:00,832
which you're running,

321
00:23:00,992 --> 00:23:03,872
does it need a special kind of configuration

322
00:23:03,872 --> 00:23:07,072
or can anyone host a streaming server?

323
00:23:10,292 --> 00:23:12,272
Yeah, so it's all open source.

324
00:23:12,272 --> 00:23:17,732
So I guess anyone, even the one that's live right now that we're streaming on, it's like anyone can run it.

325
00:23:17,732 --> 00:23:31,244
Like there some documentation there but I trying to actually move away from the current system to a new system that more kind of customized to the specific needs of Zapstream

326
00:23:31,244 --> 00:23:34,324
and for this kind of goal that I'm aiming for,

327
00:23:34,424 --> 00:23:37,864
which is to kind of make Zapstream, you know,

328
00:23:37,924 --> 00:23:40,384
like a marketplace of streaming providers.

329
00:23:40,604 --> 00:23:45,524
So there won't really be one specific backend that you stream.

330
00:23:45,584 --> 00:23:48,724
You don't stream to the Zapstream backend, although it will be an option.

331
00:23:48,724 --> 00:23:55,244
there will be more hopefully others running these streaming backends in the same way that

332
00:23:55,244 --> 00:24:01,304
that people run Nostra relays so that's kind of the goal that I'm trying to move towards for the

333
00:24:01,304 --> 00:24:07,664
past like year is trying to build this custom streaming back end that can do everything all

334
00:24:07,664 --> 00:24:14,844
in one and kind of make it really easy for people to run the streams on their own and then aside

335
00:24:14,844 --> 00:24:19,724
Aside from that goal, there's another goal to make an even more decentralized version

336
00:24:19,724 --> 00:24:26,564
of streaming that uses Blossom and Noster.

337
00:24:26,564 --> 00:24:29,964
So this is kind of a completely new streaming idea.

338
00:24:29,964 --> 00:24:37,444
It's not really like a well-known streaming protocol, let's say, but it is based on a

339
00:24:37,444 --> 00:24:44,824
very well-known protocol called HLS, which is kind of the global standard for live streams.

340
00:24:44,824 --> 00:24:54,244
So that's also in the works, and it's kind of in the same vein as the kind of server that I built, the custom server that I built.

341
00:24:54,864 --> 00:25:02,064
So hopefully we can get even more decentralized than a marketplace of streaming providers.

342
00:25:03,004 --> 00:25:06,164
So let's talk about the marketplace option for a second here.

343
00:25:07,444 --> 00:25:14,364
That would potentially mitigate the type of attack that you're experiencing, right?

344
00:25:14,364 --> 00:25:17,884
or at least the disruption that would come from that type of attack.

345
00:25:17,984 --> 00:25:22,104
If there were multiple people hosting streaming backends

346
00:25:22,104 --> 00:25:24,824
the way they host NOST relays,

347
00:25:25,504 --> 00:25:30,124
then someone who's streaming can choose which backend

348
00:25:30,124 --> 00:25:32,924
they're pointing their stream key towards.

349
00:25:33,584 --> 00:25:34,784
And they should be good.

350
00:25:34,964 --> 00:25:39,284
For example, if your VPS, which is being attacked,

351
00:25:39,644 --> 00:25:41,624
takes the streams on ZapDone, StreamDone,

352
00:25:41,624 --> 00:25:45,424
and they point to the next provider or the one that's available.

353
00:25:46,104 --> 00:25:51,544
And then in that scenario, if the DOS attacker wants to take all NOSTA streaming down,

354
00:25:52,144 --> 00:25:54,964
they would have to attack every single one of those providers, correct?

355
00:25:56,964 --> 00:26:03,604
Yeah. So basically, the idea is for anyone to be able to run zap.stream, the backend,

356
00:26:03,604 --> 00:26:08,684
as you might run a relay. So it is actually working already.

357
00:26:08,684 --> 00:26:13,424
They have one person who's running the Zapstream backend on their own server.

358
00:26:14,224 --> 00:26:18,564
So it's kind of like, you know, they have their own Zapstream to stream on.

359
00:26:18,564 --> 00:26:24,224
And then, again, like you said, if somebody wants to take down Zap.stream and all the streams,

360
00:26:24,784 --> 00:26:29,224
they would have to, like, denial of servers attack every single backend, which is a lot harder.

361
00:26:29,804 --> 00:26:32,904
Because right now, Zap.stream backend is on one server.

362
00:26:32,904 --> 00:26:44,364
and so as a provider i would say if i spun up a back end zap.stream back end myself when you do

363
00:26:44,364 --> 00:26:53,144
when you do yeah uh would i i'd be able to accept streams from anyone right or would it just be

364
00:26:53,144 --> 00:27:00,204
my own stream that would go through that yeah so it's it's the whole zap.stream so like anyone

365
00:27:00,204 --> 00:27:05,424
can use it. You can share the streaming server with your friends if you wish. And you can also

366
00:27:05,424 --> 00:27:11,024
accept payments. So it's like the full, everything that we have right now in this app stream backend

367
00:27:11,024 --> 00:27:17,004
is basically, you can have the same thing of like your own copy of that. So you get like all of the

368
00:27:17,004 --> 00:27:23,104
accounting and, you know, people can, you can set your own rates. Like, so if you want your streaming

369
00:27:23,104 --> 00:27:28,624
server to be really expensive or really cheap, you can do that and you can configure, you know,

370
00:27:28,624 --> 00:27:31,564
all of the different settings for what type of streams you want

371
00:27:31,564 --> 00:27:34,924
or, you know, who has access to it.

372
00:27:35,104 --> 00:27:36,264
It's all configurable.

373
00:27:37,264 --> 00:27:41,264
So today, when something's streaming on Zap.stream,

374
00:27:41,404 --> 00:27:46,064
and let's pick a Nostra client that shows this,

375
00:27:46,284 --> 00:27:48,044
so Nostra, I believe Amethyst does too,

376
00:27:48,144 --> 00:27:52,044
but I'm an iPhone user, so I'm familiar with Nostra.

377
00:27:52,664 --> 00:27:55,224
I go into Nostra and I can see the streams on top

378
00:27:55,224 --> 00:27:56,284
and I can click them, right?

379
00:27:56,284 --> 00:28:00,384
and that's because they're going through the existing Zapdos stream backend

380
00:28:00,384 --> 00:28:01,144
that you're hosting.

381
00:28:01,784 --> 00:28:05,824
When there are multiple providers in this marketplace

382
00:28:05,824 --> 00:28:11,164
all offering slightly different services for different costs

383
00:28:11,164 --> 00:28:14,624
and someone goes through one of those other providers,

384
00:28:15,344 --> 00:28:21,704
would Nostar, the iOS app, be able to pick up those streams

385
00:28:21,704 --> 00:28:23,064
that are not going through your backend?

386
00:28:25,284 --> 00:28:26,084
Yeah, exactly.

387
00:28:26,284 --> 00:28:32,984
Well, in Nostor, they don't technically connect to zap.stream explicitly.

388
00:28:34,344 --> 00:28:37,864
Anyone can self-host their own stream right now, and it will show in Nostor.

389
00:28:38,804 --> 00:28:44,524
All that they're doing is they're reading the Nostor events that point to the stream.

390
00:28:45,464 --> 00:28:48,524
So in that Nostor event, you can point to any server you like, basically.

391
00:28:49,304 --> 00:28:52,924
So Nostor is just reading the live streaming event from Nostor,

392
00:28:52,924 --> 00:28:55,064
and then they're getting the link to the stream

393
00:28:55,064 --> 00:28:56,304
and then they play the stream.

394
00:28:56,684 --> 00:28:58,064
But that can be hosted anywhere.

395
00:28:58,764 --> 00:29:01,844
So if somebody else has their own streaming backend,

396
00:29:02,544 --> 00:29:05,524
then it'll also show in all of the existing apps

397
00:29:05,524 --> 00:29:09,444
because they're only reading the Nostra event part of it.

398
00:29:09,444 --> 00:29:14,364
And so, because I only see, and Avi, I'm sure you're the same,

399
00:29:14,464 --> 00:29:18,784
but if I open up Nostra, I'm only going to see if, you know,

400
00:29:18,884 --> 00:29:21,744
Plebchain Radio, because I follow Plebchain Radio,

401
00:29:21,744 --> 00:29:22,844
is streaming.

402
00:29:24,104 --> 00:29:25,884
So is that kind of what happens

403
00:29:25,884 --> 00:29:27,744
is your blockchain radio account

404
00:29:27,744 --> 00:29:28,944
streams to Nostor

405
00:29:28,944 --> 00:29:31,104
and because you're following it,

406
00:29:31,244 --> 00:29:32,064
you're picking it up

407
00:29:32,064 --> 00:29:33,944
from whatever relay that would be

408
00:29:33,944 --> 00:29:36,204
as far as the connection goes

409
00:29:36,204 --> 00:29:37,804
and you have that stream URL

410
00:29:37,804 --> 00:29:39,224
that you can open up?

411
00:29:44,464 --> 00:29:46,004
I'm not sure how Nostor works,

412
00:29:46,184 --> 00:29:47,344
but it should be,

413
00:29:47,764 --> 00:29:49,584
you know, maybe they only do it by follows.

414
00:29:49,684 --> 00:29:51,464
I think on Snort,

415
00:29:51,464 --> 00:29:57,204
But we also, we show, I think actually we show all live streams, even from people you don't follow.

416
00:29:58,004 --> 00:29:59,524
But I'm not sure how Nostro works.

417
00:30:01,244 --> 00:30:03,044
But is that with NIP 53?

418
00:30:04,484 --> 00:30:06,184
Yeah, NIP 53 is the spec.

419
00:30:06,184 --> 00:30:06,424
Okay.

420
00:30:07,064 --> 00:30:11,984
So for the less technical folks, can you explain how NIP 53 works?

421
00:30:14,424 --> 00:30:21,164
Yeah, so NIP 53 is this replaceable event kind, which means that it can be updated, essentially.

422
00:30:21,464 --> 00:30:26,444
and it kind of just lists, you know, a HLS URL,

423
00:30:26,724 --> 00:30:27,804
which is, like I said earlier,

424
00:30:28,324 --> 00:30:30,464
it's kind of the global standard for live streaming

425
00:30:30,464 --> 00:30:32,784
over, you know, over web,

426
00:30:32,944 --> 00:30:34,884
it was supported natively in iOS,

427
00:30:35,584 --> 00:30:38,124
and on Android it's supported in their player.

428
00:30:39,144 --> 00:30:41,484
But yeah, pretty much it's just like a regular Nostra event.

429
00:30:41,604 --> 00:30:43,544
It has the title and the thumbnail,

430
00:30:43,544 --> 00:30:46,904
and it can store how many viewers the stream has.

431
00:30:48,164 --> 00:30:49,644
It has the link to the stream,

432
00:30:49,644 --> 00:30:54,604
and it has the status of the stream about if it's live, if it's ended or if it's planned.

433
00:30:55,864 --> 00:30:59,784
And then in terms of the chat and the kind of interaction,

434
00:31:00,524 --> 00:31:04,304
there's a different kind of event for chat, for live chat.

435
00:31:04,664 --> 00:31:06,464
And that just links to the stream event.

436
00:31:07,184 --> 00:31:12,044
So whenever you're writing a chat message, you know, you tag the stream event in your reply

437
00:31:12,044 --> 00:31:18,404
and then clients can see all of the replies for that stream when they open, they pull up the stream.

438
00:31:18,404 --> 00:31:23,204
and the same goes for zaps of course so zaps are also tagged onto the stream event

439
00:31:23,204 --> 00:31:30,364
the same way that chat messages are and there are there are a few other interaction types like raids

440
00:31:30,364 --> 00:31:36,724
which are kind of a feature that was taken from from twitch and there are some other ones like

441
00:31:36,724 --> 00:31:42,704
timeouts and things like that that are a bit newer but yeah they're all on Noster so the only thing

442
00:31:42,704 --> 00:31:49,564
that's not on Noster for these live streams is the actual video feed. And that's kind of what

443
00:31:49,564 --> 00:31:56,664
we're trying to do with the super decentralized Zap stream, which is using Blossom. So in that

444
00:31:56,664 --> 00:32:04,144
version, you know, it's fully distributed and you get redundant, you know, streams that you would

445
00:32:04,144 --> 00:32:10,544
otherwise not have because you're using like one specific centralized server. But again,

446
00:32:10,544 --> 00:32:15,844
And that's a lot more complicated than, you know, the standard HLS scheme of things.

447
00:32:16,804 --> 00:32:23,644
Are you looking forward to taking away some of that liability when you can decentralize it away from yourself?

448
00:32:25,383 --> 00:32:26,104
Yeah, definitely.

449
00:32:27,324 --> 00:32:34,144
When I first built this, I actually, I really didn't want to go down the road of hosting streams, like for that exact reason.

450
00:32:34,144 --> 00:32:41,144
so I kind of delayed building a system for for quite a while because well basically I wanted to

451
00:32:41,144 --> 00:32:46,904
see if if people were willing to host their own streams so I was kind of waiting to see if if

452
00:32:46,904 --> 00:32:52,204
people would you know start using it but with their own streaming server so like I was streaming

453
00:32:52,204 --> 00:32:58,324
on it with my own stream um but like there were there was nobody else you know that would even

454
00:32:58,324 --> 00:33:02,404
attempt it because it's kind of complicated to run a streaming server.

455
00:33:03,824 --> 00:33:08,224
And yeah, so I'm trying to, you know, take away the responsibility of

456
00:33:08,224 --> 00:33:11,464
kind of moderating this content by

457
00:33:11,464 --> 00:33:18,344
essentially allowing anyone to host their stream anywhere, or at least anywhere on Blossom and

458
00:33:18,344 --> 00:33:25,044
Noster. So that kind of distributes it and makes it more resilient and, you know, I don't have to

459
00:33:25,044 --> 00:33:36,044
deal with the the dmca requests so i'm curious about our friends scardust the metal band they

460
00:33:36,044 --> 00:33:43,264
were running a 24 7 live stream and i think what the the initial calculation they had to do was if

461
00:33:43,264 --> 00:33:49,284
they ran it through your back end karen right they'd have to for a 24 7 live stream would be

462
00:33:49,284 --> 00:33:55,624
it worked out a few hundred dollars a month in streaming costs but they were able to find

463
00:33:55,624 --> 00:34:01,464
a solution where they were hosting their own stream is that is that right how did their

464
00:34:01,464 --> 00:34:06,864
solution work is it the same provider we'll get to the blossom solution in a second but

465
00:34:06,864 --> 00:34:13,744
this provider-based thing that you were talking about so i don't think it's a hundred dollars

466
00:34:13,744 --> 00:34:18,364
maybe it's well maybe because the price changed because i i set the prices in sats so maybe

467
00:34:18,364 --> 00:34:23,664
maybe it's changed but last time I remember it was something around 30 dollars for like a 24-7

468
00:34:23,664 --> 00:34:33,024
stream per month um but um but we also recently made this um this other plan it's I call it a plan

469
00:34:33,024 --> 00:34:39,704
but it's like it's kind of like a configuration in the streaming server that specifies what kind of

470
00:34:39,704 --> 00:34:46,324
what kind of qualities that it outputs and how much resources that it it uses on the server

471
00:34:46,324 --> 00:34:50,324
So we have this plan called the basic plan,

472
00:34:50,324 --> 00:34:54,324
which used to be, I think, around one sat per minute

473
00:34:54,324 --> 00:34:58,324
or something like that, or maybe half a sat per minute. But I changed it to be

474
00:34:58,324 --> 00:35:02,324
free. So anyone can stream on Zap.Stream right now

475
00:35:02,324 --> 00:35:16,275
on the basic plan for free And what the basic plan is is it basically it doesn transcode the stream which means it doesn convert the stream quality or do any processing on the video feed that you send to the server

476
00:35:16,275 --> 00:35:21,815
so all the server is really doing is kind of shuffling the data around it's not really doing

477
00:35:21,815 --> 00:35:29,275
any heavy computation like transcoding which is converting the video to you know different

478
00:35:29,275 --> 00:35:35,555
qualities so that viewers can can view it at different you know internet speeds essentially

479
00:35:35,555 --> 00:35:41,595
so if you have like a slower internet speed then maybe you can't watch like the full hd version you

480
00:35:41,595 --> 00:35:45,115
You have to watch the lower resolution quality,

481
00:35:45,255 --> 00:35:46,215
and that's what the server does.

482
00:35:46,275 --> 00:35:49,515
It basically converts it down into multiple resolutions

483
00:35:49,515 --> 00:35:52,936
so that multiple people can watch it at different rates.

484
00:35:54,876 --> 00:35:56,936
So they're using the basic rate,

485
00:35:57,295 --> 00:36:00,635
which is how they got around this fee,

486
00:36:00,795 --> 00:36:03,755
which is they're streaming for free on the basic rate.

487
00:36:04,755 --> 00:36:09,436
And so is, I believe, Node Runners Radio.

488
00:36:09,615 --> 00:36:11,575
That's also on the basic rate, I believe.

489
00:36:11,595 --> 00:36:13,696
right

490
00:36:13,696 --> 00:36:18,715
it's just so affordable

491
00:36:18,715 --> 00:36:20,835
Avi for me and you

492
00:36:20,835 --> 00:36:22,876
ever since we started using

493
00:36:22,876 --> 00:36:23,795
Zap.Stream

494
00:36:23,795 --> 00:36:26,775
every week we're kind of like hey what's our balance

495
00:36:26,775 --> 00:36:28,075
at what's our balance at

496
00:36:28,075 --> 00:36:30,115
oh we got another 10 hours

497
00:36:30,115 --> 00:36:32,495
we started with 10,000 sats

498
00:36:32,495 --> 00:36:33,715
and we're still like

499
00:36:33,715 --> 00:36:36,196
we can't milk this thing Avi

500
00:36:36,196 --> 00:36:39,495
maybe we should switch to basics

501
00:36:39,495 --> 00:36:39,995
it is actually

502
00:36:39,995 --> 00:36:47,436
you're gonna keep your sets then we need the best video quality for our

503
00:36:47,436 --> 00:36:54,115
blockchain radio logo that's it no compromises it actually it does it does play a lot better as well

504
00:36:54,115 --> 00:37:00,936
um when it's transcoded because uh it it starts faster um so whenever you you play the stream

505
00:37:00,936 --> 00:37:04,696
it starts playing immediately on on the lower quality just so that you can

506
00:37:04,696 --> 00:37:09,956
immediately start playing but if you're on the the basic rate and you're uploading like a 10

507
00:37:09,956 --> 00:37:15,555
1080p stream, people who want to watch that stream, they have to download the 1080p stream

508
00:37:15,555 --> 00:37:20,095
right away. So it actually takes longer to start playing if you use the basic rate. So

509
00:37:20,095 --> 00:37:26,015
the playback experience is not as good. So there is an argument to use the paid rates.

510
00:37:28,155 --> 00:37:34,615
But in general, it is very cheap. You won't get streaming. If you pay for streaming on,

511
00:37:34,615 --> 00:37:39,975
I believe Cloudflare, it's cheaper than, might be cheaper than Cloudflare.

512
00:37:40,416 --> 00:37:43,795
It's probably cheaper than some of the other generic streaming solutions.

513
00:37:44,015 --> 00:37:45,315
So it's definitely very cheap.

514
00:37:45,795 --> 00:37:48,715
And that's all to kind of incentivize people to use it

515
00:37:48,715 --> 00:37:51,356
because people don't want to let go of their sats, clearly.

516
00:37:52,295 --> 00:37:54,876
Well, and you have to hold on to them, right?

517
00:37:54,956 --> 00:37:58,815
Don't you become a custodian in a way when you have our balance?

518
00:37:58,815 --> 00:38:02,815
And, you know, there's that, did I back up the server?

519
00:38:04,615 --> 00:38:10,835
uh do you want to talk about that a little bit yeah we did have one one time where we had a

520
00:38:10,835 --> 00:38:19,315
you know catastrophic failure and we kind of messed up all the balances unfortunately um

521
00:38:19,315 --> 00:38:25,795
yeah i don't know what else to say but the balances were all kind of reset or they were

522
00:38:25,795 --> 00:38:33,755
reset to a different time when the backup was taken so that is unfortunate but now there is

523
00:38:33,755 --> 00:38:36,635
many backups in place. So hopefully that will not happen again.

524
00:38:38,835 --> 00:38:40,995
Yeah, that's, I mean, it's gotta be just

525
00:38:40,995 --> 00:38:45,835
discouraging because, you know, your heart is in this project, you're trying to

526
00:38:45,835 --> 00:38:49,795
build it forward. And when you become, you know,

527
00:38:49,815 --> 00:38:53,035
somewhat a custodian of credits,

528
00:38:54,115 --> 00:38:57,896
there's that, again, the liability of it all. And you really want

529
00:38:57,896 --> 00:39:01,696
to make people happy. And I think

530
00:39:01,696 --> 00:39:07,856
for the most part, because of who we are as a community, it's something where it's understandable

531
00:39:07,856 --> 00:39:14,456
and we're not putting our life savings in there, obviously. So it's one of those things where we

532
00:39:14,456 --> 00:39:21,555
kind of mitigate risk just as plebs and individuals. But if something, you know, if that were to

533
00:39:21,555 --> 00:39:27,535
happen, and maybe it is a blessing that it happened now, rather than in, you know, let's say a year's

534
00:39:27,535 --> 00:39:32,815
time and everybody and their brothers streaming on that, that would be quite the event.

535
00:39:34,675 --> 00:39:41,635
That would be bad. Yeah. As well as that, we used to have a withdrawal function,

536
00:39:42,235 --> 00:39:46,815
which is not the greatest idea because then you kind of really are a custodian

537
00:39:46,815 --> 00:39:52,795
when it becomes kind of like a balance. So I had to remove that. But the idea of having a

538
00:39:52,795 --> 00:39:59,655
withdrawal in that case was people could come to Zapstream and they could actually start streaming

539
00:39:59,655 --> 00:40:04,635
right away and they could receive Zap straight away. So even if they're not really, even if they

540
00:40:04,635 --> 00:40:09,795
didn't have their own Lightning wallet yet, they could actually stream on Zapstream and receive

541
00:40:09,795 --> 00:40:16,476
Zaps and withdraw the Sats from their streaming. So it's kind of like a, to smoothen out the on-ramp,

542
00:40:16,476 --> 00:40:22,476
but obviously that doesn't really work when you have, you know, lawyers involved or whatever.

543
00:40:22,795 --> 00:40:32,095
yeah lawyers ruin everything unfortunately i know i was hoping to use zap.stream as my hot wallet

544
00:40:32,095 --> 00:40:37,495
you know just uh keep keep the transactions going in and out keep a couple of bitcoin

545
00:40:37,495 --> 00:40:43,055
if you could get your balance like really high and then we'll have another catastrophic failure

546
00:40:43,055 --> 00:40:47,456
and boat accidents you know a lot i have a coin os event

547
00:40:47,456 --> 00:40:56,715
so let's talk about this new approach uh the the the super decentralized

548
00:40:56,715 --> 00:41:05,515
one is that where nip 94 comes into play yeah so it's actually a new nip um but it does use

549
00:41:05,515 --> 00:41:16,175
nip 94 um so the new nip it's still a proposal it's called um 5e which is like 53 so in the nips

550
00:41:16,175 --> 00:41:23,055
repo they allow letters now for some reason so I just picked 5e just so it's kind of related

551
00:41:23,055 --> 00:41:28,835
because it does share a lot of things with nip 53 although it is you know a completely different

552
00:41:28,835 --> 00:41:35,615
technology so it's not really compatible although there are ways to make it compatible which I can

553
00:41:35,615 --> 00:41:42,495
get into but essentially what it is is it's like I took what I built for the new kind of

554
00:41:42,495 --> 00:41:49,976
market-placed Zapstream backends. And I, because I built so much like infrastructure code to

555
00:41:49,976 --> 00:41:55,735
handle processing streams. So in this backend, it's like completely built from scratch

556
00:41:55,735 --> 00:42:03,535
in Rust. And I get to, you know, I can, I'm able to configure the pipeline as it's called,

557
00:42:03,936 --> 00:42:09,835
however I like. So if I want to take recordings, take clips, do whatever I want with the media,

558
00:42:09,835 --> 00:42:14,376
I can do that because I have full control over this transcoding pipeline,

559
00:42:14,675 --> 00:42:19,095
which basically is the process of converting it into multiple resolutions.

560
00:42:20,195 --> 00:42:24,535
And so I took this system that I built and I took, you know,

561
00:42:24,595 --> 00:42:27,615
I took the output of this system and I'm like,

562
00:42:27,675 --> 00:42:30,456
why can't I just, you know, put this on Blossom server?

563
00:42:30,555 --> 00:42:32,835
So then I'm not even, I don't even need to host it, you know?

564
00:42:33,396 --> 00:42:37,715
Like you get public NOSTA relays and you get public Blossom servers,

565
00:42:37,715 --> 00:42:39,356
although you can pay for both, of course.

566
00:42:39,835 --> 00:42:50,335
But the idea is basically that you can run this on your own machine without a server and you can stream to Nostr without, you know, having your own public server.

567
00:42:51,735 --> 00:42:58,356
Which I thought was like a really cool thing on its own without, you know, all the added benefits of being decentralized.

568
00:42:58,675 --> 00:43:00,956
Now, there are some, you know, downsides to this.

569
00:43:00,956 --> 00:43:04,695
Of course, it's completely new system design.

570
00:43:05,416 --> 00:43:12,195
Nobody is able to even play these streams because it's not a common playback thing.

571
00:43:12,295 --> 00:43:13,335
It's all based on NOSTER.

572
00:43:14,155 --> 00:43:16,615
So how it works is it works similar to NIP53.

573
00:43:17,615 --> 00:43:21,135
You start with a stream event, which is what we have in NIP53.

574
00:43:21,135 --> 00:43:32,735
And then we also have these NIP-94 events, which NIP-94 is this other specification for essentially listing file metadata on Noster.

575
00:43:33,275 --> 00:43:38,015
So you can list the name of a file, the hash of a file, and a link to that file.

576
00:43:38,416 --> 00:43:40,055
So that's the idea of NIP-94.

577
00:43:40,055 --> 00:43:52,515
So I took this idea of having NIP94 segments, which is, you know, a segment is essentially just a little two-second clip of the live stream.

578
00:43:52,635 --> 00:43:58,936
So that's kind of how HLS works, is you take the live stream and you cut it into, you know, very small segments.

579
00:43:59,135 --> 00:44:02,155
So you've got like two-second video clips.

580
00:44:02,275 --> 00:44:03,635
That's what you're actually watching.

581
00:44:03,795 --> 00:44:06,436
And it kind of, in the player, just joins them all together.

582
00:44:06,575 --> 00:44:07,876
So it looks like a constant stream.

583
00:44:07,876 --> 00:44:13,195
but it's actually a bunch of tinier two-second clips that they join together.

584
00:44:14,515 --> 00:44:18,335
So I took those two-second clips and I upload them to Blossom servers

585
00:44:18,335 --> 00:44:26,456
and then I post an event on Noster, which is a link to this segment, to this file.

586
00:44:27,655 --> 00:44:32,275
So essentially what you get is, if you're watching this NIP5e stream,

587
00:44:32,275 --> 00:44:37,035
you're interacting with the stream event

588
00:44:37,035 --> 00:44:41,815
with the chat and with the zaps

589
00:44:41,815 --> 00:44:45,815
but also you're interacting with it with the segments

590
00:44:45,815 --> 00:44:49,675
so instead of receiving only the chat events

591
00:44:49,675 --> 00:44:51,175
and the zap events

592
00:44:51,175 --> 00:44:53,675
you also receive the segment events

593
00:44:53,675 --> 00:44:55,755
and those segment events

594
00:44:55,755 --> 00:44:59,615
they have the link to the segment files on Blossom servers

595
00:44:59,615 --> 00:45:15,315
So essentially, you replace this centralized point that you need for HLS to work with Noster metadata, which points to the Blossom segments.

596
00:45:16,135 --> 00:45:19,356
And then the rest of the player system is the same, essentially.

597
00:45:20,095 --> 00:45:26,436
You listen for these video clip segments of the live stream, and the player just joins them together.

598
00:45:26,436 --> 00:45:33,376
the only problem with that is it's it's not hls so you need to basically build a player

599
00:45:33,376 --> 00:45:39,436
unfortunately which is the the major downside but the the biggest benefit of this of course is

600
00:45:39,436 --> 00:45:44,995
you don't need a central server you just need maybe you have like three or four blossom servers

601
00:45:44,995 --> 00:45:52,195
already or there are free ones you just use those and you run this thing on your computer which

602
00:45:52,195 --> 00:45:55,535
is called N94, is what I've called the demo.

603
00:45:56,456 --> 00:45:59,835
And you just stream to your N94 program,

604
00:46:00,416 --> 00:46:02,795
and then it'll do all of the splitting and everything

605
00:46:02,795 --> 00:46:04,555
in the same way that you would get

606
00:46:04,555 --> 00:46:07,595
with a centralized version of the Zapstream backend.

607
00:46:08,396 --> 00:46:10,235
And it runs all from your own machine

608
00:46:10,235 --> 00:46:12,376
using only Noster and Blossom.

609
00:46:13,916 --> 00:46:17,135
So Kieran, walk us through a simple example

610
00:46:17,135 --> 00:46:19,995
for someone looking to stream, right?

611
00:46:20,555 --> 00:46:22,035
So let's say us, Plep Chain Radio,

612
00:46:22,195 --> 00:46:25,295
and Zap.stream is, let's say,

613
00:46:25,356 --> 00:46:27,815
still going through your denial of service attack

614
00:46:27,815 --> 00:46:31,876
and QW and I really want to stream our episode live

615
00:46:31,876 --> 00:46:33,675
and let's say this is available.

616
00:46:34,555 --> 00:46:36,456
Walk us through that scenario

617
00:46:36,456 --> 00:46:38,755
or on how we do it

618
00:46:38,755 --> 00:46:41,015
and how the people who want to listen to our show

619
00:46:41,015 --> 00:46:42,695
will be able to access it.

620
00:46:44,456 --> 00:46:46,275
Yeah, so it is already working.

621
00:46:46,515 --> 00:46:48,215
I mean, I have, it's supported on,

622
00:46:48,376 --> 00:46:51,615
the player side of things is supported on Zap.stream,

623
00:46:51,615 --> 00:46:52,396
the website.

624
00:46:52,447 --> 00:46:53,287
not the app.

625
00:46:53,287 --> 00:46:55,787
So it only works on the web right now.

626
00:46:55,787 --> 00:46:59,527
Hopefully we can extend support to the Zapstream app

627
00:46:59,527 --> 00:47:02,707
and to Amethyst and to the other players.

628
00:47:02,707 --> 00:47:05,387
But basically, I have this, it's basically

629
00:47:05,387 --> 00:47:07,707
like a program that you run on your computer

630
00:47:07,707 --> 00:47:10,447
that starts up a streaming server, essentially.

631
00:47:10,447 --> 00:47:16,827
And then instead of putting your stream URL as zap.stream,

632
00:47:16,827 --> 00:47:22,027
you put in localhost, which essentially means my computer.

633
00:47:22,027 --> 00:47:24,507
So you're basically streaming to your own computer,

634
00:47:24,707 --> 00:47:28,567
to this other program that kind of handles all of the splitting

635
00:47:28,567 --> 00:47:30,727
of the stream and uploading and all of that.

636
00:47:31,567 --> 00:47:33,647
So you can run it all on your own computer

637
00:47:33,647 --> 00:47:36,347
with any of the Blossom servers,

638
00:47:36,547 --> 00:47:38,667
and it'll publish the Nostra events,

639
00:47:39,227 --> 00:47:41,847
and it will upload the Blossom files,

640
00:47:41,847 --> 00:47:44,987
and it even deletes the Blossom files after.

641
00:47:45,487 --> 00:47:49,527
So say you didn't want to keep your stream around forever

642
00:47:49,527 --> 00:47:51,827
and you only wanted it to be available when it's live,

643
00:47:52,027 --> 00:47:57,287
As soon as the segments expire, it'll just delete them from your Blossom servers.

644
00:47:57,947 --> 00:47:59,627
So you don't even need a lot of Blossom.

645
00:48:00,247 --> 00:48:01,647
You don't even need a lot of storage.

646
00:48:01,767 --> 00:48:06,367
You only need as much storage as maybe 60 seconds of video segments.

647
00:48:07,247 --> 00:48:08,547
And that's the way it's currently working.

648
00:48:08,667 --> 00:48:11,527
So you would run this N94 program on your machine,

649
00:48:12,527 --> 00:48:18,067
and then you would set your streaming, whatever you're using to stream the video, say OBS.

650
00:48:18,067 --> 00:48:22,487
you would set your server URL to your local machine

651
00:48:22,487 --> 00:48:25,427
and then it would handle everything else pretty much.

652
00:48:26,227 --> 00:48:27,207
What about the key?

653
00:48:27,487 --> 00:48:29,167
So we set it in Riverside.

654
00:48:29,387 --> 00:48:31,047
We record the show on Riverside

655
00:48:31,047 --> 00:48:34,467
and we put in the stream URL and the stream key.

656
00:48:35,927 --> 00:48:37,827
Would the concept of a key even exist

657
00:48:37,827 --> 00:48:39,787
because you're streaming to a local machine,

658
00:48:40,227 --> 00:48:40,967
to your local host?

659
00:48:42,087 --> 00:48:45,307
Yeah, so if you're using something like Riverside,

660
00:48:45,307 --> 00:48:51,167
you wouldn't be able to stream to your local machine essentially

661
00:48:51,167 --> 00:48:54,447
because Riverside's server is on the internet somewhere

662
00:48:54,447 --> 00:48:58,407
and they can't send the video stream back to your machine essentially.

663
00:48:59,567 --> 00:49:02,587
So it's more for, of course you could run it on a public server,

664
00:49:02,787 --> 00:49:04,387
that's fine as well.

665
00:49:05,107 --> 00:49:07,847
So say you actually wanted to use this system

666
00:49:07,847 --> 00:49:10,587
but you needed to be accessible to Riverside,

667
00:49:10,927 --> 00:49:13,467
then you could run it on a server somewhere

668
00:49:13,467 --> 00:49:15,807
and it would just process the stream for you

669
00:49:15,807 --> 00:49:17,887
and upload it to Blossom servers.

670
00:49:18,027 --> 00:49:20,987
But it's completely invisible to the viewer

671
00:49:20,987 --> 00:49:25,747
because it's not actually serving the stream directly.

672
00:49:25,887 --> 00:49:27,987
It's kind of just processing the video

673
00:49:27,987 --> 00:49:29,927
and uploading it somewhere else.

674
00:49:30,127 --> 00:49:30,847
So it doesn't actually,

675
00:49:30,947 --> 00:49:32,407
it wouldn't be visible to the public, I'd say.

676
00:49:34,047 --> 00:49:34,647
Got it.

677
00:49:34,647 --> 00:49:38,647
So I could create a droplet or something on DigitalOcean,

678
00:49:38,887 --> 00:49:40,807
or any one of those VPS providers,

679
00:49:40,807 --> 00:49:44,027
and run N94 in there

680
00:49:44,027 --> 00:49:46,127
and then just get the stream key from that

681
00:49:46,127 --> 00:49:48,427
and use that for Riverside.

682
00:49:48,567 --> 00:49:50,147
Okay, so that makes sense.

683
00:49:50,667 --> 00:49:53,307
I can't use Riverside for my local machine.

684
00:49:53,387 --> 00:49:54,967
I'd have to get closer to the bare metal,

685
00:49:55,447 --> 00:49:57,627
probably with OBS or something like that.

686
00:49:58,707 --> 00:50:00,127
That understood there.

687
00:50:00,307 --> 00:50:02,307
Now, what about the viewers or the listeners?

688
00:50:02,847 --> 00:50:04,867
Where would they find the stream?

689
00:50:07,087 --> 00:50:10,127
Yeah, so NIP 5e has its own event kind.

690
00:50:10,127 --> 00:50:12,067
It is very similar to NIP 53.

691
00:50:12,687 --> 00:50:15,847
It's just that the streaming feed is completely different,

692
00:50:15,987 --> 00:50:20,587
so it can't really reuse the same kind.

693
00:50:20,947 --> 00:50:23,247
But there are ways to actually create a bridge as well.

694
00:50:24,387 --> 00:50:28,447
So a bridge would basically publish a NIP 53 event,

695
00:50:29,047 --> 00:50:35,027
and then it would use a kind of proxy to create the HLS playlist,

696
00:50:35,547 --> 00:50:36,747
which I've already built as well.

697
00:50:36,747 --> 00:50:40,447
so you can basically have the best of both worlds in a way

698
00:50:40,447 --> 00:50:43,067
like you can have your N94 stream

699
00:50:43,067 --> 00:50:49,287
and you can have people who use the Nostra native way of pulling the stream down

700
00:50:49,287 --> 00:50:52,387
or you can have clients that still support N53

701
00:50:52,387 --> 00:50:57,787
but they rely on this other proxy to create the playlist for them

702
00:50:57,787 --> 00:50:59,147
so that's the missing piece

703
00:50:59,147 --> 00:51:05,687
because they're expecting a HLS playlist to be able to play this stream

704
00:51:05,687 --> 00:51:14,727
And that's obviously not how the NIP5e system works, where the segments are stored in Nostra events.

705
00:51:15,227 --> 00:51:20,647
So the playlist, it literally is just like a file with a bunch of links into the individual segments.

706
00:51:21,767 --> 00:51:25,687
And that's how the players kind of pull down the video feed.

707
00:51:25,687 --> 00:51:35,607
So they will keep repeatedly reloading this playlist and looking for new segments for them to kind of continue the live stream on.

708
00:51:35,747 --> 00:51:38,667
So I built, it's called an N94 bridge.

709
00:51:39,567 --> 00:51:45,387
And it basically listens for these NOSRA events and it reconstructs the HLS playlist.

710
00:51:45,647 --> 00:51:50,307
So there will be some backwards compatibility with this layer in the middle.

711
00:51:50,307 --> 00:51:53,087
so all that this bridge really does though

712
00:51:53,087 --> 00:51:55,087
is it just creates a file

713
00:51:55,087 --> 00:51:56,887
that points to all of the Blossom segments

714
00:51:56,887 --> 00:51:59,327
so it doesn't actually serve the stream

715
00:51:59,327 --> 00:52:00,467
or anything like that

716
00:52:00,467 --> 00:52:03,207
it just kind of creates this playlist in the middle

717
00:52:03,207 --> 00:52:06,827
for you to play it in your NIP 53 clients

718
00:52:06,827 --> 00:52:09,987
I've only recently completed this

719
00:52:09,987 --> 00:52:12,527
so I have to do a proper test

720
00:52:12,527 --> 00:52:14,507
with this bridge in place

721
00:52:14,507 --> 00:52:17,067
but the idea is for that of course

722
00:52:17,067 --> 00:52:18,527
to make it much easier

723
00:52:18,527 --> 00:52:22,907
for people to use this N94 system

724
00:52:22,907 --> 00:52:25,587
while some clients may not support NIP5e.

725
00:52:26,747 --> 00:52:29,907
So that sounds to me like, Kieran,

726
00:52:30,067 --> 00:52:32,087
initially they can still go to Zap.Stream

727
00:52:32,087 --> 00:52:34,187
and all this reconstruction and the bridging

728
00:52:34,187 --> 00:52:35,827
and all of that that you're talking about

729
00:52:35,827 --> 00:52:38,727
will be happening behind the scenes in Zap.Stream.

730
00:52:38,967 --> 00:52:41,487
The user, who all they care about

731
00:52:41,487 --> 00:52:44,887
is being able to listen to the stream or watch the stream,

732
00:52:45,407 --> 00:52:46,867
they're going to go to Zap.Stream.

733
00:52:46,867 --> 00:52:49,847
it'll be available to them, they'll click on it

734
00:52:49,847 --> 00:52:51,947
so it'll pretty much be the same thing

735
00:52:51,947 --> 00:52:53,867
from a consumer

736
00:52:53,867 --> 00:52:56,067
experience standpoint, is that fair?

737
00:52:57,327 --> 00:52:57,527
Yeah

738
00:52:57,527 --> 00:52:59,467
with the bridge, yeah, like it will

739
00:52:59,467 --> 00:53:01,167
appear in Amethyst

740
00:53:01,167 --> 00:53:03,267
even though it is like a

741
00:53:03,267 --> 00:53:04,167
NIT5E stream

742
00:53:04,167 --> 00:53:07,747
and on zap.stream the website we do support

743
00:53:07,747 --> 00:53:09,247
the new spec as well

744
00:53:09,247 --> 00:53:11,487
so it actually can play

745
00:53:11,487 --> 00:53:13,327
the stream as it was

746
00:53:13,327 --> 00:53:14,267
designed let's say

747
00:53:14,267 --> 00:53:17,307
it'll actually listen for the Nostra events

748
00:53:17,307 --> 00:53:20,487
and it will download the Blossom segments itself

749
00:53:20,487 --> 00:53:22,987
obviously the benefit of that is

750
00:53:22,987 --> 00:53:26,847
if you're using the bridge you won't actually be able to get any

751
00:53:26,847 --> 00:53:30,367
censorship resistance of the actual segment files

752
00:53:30,367 --> 00:53:32,887
because you're relying on

753
00:53:32,887 --> 00:53:36,927
the playlist, it has to only have one link

754
00:53:36,927 --> 00:53:38,747
like you can't have multiple

755
00:53:38,747 --> 00:53:42,567
links, say you were uploading to three Blossom servers

756
00:53:42,567 --> 00:53:47,207
you couldn't have like three Blossom links in a HLS playlist.

757
00:53:47,207 --> 00:53:50,607
So say you were getting censored by some Blossom server,

758
00:53:52,627 --> 00:53:56,987
the bridge wouldn't basically serve you a link to a dead link

759
00:53:56,987 --> 00:54:00,847
because it doesn't know if a file has been deleted or not or whatever.

760
00:54:02,127 --> 00:54:05,407
But with the native player you can detect failures.

761
00:54:05,587 --> 00:54:10,487
So if you try to download one of the segments and you get a 404,

762
00:54:10,487 --> 00:54:13,067
then you can just try one of the other Blossom servers

763
00:54:13,067 --> 00:54:17,907
that the streamer has in their Blossom server list.

764
00:54:18,747 --> 00:54:22,027
So that's where you get the censorship resistance part of this

765
00:54:22,027 --> 00:54:24,947
where you can upload to three Blossom servers

766
00:54:24,947 --> 00:54:25,927
or whatever you want

767
00:54:25,927 --> 00:54:29,227
and the player can automatically fail over

768
00:54:29,227 --> 00:54:31,807
to one of the other servers automatically.

769
00:54:32,707 --> 00:54:35,827
But if you're relying on the zap.stream bridge

770
00:54:35,827 --> 00:54:37,967
then we're kind of back to square one

771
00:54:37,967 --> 00:54:40,107
because if you get a denial of service attack

772
00:54:40,107 --> 00:54:43,367
then your bridge is under attack too and it'll be down.

773
00:54:44,267 --> 00:54:45,647
Yeah, I mean anyone can run a bridge though.

774
00:54:46,087 --> 00:54:50,667
So like again it's open source so anyone can run this N94 bridge

775
00:54:50,667 --> 00:54:55,627
which is, you know, it's in the same repository as the N94 program

776
00:54:55,627 --> 00:55:01,587
and it's also in the same repository as the new kind of centralized version

777
00:55:01,587 --> 00:55:05,307
of the streaming system called just ZapStream Core is what I'm calling it.

778
00:55:06,047 --> 00:55:08,547
So we have been using ZapStream Core for about a month

779
00:55:08,547 --> 00:55:10,487
So it works great.

780
00:55:10,907 --> 00:55:16,787
And I'm hoping that we can eventually migrate the current system

781
00:55:16,787 --> 00:55:18,607
onto this new ZapStream core system

782
00:55:18,607 --> 00:55:21,527
because it has a lot more flexibility and features

783
00:55:21,527 --> 00:55:22,987
and performance in general.

784
00:55:24,927 --> 00:55:28,567
By the way, Kiran, I know we've been sort of asking you questions

785
00:55:28,567 --> 00:55:32,807
to tease this out, and I haven't, or QW for that matter,

786
00:55:33,587 --> 00:55:35,547
we've not got the chance to pause and say,

787
00:55:35,547 --> 00:55:36,387
this is incredible.

788
00:55:36,387 --> 00:55:39,827
by the way, Kieran, what's coming, right?

789
00:55:40,067 --> 00:55:42,727
The fact that you put this much thought

790
00:55:42,727 --> 00:55:45,047
and frankly this much ingenuity

791
00:55:45,047 --> 00:55:48,747
into solving this incredibly difficult problem

792
00:55:48,747 --> 00:55:50,927
and all the constraints that you talk about,

793
00:55:51,407 --> 00:55:57,367
the HLS constraint, transcoding, and all of that.

794
00:55:57,627 --> 00:55:59,767
That's, yeah, I got to say,

795
00:55:59,887 --> 00:56:02,607
the fact that you've taken on this endeavor

796
00:56:02,607 --> 00:56:05,047
and have come this far on it is remarkable.

797
00:56:06,387 --> 00:56:15,307
Thanks. It's been a long journey. I'll tell you that much. It's not easy doing this.

798
00:56:15,307 --> 00:56:18,367
Would this be possible without Nostr?

799
00:56:18,367 --> 00:56:28,027
not really because you need the you need the nostre events in order to distribute the

800
00:56:28,027 --> 00:56:31,407
the links to all the segments and there isn't really any other

801
00:56:31,407 --> 00:56:41,647
kind of decentralized document graph is what i like to call it um that is you know compatible

802
00:56:41,647 --> 00:56:47,487
with this approach you can't you can't really just you can't post something on the internet

803
00:56:47,487 --> 00:56:49,527
let's say but of course we're talking about Noster

804
00:56:49,527 --> 00:56:50,987
Noster relays

805
00:56:50,987 --> 00:56:53,227
and have it be

806
00:56:53,227 --> 00:56:55,747
available and secure

807
00:56:55,747 --> 00:56:57,027
from tampering and

808
00:56:57,027 --> 00:56:59,207
signed so

809
00:56:59,207 --> 00:57:01,327
there isn't really any other way to

810
00:57:01,327 --> 00:57:02,967
to take this

811
00:57:02,967 --> 00:57:05,347
same approach on say

812
00:57:05,347 --> 00:57:07,167
you know Twitter or whatever

813
00:57:07,167 --> 00:57:08,667
PubKey

814
00:57:08,667 --> 00:57:11,087
haven't you heard that's the future

815
00:57:11,087 --> 00:57:13,207
I haven't

816
00:57:13,207 --> 00:57:14,747
I haven't actually looked at that so I have no

817
00:57:14,747 --> 00:57:15,687
comment there

818
00:57:15,687 --> 00:57:31,167
oh we won get into that uh no but i when i was listening to you it kind of like brought me back to um when you talking kind of about dissecting the decentralization and

819
00:57:31,167 --> 00:57:39,467
and spreading this all around essentially um it it it really i turned into a student and i thought

820
00:57:39,467 --> 00:57:45,327
about when i first got into nostr and i started thinking about these relays and just how revolutionized

821
00:57:45,327 --> 00:57:47,827
this would be revolutionizing.

822
00:57:48,467 --> 00:57:52,127
But when you started talking about decentralizing the streaming

823
00:57:52,127 --> 00:57:55,687
and having kind of this sovereign model,

824
00:57:57,067 --> 00:58:00,467
and DDoS attacks obviously is a big, big problem,

825
00:58:00,767 --> 00:58:05,267
but ways to mitigate it with just by spreading everything out.

826
00:58:05,267 --> 00:58:08,087
I mean, it just really, I had kind of the same feeling

827
00:58:08,087 --> 00:58:10,587
that I did when I first joined Nostr.

828
00:58:10,807 --> 00:58:13,927
And, you know, when we talk about Nostr's dad

829
00:58:13,927 --> 00:58:18,127
or Nostra's, you know, there's no one using it.

830
00:58:18,567 --> 00:58:19,587
Nostra doesn't care.

831
00:58:19,707 --> 00:58:20,507
The tools are here.

832
00:58:20,947 --> 00:58:24,447
They're available for people that want to actually solve problems.

833
00:58:24,867 --> 00:58:26,307
And it just works.

834
00:58:26,447 --> 00:58:29,107
So I was really happy to hear you talk about that.

835
00:58:29,327 --> 00:58:31,427
And I even texted Avi while you were talking.

836
00:58:31,547 --> 00:58:32,567
I'm like, man, this is actually,

837
00:58:33,307 --> 00:58:35,047
I'm really glad we had this conversation

838
00:58:35,047 --> 00:58:37,947
because people don't talk about the back end enough.

839
00:58:37,947 --> 00:58:40,867
And that's, it's beautiful to hear.

840
00:58:40,867 --> 00:58:45,187
and I'm looking forward for Avi to run a self-hosted server

841
00:58:45,187 --> 00:58:49,887
that I can put all my JPEGs on.

842
00:58:51,367 --> 00:58:58,647
By the way, Kieran, I guess the natural next question is when, right?

843
00:58:59,267 --> 00:59:00,287
When, when what?

844
00:59:01,307 --> 00:59:03,047
When can we start using this?

845
00:59:03,807 --> 00:59:04,167
Today.

846
00:59:05,887 --> 00:59:09,427
Is it fully up and running, backwards compatible with NIP53?

847
00:59:09,427 --> 00:59:34,947
The backwards compatible part has not been fully tested. You can just stream with only the NIP5e part, but it only will play back on zap.stream, the website. So that part has been tested. I've done a couple of streams so far using this N94 program.

848
00:59:34,947 --> 00:59:47,347
So it seems to work well. You just have to be careful about which Blossom servers that you use because there is a time constraint there about uploading segments.

849
00:59:47,347 --> 00:59:57,587
The program tries to manage the uploads as best as it can, because Sunblossom server takes too long.

850
00:59:58,527 --> 01:00:04,907
Because this is real-time data, it has to upload the file and be available as soon as possible.

851
01:00:05,647 --> 01:00:07,007
And not all Blossom servers do that.

852
01:00:07,327 --> 01:00:11,447
And also, Sunblossom servers don't allow uploading whatever you like.

853
01:00:12,227 --> 01:00:15,387
So you have to pick your Blossom servers, I guess.

854
01:00:15,387 --> 01:00:17,747
or make your own man

855
01:00:17,747 --> 01:00:19,347
that's how we roll right

856
01:00:19,347 --> 01:00:21,547
yeah you can definitely

857
01:00:21,547 --> 01:00:22,207
fully sovereign

858
01:00:22,207 --> 01:00:25,067
I mean I am using

859
01:00:25,067 --> 01:00:27,707
when I was running it I actually only used

860
01:00:27,707 --> 01:00:29,707
Noster Download which is the

861
01:00:29,707 --> 01:00:31,467
the Blossom server that I run

862
01:00:31,467 --> 01:00:33,887
because it kind of

863
01:00:33,887 --> 01:00:35,667
seemed to be the most responsive

864
01:00:35,667 --> 01:00:37,187
to me because I tried to use

865
01:00:37,187 --> 01:00:39,607
Blossom

866
01:00:39,607 --> 01:00:41,487
Band and I tried to use

867
01:00:41,487 --> 01:00:43,667
Primal's Blossom server

868
01:00:43,667 --> 01:00:51,167
and I think there sometimes there would be like a delay when using I believe it was Blossom

869
01:00:51,167 --> 01:00:55,987
Band or maybe it was a Primal Blossom server and that would kind of that's what made me you know

870
01:00:55,987 --> 01:01:02,187
fix the problem and try to to manage this and these upload delays so essentially if you're

871
01:01:02,187 --> 01:01:06,967
if you're using a Blossom server and it's not responding then it will just get disabled and it

872
01:01:06,967 --> 01:01:11,947
will it'll stop uploading to that server so you can give it like 10 servers and it will

873
01:01:11,947 --> 01:01:15,927
So it'll essentially pick three, let's say, and it will just use those.

874
01:01:16,067 --> 01:01:19,367
And if some of those start to fail, then it will switch to another one.

875
01:01:19,507 --> 01:01:25,287
And it'll essentially try to keep the stream running by picking the most available servers.

876
01:01:26,747 --> 01:01:31,527
So if someone wants to try this, and I might give it a whirl as well here, Kieran,

877
01:01:31,527 --> 01:01:33,567
but they just go to the repo.

878
01:01:33,667 --> 01:01:38,667
Do they have to build from source or is there a fully packaged app that they can download and install?

879
01:01:39,327 --> 01:01:40,927
Yeah, you have to build it right now.

880
01:01:40,927 --> 01:01:48,927
It's actually very easy, though, because if you just install the Rust compiler, there's like a one-line command to install it, pretty much.

881
01:01:49,587 --> 01:01:52,367
So it is very easy once you have the Rust tools installed.

882
01:01:52,507 --> 01:02:01,667
And there is some documentation on the repository on how to run it and how to configure it and all the different options on which Blossom servers to use.

883
01:02:01,907 --> 01:02:08,247
And, you know, there are many options that you can tweak, essentially, to get the best performance for out of it.

884
01:02:08,247 --> 01:02:11,467
but presumably

885
01:02:11,467 --> 01:02:14,567
over time

886
01:02:14,567 --> 01:02:16,527
there will be a package that can be

887
01:02:16,527 --> 01:02:17,987
installed more simply

888
01:02:17,987 --> 01:02:20,767
for non-technical streamers

889
01:02:20,767 --> 01:02:22,107
yeah of course I think

890
01:02:22,107 --> 01:02:24,247
eventually there will be some kind of a

891
01:02:24,247 --> 01:02:26,227
GUI app like a GUI

892
01:02:26,227 --> 01:02:28,347
that goes with it, right now it's just

893
01:02:28,347 --> 01:02:30,027
like a command line tool essentially

894
01:02:30,027 --> 01:02:31,747
so you have to run it from the terminal

895
01:02:31,747 --> 01:02:34,047
got it

896
01:02:34,047 --> 01:02:35,967
what is the latency by the way

897
01:02:35,967 --> 01:02:38,027
in your testing because it sounds like

898
01:02:38,027 --> 01:02:45,047
The way you're describing it, there are these fragments or segments that need to be put together and assembled and what have you.

899
01:02:45,547 --> 01:02:50,627
That sounds like it's potentially introducing a few seconds of delay.

900
01:02:50,787 --> 01:02:51,447
Have you seen that?

901
01:02:52,367 --> 01:02:54,907
It's pretty much exactly like HLS.

902
01:02:56,147 --> 01:02:57,847
It's actually some, it depends.

903
01:02:58,067 --> 01:03:03,007
There are many different features in HLS that you can use to improve latency.

904
01:03:03,007 --> 01:03:05,147
but if you just take HLS

905
01:03:05,147 --> 01:03:08,247
without all of the other advanced features

906
01:03:08,247 --> 01:03:09,587
then it's about the same as that.

907
01:03:10,227 --> 01:03:12,507
So it is around, you know,

908
01:03:12,967 --> 01:03:15,147
you always want to have a certain amount of buffer.

909
01:03:16,307 --> 01:03:18,027
You always want to be like a few seconds

910
01:03:18,027 --> 01:03:20,647
away from the live point

911
01:03:20,647 --> 01:03:22,407
because buffering and loading

912
01:03:22,407 --> 01:03:24,287
and those things take time

913
01:03:24,287 --> 01:03:25,667
so it's usually better to be

914
01:03:25,667 --> 01:03:29,347
like 10 seconds away from the live time.

915
01:03:29,347 --> 01:03:33,267
which I think is what

916
01:03:33,267 --> 01:03:35,647
Zap.Stream is today

917
01:03:35,647 --> 01:03:36,067
even

918
01:03:36,067 --> 01:03:39,027
yeah because Zap.Stream just uses the basic

919
01:03:39,027 --> 01:03:41,027
HLS it doesn't use any of the

920
01:03:41,027 --> 01:03:42,807
the low latency HLS

921
01:03:42,807 --> 01:03:44,287
although that is supported

922
01:03:44,287 --> 01:03:46,047
let me just

923
01:03:46,047 --> 01:03:48,927
mention that low latency HLS should

924
01:03:48,927 --> 01:03:50,527
be supported in the Zap.Stream core

925
01:03:50,527 --> 01:03:52,967
which is kind of the self-hosted

926
01:03:52,967 --> 01:03:54,007
Zap.Stream backend

927
01:03:54,007 --> 01:03:56,187
so that will be available

928
01:03:56,187 --> 01:03:58,247
in the future if you want

929
01:03:58,247 --> 01:04:00,827
if you want lower latency streams.

930
01:04:01,547 --> 01:04:04,187
But for the NIP5E streams,

931
01:04:04,407 --> 01:04:06,787
you probably want to have more delay

932
01:04:06,787 --> 01:04:10,087
just because you have to upload the segments,

933
01:04:10,267 --> 01:04:11,407
you have to replicate the segments.

934
01:04:11,407 --> 01:04:14,407
It is a more...

935
01:04:15,167 --> 01:04:19,327
You are limited to how short the segments can be

936
01:04:19,327 --> 01:04:21,887
because of the processing that goes on.

937
01:04:22,247 --> 01:04:24,347
When you have your own streaming server

938
01:04:24,347 --> 01:04:27,367
and you're just writing a file to the disk,

939
01:04:27,367 --> 01:04:29,307
obviously there's hardly any delay

940
01:04:29,307 --> 01:04:32,567
with processing the individual segments

941
01:04:32,567 --> 01:04:33,767
so they can be much shorter

942
01:04:33,767 --> 01:04:36,567
if you have your centralized version.

943
01:04:38,367 --> 01:04:42,407
So if I wanted to be a truly sovereign streamer

944
01:04:42,407 --> 01:04:46,467
then I would switch to OBS from Riverside

945
01:04:46,467 --> 01:04:48,447
run my own Blossom server

946
01:04:48,447 --> 01:04:53,427
run or build N94

947
01:04:53,427 --> 01:04:57,807
and I'm basically off to the races at that point, right?

948
01:04:57,907 --> 01:04:59,387
I can stream on OBS.

949
01:05:01,007 --> 01:05:03,767
And in that scenario, I just need my Blossom server

950
01:05:03,767 --> 01:05:04,687
because it's mine.

951
01:05:05,587 --> 01:05:07,607
I wouldn't need to select three or four, right?

952
01:05:07,767 --> 01:05:10,287
Maybe I could for redundancy if I really wanted to.

953
01:05:12,107 --> 01:05:16,587
And then anyone, it would show up on Amethyst or Nostra

954
01:05:16,587 --> 01:05:17,847
or even on Zap.stream.

955
01:05:17,967 --> 01:05:19,687
If people went there, they'd be able to see my stream.

956
01:05:20,067 --> 01:05:21,107
Is that fair?

957
01:05:21,107 --> 01:05:47,887
Yeah, you could even run a relay. So you could run a relay, a Blossom server, and then you would just publish your stream only to those relays or to multiple relays or to multiple Blossom servers. It's really up to you. But if you're running your own Blossom server and your own relay, then you might as well just run the Zapstream backend and have a centralized thing, unless you want to redistribute it or make it more kind of censorship resistant.

958
01:05:47,887 --> 01:05:51,547
So let's talk about cost.

959
01:05:51,687 --> 01:05:55,927
So today, right, we use Zap.Stream and we pay whatever sats per minute,

960
01:05:56,027 --> 01:05:57,087
whatever the cost is, right?

961
01:05:57,167 --> 01:05:59,707
And it's day minimus, by the way, for our streams.

962
01:06:01,827 --> 01:06:05,467
If I wanted to do it this fully self-sovereign way,

963
01:06:06,307 --> 01:06:10,267
my only cost in that scenario, again, we'd have to go through Riverside, right?

964
01:06:10,307 --> 01:06:12,367
The OBS was just an example I used.

965
01:06:12,367 --> 01:06:14,687
If we're doing it through Riverside,

966
01:06:14,687 --> 01:06:18,167
we'd have to spin up some kind of, you know,

967
01:06:18,487 --> 01:06:24,447
VPS or whatever where we're hosting the N94 program.

968
01:06:24,807 --> 01:06:29,327
So we'd have to pay whatever cost per month on that.

969
01:06:30,147 --> 01:06:33,327
And then I guess that's it, right?

970
01:06:33,607 --> 01:06:35,947
Or would we have to pay for anything else beyond that?

971
01:06:38,307 --> 01:06:39,167
Not really, yeah.

972
01:06:39,187 --> 01:06:40,707
Like most of the Blossom servers are free,

973
01:06:40,887 --> 01:06:42,967
so you don't really have to pay for Blossom

974
01:06:42,967 --> 01:06:44,147
or for Nostro Relays.

975
01:06:44,147 --> 01:06:45,867
So that part is free.

976
01:06:45,947 --> 01:06:49,387
You only have the cost of transcoding the stream

977
01:06:49,387 --> 01:06:51,887
and uploading it to those Blossom servers.

978
01:06:52,467 --> 01:06:55,847
So there's a certain amount of resources needed

979
01:06:55,847 --> 01:06:58,647
to process the stream in real time.

980
01:07:02,527 --> 01:07:07,167
There's a question from the audience, HZRD.

981
01:07:07,267 --> 01:07:09,327
I'm imagining that's Hazard149.

982
01:07:09,747 --> 01:07:11,707
How does replaying the streams work?

983
01:07:11,707 --> 01:07:18,287
does the client just replay all the events and get the chunks yeah so the way the way that it

984
01:07:18,287 --> 01:07:24,667
works now is like the way the n94 works right now is that's not an option because we want to clean

985
01:07:24,667 --> 01:07:30,567
up the files on the blossom servers we don't want to have like 10 000 you know video files stored on

986
01:07:30,567 --> 01:07:36,147
your blossom server although it could work like that um so if you wanted to have like a fully

987
01:07:36,147 --> 01:07:42,207
recorded stream available on Blossom, then yes, you would have to load all of the N94

988
01:07:42,207 --> 01:07:57,787
events to get all of the links to all of the segments So that why I said you want to have a longer segment time just because of that reason as well You don want to have 10 segments because then you have 10 NOSTER events

989
01:07:58,607 --> 01:08:02,507
You want to have much longer segments so you have fewer of them.

990
01:08:03,607 --> 01:08:07,567
And that will obviously be a lot easier to load off NOSTER relays.

991
01:08:07,567 --> 01:08:15,627
that is configurable though in the N94 program

992
01:08:15,627 --> 01:08:18,887
so you can specify how long the segments are

993
01:08:18,887 --> 01:08:23,527
so if you plan on recording it or leaving the segments uploaded on Blossom

994
01:08:23,527 --> 01:08:27,247
then you can set like a 10 second segment size

995
01:08:27,247 --> 01:08:28,887
or 20 seconds or whatever

996
01:08:28,887 --> 01:08:35,307
yeah and his reply, cool, so the chunks are optimized for live streaming

997
01:08:35,307 --> 01:08:37,887
then the recorded video would be uploaded later.

998
01:08:38,567 --> 01:08:39,687
You could also do that, yeah.

999
01:08:39,807 --> 01:08:42,247
That's how we do it with NIMP 53.

1000
01:08:43,207 --> 01:08:45,067
There's a separate tag for recordings.

1001
01:08:45,207 --> 01:08:45,887
You could just do that.

1002
01:08:47,387 --> 01:08:51,227
I mean, recording is actually supported in N94 as well

1003
01:08:51,227 --> 01:08:55,867
because it's essentially, it is the Zapstream core system,

1004
01:08:56,347 --> 01:09:00,087
but it's kind of repurposed for this specific use case.

1005
01:09:00,527 --> 01:09:01,767
So it does support recording.

1006
01:09:01,767 --> 01:09:03,967
so you could have like a

1007
01:09:03,967 --> 01:09:06,667
one file that you have at the very end

1008
01:09:06,667 --> 01:09:08,847
this isn't how it works right now

1009
01:09:08,847 --> 01:09:10,707
but you could have it record

1010
01:09:10,707 --> 01:09:12,767
your live stream as well into a single file

1011
01:09:12,767 --> 01:09:14,107
and then just upload that at the end

1012
01:09:14,107 --> 01:09:16,287
and then tag that onto the

1013
01:09:16,287 --> 01:09:18,787
on the end

1014
01:09:18,787 --> 01:09:20,507
of the stream to say like here's the recording

1015
01:09:20,507 --> 01:09:22,227
of the whole thing in one file

1016
01:09:22,227 --> 01:09:26,827
by the way

1017
01:09:26,827 --> 01:09:28,367
I might be mistaken here

1018
01:09:28,367 --> 01:09:30,727
QW, maybe Karen you know this

1019
01:09:30,727 --> 01:09:36,147
but the person who's asked the questions hazard 149 isn't that the inventor of blossom

1020
01:09:36,147 --> 01:09:45,267
yeah he he is the one who created the blossom spec yeah yeah good stuff you gotta love when

1021
01:09:45,267 --> 01:09:51,267
you invent something and you're not sure what people do with it after that yeah well that's uh

1022
01:09:51,267 --> 01:09:57,567
we'll see what uh zap.stream core uh is something someone's going to do with that in about a year's

1023
01:09:57,567 --> 01:10:05,947
time so speaking of that uh nostre net when nostre nest core uh have you been working on

1024
01:10:05,947 --> 01:10:12,007
nostre nest lately any status uh this sounds like it's the zap dot stream is definitely the passion

1025
01:10:12,007 --> 01:10:18,667
project and it's exciting so i can understand why time becomes the scarcity but uh you want to talk

1026
01:10:18,667 --> 01:10:27,347
about nostre nest yeah i i haven't done really anything on nostre nest in a long time um abandoned

1027
01:10:27,347 --> 01:10:28,987
Abandonware, Avi. Abandonware.

1028
01:10:29,407 --> 01:10:31,787
I'm still available if there's some work to do.

1029
01:10:31,867 --> 01:10:33,367
I just haven't been asked to do anything.

1030
01:10:33,367 --> 01:10:39,187
So there was one point in the beginning of developing ZapStream Core

1031
01:10:39,187 --> 01:10:45,767
where I wanted to kind of build something also for NostraNest.

1032
01:10:45,927 --> 01:10:50,107
But the way that the development went with ZapStream Core

1033
01:10:50,107 --> 01:10:54,287
is I got stuck for a long time with various issues

1034
01:10:54,287 --> 01:10:57,507
trying to do the transcoding because it's really complicated.

1035
01:10:58,747 --> 01:11:01,147
And then that also got left on the side.

1036
01:11:01,227 --> 01:11:05,687
But essentially what I was building there was the Noster Nests,

1037
01:11:05,687 --> 01:11:10,167
it uses what's called LiveKit, which is like an open source,

1038
01:11:10,567 --> 01:11:13,247
kind of like an open source Riverside, I guess.

1039
01:11:14,287 --> 01:11:16,107
It actually, yeah, it's very similar to Riverside.

1040
01:11:18,127 --> 01:11:20,267
But they have this system called an egress,

1041
01:11:20,267 --> 01:11:27,167
which lets you essentially take an audio feed or a video feed out of the meeting.

1042
01:11:27,887 --> 01:11:29,867
In the same way that exactly what Riverside does,

1043
01:11:29,987 --> 01:11:35,967
it lets you put in a streaming server and it will essentially stream the group call

1044
01:11:35,967 --> 01:11:38,247
to a regular live streaming server.

1045
01:11:39,007 --> 01:11:40,347
So LiveKit also has this feature.

1046
01:11:41,787 --> 01:11:44,267
But in order to get an audio-only stream,

1047
01:11:45,947 --> 01:11:48,967
you have to use, it basically emulates a browser.

1048
01:11:48,967 --> 01:11:54,287
So it uses like three gigabytes of RAM and it's very resource intensive.

1049
01:11:54,827 --> 01:12:04,667
And I was trying to build essentially like a very lightweight audio only HLS, you know, thing so that you could get an audio.

1050
01:12:04,967 --> 01:12:14,327
You get audio stream from every single Nostra Nests room that would be posted to Zapstream, you know, as NIP53 events.

1051
01:12:14,327 --> 01:12:17,487
so people could listen to the stream without a video

1052
01:12:17,487 --> 01:12:21,507
and just have like a lightweight audio stream only on Zap.Stream.

1053
01:12:21,507 --> 01:12:26,067
But that's still, you know, on the side and needs work.

1054
01:12:28,247 --> 01:12:30,407
And that used to be the case, right?

1055
01:12:30,467 --> 01:12:34,207
I remember when we used to use Nostanas,

1056
01:12:34,367 --> 01:12:37,187
we used to check the box that says stream to Zap.Stream.

1057
01:12:38,547 --> 01:12:42,527
Yeah, that's the egress thing I'm mentioning.

1058
01:12:42,527 --> 01:12:49,527
So essentially it runs this egress process and it uses like a, it emulates a browser.

1059
01:12:49,707 --> 01:12:50,827
It is a browser essentially.

1060
01:12:51,287 --> 01:12:59,327
It spins up a browser in the background and essentially screen captures the browser and then sends that to Zapstream.

1061
01:13:02,447 --> 01:13:05,647
But there was no egress presumably?

1062
01:13:06,447 --> 01:13:08,907
No, it's just really like really heavy process.

1063
01:13:08,907 --> 01:13:11,387
so I was trying to build something more lightweight

1064
01:13:11,387 --> 01:13:12,727
where you could get only audio.

1065
01:13:13,827 --> 01:13:15,707
Because I guess it didn't work that well,

1066
01:13:15,767 --> 01:13:17,727
as far as I remember, from Noster Nests.

1067
01:13:18,447 --> 01:13:19,027
It did not.

1068
01:13:20,067 --> 01:13:20,407
Yeah.

1069
01:13:22,067 --> 01:13:23,827
It was hit or miss.

1070
01:13:24,367 --> 01:13:25,667
That's what we found.

1071
01:13:25,907 --> 01:13:27,587
There would be some episodes that made it

1072
01:13:27,587 --> 01:13:28,507
and some that didn't.

1073
01:13:29,747 --> 01:13:30,767
Yeah, that's the egress.

1074
01:13:30,767 --> 01:13:34,187
I mean, I can't really say more on it than that.

1075
01:13:34,267 --> 01:13:36,807
It's a very heavyweight process,

1076
01:13:36,807 --> 01:13:39,767
so I guess maybe server resources were limited

1077
01:13:39,767 --> 01:13:42,347
or something like that.

1078
01:13:43,187 --> 01:13:47,067
Have no fear, Derek Ross will vibe it back to existence.

1079
01:13:47,287 --> 01:13:47,667
Absolutely.

1080
01:13:48,867 --> 01:13:52,867
I think they also switched to a new event kind on NosterNest,

1081
01:13:53,007 --> 01:13:58,207
so it's already been semi-vibed, some of it, at this point.

1082
01:14:01,007 --> 01:14:04,407
Hopefully it works vibed one day, so we'll see.

1083
01:14:04,407 --> 01:14:06,987
You know what? It is what it is, though.

1084
01:14:07,087 --> 01:14:10,807
I mean, if I want to go out and chat, if I want to have a little meeting, I'm going to Nostra Nest.

1085
01:14:11,527 --> 01:14:13,907
You know, we were kind of hacking it in a way.

1086
01:14:14,067 --> 01:14:18,467
We were trying to squeeze, you know, lemon juice out of an orange.

1087
01:14:18,847 --> 01:14:21,107
And that's kind of what we've always done, huh, Avi?

1088
01:14:23,007 --> 01:14:24,687
MacGyver it, man. That's what we do.

1089
01:14:24,687 --> 01:14:26,487
Yeah, that's it.

1090
01:14:26,487 --> 01:14:33,127
So on that same kind of what else, what's happening to snort?

1091
01:14:33,127 --> 01:14:36,187
that was your first Nostra baby correct

1092
01:14:36,187 --> 01:14:38,207
yes Snort has

1093
01:14:38,207 --> 01:14:40,407
Snort has had a few

1094
01:14:40,407 --> 01:14:41,707
small updates

1095
01:14:41,707 --> 01:14:44,667
it has been renamed to Phoenix

1096
01:14:44,667 --> 01:14:45,347
Social

1097
01:14:45,347 --> 01:14:48,947
after all these two years

1098
01:14:48,947 --> 01:14:50,747
of being called Snort

1099
01:14:50,747 --> 01:14:52,207
I decided to rename it

1100
01:14:52,207 --> 01:14:54,687
I've always thought about renaming it

1101
01:14:54,687 --> 01:14:55,527
I just couldn't really

1102
01:14:55,527 --> 01:14:58,487
come up with a name, a nice name

1103
01:14:58,487 --> 01:14:59,847
or have like a good domain name

1104
01:14:59,847 --> 01:15:02,527
so it's now called Phoenix.social

1105
01:15:02,527 --> 01:15:11,007
that's an homage to my hometown right of course yeah i figured i always have you in the back of my

1106
01:15:11,007 --> 01:15:18,167
mind so well my son's named after a castle in ireland so right back at you buddy

1107
01:15:18,167 --> 01:15:26,667
but in terms of updates i guess um there has been only i did add nosturness support to snort

1108
01:15:26,667 --> 01:15:30,387
a couple of months ago, I guess it was.

1109
01:15:31,027 --> 01:15:32,167
So that is new.

1110
01:15:34,387 --> 01:15:37,247
And then aside from that, I added the follow packs

1111
01:15:37,247 --> 01:15:41,907
and I think I added the, you know, the,

1112
01:15:42,767 --> 01:15:44,387
like, I don't know what the NIP number is,

1113
01:15:44,467 --> 01:15:49,487
but it's the picture feeds, Olaz feeds.

1114
01:15:49,487 --> 01:15:51,667
Yeah, that's supported as well in Snort,

1115
01:15:52,307 --> 01:15:54,347
as well as shorts, I believe.

1116
01:15:54,347 --> 01:15:58,747
So there's a bunch of new kinds supported, but I don't think anyone uses them.

1117
01:15:58,987 --> 01:15:59,927
So I don't know.

1118
01:16:00,687 --> 01:16:01,587
What are the shorts?

1119
01:16:01,887 --> 01:16:02,907
What is the shorts kind?

1120
01:16:04,927 --> 01:16:07,127
NIP 71 or 2, I think.

1121
01:16:07,567 --> 01:16:15,127
It's, yeah, it's kind number 22, I guess, or 20, yeah, 22.

1122
01:16:15,807 --> 01:16:18,967
So the picture feeds are kind 20, I believe.

1123
01:16:18,967 --> 01:16:28,667
and the video like the normal portrait video kind is kind 20 and then the short kind is 21

1124
01:16:28,667 --> 01:16:37,547
we also support those kinds on zap.stream and snort and another another app that i built which is

1125
01:16:37,547 --> 01:16:46,087
free flow which is essentially a tiktok clone which does only short videos in portrait

1126
01:16:46,087 --> 01:16:52,247
that is also needing a lot of work now that i'm reminded of it

1127
01:16:52,807 --> 01:16:57,107
free flow how come we never heard of this qw

1128
01:16:57,107 --> 01:17:07,987
i don't know i he he's reminding himself of it too so that's yeah yeah how is it working on so

1129
01:17:07,987 --> 01:17:13,267
many projects that you you forget about some i i definitely forget about a lot of them

1130
01:17:13,267 --> 01:17:22,707
uh free flow yeah it was uh it was before i i i built the zapstream app so there is like a

1131
01:17:22,707 --> 01:17:29,747
there's a zapstream native app that you can get on android and ios so it's it's completely

1132
01:17:29,747 --> 01:17:34,427
different than the website the zap.stream website it's completely separate code base

1133
01:17:34,427 --> 01:17:39,167
and before I built that I was building FreeFlow

1134
01:17:39,167 --> 01:17:42,347
which is a Flutter app

1135
01:17:42,347 --> 01:17:44,047
which is the same as the Zapstream app

1136
01:17:44,047 --> 01:17:48,267
and it's essentially just a short video client

1137
01:17:48,267 --> 01:17:51,587
where you can scroll up and down

1138
01:17:51,587 --> 01:17:53,667
in the same way that you would on TikTok

1139
01:17:53,667 --> 01:17:55,507
or YouTube Shorts

1140
01:17:55,507 --> 01:17:59,367
or any of the other Shorts platforms

1141
01:17:59,367 --> 01:18:01,467
and you can post there

1142
01:18:01,467 --> 01:18:04,807
So you can post your short videos there.

1143
01:18:04,807 --> 01:18:07,647
And there's a little bit of editing built into it,

1144
01:18:07,647 --> 01:18:09,707
so you can kind of clip videos together.

1145
01:18:09,707 --> 01:18:24,807
And I don think anyone uses it but it there It needs more work But in terms of using it to watch short videos I mean it works pretty well So let me ask you a question

1146
01:18:24,807 --> 01:18:25,647
Not that anyone uses it, I believe.

1147
01:18:27,107 --> 01:18:29,927
Kieran, on that point of having different kinds,

1148
01:18:30,067 --> 01:18:32,327
I think you were saying this is kind 21,

1149
01:18:32,647 --> 01:18:35,967
and then Olaz is using a separate photo kind.

1150
01:18:37,327 --> 01:18:42,027
I understand the motivation behind trying to do that, right?

1151
01:18:42,027 --> 01:18:49,807
having the goal being you can have different apps for these different use cases or different user

1152
01:18:49,807 --> 01:18:58,027
needs i think the danger there and perhaps we're seeing that play play out right all us had some

1153
01:18:58,027 --> 01:19:04,547
initial uh usage seems to have tapered off i'm happy to stand corrected here by the way and then

1154
01:19:04,547 --> 01:19:10,987
from what you're saying on free flow doesn't seem to be much adoption is there a danger of introducing

1155
01:19:10,987 --> 01:19:18,447
fragmentation when you pigeonhole different content types like short portrait videos images

1156
01:19:18,447 --> 01:19:25,987
into their own kind so that they can have custom clients for them like olas or like free flow as

1157
01:19:25,987 --> 01:19:34,087
opposed to having them all show up in amethyst or primal or you know as stunned or or maybe working

1158
01:19:34,087 --> 01:19:35,047
with

1159
01:19:35,047 --> 01:19:38,127
Amethyst or Primal to say, hey, do you want

1160
01:19:38,127 --> 01:19:39,507
to accept

1161
01:19:39,507 --> 01:19:41,967
Kind 2021

1162
01:19:41,967 --> 01:19:42,907
and what have you?

1163
01:19:46,587 --> 01:19:47,147
Well,

1164
01:19:48,147 --> 01:19:50,087
Olas does support shorts

1165
01:19:50,087 --> 01:19:51,387
and

1166
01:19:51,387 --> 01:19:53,807
it is the same

1167
01:19:53,807 --> 01:19:55,287
short kind as

1168
01:19:55,287 --> 01:19:57,227
the free flow kind, so

1169
01:19:57,227 --> 01:19:59,927
it's already

1170
01:19:59,927 --> 01:20:01,727
interoperable. I guess the point about

1171
01:20:01,727 --> 01:20:02,567
kinds is like

1172
01:20:02,567 --> 01:20:05,527
they need to be presented in different ways.

1173
01:20:05,727 --> 01:20:08,287
You can't present a short video.

1174
01:20:09,867 --> 01:20:11,647
How do you determine what's a short

1175
01:20:11,647 --> 01:20:14,327
supposed to be rendered as

1176
01:20:14,327 --> 01:20:17,147
a scrollable short video portrait

1177
01:20:17,147 --> 01:20:20,367
in a kind one? There's no way to really

1178
01:20:20,367 --> 01:20:23,627
do that. It needs to be presented

1179
01:20:23,627 --> 01:20:26,707
in a different way to the user and it needs to be filtered

1180
01:20:26,707 --> 01:20:29,727
in a different way. If you're in a client that's a shorts

1181
01:20:29,727 --> 01:20:34,827
client then you need to only search for a certain type of event like you don't want to search for

1182
01:20:34,827 --> 01:20:40,347
all kind ones and filter through them to find you know which is a short video for example like you

1183
01:20:40,347 --> 01:20:47,007
wouldn't even want to do to reuse the kinds just just for that reason alone and that would be the

1184
01:20:47,007 --> 01:20:55,327
main reason and in terms of compatibility with other clients this is a this is a standard it's

1185
01:20:55,327 --> 01:21:02,907
already in one of the nips, so it's just really up to clients to support these different feeds.

1186
01:21:02,907 --> 01:21:08,327
Like Ola supports photos and short videos, and the short videos that are posted on Ola

1187
01:21:08,327 --> 01:21:16,887
is available on FreeFlow and on Zapstream, so they're all the same kind.

1188
01:21:16,887 --> 01:21:22,327
You can also post videos and shorts on Zap.Stream.

1189
01:21:22,327 --> 01:21:24,467
It just seems like nobody uses it yet again.

1190
01:21:25,227 --> 01:21:28,187
Maybe I'm bad at advertising or something.

1191
01:21:29,987 --> 01:21:34,127
Hey, Kieran, your audio has gone pretty quiet all of a sudden

1192
01:21:34,127 --> 01:21:36,627
in the last 30 seconds or so.

1193
01:21:39,807 --> 01:21:41,127
Did you tweak a setting?

1194
01:21:41,127 --> 01:21:41,687
Test, test.

1195
01:21:43,767 --> 01:21:45,067
I didn't touch anything.

1196
01:21:45,827 --> 01:21:46,787
Maybe the wire?

1197
01:21:47,727 --> 01:21:48,987
I didn't touch anything.

1198
01:21:50,207 --> 01:21:50,687
Okay.

1199
01:21:51,167 --> 01:21:51,387
All right.

1200
01:21:51,387 --> 01:21:53,407
This is what I said earlier before we started.

1201
01:21:53,987 --> 01:21:57,267
Something will lower my mind.

1202
01:21:57,267 --> 01:21:57,987
It's all good.

1203
01:21:59,387 --> 01:22:00,527
Just start yelling.

1204
01:22:01,267 --> 01:22:01,647
Okay.

1205
01:22:04,087 --> 01:22:13,907
I do have one question that I just thought of because it's almost been a year now since you had the OpenSats long-term support.

1206
01:22:15,787 --> 01:22:18,287
How has that changed or helped?

1207
01:22:19,047 --> 01:22:21,067
Just kind of talk about the impact of that

1208
01:22:21,067 --> 01:22:22,587
for a developer like yourself.

1209
01:22:23,707 --> 01:22:25,607
It's really a miracle, honestly.

1210
01:22:29,027 --> 01:22:30,687
Like nothing that I've built so far

1211
01:22:30,687 --> 01:22:31,567
would even be possible

1212
01:22:31,567 --> 01:22:33,647
without funding from OpenSats.

1213
01:22:35,127 --> 01:22:37,407
Like there's no world where

1214
01:22:37,407 --> 01:22:38,787
these things get built

1215
01:22:38,787 --> 01:22:40,247
and are available open source

1216
01:22:40,247 --> 01:22:43,447
in this kind of short of a timeline.

1217
01:22:44,167 --> 01:22:46,067
Like there are obviously open source projects

1218
01:22:46,067 --> 01:22:49,767
that go on for years on people's free time.

1219
01:22:51,347 --> 01:22:53,807
But to have people full-time working on this

1220
01:22:53,807 --> 01:22:55,467
is really amazing.

1221
01:22:55,727 --> 01:22:57,947
And I'm super grateful to do this.

1222
01:22:58,108 --> 01:23:01,887
I mean, it was only before I started building on Noster,

1223
01:23:02,027 --> 01:23:07,787
I was just imagining this ability to work on,

1224
01:23:08,027 --> 01:23:10,647
like I had this drive really to work on open source.

1225
01:23:11,407 --> 01:23:14,587
And it kind of was a dream that I actually had in my mind.

1226
01:23:14,587 --> 01:23:21,947
and actually Rockstar was essentially my boss at the time

1227
01:23:21,947 --> 01:23:26,967
and I did actually talk to him about working on open source full time

1228
01:23:26,967 --> 01:23:30,167
and it just kind of happened which is very cool

1229
01:23:30,167 --> 01:23:34,187
and I'm really happy to work on open source

1230
01:23:34,187 --> 01:23:36,327
and to work on things that I really care about

1231
01:23:36,327 --> 01:23:38,647
and I'm really excited about as well

1232
01:23:38,647 --> 01:23:44,707
You don't often get the chance to have these projects

1233
01:23:44,707 --> 01:23:47,447
that you genuinely are excited to work on.

1234
01:23:47,667 --> 01:23:49,907
It's not like a regular 9 to 5.

1235
01:23:51,327 --> 01:23:54,807
That is why I built Zapstream.

1236
01:23:55,487 --> 01:23:57,907
I was always interested in live streaming

1237
01:23:57,907 --> 01:24:01,627
and I was always an avid user of Twitch.

1238
01:24:01,907 --> 01:24:02,687
Not so much anymore.

1239
01:24:04,027 --> 01:24:07,787
But I always thought it was a very interesting technical problem.

1240
01:24:08,647 --> 01:24:14,567
in processing these live streams in real time and distributing them it's very complicated technical

1241
01:24:14,567 --> 01:24:21,927
thing and that's also why I built free flow because it's in the same the same vein like

1242
01:24:21,927 --> 01:24:27,608
what what tiktok is doing or what instagram shorts is doing is really like very complicated

1243
01:24:27,608 --> 01:24:35,447
serving all of this content to so many people and that's what that's what drives me to to work on

1244
01:24:35,447 --> 01:24:40,227
it is just a very interesting problem to work on and you wouldn't get this opportunity unless you

1245
01:24:40,227 --> 01:24:46,567
worked at twitch or whatever but you still wouldn't get the same experience that you get working on

1246
01:24:46,567 --> 01:24:50,987
these projects by yourself or with a few smaller teams

1247
01:24:50,987 --> 01:25:03,207
there's a there's a theory in the audience hobby um lsat said irish pm jim ogulinghand

1248
01:25:03,207 --> 01:25:06,207
has reduced Kieran's mic to 8-bit quality.

1249
01:25:07,927 --> 01:25:08,727
Is it really?

1250
01:25:08,807 --> 01:25:09,587
Oh, man.

1251
01:25:10,608 --> 01:25:14,007
It got low, but I can mess with it post-production.

1252
01:25:15,187 --> 01:25:17,467
I told you this would happen at the very beginning.

1253
01:25:17,627 --> 01:25:20,567
I'm like, every time I try to speak louder,

1254
01:25:21,367 --> 01:25:23,187
the OS makes me quieter.

1255
01:25:23,187 --> 01:25:26,187
So I have to be very careful not to speak too loudly.

1256
01:25:27,127 --> 01:25:29,067
Yeah, well, we're at the end of the show, too.

1257
01:25:29,307 --> 01:25:30,727
So, I mean, we survived.

1258
01:25:30,727 --> 01:25:34,108
Avi, anything else you wanted to ask here?

1259
01:25:34,887 --> 01:25:37,827
No, this is extremely educational, Karen,

1260
01:25:37,967 --> 01:25:39,527
learning about all of this.

1261
01:25:41,007 --> 01:25:45,207
Perhaps you will make sovereign streamers out of us yet,

1262
01:25:45,947 --> 01:25:47,567
but that remains to be seen.

1263
01:25:48,108 --> 01:25:50,887
I'm a little, I have a, maybe I'll wait for the...

1264
01:25:50,887 --> 01:25:52,947
Avi, there's a new, there's a,

1265
01:25:52,947 --> 01:25:58,627
there's a new form of purity that we have to pass now, right?

1266
01:25:59,267 --> 01:25:59,547
Yeah.

1267
01:25:59,547 --> 01:26:02,007
Are you running your own Blossom server, bro?

1268
01:26:02,007 --> 01:26:04,387
We have to get our sovereign stack of streaming.

1269
01:26:05,567 --> 01:26:07,467
Are you running a Blossom server, bro?

1270
01:26:07,587 --> 01:26:09,207
Are you running your own Relay, bro?

1271
01:26:09,407 --> 01:26:11,907
Are you running your own NIP94 stream, bro?

1272
01:26:18,087 --> 01:26:19,647
That was awesome.

1273
01:26:20,567 --> 01:26:24,507
Anything else you want to plug before we wrap this?

1274
01:26:24,507 --> 01:26:28,967
yeah I guess

1275
01:26:28,967 --> 01:26:31,227
run Zapstream core

1276
01:26:31,227 --> 01:26:32,887
eventually we're going to have

1277
01:26:32,887 --> 01:26:35,367
on Zap.stream we will have

1278
01:26:35,367 --> 01:26:37,467
many providers

1279
01:26:37,467 --> 01:26:38,787
with many

1280
01:26:38,787 --> 01:26:41,647
with the interface to select from them

1281
01:26:41,647 --> 01:26:43,987
so you can have the possibility

1282
01:26:43,987 --> 01:26:45,887
of earning sats if you run your own

1283
01:26:45,887 --> 01:26:47,887
streaming server, you can set your own prices

1284
01:26:47,887 --> 01:26:50,187
and people can use it

1285
01:26:50,187 --> 01:26:51,827
and maybe that's

1286
01:26:51,827 --> 01:26:54,087
better as well

1287
01:26:54,087 --> 01:26:55,727
for certain different regions.

1288
01:26:55,947 --> 01:26:59,407
Maybe there's a community in Africa

1289
01:26:59,407 --> 01:27:00,507
that wants to live stream,

1290
01:27:00,687 --> 01:27:06,108
but the latency of getting streams delivered in Africa

1291
01:27:06,108 --> 01:27:09,628
is not as good as hosting things from Ireland,

1292
01:27:09,707 --> 01:27:10,587
which is where I host everything.

1293
01:27:11,628 --> 01:27:13,027
So there's also that angle

1294
01:27:13,027 --> 01:27:16,187
because there are some Thai streamers

1295
01:27:16,187 --> 01:27:17,487
who run their own stream

1296
01:27:17,487 --> 01:27:20,747
because it's faster for them to host it in Thailand.

1297
01:27:20,747 --> 01:27:28,827
and also run Route 96, which is my Blossom server.

1298
01:27:29,087 --> 01:27:31,927
So if you're looking for some Blossom software to run,

1299
01:27:31,987 --> 01:27:34,667
you can run Route 96, which is a Blossom server that I built as well.

1300
01:27:36,227 --> 01:27:40,527
And yeah, check out FreeFlow if you like shorts and start posting there.

1301
01:27:40,527 --> 01:27:44,307
I'm really trying to get more people to post shorts on FreeFlow.

1302
01:27:44,667 --> 01:27:45,967
And yeah, that's it.

1303
01:27:47,507 --> 01:27:50,007
Hashtag FreeFlow365.

1304
01:27:50,147 --> 01:27:50,547
Yes.

1305
01:27:50,747 --> 01:27:58,207
hey i'm gonna put all this in the show notes so um you know we'll make sure that we have a nice

1306
01:27:58,207 --> 01:28:04,547
little laundry list of uh kieran's projects and then that zap dutch and core uh really exciting

1307
01:28:04,547 --> 01:28:11,967
stuff i'm i was not expecting um those kind of updates and that kind of uh this bullish uh

1308
01:28:11,967 --> 01:28:18,787
bullish on nostr that i that i took from the show um super super excited um anything else javi

1309
01:28:18,787 --> 01:28:22,647
no thank you again karen this is great

1310
01:28:22,647 --> 01:28:31,507
thanks for having me on yeah thank you yeah and everyone thank you for tuning in to pleb chain

1311
01:28:31,507 --> 01:28:36,807
radio if you appreciate us as much as we appreciate you listen on fountain app and

1312
01:28:36,807 --> 01:28:43,267
consider hitting the subscribe button until next week gentle plebs farewell goodbye
