1
00:00:00,410 --> 00:00:02,650
Essentially, the vision we have for the company

2
00:00:02,660 --> 00:00:05,560
is to make technology just more connected.

3
00:00:05,570 --> 00:00:09,239
So making it easier for one tool to talk to another so that there

4
00:00:09,240 --> 00:00:12,520
is this connectivity layer between different business applications.

5
00:00:18,000 --> 00:00:21,369
Welcome to Fork Around and Find Out, the podcast about

6
00:00:21,380 --> 00:00:24,549
building, running, and maintaining software and systems.

7
00:00:37,089 --> 00:00:39,389
Hello and welcome to Fork Around and Find Out.

8
00:00:39,389 --> 00:00:43,309
I am Justin Garrison and with me today is Autumn Nash and Lauren Long.

9
00:00:43,329 --> 00:00:44,349
How's it going, Lauren?

10
00:00:44,599 --> 00:00:44,919
Great.

11
00:00:45,179 --> 00:00:46,059
How are you guys doing?

12
00:00:46,554 --> 00:00:47,364
We're doing great.

13
00:00:47,385 --> 00:00:48,574
We are excited to talk to

14
00:00:48,834 --> 00:00:48,925
you.

15
00:00:49,065 --> 00:00:51,394
We are going to yaml indent our way through this

16
00:00:51,394 --> 00:00:53,934
host list of things that you do at Ampersand.

17
00:00:53,955 --> 00:00:55,264
Can you tell us about Ampersand?

18
00:00:55,444 --> 00:00:57,605
Oh, wait, why are you being mean to us?

19
00:00:57,845 --> 00:00:59,394
I'm trying to throw in a pun at the beginning

20
00:00:59,394 --> 00:01:02,084
of every show and there's a yaml on their homepage.

21
00:01:02,135 --> 00:01:02,444
No, no.

22
00:01:02,714 --> 00:01:04,765
That was a really good joke.

23
00:01:04,765 --> 00:01:05,925
I'm very impressed.

24
00:01:07,110 --> 00:01:10,120
See, we can, and like, I just look at the YAML list and I'm

25
00:01:10,120 --> 00:01:12,490
like, that is just, we're, we're going to go through this today.

26
00:01:12,490 --> 00:01:12,860
So,

27
00:01:12,960 --> 00:01:13,190
okay.

28
00:01:13,190 --> 00:01:13,750
Tell us about your

29
00:01:13,750 --> 00:01:14,240
company.

30
00:01:14,789 --> 00:01:15,229
Sure.

31
00:01:15,259 --> 00:01:18,329
So we use YAML as we just mentioned, uh, Ampersand

32
00:01:18,360 --> 00:01:21,430
is a developer platform for building integrations.

33
00:01:21,700 --> 00:01:23,459
So we help SAS builders.

34
00:01:23,500 --> 00:01:26,970
We help AI engineers integrate with systems

35
00:01:27,000 --> 00:01:29,280
of records that their customers have.

36
00:01:29,520 --> 00:01:32,380
So some examples could be, you need to read

37
00:01:32,389 --> 00:01:35,410
sales data from someone's Salesforce or HubSpot.

38
00:01:35,710 --> 00:01:39,740
Or you want to read customer support data from someone's Zendesk.

39
00:01:39,779 --> 00:01:41,869
And these kind of integrations are kind of

40
00:01:41,869 --> 00:01:44,020
hard to build and they're hard to maintain.

41
00:01:44,390 --> 00:01:47,800
So instead of doing that in house with your engineering team, you

42
00:01:47,800 --> 00:01:52,860
can use our configuration driven YAML spec to build an integration.

43
00:01:53,110 --> 00:01:58,000
We also offer components like an embeddable UI library, a dashboard for

44
00:01:58,009 --> 00:02:01,899
monitoring and doing customer support, and you can essentially focus

45
00:02:01,899 --> 00:02:05,230
your engineering efforts on the parts that make your product special

46
00:02:05,390 --> 00:02:08,649
and leave the integrations piece and the data movement piece to us.

47
00:02:08,820 --> 00:02:10,850
I appreciate that you call out that, you know,

48
00:02:10,850 --> 00:02:13,140
you say, write your integrations in code.

49
00:02:13,375 --> 00:02:15,415
With a screenshot of YAML, literally just saying

50
00:02:15,415 --> 00:02:17,255
that YAML is code and we're all okay with this.

51
00:02:17,255 --> 00:02:18,845
And that's, I'm 100 percent on board.

52
00:02:18,845 --> 00:02:20,644
Like if you're writing YAML, own it.

53
00:02:20,655 --> 00:02:21,704
Like this is, this is code.

54
00:02:21,725 --> 00:02:23,365
And also a little bit of shade on the drag and

55
00:02:23,365 --> 00:02:25,344
drop editors right there too, which is cool.

56
00:02:25,565 --> 00:02:29,065
What sort of infrastructure software, like what's on the back end there?

57
00:02:29,065 --> 00:02:30,175
Like how are you designing that?

58
00:02:30,185 --> 00:02:33,524
Is this, is this YAML spec an artifact of like,

59
00:02:33,524 --> 00:02:36,075
we're, we're writing Kubernetes manifest for you?

60
00:02:36,344 --> 00:02:38,315
Or is there something else going on here?

61
00:02:38,605 --> 00:02:42,554
Great question in terms of our, our, our stack underneath the hood.

62
00:02:42,565 --> 00:02:44,084
So we run on Google cloud.

63
00:02:44,105 --> 00:02:45,285
We use Kubernetes.

64
00:02:45,334 --> 00:02:46,845
I'm an ex Google engineer.

65
00:02:46,845 --> 00:02:47,449
Call

66
00:02:47,449 --> 00:02:48,054
it

67
00:02:48,054 --> 00:02:48,734
out from the start.

68
00:02:49,695 --> 00:02:53,515
Dude, Lauren's just, she is a superhero out here.

69
00:02:54,505 --> 00:02:57,975
So, you know, we use a lot of, a lot of, uh, technology that, uh, you guys

70
00:02:57,984 --> 00:03:02,515
have already talked about on the show previously, we use Google compute engine.

71
00:03:02,875 --> 00:03:06,645
Uh, we use temporal, uh, which is an open source

72
00:03:06,665 --> 00:03:10,745
product that is helping us with the orchestration piece.

73
00:03:10,745 --> 00:03:13,355
It helps with the workflow executions and

74
00:03:13,355 --> 00:03:15,555
some of the scheduling piece that we do.

75
00:03:15,575 --> 00:03:18,455
And it also helps us with retry logic, things like that,

76
00:03:18,605 --> 00:03:21,245
a bunch of other technologies I'm happy to dive into.

77
00:03:21,245 --> 00:03:26,295
But we were very heavy on the scalable and open source technologies.

78
00:03:26,815 --> 00:03:28,175
I don't think we even started with like, we started with

79
00:03:28,175 --> 00:03:30,015
your name and the company, what's your position there?

80
00:03:30,145 --> 00:03:30,415
Yeah.

81
00:03:30,445 --> 00:03:32,185
So I am the co founder and CTO.

82
00:03:32,584 --> 00:03:35,584
How did you, how did you decide like this was a problem?

83
00:03:35,674 --> 00:03:37,714
Like if you're a founder, you're going to build this thing.

84
00:03:37,725 --> 00:03:40,544
Like you were at Google, I'm assuming for before, and

85
00:03:40,544 --> 00:03:42,214
you're just like, I need to go build something else.

86
00:03:42,214 --> 00:03:44,794
And this is the thing that looks like it needs to be built.

87
00:03:45,005 --> 00:03:47,405
So I was on the Firebase team at Google.

88
00:03:47,454 --> 00:03:52,364
Firebase is a developer platform, and I was leading the Cloud Functions

89
00:03:52,364 --> 00:03:56,625
product, and then I led the launch of a new product called Firebase Extensions.

90
00:03:56,915 --> 00:04:00,494
So Firebase Extensions is a marketplace of prepackaged

91
00:04:00,494 --> 00:04:04,644
solutions that help Firebase apps add additional functionality.

92
00:04:04,885 --> 00:04:09,505
With the click of a button, as we say, and a lot of those additional packages

93
00:04:09,515 --> 00:04:14,315
that we developed that were the most popular end up being integrations related.

94
00:04:14,435 --> 00:04:16,115
So they were doing things like.

95
00:04:16,565 --> 00:04:21,515
Integrating with Stripe or integrating with Twilio and we realized through that

96
00:04:21,515 --> 00:04:26,955
process that integration is actually a very hard problem and be something that

97
00:04:26,955 --> 00:04:30,995
if you did it right, developers are very happy to offload to a third party.

98
00:04:31,224 --> 00:04:34,454
What I had realized while building that product was a lot of what

99
00:04:34,454 --> 00:04:37,455
we were doing was helping people integrate with their own tools.

100
00:04:37,655 --> 00:04:40,625
So Stripe is your app with your own Stripe instance.

101
00:04:40,655 --> 00:04:42,735
Twilio is your app with your own Twilio instance.

102
00:04:43,205 --> 00:04:45,575
But what's even harder is if you have to now

103
00:04:45,575 --> 00:04:47,885
integrate with your customers, different tools.

104
00:04:48,205 --> 00:04:50,655
So if you're building integration with your customer's

105
00:04:50,685 --> 00:04:53,785
notion, each customer's notions will look very different.

106
00:04:53,785 --> 00:04:57,404
And you're not, you now have this exponential problem that you have

107
00:04:57,404 --> 00:05:00,485
to solve in terms of all the customizations everyone wants to do.

108
00:05:00,715 --> 00:05:04,585
And this becomes even more the case in tools like Salesforce and PubSpot.

109
00:05:04,600 --> 00:05:07,760
Spot these heavily configurable, heavily customizable

110
00:05:07,770 --> 00:05:10,910
tools where everyone's salesforce set up looks different.

111
00:05:10,950 --> 00:05:13,420
They're gonna have custom objects, custom fields.

112
00:05:13,800 --> 00:05:17,500
And if you are a SAS engineer trying to build integrations

113
00:05:17,500 --> 00:05:19,850
for that works well with all of your customers.

114
00:05:20,140 --> 00:05:21,340
You're going to just spend all of your time

115
00:05:21,340 --> 00:05:23,110
doing that and still not be able to keep up.

116
00:05:23,230 --> 00:05:26,080
So you really need a dedicated platform like Ambers

117
00:05:26,080 --> 00:05:28,150
and that will take care of that complexity for you.

118
00:05:28,420 --> 00:05:32,400
So you can work with clean data, normalized data to build the

119
00:05:32,400 --> 00:05:35,909
additional magic that your app will do on top of that data.

120
00:05:36,400 --> 00:05:40,309
Can you describe one of those, like a common integration that people are doing?

121
00:05:40,370 --> 00:05:42,939
Like when I tie these two, these two things together,

122
00:05:42,939 --> 00:05:46,820
Salesforce, like, is it bringing Salesforce people into

123
00:05:46,830 --> 00:05:49,219
notion or what are those sort of integrations look like?

124
00:05:49,875 --> 00:05:51,875
There's a lot of AI companies now, and a lot of

125
00:05:51,875 --> 00:05:54,545
them are solving sales and marketing problems.

126
00:05:54,555 --> 00:05:57,065
So they're helping people do outbound better.

127
00:05:57,075 --> 00:05:58,774
They're helping people to do cold calls.

128
00:05:58,774 --> 00:06:01,465
They're helping people to do lead scoring.

129
00:06:01,765 --> 00:06:05,234
And for any of those AI agents to do their work well,

130
00:06:05,405 --> 00:06:08,544
they need to access the data that already exists.

131
00:06:08,554 --> 00:06:11,735
So if a salesperson has already put lead data into

132
00:06:11,735 --> 00:06:15,755
their CRM, the agent needs to know what those leads are.

133
00:06:15,755 --> 00:06:15,954
All right.

134
00:06:16,025 --> 00:06:18,955
And then be the agent needs to be able to write data back.

135
00:06:18,965 --> 00:06:23,015
So the agent goes off and enriches the data with additional data sources.

136
00:06:23,015 --> 00:06:25,495
Maybe it does some pulling together from linked in

137
00:06:25,505 --> 00:06:28,385
from the Internet and add some additional context.

138
00:06:28,945 --> 00:06:31,335
There's now a need to write back to the CRM.

139
00:06:31,365 --> 00:06:32,804
So then the human agent.

140
00:06:33,184 --> 00:06:36,054
Who then looks at that data later can see this nice

141
00:06:36,155 --> 00:06:38,885
view of all the context that has been collected.

142
00:06:39,044 --> 00:06:42,814
So you need that bi directional integration of both reading and

143
00:06:42,814 --> 00:06:47,594
write in order for these agentic workflows to actually work well.

144
00:06:48,195 --> 00:06:50,644
And then under the hood, you say you're using

145
00:06:50,694 --> 00:06:53,835
Temporal, you're using Kubernetes, you're using GCP.

146
00:06:54,115 --> 00:06:55,215
What, how does that plug together?

147
00:06:55,215 --> 00:06:57,605
Like, if I look at your, again, go just go to the

148
00:06:57,605 --> 00:07:00,695
homepage example, I see a schedule in there, right?

149
00:07:00,695 --> 00:07:04,435
It's like star slash 10, like every 10 minutes and

150
00:07:04,435 --> 00:07:06,625
then every 10 days, it's going to trigger something.

151
00:07:07,405 --> 00:07:08,594
What does that look like?

152
00:07:08,615 --> 00:07:09,934
I mean, that's a cron job, right?

153
00:07:09,934 --> 00:07:13,905
But is that like temporal then goes and fires off a Kubernetes

154
00:07:13,935 --> 00:07:17,235
pod that has your integrations connected into it and then

155
00:07:17,235 --> 00:07:19,224
says, Oh, I suck in this data and stick it over there.

156
00:07:19,435 --> 00:07:19,775
Yeah.

157
00:07:19,775 --> 00:07:20,645
Great question.

158
00:07:20,645 --> 00:07:22,495
So what we've tried to do is.

159
00:07:22,800 --> 00:07:25,920
We've tried to find the commonalities between all of our

160
00:07:25,920 --> 00:07:30,060
integrations and build the framework around those common patterns.

161
00:07:30,250 --> 00:07:33,430
So we integrate with over 100 different SAS products.

162
00:07:34,035 --> 00:07:38,205
And what we found is there's some patterns there, so there's

163
00:07:38,245 --> 00:07:42,005
kind of the more structured data, so the CRMs and the marketing

164
00:07:42,005 --> 00:07:45,795
automation and the customer support tools, where you can essentially

165
00:07:45,795 --> 00:07:49,735
almost think of it as a giant database, and each table represents

166
00:07:49,744 --> 00:07:52,054
a different concept, and there's rows inside of these tables.

167
00:07:52,415 --> 00:07:55,015
And then there's more semi structured data, like Notion or

168
00:07:55,015 --> 00:07:58,765
Slack, where it's more content heavy, and within a document, you

169
00:07:58,765 --> 00:08:00,669
might have different information, and then it's more structured.

170
00:08:00,670 --> 00:08:08,250
And then if you go even further down the, uh, structured side, you have

171
00:08:08,250 --> 00:08:11,309
just, you know, data warehouses and databases and things like that.

172
00:08:11,420 --> 00:08:14,959
So once once you, you can squint at a tool and figure out

173
00:08:14,969 --> 00:08:18,400
which pattern it fits into, you can also figure out what

174
00:08:18,400 --> 00:08:21,340
are the, Interactions that someone wants to do with it.

175
00:08:21,350 --> 00:08:22,640
So I mentioned read and write.

176
00:08:22,730 --> 00:08:25,900
We also have subscribe, which is more like real time updates of getting

177
00:08:25,900 --> 00:08:29,020
notified whenever something changes in the, in the source system.

178
00:08:29,390 --> 00:08:32,819
Out of those, you have things like synchronous behavior,

179
00:08:32,840 --> 00:08:36,049
so when you want to do a write and then get a result back

180
00:08:36,049 --> 00:08:38,189
right away to know whether or not the write succeeded.

181
00:08:38,505 --> 00:08:44,405
You have asynchronous things, you have scheduled things, and with those common

182
00:08:44,445 --> 00:08:48,805
patterns, we're able to build abstractions for them within our own system.

183
00:08:48,944 --> 00:08:51,594
And some of those abstractions are built using Temporal.

184
00:08:51,765 --> 00:08:55,414
When you do do a scheduled read within our integrations,

185
00:08:55,414 --> 00:08:58,695
for example, we do kick off a Temporal schedule.

186
00:08:59,005 --> 00:09:01,495
And that schedule has a bunch of input

187
00:09:01,495 --> 00:09:04,205
parameters in it that tells it which SAS tool.

188
00:09:04,444 --> 00:09:08,834
It's going to read from what are the configuration that it

189
00:09:08,834 --> 00:09:11,954
needs to know about that either the sass builder or the end

190
00:09:11,954 --> 00:09:17,105
customer has specified and with that input is able to then

191
00:09:17,275 --> 00:09:22,415
follow some instructions in order to get the output that we need.

192
00:09:22,464 --> 00:09:26,745
And then we have another part of our system that's more pub sub

193
00:09:26,745 --> 00:09:30,645
based that does data transformation that does the relay of the data.

194
00:09:30,900 --> 00:09:32,600
To the sass builder.

195
00:09:32,770 --> 00:09:37,240
So I guess at a high level, we've tried to find patterns

196
00:09:37,240 --> 00:09:40,750
in terms of how these sass products operate as well as

197
00:09:40,750 --> 00:09:42,870
patterns in terms of how people want to integrate with them.

198
00:09:43,070 --> 00:09:46,750
And then we've built frameworks around it internally in our platform.

199
00:09:47,380 --> 00:09:48,929
Why'd you choose temporal?

200
00:09:48,930 --> 00:09:51,330
Like it seems like it's a, it's a workflow engine.

201
00:09:51,340 --> 00:09:52,580
It can, it can do a lot of stuff.

202
00:09:52,580 --> 00:09:56,230
And there's a bunch of things that do stuff like that, right?

203
00:09:56,400 --> 00:09:58,020
I mean, you could, you could do that with Jenkins.

204
00:09:58,020 --> 00:09:59,290
You could do it with Kubernetes jobs.

205
00:09:59,290 --> 00:10:00,159
You could do it with all these things.

206
00:10:00,159 --> 00:10:02,020
You do bash scripts and cron job, whatever.

207
00:10:02,020 --> 00:10:03,660
Like, why'd you go down that route?

208
00:10:03,790 --> 00:10:06,329
Especially if you're coming from working at

209
00:10:06,329 --> 00:10:09,490
Google, you had a, like PubSub exists there.

210
00:10:09,500 --> 00:10:12,510
Like you could fire off something and have it come, you know,

211
00:10:12,510 --> 00:10:14,699
read the queue and do it all manually with functions, right?

212
00:10:14,699 --> 00:10:16,630
Like some people would try to build that from scratch.

213
00:10:16,694 --> 00:10:20,984
And we definitely considered it, but ultimately we landed on temporal

214
00:10:21,004 --> 00:10:27,035
because it does a lot more than than just the execution of the workflows.

215
00:10:27,234 --> 00:10:31,785
It also has a dashboard that's very easy for us to debug.

216
00:10:31,844 --> 00:10:35,214
So if we have a customer support request and someone says

217
00:10:35,285 --> 00:10:38,025
this integration isn't running, can you look into it?

218
00:10:38,025 --> 00:10:40,074
We can very easily query our temporal

219
00:10:40,074 --> 00:10:42,265
dashboard, figure out exactly what happened.

220
00:10:42,265 --> 00:10:45,905
What are the errors that got logged so that Customer support

221
00:10:45,905 --> 00:10:49,215
piece was really handy and also has a bunch of other functions

222
00:10:49,314 --> 00:10:51,985
that would have taken us time to build like retry logic.

223
00:10:52,015 --> 00:10:55,254
We can be pretty specific about what are the conditions for retry?

224
00:10:55,255 --> 00:10:56,744
What are the conditions for not retry?

225
00:10:56,744 --> 00:10:58,555
And what's the schedule for retry?

226
00:10:58,744 --> 00:11:02,475
And we can also manually trigger retries within the UI pretty easily.

227
00:11:02,614 --> 00:11:04,534
All that we could have built but it would have just taken

228
00:11:04,534 --> 00:11:07,425
a lot longer to build than using something out of the box.

229
00:11:07,945 --> 00:11:10,175
I know a lot of people that have done that with like step functions, right?

230
00:11:10,175 --> 00:11:12,495
Like they're like, Oh, look, some functions has a retry.

231
00:11:12,505 --> 00:11:13,425
I'm just going to use that.

232
00:11:13,425 --> 00:11:16,455
And it's just like, well, like it's not, it's not the best interface for it.

233
00:11:16,465 --> 00:11:19,504
It's a, it's a pretty low level sort of like, if you didn't

234
00:11:19,505 --> 00:11:22,274
catch the exact error, you might have some problems there.

235
00:11:22,545 --> 00:11:24,284
Temporal is firing off these jobs.

236
00:11:24,285 --> 00:11:25,405
It's getting that configuration.

237
00:11:25,405 --> 00:11:26,385
It's doing that data.

238
00:11:26,694 --> 00:11:28,194
And you have hundreds of integrations.

239
00:11:28,194 --> 00:11:28,664
You say, really?

240
00:11:28,665 --> 00:11:32,305
It's like anyone can integrate any of these two SAS platforms together.

241
00:11:32,680 --> 00:11:36,440
And a lot of it sounds like a more business friendly Zapier

242
00:11:36,470 --> 00:11:38,950
or if this than that, if people remember those tools, right?

243
00:11:38,950 --> 00:11:40,660
It's like, Oh, we can tie these APIs together in

244
00:11:40,670 --> 00:11:43,080
magical ways and just let you be creative with it.

245
00:11:43,529 --> 00:11:45,830
And some of those are usually prescribed

246
00:11:45,830 --> 00:11:47,480
and they're like, Oh, you have to do it.

247
00:11:47,519 --> 00:11:48,979
Like if this and that was very structured,

248
00:11:48,979 --> 00:11:51,260
you can only do certain fields, Zapier.

249
00:11:51,280 --> 00:11:54,470
And what's the there's Microsoft has a not power tools.

250
00:11:54,470 --> 00:11:55,900
It's power automation.

251
00:11:55,970 --> 00:11:57,630
Um, whatever the tool is called now where

252
00:11:57,630 --> 00:11:59,220
it's like, yeah, I can, I can tie this API.

253
00:11:59,220 --> 00:12:02,240
I can have some runner and then I can call another

254
00:12:02,290 --> 00:12:04,410
API and like, hopefully somewhere in the middle there,

255
00:12:04,420 --> 00:12:07,200
if it fails, what challenges do you have with that?

256
00:12:07,200 --> 00:12:09,370
I mean, like, obviously there's a ton of challenges tied together,

257
00:12:09,370 --> 00:12:13,000
hundreds of APIs, but like, what do you wish it would do?

258
00:12:13,010 --> 00:12:14,570
What do you, what is the thing you're missing or

259
00:12:14,570 --> 00:12:16,940
this thing like, Oh, we need to improve in this area.

260
00:12:17,200 --> 00:12:18,210
That's a great question.

261
00:12:18,230 --> 00:12:21,270
I think our biggest challenges haven't been in forever related.

262
00:12:21,400 --> 00:12:25,490
I think that for tools that we chose have served as well, um, is really just.

263
00:12:25,615 --> 00:12:28,325
The API is we integrate with, sometimes we scratch

264
00:12:28,325 --> 00:12:31,045
our heads as to why certain design choices were made.

265
00:12:33,094 --> 00:12:37,005
You know, why do they, or certain choices just, you know, came about

266
00:12:37,005 --> 00:12:40,184
because no one made them before we started the company, I never thought

267
00:12:40,194 --> 00:12:43,694
that there were so many ways of authenticating to an API, it turns

268
00:12:43,694 --> 00:12:47,105
out there's a lot, and there's a lot of nonstandard ways of doing it.

269
00:12:47,224 --> 00:12:51,334
Not everyone follows OAuth and people that claim to follow it sometimes

270
00:12:51,334 --> 00:12:55,405
will require extra parameters, extra headers you have to pass in that.

271
00:12:55,690 --> 00:12:58,520
Now it's some bespoke code you have to write.

272
00:12:58,530 --> 00:13:00,540
So I think really just the inconsistency

273
00:13:01,140 --> 00:13:04,060
between APIs has been the most surprising.

274
00:13:04,150 --> 00:13:06,110
And you can definitely tell that for certain

275
00:13:06,110 --> 00:13:08,040
companies their API was an afterthought.

276
00:13:08,070 --> 00:13:09,430
That it was not well designed.

277
00:13:10,429 --> 00:13:13,779
How do you deal with the different APIs and kind of

278
00:13:13,839 --> 00:13:16,620
trying to keep it all uniformed for your product?

279
00:13:16,640 --> 00:13:17,980
And how you take everything in?

280
00:13:18,160 --> 00:13:21,910
We have an open source connectors library and as a part of that we've also

281
00:13:21,910 --> 00:13:27,515
tried to develop what are the set of Configuration that we need to know for each

282
00:13:27,515 --> 00:13:32,935
API, and what are things that can live in a configuration file versus in code.

283
00:13:33,124 --> 00:13:36,604
So each of our providers, we call them the APIs we integrate with,

284
00:13:36,624 --> 00:13:40,964
will have a configuration file that has certain things that are common.

285
00:13:40,964 --> 00:13:43,124
Like what is the base URL for an API?

286
00:13:43,310 --> 00:13:46,550
What are the headers you have to pass in when you're making a request?

287
00:13:46,550 --> 00:13:51,689
What kind of API key or OAuth tokens does it accept?

288
00:13:51,700 --> 00:13:54,129
Those are things we can have some structure around.

289
00:13:54,439 --> 00:13:58,140
And then there's things like pagination logic or errors.

290
00:13:58,170 --> 00:14:00,819
Like some API has returned 200 okay, no matter what.

291
00:14:02,189 --> 00:14:03,990
Here's your error JSON 200 okay.

292
00:14:04,340 --> 00:14:04,980
Exactly.

293
00:14:04,980 --> 00:14:05,520
Exactly.

294
00:14:05,520 --> 00:14:07,290
So then you have to actually write code to be able

295
00:14:07,340 --> 00:14:10,730
to read the nested structure inside of the body to.

296
00:14:10,745 --> 00:14:12,435
figure out if it was actually an error or not.

297
00:14:12,435 --> 00:14:13,755
So those are things that live in code.

298
00:14:13,765 --> 00:14:16,835
So, uh, we've had to kind of make a decision as to what

299
00:14:16,835 --> 00:14:19,635
are things that are common, that can be configuration.

300
00:14:19,835 --> 00:14:22,085
What are the things that actually just have to be code.

301
00:14:22,365 --> 00:14:25,324
And we try it as much as we can to push everything to configuration.

302
00:14:25,334 --> 00:14:27,965
But of course, sometimes, uh, there's a lot of code to be written also.

303
00:14:28,225 --> 00:14:30,695
There's always that one part that just has to be different.

304
00:14:30,695 --> 00:14:31,495
And you're like, but why?

305
00:14:31,845 --> 00:14:33,285
Yeah, yeah, exactly.

306
00:14:33,725 --> 00:14:35,615
I think the distinction between like, this is

307
00:14:35,615 --> 00:14:38,555
just some data and this is some software, right.

308
00:14:38,555 --> 00:14:39,825
And being able to.

309
00:14:40,130 --> 00:14:41,590
Not always clearly define it.

310
00:14:41,590 --> 00:14:42,260
Like it's, it's hard.

311
00:14:42,260 --> 00:14:45,849
Cause at some points it was like shift, like some, some of the data, like you

312
00:14:45,860 --> 00:14:49,020
think it's a URL, but actually like, Oh, that's a different URL in this case.

313
00:14:49,030 --> 00:14:52,449
So I need data or I need software to change that at some point.

314
00:14:52,449 --> 00:14:54,699
And you have to shift some data into software and some

315
00:14:54,699 --> 00:14:56,620
software can be like, Oh, this is just a common pattern.

316
00:14:56,819 --> 00:14:58,279
We can stick it in the config file.

317
00:14:58,960 --> 00:15:00,740
How does, how does your API.

318
00:15:00,755 --> 00:15:02,305
For that change over time, right?

319
00:15:02,305 --> 00:15:06,205
Cause like you don't control Salesforce's API and if they

320
00:15:06,215 --> 00:15:08,785
change their configuration, Hey, we have a version two.

321
00:15:09,005 --> 00:15:13,604
Now you have to update what things are data and which ones are code.

322
00:15:13,604 --> 00:15:15,724
Is that just, okay, user, go figure it out.

323
00:15:15,724 --> 00:15:17,864
We're going to migrate you at some points, or is that

324
00:15:18,074 --> 00:15:20,285
like, you're going to try to hide that as much as possible?

325
00:15:20,710 --> 00:15:26,170
Our approach so far has been we hide that from our builders so they have

326
00:15:26,170 --> 00:15:30,869
one consistent interface to work with and we handle whatever needs to get

327
00:15:30,869 --> 00:15:35,719
changed in order to move on to the next version in a breaking change scenario.

328
00:15:35,909 --> 00:15:37,209
And so far that has worked out.

329
00:15:37,485 --> 00:15:41,505
I think in the future, we may encounter scenarios where we want to

330
00:15:41,665 --> 00:15:45,225
actually support two versions of an API, in which case there would be in

331
00:15:45,225 --> 00:15:49,845
our YAML file a way for builders to opt into going to the next version

332
00:15:49,855 --> 00:15:53,964
ahead of time, for example, but I think we'd like to avoid that as much

333
00:15:53,964 --> 00:15:57,475
as possible and just give people one consistent thing to work with.

334
00:15:57,765 --> 00:16:00,675
A lot of the problems you're describing here, just remind me of

335
00:16:00,714 --> 00:16:05,814
Amazon, like AWS, all of the 200 services, the APIs are not consistent.

336
00:16:05,834 --> 00:16:09,275
And then they threw out whatever the version two SDKs and

337
00:16:09,275 --> 00:16:11,535
everything like, Oh, you got to opt into this new SDK.

338
00:16:11,535 --> 00:16:13,044
By the way, it breaks a bunch of stuff.

339
00:16:13,365 --> 00:16:17,425
And, and, and then some services didn't support it the same way.

340
00:16:17,425 --> 00:16:18,885
And some things had different ways to do auth.

341
00:16:19,770 --> 00:16:24,360
That's a lot of just like stuff to maintain and figure out for yourself.

342
00:16:24,390 --> 00:16:26,370
Like, if you're trying to hide that from a customer, it's like, I'm

343
00:16:26,370 --> 00:16:29,860
going to give you a clean interface to all these other services.

344
00:16:29,860 --> 00:16:30,829
That's consistent.

345
00:16:31,690 --> 00:16:34,629
That's just a lot of like, you have to keep track of

346
00:16:34,630 --> 00:16:37,340
versions, not only for only versions for the SAS, but like

347
00:16:37,349 --> 00:16:40,830
versions of possibly even like customer per SAS, right?

348
00:16:40,830 --> 00:16:43,370
Because some customers might have newer versions of

349
00:16:43,380 --> 00:16:45,290
the APIs depending on how they signed up or when they

350
00:16:45,290 --> 00:16:48,040
signed up or what access they have into that platform.

351
00:16:48,040 --> 00:16:48,290
Right.

352
00:16:48,290 --> 00:16:48,334
Okay.

353
00:16:48,545 --> 00:16:50,715
I almost think that's your value prop, though.

354
00:16:50,775 --> 00:16:51,355
Exactly!

355
00:16:51,355 --> 00:16:51,885
You got it!

356
00:16:52,745 --> 00:16:54,625
Because people are always like, Oh, well,

357
00:16:54,625 --> 00:16:56,555
I'll just build it myself and it's cheaper.

358
00:16:56,595 --> 00:16:59,445
And not just that, but like, a lot of products are built by people

359
00:16:59,445 --> 00:17:02,805
that have great ideas, but they don't know how to implement them.

360
00:17:02,835 --> 00:17:04,754
And this is one of those things where you can tell.

361
00:17:05,494 --> 00:17:08,845
You were a former engineer at a high level because you've dealt with that

362
00:17:08,845 --> 00:17:12,744
problem probably, and you know that it's going to break something else.

363
00:17:12,795 --> 00:17:16,675
So you've made it in a way that completely makes it worth paying that

364
00:17:16,675 --> 00:17:19,994
cost because it's going to make it so much easier on your developer.

365
00:17:19,994 --> 00:17:22,825
So a lot of times you're like, why are we solving this problem?

366
00:17:22,825 --> 00:17:24,065
Because nobody asked you for that.

367
00:17:24,065 --> 00:17:26,555
This is something that you know, you can point directly to

368
00:17:26,555 --> 00:17:30,504
the value of your product to make a developer's life easier.

369
00:17:30,895 --> 00:17:33,835
Like you've made it where they're not making consistent, like

370
00:17:33,885 --> 00:17:37,235
over and over and over again changes to their applications.

371
00:17:37,245 --> 00:17:39,125
You're making it where they can focus on what

372
00:17:39,125 --> 00:17:41,835
they actually are building and not all these APIs.

373
00:17:41,865 --> 00:17:45,915
Like that's a huge value that you know that every time somebody updates

374
00:17:45,934 --> 00:17:49,575
these multiple APIs, you're not breaking somebody else's product.

375
00:17:49,745 --> 00:17:50,175
Totally.

376
00:17:50,175 --> 00:17:51,565
Autumn, can we hire you for marketing?

377
00:17:51,565 --> 00:17:52,905
I got you, girl.

378
00:17:52,905 --> 00:17:53,744
I got you.

379
00:17:53,744 --> 00:17:55,765
You know, but you're spot on.

380
00:17:55,805 --> 00:17:58,225
And I think that's kind of the trap that some people.

381
00:17:59,345 --> 00:18:01,405
If they haven't built with these APIs

382
00:18:01,425 --> 00:18:03,245
before, they'll think, how hard could it be?

383
00:18:03,275 --> 00:18:04,505
You know, the API is documented.

384
00:18:04,505 --> 00:18:05,515
I'll just go ahead.

385
00:18:05,695 --> 00:18:07,974
I mean, like integrating two things is, is pretty easy.

386
00:18:08,155 --> 00:18:10,095
Integrating five things is a little more difficult.

387
00:18:10,144 --> 00:18:14,634
Integrating a hundred things over a year is extremely difficult, right?

388
00:18:14,635 --> 00:18:16,494
Like those things aren't just like linear.

389
00:18:16,494 --> 00:18:17,555
This is a little bit harder now.

390
00:18:17,555 --> 00:18:20,595
It's like, Oh, that old software that no one knows how this.

391
00:18:20,655 --> 00:18:21,535
The code works anymore.

392
00:18:21,535 --> 00:18:22,925
It's still using the old API.

393
00:18:22,935 --> 00:18:24,885
Someone has to go in and figure it out and then

394
00:18:24,885 --> 00:18:26,715
break it and then make sure it works again.

395
00:18:26,875 --> 00:18:26,935
It's not

396
00:18:26,935 --> 00:18:28,615
even just putting two things together, though.

397
00:18:28,615 --> 00:18:31,985
You can completely denormalize your data if APIs change.

398
00:18:32,004 --> 00:18:32,615
You know what I mean?

399
00:18:32,615 --> 00:18:36,365
You can break multiple steps of a process.

400
00:18:36,395 --> 00:18:36,965
Like it's.

401
00:18:37,190 --> 00:18:41,590
You're talking about, I think right now, or during zero interest

402
00:18:41,590 --> 00:18:44,090
rates, people kind of were ideophares and they're just like, I have

403
00:18:44,120 --> 00:18:46,420
an idea and I'm going to make this startup and you're like, but why?

404
00:18:47,100 --> 00:18:47,889
You know what I mean?

405
00:18:48,230 --> 00:18:51,460
And now we're kind of getting to the point where like, we, I think

406
00:18:51,510 --> 00:18:54,260
people are being more thoughtful about why they're starting companies.

407
00:18:54,260 --> 00:18:55,619
I mean, some people aren't, but whatever.

408
00:18:56,030 --> 00:18:59,160
And I think like, it's been like a long time since like, we've seen

409
00:18:59,190 --> 00:19:03,319
people really solve a problem that you can point directly to how that

410
00:19:03,640 --> 00:19:07,660
adds value to your developers and think about the engineering hours

411
00:19:07,680 --> 00:19:12,360
that people spend trying to fix something when an API breaks stuff.

412
00:19:12,389 --> 00:19:14,240
Like you can take down half of an app.

413
00:19:14,250 --> 00:19:17,930
You can completely like, not even just the big breaking changes,

414
00:19:18,000 --> 00:19:21,889
small erosions of your data normalization can completely

415
00:19:21,889 --> 00:19:26,020
cause re architectures and re fracturing of your application.

416
00:19:26,030 --> 00:19:26,649
You know what I mean?

417
00:19:27,110 --> 00:19:29,320
So the fact that for one, you're going to

418
00:19:29,320 --> 00:19:31,100
give them two different options, right?

419
00:19:31,449 --> 00:19:34,629
So they can then check it out, figure out what kind of

420
00:19:34,629 --> 00:19:36,889
change they want to do, but roll it back if they need to.

421
00:19:36,990 --> 00:19:41,000
Your company is giving such value to people trying to use it

422
00:19:41,000 --> 00:19:43,979
because how many apps are just a bunch of APIs under it and taking

423
00:19:43,979 --> 00:19:47,149
in data and then giving people a useful way to do it, right?

424
00:19:47,149 --> 00:19:47,459
So,

425
00:19:47,500 --> 00:19:49,379
but Autumn, we write, we call it AI and then

426
00:19:49,379 --> 00:19:52,060
it's, uh, sorry, let's just talk about that.

427
00:19:52,090 --> 00:19:53,990
You are three APIs in a good

428
00:19:53,990 --> 00:19:54,500
idea.

429
00:19:54,500 --> 00:19:56,360
That's not just throwing AI on something.

430
00:19:56,595 --> 00:20:01,885
Y'all, people who are startup founders, hire Lauren as an advisor.

431
00:20:01,915 --> 00:20:05,605
She'll give you good ideas and not just putting AI on things.

432
00:20:05,605 --> 00:20:07,444
Cause like, but this is exciting.

433
00:20:07,444 --> 00:20:08,875
It is a full value.

434
00:20:08,875 --> 00:20:12,115
Like you can walk in and tell somebody, these are the ways that

435
00:20:12,115 --> 00:20:14,644
I can make your business better for paying me this small fee.

436
00:20:14,644 --> 00:20:16,405
Like I'd give you a big fee for that.

437
00:20:16,655 --> 00:20:19,535
You can directly and at like business meetings,

438
00:20:19,535 --> 00:20:22,955
say this bottom line versus your developer hours.

439
00:20:22,955 --> 00:20:23,615
You know what I mean?

440
00:20:23,615 --> 00:20:24,985
That's like, that's an easy sell.

441
00:20:25,150 --> 00:20:27,920
In a meeting, you know, when you're trying to get money for something.

442
00:20:28,000 --> 00:20:29,640
And I think that's amazing.

443
00:20:29,960 --> 00:20:32,870
Lauren, what, what did you learn in this process of building

444
00:20:32,870 --> 00:20:35,540
this as a product and selling it and everything else?

445
00:20:35,540 --> 00:20:39,300
Like you probably went in thinking this is going to be easy to do this

446
00:20:39,310 --> 00:20:41,989
part of it, or something was going to be hard and maybe it wasn't.

447
00:20:42,000 --> 00:20:43,849
What, what have you learned through this process?

448
00:20:44,340 --> 00:20:48,629
So I, I like to compare and contrast this with my past experiences and I'll

449
00:20:48,629 --> 00:20:52,960
compare with Firebase because that, that was where I spent a lot of my career.

450
00:20:53,250 --> 00:20:57,039
And I, and I, what I realized is Firebase was a primarily developer

451
00:20:57,039 --> 00:21:00,670
facing product and our buyers were developers or users were developers.

452
00:21:01,079 --> 00:21:03,210
And I had thought that for Ampersand, that would

453
00:21:03,210 --> 00:21:05,080
be the case also, because that's what we do.

454
00:21:05,090 --> 00:21:07,360
We help developers build their applications,

455
00:21:07,639 --> 00:21:09,300
build integrations faster and better.

456
00:21:09,685 --> 00:21:12,625
But what we're actually realizing is developers aren't

457
00:21:12,645 --> 00:21:15,455
the only people that are affected by this problem.

458
00:21:15,715 --> 00:21:19,864
It's actually a lot of other folks like people who are trying to sell that

459
00:21:19,864 --> 00:21:23,954
can't close deals because their product is lacking certain integrations

460
00:21:23,955 --> 00:21:29,100
that a customer wants or customer support folks that are having Trouble

461
00:21:29,120 --> 00:21:32,350
responding to customers that complain about integrations because they have no

462
00:21:32,360 --> 00:21:37,190
visibility into why things went wrong is also the founders, the CEOs, people

463
00:21:37,190 --> 00:21:41,950
that are thinking strategically about where they can unlock data sources so

464
00:21:41,950 --> 00:21:46,210
that their application can be more powerful, more usable and do more things.

465
00:21:46,529 --> 00:21:49,370
So it's actually a problem that affects a bunch of people beyond

466
00:21:49,400 --> 00:21:53,410
developers, and that was actually kind of, uh, in hindsight,

467
00:21:53,410 --> 00:21:55,970
obvious, but I didn't know that when we started the company.

468
00:21:55,970 --> 00:21:57,990
So that's been interesting to see also.

469
00:21:58,395 --> 00:22:00,715
What you described there, too, is just like something that a lot

470
00:22:00,715 --> 00:22:04,115
of people that have moved from monoliths to microservices, they're

471
00:22:04,115 --> 00:22:06,565
like, Oh, well, now I need to integrate all these microservices,

472
00:22:06,585 --> 00:22:09,555
all the databases somewhere I need to, my application needs to do a

473
00:22:09,555 --> 00:22:12,935
bunch more work to take a bit from that one and a bit from that one.

474
00:22:12,975 --> 00:22:15,995
And a lot of what you're doing is the same sort of like we're moving

475
00:22:15,995 --> 00:22:19,455
data around and we're making sure that enough data isn't enough places

476
00:22:19,715 --> 00:22:22,205
to make it hopefully useful for whoever's trying to consume that.

477
00:22:22,205 --> 00:22:24,654
Cause back in the, we have one database, go to

478
00:22:24,654 --> 00:22:26,815
the Oracle database and get all of your data.

479
00:22:27,360 --> 00:22:30,090
This 80 table join, uh, you'll be fine.

480
00:22:30,090 --> 00:22:32,500
And now we're like, Oh no, we need to, we need to pull those apart.

481
00:22:32,500 --> 00:22:35,780
Even though it's a different part of the business doing

482
00:22:35,780 --> 00:22:37,459
that, it's, if it's like you say, it's, if it's not the

483
00:22:37,460 --> 00:22:40,340
developer directly, they don't know why that's a problem.

484
00:22:40,340 --> 00:22:44,259
They don't know why that's hard to do and enabling them to say,

485
00:22:44,260 --> 00:22:46,910
Oh, get that little bit of data over here and then call this one.

486
00:22:46,940 --> 00:22:49,900
And then you can get your full reports, your, your internal application,

487
00:22:49,900 --> 00:22:53,320
your API, your page can have everything you need to do your job.

488
00:22:53,885 --> 00:22:56,805
But sometimes it is the developer or you're another part

489
00:22:56,805 --> 00:22:59,835
of the business and you're taking all those APIs to put

490
00:22:59,835 --> 00:23:02,665
it in that one database to serve multiple microservices.

491
00:23:02,665 --> 00:23:03,335
So it's like,

492
00:23:03,465 --> 00:23:04,985
don't get me started on microservices.

493
00:23:04,985 --> 00:23:06,424
I'll pull in from the same database.

494
00:23:06,424 --> 00:23:07,254
That's just, uh,

495
00:23:08,964 --> 00:23:12,565
argue microservices and monoliths when you're like talking about

496
00:23:12,575 --> 00:23:14,795
the same exact thing and nobody knows what they're talking about.

497
00:23:17,295 --> 00:23:19,155
Where do you think besides the.

498
00:23:19,565 --> 00:23:23,545
APIs on all these providers are sometimes garbage.

499
00:23:24,104 --> 00:23:24,965
Where does it break?

500
00:23:25,024 --> 00:23:26,634
Where does your system like fault?

501
00:23:26,644 --> 00:23:30,284
You say that like in temporal, you get a lot of observability, or at least

502
00:23:30,294 --> 00:23:34,685
you can visualize and retry things to make sure it's going to run again.

503
00:23:34,685 --> 00:23:36,585
But at some point it's like, Oh, that broke.

504
00:23:36,585 --> 00:23:39,875
And we don't know why API change, config change, whatever.

505
00:23:40,445 --> 00:23:43,135
Is that the main portion that like those runners are

506
00:23:43,135 --> 00:23:45,034
still kind of fragile tying these things together?

507
00:23:45,034 --> 00:23:47,965
Or is there somewhere else where you're like, Oh, this needs to get better.

508
00:23:47,965 --> 00:23:49,495
We need, we need to improve.

509
00:23:49,935 --> 00:23:52,495
In a certain area, if you don't have, if

510
00:23:52,495 --> 00:23:53,595
you don't have an answer, that's fine too.

511
00:23:53,605 --> 00:23:55,725
Cause like, that's a, that's usually like, I often

512
00:23:55,735 --> 00:23:57,745
think of it as like, what was the last outage we had?

513
00:23:58,285 --> 00:24:01,325
What was the thing that like, where we got to improve on for next time?

514
00:24:01,325 --> 00:24:03,115
It's like, okay, is that something that

515
00:24:03,475 --> 00:24:06,265
was because we didn't design it properly?

516
00:24:06,265 --> 00:24:08,375
Was that because it was something out of our control?

517
00:24:08,715 --> 00:24:11,154
Was that, you know, how does that affect us?

518
00:24:11,595 --> 00:24:14,205
It could also be how your last release went, because that's a lot of

519
00:24:14,245 --> 00:24:17,615
info is trying to make it better, make the process better the next time.

520
00:24:18,285 --> 00:24:18,684
Yeah.

521
00:24:18,684 --> 00:24:20,135
If I, if I think about the.

522
00:24:20,580 --> 00:24:24,450
The last outage we had, and we, we since solved that

523
00:24:24,450 --> 00:24:28,560
problem, was we have autopilot mode set up on our Kubernetes.

524
00:24:28,759 --> 00:24:32,069
And essentially what that means is when we have certain metrics that it

525
00:24:32,070 --> 00:24:35,370
measures, and when it's past a certain threshold, it'll automatically scale

526
00:24:35,370 --> 00:24:38,959
up, and then when the metric comes down, it'll automatically scale down.

527
00:24:39,120 --> 00:24:40,900
And it worked, and that was great.

528
00:24:41,030 --> 00:24:44,430
But we, our code didn't really handle the scale down part very well.

529
00:24:44,440 --> 00:24:48,689
So when it scaled down, some of our processes were, didn't handle the

530
00:24:48,740 --> 00:24:53,040
cancellation properly, and kind of just got shut down prematurely.

531
00:24:53,190 --> 00:24:56,200
We've since fixed it, but if I think back to the last thing

532
00:24:56,210 --> 00:24:59,030
we had to fix it for Ys, that was it, handling scaling down.

533
00:24:59,640 --> 00:25:00,840
I think that's really interesting, though,

534
00:25:00,880 --> 00:25:02,750
because nobody ever talks about scaling down.

535
00:25:02,770 --> 00:25:06,029
Everyone's always like, but what if you scale up?

536
00:25:06,029 --> 00:25:08,970
Like, they're always like, but what if we don't have enough capacity?

537
00:25:08,999 --> 00:25:10,120
And nobody talks about.

538
00:25:10,755 --> 00:25:14,335
Trying to anticipate what happens when the capacity goes away

539
00:25:14,335 --> 00:25:17,085
because you don't need it anymore because it is a complete, it is

540
00:25:17,085 --> 00:25:19,935
a whole nother set of problems that people don't always talk about

541
00:25:24,055 --> 00:25:26,005
coming from, I mean, like a lot of people talk

542
00:25:26,015 --> 00:25:28,565
about, like you said, scale up and like cold start.

543
00:25:28,654 --> 00:25:28,904
Right.

544
00:25:28,904 --> 00:25:30,934
And no one talks about the like cold shutdown.

545
00:25:31,135 --> 00:25:32,920
I was like, what happens when we're just like, it's dead.

546
00:25:32,920 --> 00:25:38,115
Like we, we lost that process coming from doing Firebase and cloud functions.

547
00:25:38,125 --> 00:25:39,085
Why Kubernetes?

548
00:25:39,520 --> 00:25:43,100
I obviously considered using Cloud Functions and Cloud

549
00:25:43,100 --> 00:25:46,680
Run and all of the more quote unquote serverless products.

550
00:25:46,810 --> 00:25:50,240
And ultimately we decided to go with Kubernetes

551
00:25:50,270 --> 00:25:53,839
because A, it was just cheaper for what we needed.

552
00:25:53,839 --> 00:25:55,030
Like I think Cloud Functions Whoa,

553
00:25:55,039 --> 00:25:58,950
hold up, like Cloud Functions, that, that, that is a cool story right there.

554
00:25:58,960 --> 00:26:01,250
Just like, cause I tell people all the time.

555
00:26:01,855 --> 00:26:03,065
So much shade right now.

556
00:26:03,105 --> 00:26:04,865
Everybody just sit down, be ready.

557
00:26:04,875 --> 00:26:05,955
Functions are cheap

558
00:26:06,035 --> 00:26:07,355
to a scale limit, right?

559
00:26:07,355 --> 00:26:09,485
And then they're more expensive because it's like you

560
00:26:09,485 --> 00:26:12,204
bid is the most expensive thing you can buy for computes

561
00:26:12,485 --> 00:26:13,655
is the most expensive compute.

562
00:26:13,655 --> 00:26:14,025
Exactly.

563
00:26:14,025 --> 00:26:14,275
Yeah.

564
00:26:14,655 --> 00:26:16,335
As long as you don't use much of it, right?

565
00:26:16,335 --> 00:26:17,695
As long as you're scaling to zero.

566
00:26:17,695 --> 00:26:20,655
And at some point you're like, Hey, I can just do the math in this threshold,

567
00:26:20,705 --> 00:26:24,595
cross the boundary where I have this running all the time, or I have so much

568
00:26:24,595 --> 00:26:28,135
of this stuff running that that expensive compute that's handled for me.

569
00:26:28,274 --> 00:26:29,574
That gives you a lot of value.

570
00:26:29,575 --> 00:26:30,284
Use it all the time.

571
00:26:30,285 --> 00:26:31,915
I tell people all the time, use functions.

572
00:26:31,965 --> 00:26:32,655
Use serverless.

573
00:26:32,905 --> 00:26:33,585
Absolutely.

574
00:26:33,795 --> 00:26:36,735
And then that threshold, you say you're over that threshold where

575
00:26:36,745 --> 00:26:39,515
even coming from a serverless world where you're like, I, you know

576
00:26:39,515 --> 00:26:42,394
that stuff amazingly well, I'm sure like you were just like, you

577
00:26:42,394 --> 00:26:45,775
could build anything you want on top of Firebase and cloud functions.

578
00:26:45,775 --> 00:26:47,494
You're like, ah, we got to go to the Kubernetes routes.

579
00:26:47,775 --> 00:26:50,704
That's essentially the premise of cloud services though, right?

580
00:26:51,085 --> 00:26:54,225
You use cloud services when you're not sure about your

581
00:26:54,225 --> 00:26:56,345
scale and when you're growing and you're still small.

582
00:26:56,510 --> 00:26:56,810
Right?

583
00:26:56,810 --> 00:27:00,400
Like, because it does the heavy lifting of you not having to worry about it.

584
00:27:00,400 --> 00:27:01,320
Undifferentiated.

585
00:27:01,420 --> 00:27:01,920
Yes.

586
00:27:01,960 --> 00:27:02,390
Thank you.

587
00:27:02,910 --> 00:27:05,319
Like, you're not having to worry about those processes.

588
00:27:05,320 --> 00:27:06,940
You figure out where your scale is.

589
00:27:06,950 --> 00:27:10,120
You figure out what your margins are of the capacity that you need.

590
00:27:10,560 --> 00:27:15,959
And then when you get your startup application, whatever, in very stable,

591
00:27:16,079 --> 00:27:19,690
predictable manner, hopefully, you know, or a predictable scale, at least.

592
00:27:20,730 --> 00:27:24,139
Once you're done building that part of your application, then you can spend more

593
00:27:24,139 --> 00:27:28,830
time rebuilding your infrastructure yourself and building it to that capacity.

594
00:27:28,870 --> 00:27:29,830
That is the premise.

595
00:27:30,050 --> 00:27:34,189
It's just because people got hammer happy, just like they are with

596
00:27:34,250 --> 00:27:37,469
AI, with the cloud, and they want it to use the cloud for everything.

597
00:27:37,629 --> 00:27:38,759
And that's not what it's for.

598
00:27:38,949 --> 00:27:39,699
You know what I mean?

599
00:27:39,889 --> 00:27:41,059
Yeah, you got it.

600
00:27:41,069 --> 00:27:42,399
And we do use cloud functions.

601
00:27:42,399 --> 00:27:45,730
Actually, most of our server is run on Kubernetes, but

602
00:27:45,730 --> 00:27:48,860
there are certain parts of our infrastructure that are.

603
00:27:48,989 --> 00:27:49,679
Spiky.

604
00:27:49,689 --> 00:27:52,179
So maybe, you know, once every hour we'll need a

605
00:27:52,179 --> 00:27:54,540
lot of capacity and the rest of the hour is zero.

606
00:27:54,870 --> 00:27:56,090
That's a perfect use case.

607
00:27:57,370 --> 00:27:58,419
Y'all hire Lauren.

608
00:27:58,510 --> 00:27:59,360
Like, can we just talk?

609
00:27:59,439 --> 00:28:02,320
She knows how to do startup ideas that actually

610
00:28:02,349 --> 00:28:05,290
add value that have like that longevity.

611
00:28:05,565 --> 00:28:09,915
And then did you hear her just explain how to use like on prem versus cloud?

612
00:28:10,185 --> 00:28:14,695
Because if one more bro on Twitter tries to tell everybody everything can

613
00:28:14,695 --> 00:28:18,744
be done on prem is just as bad as everything that can be done on cloud.

614
00:28:18,744 --> 00:28:19,904
Do you see how she knows the difference?

615
00:28:19,904 --> 00:28:21,425
Like, Lauren, I love you.

616
00:28:21,595 --> 00:28:22,134
Thank you.

617
00:28:22,175 --> 00:28:23,874
But I think, I think you're absolutely right.

618
00:28:23,894 --> 00:28:26,725
It is, it is just about picking the right tool for the job.

619
00:28:26,735 --> 00:28:28,225
I mean, there is all, there's all these

620
00:28:28,245 --> 00:28:30,585
primitives that you can use and you have to.

621
00:28:30,885 --> 00:28:32,795
Think about your traffic patterns.

622
00:28:32,795 --> 00:28:35,035
Think about what performance characteristics you

623
00:28:35,045 --> 00:28:37,615
need and then pick the right tool for the job.

624
00:28:37,865 --> 00:28:42,334
And I think of it in terms of a spectrum between Cloud Functions, between Cloud

625
00:28:42,335 --> 00:28:47,275
Run, which is running Docker containers, fabulous product, Kubernetes, and then

626
00:28:47,275 --> 00:28:52,820
we're on autopilot mode, so it's almost like the Sort of serverless way of doing

627
00:28:53,520 --> 00:28:54,010
easy.

628
00:28:54,010 --> 00:28:55,629
It's the easy managed Kubernetes sort of

629
00:28:56,010 --> 00:28:56,730
exactly.

630
00:28:56,840 --> 00:28:57,860
Did you start that way?

631
00:28:58,110 --> 00:28:59,950
Was this like, I mean, cause like, did you go into it

632
00:28:59,950 --> 00:29:02,779
saying like, Hey, we know we're going to have this much

633
00:29:03,199 --> 00:29:06,219
usage and we just need to build Kubernetes from the start.

634
00:29:06,520 --> 00:29:09,450
Yeah, we, we, we did do that from the beginning.

635
00:29:09,560 --> 00:29:15,220
And another reason why we decided to do it this way is there are certain things.

636
00:29:15,460 --> 00:29:18,220
that in our product that are ongoing processes that we

637
00:29:18,220 --> 00:29:21,710
need to run and that's not a good fit for Cloud Function.

638
00:29:21,750 --> 00:29:24,250
Cloud Function is better for ephemeral processes.

639
00:29:24,749 --> 00:29:29,135
If Lauren ever sells the startup because she's going to be very successful.

640
00:29:29,135 --> 00:29:31,355
So if she ever sells the startup and she's on the

641
00:29:31,355 --> 00:29:35,285
market, someone hire her, give her so much money.

642
00:29:37,725 --> 00:29:39,345
Autumn's always trying to get people jobs up front.

643
00:29:39,345 --> 00:29:40,175
She's just like, I don't care.

644
00:29:41,670 --> 00:29:45,620
People are out here listening to like, random tech bros on LinkedIn, taking

645
00:29:45,620 --> 00:29:50,300
it as God's word out here, and like, just lighting millions of dollars

646
00:29:50,300 --> 00:29:53,160
on fire, and Lauren's like, yes, I built it the right way the first time.

647
00:29:53,760 --> 00:29:56,140
I also need you to be my personal publicist.

648
00:29:58,840 --> 00:29:59,950
Is anything I said

649
00:29:59,950 --> 00:30:04,720
alive, just out here using common sense and technical

650
00:30:04,720 --> 00:30:06,970
skill to actually build things the correct way.

651
00:30:06,970 --> 00:30:09,070
Not because it's your favorite tool in the box.

652
00:30:09,930 --> 00:30:10,480
It's true.

653
00:30:12,040 --> 00:30:13,360
I'm gonna call Lauren the next time some

654
00:30:13,360 --> 00:30:15,470
dude tries to argue with me on LinkedIn.

655
00:30:15,560 --> 00:30:15,670
All

656
00:30:15,670 --> 00:30:15,900
right.

657
00:30:15,930 --> 00:30:16,360
I'm here.

658
00:30:16,370 --> 00:30:17,190
I'm here for you.

659
00:30:19,390 --> 00:30:22,360
Does, uh, does temporal put all the glue, all those things together?

660
00:30:22,380 --> 00:30:24,860
Like, is it just like, Oh, this piece runs in Kubernetes.

661
00:30:24,860 --> 00:30:26,170
This piece runs on cloud functions.

662
00:30:26,170 --> 00:30:27,480
This one's cloud run.

663
00:30:27,580 --> 00:30:30,070
So Temporal is an orchestrator is not compute.

664
00:30:30,180 --> 00:30:32,409
So it doesn't actually care where you

665
00:30:32,410 --> 00:30:33,760
can trigger all of those jobs.

666
00:30:33,760 --> 00:30:35,780
And you just say like, Oh, this one is this

667
00:30:35,800 --> 00:30:37,730
cron job that fires off at the top of the hour.

668
00:30:37,920 --> 00:30:39,210
We're going to do functions for that because

669
00:30:39,210 --> 00:30:40,600
it's, everyone's going to do it right now.

670
00:30:40,600 --> 00:30:40,900
Right?

671
00:30:41,150 --> 00:30:42,970
You could, it would be a little tougher

672
00:30:42,970 --> 00:30:45,020
to use temporal inside of cloud functions.

673
00:30:45,020 --> 00:30:46,490
Cause you do have to initialize.

674
00:30:46,755 --> 00:30:49,905
The client that will listen to the temporal orchestrator.

675
00:30:49,915 --> 00:30:53,985
So if you had a cloud function, you'd have to kind of initialize it every time.

676
00:30:54,055 --> 00:30:56,585
It is actually far easier to use temporal with

677
00:30:56,605 --> 00:30:59,535
Kubernetes, um, or something else that doesn't shut down.

678
00:30:59,625 --> 00:31:01,965
That agent has to check back in and check on those jobs.

679
00:31:01,965 --> 00:31:02,685
Makes a lot of sense.

680
00:31:02,745 --> 00:31:03,345
Exactly.

681
00:31:03,365 --> 00:31:03,585
Yeah.

682
00:31:04,005 --> 00:31:07,215
I think that's what, like, what Oren just said is also really true.

683
00:31:07,215 --> 00:31:10,815
People think of these products and magical terms, right?

684
00:31:10,845 --> 00:31:13,355
But they're all compute and orchestration and

685
00:31:13,355 --> 00:31:15,225
like, they're like, you know, it's the same stuff.

686
00:31:15,485 --> 00:31:16,345
Database, networking,

687
00:31:16,345 --> 00:31:18,075
compute is tied together in a different way.

688
00:31:18,365 --> 00:31:19,255
Exactly.

689
00:31:19,275 --> 00:31:22,155
And it's like when you're solving a math problem, right?

690
00:31:22,325 --> 00:31:24,605
something in calculus or just, I don't

691
00:31:24,605 --> 00:31:27,315
know how you bake a certain type of recipe.

692
00:31:27,315 --> 00:31:27,715
Like, right.

693
00:31:27,715 --> 00:31:28,965
Like if you're going to do a croissant, you're

694
00:31:28,965 --> 00:31:30,855
going to, you need the butter to be flaky.

695
00:31:30,855 --> 00:31:33,975
Like they're all recipes for something, but you're,

696
00:31:34,055 --> 00:31:36,445
it's how you glue all these things together.

697
00:31:36,445 --> 00:31:39,485
And I think if we looked at it in like a non bias way,

698
00:31:39,485 --> 00:31:41,705
like that, how are we going to glue the compute together?

699
00:31:41,715 --> 00:31:43,175
How are we going to have it orchestrated?

700
00:31:43,195 --> 00:31:43,605
And like.

701
00:31:43,815 --> 00:31:45,315
It would make our job so much

702
00:31:45,315 --> 00:31:46,054
easier.

703
00:31:46,055 --> 00:31:49,855
And no matter what Google search AI tells you, don't put glue in your recipes.

704
00:31:50,355 --> 00:31:51,335
Did it tell you that?

705
00:31:51,335 --> 00:31:51,895
It was telling

706
00:31:51,985 --> 00:31:53,355
people to put glue in their

707
00:31:53,365 --> 00:31:53,535
recipes.

708
00:31:53,605 --> 00:31:55,315
It did tell people to eat glue.

709
00:31:55,315 --> 00:31:58,345
Is that what you put in your cookies yesterday, Justin?

710
00:31:58,345 --> 00:32:00,785
My cookies were bad for I don't know what.

711
00:32:01,045 --> 00:32:02,045
She's funny too.

712
00:32:02,045 --> 00:32:06,635
Lauren does type two fun.

713
00:32:06,875 --> 00:32:10,635
She is a great engineer and she just threw shade at Justin.

714
00:32:10,835 --> 00:32:11,215
Look.

715
00:32:11,540 --> 00:32:12,760
Me and Lauren are best friends now.

716
00:32:12,790 --> 00:32:13,220
I'm sorry.

717
00:32:13,550 --> 00:32:16,960
It sounds like so many things have gone right during this process.

718
00:32:16,980 --> 00:32:18,920
What is something that a customer has done that

719
00:32:18,920 --> 00:32:21,600
surprised you or you're like, you are holding it wrong?

720
00:32:21,610 --> 00:32:25,400
Like the iPhone, like no you did this wrong and maybe

721
00:32:25,400 --> 00:32:27,750
that's our fault because we gave you too much leash maybe

722
00:32:27,750 --> 00:32:30,040
that's because you just don't know what you're doing.

723
00:32:30,050 --> 00:32:32,560
But what's something that a customer has surprised you doing with this tool?

724
00:32:32,790 --> 00:32:36,150
Customers surprise me all the time and they're not wrong.

725
00:32:36,210 --> 00:32:37,180
They're not holding it wrong.

726
00:32:37,210 --> 00:32:40,080
I just didn't realize that was a way of holding it.

727
00:32:40,400 --> 00:32:43,440
You can't see Lauren's face, but her face, like I felt it

728
00:32:45,220 --> 00:32:46,920
just, just the, like, I can see her in a

729
00:32:46,920 --> 00:32:48,570
customer call says, Oh, that's interesting.

730
00:32:49,040 --> 00:32:49,280
Right.

731
00:32:49,310 --> 00:32:50,490
That is just like the most.

732
00:32:50,490 --> 00:32:51,620
Oh, okay.

733
00:32:51,670 --> 00:32:51,960
Hasn't

734
00:32:51,990 --> 00:32:52,710
had that moment.

735
00:32:52,710 --> 00:32:54,330
You're just like, Oh, Oh really?

736
00:32:54,420 --> 00:32:55,050
Oh, wow.

737
00:32:55,060 --> 00:32:55,310
Okay.

738
00:32:55,310 --> 00:33:00,410
I guess that's what we're doing.

739
00:33:01,620 --> 00:33:05,480
Also, Justin, you're not allowed to send anybody cookies as a thank you gift.

740
00:33:06,030 --> 00:33:08,470
Oh no, my, my baking is not, is not good.

741
00:33:09,235 --> 00:33:11,535
We need you to ask for help and go to the grocery store.

742
00:33:12,585 --> 00:33:14,295
Was there anything that like one of those customers

743
00:33:14,295 --> 00:33:16,315
did though that was like, Oh, we should build that in.

744
00:33:16,665 --> 00:33:20,725
Like, oh, that's, that's a surprising thing that you did that maybe originally I

745
00:33:20,725 --> 00:33:23,195
thought was wrong, but now that's like, oh, that's gonna be our feature, right?

746
00:33:23,205 --> 00:33:24,495
Like someone else is gonna want to do that.

747
00:33:24,795 --> 00:33:27,375
Yeah, recently we had a customer ask for

748
00:33:27,605 --> 00:33:30,775
permissions for write and read to be split up.

749
00:33:30,785 --> 00:33:33,705
So, so normally we use the same permission model for.

750
00:33:34,125 --> 00:33:37,585
Both read and write, and it's based on the user who is

751
00:33:37,585 --> 00:33:40,775
using integration, and then they asked for a use case where

752
00:33:40,775 --> 00:33:44,185
they want the read to happen through an admin account.

753
00:33:44,205 --> 00:33:46,445
So it has full access, whereas they want the

754
00:33:46,445 --> 00:33:50,235
right to happen as the user's permission set.

755
00:33:50,455 --> 00:33:52,385
So then the right is controlled at the user

756
00:33:52,385 --> 00:33:54,935
level, which It's actually a very good use case.

757
00:33:54,955 --> 00:33:56,925
We just haven't encountered that.

758
00:33:56,925 --> 00:33:57,018
That's

759
00:33:57,018 --> 00:33:58,755
a really good best practices.

760
00:33:59,155 --> 00:34:00,155
Yeah, yeah, definitely.

761
00:34:00,155 --> 00:34:02,595
So, you know, we'll definitely build towards that.

762
00:34:02,605 --> 00:34:04,785
So there's many things like that where we

763
00:34:04,785 --> 00:34:06,815
actually do learn a lot from our customers.

764
00:34:06,815 --> 00:34:09,955
And even though some, some of them, you know, might seem odd

765
00:34:09,955 --> 00:34:12,545
in the beginning, there's a reason why people do it that way.

766
00:34:12,685 --> 00:34:14,185
And it's usually a good reason.

767
00:34:14,945 --> 00:34:17,195
Did you hear that you guys, she has a feedback

768
00:34:17,195 --> 00:34:20,815
loop, hire Lauren, she listens to her customers.

769
00:34:20,855 --> 00:34:24,085
It feels like a lot of the integrations, a lot of the pylons

770
00:34:24,085 --> 00:34:26,525
are going to be, you have to now understand their org chart.

771
00:34:26,815 --> 00:34:28,625
And their process, right?

772
00:34:28,625 --> 00:34:31,655
Because a lot of these integrations seem like they're going to fall in that zone

773
00:34:31,655 --> 00:34:35,965
of like, you know, the networking stack has the layer eight is political, right?

774
00:34:35,965 --> 00:34:36,865
And like it's somewhere in there.

775
00:34:36,865 --> 00:34:38,525
You're like, I need to figure out why these two teams

776
00:34:38,525 --> 00:34:41,965
won't talk to each other and to do the thing that would be

777
00:34:41,965 --> 00:34:45,695
easier than than firing off a cron job every five minutes.

778
00:34:45,755 --> 00:34:47,835
That's because people are worse than technology.

779
00:34:47,925 --> 00:34:50,685
Half the like bad problems that happen.

780
00:34:50,685 --> 00:34:53,825
You're just like, bro, who decided that orgs were split

781
00:34:53,825 --> 00:34:55,895
up this way and that you two can't talk to each other?

782
00:34:56,060 --> 00:34:58,970
Yeah, there's definitely a lot of things we have to learn, like, for

783
00:34:58,970 --> 00:35:03,100
example, you know, the how people's relationship with their customers are

784
00:35:03,100 --> 00:35:06,910
we have to learn because We not only have to build a product to cater to

785
00:35:06,910 --> 00:35:11,480
our customers who are the engineers of the SaaS companies, we also have to

786
00:35:11,500 --> 00:35:15,250
cater to their customers so that we have to understand those relationships.

787
00:35:15,280 --> 00:35:16,730
You know, what are their touch points?

788
00:35:16,730 --> 00:35:18,390
Do they do white glove onboarding?

789
00:35:18,400 --> 00:35:20,530
Do they do self serve onboarding and build

790
00:35:20,570 --> 00:35:22,820
the pieces that make those processes happen?

791
00:35:22,950 --> 00:35:25,960
I also personally, just as an engineer who's never

792
00:35:26,090 --> 00:35:30,200
done sales before, have had to learn what a CRM is.

793
00:35:30,400 --> 00:35:31,590
Why do people use it?

794
00:35:31,600 --> 00:35:33,360
What, you know, what is the lead?

795
00:35:33,360 --> 00:35:34,550
What is an opportunity?

796
00:35:34,580 --> 00:35:37,490
So yeah, definitely lots of learning on the non technical front.

797
00:35:38,220 --> 00:35:38,980
Why'd you name it Ampersand?

798
00:35:39,510 --> 00:35:43,800
So we like the name Ampersand because it essentially the vision

799
00:35:43,800 --> 00:35:47,780
we have for the company is to make technology just more connected.

800
00:35:47,790 --> 00:35:51,570
So making it easier for one tool to talk to another so that there is

801
00:35:51,570 --> 00:35:54,990
this connectivity layer between different business applications and

802
00:35:54,990 --> 00:35:59,070
people can build UX workflows, intelligence on top of that layer.

803
00:35:59,270 --> 00:36:02,090
And we think we can really power that connectivity layer.

804
00:36:02,190 --> 00:36:03,810
So the Ampersand symbol.

805
00:36:04,035 --> 00:36:07,535
It would just, and it represents that connectivity piece.

806
00:36:07,765 --> 00:36:09,795
And it also represents the fact that we're

807
00:36:09,815 --> 00:36:13,055
augmenting the engineering capacity of our customers.

808
00:36:13,265 --> 00:36:15,425
So it's as if they have additional engineers on

809
00:36:15,425 --> 00:36:18,295
board that will help them with their integrations.

810
00:36:18,605 --> 00:36:21,395
I, my, my initial thought was this is like, it runs in the

811
00:36:21,405 --> 00:36:23,905
background for you, like a background process at the terminal.

812
00:36:23,905 --> 00:36:26,370
If I put an ampersand at the end, like that process,

813
00:36:26,370 --> 00:36:28,715
that was my initial thought, I'm like, Oh, it's cool.

814
00:36:28,715 --> 00:36:29,835
It's just a background process.

815
00:36:29,835 --> 00:36:30,865
And it does the thing for me.

816
00:36:31,115 --> 00:36:33,745
And then my second thought was, Oh, this is like an improv.

817
00:36:33,875 --> 00:36:34,085
Yes.

818
00:36:34,085 --> 00:36:36,245
And sort of like if you've ever done improv, like

819
00:36:36,245 --> 00:36:37,955
that's the, the prompt that there is, like, oh yes.

820
00:36:37,955 --> 00:36:39,815
And, and so it's like you were just like, yes,

821
00:36:39,845 --> 00:36:41,555
and I can connect you to over here and Yes.

822
00:36:41,555 --> 00:36:42,755
And I can do that other thing.

823
00:36:42,995 --> 00:36:45,035
And, and those are the two places that I, I kind of went.

824
00:36:45,035 --> 00:36:47,885
But I mean, it's like you're gluing all these things together

825
00:36:47,885 --> 00:36:50,945
and just ending all of them instead of oring them, or,

826
00:36:51,005 --> 00:36:53,555
I think it's really smart because it's kind of like you're

827
00:36:53,555 --> 00:36:57,505
the glue that glues all the APIs and pieces together.

828
00:36:57,565 --> 00:36:57,865
You know?

829
00:36:57,925 --> 00:37:00,835
'cause your service is going to make it so much easier for people.

830
00:37:01,220 --> 00:37:02,560
Yeah, yeah, definitely.

831
00:37:02,620 --> 00:37:03,650
Yeah, we are the glue.

832
00:37:03,870 --> 00:37:06,800
We were joking that we should have super glue as our swag.

833
00:37:07,365 --> 00:37:08,565
Like ampersand labeled glue,

834
00:37:09,975 --> 00:37:13,005
. 
I feel like sometimes people name things these like catchy, like

835
00:37:13,005 --> 00:37:16,635
little like symbols and you're like, but that actually really works.

836
00:37:16,845 --> 00:37:19,335
And it's like a cute logo, you know?

837
00:37:19,515 --> 00:37:22,725
But also like it makes sense and then you, I feel like that just opens

838
00:37:22,725 --> 00:37:25,125
you to be able to be like, and then let me tell you why were the glue.

839
00:37:25,245 --> 00:37:25,905
You know what I mean?

840
00:37:25,905 --> 00:37:26,625
So perfect.

841
00:37:26,670 --> 00:37:26,870
Exactly.

842
00:37:26,870 --> 00:37:28,605
You can, you can use it in your recipes.

843
00:37:28,605 --> 00:37:29,175
You can use it too.

844
00:37:29,330 --> 00:37:29,910
Not doing the

845
00:37:29,910 --> 00:37:32,505
food . Just not Justin's cookies though.

846
00:37:33,735 --> 00:37:34,845
What's next for?

847
00:37:35,070 --> 00:37:38,900
The product and for the infrastructure evolution.

848
00:37:39,160 --> 00:37:41,140
So on the product side, we definitely want to

849
00:37:41,190 --> 00:37:44,770
expand into more of these systems of record.

850
00:37:45,010 --> 00:37:47,800
So far, we've been very focused on the go to market vertical.

851
00:37:47,800 --> 00:37:51,500
So building sales and marketing and customer support.

852
00:37:51,975 --> 00:37:55,405
Related integrations, there's a lot of other sass builders

853
00:37:55,405 --> 00:37:57,205
out there who need different types of integrations.

854
00:37:57,205 --> 00:37:58,785
We want to expand our footprint there.

855
00:37:58,905 --> 00:38:02,635
We also want to continue to extend the flexibility of the

856
00:38:02,635 --> 00:38:06,485
platform and make it easier for people to add things like

857
00:38:06,495 --> 00:38:10,955
transformation functions or custom additional mapping support.

858
00:38:10,955 --> 00:38:13,025
We already do a lot in terms of mappings, but I think there's

859
00:38:13,025 --> 00:38:16,810
even more that we could do there to really make it a Highly

860
00:38:16,810 --> 00:38:21,770
flexible, highly extensible, very robust platform for people.

861
00:38:22,150 --> 00:38:25,480
Does that get in the very complex mode of

862
00:38:25,490 --> 00:38:28,480
like embedded some TypeScript inside a YAML?

863
00:38:28,520 --> 00:38:31,280
Like I have a YAML and then I have this TypeScript block and then I have more

864
00:38:31,280 --> 00:38:35,010
like, is that, that, that seems really difficult to do some of those like data

865
00:38:35,010 --> 00:38:39,890
transformations in, in a more, I don't wanna say data only, but in YAML, right?

866
00:38:39,890 --> 00:38:41,890
Like in something that is like this, we don't want

867
00:38:41,890 --> 00:38:44,870
to have this be fully general purpose code here.

868
00:38:45,035 --> 00:38:49,025
Yeah, I think right now we have a Yammer file, but in the future, I definitely

869
00:38:49,025 --> 00:38:53,475
see folks being able to define certain transformations in code using the

870
00:38:53,475 --> 00:38:57,805
language of their choice, and then the artifact of the integrations will be

871
00:38:57,835 --> 00:39:01,665
a directory of different files, not just a single file like we have today.

872
00:39:01,765 --> 00:39:03,725
And then once we go there, that's actually another

873
00:39:03,765 --> 00:39:05,665
good use case for something like cloud functions.

874
00:39:05,675 --> 00:39:08,515
We can have sandbox isolated compute dedicated to a customer.

875
00:39:08,765 --> 00:39:10,645
Without it affecting the rest of our stack.

876
00:39:10,665 --> 00:39:13,215
So that's a potential future direction.

877
00:39:13,395 --> 00:39:18,935
There's also other ways of making maybe pre built transformation functions.

878
00:39:18,935 --> 00:39:23,505
Like certain things are common tasks that SAS companies have to do, like

879
00:39:23,865 --> 00:39:30,450
anonymizing sensitive data or Maybe stitching different data together to get

880
00:39:30,450 --> 00:39:32,035
rid of all that stuff.

881
00:39:32,255 --> 00:39:32,695
Exactly.

882
00:39:32,695 --> 00:39:32,945
Yeah.

883
00:39:32,945 --> 00:39:33,485
Something like that.

884
00:39:33,485 --> 00:39:37,015
I can, I can imagine us having these prebuilt already.

885
00:39:37,015 --> 00:39:39,685
So you just say, okay, I don't have this integration and then

886
00:39:39,685 --> 00:39:43,385
I want this piece of data PII removed, but then I still want

887
00:39:43,385 --> 00:39:47,395
to be able to run my LLM on it and still get all the insights.

888
00:39:47,405 --> 00:39:48,905
So that's something else we can help with.

889
00:39:48,985 --> 00:39:51,155
That's also really spurred the fact that you're going to.

890
00:39:51,455 --> 00:39:55,605
Enable it for customer private, like compute, because a lot of

891
00:39:55,885 --> 00:39:59,615
businesses can't share hosts with other people, you know what I mean?

892
00:39:59,615 --> 00:40:04,035
So if there's a way for you to make it where it would just be that, especially

893
00:40:04,035 --> 00:40:07,265
if for data, data is such a complicated thing because there's different

894
00:40:07,665 --> 00:40:11,085
accreditations and there's FIPS and HIPAA and all those different things.

895
00:40:11,085 --> 00:40:14,405
So depending on how the cloud run would do it, it would be interesting

896
00:40:14,405 --> 00:40:17,545
to see if you can give them all like further different audits and stuff.

897
00:40:18,130 --> 00:40:21,520
Yeah, and that's, yeah, actually another future direction that we

898
00:40:21,520 --> 00:40:26,400
could go in is having Ampersand be deployable on someone's VPC.

899
00:40:26,410 --> 00:40:31,080
So if they don't want the cloud offering making it possible for them to be

900
00:40:31,080 --> 00:40:34,510
able to deploy in their own cloud, it's something else that we're built for.

901
00:40:34,510 --> 00:40:38,220
So we've chosen our stack in order to make that future possible.

902
00:40:38,220 --> 00:40:40,520
It's another reason why we're using open source technologies.

903
00:40:41,020 --> 00:40:44,560
That's actually way better than trying to give them their own dedicated host

904
00:40:44,570 --> 00:40:48,520
and then deploy it for them, because if they already have their own VPC.

905
00:40:48,900 --> 00:40:49,410
How does that work?

906
00:40:49,460 --> 00:40:52,490
Like choosing open source, but also using cloud functions,

907
00:40:52,500 --> 00:40:55,390
like cloud functions, I can't run in Amazon, right?

908
00:40:55,390 --> 00:41:00,590
Like that is a very proprietary interface for running functions somewhere.

909
00:41:00,670 --> 00:41:02,230
How would you export that?

910
00:41:02,230 --> 00:41:04,520
Or I mean, because you have to, like, recreate a new

911
00:41:04,520 --> 00:41:07,440
interface that is portable or rewrite it for Amazon, right?

912
00:41:07,670 --> 00:41:10,570
There are actually frameworks that makes it more portable.

913
00:41:10,740 --> 00:41:13,630
So, so the serverless framework, serverless.

914
00:41:13,630 --> 00:41:17,860
com, that makes cloud function more deployable throughout different clouds.

915
00:41:18,050 --> 00:41:20,430
So, so there's, when we get there, there's,

916
00:41:20,440 --> 00:41:22,340
there's ways we can make it more portable.

917
00:41:22,710 --> 00:41:24,200
Well, Lauren, this has been so much fun.

918
00:41:24,270 --> 00:41:24,990
I've learned a lot.

919
00:41:25,030 --> 00:41:28,480
Where should people find you online if they want to reach out or get in touch?

920
00:41:28,880 --> 00:41:29,760
Yeah, absolutely.

921
00:41:29,760 --> 00:41:32,720
So people can find me on LinkedIn.

922
00:41:32,760 --> 00:41:35,630
Uh, my, my, uh, first and last name, Lauren Long.

923
00:41:35,920 --> 00:41:39,790
I'm also on X slash Twitter, although not as active these days,

924
00:41:39,820 --> 00:41:43,120
but I, I still, uh, will, will respond to folks, uh, there.

925
00:41:43,120 --> 00:41:46,310
So it's Lauren Z Long is the handle.

926
00:41:46,460 --> 00:41:51,260
And yeah, find me on the Ampersand company, LinkedIn, or the Ampersand X.

927
00:41:51,260 --> 00:41:52,570
I monitor those also.

928
00:41:52,890 --> 00:41:54,310
If you ever want to leave X and come over to blue

929
00:41:54,310 --> 00:41:58,150
sky for her to find out now has a guest on the show.

930
00:41:58,170 --> 00:41:59,720
So we have a starter pack for it.

931
00:41:59,730 --> 00:42:02,770
So anyone that is in blue sky, so we're, we're adding those, anyone

932
00:42:02,770 --> 00:42:05,460
that's out there, that's following us, you can check that out.

933
00:42:05,460 --> 00:42:09,980
And we have anyone that is, has been a guest is, is in that starter pack.

934
00:42:09,980 --> 00:42:10,280
So it

935
00:42:10,410 --> 00:42:12,290
even helps me to follow our guests.

936
00:42:12,290 --> 00:42:12,975
Yeah,

937
00:42:12,975 --> 00:42:14,840
it only goes up to 150 though.

938
00:42:14,840 --> 00:42:18,910
So at some point I need to like, switch it over to a, not a list of season

939
00:42:18,940 --> 00:42:19,420
one.

940
00:42:19,725 --> 00:42:20,505
And season two, we could

941
00:42:20,505 --> 00:42:21,085
have years.

942
00:42:21,085 --> 00:42:22,445
Yeah, we have, we could break it out.

943
00:42:22,445 --> 00:42:24,805
Cause we're only going to have 50, uh, 50 years, something like that.

944
00:42:24,915 --> 00:42:27,365
And then we'll bring back like the retro episodes one day.

945
00:42:27,565 --> 00:42:29,145
You can try to get repeat guests too.

946
00:42:29,295 --> 00:42:31,255
And see if like, you can get the whole starter pack collection.

947
00:42:31,635 --> 00:42:34,875
Thank you so much for, for telling us about Ampersand, tell us how

948
00:42:34,875 --> 00:42:37,495
it works and what you do and kind of those challenges around it.

949
00:42:37,495 --> 00:42:38,175
That's been a lot of fun.

950
00:42:38,175 --> 00:42:38,395
So

951
00:42:38,465 --> 00:42:39,874
it was nice meeting you.

952
00:42:39,875 --> 00:42:40,375
so much.

953
00:42:40,385 --> 00:42:41,335
This is a lot of fun.

954
00:42:41,335 --> 00:42:41,775
Yeah.

955
00:42:41,825 --> 00:42:43,285
Great meeting you guys, Justin and Autumn.

956
00:42:43,325 --> 00:42:43,785
Thank you.

957
00:42:44,265 --> 00:42:45,285
Alright, and thank you everyone for

958
00:42:45,285 --> 00:42:46,905
listening, and we will talk to you again soon.

959
00:43:02,245 --> 00:43:05,215
Thank you for listening to this episode of Fork Around and find out.

960
00:43:05,545 --> 00:43:07,705
If you like this show, please consider sharing it with

961
00:43:07,705 --> 00:43:10,885
a friend, a coworker, a family member, or even an enemy.

962
00:43:10,975 --> 00:43:13,075
However we get the word out about this show

963
00:43:13,255 --> 00:43:15,535
helps it to become sustainable for the long term.

964
00:43:15,805 --> 00:43:21,895
If you wanna sponsor this show, please go to fa fo fm slash sponsor and reach

965
00:43:21,895 --> 00:43:25,225
out to us there about what you're interested in sponsoring and how we can help.

966
00:43:26,515 --> 00:43:29,695
We hope your systems stay available and your pagers stay quiet.

967
00:43:30,225 --> 00:43:31,395
We'll see you again next time.