WEBVTT

1
00:00:07.759 --> 00:00:10.800
<v Speaker 1>Hello everyone, and welcome back to another episode of Adventures

2
00:00:10.800 --> 00:00:13.839
<v Speaker 1>in DevOps. Today, I have a slight bit of news though.

3
00:00:14.160 --> 00:00:16.679
<v Speaker 1>We have an upgrade to our podcast, as will is

4
00:00:16.719 --> 00:00:18.039
<v Speaker 1>a way for a few episodes.

5
00:00:18.039 --> 00:00:19.440
<v Speaker 2>So I've asked Amy.

6
00:00:19.199 --> 00:00:23.600
<v Speaker 1>Knight, are expert on reliability architecture, to step in and Amy,

7
00:00:23.640 --> 00:00:25.000
<v Speaker 1>are you ready for today's episode?

8
00:00:25.519 --> 00:00:26.920
<v Speaker 3>I am excited to be here.

9
00:00:27.559 --> 00:00:28.000
<v Speaker 2>That's good.

10
00:00:28.239 --> 00:00:30.199
<v Speaker 1>I think I put her on the spot with calling

11
00:00:30.199 --> 00:00:33.439
<v Speaker 1>her the expert. I don't think she was prepared for that.

12
00:00:34.719 --> 00:00:38.000
<v Speaker 4>No, not ever expert she is.

13
00:00:38.159 --> 00:00:42.759
<v Speaker 1>She's very modest, I will say that. So today's guest

14
00:00:42.840 --> 00:00:46.280
<v Speaker 1>is Brian POTRELLI welcome and thank you for coming. He's

15
00:00:46.280 --> 00:00:49.200
<v Speaker 1>a founder of Fusion auth and some other products as well.

16
00:00:49.359 --> 00:00:51.600
<v Speaker 1>It's nice to have a fellow of expert on the show.

17
00:00:51.600 --> 00:00:53.479
<v Speaker 4>I have to say, yeah, thanks for having me us.

18
00:00:54.520 --> 00:00:56.640
<v Speaker 3>I was interested in how this was going to go

19
00:00:56.880 --> 00:01:00.359
<v Speaker 3>with two experts.

20
00:01:02.079 --> 00:01:03.679
<v Speaker 1>You know, I get this question like how did you

21
00:01:03.719 --> 00:01:06.599
<v Speaker 1>become an expert? And usually I say something like well,

22
00:01:06.760 --> 00:01:10.359
<v Speaker 1>I started investing in learning about security a lot of

23
00:01:10.400 --> 00:01:12.480
<v Speaker 1>years ago, and after a lot of years, then I

24
00:01:12.480 --> 00:01:14.079
<v Speaker 1>get up on stage and someone asked me how did

25
00:01:14.079 --> 00:01:17.400
<v Speaker 1>you become an off expert? I don't think there's like

26
00:01:17.799 --> 00:01:19.840
<v Speaker 1>a dedicated path, Brian, how did you end up in

27
00:01:19.879 --> 00:01:20.359
<v Speaker 1>this area?

28
00:01:20.640 --> 00:01:21.319
<v Speaker 4>Kind of dumb?

29
00:01:21.400 --> 00:01:21.640
<v Speaker 2>Luck.

30
00:01:23.000 --> 00:01:27.040
<v Speaker 4>So, we we are working on a sort of a

31
00:01:27.159 --> 00:01:30.480
<v Speaker 4>niche product, and after we realized that it wouldn't scale,

32
00:01:31.439 --> 00:01:34.640
<v Speaker 4>we actually wanted to start building a couple of other products.

33
00:01:34.719 --> 00:01:37.079
<v Speaker 4>And so one of the products ideas that we came

34
00:01:37.159 --> 00:01:39.719
<v Speaker 4>up with was a forum, and so we actually built

35
00:01:39.760 --> 00:01:43.519
<v Speaker 4>that out completely. And when we built it, we decided

36
00:01:43.560 --> 00:01:45.680
<v Speaker 4>we weren't going to add a log in and registration

37
00:01:45.760 --> 00:01:49.640
<v Speaker 4>component to the forum itself. Instead, we were always going

38
00:01:49.680 --> 00:01:53.319
<v Speaker 4>to delegate that to whatever the company already had, and

39
00:01:53.400 --> 00:01:58.120
<v Speaker 4>so that required some type of authentication system, right, And

40
00:01:58.159 --> 00:02:00.319
<v Speaker 4>in order for us to test this, we had build

41
00:02:00.319 --> 00:02:03.519
<v Speaker 4>our own authentication system, and so we did, right. So

42
00:02:03.560 --> 00:02:06.799
<v Speaker 4>we built it, we integrated with our forum. Everything worked,

43
00:02:06.799 --> 00:02:09.719
<v Speaker 4>it was magical, and then we were like, hey, this

44
00:02:09.800 --> 00:02:11.680
<v Speaker 4>afe thing's pretty cool. Maybe we'll just use it for

45
00:02:12.080 --> 00:02:13.800
<v Speaker 4>like some of our other apps, and so we started

46
00:02:13.800 --> 00:02:16.599
<v Speaker 4>integrating it with everything. Well, the forum didn't work out,

47
00:02:17.319 --> 00:02:19.199
<v Speaker 4>and we're all kind of sitting in a room and

48
00:02:19.240 --> 00:02:22.479
<v Speaker 4>I'm like, guys, this off things really neat, Like let's

49
00:02:22.479 --> 00:02:26.319
<v Speaker 4>do that instead. So we like basically said a one

50
00:02:26.360 --> 00:02:30.039
<v Speaker 4>to eighty dropped the forum started focusing on off and

51
00:02:30.080 --> 00:02:32.960
<v Speaker 4>then had to go learn a bunch of standards and

52
00:02:33.000 --> 00:02:36.520
<v Speaker 4>read a bunch of specifications and you know learn, you know,

53
00:02:36.879 --> 00:02:39.199
<v Speaker 4>learn a lot about security in a very short period

54
00:02:39.240 --> 00:02:43.439
<v Speaker 4>of time. So but totally luck, No.

55
00:02:43.479 --> 00:02:44.120
<v Speaker 2>I totally got it.

56
00:02:44.120 --> 00:02:46.080
<v Speaker 1>Actually, we ended up in a similar spot with a

57
00:02:46.199 --> 00:02:49.560
<v Speaker 1>previous product that, uh, there was a lot of complexity

58
00:02:49.599 --> 00:02:51.680
<v Speaker 1>and what we were doing, and we found that our

59
00:02:51.719 --> 00:02:54.639
<v Speaker 1>customers were actually more interested in how we solve our

60
00:02:54.680 --> 00:02:58.199
<v Speaker 1>technical problems than the product that we were offering. At

61
00:02:58.199 --> 00:03:01.639
<v Speaker 1>that time, this was like a for COVID, and we

62
00:03:01.639 --> 00:03:04.240
<v Speaker 1>were trying to sell like leaders of Leadership SaaS and

63
00:03:04.319 --> 00:03:06.719
<v Speaker 1>it turns out a lot of companies wanted to say

64
00:03:06.840 --> 00:03:09.719
<v Speaker 1>that they cared about leaders and building their leaders up,

65
00:03:09.719 --> 00:03:11.919
<v Speaker 1>but they didn't actually want to pay for it. Maybe

66
00:03:11.919 --> 00:03:13.000
<v Speaker 1>that's a little bit of a shocker.

67
00:03:13.199 --> 00:03:15.960
<v Speaker 4>Yeah, not shocking, shocking, shocking, right.

68
00:03:16.680 --> 00:03:19.039
<v Speaker 1>The main topic of today is I think it's going

69
00:03:19.080 --> 00:03:20.879
<v Speaker 1>to be a little bit of a controversial episode. This

70
00:03:20.919 --> 00:03:23.840
<v Speaker 1>may be our most controversial episode yet multi tenant versus

71
00:03:23.879 --> 00:03:28.879
<v Speaker 1>single tenant architecture. Yeah, I guess that probably a lot

72
00:03:28.879 --> 00:03:31.159
<v Speaker 1>of our audience already has a strong opinion one way

73
00:03:31.240 --> 00:03:31.599
<v Speaker 1>or the other.

74
00:03:32.039 --> 00:03:32.840
<v Speaker 2>Amy any thoughts.

75
00:03:33.080 --> 00:03:35.319
<v Speaker 3>I guess my thought is just like alarm bells start

76
00:03:35.360 --> 00:03:36.960
<v Speaker 3>to go off in my head. But there we go

77
00:03:37.039 --> 00:03:38.719
<v Speaker 3>back with like the reliability stuck.

78
00:03:38.919 --> 00:03:40.520
<v Speaker 1>Like you're like, if someone says we're going to go

79
00:03:40.599 --> 00:03:43.120
<v Speaker 1>for multi tenant architecture.

80
00:03:42.599 --> 00:03:47.400
<v Speaker 3>Like that, hold up, yeah, exactly exactly, Like I want

81
00:03:47.439 --> 00:03:48.680
<v Speaker 3>to note the details.

82
00:03:48.240 --> 00:03:50.879
<v Speaker 1>At this point, yees, so you think it's like inherently

83
00:03:50.960 --> 00:03:53.400
<v Speaker 1>dangerous to have multi tenant architecture.

84
00:03:53.520 --> 00:03:56.639
<v Speaker 3>I was just at the point where like the I

85
00:03:56.639 --> 00:03:59.479
<v Speaker 3>don't know if the more separation the better with that

86
00:03:59.759 --> 00:04:02.479
<v Speaker 3>sort of thing, But prove me wrong.

87
00:04:03.479 --> 00:04:05.560
<v Speaker 1>Well, Brian's built a company on top of it.

88
00:04:06.039 --> 00:04:10.639
<v Speaker 4>Yes, we're building this this forum, and then we built

89
00:04:10.639 --> 00:04:14.520
<v Speaker 4>this sort of standalone, you know, off thing. And our

90
00:04:14.560 --> 00:04:18.720
<v Speaker 4>other product was also you know, downloadable and single tenant

91
00:04:18.759 --> 00:04:23.040
<v Speaker 4>and standalone, and we did we built the original product,

92
00:04:23.040 --> 00:04:26.040
<v Speaker 4>which is called clean Speak. We built that that way

93
00:04:26.079 --> 00:04:28.920
<v Speaker 4>because it was high performance, right, so like it filters

94
00:04:29.040 --> 00:04:32.160
<v Speaker 4>profanity and chat so wow, a couple way of saying it.

95
00:04:32.600 --> 00:04:37.439
<v Speaker 4>And so we're talking billions, tens of billions, hundreds of

96
00:04:37.439 --> 00:04:40.240
<v Speaker 4>billions of chat messages a month, and so in order

97
00:04:40.279 --> 00:04:44.879
<v Speaker 4>to do that in a multi tenant way is pretty challenging,

98
00:04:45.120 --> 00:04:48.199
<v Speaker 4>especially when you're talking about super low latency with something

99
00:04:48.240 --> 00:04:51.360
<v Speaker 4>like chat and so what happens is like you're in

100
00:04:51.399 --> 00:04:53.639
<v Speaker 4>a game, you send a chat message, it goes across

101
00:04:53.639 --> 00:04:56.800
<v Speaker 4>the wire into this, you know, the chat server. Okay,

102
00:04:56.800 --> 00:04:58.399
<v Speaker 4>so that's in a bank of servers that's sitting in

103
00:04:58.439 --> 00:05:01.279
<v Speaker 4>AWS or you know, somewhere like that. There's no reason

104
00:05:01.279 --> 00:05:03.319
<v Speaker 4>you should have to jump out across the open Internet

105
00:05:03.360 --> 00:05:06.000
<v Speaker 4>again to go filter that and see if there's any

106
00:05:06.040 --> 00:05:07.800
<v Speaker 4>issues with it and then come all the way back.

107
00:05:07.839 --> 00:05:11.040
<v Speaker 4>You know, that could introduce one hundred milliseconds of latency.

108
00:05:11.240 --> 00:05:13.639
<v Speaker 4>It'd be way better if it just jumps across the

109
00:05:13.720 --> 00:05:18.120
<v Speaker 4>backplane and essentially goes right to you know, the filtering service.

110
00:05:18.439 --> 00:05:20.959
<v Speaker 4>And we could do that in like under a millisecond.

111
00:05:21.199 --> 00:05:23.639
<v Speaker 4>And even with you know, in internetwork latency, it's like

112
00:05:23.639 --> 00:05:25.959
<v Speaker 4>one or two milliseconds, so we can really shave down

113
00:05:26.079 --> 00:05:29.319
<v Speaker 4>milliseconds here. And then we took all of this sort

114
00:05:29.360 --> 00:05:32.240
<v Speaker 4>of like common code and deployment models and bundling and

115
00:05:32.279 --> 00:05:34.319
<v Speaker 4>all this stuff we had and we just like copy

116
00:05:34.360 --> 00:05:35.040
<v Speaker 4>and pasted it.

117
00:05:35.480 --> 00:05:38.160
<v Speaker 1>So the history sort of put you in this direction.

118
00:05:38.319 --> 00:05:41.040
<v Speaker 1>It was sort of like a sign from the universe

119
00:05:41.079 --> 00:05:43.120
<v Speaker 1>that maybe this was the path for you to take.

120
00:05:43.399 --> 00:05:45.319
<v Speaker 4>We kind of made a bold assumption that that was

121
00:05:45.319 --> 00:05:47.920
<v Speaker 4>a good idea. It's like, hey, let's make this downloadable,

122
00:05:48.720 --> 00:05:51.279
<v Speaker 4>let's make it single tenant, let's make it run anywhere

123
00:05:51.279 --> 00:05:54.680
<v Speaker 4>in the world. And then we actually started having all

124
00:05:54.720 --> 00:05:57.759
<v Speaker 4>these companies come to us, some of them quite large,

125
00:05:58.160 --> 00:06:01.240
<v Speaker 4>and they're like, hey, we can't use your competitors. We

126
00:06:01.279 --> 00:06:03.519
<v Speaker 4>can't use like A zero because it's in the cloud

127
00:06:03.560 --> 00:06:05.240
<v Speaker 4>on it, we can't use you know, like pain because

128
00:06:05.240 --> 00:06:07.480
<v Speaker 4>they're just pushing everybody to cloud, and we can't use

129
00:06:07.519 --> 00:06:10.319
<v Speaker 4>all these tools, and we really want something that we

130
00:06:10.319 --> 00:06:12.519
<v Speaker 4>can run in our own data center. And I was like, well,

131
00:06:12.560 --> 00:06:17.199
<v Speaker 4>we got that, so yeah, let's totally do this right.

132
00:06:17.319 --> 00:06:19.360
<v Speaker 2>So that's really interesting.

133
00:06:19.399 --> 00:06:23.800
<v Speaker 1>So taking the architecture as the value being provided by

134
00:06:23.839 --> 00:06:26.800
<v Speaker 1>the product as sort of the competitive advantage, yep.

135
00:06:27.000 --> 00:06:29.040
<v Speaker 4>Yeah, we continue to do that. So, like I think

136
00:06:29.079 --> 00:06:31.800
<v Speaker 4>our one of our taglines we've been messing around with

137
00:06:31.959 --> 00:06:35.040
<v Speaker 4>is like aughts so modern you can download it right,

138
00:06:35.680 --> 00:06:38.839
<v Speaker 4>and it's it's really flipping everything on its head because

139
00:06:39.600 --> 00:06:43.480
<v Speaker 4>for the last gosh fifteen years, people have been like, yep,

140
00:06:43.680 --> 00:06:45.519
<v Speaker 4>it's got to be multi tenant, it's got to be

141
00:06:45.759 --> 00:06:49.000
<v Speaker 4>you know, SaaS, it's got to be cloud, and that's

142
00:06:49.000 --> 00:06:52.240
<v Speaker 4>the only way to build an effective company, profitable company,

143
00:06:52.319 --> 00:06:55.399
<v Speaker 4>scalable company. And I'm like, no.

144
00:06:58.160 --> 00:07:02.360
<v Speaker 3>I'll be honest too, what you're saying. It kind of

145
00:07:02.399 --> 00:07:05.720
<v Speaker 3>shocked me. Conversations that I've been having more and more

146
00:07:05.759 --> 00:07:09.000
<v Speaker 3>people are actually people are considering moving off cloud to

147
00:07:09.079 --> 00:07:12.160
<v Speaker 3>save costs, which is nothing I would have ever thought

148
00:07:12.160 --> 00:07:15.040
<v Speaker 3>of before I had this initial conversation like two years

149
00:07:15.079 --> 00:07:16.240
<v Speaker 3>ago with someone.

150
00:07:16.600 --> 00:07:20.279
<v Speaker 4>Yeah, if if you have let's say, like a cloud

151
00:07:20.360 --> 00:07:25.480
<v Speaker 4>native Lamba driven, you know, lots of like io into

152
00:07:25.560 --> 00:07:28.639
<v Speaker 4>like something like Dynamo or something like that, Like sure,

153
00:07:28.680 --> 00:07:31.800
<v Speaker 4>when you start and you're small, can be very cost effective.

154
00:07:32.160 --> 00:07:36.399
<v Speaker 4>When you scale, it can get so expensive these services

155
00:07:36.439 --> 00:07:38.079
<v Speaker 4>are like outrageous.

156
00:07:38.560 --> 00:07:42.240
<v Speaker 3>The other thing I would say too, is depending on

157
00:07:42.600 --> 00:07:46.000
<v Speaker 3>your architecture and how long it's been around. I feel

158
00:07:46.000 --> 00:07:48.399
<v Speaker 3>like moving to the cloud, you're sort of forced into

159
00:07:48.480 --> 00:07:53.079
<v Speaker 3>certain boxes of what they can scale most efficiently. So

160
00:07:53.360 --> 00:07:55.720
<v Speaker 3>if you have something that was not built to run

161
00:07:55.759 --> 00:07:58.000
<v Speaker 3>on a certain machine type, you're going to run into

162
00:07:58.079 --> 00:08:01.000
<v Speaker 3>issue that scale. Would that be something that you've kind

163
00:08:01.040 --> 00:08:02.279
<v Speaker 3>of experienced.

164
00:08:01.759 --> 00:08:07.240
<v Speaker 4>Too, Absolutely, Yeah, The the cloud providers really love to

165
00:08:07.319 --> 00:08:10.399
<v Speaker 4>push you in the directions that they feel the most

166
00:08:10.439 --> 00:08:13.600
<v Speaker 4>confident and comfortable, and they where they have the biggest profit.

167
00:08:13.759 --> 00:08:16.959
<v Speaker 4>Right if you look at just you know, like Cognito

168
00:08:17.000 --> 00:08:19.920
<v Speaker 4>as an example in our space, like that's not a

169
00:08:19.920 --> 00:08:25.920
<v Speaker 4>cost effective solution, like by anyone's anyone's you know view. Now,

170
00:08:25.959 --> 00:08:29.040
<v Speaker 4>when you first start, it's very cost effective because it's free,

171
00:08:29.120 --> 00:08:31.920
<v Speaker 4>and you know, it's pretty easy to integrate. But the

172
00:08:31.959 --> 00:08:34.600
<v Speaker 4>second that you like start scaling and start enabling any

173
00:08:34.639 --> 00:08:39.159
<v Speaker 4>of the features, it's cost prohibitive. And so they know

174
00:08:39.240 --> 00:08:41.080
<v Speaker 4>how to scale that and run that really well, and

175
00:08:41.120 --> 00:08:43.360
<v Speaker 4>then they know how to monetize the crap out of it.

176
00:08:43.480 --> 00:08:46.200
<v Speaker 1>So I love that you, you know, you tried to

177
00:08:46.200 --> 00:08:48.159
<v Speaker 1>pull back on like, well, you know, maybe it's really

178
00:08:48.159 --> 00:08:51.320
<v Speaker 1>easy to integrate with Cognito, although I feel like, I see,

179
00:08:51.320 --> 00:08:53.279
<v Speaker 1>I'm in a bunch of tech communities and I just

180
00:08:53.279 --> 00:08:56.840
<v Speaker 1>see complaints every all day long about oh I tried

181
00:08:56.879 --> 00:08:59.600
<v Speaker 1>to make this work and it didn't happen, or you know,

182
00:08:59.639 --> 00:09:02.679
<v Speaker 1>I looked at the documentation and start saying like amplify everywhere,

183
00:09:02.759 --> 00:09:04.600
<v Speaker 1>like I don't want to use amplify. I'm like, well,

184
00:09:04.639 --> 00:09:07.200
<v Speaker 1>you know, welcome to Welcome to the mess that that

185
00:09:07.320 --> 00:09:11.320
<v Speaker 1>is Cognito in AWS. So I started I stopped saying that, Yeah,

186
00:09:11.320 --> 00:09:14.360
<v Speaker 1>it may be cost effective, you know, a small scale,

187
00:09:14.360 --> 00:09:17.399
<v Speaker 1>but the overhead, the total cost of ownership, yeah, definitely

188
00:09:17.480 --> 00:09:19.480
<v Speaker 1>high with with Cognito, for sure.

189
00:09:19.600 --> 00:09:22.559
<v Speaker 4>It was super painful. And Amazon also does this really

190
00:09:22.559 --> 00:09:25.559
<v Speaker 4>funny thing where they force you to use like you

191
00:09:25.600 --> 00:09:28.039
<v Speaker 4>can't just use Cognito, like you said, you have to

192
00:09:28.200 --> 00:09:30.679
<v Speaker 4>pull in fifteen other services and you got to use

193
00:09:30.679 --> 00:09:33.639
<v Speaker 4>platformation and you got to do this, and it's just like, guys,

194
00:09:33.679 --> 00:09:36.919
<v Speaker 4>this is getting insane, right, Like I don't want to

195
00:09:36.919 --> 00:09:38.720
<v Speaker 4>do this. I just I just want to lock my users.

196
00:09:39.159 --> 00:09:42.039
<v Speaker 3>I may have cheated and listened to some of your

197
00:09:42.039 --> 00:09:45.679
<v Speaker 3>episodes on competitor podcasts to kind of get a better

198
00:09:45.720 --> 00:09:49.320
<v Speaker 3>understanding before this one. Is it still true also that

199
00:09:49.360 --> 00:09:51.480
<v Speaker 3>the customization is just not there.

200
00:09:52.159 --> 00:09:55.120
<v Speaker 4>Cognito actually made a really big update, so I have

201
00:09:55.200 --> 00:09:59.240
<v Speaker 4>to credit they. I think they restructured their product team

202
00:09:59.440 --> 00:10:03.000
<v Speaker 4>and then they put some dedicated engineers on Cognito. For

203
00:10:03.039 --> 00:10:05.840
<v Speaker 4>the last like eighteen months, they kind of up their game,

204
00:10:06.039 --> 00:10:10.159
<v Speaker 4>Like you can quasi customize their log in. You can

205
00:10:10.200 --> 00:10:13.600
<v Speaker 4>customize like the email templates and some of the messaging templates,

206
00:10:13.600 --> 00:10:17.519
<v Speaker 4>and I think they even like support localization stuff. So

207
00:10:17.639 --> 00:10:20.879
<v Speaker 4>they did a pretty decent job of like leveling themselves

208
00:10:21.000 --> 00:10:23.639
<v Speaker 4>up to your point, it's like it's still a pain

209
00:10:23.679 --> 00:10:26.639
<v Speaker 4>in about to integrate with and it's just feature crippled.

210
00:10:26.679 --> 00:10:29.879
<v Speaker 4>I mean, they just like have it's a very limited platform.

211
00:10:30.120 --> 00:10:32.759
<v Speaker 1>I think the biggest challenge here is something that a

212
00:10:32.799 --> 00:10:35.039
<v Speaker 1>lot of people dismiss when they're selecting a product out

213
00:10:35.039 --> 00:10:37.639
<v Speaker 1>there in the world, is a the alignment with the

214
00:10:37.679 --> 00:10:39.519
<v Speaker 1>company that you're going with, Like what is the core

215
00:10:39.639 --> 00:10:42.159
<v Speaker 1>value that the company really focus on and cares about? Right,

216
00:10:42.320 --> 00:10:46.080
<v Speaker 1>you were saying that the single tendency is the core

217
00:10:46.240 --> 00:10:47.840
<v Speaker 1>value that we're you know, one of the core values

218
00:10:47.840 --> 00:10:50.039
<v Speaker 1>that we're offering here, you know, is that aligned, Like

219
00:10:50.039 --> 00:10:51.799
<v Speaker 1>don't just use the product based off of the features,

220
00:10:51.840 --> 00:10:53.799
<v Speaker 1>but you know, look to see about the team that's

221
00:10:53.799 --> 00:10:56.000
<v Speaker 1>building in and what their you know, long term direction is.

222
00:10:56.480 --> 00:10:59.039
<v Speaker 1>And you know, I think it's really important because when

223
00:10:59.039 --> 00:11:01.159
<v Speaker 1>we look at things like cogn it's not really clear

224
00:11:01.320 --> 00:11:02.919
<v Speaker 1>you know, what they're really going after. And if you

225
00:11:02.919 --> 00:11:05.120
<v Speaker 1>start comparing the products and get really deep, you can

226
00:11:05.159 --> 00:11:08.639
<v Speaker 1>see things like they're like tendency in Cognito itself is

227
00:11:08.679 --> 00:11:11.399
<v Speaker 1>not really there as a solution. If you have customers

228
00:11:11.399 --> 00:11:14.279
<v Speaker 1>that are in the business space, it doesn't really fit

229
00:11:14.320 --> 00:11:16.960
<v Speaker 1>well with that, and it's detaining your point, you know,

230
00:11:17.200 --> 00:11:20.200
<v Speaker 1>on the refresh with Cognito. Yeah, I mean it's configurable

231
00:11:20.200 --> 00:11:22.399
<v Speaker 1>now for sure, But there are nine different kinds of

232
00:11:22.480 --> 00:11:25.720
<v Speaker 1>Lambda functions that you can integrate with Cognito. Like it's

233
00:11:25.759 --> 00:11:28.480
<v Speaker 1>not a simple strategy, Like it's not just like configuration

234
00:11:28.600 --> 00:11:30.240
<v Speaker 1>driven a lot of times, and this is one of

235
00:11:30.320 --> 00:11:33.279
<v Speaker 1>the huge types with AWO services in general. It's that

236
00:11:33.320 --> 00:11:35.240
<v Speaker 1>if you want to configure it, you write your own

237
00:11:35.320 --> 00:11:38.399
<v Speaker 1>LAMB to function with your own configuration with whatever, non

238
00:11:38.440 --> 00:11:42.360
<v Speaker 1>documented payloads and responses, and then figure out how to

239
00:11:42.360 --> 00:11:44.600
<v Speaker 1>integrate that into your solution and deployed and whatever to

240
00:11:45.039 --> 00:11:46.360
<v Speaker 1>the cloud to get it to work right, and if

241
00:11:46.399 --> 00:11:48.840
<v Speaker 1>there's a problem then you know, good luck. So some

242
00:11:48.840 --> 00:11:51.399
<v Speaker 1>people love this, Oh yeah, all of my infrastructure everything

243
00:11:51.440 --> 00:11:55.320
<v Speaker 1>is in AWS and you know, good on you, for sure.

244
00:11:55.360 --> 00:11:57.440
<v Speaker 2>But I don't wish Cognito on anyone.

245
00:11:57.759 --> 00:12:00.399
<v Speaker 4>Yeah, I mean that's a good point, right, because they

246
00:12:01.240 --> 00:12:06.799
<v Speaker 4>AWS has this sort of disease I guess you could say,

247
00:12:06.799 --> 00:12:10.639
<v Speaker 4>where they constantly want you to use their services to

248
00:12:10.679 --> 00:12:12.919
<v Speaker 4>do things right. So like, you know, we use like

249
00:12:13.240 --> 00:12:16.879
<v Speaker 4>cloud front, and in order to do all the redirects

250
00:12:16.919 --> 00:12:18.600
<v Speaker 4>that we need to do, we have to use like

251
00:12:18.600 --> 00:12:21.639
<v Speaker 4>an edge function, and then that edge functions go loads

252
00:12:21.679 --> 00:12:23.559
<v Speaker 4>something out of like an S three bucket in order

253
00:12:23.600 --> 00:12:25.519
<v Speaker 4>to like download it, and then it caches it, and

254
00:12:25.799 --> 00:12:27.960
<v Speaker 4>you know, it's like it's ridiculous. It's like all I

255
00:12:28.000 --> 00:12:29.320
<v Speaker 4>want to do is set up redirects, and I have

256
00:12:29.360 --> 00:12:32.240
<v Speaker 4>to jump through like fifteen hoops just to get something

257
00:12:32.320 --> 00:12:35.759
<v Speaker 4>so simple done because of the way that Amazon has

258
00:12:35.799 --> 00:12:37.879
<v Speaker 4>designed everything, and they're like, well just stick a lamb

259
00:12:38.000 --> 00:12:40.840
<v Speaker 4>on it, you know that don't work, and don't document.

260
00:12:41.159 --> 00:12:42.320
<v Speaker 4>We'll document it later, you know.

261
00:12:43.600 --> 00:12:45.840
<v Speaker 1>I mean, I do appreciate as a company, like comparing

262
00:12:45.879 --> 00:12:47.960
<v Speaker 1>them to the other cloud providers, And I didn't know

263
00:12:47.960 --> 00:12:49.519
<v Speaker 1>this was the direction we were going to go with

264
00:12:49.320 --> 00:12:52.360
<v Speaker 1>this with this episode, but I do appreciate a WS

265
00:12:52.440 --> 00:12:55.600
<v Speaker 1>more than the other ones. I do think they suffer

266
00:12:55.679 --> 00:12:58.960
<v Speaker 1>from a very focused mindset as sort of the two

267
00:12:58.919 --> 00:13:01.559
<v Speaker 1>piece of teams that they have. They're really focused on delivering,

268
00:13:01.720 --> 00:13:04.080
<v Speaker 1>you know, exactly the thing that maybe that customer wants,

269
00:13:04.080 --> 00:13:06.480
<v Speaker 1>but that may mean over time, they're missing some other

270
00:13:06.519 --> 00:13:08.919
<v Speaker 1>critical features. I think what you're talking about here. A

271
00:13:08.960 --> 00:13:13.480
<v Speaker 1>good example is returning security headers on outfront responses. So

272
00:13:13.720 --> 00:13:15.559
<v Speaker 1>you've got some data stort inn s Rebucket, and you're

273
00:13:15.559 --> 00:13:17.919
<v Speaker 1>hosting a website or your API, and you're like, I

274
00:13:18.000 --> 00:13:21.159
<v Speaker 1>just want to add a header that removes the x

275
00:13:21.200 --> 00:13:23.360
<v Speaker 1>frame options, like you can embed this as a as

276
00:13:23.399 --> 00:13:25.759
<v Speaker 1>an iframe in a website, And you'd be like, I

277
00:13:25.799 --> 00:13:27.120
<v Speaker 1>just want to add a header, and I don't want

278
00:13:27.120 --> 00:13:28.960
<v Speaker 1>to muck with the underlying service, which I may not

279
00:13:29.039 --> 00:13:31.879
<v Speaker 1>even own. Right, Maybe I've deployed Fusion ofth or some

280
00:13:31.919 --> 00:13:34.440
<v Speaker 1>other service in a container in my infrastructure and I

281
00:13:34.480 --> 00:13:36.200
<v Speaker 1>don't even control that product, but I want to add

282
00:13:36.200 --> 00:13:38.799
<v Speaker 1>some headers to it. Well, good luck, honestly, because up

283
00:13:38.879 --> 00:13:41.240
<v Speaker 1>until about three years ago, you couldn't do this without

284
00:13:41.240 --> 00:13:43.559
<v Speaker 1>throwing a huge lamb to function at it. Now they

285
00:13:43.639 --> 00:13:46.600
<v Speaker 1>do have something called the response policy headers that you

286
00:13:46.600 --> 00:13:48.960
<v Speaker 1>can set in clautform, But it's taken probably like almost

287
00:13:48.960 --> 00:13:52.120
<v Speaker 1>ten years for this to roll around and even be

288
00:13:52.159 --> 00:13:55.279
<v Speaker 1>added in this feature, while other CDNs have been providing

289
00:13:55.480 --> 00:13:57.840
<v Speaker 1>this baseline thing for quite a long time.

290
00:13:58.080 --> 00:14:01.360
<v Speaker 4>Yeah, no, totally agree. They there. I think their product

291
00:14:01.360 --> 00:14:04.320
<v Speaker 4>teams are so isolated and they don't have a lot

292
00:14:04.360 --> 00:14:07.600
<v Speaker 4>of input from you know, just standard devs like us

293
00:14:07.679 --> 00:14:08.879
<v Speaker 4>right that are just like, hey, I just want to

294
00:14:08.879 --> 00:14:12.159
<v Speaker 4>get this thing done. And they're they're really listening, you know,

295
00:14:12.320 --> 00:14:14.519
<v Speaker 4>to their largest customers, which we all know. I mean,

296
00:14:14.559 --> 00:14:16.639
<v Speaker 4>you know, they make tens of millions of dollars off

297
00:14:16.639 --> 00:14:20.519
<v Speaker 4>some of these customers every so, so yeah, it's it's

298
00:14:20.519 --> 00:14:23.840
<v Speaker 4>pretty painful and they takes a long time for them

299
00:14:23.840 --> 00:14:26.919
<v Speaker 4>to get actual stuff done. But at least they have

300
00:14:27.200 --> 00:14:29.279
<v Speaker 4>the lambdas and the things and so like you have

301
00:14:29.279 --> 00:14:30.720
<v Speaker 4>to jump into some code and you got to do

302
00:14:30.759 --> 00:14:34.039
<v Speaker 4>these things. But at least there are workarounds where like

303
00:14:34.080 --> 00:14:36.440
<v Speaker 4>you said, you know, there have been times where you know,

304
00:14:36.480 --> 00:14:39.000
<v Speaker 4>in the past where we use services and you literally

305
00:14:39.039 --> 00:14:41.080
<v Speaker 4>just can't do it. So it's like, well, crap, Okay,

306
00:14:41.120 --> 00:14:43.960
<v Speaker 4>I'll stand up another service to proxy requests through and

307
00:14:43.960 --> 00:14:46.720
<v Speaker 4>then I'll manipulate the request in my proxy service and

308
00:14:46.759 --> 00:14:50.039
<v Speaker 4>then ask it to clout right, and it's like, oh

309
00:14:50.080 --> 00:14:52.600
<v Speaker 4>my gosh, why am I having to manage all this

310
00:14:52.720 --> 00:14:55.080
<v Speaker 4>junk just to add ahead or business? And I totally

311
00:14:55.159 --> 00:14:59.519
<v Speaker 4>agree with that assessment of AWS, But again, they're one

312
00:14:59.559 --> 00:15:02.840
<v Speaker 4>of the better out there, right. So here's the other

313
00:15:02.840 --> 00:15:06.799
<v Speaker 4>thing that's interesting AWS. I think some of their product

314
00:15:06.840 --> 00:15:11.840
<v Speaker 4>teams are actually starting to evaluate letting people download some

315
00:15:11.960 --> 00:15:13.960
<v Speaker 4>of their services and run them locally, right, Like we

316
00:15:14.039 --> 00:15:16.519
<v Speaker 4>see that a little bit with like Dynamo dB. You

317
00:15:16.519 --> 00:15:18.200
<v Speaker 4>can run a like kind of a scraped down version

318
00:15:18.200 --> 00:15:22.960
<v Speaker 4>of it. I think there's some local lambda execution things

319
00:15:23.000 --> 00:15:27.080
<v Speaker 4>that you can do, and they're looking at more and

320
00:15:27.120 --> 00:15:29.399
<v Speaker 4>so you know, maybe they'll do that with Cognito at

321
00:15:29.440 --> 00:15:31.440
<v Speaker 4>some point too. But like, one of the hiccups that

322
00:15:31.480 --> 00:15:34.840
<v Speaker 4>I see with all the cloud providers is the ability

323
00:15:34.919 --> 00:15:38.919
<v Speaker 4>for a developer to test these services without having to

324
00:15:39.120 --> 00:15:42.320
<v Speaker 4>like fire up an entire org, you know, run a

325
00:15:42.320 --> 00:15:44.840
<v Speaker 4>bunch of terraform or CloudFormation or whatever you need to

326
00:15:44.879 --> 00:15:46.919
<v Speaker 4>get everything set up, and then you can run your

327
00:15:46.919 --> 00:15:51.320
<v Speaker 4>tests against it and good luck having twenty developers try

328
00:15:51.360 --> 00:15:53.159
<v Speaker 4>to run tests at the same time where you're constantly

329
00:15:53.159 --> 00:15:56.279
<v Speaker 4>tearing things down and recreating them and so moving that

330
00:15:56.320 --> 00:15:59.320
<v Speaker 4>stuff back local I think is actually something that the

331
00:15:59.320 --> 00:16:02.720
<v Speaker 4>industry has been at, which means that every developer can

332
00:16:02.759 --> 00:16:05.960
<v Speaker 4>isolate themselves at dev time from every other one and

333
00:16:06.000 --> 00:16:07.080
<v Speaker 4>that's a huge benefit.

334
00:16:07.279 --> 00:16:10.559
<v Speaker 1>Yeah, I think the developer experience story with aws like

335
00:16:10.679 --> 00:16:13.519
<v Speaker 1>offline is not the best so much that there's an

336
00:16:13.639 --> 00:16:17.759
<v Speaker 1>entire company dedicated actually out of Switzerland called local Stack

337
00:16:18.080 --> 00:16:22.200
<v Speaker 1>to emulate the emulate it offline, and you know, it's great.

338
00:16:22.200 --> 00:16:23.960
<v Speaker 1>And the joke is like when is Agbo's going to

339
00:16:23.960 --> 00:16:27.840
<v Speaker 1>buy local Stack because there's local Stack in the documentation,

340
00:16:28.039 --> 00:16:31.639
<v Speaker 1>there's local Stack replacements for a DYNAMOITYB local which doesn't work.

341
00:16:31.679 --> 00:16:35.679
<v Speaker 1>There's great integrations for Lambda and for SAM, the servilist

342
00:16:35.679 --> 00:16:38.360
<v Speaker 1>application Transform for Information.

343
00:16:38.480 --> 00:16:39.360
<v Speaker 2>It's really surprising.

344
00:16:39.399 --> 00:16:40.919
<v Speaker 1>It's like one of the things like as you mentioned,

345
00:16:41.000 --> 00:16:44.039
<v Speaker 1>like even though our product is focused one hundred percent SaaS,

346
00:16:44.519 --> 00:16:48.679
<v Speaker 1>we offer a shim clone of our API for companies

347
00:16:48.679 --> 00:16:51.480
<v Speaker 1>around locally because of course, like you're a developer and

348
00:16:51.519 --> 00:16:54.360
<v Speaker 1>you're like, you don't care about maybe the off part,

349
00:16:54.440 --> 00:16:56.799
<v Speaker 1>but your services depend on it, and so you need

350
00:16:56.840 --> 00:16:59.600
<v Speaker 1>to have an answer here. And it's ridiculous how SaaS

351
00:16:59.600 --> 00:17:02.720
<v Speaker 1>providers everywhere. I figured this out, but the cloud providers

352
00:17:03.399 --> 00:17:05.000
<v Speaker 1>haven't done it yet.

353
00:17:05.200 --> 00:17:07.519
<v Speaker 4>Yeah, you know, it's wild. We sort of like to

354
00:17:07.720 --> 00:17:10.279
<v Speaker 4>take that to the nth degree, right, which is like

355
00:17:10.680 --> 00:17:13.200
<v Speaker 4>mocking is dangerous, and so we'll market and then we'll

356
00:17:13.240 --> 00:17:15.400
<v Speaker 4>just simulate the responses we know we get from production,

357
00:17:15.519 --> 00:17:18.039
<v Speaker 4>so like maybe they record it and then they grab

358
00:17:18.119 --> 00:17:19.880
<v Speaker 4>some you know, some stuff out of production, and then

359
00:17:19.920 --> 00:17:22.759
<v Speaker 4>they can start simulating, well, what happens if like a

360
00:17:22.839 --> 00:17:25.440
<v Speaker 4>lambda changes and then the responses start changing, or like

361
00:17:25.680 --> 00:17:29.480
<v Speaker 4>AWS modifies something and it's coming back slightly differently.

362
00:17:29.759 --> 00:17:34.960
<v Speaker 1>We definitely see that more sophisticated customers care about it,

363
00:17:35.359 --> 00:17:38.759
<v Speaker 1>and end testing or integration testing and having a story

364
00:17:38.799 --> 00:17:41.799
<v Speaker 1>dedicated to that is an important aspect, especially when you're

365
00:17:41.799 --> 00:17:46.039
<v Speaker 1>offering something that's essentially infrastructure for your your customers. I

366
00:17:46.039 --> 00:17:48.359
<v Speaker 1>mean different when it's just like some third party service

367
00:17:48.359 --> 00:17:51.400
<v Speaker 1>which is solving some edge case or some CRM, but

368
00:17:51.440 --> 00:17:54.000
<v Speaker 1>when it becomes a critical piece of infrastructure for your customers,

369
00:17:54.119 --> 00:17:56.160
<v Speaker 1>it's a question that's going to come up pretty frequently.

370
00:17:56.319 --> 00:17:58.640
<v Speaker 3>Absolutely, I kind of had a question I was going

371
00:17:58.680 --> 00:18:01.319
<v Speaker 3>to ask, kind of been like doing how to ask

372
00:18:01.359 --> 00:18:05.240
<v Speaker 3>this in the most intelligent way possible? How much of

373
00:18:05.319 --> 00:18:08.519
<v Speaker 3>your product would you say? In most customers use cases,

374
00:18:08.559 --> 00:18:12.440
<v Speaker 3>it probably simplifies things like performance and load testing. My

375
00:18:12.519 --> 00:18:15.160
<v Speaker 3>experience and the source of like massive bought attack and

376
00:18:15.240 --> 00:18:18.680
<v Speaker 3>at the same time my experience performance testing in a

377
00:18:18.759 --> 00:18:22.559
<v Speaker 3>multi tenant environment can be tricky because while you would

378
00:18:22.599 --> 00:18:25.359
<v Speaker 3>assume that you can just go off to the races,

379
00:18:25.440 --> 00:18:30.119
<v Speaker 3>that is a false assumption. And if you have to

380
00:18:30.319 --> 00:18:33.640
<v Speaker 3>performance test load test at a certain scale, it requires

381
00:18:33.680 --> 00:18:36.160
<v Speaker 3>coordinating with the company and making sure that other customers

382
00:18:36.200 --> 00:18:38.319
<v Speaker 3>aren't doing it at the exact same time. So I

383
00:18:38.319 --> 00:18:41.279
<v Speaker 3>guess long story short, I kind of maybe know the answer,

384
00:18:41.319 --> 00:18:42.359
<v Speaker 3>but maybe someone to speak to.

385
00:18:42.599 --> 00:18:46.119
<v Speaker 4>Yeah, it's a phenomenal question. So there's sort of two

386
00:18:46.240 --> 00:18:49.559
<v Speaker 4>aspects of this, and the first one is I'm a

387
00:18:49.599 --> 00:18:51.720
<v Speaker 4>developer and I just want to like sort of load

388
00:18:51.759 --> 00:18:53.759
<v Speaker 4>test locally, and I want to I just want to

389
00:18:53.759 --> 00:18:56.440
<v Speaker 4>see what sort of throughput looks like with different configuration

390
00:18:56.519 --> 00:18:58.720
<v Speaker 4>options on my laptop. And you download, you get it

391
00:18:58.759 --> 00:19:01.400
<v Speaker 4>set up, you integrate, and then you just literally use

392
00:19:01.400 --> 00:19:03.519
<v Speaker 4>a hammer, hammer the crap out of it and see

393
00:19:03.880 --> 00:19:06.920
<v Speaker 4>see what happens, and then you can reset everything and

394
00:19:06.960 --> 00:19:08.640
<v Speaker 4>then you can try it in the cloud. When you

395
00:19:08.640 --> 00:19:11.319
<v Speaker 4>have a multi tenant provider, they even like a lot

396
00:19:11.319 --> 00:19:13.759
<v Speaker 4>of times say you load tests are just not allowed,

397
00:19:14.440 --> 00:19:18.599
<v Speaker 4>right and like period hard stop. You pay them enough money,

398
00:19:18.599 --> 00:19:20.240
<v Speaker 4>they'll probably let you load test, but they're going to

399
00:19:20.279 --> 00:19:22.319
<v Speaker 4>have to figure out how to get that traffic off

400
00:19:22.359 --> 00:19:25.160
<v Speaker 4>of the main servers because they don't want to impact

401
00:19:25.359 --> 00:19:27.519
<v Speaker 4>the you know, ten thousand other customers that are on

402
00:19:27.559 --> 00:19:31.920
<v Speaker 4>the same servers when we deploy fusion to the cloud,

403
00:19:32.519 --> 00:19:36.839
<v Speaker 4>especially single tenant cloud, right, so like every customer gets

404
00:19:36.960 --> 00:19:43.240
<v Speaker 4>dedicated compute, dedicated database, dedicated iout and you can load

405
00:19:43.279 --> 00:19:46.799
<v Speaker 4>test your cloud and not affect a single other customer

406
00:19:47.200 --> 00:19:51.880
<v Speaker 4>because your compute is again completely isolated from everyone else's

407
00:19:51.920 --> 00:19:54.799
<v Speaker 4>and your database is also, you know, because we use rds,

408
00:19:54.799 --> 00:19:57.799
<v Speaker 4>and so your database has a specific number of eyeops

409
00:19:58.279 --> 00:20:02.720
<v Speaker 4>and it's you know, we're we're using Amazon, trusting Amazon

410
00:20:02.799 --> 00:20:06.160
<v Speaker 4>to basically do that. That isolation of all those things

411
00:20:06.720 --> 00:20:10.279
<v Speaker 4>because everything's true, you know, shared underneath the hoods. But

412
00:20:10.279 --> 00:20:13.359
<v Speaker 4>but AWS is even really good at time boxing things

413
00:20:13.400 --> 00:20:17.920
<v Speaker 4>and like limiting io and so that's another benefit to

414
00:20:18.000 --> 00:20:20.599
<v Speaker 4>our customers where they don't have to call us up

415
00:20:20.599 --> 00:20:22.039
<v Speaker 4>and say, hey, we're going to go test. We're like,

416
00:20:22.240 --> 00:20:24.440
<v Speaker 4>go ahead and mow test it. It's your box. You're

417
00:20:24.480 --> 00:20:26.440
<v Speaker 4>not going to affect the customers over here because they're

418
00:20:26.480 --> 00:20:28.880
<v Speaker 4>on their own hardware, but you're going to crash your

419
00:20:28.920 --> 00:20:31.119
<v Speaker 4>own stuff, but you know, go for it, you know,

420
00:20:31.279 --> 00:20:32.680
<v Speaker 4>So yeah.

421
00:20:33.319 --> 00:20:35.359
<v Speaker 3>I break it up too, because these are just things

422
00:20:35.400 --> 00:20:38.920
<v Speaker 3>I think that sometimes people don't necessarily realize could potentially

423
00:20:39.160 --> 00:20:41.319
<v Speaker 3>be issues that are larking.

424
00:20:42.160 --> 00:20:45.880
<v Speaker 1>I'll be I'll be the dissenting opinion. So I like,

425
00:20:45.920 --> 00:20:47.920
<v Speaker 1>I totally agree that you you sort of get some

426
00:20:47.960 --> 00:20:51.400
<v Speaker 1>of these aspects for free when you change your architecture

427
00:20:51.720 --> 00:20:55.119
<v Speaker 1>paradigm from from one to another. For instance, for us,

428
00:20:55.160 --> 00:20:57.440
<v Speaker 1>we've had to go in a different direction because we

429
00:20:57.519 --> 00:21:01.400
<v Speaker 1>want to be able to have a single point of

430
00:21:01.400 --> 00:21:03.200
<v Speaker 1>reference for a lot of our architecture.

431
00:21:03.559 --> 00:21:04.160
<v Speaker 2>And as we.

432
00:21:04.319 --> 00:21:06.880
<v Speaker 1>Focus primarily in the SaaS version, that simplifies a lot

433
00:21:06.920 --> 00:21:10.400
<v Speaker 1>of a support request or triaging or logging, et cetera,

434
00:21:10.480 --> 00:21:12.839
<v Speaker 1>because everything is just rolled out into the same stack.

435
00:21:12.920 --> 00:21:14.920
<v Speaker 1>But that means we've had to invest a lot in

436
00:21:15.400 --> 00:21:18.640
<v Speaker 1>how do we deal with increased scale. I will say

437
00:21:18.640 --> 00:21:21.759
<v Speaker 1>something like load test away against our service, Like we've

438
00:21:21.759 --> 00:21:24.039
<v Speaker 1>had to put so much effort into understanding how to

439
00:21:24.079 --> 00:21:29.680
<v Speaker 1>increase scale that no, like ten companies one hundred companies

440
00:21:29.720 --> 00:21:31.640
<v Speaker 1>coming at us at the same moment, it's just not

441
00:21:31.680 --> 00:21:34.240
<v Speaker 1>going to matter. I will say that that we'll hit

442
00:21:34.400 --> 00:21:36.680
<v Speaker 1>a bunch of rate limiting stuff that we have in place,

443
00:21:36.720 --> 00:21:39.279
<v Speaker 1>like you will start getting blocked, So make sure you

444
00:21:39.319 --> 00:21:41.359
<v Speaker 1>have a second account ready to go, because if you

445
00:21:41.400 --> 00:21:44.160
<v Speaker 1>start running this on your primary account, like you will

446
00:21:44.160 --> 00:21:46.640
<v Speaker 1>probably have a production downtime when you get rate limited

447
00:21:47.119 --> 00:21:49.440
<v Speaker 1>from doing something. But we've had to split rate limiting

448
00:21:49.480 --> 00:21:52.119
<v Speaker 1>in a lot of different ways, like per user, per application,

449
00:21:52.599 --> 00:21:56.920
<v Speaker 1>per individual tenant, per service client. So I mean you

450
00:21:56.960 --> 00:21:59.119
<v Speaker 1>are making a trade off from one to another. And

451
00:21:59.359 --> 00:22:01.480
<v Speaker 1>if you're going down one like a different path here

452
00:22:01.559 --> 00:22:03.920
<v Speaker 1>where you're going down multi tenancy, they have to be

453
00:22:03.960 --> 00:22:06.559
<v Speaker 1>problems that you want to solve. We were interested in

454
00:22:06.640 --> 00:22:09.279
<v Speaker 1>solving these problems, and we were cognizant of like our

455
00:22:09.279 --> 00:22:12.160
<v Speaker 1>team having worked in areas where there was a lot

456
00:22:12.200 --> 00:22:15.720
<v Speaker 1>of historical challenges that they've experienced and they know their

457
00:22:15.720 --> 00:22:18.440
<v Speaker 1>way around building large multi tenant systems. But I think

458
00:22:18.440 --> 00:22:20.400
<v Speaker 1>it's a really great point where if you don't have

459
00:22:20.440 --> 00:22:23.599
<v Speaker 1>that expertise, that you're going to get yourself in trouble,

460
00:22:23.680 --> 00:22:28.960
<v Speaker 1>especially when you're providing infrastructure level products for your customers.

461
00:22:29.079 --> 00:22:31.920
<v Speaker 4>But aren't they then just testing your rate limits? So

462
00:22:32.079 --> 00:22:35.759
<v Speaker 4>like the counterpoint of that is that, I mean we

463
00:22:35.799 --> 00:22:37.759
<v Speaker 4>all have rate limits right because especially at like the

464
00:22:37.799 --> 00:22:40.359
<v Speaker 4>WAFT level and the infrastructure level, because you have to

465
00:22:40.559 --> 00:22:46.039
<v Speaker 4>like not be flooded, but you can take those down

466
00:22:46.720 --> 00:22:49.119
<v Speaker 4>like we can. We can basically say like okay, we're

467
00:22:49.119 --> 00:22:50.559
<v Speaker 4>going to take we're going to isolate you and take

468
00:22:50.559 --> 00:22:52.880
<v Speaker 4>you out of rate limits, and it's like go for it.

469
00:22:54.160 --> 00:22:56.359
<v Speaker 4>Literally just bang on it until the servers fall over.

470
00:22:56.799 --> 00:22:59.039
<v Speaker 1>My response is always like what do you want it

471
00:22:59.079 --> 00:22:59.279
<v Speaker 1>to be?

472
00:22:59.480 --> 00:22:59.599
<v Speaker 4>Like?

473
00:22:59.640 --> 00:23:03.359
<v Speaker 1>You don't want this to be like actually no rate limits,

474
00:23:03.359 --> 00:23:05.880
<v Speaker 1>like you want there to be something here to happen,

475
00:23:05.960 --> 00:23:07.839
<v Speaker 1>and so yeah, for sure. I mean, if they're testing

476
00:23:07.839 --> 00:23:10.319
<v Speaker 1>their own software, I think this is where the mistake is.

477
00:23:10.640 --> 00:23:12.720
<v Speaker 1>They believe they have a need to sort of validate

478
00:23:12.839 --> 00:23:15.799
<v Speaker 1>how our software is going to respond to their needs.

479
00:23:16.240 --> 00:23:19.039
<v Speaker 1>And I think that's the fundamental flaw here is that

480
00:23:19.559 --> 00:23:22.599
<v Speaker 1>they like, either you're paying us, so you trust us

481
00:23:22.640 --> 00:23:25.960
<v Speaker 1>with this product and we give you assurances there and

482
00:23:26.000 --> 00:23:28.480
<v Speaker 1>if you're not willing to trust those, like you may

483
00:23:28.519 --> 00:23:31.000
<v Speaker 1>think about why that is, like why is it that

484
00:23:31.039 --> 00:23:34.400
<v Speaker 1>you actually want to take these extra steps. We do

485
00:23:34.440 --> 00:23:36.319
<v Speaker 1>get questions like oh yeah, how much can we have?

486
00:23:36.480 --> 00:23:38.279
<v Speaker 1>And I'm like how much do you how much do

487
00:23:38.319 --> 00:23:40.960
<v Speaker 1>you want? Because you can have that much, it's not

488
00:23:41.039 --> 00:23:43.680
<v Speaker 1>a problem. I assure you, you're not going to find

489
00:23:43.680 --> 00:23:45.359
<v Speaker 1>out where our service is going to fall over for

490
00:23:45.440 --> 00:23:48.400
<v Speaker 1>you because it's it's going to scale automatically to handle

491
00:23:48.440 --> 00:23:51.839
<v Speaker 1>whatever you throw at it, and you can for sure test.

492
00:23:51.599 --> 00:23:52.240
<v Speaker 2>That if you want.

493
00:23:52.279 --> 00:23:55.119
<v Speaker 1>But often I find the bigger problem is when rate

494
00:23:55.200 --> 00:23:58.039
<v Speaker 1>limits come into play, is that they're usually at a

495
00:23:58.079 --> 00:24:01.240
<v Speaker 1>moment where your customers are not necessarily compaired to handle

496
00:24:01.799 --> 00:24:04.359
<v Speaker 1>the rate limiting. So even in a single tenant architecture,

497
00:24:04.559 --> 00:24:06.039
<v Speaker 1>you know, what do you want to happen there? Do

498
00:24:06.039 --> 00:24:08.119
<v Speaker 1>you want just one user to get kicked out of

499
00:24:08.119 --> 00:24:10.000
<v Speaker 1>their flow? Do you want to use Like I think

500
00:24:10.000 --> 00:24:12.720
<v Speaker 1>this is like an unsolveable problem because our customers will

501
00:24:12.759 --> 00:24:14.920
<v Speaker 1>say we want the right thing to happen. I'm like,

502
00:24:15.319 --> 00:24:16.839
<v Speaker 1>I don't know what the right thing is here, Like

503
00:24:16.839 --> 00:24:18.400
<v Speaker 1>why don't you tell me what you think the right

504
00:24:18.400 --> 00:24:21.200
<v Speaker 1>thing is? And that's probably how the service works, and

505
00:24:21.240 --> 00:24:24.079
<v Speaker 1>then they usually get stuck because it's very difficult to

506
00:24:24.480 --> 00:24:27.720
<v Speaker 1>correctly answer, like what is actually the thing that's supposed

507
00:24:27.720 --> 00:24:28.079
<v Speaker 1>to happen?

508
00:24:28.319 --> 00:24:30.079
<v Speaker 4>Yeah, and it's going to vary for each customer, right,

509
00:24:30.079 --> 00:24:34.759
<v Speaker 4>Oh yeah, So it's semantics, So no, I totally agree.

510
00:24:34.880 --> 00:24:37.160
<v Speaker 4>So I guess there's you know, it's it's just more

511
00:24:37.200 --> 00:24:40.200
<v Speaker 4>of a statement. But there are benefits to both. One

512
00:24:40.240 --> 00:24:42.119
<v Speaker 4>of which is like, if you have that level of

513
00:24:42.119 --> 00:24:45.039
<v Speaker 4>scale and a multi tenant system, yeah, you're gonna have

514
00:24:45.119 --> 00:24:48.279
<v Speaker 4>to really think about a lot of these constraints and

515
00:24:48.279 --> 00:24:50.440
<v Speaker 4>how you change your rate limits and how you can

516
00:24:50.480 --> 00:24:53.759
<v Speaker 4>get all that that much data through AWS versus if

517
00:24:53.799 --> 00:24:55.440
<v Speaker 4>you have a single tenant system, then you're like, okay,

518
00:24:55.440 --> 00:24:57.759
<v Speaker 4>well I'm just going to focus on singularly getting that

519
00:24:57.799 --> 00:25:00.599
<v Speaker 4>through one little window just for that customer and not

520
00:25:00.640 --> 00:25:03.440
<v Speaker 4>worry about everybody else because they're on their own, right,

521
00:25:03.480 --> 00:25:06.079
<v Speaker 4>They're they're doing a different type of throughput.

522
00:25:06.240 --> 00:25:08.200
<v Speaker 1>So I got I got something that you know, I'm

523
00:25:08.200 --> 00:25:10.920
<v Speaker 1>sure is going to come across as part of the controversy.

524
00:25:11.279 --> 00:25:14.480
<v Speaker 1>It's so much easier to deploy upgrades to a multi

525
00:25:14.480 --> 00:25:19.960
<v Speaker 1>tenant system than it is to n repeated instances of

526
00:25:20.000 --> 00:25:21.640
<v Speaker 1>a of a single tenant system.

527
00:25:21.720 --> 00:25:24.839
<v Speaker 4>Right, That's that's just that sound dangerous. And they're like,

528
00:25:24.839 --> 00:25:28.240
<v Speaker 4>well yeah, but off zero and every Cognito does and

529
00:25:28.240 --> 00:25:29.880
<v Speaker 4>everyone else does, and I'm like, well sure they do,

530
00:25:29.960 --> 00:25:32.640
<v Speaker 4>and they will break you, Like if they change something,

531
00:25:32.680 --> 00:25:34.279
<v Speaker 4>you will be broken and you won't even know it,

532
00:25:34.640 --> 00:25:37.440
<v Speaker 4>and like just go look at I mean, like there's

533
00:25:38.000 --> 00:25:41.519
<v Speaker 4>just hit Reddit and say, ah zero upgrade broken, and

534
00:25:41.559 --> 00:25:45.279
<v Speaker 4>you'll find so many people complaining about some change that

535
00:25:45.480 --> 00:25:49.680
<v Speaker 4>off Zero or Cognito or Microsoft or somebody did that

536
00:25:49.839 --> 00:25:54.279
<v Speaker 4>broke their entire application. And so our meth are sort

537
00:25:54.319 --> 00:25:58.720
<v Speaker 4>of like theory on this whole thing, because you really

538
00:25:58.839 --> 00:26:02.640
<v Speaker 4>actually don't want a multi tenant upgrade, right, you want

539
00:26:02.680 --> 00:26:04.799
<v Speaker 4>a single tenant upgrade. You just want the ability to

540
00:26:04.799 --> 00:26:09.400
<v Speaker 4>do it very easily and seamlessly. And so what we

541
00:26:09.480 --> 00:26:12.599
<v Speaker 4>do is we say, we release new version of software,

542
00:26:12.839 --> 00:26:16.200
<v Speaker 4>Please bring it back to dev, run it locally, run

543
00:26:16.240 --> 00:26:20.240
<v Speaker 4>all your tests against it, make sure it's completely perfect,

544
00:26:21.160 --> 00:26:25.400
<v Speaker 4>then schedule an upgrade. And then you basically we just

545
00:26:25.480 --> 00:26:27.920
<v Speaker 4>we allow them to schedule an upgrade, click a button,

546
00:26:28.400 --> 00:26:32.039
<v Speaker 4>we upgrade their services, and they're they're off to the races, right,

547
00:26:32.079 --> 00:26:36.680
<v Speaker 4>And so we build processes and tools that allow this

548
00:26:36.799 --> 00:26:39.440
<v Speaker 4>to have, you know, our customers to do this very easily,

549
00:26:40.000 --> 00:26:42.599
<v Speaker 4>but it's very important, and we talk to every single

550
00:26:42.640 --> 00:26:45.240
<v Speaker 4>one about it, is like, please take this back to

551
00:26:45.319 --> 00:26:48.160
<v Speaker 4>dev and run all your tests against this new version

552
00:26:48.240 --> 00:26:51.119
<v Speaker 4>before you move into production and make sure nothing's going

553
00:26:51.200 --> 00:26:55.079
<v Speaker 4>to break up. Auto upgrades are just dangerous inherently in

554
00:26:55.119 --> 00:27:00.000
<v Speaker 4>the industry, and like build tools, dependencies anytime you're automatically

555
00:27:00.119 --> 00:27:05.559
<v Speaker 4>upgrading something in your stack without fully testing it. Beware.

556
00:27:06.000 --> 00:27:07.480
<v Speaker 2>Yeah, I mean, I think you're absolutely right.

557
00:27:07.480 --> 00:27:11.039
<v Speaker 1>I've been on this particular horn for quite a while

558
00:27:11.119 --> 00:27:15.440
<v Speaker 1>about companies or software dev teams that automatically upgrade dependencies

559
00:27:15.480 --> 00:27:19.119
<v Speaker 1>in their requirements text file or package chase on or

560
00:27:19.160 --> 00:27:23.039
<v Speaker 1>whatever have you, with the argument of automatically getting whatever

561
00:27:23.079 --> 00:27:25.799
<v Speaker 1>security upgrades come with us. And I think what I

562
00:27:26.279 --> 00:27:29.519
<v Speaker 1>really see here is a responsibility model, like who is

563
00:27:29.559 --> 00:27:33.079
<v Speaker 1>going to take full responsibility for their being a breaking

564
00:27:33.200 --> 00:27:36.319
<v Speaker 1>change somewhere? And it sounds like, you know, with these

565
00:27:36.319 --> 00:27:38.519
<v Speaker 1>other competitors out there in the market, they don't take

566
00:27:38.559 --> 00:27:42.000
<v Speaker 1>responsibility for the breaking changes that they make. You've made

567
00:27:42.039 --> 00:27:46.559
<v Speaker 1>it transparent and we promise no breaking changes. So I mean, there,

568
00:27:47.480 --> 00:27:50.119
<v Speaker 1>it's really ridiculous that you can be in this state.

569
00:27:50.200 --> 00:27:52.720
<v Speaker 1>I mean, I would be totally okay with Amazon taking

570
00:27:52.720 --> 00:27:55.359
<v Speaker 1>full responsibility for no breaking changes if they are going

571
00:27:55.400 --> 00:27:58.920
<v Speaker 1>to upgrade my RDS instance or dining with tob et cetera,

572
00:27:59.039 --> 00:28:01.480
<v Speaker 1>other models, But it really can't be the case that

573
00:28:01.519 --> 00:28:04.440
<v Speaker 1>you're using a managed provider and they roll out features

574
00:28:04.480 --> 00:28:08.000
<v Speaker 1>that can break your production software like that, that's not

575
00:28:08.039 --> 00:28:09.319
<v Speaker 1>a real that's not a real solution.

576
00:28:09.519 --> 00:28:12.319
<v Speaker 4>In my mind, breaking changes is a very hard thing

577
00:28:12.359 --> 00:28:12.920
<v Speaker 4>to define.

578
00:28:13.039 --> 00:28:13.359
<v Speaker 2>Yeah.

579
00:28:13.440 --> 00:28:17.799
<v Speaker 4>Right, So, like there's three levels of bugs in software. Right,

580
00:28:18.079 --> 00:28:21.599
<v Speaker 4>There's a top level bug that is simply something that

581
00:28:22.000 --> 00:28:27.599
<v Speaker 4>was inherently unfunctional and then becomes functional again. There's a

582
00:28:27.599 --> 00:28:30.599
<v Speaker 4>semantic bug at the top level, which is I changed

583
00:28:30.599 --> 00:28:33.559
<v Speaker 4>the semantic of something because it was not correct previously

584
00:28:33.599 --> 00:28:36.519
<v Speaker 4>according to our docks or whatever, and now it is.

585
00:28:37.200 --> 00:28:41.319
<v Speaker 4>And then there's nested semantic changes, which means I've called

586
00:28:41.400 --> 00:28:43.799
<v Speaker 4>through service through service. Through service through service, the one

587
00:28:43.839 --> 00:28:46.599
<v Speaker 4>way down at the bottom changed and it revealed a

588
00:28:46.599 --> 00:28:48.279
<v Speaker 4>bug all the way up to the top. So I

589
00:28:48.319 --> 00:28:50.599
<v Speaker 4>go fix the service way down at the bottom, and

590
00:28:50.640 --> 00:28:53.720
<v Speaker 4>then the one at the top gets magically fixed. Okay,

591
00:28:54.039 --> 00:28:57.559
<v Speaker 4>so when you have a patch release that's fixing a bug,

592
00:28:58.480 --> 00:29:02.720
<v Speaker 4>it's still possible that someone's depending on the broken nature

593
00:29:02.799 --> 00:29:04.799
<v Speaker 4>of that and you blow them out of the water.

594
00:29:05.279 --> 00:29:08.160
<v Speaker 4>And this can it's literally just a dot release, right,

595
00:29:08.240 --> 00:29:11.480
<v Speaker 4>So I could have thrown an exception and now I

596
00:29:11.519 --> 00:29:13.920
<v Speaker 4>no longer do that. Well, the smart developer is like, well,

597
00:29:13.960 --> 00:29:15.480
<v Speaker 4>I'm going to catch your exception and I'm just going

598
00:29:15.559 --> 00:29:18.160
<v Speaker 4>to handle the path where like it's fine, Well, now

599
00:29:18.160 --> 00:29:21.960
<v Speaker 4>you're returning the status code that I don't expect. Oh crap,

600
00:29:22.359 --> 00:29:25.359
<v Speaker 4>I was expecting a five hundred. Now you're returning to

601
00:29:25.359 --> 00:29:28.200
<v Speaker 4>four or one. Dude, like you're killing me your smalls,

602
00:29:28.240 --> 00:29:32.799
<v Speaker 4>Like I can't. So, yes, you say you have zero

603
00:29:33.359 --> 00:29:38.200
<v Speaker 4>incompatible changes, but that is too hard for a standard

604
00:29:38.200 --> 00:29:41.839
<v Speaker 4>developer to reason through. So the only way to truly

605
00:29:42.400 --> 00:29:45.400
<v Speaker 4>figure this problem out would be for the build tools,

606
00:29:45.880 --> 00:29:50.279
<v Speaker 4>the testing tools, and the development time tools to basically

607
00:29:50.359 --> 00:29:55.319
<v Speaker 4>certify that the entire landscape of all public things in

608
00:29:55.359 --> 00:29:58.480
<v Speaker 4>our API, our code, whatever it might be, that people

609
00:29:58.519 --> 00:30:01.799
<v Speaker 4>can't consume, here are the breaking changes, and here are

610
00:30:01.839 --> 00:30:05.480
<v Speaker 4>the non breaking changes, right, because there's every release has

611
00:30:05.759 --> 00:30:09.440
<v Speaker 4>breaking changes depending on how you're using the tool.

612
00:30:10.200 --> 00:30:12.519
<v Speaker 3>You bring up such a good point. We're in a

613
00:30:12.559 --> 00:30:14.240
<v Speaker 3>certain place we were discussing before.

614
00:30:14.279 --> 00:30:15.440
<v Speaker 1>The call is famous for this.

615
00:30:16.759 --> 00:30:19.440
<v Speaker 3>I seated at multiple places, but there was a lot.

616
00:30:19.240 --> 00:30:22.599
<v Speaker 4>At this place. These are insanely hard problems to solve.

617
00:30:22.759 --> 00:30:25.799
<v Speaker 4>And what's happened in the software development industry is that

618
00:30:26.079 --> 00:30:28.960
<v Speaker 4>everyone got so excited about new languages and frameworks and

619
00:30:29.000 --> 00:30:31.680
<v Speaker 4>building apps fast, and now there's like, you know, you

620
00:30:31.720 --> 00:30:35.359
<v Speaker 4>know whatever Jive coding or whatever it's called I don't

621
00:30:35.359 --> 00:30:41.880
<v Speaker 4>know what yes, and like bobob coding. So like there's

622
00:30:41.920 --> 00:30:43.799
<v Speaker 4>all this stuff that we're just like we're just throwing

623
00:30:43.839 --> 00:30:45.880
<v Speaker 4>it at the top end. We're like, oh, this is amazing.

624
00:30:45.920 --> 00:30:47.559
<v Speaker 4>Look at all the stuff we can do and these

625
00:30:47.559 --> 00:30:50.880
<v Speaker 4>cool frameworks and you know, React and all these things,

626
00:30:50.960 --> 00:30:54.319
<v Speaker 4>and we forgot to go fundamentally solve software engineering problems

627
00:30:54.359 --> 00:30:56.440
<v Speaker 4>at the core level, which is like, how do I

628
00:30:56.559 --> 00:31:01.240
<v Speaker 4>certify that this version and this version are unquote compatible

629
00:31:01.279 --> 00:31:04.480
<v Speaker 4>at the binary level, compatible at the public API level,

630
00:31:04.559 --> 00:31:07.920
<v Speaker 4>compatible at the consumption level, compatible at the run time level.

631
00:31:08.519 --> 00:31:10.559
<v Speaker 4>We don't have tools for that. There are literally no

632
00:31:10.640 --> 00:31:14.720
<v Speaker 4>tools in any language that certify those things because we

633
00:31:14.920 --> 00:31:17.720
<v Speaker 4>just as an industry forgot about them and we assumed

634
00:31:17.720 --> 00:31:19.720
<v Speaker 4>that the developer was smart enough to do them, and

635
00:31:20.720 --> 00:31:22.640
<v Speaker 4>they're not. Like, no one is. No one can know

636
00:31:22.680 --> 00:31:27.279
<v Speaker 4>the entire you know, code base and certify that it's compatible.

637
00:31:27.319 --> 00:31:35.720
<v Speaker 4>It's impossible. I made fun of some of these new terms.

638
00:31:35.759 --> 00:31:37.640
<v Speaker 4>My son's a software engineer, and so he's like, Oh,

639
00:31:37.640 --> 00:31:39.079
<v Speaker 4>I'm going to vibe code this thing tonight.

640
00:31:39.160 --> 00:31:44.039
<v Speaker 3>I'm like, god, dude, vibe like an authentication just like,

641
00:31:44.119 --> 00:31:44.680
<v Speaker 3>oh my god.

642
00:31:46.440 --> 00:31:50.440
<v Speaker 1>There was actually a post about using Claude to generate

643
00:31:51.519 --> 00:31:56.279
<v Speaker 1>two compatible integration and how much it failed basically even

644
00:31:56.559 --> 00:32:01.200
<v Speaker 1>with the driver being a very experienced senior engineer in

645
00:32:01.440 --> 00:32:04.200
<v Speaker 1>developing some like helping develop some of the standards. Like,

646
00:32:04.319 --> 00:32:07.359
<v Speaker 1>that's how ridiculously not safe it is to do that.

647
00:32:07.400 --> 00:32:09.359
<v Speaker 1>I do want to call out, like, this is for

648
00:32:09.400 --> 00:32:13.559
<v Speaker 1>sure a nearly impossible problem. And I don't think you've

649
00:32:13.640 --> 00:32:15.839
<v Speaker 1>you've even sold it enough here, so like let me,

650
00:32:16.000 --> 00:32:19.240
<v Speaker 1>I just want to share that. It's like if you

651
00:32:19.319 --> 00:32:21.880
<v Speaker 1>haven't if your if your service like returns an enom

652
00:32:22.160 --> 00:32:26.519
<v Speaker 1>like a value you know, zero, one or two, and

653
00:32:26.559 --> 00:32:29.839
<v Speaker 1>you add in the ability for it to return a four,

654
00:32:30.400 --> 00:32:33.839
<v Speaker 1>like is that like does that break someone? And it's

655
00:32:33.839 --> 00:32:36.000
<v Speaker 1>not a breaking change technically, but it is it is

656
00:32:36.119 --> 00:32:38.279
<v Speaker 1>it for sure will break someone because in most software

657
00:32:38.319 --> 00:32:41.839
<v Speaker 1>languages there is no code to say, like I expect

658
00:32:41.880 --> 00:32:44.119
<v Speaker 1>only these results and if I get a different one,

659
00:32:44.160 --> 00:32:47.200
<v Speaker 1>what to do in that scenario? And so you will

660
00:32:47.240 --> 00:32:50.160
<v Speaker 1>be putting your customer in a scenario where their system

661
00:32:50.200 --> 00:32:51.640
<v Speaker 1>will break in some unexpected way.

662
00:32:52.000 --> 00:32:54.000
<v Speaker 2>So I think if.

663
00:32:53.960 --> 00:32:56.720
<v Speaker 1>You're ready to go down this approach, if you if

664
00:32:56.720 --> 00:32:59.599
<v Speaker 1>you run managed software like a cloud provider, or you've

665
00:32:59.599 --> 00:33:02.880
<v Speaker 1>done something ridiculous like we have. You have to really

666
00:33:02.960 --> 00:33:06.240
<v Speaker 1>understand the system thinking approach, like what based off of

667
00:33:06.240 --> 00:33:09.279
<v Speaker 1>our current API, what did our customers write, Like what

668
00:33:10.079 --> 00:33:12.279
<v Speaker 1>magical thing happened in their head that they wrote down

669
00:33:12.680 --> 00:33:16.640
<v Speaker 1>that was was correct at the time, and now after

670
00:33:16.720 --> 00:33:20.480
<v Speaker 1>this change is no longer correct. And so very often

671
00:33:20.279 --> 00:33:22.920
<v Speaker 1>when I say no breaking changes, I mean that means

672
00:33:22.960 --> 00:33:25.759
<v Speaker 1>like you can add fields, and even that's a little

673
00:33:25.759 --> 00:33:28.160
<v Speaker 1>bit on the edge, but like renaming things or adding

674
00:33:28.319 --> 00:33:31.920
<v Speaker 1>error codes, you know, we're very careful about. I think

675
00:33:32.160 --> 00:33:35.359
<v Speaker 1>a standard one is like don't don't, like you have

676
00:33:35.400 --> 00:33:38.200
<v Speaker 1>to be so careful not to over engineer anything, because

677
00:33:39.039 --> 00:33:41.240
<v Speaker 1>that for sure means later you're going to be like, wow,

678
00:33:41.240 --> 00:33:43.400
<v Speaker 1>I wish I hadn't put that in the API, because

679
00:33:43.440 --> 00:33:46.319
<v Speaker 1>now someone could be depending on it, and it's impossible

680
00:33:46.319 --> 00:33:49.599
<v Speaker 1>to know what fields someone's depending on with a particular

681
00:33:49.640 --> 00:33:52.599
<v Speaker 1>get Now, there are some tricks here for anyone who

682
00:33:52.599 --> 00:33:55.759
<v Speaker 1>actually does care and does decide to do this. You

683
00:33:55.920 --> 00:34:01.279
<v Speaker 1>can embed the assumptions in your SDKs that you roll

684
00:34:01.279 --> 00:34:03.440
<v Speaker 1>it to your customers, and then you can track which

685
00:34:03.559 --> 00:34:07.039
<v Speaker 1>SDK versions they're using to understand what sort of things

686
00:34:07.039 --> 00:34:09.239
<v Speaker 1>that they'll run into. And by making sure that the

687
00:34:09.239 --> 00:34:11.440
<v Speaker 1>requests that coming from their service are all using an

688
00:34:11.519 --> 00:34:13.800
<v Speaker 1>upgraded version of the SDK. You can be sure that

689
00:34:13.840 --> 00:34:16.599
<v Speaker 1>any dependency that rolls out for that customer would not

690
00:34:16.800 --> 00:34:18.880
<v Speaker 1>have a problem. Which does mean that in our own

691
00:34:18.920 --> 00:34:21.760
<v Speaker 1>code base we do have feature flags for certain customers

692
00:34:21.800 --> 00:34:27.159
<v Speaker 1>to potentially take certain dangerous upgrades. But fundamentally we do

693
00:34:27.239 --> 00:34:29.719
<v Speaker 1>have to segregate by customer and understand the SDK. And

694
00:34:29.719 --> 00:34:33.280
<v Speaker 1>that's still not sufficient because customers will delegate out integrations

695
00:34:33.280 --> 00:34:38.119
<v Speaker 1>to all services to backstage and whatever other internal developer

696
00:34:38.199 --> 00:34:41.639
<v Speaker 1>tooling or other client that you don't even control, and

697
00:34:41.719 --> 00:34:44.360
<v Speaker 1>so getting that that integration to work correctly is just

698
00:34:44.400 --> 00:34:46.840
<v Speaker 1>another huge thing. Like it's not always like you can

699
00:34:46.840 --> 00:34:48.559
<v Speaker 1>get your customer on the phone and promise them a

700
00:34:48.639 --> 00:34:52.199
<v Speaker 1>huge discount to make to make a change, or you know,

701
00:34:52.639 --> 00:34:54.719
<v Speaker 1>threaten them with a huge increase if they are still

702
00:34:54.719 --> 00:34:57.159
<v Speaker 1>on an old version of Kubernetes. And I mean, I'm

703
00:34:57.199 --> 00:35:00.159
<v Speaker 1>your ofth provider in the cloud because you know, oh

704
00:35:00.159 --> 00:35:01.920
<v Speaker 1>the cloud friders are doing that now too. So I

705
00:35:02.360 --> 00:35:05.519
<v Speaker 1>do think that there's a whole spectrum here of problems

706
00:35:05.519 --> 00:35:07.400
<v Speaker 1>that you're going to run into, and you have to

707
00:35:07.400 --> 00:35:11.079
<v Speaker 1>be conscious of how you're going to tackle every side

708
00:35:11.079 --> 00:35:11.320
<v Speaker 1>of it.

709
00:35:11.559 --> 00:35:15.800
<v Speaker 4>Yeah, it's tricky. The software engineers have to think so

710
00:35:16.719 --> 00:35:19.880
<v Speaker 4>hard about the architecture for their unges, their APIs. It's like,

711
00:35:21.239 --> 00:35:23.119
<v Speaker 4>are we going to do? Are we going to version them?

712
00:35:23.119 --> 00:35:24.880
<v Speaker 4>So like you know, slash V one, slash V two,

713
00:35:24.960 --> 00:35:28.280
<v Speaker 4>slash v three, And then when we make a change,

714
00:35:28.639 --> 00:35:30.679
<v Speaker 4>when do we upgrade the version number? And then is

715
00:35:30.679 --> 00:35:32.719
<v Speaker 4>that version number tied to the SDK and the SDK

716
00:35:32.880 --> 00:35:35.039
<v Speaker 4>only calls into this when it's this version or cause

717
00:35:35.119 --> 00:35:38.400
<v Speaker 4>the old version? And can you make a compatibility translation

718
00:35:38.480 --> 00:35:40.800
<v Speaker 4>between V one and V two and B three? I mean,

719
00:35:40.920 --> 00:35:42.880
<v Speaker 4>it's like it's a lot of mental overhead just to

720
00:35:42.920 --> 00:35:45.239
<v Speaker 4>make a simple change, Like, ah, dude, I just want

721
00:35:45.239 --> 00:35:47.920
<v Speaker 4>to like return this extra field in the API. You're like, well,

722
00:35:48.559 --> 00:35:51.280
<v Speaker 4>is another field dependent on that field now? Because if

723
00:35:51.280 --> 00:35:53.800
<v Speaker 4>you have dependent fields, you can't make that change unless

724
00:35:53.800 --> 00:35:55.440
<v Speaker 4>you version the API and then version of the SEK,

725
00:35:55.760 --> 00:35:56.760
<v Speaker 4>and then you have to make sure you have a

726
00:35:56.800 --> 00:36:00.360
<v Speaker 4>compatibility layer between those two versions. And their brains explode

727
00:36:00.360 --> 00:36:01.840
<v Speaker 4>and they're like, dude, all I just wanted to make

728
00:36:01.840 --> 00:36:02.519
<v Speaker 4>a feel change.

729
00:36:02.960 --> 00:36:07.559
<v Speaker 3>Sorry, this is why I don't such faith.

730
00:36:07.440 --> 00:36:13.239
<v Speaker 4>And a terrified for this specific reason.

731
00:36:13.199 --> 00:36:17.920
<v Speaker 3>It really really does. And like at the stuff that

732
00:36:18.039 --> 00:36:21.079
<v Speaker 3>I've been seeing playing with different products that are coming,

733
00:36:21.719 --> 00:36:28.000
<v Speaker 3>it's learning it's hallucinations, and like, I just don't see

734
00:36:28.119 --> 00:36:32.119
<v Speaker 3>how this stopped. Like I know there's obviously balances, and

735
00:36:32.159 --> 00:36:34.960
<v Speaker 3>you know it's people obviously like test these before it

736
00:36:34.960 --> 00:36:37.559
<v Speaker 3>comes out, but once it's like once it's deployed and

737
00:36:37.599 --> 00:36:40.199
<v Speaker 3>it's learning its own hallucinations, Like how do you stop it?

738
00:36:40.280 --> 00:36:40.559
<v Speaker 3>I don't.

739
00:36:40.800 --> 00:36:43.079
<v Speaker 1>I love I love how you said obviously people test

740
00:36:43.119 --> 00:36:44.760
<v Speaker 1>these because you know I.

741
00:36:48.000 --> 00:36:52.199
<v Speaker 3>Once you haven't like deployed in your environment. It's what

742
00:36:52.559 --> 00:36:55.320
<v Speaker 3>is it the Schroeder's cat, like if it if it's

743
00:36:56.519 --> 00:36:58.400
<v Speaker 3>but I forget how that goes and if I've even

744
00:36:58.400 --> 00:37:00.840
<v Speaker 3>pronounced that correctly. But Schroder's cat where it's like, if

745
00:37:00.840 --> 00:37:03.519
<v Speaker 3>it happens in another world, does it then become reality?

746
00:37:04.039 --> 00:37:06.559
<v Speaker 3>Like if it's hallucinating on something that's false, but now

747
00:37:06.599 --> 00:37:08.800
<v Speaker 3>it has become reality, Like is it reality?

748
00:37:08.880 --> 00:37:12.079
<v Speaker 4>I don't think it's a phenomenally existential question.

749
00:37:13.400 --> 00:37:14.880
<v Speaker 1>What I was going to ask is you know how

750
00:37:14.880 --> 00:37:17.480
<v Speaker 1>the S and MCP stands for security? Where are you

751
00:37:17.480 --> 00:37:19.360
<v Speaker 1>on the spectrum of AI is terrible and going to

752
00:37:19.400 --> 00:37:21.280
<v Speaker 1>ruin the world? And is it the best thing ever

753
00:37:21.480 --> 00:37:23.599
<v Speaker 1>created by humans? And I guess we know where Amy

754
00:37:23.679 --> 00:37:25.119
<v Speaker 1>stands on that particular point.

755
00:37:25.519 --> 00:37:28.599
<v Speaker 3>I mean, I'm sure it's going to excel at certain things,

756
00:37:28.800 --> 00:37:31.280
<v Speaker 3>but solving the types of things that people think it's

757
00:37:31.320 --> 00:37:35.280
<v Speaker 3>going to solve, I just don't. I don't see how

758
00:37:35.320 --> 00:37:38.800
<v Speaker 3>that can happen, because I mean that we're fandomically, like

759
00:37:38.800 --> 00:37:41.119
<v Speaker 3>we're at the limb of ourselves and we fail.

760
00:37:41.760 --> 00:37:44.679
<v Speaker 4>So how it's really hard to engineer a prompt that

761
00:37:44.840 --> 00:37:48.440
<v Speaker 4>tells them about your entire software development life cycle and

762
00:37:48.519 --> 00:37:51.480
<v Speaker 4>the way that you've architected your entire system, right, So,

763
00:37:51.519 --> 00:37:53.760
<v Speaker 4>like your prop would have to be like generate me

764
00:37:53.920 --> 00:37:56.599
<v Speaker 4>a new API and blah blah blah. But keep in

765
00:37:56.639 --> 00:37:59.000
<v Speaker 4>mind that we version our APIs this way and these

766
00:37:59.000 --> 00:38:02.400
<v Speaker 4>are breaking changes. We use this SLDC process to get

767
00:38:02.400 --> 00:38:05.199
<v Speaker 4>our SDK updated. You have to link the SDK to

768
00:38:05.280 --> 00:38:07.679
<v Speaker 4>this and that and that. There's the AI is. You

769
00:38:07.960 --> 00:38:10.960
<v Speaker 4>just can't do that, right, So, like AI is great

770
00:38:11.039 --> 00:38:14.360
<v Speaker 4>for helping me code complete a four loop, right, and

771
00:38:14.559 --> 00:38:16.840
<v Speaker 4>it'll guess based on the things that's seen in the

772
00:38:16.880 --> 00:38:19.079
<v Speaker 4>code and where I'm at and logically what I want

773
00:38:19.119 --> 00:38:20.679
<v Speaker 4>to kind of do, and I can make a prompt.

774
00:38:20.719 --> 00:38:23.559
<v Speaker 4>It's like, hey, make me a map reduce on this list,

775
00:38:23.599 --> 00:38:27.840
<v Speaker 4>and okay, I got you. Great for that stuff. Generating

776
00:38:28.079 --> 00:38:31.840
<v Speaker 4>full code bases and let alone adding to existing code

777
00:38:31.880 --> 00:38:36.719
<v Speaker 4>bases large chunks of code freaks me out. And I

778
00:38:36.760 --> 00:38:40.280
<v Speaker 4>always tell people. I'm like, don't let that anywhere near

779
00:38:40.480 --> 00:38:43.920
<v Speaker 4>your security layer, Like anything that has to do with security, please, please, please,

780
00:38:43.960 --> 00:38:46.280
<v Speaker 4>please please do not let AI generate it and just

781
00:38:46.320 --> 00:38:51.039
<v Speaker 4>ship that like, let it help you, but review your code,

782
00:38:51.119 --> 00:38:55.000
<v Speaker 4>test it, do a security audit, do a pen test,

783
00:38:55.320 --> 00:38:57.760
<v Speaker 4>do a load test. Like you still have to do

784
00:38:57.840 --> 00:39:01.880
<v Speaker 4>all the things that we're doing which require knowledgeable software

785
00:39:01.880 --> 00:39:04.159
<v Speaker 4>engineers to do them right. You can't just let AI

786
00:39:04.239 --> 00:39:07.280
<v Speaker 4>do that either. So like the doomsdayers are like, okay,

787
00:39:07.320 --> 00:39:09.840
<v Speaker 4>well you know engineering is dead, you know, no, no

788
00:39:09.920 --> 00:39:12.280
<v Speaker 4>more engineers coming out of college. No, we're stopping. We'll

789
00:39:12.280 --> 00:39:14.119
<v Speaker 4>just take that off to college curriculum. And I'm like,

790
00:39:14.679 --> 00:39:17.480
<v Speaker 4>we're so far away from that, so so so so

791
00:39:17.599 --> 00:39:19.400
<v Speaker 4>far away. Like you guys, keep going to college, let

792
00:39:19.480 --> 00:39:20.280
<v Speaker 4>go get your degrees.

793
00:39:21.159 --> 00:39:22.639
<v Speaker 3>That's going to create more jobs.

794
00:39:22.920 --> 00:39:24.639
<v Speaker 4>Yeah, it will, it will, It's like.

795
00:39:26.239 --> 00:39:26.679
<v Speaker 3>It will.

796
00:39:27.440 --> 00:39:31.400
<v Speaker 1>So I think the biggest problem here isn't that You're

797
00:39:31.440 --> 00:39:35.239
<v Speaker 1>absolutely right. It's that people believe that it's going to

798
00:39:35.280 --> 00:39:38.360
<v Speaker 1>take over stuff, and so it's already affecting things like

799
00:39:38.480 --> 00:39:41.079
<v Speaker 1>universities and whatnot. I mean, there is something to be

800
00:39:41.119 --> 00:39:45.159
<v Speaker 1>said for specifications. I find that if you have a

801
00:39:45.320 --> 00:39:49.000
<v Speaker 1>very well written out spec using an LM to generate

802
00:39:49.360 --> 00:39:53.360
<v Speaker 1>on a transformation so a translation or getting it written down,

803
00:39:53.440 --> 00:39:57.960
<v Speaker 1>let's say, open API specification into something else that's programmatic,

804
00:39:58.039 --> 00:40:00.400
<v Speaker 1>so an SDK. But at that point, why are you

805
00:40:00.440 --> 00:40:03.159
<v Speaker 1>just not using a rules generator? But maybe the thing

806
00:40:03.239 --> 00:40:06.800
<v Speaker 1>that generates the generator, that thing could be l M based.

807
00:40:07.519 --> 00:40:10.000
<v Speaker 1>So you know, I see, I see the hesitation here.

808
00:40:10.039 --> 00:40:13.599
<v Speaker 1>You know, I'm totally totally on the same side for

809
00:40:13.719 --> 00:40:14.320
<v Speaker 1>the most part.

810
00:40:14.679 --> 00:40:15.559
<v Speaker 2>Yeah, for sure.

811
00:40:16.639 --> 00:40:20.519
<v 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
<v Speaker 4>Don't use it for everything like that. Just that sounds dangerous.

813
00:40:24.639 --> 00:40:27.360
<v Speaker 1>I like the argument that people have been using Oh

814
00:40:27.400 --> 00:40:30.840
<v Speaker 1>but there were a lot of naysayers about the Internet

815
00:40:30.840 --> 00:40:33.480
<v Speaker 1>when it came out, So can't you envision at some

816
00:40:33.559 --> 00:40:36.719
<v Speaker 1>point AI also being great and the people that are

817
00:40:36.760 --> 00:40:38.840
<v Speaker 1>jumping up and down right now like they're just on

818
00:40:39.000 --> 00:40:41.199
<v Speaker 1>the forefront of innovation.

819
00:40:42.360 --> 00:40:45.159
<v Speaker 4>And I say, remember the Internet was never designed to

820
00:40:45.159 --> 00:40:46.760
<v Speaker 4>host applications.

821
00:40:46.119 --> 00:40:50.800
<v Speaker 1>And I think you've established some converts probably today after.

822
00:40:52.039 --> 00:40:55.360
<v Speaker 1>You know, it's interesting because from my experience it's been

823
00:40:55.559 --> 00:40:59.960
<v Speaker 1>that a full multi tenant solution is never the right answer.

824
00:41:00.159 --> 00:41:02.599
<v Speaker 1>And I also am not a fan of full single

825
00:41:02.719 --> 00:41:05.920
<v Speaker 1>tenant solutions. Like we end up usually somewhere in between.

826
00:41:06.199 --> 00:41:11.000
<v Speaker 1>We don't have millions and millions of database instances running

827
00:41:11.039 --> 00:41:14.480
<v Speaker 1>one for every customer, but there are things like dedicated

828
00:41:14.519 --> 00:41:18.480
<v Speaker 1>tables per customer, or dedicated certificates per customer, or dedicated

829
00:41:19.360 --> 00:41:21.519
<v Speaker 1>you know, CDNs, et cetera. But there are also some

830
00:41:21.559 --> 00:41:25.639
<v Speaker 1>shared components as well. And I feel like understanding where

831
00:41:25.679 --> 00:41:28.280
<v Speaker 1>the direction the business is going and where the value

832
00:41:28.280 --> 00:41:30.920
<v Speaker 1>is that you're providing helps to pick the right part

833
00:41:30.960 --> 00:41:33.800
<v Speaker 1>of the spectrum and not assume it's like a pure

834
00:41:34.199 --> 00:41:37.280
<v Speaker 1>extreme case, like it's only A or B and nothing

835
00:41:37.320 --> 00:41:37.760
<v Speaker 1>in between.

836
00:41:37.920 --> 00:41:42.159
<v 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
<v Speaker 4>when we run in the cloud, we I mean we're

838
00:41:44.920 --> 00:41:47.400
<v Speaker 4>even looking at like starting to share a single database

839
00:41:47.440 --> 00:41:51.280
<v Speaker 4>instance across like lots of small customers because the cost

840
00:41:51.320 --> 00:41:53.559
<v Speaker 4>of scale there is is way better and it's way

841
00:41:53.599 --> 00:41:57.519
<v Speaker 4>easier to manage and multitude of reasons, right, So we're

842
00:41:57.679 --> 00:41:59.960
<v Speaker 4>we're already looking at starting to do some of the

843
00:42:00.199 --> 00:42:02.800
<v Speaker 4>we would do like a database slice per customer. We

844
00:42:02.840 --> 00:42:04.840
<v Speaker 4>would probably put them all on the same database and

845
00:42:05.119 --> 00:42:08.239
<v Speaker 4>just like our tables or anything. But but yeah, I

846
00:42:08.559 --> 00:42:12.039
<v Speaker 4>totally agree with you, right, So, like we we want

847
00:42:12.159 --> 00:42:14.440
<v Speaker 4>everybody to have the best of both worlds, and it's like,

848
00:42:14.480 --> 00:42:17.320
<v Speaker 4>how do we do that most effectively? Though? So the

849
00:42:17.360 --> 00:42:20.320
<v Speaker 4>coolest use case that we have, which kind of is

850
00:42:20.599 --> 00:42:24.199
<v Speaker 4>only usable and you know, downloadable, single tenant and they

851
00:42:24.239 --> 00:42:28.920
<v Speaker 4>deploy it in their own special way, is that we

852
00:42:28.960 --> 00:42:31.559
<v Speaker 4>work with a satellite company and they actually have pushed

853
00:42:31.559 --> 00:42:34.719
<v Speaker 4>fusee not up to these low Earth orbit satellites, and

854
00:42:34.800 --> 00:42:38.559
<v Speaker 4>so we can say that fusion oth runs in space.

855
00:42:38.760 --> 00:42:41.599
<v Speaker 4>It's pretty sweet. And so we're like, we like to

856
00:42:41.639 --> 00:42:45.159
<v Speaker 4>say we're on all all all the continents and space,

857
00:42:45.840 --> 00:42:49.119
<v Speaker 4>although Antarctica we faked that one. We just you know,

858
00:42:49.760 --> 00:42:51.960
<v Speaker 4>had somebody that was doing a tour down there, like

859
00:42:52.000 --> 00:42:54.960
<v Speaker 4>fire a FUSEE near it, and then we said, okay,

860
00:42:55.000 --> 00:42:56.039
<v Speaker 4>we're on Antarctica now.

861
00:42:56.159 --> 00:42:57.599
<v Speaker 3>But yeah, for.

862
00:42:57.599 --> 00:43:01.880
<v Speaker 1>Sure, amy have have we converted you any if I

863
00:43:01.960 --> 00:43:03.519
<v Speaker 1>managed to at least pull you back a little bit

864
00:43:03.639 --> 00:43:09.039
<v Speaker 1>away from multi tenant is always wrong and security vulnerabilities,

865
00:43:09.559 --> 00:43:10.119
<v Speaker 1>I definitely.

866
00:43:10.119 --> 00:43:13.119
<v Speaker 3>I mean, if you's in a perfect world, there's one scenario,

867
00:43:13.239 --> 00:43:16.239
<v Speaker 3>but in a practical world, I do agree, like it

868
00:43:16.320 --> 00:43:18.559
<v Speaker 3>depends it has to be crimination.

869
00:43:19.039 --> 00:43:22.920
<v Speaker 1>Yeah, I see some uh past trauma there really starting

870
00:43:22.960 --> 00:43:23.360
<v Speaker 1>to show.

871
00:43:24.280 --> 00:43:27.719
<v Speaker 4>I think we've had trauma on both sides. We're likeable.

872
00:43:28.480 --> 00:43:30.719
<v Speaker 4>It was expensive and so hard to manage, and how

873
00:43:30.719 --> 00:43:33.320
<v Speaker 4>do I get this into production? And then it's like, well,

874
00:43:33.320 --> 00:43:35.880
<v Speaker 4>we're using this service and it just crashed, you know.

875
00:43:36.039 --> 00:43:38.599
<v Speaker 4>I mean I think we all have a decent amount

876
00:43:38.679 --> 00:43:40.320
<v Speaker 4>of stories from both sides.

877
00:43:40.639 --> 00:43:43.159
<v Speaker 1>Yeah, I mean I think my my single tenant one

878
00:43:43.280 --> 00:43:47.159
<v Speaker 1>was definitely we were running Jira, and uh, I mean

879
00:43:47.159 --> 00:43:49.440
<v Speaker 1>that that's that's already the beginning and the end of

880
00:43:49.599 --> 00:43:53.960
<v Speaker 1>the whole trauma right there. Yeah. But it turns out

881
00:43:53.960 --> 00:43:55.760
<v Speaker 1>that when you're running it and they tell you that

882
00:43:55.800 --> 00:43:58.199
<v Speaker 1>there's a major change, you would hope that the provider

883
00:43:58.280 --> 00:44:02.039
<v Speaker 1>gave you the capability to automatically migrate the database and

884
00:44:02.079 --> 00:44:07.199
<v Speaker 1>all the backwards incompatible stuff, But very frequently there would

885
00:44:07.199 --> 00:44:09.880
<v Speaker 1>be database crashes and you would lose all of your data,

886
00:44:10.000 --> 00:44:12.639
<v Speaker 1>and it's just like that's a thing that happened, and

887
00:44:12.880 --> 00:44:15.960
<v Speaker 1>I think the pendulum swung really hard to the other

888
00:44:16.039 --> 00:44:18.480
<v Speaker 1>side was like, we don't ever want to deal with

889
00:44:18.519 --> 00:44:21.039
<v Speaker 1>this ever again, because we don't trust companies to provide

890
00:44:21.119 --> 00:44:22.039
<v Speaker 1>us the tools to.

891
00:44:22.000 --> 00:44:22.960
<v Speaker 2>Actually do the upgrades.

892
00:44:23.320 --> 00:44:26.119
<v Speaker 1>And now we're back going I think, really coming the

893
00:44:26.159 --> 00:44:29.559
<v Speaker 1>other way, which is, yes, we don't trust companies to

894
00:44:29.800 --> 00:44:32.519
<v Speaker 1>you know, still be alive or you know, running their

895
00:44:32.559 --> 00:44:34.840
<v Speaker 1>APIs in a non backwards compatible way, because now they

896
00:44:34.920 --> 00:44:37.119
<v Speaker 1>just release new stuff all the time and it breaks.

897
00:44:37.599 --> 00:44:39.559
<v Speaker 2>And I think this is just a story of it.

898
00:44:39.559 --> 00:44:41.880
<v Speaker 1>It's no matter what solution you pick, it it's wrong

899
00:44:42.039 --> 00:44:45.000
<v Speaker 1>or bad in some way.

900
00:44:45.239 --> 00:44:48.559
<v Speaker 3>Everything everything is very much it depends and then it

901
00:44:48.719 --> 00:44:51.960
<v Speaker 3>changes constantly. So you know what you have one year,

902
00:44:52.039 --> 00:44:53.760
<v Speaker 3>the decision you make you're one is going to be

903
00:44:53.760 --> 00:44:58.039
<v Speaker 3>a very different problems the decision you make year two, three, four, hopefully.

904
00:44:58.639 --> 00:45:01.480
<v Speaker 4>Yeah, I totally agree with all things said.

905
00:45:02.440 --> 00:45:06.039
<v Speaker 1>Everyone's camp okay, Yeah, that's that's a good, good camp

906
00:45:06.079 --> 00:45:06.360
<v Speaker 1>to be in.

907
00:45:07.000 --> 00:45:09.880
<v Speaker 4>I think we've we've hit the AI topic, which everyone

908
00:45:10.239 --> 00:45:12.519
<v Speaker 4>is obligatory. Now everyone has to hit an AI topic.

909
00:45:12.559 --> 00:45:15.880
<v Speaker 1>And the truth is, we actually have quite a few

910
00:45:16.000 --> 00:45:19.719
<v Speaker 1>episodes recently in the past few months that have heavily

911
00:45:20.000 --> 00:45:22.480
<v Speaker 1>delved into ai.

912
00:45:22.000 --> 00:45:24.440
<v Speaker 2>UH and LMS and anything on the topic.

913
00:45:24.559 --> 00:45:27.360
<v Speaker 1>So if there you are, if anyone is interested in

914
00:45:27.639 --> 00:45:30.679
<v Speaker 1>reviewing those, there's a there's definitely a plethora of not

915
00:45:30.960 --> 00:45:33.960
<v Speaker 1>not a limited amount of information podcast episodes, so you

916
00:45:34.000 --> 00:45:36.880
<v Speaker 1>can go into hours and hours where we debate one

917
00:45:36.880 --> 00:45:39.800
<v Speaker 1>way or the other. So then let's uh, let's move

918
00:45:39.840 --> 00:45:41.800
<v Speaker 1>on to picks. Amy is okay if I put you on

919
00:45:41.840 --> 00:45:42.199
<v Speaker 1>the spot?

920
00:45:42.840 --> 00:45:46.360
<v Speaker 3>Sure, I you know, since I'm like new here, I

921
00:45:46.400 --> 00:45:48.159
<v Speaker 3>have a slew in my head. But I'm going to

922
00:45:48.199 --> 00:45:52.840
<v Speaker 3>pick walking since that's what I'm doing today. Morning is

923
00:45:52.920 --> 00:45:56.119
<v Speaker 3>usually when I have the most energy. So I think

924
00:45:56.159 --> 00:45:59.119
<v Speaker 3>I've gotten I'm looking on my tunel here almost two.

925
00:45:59.039 --> 00:46:03.400
<v Speaker 4>Miles treadmill do you have I've been like condubating getting one.

926
00:46:03.599 --> 00:46:06.199
<v Speaker 3>I am a Peloton fan girl. That could be my

927
00:46:06.360 --> 00:46:10.519
<v Speaker 3>second pick, but in all reality, I was looking so

928
00:46:10.679 --> 00:46:15.039
<v Speaker 3>I have the first version of the Peloton thread. I

929
00:46:15.199 --> 00:46:18.000
<v Speaker 3>like the slated one. However, this one I think is

930
00:46:18.039 --> 00:46:22.599
<v Speaker 3>slightly smaller and so it works perfectly for my face.

931
00:46:22.679 --> 00:46:25.079
<v Speaker 3>I have a desk up here. You can actually I

932
00:46:25.079 --> 00:46:27.079
<v Speaker 3>don't have it hooked up right now, but it's the

933
00:46:27.119 --> 00:46:29.639
<v Speaker 3>external monitor. You can actually hook up your laptop to

934
00:46:29.679 --> 00:46:31.960
<v Speaker 3>the external monitor too, so it works really good for

935
00:46:32.039 --> 00:46:32.800
<v Speaker 3>like a little setup.

936
00:46:33.760 --> 00:46:36.440
<v Speaker 4>Nice, all right, I'll look into it.

937
00:46:37.519 --> 00:46:40.280
<v Speaker 1>Brian Feelfred, I guess why I'll go.

938
00:46:41.920 --> 00:46:45.199
<v Speaker 4>So two. I have two things. Actually one of them

939
00:46:45.239 --> 00:46:47.280
<v Speaker 4>is just totally random because it just popped into my head.

940
00:46:47.480 --> 00:46:50.920
<v Speaker 4>But like I like, like, you know, snakes on a

941
00:46:50.920 --> 00:46:55.119
<v Speaker 4>plane style movies, right, So, like I watched one recently

942
00:46:55.280 --> 00:46:59.679
<v Speaker 4>which I thought was was really hilarious and it was

943
00:46:59.719 --> 00:47:04.119
<v Speaker 4>just like sort of like way over the top in

944
00:47:04.199 --> 00:47:07.760
<v Speaker 4>terms of like the the way that they did it,

945
00:47:07.800 --> 00:47:11.159
<v Speaker 4>And so that was that was one of them. Now

946
00:47:11.199 --> 00:47:15.440
<v Speaker 4>I'm just Fight or Flight and other kind of like

947
00:47:15.440 --> 00:47:17.400
<v Speaker 4>stakes not a plane movie anyway, if you're into that

948
00:47:17.480 --> 00:47:21.760
<v Speaker 4>kind of like heavy gore, like crazy comedy, like ridiculousness,

949
00:47:22.119 --> 00:47:24.760
<v Speaker 4>that one's a fun movie. But the one that I'm

950
00:47:24.800 --> 00:47:27.320
<v Speaker 4>really interested in kind of because it's you know, kind

951
00:47:27.320 --> 00:47:29.519
<v Speaker 4>of goes along with what we're doing here and talking about,

952
00:47:29.920 --> 00:47:33.159
<v Speaker 4>is there's this cool tool called search Craft, and I'm

953
00:47:33.239 --> 00:47:36.719
<v Speaker 4>like on like this huge kick with it because it's

954
00:47:36.800 --> 00:47:41.199
<v Speaker 4>it's a completely new search engine. They've rewritten, you know,

955
00:47:41.199 --> 00:47:43.400
<v Speaker 4>from scratch. It's not built on Lucine, it's not built

956
00:47:43.440 --> 00:47:46.679
<v Speaker 4>you know on Elastic. It's completely different. It's built in rust.

957
00:47:46.920 --> 00:47:51.400
<v Speaker 4>It's like super efficient, highly performance, requires like you know,

958
00:47:52.079 --> 00:47:55.199
<v Speaker 4>seventy percent less compute. You can run it locally, you

959
00:47:55.199 --> 00:47:56.559
<v Speaker 4>can run it in their cloud, and you can run

960
00:47:56.599 --> 00:47:59.719
<v Speaker 4>it in your cloud. It's just a really really cool

961
00:48:00.039 --> 00:48:03.039
<v Speaker 4>evolution of something that you know a lot of apps

962
00:48:03.039 --> 00:48:06.360
<v Speaker 4>in need, which is just a simple search service. And

963
00:48:06.360 --> 00:48:10.239
<v Speaker 4>and I think they really have something that's gonna change

964
00:48:10.400 --> 00:48:13.199
<v Speaker 4>the way that we think about search. So anyway, that's

965
00:48:13.280 --> 00:48:16.079
<v Speaker 4>that's the thing that I've really been gone how about lately.

966
00:48:16.159 --> 00:48:18.840
<v Speaker 4>So anybody wants to check it out. It's just I

967
00:48:18.880 --> 00:48:23.079
<v Speaker 4>think it's searchcraft dot. I owe searchcraft dot I owe.

968
00:48:23.079 --> 00:48:24.440
<v Speaker 1>I think is it Well, we'll get the link and

969
00:48:24.480 --> 00:48:25.960
<v Speaker 1>put it in the in the show notes. Is this

970
00:48:26.119 --> 00:48:28.840
<v Speaker 1>just like every company I should be using it? Or

971
00:48:28.960 --> 00:48:32.079
<v Speaker 1>is like if I'm just developing something myself, it's there's

972
00:48:32.159 --> 00:48:34.280
<v Speaker 1>a great opportunity to also pull it in.

973
00:48:34.800 --> 00:48:37.639
<v Speaker 4>At some point every company should be using it. It's

974
00:48:37.719 --> 00:48:40.679
<v Speaker 4>because like you know, you know Elastic, right, it requires

975
00:48:40.719 --> 00:48:42.639
<v Speaker 4>like seven servers and they all have to have like

976
00:48:42.800 --> 00:48:45.599
<v Speaker 4>full pi ops and they have to have ten gigs

977
00:48:45.599 --> 00:48:47.760
<v Speaker 4>a RAM each and it's just a it's a hawk,

978
00:48:48.119 --> 00:48:51.079
<v Speaker 4>and is it impossible to run and manage. Search Craft

979
00:48:51.239 --> 00:48:54.519
<v Speaker 4>is not quite there yet. Their clustering is coming along,

980
00:48:54.559 --> 00:48:57.199
<v Speaker 4>and they're really they're really heavy in development right now.

981
00:48:57.880 --> 00:49:00.400
<v Speaker 4>But like, just as a nice search search is for

982
00:49:00.440 --> 00:49:03.679
<v Speaker 4>an app that you're building, you should totally be using it.

983
00:49:03.719 --> 00:49:06.920
<v Speaker 4>Don't even think about open search, elastic search, just skip

984
00:49:07.000 --> 00:49:08.960
<v Speaker 4>that junk and go straight to search Craft.

985
00:49:09.400 --> 00:49:11.480
<v Speaker 1>Yeah, I'm I'm totally with you in general here. I

986
00:49:11.760 --> 00:49:14.199
<v Speaker 1>find that, first of all, i'm really suspicious of any

987
00:49:14.199 --> 00:49:16.440
<v Speaker 1>application that's built in Java.

988
00:49:16.960 --> 00:49:18.280
<v Speaker 2>That's that's that's my first thing.

989
00:49:18.320 --> 00:49:21.880
<v Speaker 1>But the second one is is that even the promised

990
00:49:21.880 --> 00:49:24.880
<v Speaker 1>managed services in a WS with the other cloud providers,

991
00:49:24.960 --> 00:49:27.679
<v Speaker 1>they're they're not really fully managed. It's just pretty much

992
00:49:27.760 --> 00:49:30.280
<v Speaker 1>like you don't get access to the easy two machines,

993
00:49:30.320 --> 00:49:32.199
<v Speaker 1>but you still have to pretty much manage it yourself.

994
00:49:32.519 --> 00:49:35.000
<v Speaker 2>So there's a there's a huge allure of.

995
00:49:35.079 --> 00:49:38.840
<v Speaker 1>Just not having to understand the complexity of index management

996
00:49:39.400 --> 00:49:42.280
<v Speaker 1>UH and document management and just using an API that

997
00:49:42.599 --> 00:49:45.719
<v Speaker 1>runs with low compute or memory impact.

998
00:49:46.320 --> 00:49:48.719
<v Speaker 4>So it's huge and it's hybrid again, so you can

999
00:49:48.880 --> 00:49:50.199
<v Speaker 4>not locally run in the cloud.

1000
00:49:51.119 --> 00:49:54.760
<v Speaker 1>Okay, thank you, Okay, So my pick today is going

1001
00:49:54.800 --> 00:49:58.639
<v Speaker 1>to be uh these uh Scarpus shoes. I actually really

1002
00:49:58.679 --> 00:50:00.639
<v Speaker 1>liked them. I found them randomly one day when I

1003
00:50:00.679 --> 00:50:04.559
<v Speaker 1>was walking in in Zurich. They're wide enough if you

1004
00:50:04.639 --> 00:50:07.920
<v Speaker 1>if you want wide shoes, and they're must in Switzerland

1005
00:50:07.960 --> 00:50:10.159
<v Speaker 1>if you just hop on some walking trails.

1006
00:50:10.159 --> 00:50:11.280
<v Speaker 2>They have vibrum soles.

1007
00:50:11.880 --> 00:50:13.480
<v Speaker 1>I just really like them, and I never heard of

1008
00:50:13.480 --> 00:50:16.320
<v Speaker 1>them before. Apparently they were made in Italy, and I

1009
00:50:16.320 --> 00:50:18.400
<v Speaker 1>guess today I'm just one of the lucky ten thousand.

1010
00:50:18.280 --> 00:50:23.000
<v Speaker 4>Scarpa correct me if I'm wrong. But they started making

1011
00:50:23.039 --> 00:50:25.280
<v Speaker 4>mount rock cling shoes right so then.

1012
00:50:25.239 --> 00:50:28.280
<v Speaker 1>Oh yeah, so in Switzerland it's it's been a huge

1013
00:50:29.239 --> 00:50:32.440
<v Speaker 1>path down here. So really realistically these are just regular

1014
00:50:32.480 --> 00:50:33.119
<v Speaker 1>walking shoes.

1015
00:50:33.159 --> 00:50:34.800
<v Speaker 2>But you can get all.

1016
00:50:34.840 --> 00:50:39.199
<v Speaker 1>There's a six ratings for hiking in Switzerland T one two,

1017
00:50:39.239 --> 00:50:41.519
<v Speaker 1>T six and T one's like flat ground.

1018
00:50:41.960 --> 00:50:43.039
<v Speaker 2>You don't there's no danger.

1019
00:50:43.119 --> 00:50:45.360
<v Speaker 1>All the way to T six you're totally exposed, risk

1020
00:50:45.440 --> 00:50:48.800
<v Speaker 1>of death everything. And they off they have dedicated shoes

1021
00:50:49.000 --> 00:50:53.039
<v Speaker 1>for every single type of hike you could possibly go on.

1022
00:50:53.039 --> 00:50:56.800
<v Speaker 1>Ones that support crampons, dedicated hiking shoes, you know all

1023
00:50:56.920 --> 00:50:59.280
<v Speaker 1>they go all the way up to your like above

1024
00:50:59.280 --> 00:51:04.159
<v Speaker 1>your ankles for support dedicated like climbing shoes, so you know,

1025
00:51:04.159 --> 00:51:06.000
<v Speaker 1>the Will band in case you're you're into rock climbing

1026
00:51:06.000 --> 00:51:08.400
<v Speaker 1>and whatnot. They're really nice, Like I think they really

1027
00:51:08.440 --> 00:51:10.960
<v Speaker 1>high quality, really soft h They're some of the best

1028
00:51:11.000 --> 00:51:13.559
<v Speaker 1>ones that I've seen. They don't work for me for hiking, unfortunately,

1029
00:51:13.960 --> 00:51:18.159
<v Speaker 1>but for walking around everywhere. I absolutely love them so far.

1030
00:51:18.639 --> 00:51:19.119
<v Speaker 2>They're great.

1031
00:51:19.760 --> 00:51:22.639
<v Speaker 4>That's awesome. What was the model on those?

1032
00:51:23.000 --> 00:51:25.880
<v Speaker 1>I think they're the Planet Mohido Suede.

1033
00:51:26.599 --> 00:51:29.119
<v Speaker 4>Okay, because they've got like a bunch of different because

1034
00:51:29.159 --> 00:51:30.639
<v Speaker 4>I used to do rock climbing and stuff, and they've

1035
00:51:30.679 --> 00:51:33.039
<v Speaker 4>got like their whole climbing thing. They've got trailing, They've

1036
00:51:33.039 --> 00:51:36.119
<v Speaker 4>got like a bunch of different styles. So I'll have

1037
00:51:36.119 --> 00:51:36.920
<v Speaker 4>to go check those out.

1038
00:51:37.079 --> 00:51:38.599
<v Speaker 1>Yeah, I mean these these actually don't even have the

1039
00:51:38.679 --> 00:51:39.559
<v Speaker 1>virum soul, but these are.

1040
00:51:39.599 --> 00:51:40.159
<v Speaker 2>They're they're pretty.

1041
00:51:40.159 --> 00:51:43.119
<v Speaker 1>They're pretty nice, thick thick soles that don't get worn out.

1042
00:51:43.480 --> 00:51:44.679
<v Speaker 2>I have a lot of traction.

1043
00:51:45.719 --> 00:51:47.400
<v Speaker 1>But yeah, I mean, if the scarp is fit, I

1044
00:51:47.599 --> 00:51:51.440
<v Speaker 1>definitely recommend them to to anyone. Uh, it's actually really interesting.

1045
00:51:51.519 --> 00:51:54.119
<v Speaker 1>Like I've been I've really gotten to shoes lately because

1046
00:51:54.119 --> 00:51:56.719
<v Speaker 1>I've just realized I have no idea what.

1047
00:51:56.719 --> 00:51:57.840
<v Speaker 2>I've been buying my whole life.

1048
00:51:58.280 --> 00:52:01.719
<v Speaker 1>Binding Appropriately fitting shoes actually a real challenge. Don't just

1049
00:52:01.760 --> 00:52:03.400
<v Speaker 1>put anything random on your feet. And so like I've

1050
00:52:03.440 --> 00:52:05.400
<v Speaker 1>been watching like what do people wear out there in

1051
00:52:05.440 --> 00:52:08.639
<v Speaker 1>the world, and a lot of people are just wearing crap, honestly,

1052
00:52:08.679 --> 00:52:11.199
<v Speaker 1>Like you go to one of these regular shoe stores

1053
00:52:11.239 --> 00:52:13.920
<v Speaker 1>and just buy stuff, and there's such a huge difference

1054
00:52:13.920 --> 00:52:16.760
<v Speaker 1>from buying shoes like this versus just picking up the

1055
00:52:17.559 --> 00:52:19.760
<v Speaker 1>one shoe that will you'll your foot will go through

1056
00:52:19.800 --> 00:52:22.719
<v Speaker 1>the sole after a year or two years, and something

1057
00:52:22.760 --> 00:52:24.119
<v Speaker 1>like this that just keeps on lasting.

1058
00:52:24.159 --> 00:52:27.880
<v Speaker 4>Honestly, Yeah, yeah, I totally agree. So I was like

1059
00:52:27.960 --> 00:52:29.840
<v Speaker 4>at a conference and I just my shoes was shot.

1060
00:52:30.199 --> 00:52:32.480
<v Speaker 4>So I jumped into like an H and M and

1061
00:52:32.480 --> 00:52:34.119
<v Speaker 4>I'm like, I'll just grab anything that's in there. And

1062
00:52:34.119 --> 00:52:35.480
<v Speaker 4>I grabbed them and put them on my feet, and

1063
00:52:35.519 --> 00:52:38.079
<v Speaker 4>I walked like another mile that day, and I'm like,

1064
00:52:38.320 --> 00:52:40.039
<v Speaker 4>oh my god, my feet hurt so bad, and like

1065
00:52:40.079 --> 00:52:42.159
<v Speaker 4>by the end of the show, like the heel was

1066
00:52:42.239 --> 00:52:45.440
<v Speaker 4>worn out, the bottom is falling apart. I'm like, oh, well,

1067
00:52:45.440 --> 00:52:47.639
<v Speaker 4>that's why they when they cost like forty dollars, you know,

1068
00:52:48.320 --> 00:52:49.519
<v Speaker 4>thirty five bucks or whatever.

1069
00:52:49.519 --> 00:52:50.320
<v Speaker 2>It was crazy.

1070
00:52:50.599 --> 00:52:53.159
<v Speaker 1>Yeah, I mean that's pretty cheap, even for a shoe. Okay, well,

1071
00:52:53.480 --> 00:52:56.480
<v Speaker 1>I guess that's a good point, probably at the episode

1072
00:52:56.519 --> 00:52:59.039
<v Speaker 1>before we get into into too much into into shoes

1073
00:52:59.039 --> 00:53:02.880
<v Speaker 1>and hiking. So thanks Amy as our temporary guest expert

1074
00:53:02.920 --> 00:53:07.480
<v Speaker 1>here and reliability, And thank you Brian so much for

1075
00:53:07.599 --> 00:53:08.280
<v Speaker 1>coming on the show.

1076
00:53:08.480 --> 00:53:09.679
<v Speaker 2>I hope we see you again.

1077
00:53:10.280 --> 00:53:12.679
<v Speaker 4>Yeah, this is awesome. Happy to come back anytime.

1078
00:53:13.199 --> 00:53:15.639
<v Speaker 1>Thanks for everyone listening, and we'll see you all next time.
