WEBVTT

1
00:00:06.559 --> 00:00:10.560
Hey, Welcome to React Roundup,
the podcast where we keep you updated on

2
00:00:10.679 --> 00:00:15.839
all things React related. This show
is sponsored by Raygun and produced by Top

3
00:00:15.919 --> 00:00:19.399
and Devs and Onvoid. Top and
Devs is very great Top and Devs.

4
00:00:19.440 --> 00:00:23.480
We get top and pay and recognition, but working on interesting problems and making

5
00:00:23.519 --> 00:00:29.399
meaningful community contributions. An Onvoid which
provides remote design and software development services on

6
00:00:29.440 --> 00:00:33.840
a task basis, so clients only
pay when tasks are delivered and approved.

7
00:00:34.359 --> 00:00:40.399
In today's episode, we have a
very special guest which is Max Steiber,

8
00:00:40.880 --> 00:00:47.159
the CEO and co founder of Stalt
and you might know him as the creator

9
00:00:47.320 --> 00:00:53.079
of Styled components. So we're going
to have a very interesting show about his

10
00:00:53.240 --> 00:01:00.799
projects and his career progression from being
a contributor as a developer to the role

11
00:01:00.880 --> 00:01:03.920
that he feels currently. My name
is Lucas Paganini. I'm your host in

12
00:01:03.959 --> 00:01:08.599
the podcast, and joining me in
today's episode are also the amazing hosts Chris

13
00:01:08.760 --> 00:01:18.439
Bruen, Hello everyone, Peter Osa, Hi everyone, And just to give

14
00:01:18.439 --> 00:01:23.680
an opportunity to introduce himself, here
is Max Steiber. Thank you for the

15
00:01:23.680 --> 00:01:27.280
beautiful injury, Lucas. That was
great. I think for people that are

16
00:01:27.319 --> 00:01:30.159
listening in that might have been in
the React ecosystem for a while. I

17
00:01:30.200 --> 00:01:34.120
co created way back when in twenty
fourteen fifteen ish when React with Press release

18
00:01:34.159 --> 00:01:38.920
React boilerplates, which at the time
was maybe the best way to manage whippak.

19
00:01:38.079 --> 00:01:42.640
This is now ancient technology because afterwards, very quickly people realized that that

20
00:01:42.799 --> 00:01:45.799
was boilerplates were maybe not the best
way to do that, and create React

21
00:01:45.799 --> 00:01:48.840
that came around, and later of
course Nick Chase and Gatsby and all these

22
00:01:48.840 --> 00:01:53.519
meta frameworks and remix of course,
and then as part of that also later

23
00:01:53.599 --> 00:01:57.079
on I co created stock components,
which is a CSS and j's library that

24
00:01:57.120 --> 00:02:00.640
got very widely adopted because it moved
see this as closer to the components.

25
00:02:01.040 --> 00:02:04.359
So for people that have been in
the reacting ecosystem for a while, you

26
00:02:04.400 --> 00:02:06.079
might have heard of some of these, you might have even used some of

27
00:02:06.079 --> 00:02:08.639
these. Uh, and later on
a transition to founding a startup in the

28
00:02:08.639 --> 00:02:13.960
graphical space called Stillates. So happy
to talk about any and all of those

29
00:02:14.000 --> 00:02:20.039
things today. Nice, Well,
let's get started, So why don't you

30
00:02:20.159 --> 00:02:24.960
give us a little bit of history
and context, Like I'm sure that if

31
00:02:25.000 --> 00:02:30.520
I just say, let's go from
the beginning. Then I'm not sure if

32
00:02:31.400 --> 00:02:40.800
ye five hours here, but I'm
thinking perhaps, like most people are gonna

33
00:02:40.840 --> 00:02:45.599
at least most people listening to this
episode are probably going to know you as

34
00:02:45.639 --> 00:02:49.960
the creator of stock components, just
because it's so widely adopted in the React

35
00:02:49.960 --> 00:02:53.639
community. And well, we're talking
about React developers here, so perhaps we

36
00:02:53.680 --> 00:02:59.280
could start with that, and well, why did you created this library,

37
00:02:59.400 --> 00:03:05.280
and how the process of like this
in itself was kind of a successful business,

38
00:03:05.360 --> 00:03:08.520
right like, not necessarily bringing you
money, but it was a product

39
00:03:08.639 --> 00:03:15.759
that you created and you needed it
to create traction. So there were many

40
00:03:15.759 --> 00:03:22.400
different solutions for the same problem that
style Components was solving, and for some

41
00:03:22.479 --> 00:03:28.879
reason, the most of the developers
preferred your solution. And I wonder if

42
00:03:28.919 --> 00:03:38.439
this was entirely organic or if there
were any more directed and strategic steps from

43
00:03:38.479 --> 00:03:45.479
your part to make this library successful. Yeah. Style Components came to be

44
00:03:45.479 --> 00:03:47.919
because I was working at a company
and we were building a sort of usable

45
00:03:47.919 --> 00:03:53.560
component library called elementally Wife, and
as part of that, we wanted to

46
00:03:53.599 --> 00:03:55.439
publish this component library to impment I
have other people be able to use it.

47
00:03:55.520 --> 00:04:00.080
Right This is, you know,
sort of an internal science system we

48
00:04:00.120 --> 00:04:03.000
wanted external people to be able to
use. But very quickly back in those

49
00:04:03.039 --> 00:04:06.680
days, we started to realize that
there was no very consistent way of distributing

50
00:04:06.800 --> 00:04:13.159
CSS with the component library because ultimately
what people mostly did in those days is

51
00:04:13.199 --> 00:04:16.560
they used webpac and configured it to
publish CSS modules right, which required setting

52
00:04:16.600 --> 00:04:20.079
up a webpac loader correctly with all
these options. But the problem is if

53
00:04:20.639 --> 00:04:25.040
our users of these component library didn't
use CSS modules, suddenly they had to

54
00:04:25.040 --> 00:04:28.600
add this webpac configuration and it messed
up all of the rest of their CSS

55
00:04:28.680 --> 00:04:30.079
right. If they were doing CSS
in another way, suddenly they had this

56
00:04:30.120 --> 00:04:32.560
extra webpac loader that would conflict with
the way that they were doing CSS,

57
00:04:32.600 --> 00:04:35.800
and they would just break everything.
And so basically the component library essentially wasn't

58
00:04:35.839 --> 00:04:41.319
really reusable outside of our specific use
case. And so that was the initial

59
00:04:41.360 --> 00:04:44.839
problem that we started with. And
I met Glenn Maddon, who's the co

60
00:04:44.920 --> 00:04:47.279
creator of CSS modules and then co
created style Components with me, and we

61
00:04:47.319 --> 00:04:51.279
started talking about this problem and we
realized that there'd been this at a time

62
00:04:51.560 --> 00:04:58.839
recent new innovation around moving CSS into
javascripts. Particularly GSS was one of the

63
00:04:58.879 --> 00:05:02.879
first library to do this really and
bring this popularity. And the thing that

64
00:05:02.879 --> 00:05:05.720
we didn't like about all the existing
libraries at that point is that they forced

65
00:05:05.759 --> 00:05:12.160
you to write CSS as JavaScript objects, not Jason, but like as objects

66
00:05:12.160 --> 00:05:16.040
in javascripts. Right, And we
love CSS and we still do love CSS,

67
00:05:16.240 --> 00:05:19.600
and the problem with moving it into
objects and what most of these libraries

68
00:05:19.600 --> 00:05:21.920
did attach it as in line styles
is that you lose a lot of the

69
00:05:23.000 --> 00:05:25.519
CSS power. Right. You couldn't
do media queries, you couldn't do harverd

70
00:05:25.519 --> 00:05:28.199
states alias, a lot of that
in JavaScript, and it was sort of

71
00:05:28.519 --> 00:05:31.240
a very complex way of doing the
thing that the browser can already do with

72
00:05:31.360 --> 00:05:33.800
CSS. And so we set out
and we were like, hey, what

73
00:05:33.839 --> 00:05:39.399
if we build the CSS and GS
library that just let you write actual CSS

74
00:05:39.439 --> 00:05:44.399
in your JavaScript file. It sounds
slightly ridiculous and preposterous, but actually that

75
00:05:44.519 --> 00:05:46.879
might be a really good way of
distributing the CSS to people because it would

76
00:05:46.920 --> 00:05:50.639
allow us to use all the power
CSS while still people who install the component

77
00:05:50.680 --> 00:05:56.079
library to not have to worry about
whitepack loaders and all that complexity. And

78
00:05:56.160 --> 00:05:59.040
very quickly, the other pop part
we realized also at the time is that

79
00:06:00.040 --> 00:06:01.360
this is you know, very early
on in React to evolution. Right.

80
00:06:01.399 --> 00:06:04.079
The style components came out in twenty
sixteen, I believe over for twenty sixteen,

81
00:06:04.120 --> 00:06:08.079
so this was like two or three
years into React being a publicly available

82
00:06:08.079 --> 00:06:13.680
on Salt projects. It was very
early. And this the other innovation that

83
00:06:13.720 --> 00:06:16.319
we saw takes sort of the industry, or the pattern that we saw take

84
00:06:16.319 --> 00:06:19.639
the industry by steam, was this
concept of having style components, having a

85
00:06:19.639 --> 00:06:23.920
component called a column, having a
component called a row. And often these

86
00:06:23.959 --> 00:06:27.439
components didn't do much other than render
a div or a span and attach a

87
00:06:27.439 --> 00:06:29.600
class name. Right, a column
component doesn't really have to do much more

88
00:06:29.600 --> 00:06:32.040
than that, But that became a
really popular pattern in the React world because

89
00:06:32.120 --> 00:06:34.839
just feels really nice to use,
right. And so then the other innovation

90
00:06:34.920 --> 00:06:39.480
that we coupled with having leading you
write actual CSS in JavaScript is that we

91
00:06:39.560 --> 00:06:43.360
let you write actual cess in JavaScript, but rather than having you deal with

92
00:06:43.399 --> 00:06:46.279
class names, you had to create
a component. For every single sort of

93
00:06:46.360 --> 00:06:49.319
style that you create, you had
to encapsulate it in a component like a

94
00:06:49.319 --> 00:06:55.560
column, like a row, like
a button. And Glenn and I played

95
00:06:55.560 --> 00:06:58.800
around with a bunch of different apies
and ended up with this sort of styled

96
00:06:58.879 --> 00:07:02.439
dotative and then a hacked tempered literal
API that allowed you to write literal CSS

97
00:07:02.439 --> 00:07:08.560
syntax in your jiascript file. And
that was extremely controversial, of course,

98
00:07:08.600 --> 00:07:12.199
because you're now mixing two programming languages
in one file, similar to what React

99
00:07:12.240 --> 00:07:15.600
had done with HTML by moving into
jivascript. We did this very similar thing

100
00:07:15.680 --> 00:07:18.519
with CSS. We moved it into
JavaScript and into components, and half of

101
00:07:18.759 --> 00:07:23.800
half of the industry hated us.
I got so much vitrio for when when

102
00:07:23.839 --> 00:07:26.360
we announced ole components, because people
were like, how can you put CSS

103
00:07:26.399 --> 00:07:29.160
in jolskip? That is ridiculous.
That is the stupidest thing I've ever heard.

104
00:07:29.279 --> 00:07:30.600
The browser is different, it's a
different thing. The browsers up to

105
00:07:30.639 --> 00:07:32.959
Master for having that as a separate
file, like, why messed with that?

106
00:07:33.000 --> 00:07:35.680
You're just you're just making it worse. And the other half of the

107
00:07:35.720 --> 00:07:40.920
audience actually tried it and went,
holy smokes, this feels so much better

108
00:07:40.920 --> 00:07:43.120
to use than any other way I've
ever written cess because I don't have to

109
00:07:43.160 --> 00:07:46.120
worry about the stupid cascade anymore.
I don't have to worry about class names

110
00:07:46.120 --> 00:07:49.079
clashing over anymore. I immediately confined
the CSS that that's affecting my component.

111
00:07:49.120 --> 00:07:53.199
I don't have to go dig through
some CSS file fifty files down. And

112
00:07:53.240 --> 00:07:56.000
so it turns out that that half
of the audience was actually the one.

113
00:07:56.319 --> 00:07:58.839
The one that tried it turned out
to be like, hey, I love

114
00:07:58.920 --> 00:08:01.680
this. I have some performance problems
with it, you know, I'm missing

115
00:08:01.720 --> 00:08:03.000
some APIs to handle these edge cases, but overall, I love it and

116
00:08:03.000 --> 00:08:05.759
I want to make this a thing. And so it ended up growing really

117
00:08:05.839 --> 00:08:09.160
quickly. And to go back to
that sort of the quick summary of that

118
00:08:09.199 --> 00:08:13.000
story that to go back to your
question of what we did that made it

119
00:08:13.040 --> 00:08:16.560
grow, I think it's really two
things that helped stock components become very popular.

120
00:08:16.920 --> 00:08:20.199
One or three things, I should
say. The two things that we

121
00:08:20.240 --> 00:08:24.040
had controlled over were one, we
focused very heavily on making it feel really

122
00:08:24.120 --> 00:08:28.000
nice to use, and in fact, often the initial response that people had

123
00:08:28.120 --> 00:08:31.079
was like, this is stupid,
and then I would always just say go

124
00:08:31.120 --> 00:08:33.320
try it, just go build like
a component with it, and inevitably,

125
00:08:33.360 --> 00:08:35.639
I think one hundred percent of the
time people tried it and it went well,

126
00:08:35.639 --> 00:08:39.360
actually it's kind of stupid, but
it feels really nice. I actually

127
00:08:39.440 --> 00:08:41.759
like using this thing, you know. And then the other thing that we

128
00:08:41.799 --> 00:08:43.000
feel that we really focused heavily on
that. I think a lot of people

129
00:08:43.080 --> 00:08:46.200
in the open source space miss.
A lot of developers in the open source

130
00:08:46.200 --> 00:08:50.320
space miss is that before we released
it, I probably spent twenty percent of

131
00:08:50.360 --> 00:08:56.279
my time writing code and eighty percent
of my time writing documentation. We shipped

132
00:08:56.399 --> 00:09:01.120
with an immense set of documentation comparatively
to how much to how long we worked

133
00:09:01.120 --> 00:09:05.159
on the code, because I knew
that if people, even if it feels

134
00:09:05.200 --> 00:09:07.600
nice us and it's somewhat intuitive,
right, if people get stuck, they're

135
00:09:07.600 --> 00:09:09.559
not going to want to use it. Right. So we needed to have

136
00:09:09.639 --> 00:09:13.159
the documentation to support people actually doing
most of the common things that they needed

137
00:09:13.159 --> 00:09:15.840
to do. And we got to, you know, eighty ninety percent of

138
00:09:15.879 --> 00:09:18.840
covering what people needed to do.
And then the other thing I always say

139
00:09:18.879 --> 00:09:22.600
is when you're building something new,
focus on making it work fast. Then

140
00:09:22.639 --> 00:09:26.440
make it right, and then make
it fast. Any other way doesn't work

141
00:09:26.519 --> 00:09:28.480
because you have to make it work
fast and ship it and ship it fast

142
00:09:28.759 --> 00:09:31.519
because then you get feedback. Right
immediately, we got feedback from people that

143
00:09:31.639 --> 00:09:35.879
was like, hey, I need
these global styles right, this component thing

144
00:09:35.919 --> 00:09:37.600
is great, but I have this
one, you know, I want to

145
00:09:37.639 --> 00:09:41.080
inject normalized CSS through stock components as
well. I have some of these global

146
00:09:41.120 --> 00:09:43.360
slasts that I just need, so
we needed to add an API for that.

147
00:09:43.399 --> 00:09:46.440
And there's many examples, like theming
people were like, well, I

148
00:09:46.480 --> 00:09:48.159
need a slightly different theming APN.
The way theming work doesn't really make sense

149
00:09:48.200 --> 00:09:50.320
to me, Like I have this
use case, can you support it?

150
00:09:50.440 --> 00:09:54.519
And so through that feedback first making
it work, then we were able to

151
00:09:54.519 --> 00:09:56.080
make it right right because we got
the feedback, because we've got people to

152
00:09:56.120 --> 00:09:58.960
come back to us, we were
able to iterate on the library and add

153
00:10:00.159 --> 00:10:01.879
APIs and a trade on the APIs
that we had shipped initially to make it

154
00:10:01.919 --> 00:10:05.799
a really solid, complete experience.
And then finally once it was right,

155
00:10:07.000 --> 00:10:09.960
once we knew we had APIs that
were stable and we were pretty complete,

156
00:10:09.080 --> 00:10:11.159
then we could focus on making it
fast. Right. But if we had

157
00:10:11.159 --> 00:10:13.639
made the old APIs fast, we
would have wasted a whole bunch of time

158
00:10:13.679 --> 00:10:16.399
because they turned out to be the
wrong APIs in the first place, and

159
00:10:16.440 --> 00:10:18.559
so would have just been a pure
waste of time. So always make it

160
00:10:18.600 --> 00:10:22.960
work, make it right, make
it fast. And then finally, this

161
00:10:22.000 --> 00:10:26.679
is something maybe that is not as
easily reproducible. We were just in the

162
00:10:26.759 --> 00:10:31.600
right place at the right time.
Right the React was gaining immense team and

163
00:10:31.639 --> 00:10:35.200
growing really quickly, and everybody that
was using React essentially didn't really have a

164
00:10:35.200 --> 00:10:37.279
solution for CSS. Everybody was using
global CSSCs as much as came around and

165
00:10:37.399 --> 00:10:41.200
was sort of a first solution,
but that had problems attached to it that

166
00:10:41.559 --> 00:10:43.240
some people didn't want to deal with, and so then stock components became the

167
00:10:43.279 --> 00:10:48.879
solutions to those problems and fundamentally just
overtook because as we React grew, stock

168
00:10:48.919 --> 00:10:52.080
components just kind of grew with it. So we also just got lucky on

169
00:10:52.120 --> 00:10:54.440
the timing. I think is a
big part of it that I don't want

170
00:10:54.480 --> 00:10:56.080
to just you know, I don't
want to be like, oh, yeah,

171
00:10:56.080 --> 00:10:58.080
we built a great library and we
wrote documentation and then you know,

172
00:10:58.159 --> 00:11:00.159
whenever you do that it's going to
be success. No, you also have

173
00:11:00.159 --> 00:11:01.799
to have good timing and gift to
solve a really important problem to people at

174
00:11:01.799 --> 00:11:03.840
that time, Right, So there
was a lot of timing and luck involved

175
00:11:03.840 --> 00:11:11.120
as well. I really like what
you said about the effort put into documentation

176
00:11:11.039 --> 00:11:16.120
that is so easy to be overlooked, Like there are so many people out

177
00:11:16.120 --> 00:11:20.840
there that simply they have the best
solution that exists out there, or at

178
00:11:20.919 --> 00:11:26.039
least they think they do, but
you just don't know how to use it.

179
00:11:26.440 --> 00:11:31.759
There's just no documentation. Like I
am also the host of Adventures in

180
00:11:31.799 --> 00:11:37.720
Angler, which is a podcast focused
on Angler development, and one particular feature

181
00:11:37.799 --> 00:11:46.080
of Angler that I absolutely love is
something called contra value assesssor It's a native

182
00:11:46.240 --> 00:11:52.240
way inside the Angler framework for you
to create components that control an input just

183
00:11:52.360 --> 00:11:56.840
like a regular input. So it's
a way for you to create components that

184
00:11:56.879 --> 00:12:03.320
are meant to be used in forms. And it's brilliant, it's so flexible,

185
00:12:03.360 --> 00:12:09.399
it's so powerful, and it's so
undocumented. There is literally no documentation

186
00:12:09.480 --> 00:12:13.320
about it in the entire official docks
of Angler, Like the only thing that

187
00:12:13.360 --> 00:12:18.360
you can see is the actual docs
of the API itself, but there's no

188
00:12:18.519 --> 00:12:22.960
guide on how to use it,
how to extend this functionality. Every article

189
00:12:24.000 --> 00:12:30.559
that exists about it is from other
creators in the Internet that solve the power

190
00:12:30.639 --> 00:12:33.720
of that feature and create a content
about it. And it came to a

191
00:12:33.759 --> 00:12:41.279
point where every senior Angler developer knows
about this feature, and there's still no

192
00:12:41.399 --> 00:12:46.399
mention about the Guides of the Dogs. It's crazy. It's like everybody sees

193
00:12:46.440 --> 00:12:52.360
the value in it, but it's
just not documented. So I really want

194
00:12:52.399 --> 00:12:58.120
to hammer this down. It's so
important for any of you that is currently

195
00:12:58.200 --> 00:13:05.039
creating a library or think about creating
a library. If you are going to

196
00:13:05.080 --> 00:13:09.960
publicly share this library with the open
source community, you need good documentation.

197
00:13:11.240 --> 00:13:16.480
Like it's just currently, this is
a requirement because there are so many other

198
00:13:16.559 --> 00:13:22.480
libraries that get this right currently that
there's just no space for you to ignore

199
00:13:22.559 --> 00:13:26.120
this. But at the same time, there are so many others ignoring it

200
00:13:26.679 --> 00:13:35.080
that just by doing this, you're
narrowing your competitors so much. So definitely

201
00:13:35.240 --> 00:13:39.759
do that. And if you're doing
something internally, it's also interesting to consider

202
00:13:41.000 --> 00:13:48.559
just documented just doc generators and just
using regular JS docs and TS docs and

203
00:13:48.600 --> 00:13:56.519
your functions. You obviously don't need
to write an entire getting started for internal

204
00:13:56.600 --> 00:14:03.720
libraries, but if you could at
least document the main functions and how they

205
00:14:03.720 --> 00:14:07.080
should used, like put up some
examples in it, that's definitely valuable,

206
00:14:07.159 --> 00:14:13.039
not just for open source projects but
also for internal projects. So yeah,

207
00:14:13.279 --> 00:14:18.960
excellent, excellent mention. Yeah,
but if I may object their firsturself Second,

208
00:14:18.039 --> 00:14:22.320
the thing about documentation is that people
often think they need to be write

209
00:14:22.320 --> 00:14:24.440
down how the library works. But
that's actually the part you don't need to

210
00:14:24.440 --> 00:14:26.480
write down, because that's the part
that doesn't matter. But if you think

211
00:14:26.480 --> 00:14:30.879
about style components, it's a cssn
jazz library. So the thing that it

212
00:14:30.919 --> 00:14:33.720
does internally that's sort of the difficult
and gnarly part of style components and implementing

213
00:14:33.759 --> 00:14:37.440
is that it takes the CSS that
you write in your dromascript file, it

214
00:14:37.480 --> 00:14:41.200
parses it because it's written in actual
CSS language, and then it compiles it

215
00:14:41.240 --> 00:14:46.759
into sort of handles like tempo literals, injects the props and the theming,

216
00:14:46.000 --> 00:14:50.759
compiles it to the set of styles
that need to apply to those HTMIL elements,

217
00:14:50.879 --> 00:14:52.639
creates a unique class name, injects
it into the style sheet, into

218
00:14:52.639 --> 00:14:56.679
the dome, and then also manages
the cascade as to how those things relate

219
00:14:56.679 --> 00:15:00.840
to each other, particularly as it
relates to inheritance style components some inheritance features

220
00:15:00.879 --> 00:15:03.080
that requires to manage to cascade in
a certain way so that they work the

221
00:15:03.080 --> 00:15:05.799
way they should. None of that
is documented. If you look at Stetle

222
00:15:05.799 --> 00:15:07.840
componentscgmidation doesn't talk about any of that, because the whole point of it is

223
00:15:07.840 --> 00:15:09.840
that you don't have to think about
it. Right. The whole point is

224
00:15:11.200 --> 00:15:13.320
you just write your sees as in
jovskip, and we figure out how to

225
00:15:13.360 --> 00:15:15.720
get it to the right place and
get to the result that you expect based

226
00:15:15.759 --> 00:15:18.360
on the API. Right, the
whole point is you don't have to care

227
00:15:18.399 --> 00:15:20.200
about it. If we've written documentation
that was like here's how style components work,

228
00:15:20.200 --> 00:15:24.399
here's how it injects nobody, that's
the least interesting part of the documentation.

229
00:15:24.519 --> 00:15:26.639
Right. That is valuable in its
own right in terms of, like,

230
00:15:26.639 --> 00:15:30.120
you know, documenting the architecture,
getting contributors, blah blah blah blah.

231
00:15:30.159 --> 00:15:33.000
But that is a different purpose,
right for users. The whole point

232
00:15:33.039 --> 00:15:35.080
is that that is abstracted the way. The whole punt is that it's an

233
00:15:35.080 --> 00:15:37.759
abstraction where you don't have to think
about any of that. You can write

234
00:15:37.879 --> 00:15:41.360
a certain code where you expect a
certain result, and the library make sure

235
00:15:41.399 --> 00:15:43.559
that the result that you get is
the result that you expect, and that

236
00:15:43.679 --> 00:15:46.200
is the part that you need document. Then is the use case and the

237
00:15:46.200 --> 00:15:50.159
examples and how do I actually use
this to achieve the goal that I have.

238
00:15:50.360 --> 00:15:52.639
If I want to make a theme
from my app where it can quickly

239
00:15:52.679 --> 00:15:56.720
switch between different colors and make it
user customized, well, how do I

240
00:15:56.720 --> 00:15:58.360
add that to my app? Right? If I want to inject global styles

241
00:15:58.399 --> 00:16:02.639
because I need normal I CSS,
how do I do that with style components?

242
00:16:02.679 --> 00:16:04.320
Right? How do I make a
button that's which is color when it

243
00:16:04.399 --> 00:16:07.320
changes variant? Right? All these
things are the things that be documented is

244
00:16:07.320 --> 00:16:10.639
how do you use the library?
And in fact a lot of it was

245
00:16:10.639 --> 00:16:12.080
actually just documenting CSS features. A
lot of it is like how do I

246
00:16:12.120 --> 00:16:15.200
do media cares? You write a
freaking media crery, you know what I

247
00:16:15.279 --> 00:16:18.000
mean? Like it we didn't implement
anything for media carerise, you know,

248
00:16:18.039 --> 00:16:21.600
like we didn't implement media cares in
the or however selectors in CSS, that's

249
00:16:21.639 --> 00:16:23.000
not what we do at all.
We just partial CSS and injected. But

250
00:16:23.240 --> 00:16:26.080
from a user's perspective, right,
when they come to the documentation, what

251
00:16:26.120 --> 00:16:29.279
do they want to get done?
They want to create a media career,

252
00:16:29.320 --> 00:16:30.080
right, they got to create some
mobile staff. They want to add a

253
00:16:30.080 --> 00:16:33.840
horverer style because their buttons has as
a hover style. They want to create

254
00:16:33.840 --> 00:16:36.360
a variant of a button that has
different colors. Or a different outline.

255
00:16:36.679 --> 00:16:38.360
That's what they care about doing,
and so that's what the documentation focuses about.

256
00:16:38.519 --> 00:16:41.799
It's not perfect, but fundamentally,
think about not how does your library

257
00:16:41.799 --> 00:16:45.080
work and what does it do,
because that's the part that shouldn't matter.

258
00:16:45.320 --> 00:16:47.720
It's what is your user trying to
do? And how can you help them

259
00:16:47.720 --> 00:16:49.600
achieve that more quickly through the documentation? How can you help them achieve their

260
00:16:49.600 --> 00:16:53.240
goal? And that goal is hopefully
not to learn about how style comportis SOCSs

261
00:16:53.240 --> 00:16:56.000
injection right, because otherwise you've done
something wrong with your library right and it's

262
00:16:56.039 --> 00:17:02.559
not abstracted enough. That is a
great point. There's a great point.

263
00:17:02.639 --> 00:17:08.440
I definitely saw some libraries explaining their
internals and I always keep that part because

264
00:17:08.480 --> 00:17:12.960
I'm like, I really don't care. I would much rather if you just

265
00:17:14.039 --> 00:17:18.160
put some benchmarks so that I can
see that it is performing. That would

266
00:17:18.240 --> 00:17:22.440
be a lot more interesting to me. But yes, great points. Let's

267
00:17:22.519 --> 00:17:29.599
keep on with the story. Alimax, So cool. Now you created this

268
00:17:29.759 --> 00:17:36.000
library, It got a lot of
traction. Currently, are you still maintaining

269
00:17:36.039 --> 00:17:41.920
it or do you have other people
maintaining it? Do those other developers are

270
00:17:41.960 --> 00:17:48.720
they in your payroll? Like are
people that you hired and you and this

271
00:17:48.880 --> 00:17:53.200
is one of their tasks, or
did you found a way to over time

272
00:17:53.759 --> 00:18:00.920
completely delegate the maintenance of this library
to the open source community as a whole.

273
00:18:00.400 --> 00:18:06.880
How is that? Yeah? Great
question. So initially Glenna I created

274
00:18:06.880 --> 00:18:10.559
the library and then a lot of
the step from making it work to making

275
00:18:10.599 --> 00:18:12.240
it right is that it's the part
that Glenn and I focused on building the

276
00:18:12.319 --> 00:18:15.240
right API is building the right abstractions, making sure that people could do and

277
00:18:15.319 --> 00:18:18.680
achieve the goals that they wanted to
achieve with the libry, making sure that

278
00:18:18.680 --> 00:18:22.640
the result was what they expected.
And then over time other contributors on board

279
00:18:22.720 --> 00:18:25.559
onto the code base because they were
using it, they were loving it,

280
00:18:25.599 --> 00:18:27.119
then they wanted to help make it
better right and their own ideas of what

281
00:18:27.119 --> 00:18:32.440
that means specifically feel even there's a
few people that have really contributed the majority,

282
00:18:32.480 --> 00:18:37.000
even in particular. Eventually, then
later on took over maintenance completely and

283
00:18:37.000 --> 00:18:40.319
did a lot of work on making
it fast and sort of like improving the

284
00:18:40.359 --> 00:18:45.440
performance of it over time by optimizing
it for the way the browsers parts childscript

285
00:18:45.480 --> 00:18:51.200
and the execute jilescript and so over
time, my expertise and Glenn's expertise,

286
00:18:51.200 --> 00:18:53.079
which is I don't want to speak
for Glenn, but my expertise for sure

287
00:18:53.799 --> 00:18:57.400
is around the developer experience, right, and how something can feel and be

288
00:18:57.559 --> 00:19:03.119
as intuitive as possible. And then
I'm not an expert on joscript engine performance,

289
00:19:03.160 --> 00:19:06.440
right, I'm not an expert on
how do I optimize this JavaScript code

290
00:19:06.440 --> 00:19:07.920
to run this efficiently as possible.
I'm not an expert on how do I

291
00:19:07.920 --> 00:19:11.880
inject this thesis in the most efficient
way possible. And that was a lot

292
00:19:11.920 --> 00:19:15.960
of the work that happened later as
the library gain steam. People were like,

293
00:19:15.960 --> 00:19:17.880
hey, look, performance is one
of our concerns, and in fact,

294
00:19:18.119 --> 00:19:19.480
for people that were around back then, emotion was a big driver of

295
00:19:19.480 --> 00:19:22.039
that. Emotion came around and was
like, hey, we implemented style components,

296
00:19:22.119 --> 00:19:26.240
but it's two times faster, and
we were like, wait, what

297
00:19:26.279 --> 00:19:27.039
are they doing differently? But that
is possible, and a lot of it

298
00:19:27.039 --> 00:19:30.519
was STARSCIN engine organizations and then also
more efficient way of injecting cuisis and that

299
00:19:30.640 --> 00:19:36.200
kick started a whole sort of like
spur of energy around hey how can I

300
00:19:36.200 --> 00:19:38.319
make style components faster? And in
fact, eventually style components ended up getting

301
00:19:38.319 --> 00:19:41.279
faster than Emotion ended up getting faster
than stal Components ended up getting faster to

302
00:19:41.279 --> 00:19:45.680
where now performance doesn't matter anymore because
all the libraries are so fast, and

303
00:19:45.720 --> 00:19:48.119
that's a lot of the work that
even and Phil ended up doing, and

304
00:19:48.200 --> 00:19:52.079
they've completely taken over maintenance. I
don't think I've written if you look at

305
00:19:52.079 --> 00:19:53.799
the contributed graph, I don't think
I've written a line of code for style

306
00:19:53.839 --> 00:19:57.680
components since maybe twenty eighteen, twenty
nineteen. I want to say it's been

307
00:19:57.720 --> 00:20:00.839
a long time. And in fact
the library also ended up being very stable.

308
00:20:00.920 --> 00:20:04.000
Right once we had figured out the
APIs and sort of like what is

309
00:20:04.039 --> 00:20:07.680
the API that we want to present
and what is the result that people expect

310
00:20:07.720 --> 00:20:10.519
from that API? There isn't that
much more to do. We had to

311
00:20:10.640 --> 00:20:11.440
you know, there were bugs to
fix, and there were you know,

312
00:20:11.599 --> 00:20:15.960
certain edge cases to iron out,
and again performance was a big, big

313
00:20:15.000 --> 00:20:18.200
focus, and eventually it was just
stable, like it just worked for people,

314
00:20:18.319 --> 00:20:22.160
right. People didn't really run into
problems anymore. It was fast,

315
00:20:22.839 --> 00:20:26.039
it had all the APIs that people
needed, and so the maintenance went over

316
00:20:26.160 --> 00:20:29.839
into really largely Evans hands, Evan
Jacob's on the score probably up on X

317
00:20:29.880 --> 00:20:32.920
on Twitter really took over a lot
of the sort of like long term maintenance

318
00:20:32.920 --> 00:20:34.039
over the last five years, and
it's been the main person sort of like

319
00:20:34.039 --> 00:20:37.799
fixing all these small bugs, making
improvements to the code base, making it

320
00:20:37.839 --> 00:20:40.640
even faster, making it or maintainable, and really pushing a lot of that

321
00:20:40.680 --> 00:20:44.559
forward, while I ended up going
and doing lots of other things. So

322
00:20:44.759 --> 00:20:48.079
it's really in the open source community's
hands. It also never became or we

323
00:20:48.119 --> 00:20:51.599
never tried to make it a business
like it's very much an open source project

324
00:20:51.599 --> 00:20:53.839
that would just shipped because we thought
the world needed it. That we never

325
00:20:53.880 --> 00:20:56.240
really made any money. There's an
open collective that I think over the course

326
00:20:56.279 --> 00:21:00.319
of the last eight years has collected
maybe ten thousand dollars or something to that

327
00:21:00.480 --> 00:21:03.319
in order of magnitude that we never
even spent. It was very much like

328
00:21:03.839 --> 00:21:07.279
we just want the open source community
to have this, and so nobody was

329
00:21:07.319 --> 00:21:11.160
really ever paid to maintain it.
I think there was once a bug bond

330
00:21:11.240 --> 00:21:12.440
that we want to fix and we
want to send somebody to a conference,

331
00:21:12.440 --> 00:21:17.240
and that was the extent of it. We never really paid anybody for it.

332
00:21:17.160 --> 00:21:19.759
It really was very much a community
thing and sort of like ended up

333
00:21:19.920 --> 00:21:23.920
shifting out of my hands and to
people who knew more about the problems that

334
00:21:23.920 --> 00:21:29.880
we were facing later on. I
think most interestingly, the thing that I

335
00:21:29.920 --> 00:21:32.119
live and try to live a free
data is that it is that I default

336
00:21:32.160 --> 00:21:34.319
to open. And what I mean
by that is I default it being open

337
00:21:34.359 --> 00:21:40.119
to new experiences and new opportunities and
sort of like external input and external feedback.

338
00:21:40.440 --> 00:21:42.640
And one of the ways that showed
in my stories that after after we

339
00:21:42.680 --> 00:21:45.759
released start Components, this person that
I had known from online Bring Jackson,

340
00:21:45.799 --> 00:21:48.759
pinned me via Twitter and was like, Hey, we've been using stock components

341
00:21:48.759 --> 00:21:52.079
to build this new product, but
we're running into this weird bug. How

342
00:21:52.079 --> 00:21:55.000
can we fix it? And I
just replied, I was like, hey,

343
00:21:55.119 --> 00:21:56.160
let me just go look at your
copase, I actually don't know why

344
00:21:56.200 --> 00:21:59.880
this bug you're hitting, Like,
I don't have enough context. Just give

345
00:21:59.880 --> 00:22:02.359
me the copies and I'll take a
look at the code. And ended up

346
00:22:02.359 --> 00:22:03.680
looking at the code and that what
they were building. The park they were

347
00:22:03.680 --> 00:22:08.039
building was called Spectrum and was a
community platform for their podcast network. And

348
00:22:08.079 --> 00:22:10.480
I looked at it and I was
like, wait, hold on, I

349
00:22:10.519 --> 00:22:11.880
need this for my open source communities. I need a place for them to

350
00:22:11.880 --> 00:22:15.640
go because at the time Slack had
just sort of kicked out all the communities.

351
00:22:15.839 --> 00:22:18.880
Kitter was a thing, but it
was sort of shitty excuse me for

352
00:22:18.880 --> 00:22:22.680
people that worked on Gether, it
just not a good experience. There was

353
00:22:22.720 --> 00:22:25.519
no real place for open source communities
to hang out. And so I ended

354
00:22:25.559 --> 00:22:27.039
up talking to Brindan Bryan, the
two people who built Spectrum, and I

355
00:22:27.079 --> 00:22:29.880
was like, Hey, I want
to go do this with you, and

356
00:22:29.880 --> 00:22:32.279
I ended up co founding that startup
together with them, and we built this

357
00:22:32.319 --> 00:22:36.519
community platform for developers that was eventually
two years later acquired by kits up and

358
00:22:36.559 --> 00:22:40.799
turned into kits to Discussions, right. But that came to be ostensibly through

359
00:22:40.839 --> 00:22:42.720
style Components and my work on style
Components, but really came to be because

360
00:22:42.759 --> 00:22:45.279
I was open to new opportunities and
I was open to helping people, and

361
00:22:45.279 --> 00:22:48.680
I was open to connecting with people
through that experience of having created this library,

362
00:22:48.720 --> 00:22:55.480
and that kickstarted a lot of my
career. That's amazing. So in

363
00:22:55.519 --> 00:23:02.440
a way, you were like the
designer of the project, and then after

364
00:23:02.519 --> 00:23:07.079
you designed it and you made sure
that it was what the audience wanted,

365
00:23:07.319 --> 00:23:14.319
it was aligned with their expectations and
the best experience possible. Then it's almost

366
00:23:14.359 --> 00:23:19.880
like you handed this design to the
engineers that would maintain it. Right,

367
00:23:21.000 --> 00:23:25.240
of course you actually implemented it,
but just to make an analogy between design

368
00:23:25.319 --> 00:23:30.240
and development, it was pretty much
it. That's an interesting position to be

369
00:23:30.319 --> 00:23:37.039
in because I think a lot of
people think about projects in a way that

370
00:23:37.079 --> 00:23:41.359
they have to code it, they
have to architect it, implement it,

371
00:23:41.440 --> 00:23:48.519
and maintain And it's always good to
take a step back and realize that there

372
00:23:48.559 --> 00:23:55.000
are actually spaces available for every different
type of professional. So you can definitely

373
00:23:55.039 --> 00:24:00.920
be the type of person that enjoys
a lot more the architecture in structuring the

374
00:24:00.960 --> 00:24:07.519
project and designing the APIs and then
kind of leaving the maintenance and the rest

375
00:24:07.559 --> 00:24:15.599
of the implementation to other engineers that
might prefer that better and other people that

376
00:24:15.640 --> 00:24:21.440
we want to refactor this endlessly to
make it to extract as much performance,

377
00:24:21.519 --> 00:24:26.000
juice and broader compatibility as possible.
So really interesting to also keep in mind

378
00:24:26.039 --> 00:24:32.119
that this is a possibility for people. But yeah, let's keep on with

379
00:24:32.200 --> 00:24:38.400
the with the storyline because I'm interested
in how we're now getting into your entrepreneurial

380
00:24:40.799 --> 00:24:48.039
opportunities. Right, So you became
the confounder of Spectrum, and when did

381
00:24:48.119 --> 00:24:52.400
you, like, did you ever
left this position? You left that after

382
00:24:52.519 --> 00:24:57.359
it was bought by GitHub. How
did it came to be for you to

383
00:24:57.400 --> 00:25:02.839
be the founder of Spectrum up until
the point where you are now the CEO

384
00:25:03.079 --> 00:25:07.480
and co founder? Off stallied,
so we Spectrum. Let me we start

385
00:25:07.480 --> 00:25:11.920
where I left off with Spectrum.
We built a product that worked well for

386
00:25:11.960 --> 00:25:15.599
the purposes it served, and then
eventually get Up acquired and turned it into

387
00:25:15.640 --> 00:25:18.880
get the Discussions to help open source
communities talk about things other than issues right,

388
00:25:18.920 --> 00:25:26.599
which was really previously the only main
conversation piece on gitub. After I

389
00:25:26.680 --> 00:25:32.640
left Kidsup, eventually I joined Gatsby, the static site generator startup that built

390
00:25:32.720 --> 00:25:37.160
this framework based around Graphkill that helped
people build static websites with Gatsby. Sorry,

391
00:25:37.319 --> 00:25:44.480
with React and graphkill and really broad
The main innovation to mean in Gatsby

392
00:25:44.519 --> 00:25:47.839
at the time was really the graphicilled
data layer, where you could use the

393
00:25:48.000 --> 00:25:51.799
data lader that could very easily tie
in lots of data sources from your CMSs,

394
00:25:51.920 --> 00:25:56.000
from a databasis, from whatever other
systems you're using into one graph and

395
00:25:56.079 --> 00:26:00.440
then allow you to build static sites
with that graph. Very very easily,

396
00:26:03.079 --> 00:26:06.200
and I came to against me because
I was working on some of their more

397
00:26:06.240 --> 00:26:11.039
future looking sort of visual editing experiments. We did a lot of work around

398
00:26:11.400 --> 00:26:17.039
how could you build a visual editing
system that is that generically solves the problem

399
00:26:17.079 --> 00:26:21.400
of editing REACT components. Right,
So we had first versions of something COMPLEXI

400
00:26:21.519 --> 00:26:23.759
that allow you to literally go into
your browser, click on a component and

401
00:26:23.880 --> 00:26:29.000
change a prop and it would propagate
back to your code base from there,

402
00:26:29.039 --> 00:26:32.240
like you literally visually edit code.
You could move components around and it move

403
00:26:32.279 --> 00:26:34.480
it around in the in the jsex
stuff like that. We never ended up

404
00:26:34.480 --> 00:26:38.440
getting that production ready because there's a
lot of complexity to editing codes visually.

405
00:26:38.599 --> 00:26:41.400
That's not a very simple problem to
solve, and trying to solve the sort

406
00:26:41.400 --> 00:26:45.559
of biggest scope of that, which
is you can edit anything, it's very

407
00:26:45.599 --> 00:26:48.799
very difficult. And in fact,
it turns out that probably better approaches are

408
00:26:48.799 --> 00:26:52.160
more similar to Framer or web Studio
if you've seen those things, where you

409
00:26:52.160 --> 00:26:56.240
have a more constrained approach where you
get to use these pre po components and

410
00:26:56.240 --> 00:27:00.119
you get to move them around,
but fundamentally that eventually generates code that you

411
00:27:00.160 --> 00:27:03.960
can deploy but it's not a two
way sinc right, it's not a back

412
00:27:03.000 --> 00:27:06.279
and forth street. You can at
your own costom components, but it's not

413
00:27:06.359 --> 00:27:10.160
like framers editing your code base,
right, because that part is really really

414
00:27:10.160 --> 00:27:12.400
difficult. To have humans be able
to edit the code base and have a

415
00:27:12.440 --> 00:27:17.039
system for visual editing edit your code
base just proved to be an immensely difficult

416
00:27:17.039 --> 00:27:19.599
problem. We never actually got it
to work reliably enough to ship to production

417
00:27:19.640 --> 00:27:25.119
and make a product out of it. And then through working on Spectrum,

418
00:27:25.160 --> 00:27:29.400
where we're using Graphicill really heavily and
gets up where I was using their graphically

419
00:27:29.559 --> 00:27:32.160
and then gas PEP, which obviously
was based around Graphkill. I had been

420
00:27:32.200 --> 00:27:33.880
in the graphicill space for many,
many years, and then back in twenty

421
00:27:33.920 --> 00:27:41.160
twenty one, I realized that at
Spectrum one of our core problems was grow

422
00:27:41.279 --> 00:27:44.079
that we were growing really quickly,
but our infrastructure couldn't keep up with the

423
00:27:44.119 --> 00:27:48.480
growth that we had because I chosen
a database reading dB that just wasn't mature

424
00:27:48.559 --> 00:27:52.960
enough to really scale to the scale
that we're ad and so we were using

425
00:27:52.960 --> 00:27:53.839
graphkill and we had, you know, a use case where lots of our

426
00:27:53.920 --> 00:27:56.920
data was public and rehavy, and
so my immediate thought was, let me

427
00:27:56.960 --> 00:28:00.759
just put a cash in front of
our graphical API, because ninety percent of

428
00:28:00.759 --> 00:28:03.519
our traffic is re traffic, that
traffic never actually has to hit our infrastructure,

429
00:28:03.559 --> 00:28:07.160
right that that doesn't have to put
load on our database. But nothing

430
00:28:07.200 --> 00:28:11.839
existed. So I ended up building
a cashing system internally that was, you

431
00:28:11.880 --> 00:28:15.759
know, a first MVP, but
wasn't nearly as powerful as I thought a

432
00:28:15.759 --> 00:28:18.680
graphical caching system could be. Because
graphicill because of the unique ways that it's

433
00:28:18.680 --> 00:28:22.400
works, which'm happy to talk about
too, allows you to do really really

434
00:28:22.400 --> 00:28:25.759
smart caching if you can do it
right right, and graphical clients actually end

435
00:28:25.839 --> 00:28:30.279
up doing a lot of that.
And so I ended up taking that meeting

436
00:28:30.279 --> 00:28:33.400
my co founder Tim, and he
had actually built a prototype of a first

437
00:28:33.400 --> 00:28:36.680
graphical hitch cash that runs at the
CDN level, and we made a company

438
00:28:36.680 --> 00:28:38.880
out of that that's not called Stelly. And so for the last three years

439
00:28:38.920 --> 00:28:42.559
I've really been on this journey of
co funding this company and then transitioning built

440
00:28:42.559 --> 00:28:45.279
the initial product, of course,
but then also transitioning out and transitioning to

441
00:28:45.640 --> 00:28:49.720
being a CEO leading a team of
now fourteen people and and sort of like

442
00:28:49.759 --> 00:28:53.920
all the complexities that come with being
a founder and building a team that are

443
00:28:55.000 --> 00:28:59.759
very different problem sets and very different
and require very different growth than what it

444
00:28:59.799 --> 00:29:02.880
took to be an engineer and what
it took to build you know, large

445
00:29:02.880 --> 00:29:07.200
open source projects and other products.
And so that's that's really been my journey

446
00:29:07.240 --> 00:29:10.920
with the last you know whatever eight
years, going from hey, I'm an

447
00:29:10.920 --> 00:29:14.519
engineer, I build open source projects, I build products. So now running

448
00:29:14.559 --> 00:29:19.440
a whole organization and leading a team
to hopefully success, which is just requires

449
00:29:19.480 --> 00:29:22.359
a very different skill set. And
so that's been a lot of the journey

450
00:29:22.359 --> 00:29:25.319
of the last three years, specifically
with still It. It's both the graphicill

451
00:29:25.319 --> 00:29:26.720
part and sort of like building the
best product that we can to help people

452
00:29:26.720 --> 00:29:32.440
operate their graphic COALPI and then also
building an actual company from scratch and team

453
00:29:32.599 --> 00:29:34.200
from scratch, you know, and
all the complexities that come with that.

454
00:29:34.640 --> 00:29:41.920
Awesome. Awesome. I have several
questions, the first one being not directly

455
00:29:42.000 --> 00:29:48.839
related to your story per se,
but well, directly related to your story

456
00:29:48.880 --> 00:29:56.079
but not directly about you, which
is when you were working at Gatsby,

457
00:29:56.480 --> 00:30:00.720
did you got to meet Josh Camillo. I never met him in person.

458
00:30:02.079 --> 00:30:03.119
But oh, actually no, I
think made even in person in one of

459
00:30:03.119 --> 00:30:06.400
our off sides, and I spoke
with him a bunch of times internally of

460
00:30:06.400 --> 00:30:10.960
course. Yeah, oh gotcha.
Yeah, just mentioning that because he is

461
00:30:11.000 --> 00:30:15.759
definitely one of my top ten content
creators out there. I really enjoy the

462
00:30:15.880 --> 00:30:21.599
quality of his content is really really
really good, really simple too. So

463
00:30:22.359 --> 00:30:26.200
it almost feels like everyone that I
see that had a background and gets be

464
00:30:26.400 --> 00:30:33.480
are excellent developers. It seems like
you guys all came from all got together

465
00:30:33.559 --> 00:30:41.839
at that point. That's kind of
interesting. Yeah, And I'm also curious

466
00:30:41.880 --> 00:30:48.759
about gets be itself, like just
just from a pure curiosity because gats be

467
00:30:49.160 --> 00:30:56.279
is well, I'm not sure how
stellid is with regards to open source,

468
00:30:56.839 --> 00:31:03.759
but gets me itself is an open
source solution that has a company behind it

469
00:31:03.799 --> 00:31:14.160
and actually generates money and pays employees. So, since we're talking about entrepreneurial

470
00:31:14.279 --> 00:31:23.839
spirit here, how do you see
tech startups that are trying to create profitable

471
00:31:23.920 --> 00:31:33.079
model based on open source technology,
Because I, for one think it's probably

472
00:31:33.160 --> 00:31:37.680
way more challenging than just having a
closed sourced system. Like I'm well,

473
00:31:38.599 --> 00:31:42.880
maybe there's pros and cons right there, is a lot more traction because you

474
00:31:42.960 --> 00:31:47.480
have more people that get to know
your product because they can just get started

475
00:31:47.519 --> 00:31:51.279
for free. But at the same
time, if they can get started for

476
00:31:51.359 --> 00:31:56.279
free, and most of it can
be done for free, then how hard

477
00:31:56.319 --> 00:32:00.559
it is to actually convert them into
paying becausts the merge right. So,

478
00:32:00.720 --> 00:32:06.759
I'm not sure if stell it also
has an open sourced version of it,

479
00:32:07.480 --> 00:32:12.640
but if so, perhaps you could
even bridge get to the install it and

480
00:32:12.720 --> 00:32:15.480
tell us how do you see those
types of business models? I think it's

481
00:32:15.480 --> 00:32:20.920
a very interesting question that a lot
of people in the industry are battling with

482
00:32:21.359 --> 00:32:27.279
right now. Because during the zero
interest rate phase of the world, where

483
00:32:27.440 --> 00:32:30.039
money was sort of free in many
regards and there was a lot of investment

484
00:32:30.079 --> 00:32:32.119
and there was a lot of money
to spend on lots of different things,

485
00:32:34.319 --> 00:32:37.279
that business model was more tenable than
it is in twenty twenty three and twenty

486
00:32:37.319 --> 00:32:42.000
twenty four, because there just isn't
the same amount of money anywhere right not

487
00:32:42.000 --> 00:32:45.400
to buy things, not to hire
people, not to do much of anything

488
00:32:45.480 --> 00:32:50.599
right, And in truth, pulling
off an open source business model to me

489
00:32:51.240 --> 00:32:57.119
is in many ways more difficult than
just building a business because already. Just

490
00:32:57.160 --> 00:33:00.799
building a business that provides value and
makes money is an immensely difficult task that

491
00:33:00.880 --> 00:33:06.880
most people fail at. Right.
It is unbelievably challenging to do that in

492
00:33:06.920 --> 00:33:09.160
the digital space, particularly because in
the digital space everything is global. Right.

493
00:33:09.319 --> 00:33:13.079
If I'm building a local bakery,
assuming you have a good you know,

494
00:33:13.119 --> 00:33:15.000
I can find a good location with
the rent that makes sense, and

495
00:33:15.000 --> 00:33:16.759
I can find suppliers that charge money
that allows me to have a margin that

496
00:33:16.759 --> 00:33:21.559
allows me to pay my employees.
It's very difficult to build a local business,

497
00:33:22.000 --> 00:33:23.960
and you're only competing with other local
businesses. Right, you only have

498
00:33:24.000 --> 00:33:27.160
to be better than the big career
around the door. You only have to

499
00:33:27.200 --> 00:33:30.039
have a better location than the calf
coffee shop around the corner. In the

500
00:33:30.039 --> 00:33:32.720
digital world, you're competing with the
whole world. Right. If you ship

501
00:33:32.759 --> 00:33:37.119
a product, if you're colendly,
you're now a large company that shipped the

502
00:33:37.119 --> 00:33:38.680
product. Suddenly, Savig Call and
cal dot com are like, Hey,

503
00:33:38.720 --> 00:33:40.480
what if we built the same thing, but we made it nicer, or

504
00:33:40.519 --> 00:33:43.519
we made it more specific to certain
use cases and made it work better for

505
00:33:43.559 --> 00:33:45.599
certain us cases. You're literally competing
with the whole world, and so building

506
00:33:45.599 --> 00:33:51.440
a digital business, I think is
often peddled online as something that's easier,

507
00:33:51.599 --> 00:33:52.480
and in some ways it is.
Right. In some ways, the friction

508
00:33:52.599 --> 00:33:55.279
is lower than building a physical business. There's less overhead, there's less initial

509
00:33:55.319 --> 00:34:00.559
costs. You often have immense margins
because your cost of actually, you know,

510
00:34:00.920 --> 00:34:02.480
having a lot of customer essentially zero. Right. If somebody buys a

511
00:34:02.480 --> 00:34:06.960
croissant, you still have to pay
for the for that croissant. If you

512
00:34:06.960 --> 00:34:08.360
have software, you can sell it
a million times and it doesn't cost you

513
00:34:08.360 --> 00:34:13.800
anything anything anymore. Right, there's
no extra cost to selling software outside obviously

514
00:34:13.960 --> 00:34:15.320
the sales of it and whatever.
But but largely your margin's going to be

515
00:34:15.480 --> 00:34:17.920
insane. Right, So in some
ways it's easier, but in other ways

516
00:34:17.920 --> 00:34:22.639
it's harder because you're competing with the
whole world. And I think a lot

517
00:34:22.639 --> 00:34:29.360
of businesses think they can or a
lot of the difficulty with building a business

518
00:34:29.400 --> 00:34:34.119
around open source is that it becomes
very difficult to assess what goes into open

519
00:34:34.119 --> 00:34:37.800
source and what is paid, and
you sort of a very slippery slope if

520
00:34:37.840 --> 00:34:40.840
you're looking to get more revenue to
move features into the paid offering that you

521
00:34:40.920 --> 00:34:44.280
have that really should be in the
open source world, and actually that was

522
00:34:44.320 --> 00:34:45.719
a lot of what Gatsby ran into
even before I was there. This is

523
00:34:45.920 --> 00:34:50.000
I have no internal information on this, but a lot of the sentiment around

524
00:34:50.039 --> 00:34:52.800
Gatsby was, hey, GASB's builds
are slow, right, I have a

525
00:34:52.800 --> 00:34:55.599
static website with a thousand pages within
thousand pages, and my site every time

526
00:34:55.679 --> 00:35:00.360
make an update takes four hours to
build. And so Gatsby really gats be

527
00:35:00.480 --> 00:35:05.000
Cloud, which was a Gasby specific
hosting service that in some ways just understood

528
00:35:05.000 --> 00:35:07.880
gaspe really well and the data layer
really well and could very efficiently do rebuilds

529
00:35:07.880 --> 00:35:10.760
of only the pages, incremental builds
of only the stuff that actually needs to

530
00:35:10.760 --> 00:35:14.800
be updated. They kept track of
data depends on all that stuff, which

531
00:35:14.800 --> 00:35:16.559
is awesome, and that was a
paid thing that gats Be charged for.

532
00:35:17.000 --> 00:35:20.960
But then externally, the sentiment was, well, you just made me use

533
00:35:20.960 --> 00:35:22.960
an open source projects and the static
site generator that is slow, and then

534
00:35:23.000 --> 00:35:28.000
you're selling me it being fast.
But why is it slow in the first

535
00:35:28.039 --> 00:35:30.639
place? Why can't that be Why
can't the open source project just be fast

536
00:35:30.639 --> 00:35:34.119
and you offer me hosting? Right? That was often the tension that people

537
00:35:34.159 --> 00:35:37.760
felt with that business model, and
that's very difficult to execute on the counter

538
00:35:37.800 --> 00:35:39.719
example, and I think the shining
star of a company that has done this

539
00:35:39.840 --> 00:35:45.519
well is Verssell, who've built next
years and they have a very clear sort

540
00:35:45.559 --> 00:35:49.800
of differentiation between what nixt Chios does, and they make nextchures the open source

541
00:35:49.880 --> 00:35:52.480
version or the open source project as
good as they humanly can, and then

542
00:35:52.559 --> 00:35:55.960
rosell is the platform where people host
it, and through that they get you

543
00:35:57.039 --> 00:36:00.000
know, pre deployments and you know, great infrastructure and edgewares and all this

544
00:36:00.159 --> 00:36:04.679
all these features that they want that
require infrastructure that you cannot have in an

545
00:36:04.719 --> 00:36:07.840
open source project, right, And
so suddenly they've sort of drawn that line

546
00:36:07.840 --> 00:36:09.519
in a beautiful way where the community
loves what they're doing with mixture is.

547
00:36:09.719 --> 00:36:13.000
And then a lot of them also
end up deploying on ver Cel, which

548
00:36:13.039 --> 00:36:15.360
is great for Versil because obviously they're
also a business and they need to make

549
00:36:15.360 --> 00:36:17.360
money. But Versale to me is
an outlier. Right. There's Resale,

550
00:36:17.360 --> 00:36:21.519
there's hashally Corp. There's a few
other companies that do this, but most

551
00:36:21.559 --> 00:36:25.880
companies that do this fail and it's
because it's really really difficult to figure out

552
00:36:25.880 --> 00:36:30.440
that distinction. And then also you're
immediately sp splitting your company in half.

553
00:36:30.440 --> 00:36:32.239
Again, it's really difficult to build
a viable business online. That's not an

554
00:36:32.239 --> 00:36:37.199
easy tasks. It's a monumental challenge
that people I think underestimate that I certainly

555
00:36:37.280 --> 00:36:39.880
underestimate it. It's really freaking difficult. And suddenly you're having to build a

556
00:36:39.880 --> 00:36:43.760
business, and then you're also having
to build an open source project. Right

557
00:36:43.960 --> 00:36:46.280
is that is an immense amount of
work that you suddenly have to do with

558
00:36:46.400 --> 00:36:50.199
a small new company that has very
few resources, right, that has to

559
00:36:50.239 --> 00:36:53.400
move really quickly. That's just that's
a Mount Everest to climb, you know,

560
00:36:53.400 --> 00:36:57.639
And that's why I think so few
people ever managed actually climb that Mount

561
00:36:57.679 --> 00:37:00.880
Everest. It's just because it's freaking
difficult, right. It seems simple,

562
00:37:00.920 --> 00:37:04.239
but it's it is immensely difficult to
execute upon. And so I have a

563
00:37:04.239 --> 00:37:06.760
lot of respect for people that try
that and that pull it off, like

564
00:37:06.760 --> 00:37:07.960
Briceille, and I have a lot
of respect for people to try it and

565
00:37:07.960 --> 00:37:10.800
don't pull it off. I think
that they amount equally much respect because it

566
00:37:10.800 --> 00:37:15.760
is a really difficult challenge. Stelle, it's specifically we're not open source.

567
00:37:15.159 --> 00:37:17.599
We are a graph col CDN.
As a way you could think about it,

568
00:37:17.599 --> 00:37:21.679
and so we're based around graph Kill, which is open source up within.

569
00:37:21.719 --> 00:37:23.840
Lots of people use Graphkill without stell
it, but then once they hit

570
00:37:23.840 --> 00:37:28.480
certain scaling problems, once they have
performance problems, once they have too high

571
00:37:28.480 --> 00:37:30.559
infrastutional costs, once they need better
observability, then they put stell it in

572
00:37:30.599 --> 00:37:34.119
front of their graphical EPI, which
is sort of, you know, just

573
00:37:34.159 --> 00:37:38.679
our product, and they get edge
caching performance benefits through that, and metrics

574
00:37:38.719 --> 00:37:44.159
and security through using our product.
But our product itself is not open source

575
00:37:44.159 --> 00:37:45.280
at all. It's only a paid
offering. And in fact, you could

576
00:37:45.360 --> 00:37:49.400
argue that stell It itself doesn't really
have an open source offering because we're just

577
00:37:49.440 --> 00:37:52.719
based around around the framework of Graphkill. And sure, we contribute to GRAPHICI

578
00:37:52.760 --> 00:37:55.199
and we build graphical clients and we
help graphical and you know, we do

579
00:37:55.199 --> 00:37:59.360
a lot of open source work,
but it's actually kind of unrelated to our

580
00:37:59.360 --> 00:38:01.519
business. Our business is really a
product that's faith that's built around graftkilling.

581
00:38:01.559 --> 00:38:05.880
We are not I would not describe
Stalite as an open source company, even

582
00:38:05.880 --> 00:38:09.760
though we're sort of open source adjacent
maybe, but really we're not an open

583
00:38:09.760 --> 00:38:12.960
source company. We're really just a
business that makes the product that we sell

584
00:38:13.000 --> 00:38:17.480
to customers. Yeah, that was
a long tigent answer to your original question.

585
00:38:17.480 --> 00:38:22.440
I hope that that makes sense.
It did, So what you said

586
00:38:22.519 --> 00:38:29.320
is basically that the companies that well, at least the ones that you saw

587
00:38:30.239 --> 00:38:37.800
executing this model really well are the
ones that separated the products. So Versull,

588
00:38:37.920 --> 00:38:43.280
for example, has different products and
one of them is fully paid or

589
00:38:43.599 --> 00:38:47.800
well, actually they do have a
free tier, but it's it's closed source

590
00:38:47.880 --> 00:38:52.199
and it's meant to be paid,
and the other is open sourced and it

591
00:38:52.280 --> 00:38:59.039
is meant to be fully open sourced
and fully free and fully owned and used

592
00:38:59.079 --> 00:39:04.159
by the community. That's interesting.
Have you seen other companies that are like

593
00:39:04.280 --> 00:39:07.519
you mentioned call Con. I think
that's a good example of a company that

594
00:39:07.760 --> 00:39:17.199
is open sourced, but they are
generating profits or not sure if profits,

595
00:39:17.239 --> 00:39:24.360
but they're generating money at least,
And maybe that is because they are positioning

596
00:39:24.400 --> 00:39:34.239
themselves directly against a competitor that has
already established himself as a fully paid solution.

597
00:39:34.400 --> 00:39:42.000
Right, so call Con even publicly
positions themselves as an alternative to Calendly

598
00:39:42.199 --> 00:39:45.559
that is also open source. So
if you are already a user of Calendly,

599
00:39:45.599 --> 00:39:51.159
you already have this previous expectation that
is going to be this way.

600
00:39:51.599 --> 00:39:55.079
Also, it's just so much harder
for you to It's so much easier for

601
00:39:55.119 --> 00:39:59.400
you to just click on a bottom
and create a cloud account than it is

602
00:39:59.400 --> 00:40:05.079
for you to actually host the entire
thing on your own services. Even if

603
00:40:05.320 --> 00:40:09.920
you can just get a droplet on
Digital Ocean and put it up and running,

604
00:40:10.159 --> 00:40:15.400
it's still a little bit more effort
and you actually have to maintain it.

605
00:40:15.400 --> 00:40:19.840
It's different from a technology that you're
going to introduce in your code base,

606
00:40:19.880 --> 00:40:22.039
and you're already going to have to
maintain your code base anyways, so

607
00:40:22.079 --> 00:40:27.079
it's not like you're adding too much
of a burden in terms of maintenance.

608
00:40:27.599 --> 00:40:34.159
But call Con, for example,
it's a full standalone product that if you

609
00:40:34.320 --> 00:40:38.679
were to integrate it, it would
probably be via API calls directly to a

610
00:40:38.840 --> 00:40:46.159
hosted instance, which is completely different
from just an open sourced library that you're

611
00:40:46.159 --> 00:40:52.639
going to integrate in a larger code
base that is proprietarily yours. So I

612
00:40:52.639 --> 00:40:59.440
think that's also one difference in that. So we have here examples of companies

613
00:40:59.440 --> 00:41:05.760
that did by completely separating the products. We have an example of a company

614
00:41:05.760 --> 00:41:07.880
that got it right by having a
single product that is open sourced, but

615
00:41:08.159 --> 00:41:17.039
it is a standalone it's a standalone
product. Now just open source code bases

616
00:41:17.320 --> 00:41:22.599
that also have a paid version,
and they are meant to be used within

617
00:41:23.039 --> 00:41:30.400
your proprietary cobase. I can literally
only think of one which I think is

618
00:41:30.599 --> 00:41:37.280
very very clever, and it is
boo MQ. It's a library for you

619
00:41:37.360 --> 00:41:45.199
to connect to a read this instance
and generate an asynchronous Q so you can

620
00:41:45.320 --> 00:41:49.480
just use it to create micro services. And what they did is they created

621
00:41:49.639 --> 00:41:55.880
a fully free, open source version
of the library, and they created a

622
00:41:55.960 --> 00:42:02.440
pro version that requires a lice sense. But the pro version has a few

623
00:42:04.079 --> 00:42:12.559
advanced features that are particularly interesting for
companies that want to extract a little bit

624
00:42:12.639 --> 00:42:16.679
more from their cues. So for
example, they have groups, so you

625
00:42:16.719 --> 00:42:22.760
can't have grouped queues in the free
version. You need to pay to get

626
00:42:22.760 --> 00:42:27.440
that. So that it's like you're
you literally have a plan, right,

627
00:42:27.480 --> 00:42:29.760
you have the free plan, and
then you have the problem, and the

628
00:42:29.800 --> 00:42:34.519
problem is not open sourced at all. And we're not talking about making it

629
00:42:34.639 --> 00:42:37.800
faster. We're talking about not having
something and now you have it. So

630
00:42:37.840 --> 00:42:43.519
perhaps that's one difference from Gatsbee.
It's not making it. It's not a

631
00:42:43.559 --> 00:42:47.800
feature that is just about making it
faster. It's about adding support for one

632
00:42:47.880 --> 00:42:53.199
way of doing things that were simply
not possible in the free version. I

633
00:42:53.280 --> 00:42:57.960
sort of have a hot take on
businesses like Carlocom, which is I think

634
00:42:58.000 --> 00:43:04.039
they're successful despite being opened not because
they're open source. My guess is that

635
00:43:04.360 --> 00:43:07.360
because there's a whole swath of these
products now, like cal dot com,

636
00:43:07.360 --> 00:43:10.639
like documents o, which is a
document alternative that's open source, a lot

637
00:43:10.639 --> 00:43:13.519
of people are trying to be you
know, I'm going to build this product

638
00:43:13.519 --> 00:43:15.559
that's really successful, but I'm going
to make it open source. In truth

639
00:43:15.599 --> 00:43:22.159
though, where I think maybe prefaces
that has some advantages, right, It

640
00:43:22.159 --> 00:43:24.159
comes with great marketing, particularly you
know indie hackers and software engineers. We

641
00:43:24.199 --> 00:43:27.519
love these open source products. We
can look at the code base. It

642
00:43:27.559 --> 00:43:29.880
feels cool to use, like it's
nice that it's open source. It's awesome.

643
00:43:30.039 --> 00:43:31.639
It has some marketing benefits. It
also has some benefits in terms of

644
00:43:31.639 --> 00:43:37.039
like making it easier to sell that
solution into governments, into healthcare, into

645
00:43:37.320 --> 00:43:40.320
these industries where there's a lot of
security and data requirements that are hard to

646
00:43:40.320 --> 00:43:44.480
meet otherwise if you're a proprietary product, but if you have a source open

647
00:43:44.519 --> 00:43:47.360
source, then it might be easier
to get into those industries. I think

648
00:43:47.400 --> 00:43:51.719
the sort of the thing that I'm
not sure about is how often do this

649
00:43:51.840 --> 00:43:53.840
end these use kids in there paying
you because there's self if they're just self

650
00:43:53.880 --> 00:43:58.360
forcing it on their government cloud infrastructure, how do you make money of that?

651
00:43:58.440 --> 00:44:00.679
Right? Like, I don't really
see how what benefits there, but

652
00:44:00.000 --> 00:44:06.239
I don't know if enough context.
But I think the downside is actually like

653
00:44:07.199 --> 00:44:12.719
you don't have a competitive advantage compared
to your competitors outside of those specific use

654
00:44:12.719 --> 00:44:15.880
cases. Because fundamentally, if cal
dot com is open source but a shitty

655
00:44:15.960 --> 00:44:19.840
version of Calendle, people are still
going to be using Clendly. Right,

656
00:44:20.079 --> 00:44:23.000
the product has to be better than
what other competitors can offer in order for

657
00:44:23.039 --> 00:44:27.119
you to win in the market the
open Like making a shitty version of cleanly

658
00:44:27.159 --> 00:44:29.960
making it open source in no way, shape or form is going to help

659
00:44:29.960 --> 00:44:31.760
you win the market. There's no
way that you're going to win a lot

660
00:44:31.800 --> 00:44:36.000
of revenue through that approach, Right, you have to build a better product

661
00:44:36.039 --> 00:44:38.159
than Clendly. Now, the other
part of that is building a better product

662
00:44:38.199 --> 00:44:42.280
than a than a large established competitor. In some ways is easier. In

663
00:44:42.280 --> 00:44:44.000
some ways, it's really hard.
And one of the ways that it's really

664
00:44:44.039 --> 00:44:47.199
hard is that you have to be
the Only way that I see companies that

665
00:44:47.360 --> 00:44:52.280
win at sort of like taking over
niches of from established competitors is that they

666
00:44:52.360 --> 00:44:55.880
choose niches. They choose a use
case and audience a persona that is very

667
00:44:55.880 --> 00:45:00.280
specific where Clendly works for everybody.
And then Savikaal came around was like,

668
00:45:00.320 --> 00:45:02.320
hey, we're for people that want
Calendi, but it looks nice, right.

669
00:45:02.360 --> 00:45:05.599
That was sort of the initial framing
that they had, Right, It's

670
00:45:05.639 --> 00:45:07.840
like, it works nice, it
integrates your calendar that they use. Experience

671
00:45:07.840 --> 00:45:09.440
as great for both you and for
people that schedule links. So if you

672
00:45:09.480 --> 00:45:12.880
don't want to look shitty like calend
lye, go use us, then you

673
00:45:12.880 --> 00:45:15.079
will have a better impression with the
people that you schedule meetings with. That

674
00:45:15.119 --> 00:45:15.920
was sort of the initial pitch.
Now it's shifted a little bit. That

675
00:45:15.960 --> 00:45:17.960
was the initial pitch, and that
was the initial wedge into the market.

676
00:45:19.360 --> 00:45:22.960
Whether or not Savocal is open source
doesn't matter to that pitch. It's completely

677
00:45:22.960 --> 00:45:24.400
irrelevant. They could have attached and
were open source at the end, and

678
00:45:24.440 --> 00:45:28.280
it wouldn't have mattered, right,
because today what mattered was they chose a

679
00:45:28.280 --> 00:45:30.719
persona which is design oriented people that
like good use experience, and they were

680
00:45:30.719 --> 00:45:32.960
like, hey, Calendly, it
sucks in this way. We're gonna build

681
00:45:32.960 --> 00:45:37.079
a version of clently that works great
in this way. And the other part

682
00:45:37.079 --> 00:45:38.239
of that is too. If you're
doing that, you have to let go

683
00:45:38.280 --> 00:45:40.840
of a lot of the other stuff
that Calendly does. Right, Calenly doesn't

684
00:45:40.840 --> 00:45:44.559
have a shitty user experience and looks
ugly because they want to look ugly.

685
00:45:44.639 --> 00:45:46.360
They have a shitty user experience and
they look ugly because they realized that for

686
00:45:46.440 --> 00:45:50.199
their business, it's more important to
focus on other things, right, because

687
00:45:50.199 --> 00:45:52.199
everybody has constrained resources, and so
for Klendle, it was more important to

688
00:45:52.239 --> 00:45:55.400
build SoC two compliance. It was
more important to build data compliance. It

689
00:45:55.440 --> 00:45:59.000
was more important for them to build
global deployments. It was more important for

690
00:45:59.039 --> 00:46:01.400
them to build and single sign on
because that is their audience, right,

691
00:46:01.559 --> 00:46:06.159
And so they just realized the researchers
are better spent. I have no internal

692
00:46:06.159 --> 00:46:08.039
context on Calendia and making this up, but I'm assuming they realize their internal

693
00:46:08.079 --> 00:46:12.519
means are better spent on all these
enterprise features then on making the user experience

694
00:46:12.519 --> 00:46:15.280
better because the market for the enterprise
features was just so much larger. And

695
00:46:15.280 --> 00:46:16.960
SAVIACL came around and was like,
well, we're just gonna ignore all the

696
00:46:17.079 --> 00:46:20.880
enterprise stuff. We're only going to
focus on us experience. We're gonna take

697
00:46:20.880 --> 00:46:22.199
this niche, We're gonna take the
slice of your market away from you.

698
00:46:22.480 --> 00:46:28.079
We're gonna take over that that that
specific wedge, and we're gonna win in

699
00:46:28.079 --> 00:46:30.880
the market. But for that persona
that way, the fact that CalCon Com

700
00:46:30.960 --> 00:46:34.960
is open source is not helping them
win. It doesn't matter right If again,

701
00:46:34.960 --> 00:46:37.760
if it was a worse product,
people would still be choosing Saviaca or

702
00:46:37.199 --> 00:46:39.840
Cleanly, but calum Come in some
way is better. Now. The big

703
00:46:39.880 --> 00:46:45.039
downsid of being open source is that
suddenly you have a lot of people contributing

704
00:46:45.079 --> 00:46:46.719
a lot of crap. Excuse my
language, if if any of you have

705
00:46:46.760 --> 00:46:51.880
ever contributed or run a large open
source projects, the amount of terrible contributions

706
00:46:51.920 --> 00:46:53.920
that people propose are immense. The
amount of issues that you get that are

707
00:46:53.960 --> 00:46:57.760
complete crap is immense. Like it
is a lot of work to manage large

708
00:46:57.760 --> 00:47:00.280
open source projects in large parts because
a lot of people think they can grow

709
00:47:00.320 --> 00:47:02.920
their career through contributing to open source, which is great and it's true,

710
00:47:04.000 --> 00:47:07.079
and then they just submit bullshit contributions
so that they can say they contributed to

711
00:47:07.159 --> 00:47:09.079
Notches or to react or to whatever. Right, that is a very common

712
00:47:09.119 --> 00:47:13.679
pattern that is very frustrating for source
mantainers. Now, for Caldacom, that

713
00:47:13.760 --> 00:47:16.960
means that I'm sure they're spending a
lot of resources on managing their issues,

714
00:47:16.960 --> 00:47:20.880
on managing their pre requests, and
managing external contributors, on submitting bounties,

715
00:47:20.920 --> 00:47:23.280
on giving feedback, and then in
turn, though, they also have to

716
00:47:23.320 --> 00:47:27.840
be very strict about saying no,
because I'm sure what's happening is that a

717
00:47:27.840 --> 00:47:30.480
lot of people are submitting contributions for
their use cases, for their thing that

718
00:47:30.519 --> 00:47:36.199
they need from Caldocom. What in
turn means though that Caldacom's feature said is

719
00:47:36.199 --> 00:47:38.679
just going to explode and be everything
for nobody, right, They're just going

720
00:47:38.719 --> 00:47:42.159
to end up being if they're not
careful, They're just going to solve all

721
00:47:42.199 --> 00:47:45.480
the problems for no specific audience,
for no specific persona, and then in

722
00:47:45.480 --> 00:47:46.559
the end they're going to be a
worse product right, So they have to

723
00:47:46.559 --> 00:47:51.679
spend a lot more time on actually
product managing the contributions that external people are

724
00:47:51.679 --> 00:47:54.039
making who have no idea what Caldacom
is doing right, many of them won't

725
00:47:54.039 --> 00:47:58.239
have the time or resources or in
interest to dig into you know, calocom's

726
00:47:58.280 --> 00:48:00.159
persona definition and what is the audience
that that and what is the product roode

727
00:48:00.159 --> 00:48:02.599
map, and how do these features
align with their product comap and why do

728
00:48:02.639 --> 00:48:06.360
they want to have these features and
how do they think about their producthilosophy.

729
00:48:06.519 --> 00:48:09.000
If all of that's very clearly defined
and documented, then maybe, But even

730
00:48:09.039 --> 00:48:12.519
just documenting all of that and defining
all of that is a lot of effort,

731
00:48:12.679 --> 00:48:15.039
right And so to me, looking
at cal do com, if they

732
00:48:15.079 --> 00:48:17.559
win in the market, the reason
they will win in the market is not

733
00:48:17.599 --> 00:48:20.639
because they're open source. To me, the reason they're going to win in

734
00:48:20.679 --> 00:48:23.440
the market is despite them being open
source almost at best. I think it's

735
00:48:23.440 --> 00:48:27.159
a neutral thing that they can do
when it gives them some marketing. But

736
00:48:28.400 --> 00:48:30.199
I don't see a world in which
they win because they're open source. Now,

737
00:48:30.199 --> 00:48:32.559
I would love for pere Rich to
come around and tell me I'm completely

738
00:48:32.599 --> 00:48:35.519
wrong, and I'm it and I'm
completely missing the point. That will be

739
00:48:35.519 --> 00:48:38.280
awesome, But in my view,
I don't understand why they would win in

740
00:48:38.280 --> 00:48:40.880
the market because they're open source.
That's me just not a thing. And

741
00:48:40.920 --> 00:48:45.159
so I think, to go back
to your differentiation, there's businesses built around

742
00:48:45.239 --> 00:48:49.519
open source libraries and frameworks like versus
Nextture is like gads peoples around gats speachres

743
00:48:49.559 --> 00:48:52.519
the framework, and there's a few
old examples of this. And then there's

744
00:48:52.559 --> 00:48:55.400
a category of businesses that open source
the whole product, right, gidlab being

745
00:48:55.400 --> 00:49:00.719
the most famous large scale one.
But again gidlab, maybe if they,

746
00:49:00.679 --> 00:49:02.920
like if they had built a better
version of kid up, maybe they would

747
00:49:02.920 --> 00:49:06.360
have won in the market they lost. Kidsub clearly took over, at least

748
00:49:06.400 --> 00:49:08.880
in the open source world. Right, they're the predominant COT solding platform on

749
00:49:08.920 --> 00:49:13.599
the platform in the world. I
don't know what the specific distribution of of

750
00:49:13.719 --> 00:49:15.400
like market share is, but there's
no way the good lab has even closer

751
00:49:15.400 --> 00:49:19.679
the same market share the gidub does. If they had built a better product

752
00:49:19.679 --> 00:49:21.960
and gets up, maybe they would
have won. Then being open source,

753
00:49:22.960 --> 00:49:23.599
they didn't win, you know,
you know what I mean, Like,

754
00:49:23.639 --> 00:49:27.960
they didn't even win the open source
community. By being open sourced. All

755
00:49:28.000 --> 00:49:30.599
of the open source stuff happens on
gidsub. I don't want to know this,

756
00:49:30.920 --> 00:49:32.599
I don't know the statistic, but
I'm one hundred percent certain that ninety

757
00:49:32.719 --> 00:49:37.119
ninety five percent of open source packages
on MPM are hosted on gid ub,

758
00:49:37.159 --> 00:49:38.599
not on good lab. Good lab
itself. The product is open source,

759
00:49:38.639 --> 00:49:43.519
and nobody cares. Right, they
built the worst product and they didn't win.

760
00:49:44.519 --> 00:49:46.800
Like for that category of business,
you just have to build a better

761
00:49:46.800 --> 00:49:50.360
product. That's all that ultimately matters
to me. Whether or not your open

762
00:49:50.400 --> 00:49:52.719
source is sort of an implementation detail
and maybe a marketing thing, but it

763
00:49:52.760 --> 00:49:55.760
doesn't make the big difference in you
winning in the market or not outside of

764
00:49:55.840 --> 00:49:59.239
maybe you know, government, health
care and all that stuff. But I

765
00:49:59.360 --> 00:50:01.400
yeah, see it, and so
to me, the true open source businesses

766
00:50:01.400 --> 00:50:06.360
are the ones that are building around
an open source framework and whose success is

767
00:50:06.360 --> 00:50:07.599
attached to the success of that open
source framework. That is, to me,

768
00:50:07.639 --> 00:50:12.719
a true open source business, not
unlike some you know, I don't

769
00:50:12.760 --> 00:50:14.639
care if you callage if an open
source business or not. But to me,

770
00:50:14.880 --> 00:50:17.880
the riskier thing is versell basing their
whole business on their freaking next Chress

771
00:50:17.920 --> 00:50:22.880
framework. If next Chus stops working, versill has a huge problem. Right.

772
00:50:22.079 --> 00:50:24.840
If cal dot com skits have been
put us stops getting stars, it

773
00:50:24.880 --> 00:50:28.039
doesn't matter. If they built a
better product, people will still buy,

774
00:50:28.079 --> 00:50:30.800
you know, it doesn't. It's
completely irrelevant to the success of their business.

775
00:50:30.960 --> 00:50:32.719
To Versel though, if people stop
using next Chress and start adopting something

776
00:50:32.760 --> 00:50:36.920
else that is better deployed somewhere else, holy smokes, that is a huge

777
00:50:37.000 --> 00:50:38.559
risk to their business. You know, same thing with gasps because gats we

778
00:50:38.559 --> 00:50:42.760
stop getting a lot of adoption in
the market. Gas pick Out only had

779
00:50:42.760 --> 00:50:45.800
a very limited market to sell to, and so the revenue potential wasn't there,

780
00:50:45.880 --> 00:50:49.000
right fundamentally because more people started using
next Chress for various reasons that I'm

781
00:50:49.000 --> 00:50:52.280
happy to talk about. But like, that is a core risk to your

782
00:50:52.280 --> 00:50:53.960
business on me for cal dot com, for kid lab, I don't know,

783
00:50:54.000 --> 00:50:57.679
people look at their open source core
is completely irrelevant. The thing that

784
00:50:57.719 --> 00:51:00.519
matters is have they built a better
product? Sorry for the right, That

785
00:51:00.280 --> 00:51:01.800
was a whole take that I that
I've been sitting on for a while,

786
00:51:01.800 --> 00:51:07.559
but so apologies for the ten but
I just don't see it nor is nower

787
00:51:07.679 --> 00:51:12.239
Is. I definitely appreciate it.
It's always good to listen to the opinions

788
00:51:12.280 --> 00:51:15.679
of other people that have been thinking
about this for a while. It's really

789
00:51:15.719 --> 00:51:23.000
interesting to think about, Like you
said, Calcom is gaining traction despite being

790
00:51:23.079 --> 00:51:29.039
open source, right. I think
that I disagree with this in parts,

791
00:51:29.480 --> 00:51:34.599
just in the specific case of Calcom. I'm not generalizing it, but for

792
00:51:34.800 --> 00:51:39.480
Calcom specifically, I believe that they
did got a lot of traction, and

793
00:51:39.559 --> 00:51:45.119
still most of the traction that they
have are developers that just thought it was

794
00:51:45.239 --> 00:51:50.199
nice that they were doing it open
source and got interested and decided to use

795
00:51:50.239 --> 00:51:58.280
it because of that. But it's
just a branding and marketing positioning. It's

796
00:51:58.400 --> 00:52:05.880
not really an operational advantage, as
you were saying. They probably spend a

797
00:52:05.880 --> 00:52:13.000
lot more time trimming down and filtering
the work that their open source contributors are

798
00:52:13.039 --> 00:52:16.920
doing then actually directing the product and
the company to where they would like it

799
00:52:16.960 --> 00:52:22.360
to go. And there's also so
much more exposure for everything that they do,

800
00:52:22.519 --> 00:52:30.039
Like there are so many downsides,
but at the same time, this

801
00:52:30.320 --> 00:52:38.320
level of visibility I think created a
very specific brand for them that made other

802
00:52:38.440 --> 00:52:44.679
developers resonate with their mission. It's
almost as if people are using call call

803
00:52:44.880 --> 00:52:52.000
not because it is better than the
alternatives, but because they emotionally like what

804
00:52:52.119 --> 00:52:58.599
they are trying to do. So
I do think that they are growing because

805
00:52:59.159 --> 00:53:04.079
of them being open source, not
despite of it. But I also think

806
00:53:04.159 --> 00:53:12.199
that this is going to eventually become
a problem because unless their target audience is

807
00:53:12.440 --> 00:53:17.079
only developers or very tax savy people
that care about the open source community,

808
00:53:19.039 --> 00:53:23.760
then at some point they're going to
have to consider closing the source. And

809
00:53:24.239 --> 00:53:30.639
this is if that happens, it's
going to generate so much frustration. I

810
00:53:30.679 --> 00:53:38.360
remember there was this company that had
open source designs for three D printers.

811
00:53:38.440 --> 00:53:45.800
I think it was Maker Bought,
I don't know, it was something like

812
00:53:45.840 --> 00:53:50.679
that. I don't know if you
guys recall it. But they had a

813
00:53:50.760 --> 00:53:58.239
three D printer and they had all
the all the project information, how you

814
00:53:58.280 --> 00:54:04.400
can build it, how the software. Everything was open sourced and anyone could

815
00:54:05.360 --> 00:54:08.559
build on top of it. And
then they started actually having competitors that were

816
00:54:08.880 --> 00:54:15.760
building products based on their specifications,
and the competitors were just closed source.

817
00:54:15.960 --> 00:54:22.480
Right. It's it's just like open
AI. At some point it's gonna buy

818
00:54:22.599 --> 00:54:27.679
you, you know, Okay,
where we have this mission of making AI

819
00:54:27.800 --> 00:54:31.320
open and now you just have a
company that is called open ai, but

820
00:54:31.400 --> 00:54:38.360
there's there's no open model in it. So at some point it becomes a

821
00:54:38.360 --> 00:54:45.320
communication problem because you keep getting reminded
of how you got to the point that

822
00:54:45.880 --> 00:54:52.840
you got, like how you you
found your initial product market fit, and

823
00:54:52.880 --> 00:54:58.559
then suddenly, at some point you
decide to turn around something that was so

824
00:54:58.760 --> 00:55:04.400
core in your positioning, in your
messaging, in your brand, and it

825
00:55:04.519 --> 00:55:08.920
definitely hurts, and it hurts kind
of forever because that was how it started

826
00:55:09.000 --> 00:55:14.239
and then it changes. So also
curious, like do you have any takes

827
00:55:14.280 --> 00:55:20.159
on companies that start open source and
then eventually become closers. I think this

828
00:55:20.199 --> 00:55:22.360
goes back to what I was talking
about earlier, and then sort of like

829
00:55:22.400 --> 00:55:24.920
one of my main learnings over the
last three years of being a co founder

830
00:55:24.920 --> 00:55:29.920
and a CEO and and sort of
transitioning from an engineering role building a business

831
00:55:29.920 --> 00:55:35.039
that makes money really freaking difficult.
It is extremely hard to do that,

832
00:55:35.719 --> 00:55:38.599
and in many ways for these companies
at scale, like even recently Radis Labs

833
00:55:38.679 --> 00:55:49.119
right realized that their business was a
risk of just flatly dying because the other

834
00:55:49.519 --> 00:55:52.159
companies were taking the open source projects
that they invested so much money into and

835
00:55:52.199 --> 00:55:54.960
that hosted it and made a better
hosting version of rais labs, which makes

836
00:55:54.960 --> 00:55:58.760
total sense, right if you just
think about it from like a purely logical

837
00:55:58.800 --> 00:56:04.000
sense. Raddis lab has invest in
number of resources to make reddis grade,

838
00:56:04.119 --> 00:56:06.760
and then they can only invest you
know, X number of resources to make

839
00:56:06.760 --> 00:56:12.480
reddist labs the hosting grade. Everybody
else can ignore the in part they don't

840
00:56:12.480 --> 00:56:15.800
have to make retis grades because riz
labs is doing that. They can invest

841
00:56:15.199 --> 00:56:19.880
in plus x the whole resources just
to make the hosting grade, and so

842
00:56:20.000 --> 00:56:24.679
inevitably and totally logically speaking, they
are hosting will be better than reddis Labs.

843
00:56:24.719 --> 00:56:28.400
Right, radist labs has no way
of competing because they don't have the

844
00:56:28.400 --> 00:56:30.519
same amount of resources. Now this
is very simple for of course, truly

845
00:56:30.559 --> 00:56:34.119
in a market of more differently,
there's you know, many confining factors whatever.

846
00:56:34.280 --> 00:56:37.079
I don't want to pretend like the
world works in this oversimplified way,

847
00:56:37.199 --> 00:56:39.519
but just purely logically speaking, you
just end up in a situation as a

848
00:56:39.519 --> 00:56:44.079
business where you literally cannot compete.
How are you going to do that?

849
00:56:44.159 --> 00:56:46.400
And so in fact, many businesses
like Century as well, like like reddist

850
00:56:46.440 --> 00:56:50.280
Labs. They're moving to a model
where the source is available. Right.

851
00:56:50.320 --> 00:56:52.000
It's a source available model where you
can read the source code of the thing

852
00:56:52.599 --> 00:56:55.440
and you can use it for non
commercial use, but if you want to

853
00:56:55.519 --> 00:57:00.480
use it for commercial use especially,
and then there's some nuances there where you

854
00:57:00.519 --> 00:57:04.119
know, some open source paces are
like you can even use it for commercial

855
00:57:04.199 --> 00:57:06.440
users in like in your business,
you can host it yourself, but you

856
00:57:06.440 --> 00:57:08.639
cannot sell a hosted version to somebody
else, right, Because often what ended

857
00:57:08.679 --> 00:57:12.960
up happening with these businesses, aws
would come around, they would offer they

858
00:57:12.960 --> 00:57:15.280
would just take your code, offer
a service that paid service of it,

859
00:57:15.599 --> 00:57:19.280
and just eat your whole business because
everybody uses it bus and they don't want

860
00:57:19.280 --> 00:57:21.440
to onboard a new vendor. Right, And that's it again, going back

861
00:57:21.480 --> 00:57:23.519
to building a business is freaking hard. That is an existential risk for your

862
00:57:23.559 --> 00:57:27.119
business. That is an existential ways
for any business. Right. If ITA

863
00:57:27.199 --> 00:57:29.239
suddenly comes around and it's like,
oh, thank you for building the green

864
00:57:29.320 --> 00:57:31.119
up source portuct, We're just going
to offer the same hosting service, you

865
00:57:31.159 --> 00:57:35.639
have no way to compete BECAUSEWS has
all the customers, so they can just

866
00:57:35.639 --> 00:57:37.079
go with all their customers and they
can be like word Scale, we can

867
00:57:37.079 --> 00:57:38.920
make this cheaper. It's much easier
for you to do because you don't have

868
00:57:38.920 --> 00:57:43.320
to onboard a new vendor and your
whole business skill goes out of business right

869
00:57:43.360 --> 00:57:46.079
like you literally don't have a choice. And so to me, it's unsurprising.

870
00:57:46.159 --> 00:57:49.159
It makes a lot of sense to
see a lot of these businesses moving

871
00:57:49.199 --> 00:57:54.280
to source available licenses that restrict either
commercial usage or just making a hosted service

872
00:57:54.679 --> 00:57:59.239
out of the thing outside of the
business that makes it. It makes the

873
00:57:59.280 --> 00:58:04.880
tonal sense to me. And now
with for example, reddis Labs in truth

874
00:58:05.000 --> 00:58:07.880
the competition that they're now running into
like upstash And if you folks have seen

875
00:58:07.960 --> 00:58:12.079
upstash, Upstash just completely re implemented
reddits on a completely different architecture that's faster

876
00:58:12.159 --> 00:58:15.599
and better and h compatible and in
some ways just more modern. And so

877
00:58:15.599 --> 00:58:20.400
now reddits Labs has to compete with
upstash on who can build the better reddits

878
00:58:20.440 --> 00:58:22.280
right and upstash is building really upstash. It just happens to use the reddest

879
00:58:22.320 --> 00:58:27.480
api. But fundamentally they're now competing
at that level and they're because they're if

880
00:58:27.480 --> 00:58:30.360
they there's a timing question. But
if they had made reddis stores available from

881
00:58:30.360 --> 00:58:34.840
the start, then they wouldn't even
have had to compete with other reddits hosting

882
00:58:34.840 --> 00:58:37.840
services. They would only have had
to compete with businesses on an even footing

883
00:58:37.079 --> 00:58:40.400
where every business has to build the
reddest thing itself, right, the actual

884
00:58:40.400 --> 00:58:44.320
storage engine, and then build the
hosted service on top of that. Every

885
00:58:44.320 --> 00:58:46.239
business would upstairch is competing in that
way, and reddis laps is competing in

886
00:58:46.280 --> 00:58:49.920
that way. That's a fair under
air quotes fight. As far as fights,

887
00:58:50.280 --> 00:58:52.320
the market's never fair. But you
know what I'm saying, So to

888
00:58:52.360 --> 00:58:54.119
me, that makes a lot of
sense. I can totally see why business

889
00:58:54.159 --> 00:58:57.920
have to do that, and why
even companies that are very, very successful,

890
00:58:57.920 --> 00:59:00.199
like Hashikorp, there were recent news
that looking to get acquired by another

891
00:59:00.239 --> 00:59:05.119
company because they're just running into market
issues but being built around these open salt

892
00:59:05.119 --> 00:59:07.880
projects, and somebody else can build
terraform cloud around Terraform, but doesn't have

893
00:59:07.920 --> 00:59:12.559
to invest the resources into building Terraform. Right again, Hashi Corp. Has

894
00:59:12.599 --> 00:59:15.920
invested all these resources into making Vault
and Nomad and hot and Terraform and then

895
00:59:15.920 --> 00:59:17.400
build hosting services on top of that, which is great for branding. But

896
00:59:17.440 --> 00:59:21.159
then if somebody else comes around and
just focuses on the hosted services, they

897
00:59:21.199 --> 00:59:23.360
can outcompete them on the product,
and people will generally choose the better product

898
00:59:23.360 --> 00:59:25.960
in many ways, not always in
it that you know, Hashi Cook gets

899
00:59:25.960 --> 00:59:28.559
a lot of advantage of being the
people that make the thing, and so

900
00:59:28.599 --> 00:59:30.880
people trust them more. Whatever.
There's a lot of confounding factors. But

901
00:59:30.880 --> 00:59:32.360
probably speaking, if you can make
it t an next better Terraform hosting platform

902
00:59:32.360 --> 00:59:37.960
because you can invest all your all
your resource into making the hosted platform versus

903
00:59:37.000 --> 00:59:40.239
making Terraform better, very likely many
people will buy you just because you're the

904
00:59:40.239 --> 00:59:43.039
better product that they will go O, hey, let me look at I'm

905
00:59:43.079 --> 00:59:45.239
using Terraform. Let me look at
teroform cloud. But also there's a new

906
00:59:45.239 --> 00:59:46.719
observe vendor that I've heard about that
might be better. Oh, actually,

907
00:59:46.760 --> 00:59:49.880
there's so much better for our use
kids. I'm just gonna pay for them,

908
00:59:49.920 --> 00:59:52.199
even though they're not Hashi Court.
So I totally get it. I

909
00:59:52.239 --> 00:59:57.519
totally get my businesses to do that, and I think it's I think it's

910
00:59:57.519 --> 01:00:02.320
the right choice. So I think
there's one exception I can think of,

911
01:00:02.639 --> 01:00:08.800
and I guess I should also say
I'm also still I think we could probably

912
01:00:08.800 --> 01:00:12.920
talk about this for hours, like
the open source firsut closed source thing.

913
01:00:13.000 --> 01:00:16.119
I'm still I don't know which is
better. But a huge exception that I

914
01:00:16.119 --> 01:00:20.559
can think of is super Base,
right, and I think they even had

915
01:00:20.679 --> 01:00:24.320
one of like the world record of
if there is such a thing for like

916
01:00:24.440 --> 01:00:30.239
seed funding around And I think it
depends on the product. Like I agree,

917
01:00:30.280 --> 01:00:32.760
if you offer like an open source
tool where you can just I don't

918
01:00:32.760 --> 01:00:37.400
know, like I'm saying, like
MPM install something and that is the product,

919
01:00:37.920 --> 01:00:43.159
then you're at high risk that basically
someone will just hire a dev and

920
01:00:43.280 --> 01:00:45.880
do whatever they want with your product. Right. They can always go faster

921
01:00:45.960 --> 01:00:49.960
than that if you're not, if
you're the one who has to fight the

922
01:00:50.000 --> 01:00:53.199
triage of issues and all this stuff. But with something like super base,

923
01:00:54.280 --> 01:01:00.519
I really think it depends on the
nature of what the product is and case

924
01:01:00.119 --> 01:01:05.679
it's if anyone has done this before. It's like a series of Docker images,

925
01:01:05.719 --> 01:01:08.880
like you can really recreate their entire
cloud offering product on your own instance,

926
01:01:09.519 --> 01:01:13.400
but you have to like you have
to install like Kong, which is

927
01:01:13.400 --> 01:01:17.119
like a more modern engine X,
you have to install their their UI container

928
01:01:17.159 --> 01:01:22.360
and anybody who knows like the pain
of doing that. I think a lot

929
01:01:22.400 --> 01:01:24.480
of companies may even like they may
even go so far like, hey,

930
01:01:24.519 --> 01:01:29.199
we can you know, we can
do the open source version of this,

931
01:01:29.519 --> 01:01:32.199
but we need like, I don't
know, three weeks, three devs and

932
01:01:32.239 --> 01:01:37.400
we have to configure everything. So
I think if if companies stay like kind

933
01:01:37.440 --> 01:01:42.519
of a should I say, like
like crafty with with how they offer their

934
01:01:42.519 --> 01:01:46.719
open source tooling. Of course you're
always on the edge. Of course you're

935
01:01:46.719 --> 01:01:51.119
always going to have people who will
just copy it and reuse it. But

936
01:01:51.159 --> 01:01:54.079
I think that's only on the margin. And like for me, like I

937
01:01:54.360 --> 01:01:59.559
have a paid like the Mini Superbase
instance, just because I don't want to

938
01:01:59.599 --> 01:02:02.960
go through the whole thing like the
tooling of you know, of doing that.

939
01:02:04.320 --> 01:02:06.800
So yeah, I'm only whatever twenty
five bucks a month, so I'm

940
01:02:06.840 --> 01:02:10.519
not a huge consumer. But I
can imagine for larger, much more large

941
01:02:10.559 --> 01:02:14.800
corporations, they'd be more than happy
to pay for whatever there they have some

942
01:02:15.199 --> 01:02:19.280
enterprise offering. So I don't know, I like I said, I think

943
01:02:19.280 --> 01:02:23.159
you could talk about this and argue
forever, because I also like the one

944
01:02:23.199 --> 01:02:29.400
product that I have that is profitable
is closed source. So I'm experimenting right

945
01:02:29.440 --> 01:02:32.199
now with the open source. So
maybe I'll be eating eating my words in

946
01:02:32.239 --> 01:02:37.039
a few months once there's like twenty
clones of my product somewhere and I'm not

947
01:02:37.079 --> 01:02:44.400
getting any money, so oh boy. Yeah. And well, we are

948
01:02:44.440 --> 01:02:51.519
at one hour and in four minutes
of show already, so I imagine that

949
01:02:52.280 --> 01:02:57.960
we will soon start wrapping things up. But I really want to give you

950
01:02:58.119 --> 01:03:02.559
Max a space for you to talk
more about your current company, because I

951
01:03:02.639 --> 01:03:10.320
do think that it is not just
giving you space to promote yourself just because

952
01:03:10.800 --> 01:03:15.480
of that, but because I actually
believe it's Zach is very valuable for the

953
01:03:15.519 --> 01:03:22.079
audience that is listening to this.
So please sell your company to us,

954
01:03:22.119 --> 01:03:28.079
Like I do think it's a really
great idea, So tell us a little

955
01:03:28.119 --> 01:03:32.639
bit more about the problems that you
solve and how does it work. Yeah,

956
01:03:32.679 --> 01:03:38.480
thank you. Probably speaking lots of
companies, especially at the enterpase level

957
01:03:38.519 --> 01:03:43.519
or adopting graphical as their central API. And many of these businesses, particularly

958
01:03:43.559 --> 01:03:46.159
for US, we largely see e
commerce and news, retail and media organizations.

959
01:03:46.960 --> 01:03:50.320
They have use cases where they have
lots of public and redtavy data.

960
01:03:50.360 --> 01:03:52.079
Right if you think about an e
commerce webshop, everybody's looking at the same

961
01:03:52.079 --> 01:03:54.880
shoe. If you're thinking about a
news website, everybody's looking at the same

962
01:03:54.960 --> 01:03:58.559
article. Right. That data is
very public, it's very reat heavy,

963
01:03:58.719 --> 01:04:01.440
it doesn't change very frequently, and
so by putting us our graphicll cited in

964
01:04:01.519 --> 01:04:04.639
front of your graphical EPI, we
can cash those responses at the edge,

965
01:04:04.719 --> 01:04:08.719
really close to the user, and
that has really three main benefits. One

966
01:04:09.159 --> 01:04:13.199
is it's much cheaper. Some of
our customers literally have ninety nine percent cash

967
01:04:13.199 --> 01:04:15.639
itIt rates, meaning their origin infrastructure
has to handle ninety nine percent less traffic

968
01:04:15.639 --> 01:04:19.199
because we just respond with the result
from the age immediately that we have cashed.

969
01:04:19.679 --> 01:04:25.400
Now, that in turn means that
they can reduce their infrastructure significantly,

970
01:04:25.440 --> 01:04:28.199
and in fact they say, you
know, thirty forty percent of the infustry

971
01:04:28.239 --> 01:04:30.960
costs just by pure virtue of having
us in the front and cashing all the

972
01:04:30.039 --> 01:04:33.559
data at the age. And then
the other part is traffic spike handling,

973
01:04:33.559 --> 01:04:36.559
because if you think about news website, for example, if everybody's reading the

974
01:04:36.559 --> 01:04:41.519
same article, it's very spiky traffic. Right if something happens, if some

975
01:04:41.559 --> 01:04:44.519
tragedy happens then a news website,
We've got an immense traffic spike on that

976
01:04:44.559 --> 01:04:47.159
specific article, and everybody's looking at
that same article. Now, by default,

977
01:04:47.199 --> 01:04:50.119
your origin infrastucture has to handle that
traffic spike, right, And many

978
01:04:50.280 --> 01:04:55.440
or news organizations just keep their infrastructure
scaled up to the maximum so that when

979
01:04:55.480 --> 01:04:58.199
the traffic spike comes in, which
is when their business makes money, they

980
01:04:58.239 --> 01:05:01.599
can handle the traffic spike. Choose. All of that traffic is almost always

981
01:05:01.639 --> 01:05:04.719
accessing the same data, right,
And so fundamentally, if you can catch

982
01:05:04.760 --> 01:05:08.639
that at the IG, your origin
doesn't even notice the traffic spike because we

983
01:05:08.719 --> 01:05:10.960
handle it for you, right,
you literally don't have to worry about traffic

984
01:05:11.000 --> 01:05:13.519
spikes anymore. And then finally,
of course, the main benefit from the

985
01:05:13.559 --> 01:05:16.599
edge catching is performance that a lot
of developers love. Where because it's at

986
01:05:16.599 --> 01:05:19.960
the edge, we can serve a
cash result to your users in about thirty

987
01:05:19.960 --> 01:05:24.280
five to fifty million seconds no matter
where you are on the planet, right,

988
01:05:24.320 --> 01:05:27.559
And so if you have your origin
of such you're sitting in US is

989
01:05:27.639 --> 01:05:31.119
one in aws. Then even if
your users are in Italy, or they're

990
01:05:31.159 --> 01:05:34.159
in Australia, or they're in Asia
or they're in North America or they're in

991
01:05:34.199 --> 01:05:36.679
South America. It doesn't matter.
If something is cash, they're going to

992
01:05:36.679 --> 01:05:40.760
get it within about thirty to fifty
million seconds, depending on their Internet connection.

993
01:05:41.000 --> 01:05:44.880
It's just going to be ridiculously fast. And the interesting thing I think

994
01:05:44.920 --> 01:05:46.559
for a lot of people that are
listening. Of course, if you're if

995
01:05:46.559 --> 01:05:49.079
you are an e commerce or a
news organization, you use graphicill, please

996
01:05:49.079 --> 01:05:50.840
come talk to us. We'd love
to figure out if you our products can

997
01:05:50.920 --> 01:05:54.559
work for you. But really the
interesting thing is that a lot of what

998
01:05:54.599 --> 01:05:57.920
we do is only possible because of
graph kill, right, one of the

999
01:05:58.079 --> 01:06:00.239
one of the sort of historical If
you look at any ur online that's comparing

1000
01:06:00.280 --> 01:06:04.280
rest to graphicill, almost always you
will see rest is great for cashing and

1001
01:06:04.320 --> 01:06:08.840
graphicill sucks for cashing, and the
truth is actually much more nuanced than that.

1002
01:06:08.840 --> 01:06:11.760
In fact, graph killing in many
ways is better for cashing than rest

1003
01:06:11.880 --> 01:06:15.679
because it tells us what data is
in the response. It tells us,

1004
01:06:15.719 --> 01:06:18.599
through its in respectability, what is
the actual data that's coming back for this

1005
01:06:18.719 --> 01:06:21.639
query, And so that allows us
to do things like partial quarry cashing.

1006
01:06:21.679 --> 01:06:25.440
We can at the edge, look
at loop through your cash rules or a

1007
01:06:25.480 --> 01:06:29.400
cash configuration, figure out which parts
of this query are how cacheable, make

1008
01:06:29.440 --> 01:06:31.360
them distinct cash entries, and then
only have to fetch the data from the

1009
01:06:31.400 --> 01:06:34.079
origin to fulfill the rest of the
data that we don't have in the cash

1010
01:06:34.320 --> 01:06:38.519
yet. Right, that is literally
impossible. With rest, we can do

1011
01:06:38.559 --> 01:06:42.400
really smart cash validation because when imutation
passes through us, we know exactly what

1012
01:06:42.480 --> 01:06:45.519
data has changed, and so we
can invalidate only the specific cash entries that

1013
01:06:45.519 --> 01:06:47.840
contain that specific data. And it's
not like, oh yeah, if a

1014
01:06:47.920 --> 01:06:51.199
post for if a post request for
slash user comes in, then invalidate the

1015
01:06:51.239 --> 01:06:56.719
corresponding gets for slash user. It's
much more advanced to that because when a

1016
01:06:56.840 --> 01:07:00.559
mutation comes in for edited user,
we know every single quarry that fetched the

1017
01:07:00.559 --> 01:07:02.840
blog post author that was written by
that user, We know every single quarry

1018
01:07:02.880 --> 01:07:05.760
were the user settings for fetched for
that user, and we can invalid it

1019
01:07:05.840 --> 01:07:10.199
only and exactly that within about one
hundred and fifty million seconds globally. And

1020
01:07:10.239 --> 01:07:14.079
again that's only possible because graphicill tells
us what data is in the what data

1021
01:07:14.079 --> 01:07:16.119
we're actually cashing, right, what
objects, what entities are in the data

1022
01:07:16.159 --> 01:07:18.840
that was fetched and that are cash
at the agent that are changing over time,

1023
01:07:19.360 --> 01:07:23.199
and so a lot of the things
that we do are we've really built

1024
01:07:23.599 --> 01:07:28.559
the most advanced API casing solution.
It just happens to be graphical specific because

1025
01:07:28.559 --> 01:07:31.440
graphicill allows us to build this advanced
API cashing solution, and through the way

1026
01:07:31.440 --> 01:07:34.119
graphic will works, we can do
a lot of things that otherwise wouldn't be

1027
01:07:34.159 --> 01:07:38.400
possible. And so we're focused on
Graphkill simply because it allows us to build

1028
01:07:38.400 --> 01:07:41.519
the best product and because we believe
and we love graphicill quite frankly, like

1029
01:07:41.559 --> 01:07:44.840
as an organization, everybody that works
here loves graphical We've all used graphkilled at

1030
01:07:44.880 --> 01:07:46.360
large skill. We freaking love it. And then later on, so that's

1031
01:07:46.360 --> 01:07:48.920
what we started with, and then
later on also we added now on graphicel

1032
01:07:49.000 --> 01:07:53.480
metrics that give you very graphical specific
insights into the operations where we're seeing in

1033
01:07:53.519 --> 01:07:56.079
production, into what types and fields
are, how used or how slow,

1034
01:07:56.119 --> 01:07:58.760
and how many areas. You're getting
very specific air tracking for graphicill. And

1035
01:07:58.800 --> 01:08:01.079
then also now we've shipped the security
features around graphkill, both for sort of

1036
01:08:01.199 --> 01:08:05.119
common exploits like aliases and pipths and
and all kinds of limits, but also

1037
01:08:05.119 --> 01:08:09.920
persisted operations and rate limiting sort of
help you protect your graphic COLPI in many

1038
01:08:09.920 --> 01:08:12.719
ways similarly to what you would do
with the rest API, but very graphicill

1039
01:08:12.760 --> 01:08:15.239
specific again with a deep understanding of
graphill and how it works. And so

1040
01:08:15.960 --> 01:08:18.760
that's really if you're using graphkill scale. If you're if you're running into operationalizing

1041
01:08:19.000 --> 01:08:23.800
issues either because you're you know,
you have large traffic backs in your news

1042
01:08:23.880 --> 01:08:27.359
organization, or because you don't have
the observability that you need, or you're

1043
01:08:27.359 --> 01:08:30.359
getting malicious actors trying to deal with
your API, come talk to us.

1044
01:08:30.359 --> 01:08:32.399
We've built products around graphkill, going
back to the open source point, our

1045
01:08:32.439 --> 01:08:35.600
product are fully proprietary. Will bullet
on graphkill, but come talk to us,

1046
01:08:35.760 --> 01:08:39.600
Go go use our CDN in front
of your graph CLIPI and we'll happily

1047
01:08:39.600 --> 01:08:43.720
solve those problems for you. So
just to make sure I get this right,

1048
01:08:43.800 --> 01:08:48.880
Max, And first off, congratulations
on the product. It's definitely a

1049
01:08:49.039 --> 01:08:55.399
major thing, and I can only
imagine how long it took for you guys

1050
01:08:55.439 --> 01:08:58.760
to build this thing and the effort
that it takes to actually maintain it.

1051
01:08:59.800 --> 01:09:03.439
So congrats for that. My question
is just to make sure that I fully

1052
01:09:03.520 --> 01:09:11.000
understand the product. So from your
description, my understanding is that it's kind

1053
01:09:11.000 --> 01:09:15.920
of like cloud flare in the sense
that it's a proxy that sits on top

1054
01:09:16.000 --> 01:09:25.119
of your API and on an application
layer. It can interpret the graph QL

1055
01:09:25.239 --> 01:09:31.760
requests parts that query and figure out
in a smart way which parts of that

1056
01:09:31.880 --> 01:09:36.319
querry can be cashed or not,
and then the parts that can be cashed

1057
01:09:36.439 --> 01:09:43.279
it already returns directly without even going
to your API, and if it can't

1058
01:09:43.319 --> 01:09:45.800
be cashed, then it goes to
your API, waits for the response,

1059
01:09:46.439 --> 01:09:51.000
saves that response in a cash database
that I don't even need to carry to

1060
01:09:51.279 --> 01:09:57.119
care about, and then returns that
to the end user. Is that correct?

1061
01:09:57.840 --> 01:10:00.159
Yeah, that's right. And if
you think about you know what ret

1062
01:10:00.239 --> 01:10:03.319
API, you have an endpoint like
slash gate users slash one. If you

1063
01:10:03.359 --> 01:10:06.439
have some of that user data cash
from another quarry, that doesn't help you

1064
01:10:06.479 --> 01:10:10.079
in cashing the get slash user slash
one route. Right, that's a completely

1065
01:10:10.119 --> 01:10:13.560
distinct endpoint that that returns opaque data
where you don't know what it is.

1066
01:10:13.880 --> 01:10:16.159
With graphkill, we can know exactly
when you're fetching user number one whether or

1067
01:10:16.159 --> 01:10:19.439
not we have that cash entry already
and we can just return that immediately without

1068
01:10:19.439 --> 01:10:21.880
even having to go ask the origin. And on top of that, if

1069
01:10:21.920 --> 01:10:27.600
you're fetching say users, and in
one quarer you're fetching some of the data,

1070
01:10:27.600 --> 01:10:29.880
then another quarer you fetching more of
the data, we can know that

1071
01:10:29.920 --> 01:10:32.399
we have some of the data in
the cash already and take those fields out

1072
01:10:32.399 --> 01:10:35.279
of the graphicill career and only send
a request for everything else that we need

1073
01:10:35.399 --> 01:10:39.279
to the origin. Because graphicill allows
us to select the exact fields that we

1074
01:10:39.319 --> 01:10:43.800
need to fulfill the data requirements,
right, and so we can do essentially

1075
01:10:43.800 --> 01:10:46.720
the most efficient API level caching that
you can do at that layer, because

1076
01:10:46.760 --> 01:10:50.159
we have full control over which fields
that we have in the cash, however

1077
01:10:50.159 --> 01:10:53.840
we cash them, and how do
we get the rest of the fields from

1078
01:10:53.880 --> 01:10:57.920
the origin. So yeah, you're
totally right. Nice. I really like

1079
01:10:58.079 --> 01:11:02.520
the end user experience of it,
and I really like how it doesn't force

1080
01:11:02.640 --> 01:11:08.880
me to conform to any specific way
of writing my APIs. I can just

1081
01:11:09.479 --> 01:11:15.479
do whatever whatever I'm used to and
build my APIs in whatever way I want

1082
01:11:15.520 --> 01:11:20.079
to, and then put your service
on top of it. That's pretty cool.

1083
01:11:20.399 --> 01:11:29.840
That's pretty cool. Nice, okay, and to which types of businesses

1084
01:11:29.880 --> 01:11:35.680
do you think this is more interesting? Because well, I imagine that anyone

1085
01:11:35.720 --> 01:11:40.399
that has a graph quol API could
benefit from it, probably right, Like,

1086
01:11:40.439 --> 01:11:45.760
there's no specific use case besides having
your API built on graph qol.

1087
01:11:46.079 --> 01:11:51.439
But what if I am just not
so close to the edge of technology yet

1088
01:11:51.520 --> 01:11:56.159
and I'm not built on graph quol. Is there any way for me to

1089
01:11:56.359 --> 01:12:00.479
steal extract value from your solution or
is it really just graph l specific.

1090
01:12:01.479 --> 01:12:05.039
It's really graphical specific. And it's
like I said, a lot of what

1091
01:12:05.119 --> 01:12:09.479
we do we couldn't actually do any
other way, Like we couldn't do for

1092
01:12:09.520 --> 01:12:14.479
rest APIs we really have to go
figure that out for for graph kill,

1093
01:12:14.520 --> 01:12:16.960
and it really only works with graphicills. So the kind of companies that we

1094
01:12:16.960 --> 01:12:20.000
do with our large organizations that use
graphkill at a really large scale, and

1095
01:12:20.319 --> 01:12:26.439
for the edge caching, it's businesses
that have you know, very what we

1096
01:12:26.560 --> 01:12:29.359
call it read heavy and public traffic. And then for the matrix in the

1097
01:12:29.399 --> 01:12:31.119
security is just any company that uses
graph kill and that is that doesn't have

1098
01:12:31.079 --> 01:12:35.760
the observability they need or the security
that they are a need to protect from

1099
01:12:35.800 --> 01:12:42.960
malicious actors. Gotcham Okay, I
just sent the link to stell it on

1100
01:12:43.399 --> 01:12:48.319
the comment section, So if you're
listening to the show from a player that

1101
01:12:48.399 --> 01:12:54.279
doesn't have a comment section, just
know that is s T E l l

1102
01:12:54.520 --> 01:13:01.439
A t E dot co so stell
it dot co it to house. You

1103
01:13:01.479 --> 01:13:08.840
can also just search online for stell
It, Max Stoiber, and Google is

1104
01:13:08.880 --> 01:13:12.640
going to somehow figure out what it
is that that you typed and point you

1105
01:13:12.680 --> 01:13:15.000
in the right direction. So yeah, definitely check it out. If you're

1106
01:13:15.039 --> 01:13:23.000
working with APIs guys, I think
we can start wrapping things up. So

1107
01:13:23.640 --> 01:13:28.520
unless Max, you have anything that
you would like to say that you haven't

1108
01:13:28.600 --> 01:13:30.920
yet that you think it's really important, I will just say thank you for

1109
01:13:30.960 --> 01:13:33.359
letting me rent about a whole bunch
of different tangents. I don't know that

1110
01:13:33.399 --> 01:13:36.840
this went in the direction that any
of you expected here this podcast, given

1111
01:13:36.840 --> 01:13:40.760
that the title style components. We
went a bit prower than that. But

1112
01:13:41.159 --> 01:13:44.079
I hope it's most insightful to people, and I hope you all enjoy it.

1113
01:13:44.239 --> 01:13:47.760
I circle enjoyed the conversation. I
hope your listeners will too. Thank

1114
01:13:47.800 --> 01:13:50.880
you. Yeah, I don't think
that people looking at the title of the

1115
01:13:50.920 --> 01:13:58.000
episode are going to grasp the entire
context. But yeah, thank you for

1116
01:13:58.359 --> 01:14:03.079
those rents, like it's it's actually
really good that you you were so open

1117
01:14:03.119 --> 01:14:10.439
to sharing your opinion because oftentimes people
just don't want to share those rents in

1118
01:14:11.640 --> 01:14:17.279
a public content such as this,
So I definitely appreciate your honest opinion about

1119
01:14:17.279 --> 01:14:21.600
such topics. So yeah, let's
start wrapping things up. Let's do a

1120
01:14:21.680 --> 01:14:27.520
quick round of promos, so we
can do you for last Max, but

1121
01:14:27.600 --> 01:14:33.079
I'm pretty confident that you kind of
already did your promo. But in any

1122
01:14:33.119 --> 01:14:38.000
case, if you want to promote
other stuff, you can definitely do that.

1123
01:14:38.399 --> 01:14:45.680
So starting on my end, really
not in major, just gonna promote

1124
01:14:45.720 --> 01:14:49.319
the companies producing the show. So
for any of you that want to learn

1125
01:14:49.319 --> 01:14:55.079
more about software development, you can
check out the other content produced by top

1126
01:14:55.119 --> 01:14:59.479
and dovs. There are several other
podcasts that top and Devs produces, and

1127
01:14:59.560 --> 01:15:03.600
they are all courses that they offer. So yeah, definitely check out the

1128
01:15:03.680 --> 01:15:10.159
website topendewth dot com if you're interested
in that. And void dot com is

1129
01:15:10.479 --> 01:15:15.439
U n voi d dot com.
So the opposite of void unvoid. Some

1130
01:15:15.479 --> 01:15:19.279
people think that it's on in terms
of like On and Off, but it's

1131
01:15:19.439 --> 01:15:28.239
u N and they offer task based
design and software development services. So the

1132
01:15:28.319 --> 01:15:33.399
difference being that whenever you need to
hire external professionals to do work for your

1133
01:15:33.439 --> 01:15:38.960
company, you generally have to pay
them by the hour, and that incentivizes

1134
01:15:39.000 --> 01:15:43.000
them to just take their time because
they're going to get more money. Right.

1135
01:15:43.800 --> 01:15:49.840
So Void completely flips that business model
by making sure that the clients only

1136
01:15:49.920 --> 01:15:57.560
pay after the tasks are delivered and
approved, and the clients know beforehand how

1137
01:15:57.640 --> 01:16:01.079
much the tasks are going to cost
because Void estimates points for each task,

1138
01:16:01.159 --> 01:16:08.000
and the clients pay on top of
this point estimation. So clients get cost

1139
01:16:08.079 --> 01:16:14.560
pervisibility and they also get quality assurance
because they can just request changes until they're

1140
01:16:14.600 --> 01:16:18.840
happy with what is delivered. So
if you're interested in that, definitely check

1141
01:16:18.880 --> 01:16:25.800
Outvoid dot com. These are just
gonna be my my promos for this episode.

1142
01:16:25.920 --> 01:16:29.439
So, Peter, do you have
anything you'd like to mention? Okay,

1143
01:16:30.239 --> 01:16:32.319
how about you, Chris? Anything
new? Yep? Yeah, I'm

1144
01:16:32.319 --> 01:16:38.560
just going to post something from Superbase. The founder posted. I mean,

1145
01:16:38.600 --> 01:16:41.000
you can take it with a grain
of salt. Maybe it is all marketing,

1146
01:16:41.039 --> 01:16:44.439
but he talks about if you should
open source your company. I think

1147
01:16:44.439 --> 01:16:47.800
it's I think it's interesting. And
then the product I've been working on,

1148
01:16:48.039 --> 01:16:54.279
I've posted it quite a bit the
last few weeks. I actually recently got

1149
01:16:54.680 --> 01:16:57.520
into the finalist stage. I don't
know if you guys have heard of backdrop

1150
01:16:57.560 --> 01:17:00.439
build before. So it was like
one thousand or so devs or so when

1151
01:17:00.439 --> 01:17:05.560
they pick like fifty finalists, but
you can it's basically a decorative way to

1152
01:17:05.600 --> 01:17:12.800
create software engineering videos, perhaps later
other types of videos. But over the

1153
01:17:12.800 --> 01:17:15.760
weekend I got the API n point
up, so it's not on that website

1154
01:17:15.840 --> 01:17:18.800
yet, but it'll be up soon. Basically, you can think about it

1155
01:17:18.840 --> 01:17:23.439
from a very high level. You
give Jason to an endpoint, and you

1156
01:17:23.520 --> 01:17:28.439
get an animated video, like a
lifelike animated video of you know, dictating

1157
01:17:28.520 --> 01:17:35.399
whatever you're coding or whatever you're building
back as an MP four URL. So

1158
01:17:35.560 --> 01:17:42.159
pretty good. And I sent all
those links in the show notes in the

1159
01:17:42.199 --> 01:17:45.439
comment section, So definitely check it
out if you're interested in that. So

1160
01:17:45.920 --> 01:17:49.680
Max, just circling back to you, is there anything else you'd like to

1161
01:17:49.720 --> 01:17:54.920
promote? Well, I sure,
hope I didn't. I've set any open

1162
01:17:54.960 --> 01:17:58.560
source funnels that are listening to this
episode. I would love to hear a

1163
01:17:58.600 --> 01:18:00.560
country and thinking, I'm definitely going
to take that super based article. I'm

1164
01:18:00.600 --> 01:18:04.600
very curious how they thought about open
sourcing their company. I have nothing else

1165
01:18:04.640 --> 01:18:08.880
to plug. Go go check out
Stilly if you using graph pill. I'm

1166
01:18:08.880 --> 01:18:13.159
at mx SDBR on all platforms,
Twitter, get up, Instagram, wherever

1167
01:18:13.199 --> 01:18:17.600
you want to follow people, even
blue sky Master it on whatever at MXSTBR,

1168
01:18:17.960 --> 01:18:20.560
which is my name which looks really
complicated, but it's really just my

1169
01:18:20.640 --> 01:18:25.439
name without vowels, so you can
find me anywhere. And thank you all

1170
01:18:25.479 --> 01:18:28.479
so much for having me. Thank
you very much. Max. Feel free

1171
01:18:28.520 --> 01:18:31.960
to join and rent a little bit
more about other subjects whenever you want.

1172
01:18:32.680 --> 01:18:39.600
And congratulations on your company. I
hope you are very successful. I'm pretty

1173
01:18:40.279 --> 01:18:44.880
sure it will be because everything else
that you've worked on thus far has been

1174
01:18:44.960 --> 01:18:50.920
so I'm pretty excited about the next
steps in this journey. So yeah,

1175
01:18:51.000 --> 01:18:55.880
man, congrats, and feel free
to hit me up if you want to

1176
01:18:56.119 --> 01:18:59.479
join the podcast any other time.
Thank you

