1
00:00:07,759 --> 00:00:10,800
Speaker 1: Hello everyone, and welcome back to another episode of Adventures

2
00:00:10,800 --> 00:00:13,839
in DevOps. Today, I have a slight bit of news though.

3
00:00:14,160 --> 00:00:16,679
We have an upgrade to our podcast, as will is

4
00:00:16,719 --> 00:00:18,039
a way for a few episodes.

5
00:00:18,039 --> 00:00:19,440
Speaker 2: So I've asked Amy.

6
00:00:19,199 --> 00:00:23,600
Speaker 1: Knight, are expert on reliability architecture, to step in and Amy,

7
00:00:23,640 --> 00:00:25,000
are you ready for today's episode?

8
00:00:25,519 --> 00:00:26,920
Speaker 3: I am excited to be here.

9
00:00:27,559 --> 00:00:28,000
Speaker 2: That's good.

10
00:00:28,239 --> 00:00:30,199
Speaker 1: I think I put her on the spot with calling

11
00:00:30,199 --> 00:00:33,439
her the expert. I don't think she was prepared for that.

12
00:00:34,719 --> 00:00:38,000
Speaker 4: No, not ever expert she is.

13
00:00:38,159 --> 00:00:42,759
Speaker 1: She's very modest, I will say that. So today's guest

14
00:00:42,840 --> 00:00:46,280
is Brian POTRELLI welcome and thank you for coming. He's

15
00:00:46,280 --> 00:00:49,200
a founder of Fusion auth and some other products as well.

16
00:00:49,359 --> 00:00:51,600
It's nice to have a fellow of expert on the show.

17
00:00:51,600 --> 00:00:53,479
Speaker 4: I have to say, yeah, thanks for having me us.

18
00:00:54,520 --> 00:00:56,640
Speaker 3: I was interested in how this was going to go

19
00:00:56,880 --> 00:01:00,359
with two experts.

20
00:01:02,079 --> 00:01:03,679
Speaker 1: You know, I get this question like how did you

21
00:01:03,719 --> 00:01:06,599
become an expert? And usually I say something like well,

22
00:01:06,760 --> 00:01:10,359
I started investing in learning about security a lot of

23
00:01:10,400 --> 00:01:12,480
years ago, and after a lot of years, then I

24
00:01:12,480 --> 00:01:14,079
get up on stage and someone asked me how did

25
00:01:14,079 --> 00:01:17,400
you become an off expert? I don't think there's like

26
00:01:17,799 --> 00:01:19,840
a dedicated path, Brian, how did you end up in

27
00:01:19,879 --> 00:01:20,359
this area?

28
00:01:20,640 --> 00:01:21,319
Speaker 4: Kind of dumb?

29
00:01:21,400 --> 00:01:21,640
Speaker 2: Luck.

30
00:01:23,000 --> 00:01:27,040
Speaker 4: So, we we are working on a sort of a

31
00:01:27,159 --> 00:01:30,480
niche product, and after we realized that it wouldn't scale,

32
00:01:31,439 --> 00:01:34,640
we actually wanted to start building a couple of other products.

33
00:01:34,719 --> 00:01:37,079
And so one of the products ideas that we came

34
00:01:37,159 --> 00:01:39,719
up with was a forum, and so we actually built

35
00:01:39,760 --> 00:01:43,519
that out completely. And when we built it, we decided

36
00:01:43,560 --> 00:01:45,680
we weren't going to add a log in and registration

37
00:01:45,760 --> 00:01:49,640
component to the forum itself. Instead, we were always going

38
00:01:49,680 --> 00:01:53,319
to delegate that to whatever the company already had, and

39
00:01:53,400 --> 00:01:58,120
so that required some type of authentication system, right, And

40
00:01:58,159 --> 00:02:00,319
in order for us to test this, we had build

41
00:02:00,319 --> 00:02:03,519
our own authentication system, and so we did, right. So

42
00:02:03,560 --> 00:02:06,799
we built it, we integrated with our forum. Everything worked,

43
00:02:06,799 --> 00:02:09,719
it was magical, and then we were like, hey, this

44
00:02:09,800 --> 00:02:11,680
afe thing's pretty cool. Maybe we'll just use it for

45
00:02:12,080 --> 00:02:13,800
like some of our other apps, and so we started

46
00:02:13,800 --> 00:02:16,599
integrating it with everything. Well, the forum didn't work out,

47
00:02:17,319 --> 00:02:19,199
and we're all kind of sitting in a room and

48
00:02:19,240 --> 00:02:22,479
I'm like, guys, this off things really neat, Like let's

49
00:02:22,479 --> 00:02:26,319
do that instead. So we like basically said a one

50
00:02:26,360 --> 00:02:30,039
to eighty dropped the forum started focusing on off and

51
00:02:30,080 --> 00:02:32,960
then had to go learn a bunch of standards and

52
00:02:33,000 --> 00:02:36,520
read a bunch of specifications and you know learn, you know,

53
00:02:36,879 --> 00:02:39,199
learn a lot about security in a very short period

54
00:02:39,240 --> 00:02:43,439
of time. So but totally luck, No.

55
00:02:43,479 --> 00:02:44,120
Speaker 2: I totally got it.

56
00:02:44,120 --> 00:02:46,080
Speaker 1: Actually, we ended up in a similar spot with a

57
00:02:46,199 --> 00:02:49,560
previous product that, uh, there was a lot of complexity

58
00:02:49,599 --> 00:02:51,680
and what we were doing, and we found that our

59
00:02:51,719 --> 00:02:54,639
customers were actually more interested in how we solve our

60
00:02:54,680 --> 00:02:58,199
technical problems than the product that we were offering. At

61
00:02:58,199 --> 00:03:01,639
that time, this was like a for COVID, and we

62
00:03:01,639 --> 00:03:04,240
were trying to sell like leaders of Leadership SaaS and

63
00:03:04,319 --> 00:03:06,719
it turns out a lot of companies wanted to say

64
00:03:06,840 --> 00:03:09,719
that they cared about leaders and building their leaders up,

65
00:03:09,719 --> 00:03:11,919
but they didn't actually want to pay for it. Maybe

66
00:03:11,919 --> 00:03:13,000
that's a little bit of a shocker.

67
00:03:13,199 --> 00:03:15,960
Speaker 4: Yeah, not shocking, shocking, shocking, right.

68
00:03:16,680 --> 00:03:19,039
Speaker 1: The main topic of today is I think it's going

69
00:03:19,080 --> 00:03:20,879
to be a little bit of a controversial episode. This

70
00:03:20,919 --> 00:03:23,840
may be our most controversial episode yet multi tenant versus

71
00:03:23,879 --> 00:03:28,879
single tenant architecture. Yeah, I guess that probably a lot

72
00:03:28,879 --> 00:03:31,159
of our audience already has a strong opinion one way

73
00:03:31,240 --> 00:03:31,599
or the other.

74
00:03:32,039 --> 00:03:32,840
Speaker 2: Amy any thoughts.

75
00:03:33,080 --> 00:03:35,319
Speaker 3: I guess my thought is just like alarm bells start

76
00:03:35,360 --> 00:03:36,960
to go off in my head. But there we go

77
00:03:37,039 --> 00:03:38,719
back with like the reliability stuck.

78
00:03:38,919 --> 00:03:40,520
Speaker 1: Like you're like, if someone says we're going to go

79
00:03:40,599 --> 00:03:43,120
for multi tenant architecture.

80
00:03:42,599 --> 00:03:47,400
Speaker 3: Like that, hold up, yeah, exactly exactly, Like I want

81
00:03:47,439 --> 00:03:48,680
to note the details.

82
00:03:48,240 --> 00:03:50,879
Speaker 1: At this point, yees, so you think it's like inherently

83
00:03:50,960 --> 00:03:53,400
dangerous to have multi tenant architecture.

84
00:03:53,520 --> 00:03:56,639
Speaker 3: I was just at the point where like the I

85
00:03:56,639 --> 00:03:59,479
don't know if the more separation the better with that

86
00:03:59,759 --> 00:04:02,479
sort of thing, But prove me wrong.

87
00:04:03,479 --> 00:04:05,560
Speaker 1: Well, Brian's built a company on top of it.

88
00:04:06,039 --> 00:04:10,639
Speaker 4: Yes, we're building this this forum, and then we built

89
00:04:10,639 --> 00:04:14,520
this sort of standalone, you know, off thing. And our

90
00:04:14,560 --> 00:04:18,720
other product was also you know, downloadable and single tenant

91
00:04:18,759 --> 00:04:23,040
and standalone, and we did we built the original product,

92
00:04:23,040 --> 00:04:26,040
which is called clean Speak. We built that that way

93
00:04:26,079 --> 00:04:28,920
because it was high performance, right, so like it filters

94
00:04:29,040 --> 00:04:32,160
profanity and chat so wow, a couple way of saying it.

95
00:04:32,600 --> 00:04:37,439
And so we're talking billions, tens of billions, hundreds of

96
00:04:37,439 --> 00:04:40,240
billions of chat messages a month, and so in order

97
00:04:40,279 --> 00:04:44,879
to do that in a multi tenant way is pretty challenging,

98
00:04:45,120 --> 00:04:48,199
especially when you're talking about super low latency with something

99
00:04:48,240 --> 00:04:51,360
like chat and so what happens is like you're in

100
00:04:51,399 --> 00:04:53,639
a game, you send a chat message, it goes across

101
00:04:53,639 --> 00:04:56,800
the wire into this, you know, the chat server. Okay,

102
00:04:56,800 --> 00:04:58,399
so that's in a bank of servers that's sitting in

103
00:04:58,439 --> 00:05:01,279
AWS or you know, somewhere like that. There's no reason

104
00:05:01,279 --> 00:05:03,319
you should have to jump out across the open Internet

105
00:05:03,360 --> 00:05:06,000
again to go filter that and see if there's any

106
00:05:06,040 --> 00:05:07,800
issues with it and then come all the way back.

107
00:05:07,839 --> 00:05:11,040
You know, that could introduce one hundred milliseconds of latency.

108
00:05:11,240 --> 00:05:13,639
It'd be way better if it just jumps across the

109
00:05:13,720 --> 00:05:18,120
backplane and essentially goes right to you know, the filtering service.

110
00:05:18,439 --> 00:05:20,959
And we could do that in like under a millisecond.

111
00:05:21,199 --> 00:05:23,639
And even with you know, in internetwork latency, it's like

112
00:05:23,639 --> 00:05:25,959
one or two milliseconds, so we can really shave down

113
00:05:26,079 --> 00:05:29,319
milliseconds here. And then we took all of this sort

114
00:05:29,360 --> 00:05:32,240
of like common code and deployment models and bundling and

115
00:05:32,279 --> 00:05:34,319
all this stuff we had and we just like copy

116
00:05:34,360 --> 00:05:35,040
and pasted it.

117
00:05:35,480 --> 00:05:38,160
Speaker 1: So the history sort of put you in this direction.

118
00:05:38,319 --> 00:05:41,040
It was sort of like a sign from the universe

119
00:05:41,079 --> 00:05:43,120
that maybe this was the path for you to take.

120
00:05:43,399 --> 00:05:45,319
Speaker 4: We kind of made a bold assumption that that was

121
00:05:45,319 --> 00:05:47,920
a good idea. It's like, hey, let's make this downloadable,

122
00:05:48,720 --> 00:05:51,279
let's make it single tenant, let's make it run anywhere

123
00:05:51,279 --> 00:05:54,680
in the world. And then we actually started having all

124
00:05:54,720 --> 00:05:57,759
these companies come to us, some of them quite large,

125
00:05:58,160 --> 00:06:01,240
and they're like, hey, we can't use your competitors. We

126
00:06:01,279 --> 00:06:03,519
can't use like A zero because it's in the cloud

127
00:06:03,560 --> 00:06:05,240
on it, we can't use you know, like pain because

128
00:06:05,240 --> 00:06:07,480
they're just pushing everybody to cloud, and we can't use

129
00:06:07,519 --> 00:06:10,319
all these tools, and we really want something that we

130
00:06:10,319 --> 00:06:12,519
can run in our own data center. And I was like, well,

131
00:06:12,560 --> 00:06:17,199
we got that, so yeah, let's totally do this right.

132
00:06:17,319 --> 00:06:19,360
Speaker 2: So that's really interesting.

133
00:06:19,399 --> 00:06:23,800
Speaker 1: So taking the architecture as the value being provided by

134
00:06:23,839 --> 00:06:26,800
the product as sort of the competitive advantage, yep.

135
00:06:27,000 --> 00:06:29,040
Speaker 4: Yeah, we continue to do that. So, like I think

136
00:06:29,079 --> 00:06:31,800
our one of our taglines we've been messing around with

137
00:06:31,959 --> 00:06:35,040
is like aughts so modern you can download it right,

138
00:06:35,680 --> 00:06:38,839
and it's it's really flipping everything on its head because

139
00:06:39,600 --> 00:06:43,480
for the last gosh fifteen years, people have been like, yep,

140
00:06:43,680 --> 00:06:45,519
it's got to be multi tenant, it's got to be

141
00:06:45,759 --> 00:06:49,000
you know, SaaS, it's got to be cloud, and that's

142
00:06:49,000 --> 00:06:52,240
the only way to build an effective company, profitable company,

143
00:06:52,319 --> 00:06:55,399
scalable company. And I'm like, no.

144
00:06:58,160 --> 00:07:02,360
Speaker 3: I'll be honest too, what you're saying. It kind of

145
00:07:02,399 --> 00:07:05,720
shocked me. Conversations that I've been having more and more

146
00:07:05,759 --> 00:07:09,000
people are actually people are considering moving off cloud to

147
00:07:09,079 --> 00:07:12,160
save costs, which is nothing I would have ever thought

148
00:07:12,160 --> 00:07:15,040
of before I had this initial conversation like two years

149
00:07:15,079 --> 00:07:16,240
ago with someone.

150
00:07:16,600 --> 00:07:20,279
Speaker 4: Yeah, if if you have let's say, like a cloud

151
00:07:20,360 --> 00:07:25,480
native Lamba driven, you know, lots of like io into

152
00:07:25,560 --> 00:07:28,639
like something like Dynamo or something like that, Like sure,

153
00:07:28,680 --> 00:07:31,800
when you start and you're small, can be very cost effective.

154
00:07:32,160 --> 00:07:36,399
When you scale, it can get so expensive these services

155
00:07:36,439 --> 00:07:38,079
are like outrageous.

156
00:07:38,560 --> 00:07:42,240
Speaker 3: The other thing I would say too, is depending on

157
00:07:42,600 --> 00:07:46,000
your architecture and how long it's been around. I feel

158
00:07:46,000 --> 00:07:48,399
like moving to the cloud, you're sort of forced into

159
00:07:48,480 --> 00:07:53,079
certain boxes of what they can scale most efficiently. So

160
00:07:53,360 --> 00:07:55,720
if you have something that was not built to run

161
00:07:55,759 --> 00:07:58,000
on a certain machine type, you're going to run into

162
00:07:58,079 --> 00:08:01,000
issue that scale. Would that be something that you've kind

163
00:08:01,040 --> 00:08:02,279
of experienced.

164
00:08:01,759 --> 00:08:07,240
Speaker 4: Too, Absolutely, Yeah, The the cloud providers really love to

165
00:08:07,319 --> 00:08:10,399
push you in the directions that they feel the most

166
00:08:10,439 --> 00:08:13,600
confident and comfortable, and they where they have the biggest profit.

167
00:08:13,759 --> 00:08:16,959
Right if you look at just you know, like Cognito

168
00:08:17,000 --> 00:08:19,920
as an example in our space, like that's not a

169
00:08:19,920 --> 00:08:25,920
cost effective solution, like by anyone's anyone's you know view. Now,

170
00:08:25,959 --> 00:08:29,040
when you first start, it's very cost effective because it's free,

171
00:08:29,120 --> 00:08:31,920
and you know, it's pretty easy to integrate. But the

172
00:08:31,959 --> 00:08:34,600
second that you like start scaling and start enabling any

173
00:08:34,639 --> 00:08:39,159
of the features, it's cost prohibitive. And so they know

174
00:08:39,240 --> 00:08:41,080
how to scale that and run that really well, and

175
00:08:41,120 --> 00:08:43,360
then they know how to monetize the crap out of it.

176
00:08:43,480 --> 00:08:46,200
Speaker 1: So I love that you, you know, you tried to

177
00:08:46,200 --> 00:08:48,159
pull back on like, well, you know, maybe it's really

178
00:08:48,159 --> 00:08:51,320
easy to integrate with Cognito, although I feel like, I see,

179
00:08:51,320 --> 00:08:53,279
I'm in a bunch of tech communities and I just

180
00:08:53,279 --> 00:08:56,840
see complaints every all day long about oh I tried

181
00:08:56,879 --> 00:08:59,600
to make this work and it didn't happen, or you know,

182
00:08:59,639 --> 00:09:02,679
I looked at the documentation and start saying like amplify everywhere,

183
00:09:02,759 --> 00:09:04,600
like I don't want to use amplify. I'm like, well,

184
00:09:04,639 --> 00:09:07,200
you know, welcome to Welcome to the mess that that

185
00:09:07,320 --> 00:09:11,320
is Cognito in AWS. So I started I stopped saying that, Yeah,

186
00:09:11,320 --> 00:09:14,360
it may be cost effective, you know, a small scale,

187
00:09:14,360 --> 00:09:17,399
but the overhead, the total cost of ownership, yeah, definitely

188
00:09:17,480 --> 00:09:19,480
high with with Cognito, for sure.

189
00:09:19,600 --> 00:09:22,559
Speaker 4: It was super painful. And Amazon also does this really

190
00:09:22,559 --> 00:09:25,559
funny thing where they force you to use like you

191
00:09:25,600 --> 00:09:28,039
can't just use Cognito, like you said, you have to

192
00:09:28,200 --> 00:09:30,679
pull in fifteen other services and you got to use

193
00:09:30,679 --> 00:09:33,639
platformation and you got to do this, and it's just like, guys,

194
00:09:33,679 --> 00:09:36,919
this is getting insane, right, Like I don't want to

195
00:09:36,919 --> 00:09:38,720
do this. I just I just want to lock my users.

196
00:09:39,159 --> 00:09:42,039
Speaker 3: I may have cheated and listened to some of your

197
00:09:42,039 --> 00:09:45,679
episodes on competitor podcasts to kind of get a better

198
00:09:45,720 --> 00:09:49,320
understanding before this one. Is it still true also that

199
00:09:49,360 --> 00:09:51,480
the customization is just not there.

200
00:09:52,159 --> 00:09:55,120
Speaker 4: Cognito actually made a really big update, so I have

201
00:09:55,200 --> 00:09:59,240
to credit they. I think they restructured their product team

202
00:09:59,440 --> 00:10:03,000
and then they put some dedicated engineers on Cognito. For

203
00:10:03,039 --> 00:10:05,840
the last like eighteen months, they kind of up their game,

204
00:10:06,039 --> 00:10:10,159
Like you can quasi customize their log in. You can

205
00:10:10,200 --> 00:10:13,600
customize like the email templates and some of the messaging templates,

206
00:10:13,600 --> 00:10:17,519
and I think they even like support localization stuff. So

207
00:10:17,639 --> 00:10:20,879
they did a pretty decent job of like leveling themselves

208
00:10:21,000 --> 00:10:23,639
up to your point, it's like it's still a pain

209
00:10:23,679 --> 00:10:26,639
in about to integrate with and it's just feature crippled.

210
00:10:26,679 --> 00:10:29,879
I mean, they just like have it's a very limited platform.

211
00:10:30,120 --> 00:10:32,759
Speaker 1: I think the biggest challenge here is something that a

212
00:10:32,799 --> 00:10:35,039
lot of people dismiss when they're selecting a product out

213
00:10:35,039 --> 00:10:37,639
there in the world, is a the alignment with the

214
00:10:37,679 --> 00:10:39,519
company that you're going with, Like what is the core

215
00:10:39,639 --> 00:10:42,159
value that the company really focus on and cares about? Right,

216
00:10:42,320 --> 00:10:46,080
you were saying that the single tendency is the core

217
00:10:46,240 --> 00:10:47,840
value that we're you know, one of the core values

218
00:10:47,840 --> 00:10:50,039
that we're offering here, you know, is that aligned, Like

219
00:10:50,039 --> 00:10:51,799
don't just use the product based off of the features,

220
00:10:51,840 --> 00:10:53,799
but you know, look to see about the team that's

221
00:10:53,799 --> 00:10:56,000
building in and what their you know, long term direction is.

222
00:10:56,480 --> 00:10:59,039
And you know, I think it's really important because when

223
00:10:59,039 --> 00:11:01,159
we look at things like cogn it's not really clear

224
00:11:01,320 --> 00:11:02,919
you know, what they're really going after. And if you

225
00:11:02,919 --> 00:11:05,120
start comparing the products and get really deep, you can

226
00:11:05,159 --> 00:11:08,639
see things like they're like tendency in Cognito itself is

227
00:11:08,679 --> 00:11:11,399
not really there as a solution. If you have customers

228
00:11:11,399 --> 00:11:14,279
that are in the business space, it doesn't really fit

229
00:11:14,320 --> 00:11:16,960
well with that, and it's detaining your point, you know,

230
00:11:17,200 --> 00:11:20,200
on the refresh with Cognito. Yeah, I mean it's configurable

231
00:11:20,200 --> 00:11:22,399
now for sure, But there are nine different kinds of

232
00:11:22,480 --> 00:11:25,720
Lambda functions that you can integrate with Cognito. Like it's

233
00:11:25,759 --> 00:11:28,480
not a simple strategy, Like it's not just like configuration

234
00:11:28,600 --> 00:11:30,240
driven a lot of times, and this is one of

235
00:11:30,320 --> 00:11:33,279
the huge types with AWO services in general. It's that

236
00:11:33,320 --> 00:11:35,240
if you want to configure it, you write your own

237
00:11:35,320 --> 00:11:38,399
LAMB to function with your own configuration with whatever, non

238
00:11:38,440 --> 00:11:42,360
documented payloads and responses, and then figure out how to

239
00:11:42,360 --> 00:11:44,600
integrate that into your solution and deployed and whatever to

240
00:11:45,039 --> 00:11:46,360
the cloud to get it to work right, and if

241
00:11:46,399 --> 00:11:48,840
there's a problem then you know, good luck. So some

242
00:11:48,840 --> 00:11:51,399
people love this, Oh yeah, all of my infrastructure everything

243
00:11:51,440 --> 00:11:55,320
is in AWS and you know, good on you, for sure.

244
00:11:55,360 --> 00:11:57,440
Speaker 2: But I don't wish Cognito on anyone.

245
00:11:57,759 --> 00:12:00,399
Speaker 4: Yeah, I mean that's a good point, right, because they

246
00:12:01,240 --> 00:12:06,799
AWS has this sort of disease I guess you could say,

247
00:12:06,799 --> 00:12:10,639
where they constantly want you to use their services to

248
00:12:10,679 --> 00:12:12,919
do things right. So like, you know, we use like

249
00:12:13,240 --> 00:12:16,879
cloud front, and in order to do all the redirects

250
00:12:16,919 --> 00:12:18,600
that we need to do, we have to use like

251
00:12:18,600 --> 00:12:21,639
an edge function, and then that edge functions go loads

252
00:12:21,679 --> 00:12:23,559
something out of like an S three bucket in order

253
00:12:23,600 --> 00:12:25,519
to like download it, and then it caches it, and

254
00:12:25,799 --> 00:12:27,960
you know, it's like it's ridiculous. It's like all I

255
00:12:28,000 --> 00:12:29,320
want to do is set up redirects, and I have

256
00:12:29,360 --> 00:12:32,240
to jump through like fifteen hoops just to get something

257
00:12:32,320 --> 00:12:35,759
so simple done because of the way that Amazon has

258
00:12:35,799 --> 00:12:37,879
designed everything, and they're like, well just stick a lamb

259
00:12:38,000 --> 00:12:40,840
on it, you know that don't work, and don't document.

260
00:12:41,159 --> 00:12:42,320
We'll document it later, you know.

261
00:12:43,600 --> 00:12:45,840
Speaker 1: I mean, I do appreciate as a company, like comparing

262
00:12:45,879 --> 00:12:47,960
them to the other cloud providers, And I didn't know

263
00:12:47,960 --> 00:12:49,519
this was the direction we were going to go with

264
00:12:49,320 --> 00:12:52,360
this with this episode, but I do appreciate a WS

265
00:12:52,440 --> 00:12:55,600
more than the other ones. I do think they suffer

266
00:12:55,679 --> 00:12:58,960
from a very focused mindset as sort of the two

267
00:12:58,919 --> 00:13:01,559
piece of teams that they have. They're really focused on delivering,

268
00:13:01,720 --> 00:13:04,080
you know, exactly the thing that maybe that customer wants,

269
00:13:04,080 --> 00:13:06,480
but that may mean over time, they're missing some other

270
00:13:06,519 --> 00:13:08,919
critical features. I think what you're talking about here. A

271
00:13:08,960 --> 00:13:13,480
good example is returning security headers on outfront responses. So

272
00:13:13,720 --> 00:13:15,559
you've got some data stort inn s Rebucket, and you're

273
00:13:15,559 --> 00:13:17,919
hosting a website or your API, and you're like, I

274
00:13:18,000 --> 00:13:21,159
just want to add a header that removes the x

275
00:13:21,200 --> 00:13:23,360
frame options, like you can embed this as a as

276
00:13:23,399 --> 00:13:25,759
an iframe in a website, And you'd be like, I

277
00:13:25,799 --> 00:13:27,120
just want to add a header, and I don't want

278
00:13:27,120 --> 00:13:28,960
to muck with the underlying service, which I may not

279
00:13:29,039 --> 00:13:31,879
even own. Right, Maybe I've deployed Fusion ofth or some

280
00:13:31,919 --> 00:13:34,440
other service in a container in my infrastructure and I

281
00:13:34,480 --> 00:13:36,200
don't even control that product, but I want to add

282
00:13:36,200 --> 00:13:38,799
some headers to it. Well, good luck, honestly, because up

283
00:13:38,879 --> 00:13:41,240
until about three years ago, you couldn't do this without

284
00:13:41,240 --> 00:13:43,559
throwing a huge lamb to function at it. Now they

285
00:13:43,639 --> 00:13:46,600
do have something called the response policy headers that you

286
00:13:46,600 --> 00:13:48,960
can set in clautform, But it's taken probably like almost

287
00:13:48,960 --> 00:13:52,120
ten years for this to roll around and even be

288
00:13:52,159 --> 00:13:55,279
added in this feature, while other CDNs have been providing

289
00:13:55,480 --> 00:13:57,840
this baseline thing for quite a long time.

290
00:13:58,080 --> 00:14:01,360
Speaker 4: Yeah, no, totally agree. They there. I think their product

291
00:14:01,360 --> 00:14:04,320
teams are so isolated and they don't have a lot

292
00:14:04,360 --> 00:14:07,600
of input from you know, just standard devs like us

293
00:14:07,679 --> 00:14:08,879
right that are just like, hey, I just want to

294
00:14:08,879 --> 00:14:12,159
get this thing done. And they're they're really listening, you know,

295
00:14:12,320 --> 00:14:14,519
to their largest customers, which we all know. I mean,

296
00:14:14,559 --> 00:14:16,639
you know, they make tens of millions of dollars off

297
00:14:16,639 --> 00:14:20,519
some of these customers every so, so yeah, it's it's

298
00:14:20,519 --> 00:14:23,840
pretty painful and they takes a long time for them

299
00:14:23,840 --> 00:14:26,919
to get actual stuff done. But at least they have

300
00:14:27,200 --> 00:14:29,279
the lambdas and the things and so like you have

301
00:14:29,279 --> 00:14:30,720
to jump into some code and you got to do

302
00:14:30,759 --> 00:14:34,039
these things. But at least there are workarounds where like

303
00:14:34,080 --> 00:14:36,440
you said, you know, there have been times where you know,

304
00:14:36,480 --> 00:14:39,000
in the past where we use services and you literally

305
00:14:39,039 --> 00:14:41,080
just can't do it. So it's like, well, crap, Okay,

306
00:14:41,120 --> 00:14:43,960
I'll stand up another service to proxy requests through and

307
00:14:43,960 --> 00:14:46,720
then I'll manipulate the request in my proxy service and

308
00:14:46,759 --> 00:14:50,039
then ask it to clout right, and it's like, oh

309
00:14:50,080 --> 00:14:52,600
my gosh, why am I having to manage all this

310
00:14:52,720 --> 00:14:55,080
junk just to add ahead or business? And I totally

311
00:14:55,159 --> 00:14:59,519
agree with that assessment of AWS, But again, they're one

312
00:14:59,559 --> 00:15:02,840
of the better out there, right. So here's the other

313
00:15:02,840 --> 00:15:06,799
thing that's interesting AWS. I think some of their product

314
00:15:06,840 --> 00:15:11,840
teams are actually starting to evaluate letting people download some

315
00:15:11,960 --> 00:15:13,960
of their services and run them locally, right, Like we

316
00:15:14,039 --> 00:15:16,519
see that a little bit with like Dynamo dB. You

317
00:15:16,519 --> 00:15:18,200
can run a like kind of a scraped down version

318
00:15:18,200 --> 00:15:22,960
of it. I think there's some local lambda execution things

319
00:15:23,000 --> 00:15:27,080
that you can do, and they're looking at more and

320
00:15:27,120 --> 00:15:29,399
so you know, maybe they'll do that with Cognito at

321
00:15:29,440 --> 00:15:31,440
some point too. But like, one of the hiccups that

322
00:15:31,480 --> 00:15:34,840
I see with all the cloud providers is the ability

323
00:15:34,919 --> 00:15:38,919
for a developer to test these services without having to

324
00:15:39,120 --> 00:15:42,320
like fire up an entire org, you know, run a

325
00:15:42,320 --> 00:15:44,840
bunch of terraform or CloudFormation or whatever you need to

326
00:15:44,879 --> 00:15:46,919
get everything set up, and then you can run your

327
00:15:46,919 --> 00:15:51,320
tests against it and good luck having twenty developers try

328
00:15:51,360 --> 00:15:53,159
to run tests at the same time where you're constantly

329
00:15:53,159 --> 00:15:56,279
tearing things down and recreating them and so moving that

330
00:15:56,320 --> 00:15:59,320
stuff back local I think is actually something that the

331
00:15:59,320 --> 00:16:02,720
industry has been at, which means that every developer can

332
00:16:02,759 --> 00:16:05,960
isolate themselves at dev time from every other one and

333
00:16:06,000 --> 00:16:07,080
that's a huge benefit.

334
00:16:07,279 --> 00:16:10,559
Speaker 1: Yeah, I think the developer experience story with aws like

335
00:16:10,679 --> 00:16:13,519
offline is not the best so much that there's an

336
00:16:13,639 --> 00:16:17,759
entire company dedicated actually out of Switzerland called local Stack

337
00:16:18,080 --> 00:16:22,200
to emulate the emulate it offline, and you know, it's great.

338
00:16:22,200 --> 00:16:23,960
And the joke is like when is Agbo's going to

339
00:16:23,960 --> 00:16:27,840
buy local Stack because there's local Stack in the documentation,

340
00:16:28,039 --> 00:16:31,639
there's local Stack replacements for a DYNAMOITYB local which doesn't work.

341
00:16:31,679 --> 00:16:35,679
There's great integrations for Lambda and for SAM, the servilist

342
00:16:35,679 --> 00:16:38,360
application Transform for Information.

343
00:16:38,480 --> 00:16:39,360
Speaker 2: It's really surprising.

344
00:16:39,399 --> 00:16:40,919
Speaker 1: It's like one of the things like as you mentioned,

345
00:16:41,000 --> 00:16:44,039
like even though our product is focused one hundred percent SaaS,

346
00:16:44,519 --> 00:16:48,679
we offer a shim clone of our API for companies

347
00:16:48,679 --> 00:16:51,480
around locally because of course, like you're a developer and

348
00:16:51,519 --> 00:16:54,360
you're like, you don't care about maybe the off part,

349
00:16:54,440 --> 00:16:56,799
but your services depend on it, and so you need

350
00:16:56,840 --> 00:16:59,600
to have an answer here. And it's ridiculous how SaaS

351
00:16:59,600 --> 00:17:02,720
providers everywhere. I figured this out, but the cloud providers

352
00:17:03,399 --> 00:17:05,000
haven't done it yet.

353
00:17:05,200 --> 00:17:07,519
Speaker 4: Yeah, you know, it's wild. We sort of like to

354
00:17:07,720 --> 00:17:10,279
take that to the nth degree, right, which is like

355
00:17:10,680 --> 00:17:13,200
mocking is dangerous, and so we'll market and then we'll

356
00:17:13,240 --> 00:17:15,400
just simulate the responses we know we get from production,

357
00:17:15,519 --> 00:17:18,039
so like maybe they record it and then they grab

358
00:17:18,119 --> 00:17:19,880
some you know, some stuff out of production, and then

359
00:17:19,920 --> 00:17:22,759
they can start simulating, well, what happens if like a

360
00:17:22,839 --> 00:17:25,440
lambda changes and then the responses start changing, or like

361
00:17:25,680 --> 00:17:29,480
AWS modifies something and it's coming back slightly differently.

362
00:17:29,759 --> 00:17:34,960
Speaker 1: We definitely see that more sophisticated customers care about it,

363
00:17:35,359 --> 00:17:38,759
and end testing or integration testing and having a story

364
00:17:38,799 --> 00:17:41,799
dedicated to that is an important aspect, especially when you're

365
00:17:41,799 --> 00:17:46,039
offering something that's essentially infrastructure for your your customers. I

366
00:17:46,039 --> 00:17:48,359
mean different when it's just like some third party service

367
00:17:48,359 --> 00:17:51,400
which is solving some edge case or some CRM, but

368
00:17:51,440 --> 00:17:54,000
when it becomes a critical piece of infrastructure for your customers,

369
00:17:54,119 --> 00:17:56,160
it's a question that's going to come up pretty frequently.

370
00:17:56,319 --> 00:17:58,640
Speaker 3: Absolutely, I kind of had a question I was going

371
00:17:58,680 --> 00:18:01,319
to ask, kind of been like doing how to ask

372
00:18:01,359 --> 00:18:05,240
this in the most intelligent way possible? How much of

373
00:18:05,319 --> 00:18:08,519
your product would you say? In most customers use cases,

374
00:18:08,559 --> 00:18:12,440
it probably simplifies things like performance and load testing. My

375
00:18:12,519 --> 00:18:15,160
experience and the source of like massive bought attack and

376
00:18:15,240 --> 00:18:18,680
at the same time my experience performance testing in a

377
00:18:18,759 --> 00:18:22,559
multi tenant environment can be tricky because while you would

378
00:18:22,599 --> 00:18:25,359
assume that you can just go off to the races,

379
00:18:25,440 --> 00:18:30,119
that is a false assumption. And if you have to

380
00:18:30,319 --> 00:18:33,640
performance test load test at a certain scale, it requires

381
00:18:33,680 --> 00:18:36,160
coordinating with the company and making sure that other customers

382
00:18:36,200 --> 00:18:38,319
aren't doing it at the exact same time. So I

383
00:18:38,319 --> 00:18:41,279
guess long story short, I kind of maybe know the answer,

384
00:18:41,319 --> 00:18:42,359
but maybe someone to speak to.

385
00:18:42,599 --> 00:18:46,119
Speaker 4: Yeah, it's a phenomenal question. So there's sort of two

386
00:18:46,240 --> 00:18:49,559
aspects of this, and the first one is I'm a

387
00:18:49,599 --> 00:18:51,720
developer and I just want to like sort of load

388
00:18:51,759 --> 00:18:53,759
test locally, and I want to I just want to

389
00:18:53,759 --> 00:18:56,440
see what sort of throughput looks like with different configuration

390
00:18:56,519 --> 00:18:58,720
options on my laptop. And you download, you get it

391
00:18:58,759 --> 00:19:01,400
set up, you integrate, and then you just literally use

392
00:19:01,400 --> 00:19:03,519
a hammer, hammer the crap out of it and see

393
00:19:03,880 --> 00:19:06,920
see what happens, and then you can reset everything and

394
00:19:06,960 --> 00:19:08,640
then you can try it in the cloud. When you

395
00:19:08,640 --> 00:19:11,319
have a multi tenant provider, they even like a lot

396
00:19:11,319 --> 00:19:13,759
of times say you load tests are just not allowed,

397
00:19:14,440 --> 00:19:18,599
right and like period hard stop. You pay them enough money,

398
00:19:18,599 --> 00:19:20,240
they'll probably let you load test, but they're going to

399
00:19:20,279 --> 00:19:22,319
have to figure out how to get that traffic off

400
00:19:22,359 --> 00:19:25,160
of the main servers because they don't want to impact

401
00:19:25,359 --> 00:19:27,519
the you know, ten thousand other customers that are on

402
00:19:27,559 --> 00:19:31,920
the same servers when we deploy fusion to the cloud,

403
00:19:32,519 --> 00:19:36,839
especially single tenant cloud, right, so like every customer gets

404
00:19:36,960 --> 00:19:43,240
dedicated compute, dedicated database, dedicated iout and you can load

405
00:19:43,279 --> 00:19:46,799
test your cloud and not affect a single other customer

406
00:19:47,200 --> 00:19:51,880
because your compute is again completely isolated from everyone else's

407
00:19:51,920 --> 00:19:54,799
and your database is also, you know, because we use rds,

408
00:19:54,799 --> 00:19:57,799
and so your database has a specific number of eyeops

409
00:19:58,279 --> 00:20:02,720
and it's you know, we're we're using Amazon, trusting Amazon

410
00:20:02,799 --> 00:20:06,160
to basically do that. That isolation of all those things

411
00:20:06,720 --> 00:20:10,279
because everything's true, you know, shared underneath the hoods. But

412
00:20:10,279 --> 00:20:13,359
but AWS is even really good at time boxing things

413
00:20:13,400 --> 00:20:17,920
and like limiting io and so that's another benefit to

414
00:20:18,000 --> 00:20:20,599
our customers where they don't have to call us up

415
00:20:20,599 --> 00:20:22,039
and say, hey, we're going to go test. We're like,

416
00:20:22,240 --> 00:20:24,440
go ahead and mow test it. It's your box. You're

417
00:20:24,480 --> 00:20:26,440
not going to affect the customers over here because they're

418
00:20:26,480 --> 00:20:28,880
on their own hardware, but you're going to crash your

419
00:20:28,920 --> 00:20:31,119
own stuff, but you know, go for it, you know,

420
00:20:31,279 --> 00:20:32,680
So yeah.

421
00:20:33,319 --> 00:20:35,359
Speaker 3: I break it up too, because these are just things

422
00:20:35,400 --> 00:20:38,920
I think that sometimes people don't necessarily realize could potentially

423
00:20:39,160 --> 00:20:41,319
be issues that are larking.

424
00:20:42,160 --> 00:20:45,880
Speaker 1: I'll be I'll be the dissenting opinion. So I like,

425
00:20:45,920 --> 00:20:47,920
I totally agree that you you sort of get some

426
00:20:47,960 --> 00:20:51,400
of these aspects for free when you change your architecture

427
00:20:51,720 --> 00:20:55,119
paradigm from from one to another. For instance, for us,

428
00:20:55,160 --> 00:20:57,440
we've had to go in a different direction because we

429
00:20:57,519 --> 00:21:01,400
want to be able to have a single point of

430
00:21:01,400 --> 00:21:03,200
reference for a lot of our architecture.

431
00:21:03,559 --> 00:21:04,160
Speaker 2: And as we.

432
00:21:04,319 --> 00:21:06,880
Speaker 1: Focus primarily in the SaaS version, that simplifies a lot

433
00:21:06,920 --> 00:21:10,400
of a support request or triaging or logging, et cetera,

434
00:21:10,480 --> 00:21:12,839
because everything is just rolled out into the same stack.

435
00:21:12,920 --> 00:21:14,920
But that means we've had to invest a lot in

436
00:21:15,400 --> 00:21:18,640
how do we deal with increased scale. I will say

437
00:21:18,640 --> 00:21:21,759
something like load test away against our service, Like we've

438
00:21:21,759 --> 00:21:24,039
had to put so much effort into understanding how to

439
00:21:24,079 --> 00:21:29,680
increase scale that no, like ten companies one hundred companies

440
00:21:29,720 --> 00:21:31,640
coming at us at the same moment, it's just not

441
00:21:31,680 --> 00:21:34,240
going to matter. I will say that that we'll hit

442
00:21:34,400 --> 00:21:36,680
a bunch of rate limiting stuff that we have in place,

443
00:21:36,720 --> 00:21:39,279
like you will start getting blocked, So make sure you

444
00:21:39,319 --> 00:21:41,359
have a second account ready to go, because if you

445
00:21:41,400 --> 00:21:44,160
start running this on your primary account, like you will

446
00:21:44,160 --> 00:21:46,640
probably have a production downtime when you get rate limited

447
00:21:47,119 --> 00:21:49,440
from doing something. But we've had to split rate limiting

448
00:21:49,480 --> 00:21:52,119
in a lot of different ways, like per user, per application,

449
00:21:52,599 --> 00:21:56,920
per individual tenant, per service client. So I mean you

450
00:21:56,960 --> 00:21:59,119
are making a trade off from one to another. And

451
00:21:59,359 --> 00:22:01,480
if you're going down one like a different path here

452
00:22:01,559 --> 00:22:03,920
where you're going down multi tenancy, they have to be

453
00:22:03,960 --> 00:22:06,559
problems that you want to solve. We were interested in

454
00:22:06,640 --> 00:22:09,279
solving these problems, and we were cognizant of like our

455
00:22:09,279 --> 00:22:12,160
team having worked in areas where there was a lot

456
00:22:12,200 --> 00:22:15,720
of historical challenges that they've experienced and they know their

457
00:22:15,720 --> 00:22:18,440
way around building large multi tenant systems. But I think

458
00:22:18,440 --> 00:22:20,400
it's a really great point where if you don't have

459
00:22:20,440 --> 00:22:23,599
that expertise, that you're going to get yourself in trouble,

460
00:22:23,680 --> 00:22:28,960
especially when you're providing infrastructure level products for your customers.

461
00:22:29,079 --> 00:22:31,920
Speaker 4: But aren't they then just testing your rate limits? So

462
00:22:32,079 --> 00:22:35,759
like the counterpoint of that is that, I mean we

463
00:22:35,799 --> 00:22:37,759
all have rate limits right because especially at like the

464
00:22:37,799 --> 00:22:40,359
WAFT level and the infrastructure level, because you have to

465
00:22:40,559 --> 00:22:46,039
like not be flooded, but you can take those down

466
00:22:46,720 --> 00:22:49,119
like we can. We can basically say like okay, we're

467
00:22:49,119 --> 00:22:50,559
going to take we're going to isolate you and take

468
00:22:50,559 --> 00:22:52,880
you out of rate limits, and it's like go for it.

469
00:22:54,160 --> 00:22:56,359
Literally just bang on it until the servers fall over.

470
00:22:56,799 --> 00:22:59,039
Speaker 1: My response is always like what do you want it

471
00:22:59,079 --> 00:22:59,279
to be?

472
00:22:59,480 --> 00:22:59,599
Speaker 4: Like?

473
00:22:59,640 --> 00:23:03,359
Speaker 1: You don't want this to be like actually no rate limits,

474
00:23:03,359 --> 00:23:05,880
like you want there to be something here to happen,

475
00:23:05,960 --> 00:23:07,839
and so yeah, for sure. I mean, if they're testing

476
00:23:07,839 --> 00:23:10,319
their own software, I think this is where the mistake is.

477
00:23:10,640 --> 00:23:12,720
They believe they have a need to sort of validate

478
00:23:12,839 --> 00:23:15,799
how our software is going to respond to their needs.

479
00:23:16,240 --> 00:23:19,039
And I think that's the fundamental flaw here is that

480
00:23:19,559 --> 00:23:22,599
they like, either you're paying us, so you trust us

481
00:23:22,640 --> 00:23:25,960
with this product and we give you assurances there and

482
00:23:26,000 --> 00:23:28,480
if you're not willing to trust those, like you may

483
00:23:28,519 --> 00:23:31,000
think about why that is, like why is it that

484
00:23:31,039 --> 00:23:34,400
you actually want to take these extra steps. We do

485
00:23:34,440 --> 00:23:36,319
get questions like oh yeah, how much can we have?

486
00:23:36,480 --> 00:23:38,279
And I'm like how much do you how much do

487
00:23:38,319 --> 00:23:40,960
you want? Because you can have that much, it's not

488
00:23:41,039 --> 00:23:43,680
a problem. I assure you, you're not going to find

489
00:23:43,680 --> 00:23:45,359
out where our service is going to fall over for

490
00:23:45,440 --> 00:23:48,400
you because it's it's going to scale automatically to handle

491
00:23:48,440 --> 00:23:51,839
whatever you throw at it, and you can for sure test.

492
00:23:51,599 --> 00:23:52,240
Speaker 2: That if you want.

493
00:23:52,279 --> 00:23:55,119
Speaker 1: But often I find the bigger problem is when rate

494
00:23:55,200 --> 00:23:58,039
limits come into play, is that they're usually at a

495
00:23:58,079 --> 00:24:01,240
moment where your customers are not necessarily compaired to handle

496
00:24:01,799 --> 00:24:04,359
the rate limiting. So even in a single tenant architecture,

497
00:24:04,559 --> 00:24:06,039
you know, what do you want to happen there? Do

498
00:24:06,039 --> 00:24:08,119
you want just one user to get kicked out of

499
00:24:08,119 --> 00:24:10,000
their flow? Do you want to use Like I think

500
00:24:10,000 --> 00:24:12,720
this is like an unsolveable problem because our customers will

501
00:24:12,759 --> 00:24:14,920
say we want the right thing to happen. I'm like,

502
00:24:15,319 --> 00:24:16,839
I don't know what the right thing is here, Like

503
00:24:16,839 --> 00:24:18,400
why don't you tell me what you think the right

504
00:24:18,400 --> 00:24:21,200
thing is? And that's probably how the service works, and

505
00:24:21,240 --> 00:24:24,079
then they usually get stuck because it's very difficult to

506
00:24:24,480 --> 00:24:27,720
correctly answer, like what is actually the thing that's supposed

507
00:24:27,720 --> 00:24:28,079
to happen?

508
00:24:28,319 --> 00:24:30,079
Speaker 4: Yeah, and it's going to vary for each customer, right,

509
00:24:30,079 --> 00:24:34,759
Oh yeah, So it's semantics, So no, I totally agree.

510
00:24:34,880 --> 00:24:37,160
So I guess there's you know, it's it's just more

511
00:24:37,200 --> 00:24:40,200
of a statement. But there are benefits to both. One

512
00:24:40,240 --> 00:24:42,119
of which is like, if you have that level of

513
00:24:42,119 --> 00:24:45,039
scale and a multi tenant system, yeah, you're gonna have

514
00:24:45,119 --> 00:24:48,279
to really think about a lot of these constraints and

515
00:24:48,279 --> 00:24:50,440
how you change your rate limits and how you can

516
00:24:50,480 --> 00:24:53,759
get all that that much data through AWS versus if

517
00:24:53,799 --> 00:24:55,440
you have a single tenant system, then you're like, okay,

518
00:24:55,440 --> 00:24:57,759
well I'm just going to focus on singularly getting that

519
00:24:57,799 --> 00:25:00,599
through one little window just for that customer and not

520
00:25:00,640 --> 00:25:03,440
worry about everybody else because they're on their own, right,

521
00:25:03,480 --> 00:25:06,079
They're they're doing a different type of throughput.

522
00:25:06,240 --> 00:25:08,200
Speaker 1: So I got I got something that you know, I'm

523
00:25:08,200 --> 00:25:10,920
sure is going to come across as part of the controversy.

524
00:25:11,279 --> 00:25:14,480
It's so much easier to deploy upgrades to a multi

525
00:25:14,480 --> 00:25:19,960
tenant system than it is to n repeated instances of

526
00:25:20,000 --> 00:25:21,640
a of a single tenant system.

527
00:25:21,720 --> 00:25:24,839
Speaker 4: Right, That's that's just that sound dangerous. And they're like,

528
00:25:24,839 --> 00:25:28,240
well yeah, but off zero and every Cognito does and

529
00:25:28,240 --> 00:25:29,880
everyone else does, and I'm like, well sure they do,

530
00:25:29,960 --> 00:25:32,640
and they will break you, Like if they change something,

531
00:25:32,680 --> 00:25:34,279
you will be broken and you won't even know it,

532
00:25:34,640 --> 00:25:37,440
and like just go look at I mean, like there's

533
00:25:38,000 --> 00:25:41,519
just hit Reddit and say, ah zero upgrade broken, and

534
00:25:41,559 --> 00:25:45,279
you'll find so many people complaining about some change that

535
00:25:45,480 --> 00:25:49,680
off Zero or Cognito or Microsoft or somebody did that

536
00:25:49,839 --> 00:25:54,279
broke their entire application. And so our meth are sort

537
00:25:54,319 --> 00:25:58,720
of like theory on this whole thing, because you really

538
00:25:58,839 --> 00:26:02,640
actually don't want a multi tenant upgrade, right, you want

539
00:26:02,680 --> 00:26:04,799
a single tenant upgrade. You just want the ability to

540
00:26:04,799 --> 00:26:09,400
do it very easily and seamlessly. And so what we

541
00:26:09,480 --> 00:26:12,599
do is we say, we release new version of software,

542
00:26:12,839 --> 00:26:16,200
Please bring it back to dev, run it locally, run

543
00:26:16,240 --> 00:26:20,240
all your tests against it, make sure it's completely perfect,

544
00:26:21,160 --> 00:26:25,400
then schedule an upgrade. And then you basically we just

545
00:26:25,480 --> 00:26:27,920
we allow them to schedule an upgrade, click a button,

546
00:26:28,400 --> 00:26:32,039
we upgrade their services, and they're they're off to the races, right,

547
00:26:32,079 --> 00:26:36,680
And so we build processes and tools that allow this

548
00:26:36,799 --> 00:26:39,440
to have, you know, our customers to do this very easily,

549
00:26:40,000 --> 00:26:42,599
but it's very important, and we talk to every single

550
00:26:42,640 --> 00:26:45,240
one about it, is like, please take this back to

551
00:26:45,319 --> 00:26:48,160
dev and run all your tests against this new version

552
00:26:48,240 --> 00:26:51,119
before you move into production and make sure nothing's going

553
00:26:51,200 --> 00:26:55,079
to break up. Auto upgrades are just dangerous inherently in

554
00:26:55,119 --> 00:27:00,000
the industry, and like build tools, dependencies anytime you're automatically

555
00:27:00,119 --> 00:27:05,559
upgrading something in your stack without fully testing it. Beware.

556
00:27:06,000 --> 00:27:07,480
Speaker 2: Yeah, I mean, I think you're absolutely right.

557
00:27:07,480 --> 00:27:11,039
Speaker 1: I've been on this particular horn for quite a while

558
00:27:11,119 --> 00:27:15,440
about companies or software dev teams that automatically upgrade dependencies

559
00:27:15,480 --> 00:27:19,119
in their requirements text file or package chase on or

560
00:27:19,160 --> 00:27:23,039
whatever have you, with the argument of automatically getting whatever

561
00:27:23,079 --> 00:27:25,799
security upgrades come with us. And I think what I

562
00:27:26,279 --> 00:27:29,519
really see here is a responsibility model, like who is

563
00:27:29,559 --> 00:27:33,079
going to take full responsibility for their being a breaking

564
00:27:33,200 --> 00:27:36,319
change somewhere? And it sounds like, you know, with these

565
00:27:36,319 --> 00:27:38,519
other competitors out there in the market, they don't take

566
00:27:38,559 --> 00:27:42,000
responsibility for the breaking changes that they make. You've made

567
00:27:42,039 --> 00:27:46,559
it transparent and we promise no breaking changes. So I mean, there,

568
00:27:47,480 --> 00:27:50,119
it's really ridiculous that you can be in this state.

569
00:27:50,200 --> 00:27:52,720
I mean, I would be totally okay with Amazon taking

570
00:27:52,720 --> 00:27:55,359
full responsibility for no breaking changes if they are going

571
00:27:55,400 --> 00:27:58,920
to upgrade my RDS instance or dining with tob et cetera,

572
00:27:59,039 --> 00:28:01,480
other models, But it really can't be the case that

573
00:28:01,519 --> 00:28:04,440
you're using a managed provider and they roll out features

574
00:28:04,480 --> 00:28:08,000
that can break your production software like that, that's not

575
00:28:08,039 --> 00:28:09,319
a real that's not a real solution.

576
00:28:09,519 --> 00:28:12,319
Speaker 4: In my mind, breaking changes is a very hard thing

577
00:28:12,359 --> 00:28:12,920
to define.

578
00:28:13,039 --> 00:28:13,359
Speaker 2: Yeah.

579
00:28:13,440 --> 00:28:17,799
Speaker 4: Right, So, like there's three levels of bugs in software. Right,

580
00:28:18,079 --> 00:28:21,599
There's a top level bug that is simply something that

581
00:28:22,000 --> 00:28:27,599
was inherently unfunctional and then becomes functional again. There's a

582
00:28:27,599 --> 00:28:30,599
semantic bug at the top level, which is I changed

583
00:28:30,599 --> 00:28:33,559
the semantic of something because it was not correct previously

584
00:28:33,599 --> 00:28:36,519
according to our docks or whatever, and now it is.

585
00:28:37,200 --> 00:28:41,319
And then there's nested semantic changes, which means I've called

586
00:28:41,400 --> 00:28:43,799
through service through service. Through service through service, the one

587
00:28:43,839 --> 00:28:46,599
way down at the bottom changed and it revealed a

588
00:28:46,599 --> 00:28:48,279
bug all the way up to the top. So I

589
00:28:48,319 --> 00:28:50,599
go fix the service way down at the bottom, and

590
00:28:50,640 --> 00:28:53,720
then the one at the top gets magically fixed. Okay,

591
00:28:54,039 --> 00:28:57,559
so when you have a patch release that's fixing a bug,

592
00:28:58,480 --> 00:29:02,720
it's still possible that someone's depending on the broken nature

593
00:29:02,799 --> 00:29:04,799
of that and you blow them out of the water.

594
00:29:05,279 --> 00:29:08,160
And this can it's literally just a dot release, right,

595
00:29:08,240 --> 00:29:11,480
So I could have thrown an exception and now I

596
00:29:11,519 --> 00:29:13,920
no longer do that. Well, the smart developer is like, well,

597
00:29:13,960 --> 00:29:15,480
I'm going to catch your exception and I'm just going

598
00:29:15,559 --> 00:29:18,160
to handle the path where like it's fine, Well, now

599
00:29:18,160 --> 00:29:21,960
you're returning the status code that I don't expect. Oh crap,

600
00:29:22,359 --> 00:29:25,359
I was expecting a five hundred. Now you're returning to

601
00:29:25,359 --> 00:29:28,200
four or one. Dude, like you're killing me your smalls,

602
00:29:28,240 --> 00:29:32,799
Like I can't. So, yes, you say you have zero

603
00:29:33,359 --> 00:29:38,200
incompatible changes, but that is too hard for a standard

604
00:29:38,200 --> 00:29:41,839
developer to reason through. So the only way to truly

605
00:29:42,400 --> 00:29:45,400
figure this problem out would be for the build tools,

606
00:29:45,880 --> 00:29:50,279
the testing tools, and the development time tools to basically

607
00:29:50,359 --> 00:29:55,319
certify that the entire landscape of all public things in

608
00:29:55,359 --> 00:29:58,480
our API, our code, whatever it might be, that people

609
00:29:58,519 --> 00:30:01,799
can't consume, here are the breaking changes, and here are

610
00:30:01,839 --> 00:30:05,480
the non breaking changes, right, because there's every release has

611
00:30:05,759 --> 00:30:09,440
breaking changes depending on how you're using the tool.

612
00:30:10,200 --> 00:30:12,519
Speaker 3: You bring up such a good point. We're in a

613
00:30:12,559 --> 00:30:14,240
certain place we were discussing before.

614
00:30:14,279 --> 00:30:15,440
Speaker 1: The call is famous for this.

615
00:30:16,759 --> 00:30:19,440
Speaker 3: I seated at multiple places, but there was a lot.

616
00:30:19,240 --> 00:30:22,599
Speaker 4: At this place. These are insanely hard problems to solve.

617
00:30:22,759 --> 00:30:25,799
And what's happened in the software development industry is that

618
00:30:26,079 --> 00:30:28,960
everyone got so excited about new languages and frameworks and

619
00:30:29,000 --> 00:30:31,680
building apps fast, and now there's like, you know, you

620
00:30:31,720 --> 00:30:35,359
know whatever Jive coding or whatever it's called I don't

621
00:30:35,359 --> 00:30:41,880
know what yes, and like bobob coding. So like there's

622
00:30:41,920 --> 00:30:43,799
all this stuff that we're just like we're just throwing

623
00:30:43,839 --> 00:30:45,880
it at the top end. We're like, oh, this is amazing.

624
00:30:45,920 --> 00:30:47,559
Look at all the stuff we can do and these

625
00:30:47,559 --> 00:30:50,880
cool frameworks and you know, React and all these things,

626
00:30:50,960 --> 00:30:54,319
and we forgot to go fundamentally solve software engineering problems

627
00:30:54,359 --> 00:30:56,440
at the core level, which is like, how do I

628
00:30:56,559 --> 00:31:01,240
certify that this version and this version are unquote compatible

629
00:31:01,279 --> 00:31:04,480
at the binary level, compatible at the public API level,

630
00:31:04,559 --> 00:31:07,920
compatible at the consumption level, compatible at the run time level.

631
00:31:08,519 --> 00:31:10,559
We don't have tools for that. There are literally no

632
00:31:10,640 --> 00:31:14,720
tools in any language that certify those things because we

633
00:31:14,920 --> 00:31:17,720
just as an industry forgot about them and we assumed

634
00:31:17,720 --> 00:31:19,720
that the developer was smart enough to do them, and

635
00:31:20,720 --> 00:31:22,640
they're not. Like, no one is. No one can know

636
00:31:22,680 --> 00:31:27,279
the entire you know, code base and certify that it's compatible.

637
00:31:27,319 --> 00:31:35,720
It's impossible. I made fun of some of these new terms.

638
00:31:35,759 --> 00:31:37,640
My son's a software engineer, and so he's like, Oh,

639
00:31:37,640 --> 00:31:39,079
I'm going to vibe code this thing tonight.

640
00:31:39,160 --> 00:31:44,039
Speaker 3: I'm like, god, dude, vibe like an authentication just like,

641
00:31:44,119 --> 00:31:44,680
oh my god.

642
00:31:46,440 --> 00:31:50,440
Speaker 1: There was actually a post about using Claude to generate

643
00:31:51,519 --> 00:31:56,279
two compatible integration and how much it failed basically even

644
00:31:56,559 --> 00:32:01,200
with the driver being a very experienced senior engineer in

645
00:32:01,440 --> 00:32:04,200
developing some like helping develop some of the standards. Like,

646
00:32:04,319 --> 00:32:07,359
that's how ridiculously not safe it is to do that.

647
00:32:07,400 --> 00:32:09,359
I do want to call out, like, this is for

648
00:32:09,400 --> 00:32:13,559
sure a nearly impossible problem. And I don't think you've

649
00:32:13,640 --> 00:32:15,839
you've even sold it enough here, so like let me,

650
00:32:16,000 --> 00:32:19,240
I just want to share that. It's like if you

651
00:32:19,319 --> 00:32:21,880
haven't if your if your service like returns an enom

652
00:32:22,160 --> 00:32:26,519
like a value you know, zero, one or two, and

653
00:32:26,559 --> 00:32:29,839
you add in the ability for it to return a four,

654
00:32:30,400 --> 00:32:33,839
like is that like does that break someone? And it's

655
00:32:33,839 --> 00:32:36,000
not a breaking change technically, but it is it is

656
00:32:36,119 --> 00:32:38,279
it for sure will break someone because in most software

657
00:32:38,319 --> 00:32:41,839
languages there is no code to say, like I expect

658
00:32:41,880 --> 00:32:44,119
only these results and if I get a different one,

659
00:32:44,160 --> 00:32:47,200
what to do in that scenario? And so you will

660
00:32:47,240 --> 00:32:50,160
be putting your customer in a scenario where their system

661
00:32:50,200 --> 00:32:51,640
will break in some unexpected way.

662
00:32:52,000 --> 00:32:54,000
Speaker 2: So I think if.

663
00:32:53,960 --> 00:32:56,720
Speaker 1: You're ready to go down this approach, if you if

664
00:32:56,720 --> 00:32:59,599
you run managed software like a cloud provider, or you've

665
00:32:59,599 --> 00:33:02,880
done something ridiculous like we have. You have to really

666
00:33:02,960 --> 00:33:06,240
understand the system thinking approach, like what based off of

667
00:33:06,240 --> 00:33:09,279
our current API, what did our customers write, Like what

668
00:33:10,079 --> 00:33:12,279
magical thing happened in their head that they wrote down

669
00:33:12,680 --> 00:33:16,640
that was was correct at the time, and now after

670
00:33:16,720 --> 00:33:20,480
this change is no longer correct. And so very often

671
00:33:20,279 --> 00:33:22,920
when I say no breaking changes, I mean that means

672
00:33:22,960 --> 00:33:25,759
like you can add fields, and even that's a little

673
00:33:25,759 --> 00:33:28,160
bit on the edge, but like renaming things or adding

674
00:33:28,319 --> 00:33:31,920
error codes, you know, we're very careful about. I think

675
00:33:32,160 --> 00:33:35,359
a standard one is like don't don't, like you have

676
00:33:35,400 --> 00:33:38,200
to be so careful not to over engineer anything, because

677
00:33:39,039 --> 00:33:41,240
that for sure means later you're going to be like, wow,

678
00:33:41,240 --> 00:33:43,400
I wish I hadn't put that in the API, because

679
00:33:43,440 --> 00:33:46,319
now someone could be depending on it, and it's impossible

680
00:33:46,319 --> 00:33:49,599
to know what fields someone's depending on with a particular

681
00:33:49,640 --> 00:33:52,599
get Now, there are some tricks here for anyone who

682
00:33:52,599 --> 00:33:55,759
actually does care and does decide to do this. You

683
00:33:55,920 --> 00:34:01,279
can embed the assumptions in your SDKs that you roll

684
00:34:01,279 --> 00:34:03,440
it to your customers, and then you can track which

685
00:34:03,559 --> 00:34:07,039
SDK versions they're using to understand what sort of things

686
00:34:07,039 --> 00:34:09,239
that they'll run into. And by making sure that the

687
00:34:09,239 --> 00:34:11,440
requests that coming from their service are all using an

688
00:34:11,519 --> 00:34:13,800
upgraded version of the SDK. You can be sure that

689
00:34:13,840 --> 00:34:16,599
any dependency that rolls out for that customer would not

690
00:34:16,800 --> 00:34:18,880
have a problem. Which does mean that in our own

691
00:34:18,920 --> 00:34:21,760
code base we do have feature flags for certain customers

692
00:34:21,800 --> 00:34:27,159
to potentially take certain dangerous upgrades. But fundamentally we do

693
00:34:27,239 --> 00:34:29,719
have to segregate by customer and understand the SDK. And

694
00:34:29,719 --> 00:34:33,280
that's still not sufficient because customers will delegate out integrations

695
00:34:33,280 --> 00:34:38,119
to all services to backstage and whatever other internal developer

696
00:34:38,199 --> 00:34:41,639
tooling or other client that you don't even control, and

697
00:34:41,719 --> 00:34:44,360
so getting that that integration to work correctly is just

698
00:34:44,400 --> 00:34:46,840
another huge thing. Like it's not always like you can

699
00:34:46,840 --> 00:34:48,559
get your customer on the phone and promise them a

700
00:34:48,639 --> 00:34:52,199
huge discount to make to make a change, or you know,

701
00:34:52,639 --> 00:34:54,719
threaten them with a huge increase if they are still

702
00:34:54,719 --> 00:34:57,159
on an old version of Kubernetes. And I mean, I'm

703
00:34:57,199 --> 00:35:00,159
your ofth provider in the cloud because you know, oh

704
00:35:00,159 --> 00:35:01,920
the cloud friders are doing that now too. So I

705
00:35:02,360 --> 00:35:05,519
do think that there's a whole spectrum here of problems

706
00:35:05,519 --> 00:35:07,400
that you're going to run into, and you have to

707
00:35:07,400 --> 00:35:11,079
be conscious of how you're going to tackle every side

708
00:35:11,079 --> 00:35:11,320
of it.

709
00:35:11,559 --> 00:35:15,800
Speaker 4: Yeah, it's tricky. The software engineers have to think so

710
00:35:16,719 --> 00:35:19,880
hard about the architecture for their unges, their APIs. It's like,

711
00:35:21,239 --> 00:35:23,119
are we going to do? Are we going to version them?

712
00:35:23,119 --> 00:35:24,880
So like you know, slash V one, slash V two,

713
00:35:24,960 --> 00:35:28,280
slash v three, And then when we make a change,

714
00:35:28,639 --> 00:35:30,679
when do we upgrade the version number? And then is

715
00:35:30,679 --> 00:35:32,719
that version number tied to the SDK and the SDK

716
00:35:32,880 --> 00:35:35,039
only calls into this when it's this version or cause

717
00:35:35,119 --> 00:35:38,400
the old version? And can you make a compatibility translation

718
00:35:38,480 --> 00:35:40,800
between V one and V two and B three? I mean,

719
00:35:40,920 --> 00:35:42,880
it's like it's a lot of mental overhead just to

720
00:35:42,920 --> 00:35:45,239
make a simple change, Like, ah, dude, I just want

721
00:35:45,239 --> 00:35:47,920
to like return this extra field in the API. You're like, well,

722
00:35:48,559 --> 00:35:51,280
is another field dependent on that field now? Because if

723
00:35:51,280 --> 00:35:53,800
you have dependent fields, you can't make that change unless

724
00:35:53,800 --> 00:35:55,440
you version the API and then version of the SEK,

725
00:35:55,760 --> 00:35:56,760
and then you have to make sure you have a

726
00:35:56,800 --> 00:36:00,360
compatibility layer between those two versions. And their brains explode

727
00:36:00,360 --> 00:36:01,840
and they're like, dude, all I just wanted to make

728
00:36:01,840 --> 00:36:02,519
a feel change.

729
00:36:02,960 --> 00:36:07,559
Speaker 3: Sorry, this is why I don't such faith.

730
00:36:07,440 --> 00:36:13,239
Speaker 4: And a terrified for this specific reason.

731
00:36:13,199 --> 00:36:17,920
Speaker 3: It really really does. And like at the stuff that

732
00:36:18,039 --> 00:36:21,079
I've been seeing playing with different products that are coming,

733
00:36:21,719 --> 00:36:28,000
it's learning it's hallucinations, and like, I just don't see

734
00:36:28,119 --> 00:36:32,119
how this stopped. Like I know there's obviously balances, and

735
00:36:32,159 --> 00:36:34,960
you know it's people obviously like test these before it

736
00:36:34,960 --> 00:36:37,559
comes out, but once it's like once it's deployed and

737
00:36:37,599 --> 00:36:40,199
it's learning its own hallucinations, Like how do you stop it?

738
00:36:40,280 --> 00:36:40,559
I don't.

739
00:36:40,800 --> 00:36:43,079
Speaker 1: I love I love how you said obviously people test

740
00:36:43,119 --> 00:36:44,760
these because you know I.

741
00:36:48,000 --> 00:36:52,199
Speaker 3: Once you haven't like deployed in your environment. It's what

742
00:36:52,559 --> 00:36:55,320
is it the Schroeder's cat, like if it if it's

743
00:36:56,519 --> 00:36:58,400
but I forget how that goes and if I've even

744
00:36:58,400 --> 00:37:00,840
pronounced that correctly. But Schroder's cat where it's like, if

745
00:37:00,840 --> 00:37:03,519
it happens in another world, does it then become reality?

746
00:37:04,039 --> 00:37:06,559
Like if it's hallucinating on something that's false, but now

747
00:37:06,599 --> 00:37:08,800
it has become reality, Like is it reality?

748
00:37:08,880 --> 00:37:12,079
Speaker 4: I don't think it's a phenomenally existential question.

749
00:37:13,400 --> 00:37:14,880
Speaker 1: What I was going to ask is you know how

750
00:37:14,880 --> 00:37:17,480
the S and MCP stands for security? Where are you

751
00:37:17,480 --> 00:37:19,360
on the spectrum of AI is terrible and going to

752
00:37:19,400 --> 00:37:21,280
ruin the world? And is it the best thing ever

753
00:37:21,480 --> 00:37:23,599
created by humans? And I guess we know where Amy

754
00:37:23,679 --> 00:37:25,119
stands on that particular point.

755
00:37:25,519 --> 00:37:28,599
Speaker 3: I mean, I'm sure it's going to excel at certain things,

756
00:37:28,800 --> 00:37:31,280
but solving the types of things that people think it's

757
00:37:31,320 --> 00:37:35,280
going to solve, I just don't. I don't see how

758
00:37:35,320 --> 00:37:38,800
that can happen, because I mean that we're fandomically, like

759
00:37:38,800 --> 00:37:41,119
we're at the limb of ourselves and we fail.

760
00:37:41,760 --> 00:37:44,679
Speaker 4: So how it's really hard to engineer a prompt that

761
00:37:44,840 --> 00:37:48,440
tells them about your entire software development life cycle and

762
00:37:48,519 --> 00:37:51,480
the way that you've architected your entire system, right, So,

763
00:37:51,519 --> 00:37:53,760
like your prop would have to be like generate me

764
00:37:53,920 --> 00:37:56,599
a new API and blah blah blah. But keep in

765
00:37:56,639 --> 00:37:59,000
mind that we version our APIs this way and these

766
00:37:59,000 --> 00:38:02,400
are breaking changes. We use this SLDC process to get

767
00:38:02,400 --> 00:38:05,199
our SDK updated. You have to link the SDK to

768
00:38:05,280 --> 00:38:07,679
this and that and that. There's the AI is. You

769
00:38:07,960 --> 00:38:10,960
just can't do that, right, So, like AI is great

770
00:38:11,039 --> 00:38:14,360
for helping me code complete a four loop, right, and

771
00:38:14,559 --> 00:38:16,840
it'll guess based on the things that's seen in the

772
00:38:16,880 --> 00:38:19,079
code and where I'm at and logically what I want

773
00:38:19,119 --> 00:38:20,679
to kind of do, and I can make a prompt.

774
00:38:20,719 --> 00:38:23,559
It's like, hey, make me a map reduce on this list,

775
00:38:23,599 --> 00:38:27,840
and okay, I got you. Great for that stuff. Generating

776
00:38:28,079 --> 00:38:31,840
full code bases and let alone adding to existing code

777
00:38:31,880 --> 00:38:36,719
bases large chunks of code freaks me out. And I

778
00:38:36,760 --> 00:38:40,280
always tell people. I'm like, don't let that anywhere near

779
00:38:40,480 --> 00:38:43,920
your security layer, Like anything that has to do with security, please, please, please,

780
00:38:43,960 --> 00:38:46,280
please please do not let AI generate it and just

781
00:38:46,320 --> 00:38:51,039
ship that like, let it help you, but review your code,

782
00:38:51,119 --> 00:38:55,000
test it, do a security audit, do a pen test,

783
00:38:55,320 --> 00:38:57,760
do a load test. Like you still have to do

784
00:38:57,840 --> 00:39:01,880
all the things that we're doing which require knowledgeable software

785
00:39:01,880 --> 00:39:04,159
engineers to do them right. You can't just let AI

786
00:39:04,239 --> 00:39:07,280
do that either. So like the doomsdayers are like, okay,

787
00:39:07,320 --> 00:39:09,840
well you know engineering is dead, you know, no, no

788
00:39:09,920 --> 00:39:12,280
more engineers coming out of college. No, we're stopping. We'll

789
00:39:12,280 --> 00:39:14,119
just take that off to college curriculum. And I'm like,

790
00:39:14,679 --> 00:39:17,480
we're so far away from that, so so so so

791
00:39:17,599 --> 00:39:19,400
far away. Like you guys, keep going to college, let

792
00:39:19,480 --> 00:39:20,280
go get your degrees.

793
00:39:21,159 --> 00:39:22,639
Speaker 3: That's going to create more jobs.

794
00:39:22,920 --> 00:39:24,639
Speaker 4: Yeah, it will, it will, It's like.

795
00:39:26,239 --> 00:39:26,679
Speaker 3: It will.

796
00:39:27,440 --> 00:39:31,400
Speaker 1: So I think the biggest problem here isn't that You're

797
00:39:31,440 --> 00:39:35,239
absolutely right. It's that people believe that it's going to

798
00:39:35,280 --> 00:39:38,360
take over stuff, and so it's already affecting things like

799
00:39:38,480 --> 00:39:41,079
universities and whatnot. I mean, there is something to be

800
00:39:41,119 --> 00:39:45,159
said for specifications. I find that if you have a

801
00:39:45,320 --> 00:39:49,000
very well written out spec using an LM to generate

802
00:39:49,360 --> 00:39:53,360
on a transformation so a translation or getting it written down,

803
00:39:53,440 --> 00:39:57,960
let's say, open API specification into something else that's programmatic,

804
00:39:58,039 --> 00:40:00,400
so an SDK. But at that point, why are you

805
00:40:00,440 --> 00:40:03,159
just not using a rules generator? But maybe the thing

806
00:40:03,239 --> 00:40:06,800
that generates the generator, that thing could be l M based.

807
00:40:07,519 --> 00:40:10,000
So you know, I see, I see the hesitation here.

808
00:40:10,039 --> 00:40:13,599
You know, I'm totally totally on the same side for

809
00:40:13,719 --> 00:40:14,320
the most part.

810
00:40:14,679 --> 00:40:15,559
Speaker 2: Yeah, for sure.

811
00:40:16,639 --> 00:40:20,519
Speaker 4: Yeah, it's again, it's a tool. Use it effectively, you're good.

812
00:40:21,079 --> 00:40:24,559
Don't use it for everything like that. Just that sounds dangerous.

813
00:40:24,639 --> 00:40:27,360
Speaker 1: I like the argument that people have been using Oh

814
00:40:27,400 --> 00:40:30,840
but there were a lot of naysayers about the Internet

815
00:40:30,840 --> 00:40:33,480
when it came out, So can't you envision at some

816
00:40:33,559 --> 00:40:36,719
point AI also being great and the people that are

817
00:40:36,760 --> 00:40:38,840
jumping up and down right now like they're just on

818
00:40:39,000 --> 00:40:41,199
the forefront of innovation.

819
00:40:42,360 --> 00:40:45,159
Speaker 4: And I say, remember the Internet was never designed to

820
00:40:45,159 --> 00:40:46,760
host applications.

821
00:40:46,119 --> 00:40:50,800
Speaker 1: And I think you've established some converts probably today after.

822
00:40:52,039 --> 00:40:55,360
You know, it's interesting because from my experience it's been

823
00:40:55,559 --> 00:40:59,960
that a full multi tenant solution is never the right answer.

824
00:41:00,159 --> 00:41:02,599
And I also am not a fan of full single

825
00:41:02,719 --> 00:41:05,920
tenant solutions. Like we end up usually somewhere in between.

826
00:41:06,199 --> 00:41:11,000
We don't have millions and millions of database instances running

827
00:41:11,039 --> 00:41:14,480
one for every customer, but there are things like dedicated

828
00:41:14,519 --> 00:41:18,480
tables per customer, or dedicated certificates per customer, or dedicated

829
00:41:19,360 --> 00:41:21,519
you know, CDNs, et cetera. But there are also some

830
00:41:21,559 --> 00:41:25,639
shared components as well. And I feel like understanding where

831
00:41:25,679 --> 00:41:28,280
the direction the business is going and where the value

832
00:41:28,280 --> 00:41:30,920
is that you're providing helps to pick the right part

833
00:41:30,960 --> 00:41:33,800
of the spectrum and not assume it's like a pure

834
00:41:34,199 --> 00:41:37,280
extreme case, like it's only A or B and nothing

835
00:41:37,320 --> 00:41:37,760
in between.

836
00:41:37,920 --> 00:41:42,159
Speaker 4: Exactly. Yeah, I mean we're you can consider us fybrid too, right, Yeah,

837
00:41:42,519 --> 00:41:44,920
when we run in the cloud, we I mean we're

838
00:41:44,920 --> 00:41:47,400
even looking at like starting to share a single database

839
00:41:47,440 --> 00:41:51,280
instance across like lots of small customers because the cost

840
00:41:51,320 --> 00:41:53,559
of scale there is is way better and it's way

841
00:41:53,599 --> 00:41:57,519
easier to manage and multitude of reasons, right, So we're

842
00:41:57,679 --> 00:41:59,960
we're already looking at starting to do some of the

843
00:42:00,199 --> 00:42:02,800
we would do like a database slice per customer. We

844
00:42:02,840 --> 00:42:04,840
would probably put them all on the same database and

845
00:42:05,119 --> 00:42:08,239
just like our tables or anything. But but yeah, I

846
00:42:08,559 --> 00:42:12,039
totally agree with you, right, So, like we we want

847
00:42:12,159 --> 00:42:14,440
everybody to have the best of both worlds, and it's like,

848
00:42:14,480 --> 00:42:17,320
how do we do that most effectively? Though? So the

849
00:42:17,360 --> 00:42:20,320
coolest use case that we have, which kind of is

850
00:42:20,599 --> 00:42:24,199
only usable and you know, downloadable, single tenant and they

851
00:42:24,239 --> 00:42:28,920
deploy it in their own special way, is that we

852
00:42:28,960 --> 00:42:31,559
work with a satellite company and they actually have pushed

853
00:42:31,559 --> 00:42:34,719
fusee not up to these low Earth orbit satellites, and

854
00:42:34,800 --> 00:42:38,559
so we can say that fusion oth runs in space.

855
00:42:38,760 --> 00:42:41,599
It's pretty sweet. And so we're like, we like to

856
00:42:41,639 --> 00:42:45,159
say we're on all all all the continents and space,

857
00:42:45,840 --> 00:42:49,119
although Antarctica we faked that one. We just you know,

858
00:42:49,760 --> 00:42:51,960
had somebody that was doing a tour down there, like

859
00:42:52,000 --> 00:42:54,960
fire a FUSEE near it, and then we said, okay,

860
00:42:55,000 --> 00:42:56,039
we're on Antarctica now.

861
00:42:56,159 --> 00:42:57,599
Speaker 3: But yeah, for.

862
00:42:57,599 --> 00:43:01,880
Speaker 1: Sure, amy have have we converted you any if I

863
00:43:01,960 --> 00:43:03,519
managed to at least pull you back a little bit

864
00:43:03,639 --> 00:43:09,039
away from multi tenant is always wrong and security vulnerabilities,

865
00:43:09,559 --> 00:43:10,119
I definitely.

866
00:43:10,119 --> 00:43:13,119
Speaker 3: I mean, if you's in a perfect world, there's one scenario,

867
00:43:13,239 --> 00:43:16,239
but in a practical world, I do agree, like it

868
00:43:16,320 --> 00:43:18,559
depends it has to be crimination.

869
00:43:19,039 --> 00:43:22,920
Speaker 1: Yeah, I see some uh past trauma there really starting

870
00:43:22,960 --> 00:43:23,360
to show.

871
00:43:24,280 --> 00:43:27,719
Speaker 4: I think we've had trauma on both sides. We're likeable.

872
00:43:28,480 --> 00:43:30,719
It was expensive and so hard to manage, and how

873
00:43:30,719 --> 00:43:33,320
do I get this into production? And then it's like, well,

874
00:43:33,320 --> 00:43:35,880
we're using this service and it just crashed, you know.

875
00:43:36,039 --> 00:43:38,599
I mean I think we all have a decent amount

876
00:43:38,679 --> 00:43:40,320
of stories from both sides.

877
00:43:40,639 --> 00:43:43,159
Speaker 1: Yeah, I mean I think my my single tenant one

878
00:43:43,280 --> 00:43:47,159
was definitely we were running Jira, and uh, I mean

879
00:43:47,159 --> 00:43:49,440
that that's that's already the beginning and the end of

880
00:43:49,599 --> 00:43:53,960
the whole trauma right there. Yeah. But it turns out

881
00:43:53,960 --> 00:43:55,760
that when you're running it and they tell you that

882
00:43:55,800 --> 00:43:58,199
there's a major change, you would hope that the provider

883
00:43:58,280 --> 00:44:02,039
gave you the capability to automatically migrate the database and

884
00:44:02,079 --> 00:44:07,199
all the backwards incompatible stuff, But very frequently there would

885
00:44:07,199 --> 00:44:09,880
be database crashes and you would lose all of your data,

886
00:44:10,000 --> 00:44:12,639
and it's just like that's a thing that happened, and

887
00:44:12,880 --> 00:44:15,960
I think the pendulum swung really hard to the other

888
00:44:16,039 --> 00:44:18,480
side was like, we don't ever want to deal with

889
00:44:18,519 --> 00:44:21,039
this ever again, because we don't trust companies to provide

890
00:44:21,119 --> 00:44:22,039
us the tools to.

891
00:44:22,000 --> 00:44:22,960
Speaker 2: Actually do the upgrades.

892
00:44:23,320 --> 00:44:26,119
Speaker 1: And now we're back going I think, really coming the

893
00:44:26,159 --> 00:44:29,559
other way, which is, yes, we don't trust companies to

894
00:44:29,800 --> 00:44:32,519
you know, still be alive or you know, running their

895
00:44:32,559 --> 00:44:34,840
APIs in a non backwards compatible way, because now they

896
00:44:34,920 --> 00:44:37,119
just release new stuff all the time and it breaks.

897
00:44:37,599 --> 00:44:39,559
Speaker 2: And I think this is just a story of it.

898
00:44:39,559 --> 00:44:41,880
Speaker 1: It's no matter what solution you pick, it it's wrong

899
00:44:42,039 --> 00:44:45,000
or bad in some way.

900
00:44:45,239 --> 00:44:48,559
Speaker 3: Everything everything is very much it depends and then it

901
00:44:48,719 --> 00:44:51,960
changes constantly. So you know what you have one year,

902
00:44:52,039 --> 00:44:53,760
the decision you make you're one is going to be

903
00:44:53,760 --> 00:44:58,039
a very different problems the decision you make year two, three, four, hopefully.

904
00:44:58,639 --> 00:45:01,480
Speaker 4: Yeah, I totally agree with all things said.

905
00:45:02,440 --> 00:45:06,039
Speaker 1: Everyone's camp okay, Yeah, that's that's a good, good camp

906
00:45:06,079 --> 00:45:06,360
to be in.

907
00:45:07,000 --> 00:45:09,880
Speaker 4: I think we've we've hit the AI topic, which everyone

908
00:45:10,239 --> 00:45:12,519
is obligatory. Now everyone has to hit an AI topic.

909
00:45:12,559 --> 00:45:15,880
Speaker 1: And the truth is, we actually have quite a few

910
00:45:16,000 --> 00:45:19,719
episodes recently in the past few months that have heavily

911
00:45:20,000 --> 00:45:22,480
delved into ai.

912
00:45:22,000 --> 00:45:24,440
Speaker 2: UH and LMS and anything on the topic.

913
00:45:24,559 --> 00:45:27,360
Speaker 1: So if there you are, if anyone is interested in

914
00:45:27,639 --> 00:45:30,679
reviewing those, there's a there's definitely a plethora of not

915
00:45:30,960 --> 00:45:33,960
not a limited amount of information podcast episodes, so you

916
00:45:34,000 --> 00:45:36,880
can go into hours and hours where we debate one

917
00:45:36,880 --> 00:45:39,800
way or the other. So then let's uh, let's move

918
00:45:39,840 --> 00:45:41,800
on to picks. Amy is okay if I put you on

919
00:45:41,840 --> 00:45:42,199
the spot?

920
00:45:42,840 --> 00:45:46,360
Speaker 3: Sure, I you know, since I'm like new here, I

921
00:45:46,400 --> 00:45:48,159
have a slew in my head. But I'm going to

922
00:45:48,199 --> 00:45:52,840
pick walking since that's what I'm doing today. Morning is

923
00:45:52,920 --> 00:45:56,119
usually when I have the most energy. So I think

924
00:45:56,159 --> 00:45:59,119
I've gotten I'm looking on my tunel here almost two.

925
00:45:59,039 --> 00:46:03,400
Speaker 4: Miles treadmill do you have I've been like condubating getting one.

926
00:46:03,599 --> 00:46:06,199
Speaker 3: I am a Peloton fan girl. That could be my

927
00:46:06,360 --> 00:46:10,519
second pick, but in all reality, I was looking so

928
00:46:10,679 --> 00:46:15,039
I have the first version of the Peloton thread. I

929
00:46:15,199 --> 00:46:18,000
like the slated one. However, this one I think is

930
00:46:18,039 --> 00:46:22,599
slightly smaller and so it works perfectly for my face.

931
00:46:22,679 --> 00:46:25,079
I have a desk up here. You can actually I

932
00:46:25,079 --> 00:46:27,079
don't have it hooked up right now, but it's the

933
00:46:27,119 --> 00:46:29,639
external monitor. You can actually hook up your laptop to

934
00:46:29,679 --> 00:46:31,960
the external monitor too, so it works really good for

935
00:46:32,039 --> 00:46:32,800
like a little setup.

936
00:46:33,760 --> 00:46:36,440
Speaker 4: Nice, all right, I'll look into it.

937
00:46:37,519 --> 00:46:40,280
Speaker 1: Brian Feelfred, I guess why I'll go.

938
00:46:41,920 --> 00:46:45,199
Speaker 4: So two. I have two things. Actually one of them

939
00:46:45,239 --> 00:46:47,280
is just totally random because it just popped into my head.

940
00:46:47,480 --> 00:46:50,920
But like I like, like, you know, snakes on a

941
00:46:50,920 --> 00:46:55,119
plane style movies, right, So, like I watched one recently

942
00:46:55,280 --> 00:46:59,679
which I thought was was really hilarious and it was

943
00:46:59,719 --> 00:47:04,119
just like sort of like way over the top in

944
00:47:04,199 --> 00:47:07,760
terms of like the the way that they did it,

945
00:47:07,800 --> 00:47:11,159
And so that was that was one of them. Now

946
00:47:11,199 --> 00:47:15,440
I'm just Fight or Flight and other kind of like

947
00:47:15,440 --> 00:47:17,400
stakes not a plane movie anyway, if you're into that

948
00:47:17,480 --> 00:47:21,760
kind of like heavy gore, like crazy comedy, like ridiculousness,

949
00:47:22,119 --> 00:47:24,760
that one's a fun movie. But the one that I'm

950
00:47:24,800 --> 00:47:27,320
really interested in kind of because it's you know, kind

951
00:47:27,320 --> 00:47:29,519
of goes along with what we're doing here and talking about,

952
00:47:29,920 --> 00:47:33,159
is there's this cool tool called search Craft, and I'm

953
00:47:33,239 --> 00:47:36,719
like on like this huge kick with it because it's

954
00:47:36,800 --> 00:47:41,199
it's a completely new search engine. They've rewritten, you know,

955
00:47:41,199 --> 00:47:43,400
from scratch. It's not built on Lucine, it's not built

956
00:47:43,440 --> 00:47:46,679
you know on Elastic. It's completely different. It's built in rust.

957
00:47:46,920 --> 00:47:51,400
It's like super efficient, highly performance, requires like you know,

958
00:47:52,079 --> 00:47:55,199
seventy percent less compute. You can run it locally, you

959
00:47:55,199 --> 00:47:56,559
can run it in their cloud, and you can run

960
00:47:56,599 --> 00:47:59,719
it in your cloud. It's just a really really cool

961
00:48:00,039 --> 00:48:03,039
evolution of something that you know a lot of apps

962
00:48:03,039 --> 00:48:06,360
in need, which is just a simple search service. And

963
00:48:06,360 --> 00:48:10,239
and I think they really have something that's gonna change

964
00:48:10,400 --> 00:48:13,199
the way that we think about search. So anyway, that's

965
00:48:13,280 --> 00:48:16,079
that's the thing that I've really been gone how about lately.

966
00:48:16,159 --> 00:48:18,840
So anybody wants to check it out. It's just I

967
00:48:18,880 --> 00:48:23,079
think it's searchcraft dot. I owe searchcraft dot I owe.

968
00:48:23,079 --> 00:48:24,440
Speaker 1: I think is it Well, we'll get the link and

969
00:48:24,480 --> 00:48:25,960
put it in the in the show notes. Is this

970
00:48:26,119 --> 00:48:28,840
just like every company I should be using it? Or

971
00:48:28,960 --> 00:48:32,079
is like if I'm just developing something myself, it's there's

972
00:48:32,159 --> 00:48:34,280
a great opportunity to also pull it in.

973
00:48:34,800 --> 00:48:37,639
Speaker 4: At some point every company should be using it. It's

974
00:48:37,719 --> 00:48:40,679
because like you know, you know Elastic, right, it requires

975
00:48:40,719 --> 00:48:42,639
like seven servers and they all have to have like

976
00:48:42,800 --> 00:48:45,599
full pi ops and they have to have ten gigs

977
00:48:45,599 --> 00:48:47,760
a RAM each and it's just a it's a hawk,

978
00:48:48,119 --> 00:48:51,079
and is it impossible to run and manage. Search Craft

979
00:48:51,239 --> 00:48:54,519
is not quite there yet. Their clustering is coming along,

980
00:48:54,559 --> 00:48:57,199
and they're really they're really heavy in development right now.

981
00:48:57,880 --> 00:49:00,400
But like, just as a nice search search is for

982
00:49:00,440 --> 00:49:03,679
an app that you're building, you should totally be using it.

983
00:49:03,719 --> 00:49:06,920
Don't even think about open search, elastic search, just skip

984
00:49:07,000 --> 00:49:08,960
that junk and go straight to search Craft.

985
00:49:09,400 --> 00:49:11,480
Speaker 1: Yeah, I'm I'm totally with you in general here. I

986
00:49:11,760 --> 00:49:14,199
find that, first of all, i'm really suspicious of any

987
00:49:14,199 --> 00:49:16,440
application that's built in Java.

988
00:49:16,960 --> 00:49:18,280
Speaker 2: That's that's that's my first thing.

989
00:49:18,320 --> 00:49:21,880
Speaker 1: But the second one is is that even the promised

990
00:49:21,880 --> 00:49:24,880
managed services in a WS with the other cloud providers,

991
00:49:24,960 --> 00:49:27,679
they're they're not really fully managed. It's just pretty much

992
00:49:27,760 --> 00:49:30,280
like you don't get access to the easy two machines,

993
00:49:30,320 --> 00:49:32,199
but you still have to pretty much manage it yourself.

994
00:49:32,519 --> 00:49:35,000
Speaker 2: So there's a there's a huge allure of.

995
00:49:35,079 --> 00:49:38,840
Speaker 1: Just not having to understand the complexity of index management

996
00:49:39,400 --> 00:49:42,280
UH and document management and just using an API that

997
00:49:42,599 --> 00:49:45,719
runs with low compute or memory impact.

998
00:49:46,320 --> 00:49:48,719
Speaker 4: So it's huge and it's hybrid again, so you can

999
00:49:48,880 --> 00:49:50,199
not locally run in the cloud.

1000
00:49:51,119 --> 00:49:54,760
Speaker 1: Okay, thank you, Okay, So my pick today is going

1001
00:49:54,800 --> 00:49:58,639
to be uh these uh Scarpus shoes. I actually really

1002
00:49:58,679 --> 00:50:00,639
liked them. I found them randomly one day when I

1003
00:50:00,679 --> 00:50:04,559
was walking in in Zurich. They're wide enough if you

1004
00:50:04,639 --> 00:50:07,920
if you want wide shoes, and they're must in Switzerland

1005
00:50:07,960 --> 00:50:10,159
if you just hop on some walking trails.

1006
00:50:10,159 --> 00:50:11,280
Speaker 2: They have vibrum soles.

1007
00:50:11,880 --> 00:50:13,480
Speaker 1: I just really like them, and I never heard of

1008
00:50:13,480 --> 00:50:16,320
them before. Apparently they were made in Italy, and I

1009
00:50:16,320 --> 00:50:18,400
guess today I'm just one of the lucky ten thousand.

1010
00:50:18,280 --> 00:50:23,000
Speaker 4: Scarpa correct me if I'm wrong. But they started making

1011
00:50:23,039 --> 00:50:25,280
mount rock cling shoes right so then.

1012
00:50:25,239 --> 00:50:28,280
Speaker 1: Oh yeah, so in Switzerland it's it's been a huge

1013
00:50:29,239 --> 00:50:32,440
path down here. So really realistically these are just regular

1014
00:50:32,480 --> 00:50:33,119
walking shoes.

1015
00:50:33,159 --> 00:50:34,800
Speaker 2: But you can get all.

1016
00:50:34,840 --> 00:50:39,199
Speaker 1: There's a six ratings for hiking in Switzerland T one two,

1017
00:50:39,239 --> 00:50:41,519
T six and T one's like flat ground.

1018
00:50:41,960 --> 00:50:43,039
Speaker 2: You don't there's no danger.

1019
00:50:43,119 --> 00:50:45,360
Speaker 1: All the way to T six you're totally exposed, risk

1020
00:50:45,440 --> 00:50:48,800
of death everything. And they off they have dedicated shoes

1021
00:50:49,000 --> 00:50:53,039
for every single type of hike you could possibly go on.

1022
00:50:53,039 --> 00:50:56,800
Ones that support crampons, dedicated hiking shoes, you know all

1023
00:50:56,920 --> 00:50:59,280
they go all the way up to your like above

1024
00:50:59,280 --> 00:51:04,159
your ankles for support dedicated like climbing shoes, so you know,

1025
00:51:04,159 --> 00:51:06,000
the Will band in case you're you're into rock climbing

1026
00:51:06,000 --> 00:51:08,400
and whatnot. They're really nice, Like I think they really

1027
00:51:08,440 --> 00:51:10,960
high quality, really soft h They're some of the best

1028
00:51:11,000 --> 00:51:13,559
ones that I've seen. They don't work for me for hiking, unfortunately,

1029
00:51:13,960 --> 00:51:18,159
but for walking around everywhere. I absolutely love them so far.

1030
00:51:18,639 --> 00:51:19,119
Speaker 2: They're great.

1031
00:51:19,760 --> 00:51:22,639
Speaker 4: That's awesome. What was the model on those?

1032
00:51:23,000 --> 00:51:25,880
Speaker 1: I think they're the Planet Mohido Suede.

1033
00:51:26,599 --> 00:51:29,119
Speaker 4: Okay, because they've got like a bunch of different because

1034
00:51:29,159 --> 00:51:30,639
I used to do rock climbing and stuff, and they've

1035
00:51:30,679 --> 00:51:33,039
got like their whole climbing thing. They've got trailing, They've

1036
00:51:33,039 --> 00:51:36,119
got like a bunch of different styles. So I'll have

1037
00:51:36,119 --> 00:51:36,920
to go check those out.

1038
00:51:37,079 --> 00:51:38,599
Speaker 1: Yeah, I mean these these actually don't even have the

1039
00:51:38,679 --> 00:51:39,559
virum soul, but these are.

1040
00:51:39,599 --> 00:51:40,159
Speaker 2: They're they're pretty.

1041
00:51:40,159 --> 00:51:43,119
Speaker 1: They're pretty nice, thick thick soles that don't get worn out.

1042
00:51:43,480 --> 00:51:44,679
Speaker 2: I have a lot of traction.

1043
00:51:45,719 --> 00:51:47,400
Speaker 1: But yeah, I mean, if the scarp is fit, I

1044
00:51:47,599 --> 00:51:51,440
definitely recommend them to to anyone. Uh, it's actually really interesting.

1045
00:51:51,519 --> 00:51:54,119
Like I've been I've really gotten to shoes lately because

1046
00:51:54,119 --> 00:51:56,719
I've just realized I have no idea what.

1047
00:51:56,719 --> 00:51:57,840
Speaker 2: I've been buying my whole life.

1048
00:51:58,280 --> 00:52:01,719
Speaker 1: Binding Appropriately fitting shoes actually a real challenge. Don't just

1049
00:52:01,760 --> 00:52:03,400
put anything random on your feet. And so like I've

1050
00:52:03,440 --> 00:52:05,400
been watching like what do people wear out there in

1051
00:52:05,440 --> 00:52:08,639
the world, and a lot of people are just wearing crap, honestly,

1052
00:52:08,679 --> 00:52:11,199
Like you go to one of these regular shoe stores

1053
00:52:11,239 --> 00:52:13,920
and just buy stuff, and there's such a huge difference

1054
00:52:13,920 --> 00:52:16,760
from buying shoes like this versus just picking up the

1055
00:52:17,559 --> 00:52:19,760
one shoe that will you'll your foot will go through

1056
00:52:19,800 --> 00:52:22,719
the sole after a year or two years, and something

1057
00:52:22,760 --> 00:52:24,119
like this that just keeps on lasting.

1058
00:52:24,159 --> 00:52:27,880
Speaker 4: Honestly, Yeah, yeah, I totally agree. So I was like

1059
00:52:27,960 --> 00:52:29,840
at a conference and I just my shoes was shot.

1060
00:52:30,199 --> 00:52:32,480
So I jumped into like an H and M and

1061
00:52:32,480 --> 00:52:34,119
I'm like, I'll just grab anything that's in there. And

1062
00:52:34,119 --> 00:52:35,480
I grabbed them and put them on my feet, and

1063
00:52:35,519 --> 00:52:38,079
I walked like another mile that day, and I'm like,

1064
00:52:38,320 --> 00:52:40,039
oh my god, my feet hurt so bad, and like

1065
00:52:40,079 --> 00:52:42,159
by the end of the show, like the heel was

1066
00:52:42,239 --> 00:52:45,440
worn out, the bottom is falling apart. I'm like, oh, well,

1067
00:52:45,440 --> 00:52:47,639
that's why they when they cost like forty dollars, you know,

1068
00:52:48,320 --> 00:52:49,519
thirty five bucks or whatever.

1069
00:52:49,519 --> 00:52:50,320
Speaker 2: It was crazy.

1070
00:52:50,599 --> 00:52:53,159
Speaker 1: Yeah, I mean that's pretty cheap, even for a shoe. Okay, well,

1071
00:52:53,480 --> 00:52:56,480
I guess that's a good point, probably at the episode

1072
00:52:56,519 --> 00:52:59,039
before we get into into too much into into shoes

1073
00:52:59,039 --> 00:53:02,880
and hiking. So thanks Amy as our temporary guest expert

1074
00:53:02,920 --> 00:53:07,480
here and reliability, And thank you Brian so much for

1075
00:53:07,599 --> 00:53:08,280
coming on the show.

1076
00:53:08,480 --> 00:53:09,679
Speaker 2: I hope we see you again.

1077
00:53:10,280 --> 00:53:12,679
Speaker 4: Yeah, this is awesome. Happy to come back anytime.

1078
00:53:13,199 --> 00:53:15,639
Speaker 1: Thanks for everyone listening, and we'll see you all next time.

