1
00:00:05,120 --> 00:00:08,960
Okay, what's going on? Everybody? Welcome to another episode of Adventures in

2
00:00:09,240 --> 00:00:14,240
DevOps. I'm your host, Will
Button and back after attending it was the

3
00:00:14,320 --> 00:00:18,920
DevOps conference in Zurich last week,
right Warren? Yeah for sure. And

4
00:00:19,039 --> 00:00:23,280
you know, I actually listened to
a little bit of last episode and I

5
00:00:23,320 --> 00:00:26,640
felt like you introduced me even though
I wasn't there. So I feel like

6
00:00:26,679 --> 00:00:30,280
I have a free you know,
I don't need to introduce myself this episode.

7
00:00:32,759 --> 00:00:37,679
I will say that I owe everyone
an interesting fact. And this time

8
00:00:37,719 --> 00:00:44,359
when we were at the conference,
we specifically went out and hosted an open

9
00:00:44,359 --> 00:00:50,000
space where I talked with a group
of experienced develops practitioners and we were really

10
00:00:50,039 --> 00:00:53,039
trying to define what a platform even
is. I think this word is thrown

11
00:00:53,079 --> 00:00:58,200
away around everywhere, and after an
hour we really came to a great conclusion.

12
00:00:58,719 --> 00:01:06,879
It's something horrioral and that's I think
there's an aspect here where it doesn't

13
00:01:06,920 --> 00:01:10,000
all doesn't offer value to the end
user. I think is an important thing.

14
00:01:10,079 --> 00:01:15,719
So one definition we had was everything
other than the product, which is

15
00:01:15,799 --> 00:01:19,959
interesting to think that the platforms we
build aren't aren't value add but I,

16
00:01:21,000 --> 00:01:23,200
you know, I there's some interesting
and deep dive there. But yeah,

17
00:01:23,319 --> 00:01:26,560
no, it was great. It
was great. Confidence. I'm back.

18
00:01:26,640 --> 00:01:29,560
I'm happy to be back though,
right, I'm cool. Happy to have

19
00:01:29,640 --> 00:01:34,560
you back. And then also joining
us in the studio the co founder and

20
00:01:34,719 --> 00:01:40,239
CEO of Kurtosis, Galen Marquetti.
Galen, welcome, thank you, thank

21
00:01:40,280 --> 00:01:42,280
you for having me, and hello
everybody. Yeah, I'm excited to have

22
00:01:42,359 --> 00:01:45,680
you here. You know, we've
talked a little bit in the past,

23
00:01:45,799 --> 00:01:51,519
and then we've also I've also been
using critosis a little bit and it's very

24
00:01:51,560 --> 00:01:57,239
basic level. But tell us just
give us like the high level overview of

25
00:01:57,439 --> 00:02:02,079
Kurtosis, and then we're going to
dig into what led us to this point

26
00:02:02,120 --> 00:02:07,479
in life. So the highest level
overview is that Krotosis makes it easy to

27
00:02:07,560 --> 00:02:15,520
get development environments and testing environments set
up for back end systems. So I

28
00:02:15,680 --> 00:02:21,800
think something like doctor composed or helm
charts with more parameterizability, more flexibility,

29
00:02:22,120 --> 00:02:27,879
and some things that give you greater
portability guarantees. Gotcha. So when we're

30
00:02:27,879 --> 00:02:32,039
talking about dev environments, as a
developer working on a product, I need

31
00:02:32,080 --> 00:02:37,520
to test the code that I'm writing, but that means I need to run

32
00:02:37,599 --> 00:02:40,919
the application. But then I also
need all the supporting micro services, and

33
00:02:40,960 --> 00:02:46,479
then those are completely worthless without the
data that gives me some kind of real

34
00:02:46,599 --> 00:02:52,800
world or pseudo real world scenario to
test against. Is that right? That's

35
00:02:52,800 --> 00:02:54,759
about right, And I think a
good way to think about the pain that

36
00:02:54,840 --> 00:03:00,639
kind of motivated the whole thing is
that part about running other people's code.

37
00:03:00,719 --> 00:03:04,520
We're running your own code. Usually
people have a handle on that one.

38
00:03:04,680 --> 00:03:09,120
It's when you need six or seven
other micro services plus the data. Now

39
00:03:09,159 --> 00:03:13,080
you have to dig into how do
I set these things up? And a

40
00:03:13,120 --> 00:03:16,879
lot of the time that I get
stuck at that phase for an in order

41
00:03:17,080 --> 00:03:20,879
amount of time, and that's kind
of the heart of what we're doing.

42
00:03:21,919 --> 00:03:24,960
Yeah, for sure. I can
think back of different scenarios where I've addressed

43
00:03:24,960 --> 00:03:30,400
this in the past, and some
of the approaches I've used are the you

44
00:03:30,400 --> 00:03:38,000
know, like the seven thousand line
Bash script. There's the golden machine or

45
00:03:38,039 --> 00:03:42,439
the golden VM that no one's allowed
to touch because it has everything on it.

46
00:03:42,560 --> 00:03:47,360
Right at the moment, there's trying
to bribe your security team to let

47
00:03:47,439 --> 00:03:53,240
you connect to the staging environment across
the firewall. So those are some of

48
00:03:53,240 --> 00:03:58,599
the approaches I've used in the past. Yeah, it's exactly right. It's

49
00:03:58,639 --> 00:04:02,039
exactly right, and it's what a
lot of the times people get a good

50
00:04:02,080 --> 00:04:05,639
system set up for kind of a
golden path they do all the time,

51
00:04:05,919 --> 00:04:11,360
but then there's this like long tail
of things that you always do a long

52
00:04:11,439 --> 00:04:14,319
tail thing maybe once a week,
but it's a different long tail thing,

53
00:04:14,479 --> 00:04:18,360
and it's that set of issues and
security and you have to touch the golden

54
00:04:18,360 --> 00:04:24,199
and VM for it, it break
it, and it just adds up for

55
00:04:24,240 --> 00:04:30,120
sure. Orren, what's what's your
approach in solving this problem? Oh,

56
00:04:30,160 --> 00:04:32,120
well, you know, I think
we only have like an hour on this.

57
00:04:34,959 --> 00:04:43,319
There's something here where if you have
really high separation, low coupling between

58
00:04:43,360 --> 00:04:46,160
your individual micro services, you can
just spin up the one that you've got

59
00:04:46,199 --> 00:04:51,279
on your machine. We use local
stack for our infrastructure, but I think

60
00:04:51,319 --> 00:04:57,959
that's a very extreme perspective and it
takes a while to really get there,

61
00:04:57,959 --> 00:05:00,160
and we focus on having that at
the beginning. And if you come from

62
00:05:00,199 --> 00:05:03,959
a monolith world or one where the
architecture wasn't really figured out, there's this

63
00:05:04,160 --> 00:05:10,000
sort of dead zone in the middle
where your services are still unfortunately coupled in

64
00:05:10,040 --> 00:05:14,439
some way and you really can't get
the value out of them without having some

65
00:05:14,560 --> 00:05:19,040
of the ancillary pieces also spun up
and working at the same time. Right

66
00:05:19,079 --> 00:05:27,759
on for sure. So Galen,
obviously there was a set of circumstances in

67
00:05:27,800 --> 00:05:30,800
your life that led you to say, this is a real problem and I'm

68
00:05:30,839 --> 00:05:34,319
going to I'm going to give it
my best shot at starting. And it

69
00:05:34,480 --> 00:05:39,120
led to a company. What what
kind of scenarios were you working in that

70
00:05:39,240 --> 00:05:43,959
made you realize this is what you
want to do? Yeah, I mean

71
00:05:43,959 --> 00:05:51,920
there's a couple. The earliest instance
of this innate pain it came at my

72
00:05:53,000 --> 00:05:56,240
senior year of college. My senior
year of college, I was doing a

73
00:05:56,279 --> 00:06:02,600
research project on distributed databases. And
this was right before Ethereum launch, which

74
00:06:02,680 --> 00:06:09,360
is a cryptocurrency, and I was
doing a research project to explore different consensus

75
00:06:09,439 --> 00:06:15,079
mechanisms, so like low level protocol
comms between notes. I wanted to spin

76
00:06:15,240 --> 00:06:23,319
up three nodes of this network just
to experiment with my different consensus mechanism.

77
00:06:24,240 --> 00:06:29,199
Nearly impossible to do that at the
time, and a lot of my project

78
00:06:29,279 --> 00:06:32,279
was oriented around simply getting the things
spun up in the first place. Of

79
00:06:32,319 --> 00:06:35,959
course, the code worked on the
developers' laptops that worked on the DevOps.

80
00:06:36,000 --> 00:06:41,800
Laptops didn't work on my laptop.
And it wasn't about it wasn't about building

81
00:06:41,920 --> 00:06:46,439
a particular note. It was about
getting the cluster of the system set up

82
00:06:46,480 --> 00:06:51,639
correctly where there's really no good abstraction
that gets you that very consistently. You

83
00:06:51,680 --> 00:06:58,160
can get it in certain architectures in
certain ways decently consistently. But that was

84
00:06:58,199 --> 00:07:00,639
the first instance. It was very
fresh trading, like why won't this thing

85
00:07:00,800 --> 00:07:05,240
just spin up? It's the simplest
application, just run it as it is.

86
00:07:08,759 --> 00:07:11,399
Yeah, that was the very first
one. I saw it later in

87
00:07:11,439 --> 00:07:17,360
my career as well as working at
a company that had had a internal tool

88
00:07:17,439 --> 00:07:21,360
that spun up a full micro service
deck you can think maybe two hundred micro

89
00:07:21,439 --> 00:07:28,399
services, and it was used for
a variety of purposes between dev demoing uat

90
00:07:28,680 --> 00:07:32,639
so like a high level just testing
user workflows to see how they would work.

91
00:07:33,519 --> 00:07:38,160
That took a lot of effort to
get that system spun up, and

92
00:07:38,199 --> 00:07:41,160
at the essence of it, it's
the same issue. It's I just want

93
00:07:41,160 --> 00:07:46,439
to run the system and a configuration
that makes sense for the work while I'm

94
00:07:46,480 --> 00:07:53,079
doing and it can be remarkably hard
to do that. So this these sets

95
00:07:51,839 --> 00:07:57,519
of issues. It's kind of the
feeling of like, this shouldn't be this

96
00:07:57,639 --> 00:08:01,519
way. It should be decently easy
to just run software. It should be

97
00:08:01,560 --> 00:08:07,399
hard to like build software that's that's
that's amazing, but it should be easy

98
00:08:07,480 --> 00:08:09,319
to run it. It's kind of
the feeling of the way the world should

99
00:08:09,319 --> 00:08:16,800
be that kind of motivated the entire
start into pretosis, right, And yeah,

100
00:08:16,800 --> 00:08:22,800
and I think there's I think maybe
just part of that is we build

101
00:08:22,839 --> 00:08:26,839
these complex systems, but for most
of us, once we build that,

102
00:08:26,920 --> 00:08:33,240
like once we build our production environment, the people who really have the skills

103
00:08:33,279 --> 00:08:37,240
to build those, they don't build
a second production. The part where this

104
00:08:37,279 --> 00:08:41,440
pain has really felt is in the
development teams where they're trying to you know,

105
00:08:41,519 --> 00:08:46,200
build and tear these down to test
different features and add new features to

106
00:08:46,240 --> 00:08:52,159
it. Yes, and that's one
of the main themes that I've learned while

107
00:08:52,320 --> 00:08:58,080
going through this journey is it's a
lot of the times these development environments they're

108
00:08:58,120 --> 00:09:03,279
about getting us close for production as
possible but safe and you can do the

109
00:09:03,279 --> 00:09:07,720
workfload you need to do. But
the main value access is how close can

110
00:09:07,759 --> 00:09:11,080
you get to production? So,
like Warren mentioned, local stack, you

111
00:09:11,120 --> 00:09:16,759
can run a tows services on your
laptop. It's one approach to it,

112
00:09:16,919 --> 00:09:24,039
bring production locally or bring production to
your development environment. The other approach is

113
00:09:24,080 --> 00:09:26,799
the opposite. You put your development
environment into the cloud, where you then

114
00:09:28,480 --> 00:09:33,840
basically fork everything that you have in
production and you have your cloud services are

115
00:09:33,919 --> 00:09:37,960
sitting in the exact same environment where
your development code is another approach to it.

116
00:09:37,519 --> 00:09:43,440
But basically, everyone who's putting a
lot of investment into getting these great

117
00:09:43,480 --> 00:09:46,919
development environments does one of those two
things, or some combination of both,

118
00:09:48,440 --> 00:09:54,399
bringing that bringing production locally or putting
your local into production in the sense of

119
00:09:54,480 --> 00:10:00,639
into your cloud environment. Right right, what's the barrier to intrig for using

120
00:10:00,679 --> 00:10:07,960
something like critosis, Yeah, right
now. The biggest barrier to entry is

121
00:10:09,399 --> 00:10:15,600
defining the setup logic for your environment. So we have a definition language.

122
00:10:15,600 --> 00:10:18,799
We use Starlarc, which is the
language. It's a Python dialect that Basil

123
00:10:18,919 --> 00:10:24,240
uses to define the build rules.
We use it for similar similar properties that

124
00:10:24,240 --> 00:10:28,200
it has for the build system.
It's you can determine that the program is

125
00:10:28,200 --> 00:10:33,120
going to halt because it's not a
full computing language. But you need to

126
00:10:33,159 --> 00:10:39,279
define your set up logic in this
language. And once you do it once,

127
00:10:39,679 --> 00:10:43,039
everyone else can reuse it. But
what happens a lot of the time

128
00:10:43,200 --> 00:10:48,240
is who knows how to do that? You have to It's especially in an

129
00:10:48,320 --> 00:10:52,799
environment where there's a lot of different
open source tooling being used to varying degrees

130
00:10:52,799 --> 00:10:58,679
of maturity. The person who has
the expertise to understand how to spin it

131
00:10:58,759 --> 00:11:03,639
up in a different right situations,
that person might not be maintained that project

132
00:11:03,639 --> 00:11:09,919
anymore, even so track that down
or relearn it somehow, for sure.

133
00:11:11,039 --> 00:11:18,240
Yeah. And then I think there's
a related piece to that is not only

134
00:11:18,360 --> 00:11:22,799
building it, but then making sure
like reverse engineering, I guess, for

135
00:11:22,919 --> 00:11:26,399
a lack of a better term,
to make sure that what you've built for

136
00:11:26,440 --> 00:11:31,840
your local dev tool actually mimics what's
really going on out in production, right,

137
00:11:31,879 --> 00:11:35,720
because there's a lot of different ways
you can make all of these different

138
00:11:35,759 --> 00:11:37,519
components talk to each other, and
you've got to try to replicate that.

139
00:11:39,600 --> 00:11:45,120
Yes, yes, and that's that's
a lot of work, and it's that's

140
00:11:45,200 --> 00:11:50,360
one of the reasons why a lot
of people do opt to forego that whole

141
00:11:50,360 --> 00:11:54,720
process and just put their development code
directly into a production like cluster in the

142
00:11:54,759 --> 00:12:00,720
cloud as as possible. Because they're
like a localist, never going to be

143
00:12:01,200 --> 00:12:05,399
close enough to production. It's going
to take a lot of never ending effort

144
00:12:05,480 --> 00:12:09,159
to get it close. So let's
just get to it a stage in cluster

145
00:12:09,240 --> 00:12:11,279
as fast as possible, let things
soak there, and then go to abroad.

146
00:12:11,799 --> 00:12:18,720
It's another approach to it. There's
benefits and cons to each one,

147
00:12:20,480 --> 00:12:24,799
for sure. Yeah, what are
some of the big Well, first of

148
00:12:24,799 --> 00:12:31,360
all, how long have you been
building critosis? Yeah? We've been doing

149
00:12:31,399 --> 00:12:35,360
this full time since December of twenty
twenty, So what is that? Okay,

150
00:12:35,600 --> 00:12:41,120
three years and change? Yeah,
yeah, yeah, cool. So

151
00:12:41,159 --> 00:12:43,960
what are some of the how is
how is your thought process changed in those

152
00:12:45,120 --> 00:12:48,799
three plus years for building development environments? I mean, I'm sure you've learned

153
00:12:48,879 --> 00:12:54,720
lots of lessons and tried a lot
of things that didn't quite work. Absolutely,

154
00:12:54,960 --> 00:13:03,559
absolutely. The couple of things.
First, we started out, we

155
00:13:03,600 --> 00:13:11,000
started out our company selling a basically
binaries. So one thing is, how

156
00:13:11,039 --> 00:13:16,679
do developers and development teams want to
consume developer tooling? So we started out

157
00:13:16,720 --> 00:13:20,519
saying we're going to sell a compiled
binary that you get to run as a

158
00:13:20,559 --> 00:13:26,159
license fee, and their first couple
of clients we operated that way and It

159
00:13:26,360 --> 00:13:31,799
was fine in the very beginning.
We were solving a very important problem for

160
00:13:31,840 --> 00:13:37,000
those clients. It was acceptable at
the time, but we very quickly learned

161
00:13:37,039 --> 00:13:41,240
that this is it's not the way
that developers want to and for really good

162
00:13:41,320 --> 00:13:46,639
reasons, want to be interacting with
software. You do have to have the

163
00:13:46,679 --> 00:13:50,120
source code available, You do have
to have a free license, you have

164
00:13:50,200 --> 00:13:54,159
to have a free period of trying
it where they know, because they're integrating

165
00:13:54,360 --> 00:13:58,399
at a deep level with their tooling, if they're going to try it out,

166
00:13:58,399 --> 00:14:00,759
if they're going to invest into it, I do want to know it's

167
00:14:00,759 --> 00:14:03,759
not going to get yanked out from
under them, and that's totally fair.

168
00:14:03,080 --> 00:14:09,039
So we change our licensing entirely,
made the reboot open, and that change

169
00:14:09,200 --> 00:14:13,799
changed everything about the rate at which
we were learning, the rate of the

170
00:14:13,799 --> 00:14:16,000
exposure to different developers, people able
to try out to too long gate different

171
00:14:16,039 --> 00:14:20,320
perspectives. In retrospect, it was
pretty obvious. Maybe a lot of these

172
00:14:20,399 --> 00:14:24,840
learnings are pretty obvious in retrospect,
but you know, that was that was

173
00:14:24,879 --> 00:14:26,720
maybe the biggest change that we had
in the business, was opening a tool

174
00:14:26,799 --> 00:14:31,240
like that. No, I think
you're in good company. The past few

175
00:14:31,360 --> 00:14:35,120
weeks months I feel like there's been
a huge shift and focus on the podcast.

176
00:14:35,200 --> 00:14:39,320
It keeps coming out. Wills bringing
up this point about selling your idea

177
00:14:39,399 --> 00:14:43,759
within the devlof space as a product
management challenge, So really understanding what your

178
00:14:45,440 --> 00:14:50,679
teams need that are your consumers.
It's difficult but also really interesting and can

179
00:14:50,720 --> 00:14:56,240
help you build a great a great
product for them. Yeah, and it's

180
00:14:56,519 --> 00:15:01,039
developers are they're amazing users to work
with, but it's a very different dynamic.

181
00:15:01,200 --> 00:15:07,759
I think then products that maybe are
selling the sales folks or business focused

182
00:15:07,799 --> 00:15:13,320
folks, you're the way that products
are integrated and interactive with is quite different

183
00:15:13,200 --> 00:15:18,080
and as different dynamics. But once
you're solving a problem that the developers really

184
00:15:18,120 --> 00:15:24,759
really care about, you really do
develop really deep relationships for users, especially

185
00:15:24,080 --> 00:15:28,519
with like the community based approach with
like an open product. So it's it's

186
00:15:28,519 --> 00:15:33,279
been game changing having that kind of
a relationship working for us. Yeah.

187
00:15:33,759 --> 00:15:39,240
I think that's a really cool point
there, because you're talking about who your

188
00:15:39,360 --> 00:15:45,480
target market is, and so whenever
you think about like production deployments, you

189
00:15:45,519 --> 00:15:50,360
know, deploying my application to what
my target customers, that's a very different

190
00:15:50,440 --> 00:15:56,639
process than deploying my stack to the
local development team so they can build on

191
00:15:56,679 --> 00:16:00,840
it. It's a different, different
customer and they have different goals and objectives

192
00:16:00,840 --> 00:16:06,320
like the customers, the consumers of
my product want high availability, up time

193
00:16:06,480 --> 00:16:12,000
and fast response, whereas the developers
want more granular access and the ability to

194
00:16:12,200 --> 00:16:18,279
tweak and turn the knobs across the
environment to see how they can solve their

195
00:16:18,320 --> 00:16:22,519
problems. Is that a fair statement. Absolutely? Absolutely. In fact,

196
00:16:22,519 --> 00:16:30,519
there's even three different profiles to consider. There's the developers that are the end

197
00:16:30,600 --> 00:16:36,639
users of the tool. There's the
we call it maybe the platform team DevOps

198
00:16:36,639 --> 00:16:40,399
team in for a team, they're
really the ones that are responsible for the

199
00:16:40,440 --> 00:16:44,320
implementation and configuration of the tool.
A lot of the times they're the ones

200
00:16:44,360 --> 00:16:48,279
getting access to the GitHub repos they're
doing the high level configuration administration of the

201
00:16:48,320 --> 00:16:55,200
installation, and they're concerned about the
security posture and all that. And then

202
00:16:55,519 --> 00:17:00,519
ultimately you also do have like the
director or head of engineering, whoever approves

203
00:17:00,559 --> 00:17:04,720
the budget for whatever you're charging for
an enterprise version. So there's three.

204
00:17:06,160 --> 00:17:11,680
There's three different concerns to worry about, and you have to think about each

205
00:17:11,720 --> 00:17:18,000
one differently. It's it's like what
when you think about like a minimal valuable

206
00:17:18,440 --> 00:17:22,720
product, Like how how batting of
the concerns at each of the three parties

207
00:17:22,039 --> 00:17:26,000
you really have to do to like
get something off the ground. Uh yeah,

208
00:17:26,160 --> 00:17:30,119
so it's a multi dimensional problem.
No one envies a startup pounder,

209
00:17:30,119 --> 00:17:33,519
I mean they do. They think
you get to build your your dream,

210
00:17:33,559 --> 00:17:37,559
but then you deal with these quite
challenging situations where your buyers are not your

211
00:17:37,759 --> 00:17:41,319
users that you are you know,
really focused on. I have a question

212
00:17:41,400 --> 00:17:45,839
on that. Actually, I feel
like and I know I'm gonna put myself

213
00:17:45,880 --> 00:17:49,799
in some bucket somewhere. I assume
like everyone's using open TOFO today. I

214
00:17:49,839 --> 00:17:52,440
mean, I know that's not the
case, but you know, maybe there's

215
00:17:52,480 --> 00:17:56,680
there's a huge audience there. Especially
if we talk about people that are in

216
00:17:56,960 --> 00:18:02,359
the quote unquote develop space. If
they are familiar with this terminology, they

217
00:18:02,400 --> 00:18:07,680
probably are using some sort of infrastructure
as code solution. We use extensively CloudFormation

218
00:18:07,759 --> 00:18:12,960
ourselves. What is the how does
that interact with krotosis here? Like where

219
00:18:12,960 --> 00:18:19,279
the touch points? Like if we've
already defined our infrastructure in unfortunately HCl or

220
00:18:19,359 --> 00:18:25,880
worth in a programming language that doesn't
really well match to declarative nature, what

221
00:18:25,920 --> 00:18:30,680
do we do to spin up a
dev environment absolutely, so right now,

222
00:18:30,759 --> 00:18:37,400
krtosis operates after you apply your open
tofu or your terraform scripts to spin up

223
00:18:37,680 --> 00:18:42,400
the cloud services that you would need
for your development environment or your testing environment.

224
00:18:42,640 --> 00:18:48,599
You can think of it really as
a abstraction layer over Kubernetes and Docker.

225
00:18:49,359 --> 00:18:55,519
So if you have can use your
terraform scripts open tofu to spin up

226
00:18:55,519 --> 00:19:00,440
your Kubernetes clusters and provision everything required
there and then deploy onto the clusters with

227
00:19:00,559 --> 00:19:15,759
grotosis, I see gotcha, And
so then that so like that, that's

228
00:19:15,799 --> 00:19:22,839
like a way to leverage some of
the tools that you're using to deploy into

229
00:19:22,960 --> 00:19:26,599
production for building that so you're not
duplicating a lot of effort, right so

230
00:19:26,599 --> 00:19:32,000
you can still leverage the learnings from
terra farm or open to tofu or any

231
00:19:32,039 --> 00:19:37,559
other production grade tools that you're deploying
with exactly exactly. And then the cloud

232
00:19:37,680 --> 00:19:41,480
provisioning side of things is an area
that we are now exploring, and it's

233
00:19:41,559 --> 00:19:45,880
not an area that's covered in the
current like open tool and like the direct

234
00:19:45,920 --> 00:19:53,359
aspaciates of the open tool where it's
hey, can you also handle maybe four

235
00:19:53,440 --> 00:19:56,640
K my production environment, and its
like as look as you could fork an

236
00:19:56,720 --> 00:20:02,759
environment, can you handle clone everything
necessary there? Right now? That's a

237
00:20:02,759 --> 00:20:07,559
lot of what's happened in people's information
and terraform scripts is something like that we

238
00:20:07,680 --> 00:20:11,119
haven't That's an area that we're exploring
right now learning about. You know,

239
00:20:11,759 --> 00:20:18,079
what's important when you're when you're looking
at designing those those scripts. Yeah,

240
00:20:18,079 --> 00:20:22,400
for sure when it comes to documenting, like because that's a I think that's

241
00:20:22,400 --> 00:20:30,240
a would be an important artifact of
this process is we've discovered how our production

242
00:20:30,319 --> 00:20:34,680
infrastructure is working, reverse engineered it. How do you approach documenting that so

243
00:20:34,720 --> 00:20:41,599
that when the next development team comes
along, maybe the learning curve is a

244
00:20:41,599 --> 00:20:48,400
little bit uh, not so sharp
for them. Yeah, right now,

245
00:20:48,440 --> 00:20:52,759
the document I guess there's two ways
to think about it. One is one

246
00:20:52,839 --> 00:20:57,799
is how much can you write?
How much can you have your users write

247
00:20:57,880 --> 00:21:03,880
code that is some self documenting,
so like, can the environment definition be

248
00:21:03,079 --> 00:21:10,200
the documentation and as much as possible. I like having code that is extraordinarily

249
00:21:10,200 --> 00:21:15,359
readable and it seems self documenting,
and the way that our tool is set

250
00:21:15,440 --> 00:21:18,599
up, you tend to get that
in the code. It tends to be

251
00:21:18,720 --> 00:21:21,640
very composable, it tends to be
very readable. It tends to be very

252
00:21:22,000 --> 00:21:27,359
intuitive, So that's one function of
it. Another function of it is the

253
00:21:27,400 --> 00:21:33,920
functionality that we offer, so we
have high level environment parameterizability. What that

254
00:21:33,960 --> 00:21:41,079
means is when you write your environment
definition, you can expose very easily how

255
00:21:41,480 --> 00:21:45,599
to modify it in a sensible way. So you start it and you say,

256
00:21:45,599 --> 00:21:48,720
well, maybe I want to modify
it this way, this way,

257
00:21:48,759 --> 00:21:52,359
this way. We don't need documentation
for it because when you want it with

258
00:21:52,480 --> 00:21:55,519
that configuration, you're going to get
it out of the box. So you're

259
00:21:55,519 --> 00:22:00,359
trying to reduce the need for documentation
as much as possible with the design of

260
00:22:00,400 --> 00:22:03,000
the definition language. But you can
only dose it so much so that after

261
00:22:03,039 --> 00:22:07,440
that it's it's traditional documentation. It's
you got to rely on your users to

262
00:22:07,440 --> 00:22:12,200
write the readings, to write the
docs for those specific systems. That it

263
00:22:12,240 --> 00:22:17,279
reminds me of a quote that I
heard a long long time ago, back

264
00:22:17,319 --> 00:22:21,279
when everyone used to have wikis for
documentation, and I worked with this.

265
00:22:21,319 --> 00:22:26,039
One guy said, yeah, the
wiki is where the documentation goes to die.

266
00:22:27,480 --> 00:22:32,599
But I think like one of the
cool things I think that's happened is

267
00:22:32,599 --> 00:22:36,279
if you've ever used Jupiter notebooks.
I love the way that they let you

268
00:22:37,160 --> 00:22:40,680
mix, you know, different different
syntax in there, so you can have

269
00:22:40,720 --> 00:22:42,680
like a markdown block and then a
code block, and so you can kind

270
00:22:42,680 --> 00:22:51,839
of integrate the documentation alongside the code. And for I think for iterative or

271
00:22:51,880 --> 00:22:55,960
interactive type environments like that, it
works really well because it then lets you

272
00:22:56,039 --> 00:23:00,079
keep everything in one place, because
when you try to update multiple places,

273
00:23:00,880 --> 00:23:06,920
it just never happens in reality.
Yeah, and I love Jupiter Notebooks the

274
00:23:07,079 --> 00:23:11,039
experience, Like, it's one of
my favorite That access in the world is

275
00:23:11,759 --> 00:23:15,720
like spinning up and hacking something together
in a Jupiter notebook. And the dream

276
00:23:15,839 --> 00:23:18,519
is to feel that way about all
of our development work. I'm not sure

277
00:23:18,359 --> 00:23:23,680
realistic, but I love that experience. I mean, that's an interesting thread.

278
00:23:23,799 --> 00:23:29,680
What would what would the world have
to look like that regular development could

279
00:23:29,880 --> 00:23:33,759
follow this sort of path here?
Is it a matter of what we're working

280
00:23:33,799 --> 00:23:40,920
on or can we already sort of
start doing that today? Yeah? I

281
00:23:40,960 --> 00:23:44,200
mean what's great about it? Like, one thing that's great is how fast

282
00:23:44,319 --> 00:23:48,400
you see your changes work. It's
like extraordinarily fast. You write it,

283
00:23:48,519 --> 00:23:52,519
run run and run, run,
run, and you get the feed back

284
00:23:52,599 --> 00:23:56,319
right away. That's the build deploy
like how the build deploy loop. It's

285
00:23:56,359 --> 00:24:00,160
like, how fast does it take
for you to see on real stuff off

286
00:24:00,160 --> 00:24:03,400
what your things look like? Uh, usually in Jupiter notebooks you're using.

287
00:24:03,839 --> 00:24:06,960
I mean, like a lot a
lot of the fun use cases for it

288
00:24:07,000 --> 00:24:11,599
are running on relatively small data sets
so it fits in memory. So you

289
00:24:11,799 --> 00:24:17,759
do that fast feed toploy build a
play loop, and that's just tricky to

290
00:24:17,960 --> 00:24:21,720
get. Like you can get it
with like hot reloading into containers that are

291
00:24:21,759 --> 00:24:23,839
running in your in your environment.
You can get decently close to it,

292
00:24:23,880 --> 00:24:27,319
but you're still stuck at the level
of like what is this What is the

293
00:24:27,359 --> 00:24:33,599
smallest build increment that you can that
you can like define for your background system.

294
00:24:33,880 --> 00:24:37,480
I know a lot of people spend
a lot of effort getting their their

295
00:24:37,519 --> 00:24:42,640
basal build rules so well defined that
they're going to like minimize the build a

296
00:24:42,640 --> 00:24:45,000
play loop as much as possible,
But that takes a lot of effort.

297
00:24:45,039 --> 00:24:49,559
You really have to look into it
to get that experience. I mean,

298
00:24:49,559 --> 00:24:53,519
I'm not sure that there's a really
good way to get that now, No

299
00:24:53,599 --> 00:24:57,160
for sure, for sure not but
I think you know, tools, tools

300
00:24:57,160 --> 00:25:00,599
like yours you know definitely help reduce
the loop here, which is like the

301
00:25:00,640 --> 00:25:08,119
most important aspect because no matter how
much time you spend, really every second

302
00:25:08,200 --> 00:25:14,079
you cut off your loop allows that
feedback to happen faster, which improves the

303
00:25:14,200 --> 00:25:21,279
time. I think it's a hackneyed
response now that realistically people waiting for software

304
00:25:21,319 --> 00:25:23,960
development, is there what makes them
unhappy? Right? If you have to

305
00:25:25,039 --> 00:25:27,039
wait for the response? Will said, You know, he's all about the

306
00:25:27,039 --> 00:25:32,160
instant gratifications. Nothing better than you
know, hitting F five and having your

307
00:25:32,200 --> 00:25:37,480
program instantly work or tell you what
you did wrong, which is you know,

308
00:25:37,519 --> 00:25:42,119
I don't think it's just me.
I'm convinced that we are a TikTok

309
00:25:42,240 --> 00:25:45,279
generation. You know, whether you're
a TikTok user or not, we've all

310
00:25:45,319 --> 00:25:51,039
gotten addicted to short form content.
You know, if you're going to do

311
00:25:51,079 --> 00:25:56,559
anything that requires an attention span of
over sixty seconds, you really have to

312
00:25:56,759 --> 00:26:04,039
engineer for that. And I we've
been digging a lot into this this little

313
00:26:04,920 --> 00:26:10,880
that little feedback loop there and one
thing that did the dream world. There's

314
00:26:10,960 --> 00:26:14,519
kind of two really important things.
One is getting that build deplay loop super

315
00:26:14,640 --> 00:26:17,480
super fast, so you're coding the
change, accoding to the change. The

316
00:26:17,519 --> 00:26:22,319
other one is when you see the
change, how close is the change that

317
00:26:22,359 --> 00:26:25,839
you're seeing to what would happen in
production? And I can you get both

318
00:26:25,880 --> 00:26:27,880
of those things maximized, so like
you're getting a really really fast build to

319
00:26:27,880 --> 00:26:34,160
play loop, but also the deployment
is safely basically a production when you're doing

320
00:26:34,160 --> 00:26:40,559
it. That's kind of the dream
the dream world. It's it would take

321
00:26:40,559 --> 00:26:42,279
a lot to get there, I
think all the way, but you kind

322
00:26:42,279 --> 00:26:47,599
of like, roughly, what's happening. I think with the more and more

323
00:26:47,599 --> 00:26:52,839
sophisticated like dev infra along the software
development bicycle, roughly what's happening is you're

324
00:26:52,839 --> 00:26:56,799
getting like more and more optimized on
both of those axis to the point that

325
00:26:56,880 --> 00:27:00,720
eventually it kind of feels like you're
doing that like the limit of what's possible.

326
00:27:02,880 --> 00:27:07,000
I think there's a sort of a
conundrum here where the providers that are

327
00:27:07,039 --> 00:27:11,359
offering production infrastructure or platforms, the
amount of money that you're paying into them

328
00:27:11,440 --> 00:27:17,240
is so large or so vast for
the environment you're running for production that it

329
00:27:17,319 --> 00:27:21,720
never makes sense. It's not something
that is ever justified for them to make

330
00:27:22,119 --> 00:27:26,839
it faster to run or get the
loop closed because they don't care. It's

331
00:27:27,000 --> 00:27:32,759
you know one like how much is
your test staging, fake feral environment cost

332
00:27:33,319 --> 00:27:37,920
in actual dollars, euros and pesos
whatever compared to production It's like what one

333
00:27:37,960 --> 00:27:42,920
percent less? Even so like Amazon, you know, Google, GCP platforms

334
00:27:42,920 --> 00:27:45,200
of the world, they're not going
to make anything there, and so I

335
00:27:45,640 --> 00:27:52,079
feel like there it would be on
them to really change that because that's sort

336
00:27:52,119 --> 00:27:55,799
of like the canonical interface that you
have to abstract or make the same as

337
00:27:55,880 --> 00:28:02,359
much as possible. Yes, absolutely, and basically everyone's working against that limitation

338
00:28:02,839 --> 00:28:06,319
as far as I can tell.
It is like that's the that's the blocker,

339
00:28:07,000 --> 00:28:11,839
the only way to like you're you're
basically just trying to design more and

340
00:28:11,880 --> 00:28:17,680
more like innovative solutions to get around
exactly that obstacle. Yeah, because let's

341
00:28:17,720 --> 00:28:22,880
be just like completely transparent here.
The gold standard is them on the production

342
00:28:23,000 --> 00:28:27,880
server. Yes, you said that. I feel like that's where I started

343
00:28:27,920 --> 00:28:33,359
my career actually right for sure,
Like I was working at a company where

344
00:28:33,519 --> 00:28:38,920
you did software development by sshing into
another service somewhere and there was an environment

345
00:28:40,039 --> 00:28:45,079
running there which then you logged into
and you literally changed production objects by opening

346
00:28:45,119 --> 00:28:48,559
a text editor there. We didn't
it wasn't VIM that would have been slightly

347
00:28:48,599 --> 00:28:52,400
better than what was being used,
uh and uh, and then changing them

348
00:28:52,440 --> 00:28:57,880
and then you had to record the
changes you made in an overgrown internal system

349
00:28:59,160 --> 00:29:03,079
that would somehow get those changes applied
to actual production when there was a release.

350
00:29:03,519 --> 00:29:06,559
So, you know, I really
do feel like what was old will

351
00:29:06,599 --> 00:29:10,480
be new again, and I honestly
don't know if I want that world.

352
00:29:12,880 --> 00:29:18,519
My introduction to programming was doing something
very similar to that, and the guy

353
00:29:18,519 --> 00:29:19,319
who showed me how to do it, he's like, okay, when you

354
00:29:19,359 --> 00:29:23,400
get here, you want to run
the LS command and you could see all

355
00:29:23,440 --> 00:29:26,759
of the files there. But then
it was like, you know, for

356
00:29:26,920 --> 00:29:33,000
any given file, you know,
like just say like Maine dot c,

357
00:29:33,279 --> 00:29:36,200
there was Maine dot c dot one, Maine dot C dot two, Maine

358
00:29:36,200 --> 00:29:37,960
dot c dot three. Is like, so you want to look and see

359
00:29:37,000 --> 00:29:42,200
what the biggest number here is and
copy Maine dot c to the next number

360
00:29:42,279 --> 00:29:45,480
so that if you screw anything up, you've got a backup for it.

361
00:29:45,839 --> 00:29:51,160
And that was our version control system. Oh no, I'm just like,

362
00:29:51,359 --> 00:29:53,519
I think people figured it out date
based, right, You don't. None

363
00:29:53,559 --> 00:29:56,319
of these are the fancy tools.
All you need to do is append the

364
00:29:56,359 --> 00:30:00,880
timestamp of the last time you edited
the file there and then you'd be good.

365
00:30:03,319 --> 00:30:10,440
Yeah, I mean it's the VIM
on the production server. At least

366
00:30:10,440 --> 00:30:15,960
for me, this is like clearly
the best debt X Like I love it.

367
00:30:15,400 --> 00:30:19,440
I love it. It's just dangerous, it's super dangerous, and like

368
00:30:19,519 --> 00:30:23,480
staying up all night to think there
of an outage is miserable. So that

369
00:30:23,599 --> 00:30:30,839
experience is not great. But the
feeling of the VIM directly to production is

370
00:30:30,839 --> 00:30:36,039
is is the ideal, So like
to what degree can you mitigate risk to

371
00:30:36,119 --> 00:30:38,200
get as close to that as possible? I mean, you said it right,

372
00:30:38,240 --> 00:30:41,799
you know, things like kurtosis,
you know, shortening the gap there

373
00:30:41,839 --> 00:30:44,720
on time to make a change so
that rather than VIM on the production server,

374
00:30:44,759 --> 00:30:47,559
it's VIM on your machine or you
know, using one of those better

375
00:30:47,599 --> 00:30:52,240
tools that's out there, and then
making that change and just immediately that gets

376
00:30:52,279 --> 00:30:56,240
to a clone of production that is
almost exactly this, I mean exactly the

377
00:30:56,279 --> 00:31:00,319
same, and you can see that
change running as if you had actually applied

378
00:31:00,319 --> 00:31:06,160
it and then get all the benefits
without having actually the danger of making a

379
00:31:06,160 --> 00:31:10,160
production change. Yes, yes,
absolutely, that's that's that's the that's theer's

380
00:31:10,200 --> 00:31:15,480
the dream Yes, So what is
the learning curve for someone who's just they've

381
00:31:15,519 --> 00:31:21,160
they've done the seven thousand line bash
script and they're looking for something different and

382
00:31:21,480 --> 00:31:25,200
wanting to check out critosis. What's
the learning curve or the amount of time

383
00:31:25,200 --> 00:31:30,519
it takes to be productive with this
so as framed very low. And the

384
00:31:30,599 --> 00:31:37,799
reason for that is because that person
did the seven thousand best script part.

385
00:31:37,920 --> 00:31:40,279
They figured out how it all works
together, they figured out who needs to

386
00:31:40,279 --> 00:31:44,480
be scripted, they figured out all
of this hard stuff. That learning curve

387
00:31:44,559 --> 00:31:48,559
is extraordinarily low. I mean,
in Krytosis, you're using a Python like

388
00:31:48,640 --> 00:31:53,759
dialect. Most people are familiar with
Python. The set of I guess functions

389
00:31:53,759 --> 00:31:59,519
and tools you have are very are
very basic. Half a day to just

390
00:31:59,599 --> 00:32:01,759
rewrite it and something that's uh,
that's cleaner, and then it's going to

391
00:32:01,799 --> 00:32:05,319
take you a lot further. It's
probably about what you're going to get.

392
00:32:06,279 --> 00:32:09,920
Now. The part that's you know, frustrating for us and we're trying to

393
00:32:09,920 --> 00:32:13,839
figure out how to make this better
is what if you haven't written the seven

394
00:32:13,839 --> 00:32:15,680
thousand mind mass script, then what
do you do? You say, Hey,

395
00:32:15,680 --> 00:32:19,240
someone else wrote the seven thousand mind
mass script. I don't understand it

396
00:32:19,319 --> 00:32:21,680
yet, but I want it to
be. I want to get all these

397
00:32:21,680 --> 00:32:24,119
benefits that I can get from protosis. Now we have a really big now

398
00:32:24,119 --> 00:32:27,839
we have a really big verded curve, but the learning curve is mostly inside

399
00:32:27,839 --> 00:32:37,440
of the side. Interesting for sure. And then can you give us like

400
00:32:37,559 --> 00:32:45,559
some some success stories of like different
problems that customers have solved. I always

401
00:32:45,599 --> 00:32:46,960
think that's kind of cool because then
it, you know, it gives us

402
00:32:47,000 --> 00:32:51,160
something that we can like resonate with
and be like, oh, yeah,

403
00:32:51,440 --> 00:32:52,920
I remember when I had to do
that. Like, what are some cool

404
00:32:53,160 --> 00:32:57,480
things that you've seen people do with
krotosis? Well, I feel like your

405
00:32:57,920 --> 00:33:01,400
whole work experience history here, you
know, just recount those things and it's

406
00:33:01,519 --> 00:33:12,200
like, yeah, yeah, my
career could be a like a Forrest Gump

407
00:33:12,319 --> 00:33:24,119
story in tech. Yeah. I
Mean the biggest and like the most proud

408
00:33:25,119 --> 00:33:30,920
use case that we have for cryptosis
is what the Ethereum Foundation is doing with

409
00:33:30,000 --> 00:33:35,920
cryptosis. That's probably the thing that
we're most it's the most incredible thing.

410
00:33:37,000 --> 00:33:42,240
So for folks who aren't like deep
into the blockchain ecosystem, the Ethereum main

411
00:33:42,400 --> 00:33:47,319
net, so it's like the production
deployment of Ethereum is now extraordinarily complicated.

412
00:33:47,519 --> 00:33:52,720
There is like twenty different open source
components that have to get splat up together.

413
00:33:52,400 --> 00:33:57,400
There's no centralized DEVLOPS team for this, so it's all different people running

414
00:33:57,440 --> 00:34:04,400
their own different service with moose communication
between them. What krotosis, what they're

415
00:34:04,480 --> 00:34:07,199
using Katosis do. The Ethereum foundation
is to package all of that together in

416
00:34:07,880 --> 00:34:14,639
a one line run with high level
configurability, so you can say, hey,

417
00:34:14,639 --> 00:34:19,079
I want to run it with this
topology like these clients and these clients,

418
00:34:19,480 --> 00:34:24,280
and it works remarkably well. It
works remarkably well as it's it's a

419
00:34:24,360 --> 00:34:29,159
large degree of complexity. The Beast. I don't know what it would look

420
00:34:29,239 --> 00:34:31,960
like if we like unfolded it into
the Beast script scenario that you described,

421
00:34:34,280 --> 00:34:37,840
it would be very remarkable. But
now this thing it runs, if it

422
00:34:37,920 --> 00:34:43,000
runs the UH, you know,
you can one click replicated Thethereum main that

423
00:34:43,199 --> 00:34:47,320
on your laptop or inside of one
of your cloud boxes or Recubernators cluster at

424
00:34:47,360 --> 00:34:51,280
scale. UH, so you can
kind of hit the dev all the way

425
00:34:51,360 --> 00:34:58,440
to late stage testing performance testing.
UH. There was a team that built

426
00:34:57,679 --> 00:35:04,519
h They built it's basically like a
sad path testing on top of this tool,

427
00:35:04,800 --> 00:35:08,079
so like a path network perturbin in
lots of different ways, as you

428
00:35:08,119 --> 00:35:13,079
call it, chaos testing on top
of this, and it takes you all

429
00:35:13,119 --> 00:35:16,960
the way almost to deploy the proud
if you're going to make like a big

430
00:35:17,079 --> 00:35:22,880
change in the deep layers of the
network. So that's that's the most That's

431
00:35:22,920 --> 00:35:25,960
the thing I'm the most proud of
when it comes to like what are tools

432
00:35:25,960 --> 00:35:32,840
been able to do. There's a
large degree of DevOps complexity encapsulated in that

433
00:35:32,920 --> 00:35:37,000
project, and then there's a bunch
of people using it to do some really

434
00:35:37,039 --> 00:35:38,960
cool things on top of it.
I feel like that makes a lot of

435
00:35:38,960 --> 00:35:43,719
sense there as well, Like when
you have a lot of different testing scenarios

436
00:35:43,800 --> 00:35:49,280
that need to be captured and the
configurability for them is also determined sort of

437
00:35:49,360 --> 00:35:53,079
by the constraints of the test,
then you have a huge dimensionality of the

438
00:35:53,199 --> 00:35:58,320
data and configuration that you need to
specify to actually execute it. There.

439
00:35:58,400 --> 00:36:00,440
Whereas I feel like, you know, some other environments that may not be

440
00:36:00,519 --> 00:36:02,719
total like always the case, but
in this one, like, yeah,

441
00:36:02,760 --> 00:36:07,039
for sure, I can totally imagine, especially given the fact that it's there

442
00:36:07,119 --> 00:36:13,800
is no you know, official production
environment where you know cloud provider where THEOEUM

443
00:36:13,840 --> 00:36:16,920
is running on exactly exactly, And
it happens in cases where you're doing a

444
00:36:16,920 --> 00:36:22,800
lot of different testing things. And
it also happens when you're I guess you

445
00:36:22,840 --> 00:36:27,480
could call it like a feature branch
environment. It's it's these situations where you're

446
00:36:27,880 --> 00:36:32,519
you're like pre merge and you want
to spin up a representation environment that's specific

447
00:36:32,559 --> 00:36:37,079
to you're not really deving on it
because it's not inside it. You're like

448
00:36:37,440 --> 00:36:39,719
build and run loop as you're in
your IDE but it's kind of close to

449
00:36:39,800 --> 00:36:44,119
like your death because they're not ready
to put it into CI yet. That

450
00:36:44,280 --> 00:36:50,400
situation as well as one where inside
of an organization or an open source community

451
00:36:50,639 --> 00:36:55,719
you might have hundreds of those a
week of slightly different configurations, so it's

452
00:36:55,719 --> 00:36:59,079
either easy to configure or it's not. But if it's not, like this

453
00:36:59,239 --> 00:37:02,000
is a a great way to do
it. This gives me the sort of

454
00:37:02,559 --> 00:37:08,199
PTSD flashbacks to the previous environment that
I was working in where there was like

455
00:37:08,719 --> 00:37:14,760
different production environments that we had because
they were for different customers or different internal

456
00:37:14,760 --> 00:37:19,719
business units, and then we had
copies of them that were test environments that

457
00:37:20,000 --> 00:37:24,079
we're supposed to match the production one
because realistically, given the ridiculous amount of

458
00:37:24,079 --> 00:37:28,760
configuration, you almost needed to run
your tests in every single sort of clone

459
00:37:28,800 --> 00:37:31,159
of production however it could be possibly
configured, and then of course it was

460
00:37:31,199 --> 00:37:36,480
a problem where like the actual switches
from production didn't match where you're in your

461
00:37:36,519 --> 00:37:38,800
testing environment, and so you had
not only did you have to run your

462
00:37:38,800 --> 00:37:43,519
test in all of these fake versions
of production, but also make some changes.

463
00:37:44,039 --> 00:37:49,079
That for sure was quite the nightmare. And there's a mode of thought

464
00:37:49,159 --> 00:37:52,840
that I'm honestly a fan of this
movement. There's a mode of thought where

465
00:37:52,880 --> 00:37:58,719
you just say, can we forego
all of that and just make shipping the

466
00:37:58,760 --> 00:38:01,079
production as safe as possible and do
all of it like test in production.

467
00:38:01,840 --> 00:38:06,199
That motive thought is like sometimes possible, I think. I think that's like

468
00:38:06,360 --> 00:38:10,880
Honeycomb's big big model. They're an
observability tool like test and production. We're

469
00:38:10,880 --> 00:38:15,840
just going to give you really good
monitoring tooling so the moment something goes wrong,

470
00:38:15,920 --> 00:38:20,079
you can catch it right away.
For an impacts your entire customer base

471
00:38:20,199 --> 00:38:25,119
rollback like some some some products I
guess can do this. Otherwise a tiny

472
00:38:25,159 --> 00:38:30,119
little bug is a disastrous like medical
tooling. I don't know, Like I

473
00:38:30,119 --> 00:38:32,960
mean, I want to do it
for sure, sign me up. I

474
00:38:34,039 --> 00:38:37,719
mean we're in the at authors with
the five nine SLA where for sure we

475
00:38:37,760 --> 00:38:43,119
can't let stuff go through. I
think the biggest challenge is depending on what

476
00:38:43,119 --> 00:38:45,039
your business is actually like, what
the business logic looks like. The fear

477
00:38:45,079 --> 00:38:50,239
I've always had with these sort of
automatic rollbacks in a lot of cases where

478
00:38:50,280 --> 00:38:53,079
what happens if the problem is compounded
by changing the database version? And I

479
00:38:53,079 --> 00:38:58,280
always keep getting back to the Night
Capital four hundred and forty million dollars loss

480
00:38:58,320 --> 00:39:01,880
in forty five minutes, kind of
like the ridiculous thing is they had the

481
00:39:01,920 --> 00:39:06,639
wrong version of the software only running
on one machine, and they made it

482
00:39:06,719 --> 00:39:10,679
worse by restarting the cluster. Like
if they hadn't restarted anything, it would

483
00:39:10,679 --> 00:39:14,719
have been fine. And they assumed
that the problem was with the rollout,

484
00:39:14,760 --> 00:39:19,079
so they rolled back everything and then
also compounded the issue. And it's those

485
00:39:19,119 --> 00:39:22,360
things that really scare me, and
I like, I would so totally before

486
00:39:22,800 --> 00:39:27,320
if the automatic rollback could calculate whether
or not the you know, the database

487
00:39:27,360 --> 00:39:30,280
is that fault and also include that, And I feel like I'm not going

488
00:39:30,360 --> 00:39:34,320
to see that in my lifetime.
I don't know. To me, it

489
00:39:34,360 --> 00:39:37,760
just sounds like we're making excuses to
keep from giving people VIM access to the

490
00:39:37,760 --> 00:39:42,960
production server. I mean, you
know you're I think in control of that

491
00:39:43,039 --> 00:39:45,880
actually had poligon right well, like
you could just go and turn that on

492
00:39:45,000 --> 00:39:49,280
and let that happen and it could
be like it could be it could be

493
00:39:49,320 --> 00:39:53,239
the real case study. You could
do that right shop, whether it was

494
00:39:53,280 --> 00:39:55,639
a success. You know, published
that blog post. You know that you're

495
00:39:55,679 --> 00:40:00,280
doing this, why it's so great, and you know you could get on

496
00:40:00,320 --> 00:40:04,800
board with it, and then next
week's episode will be reviewing my resume because

497
00:40:04,840 --> 00:40:12,440
I'm looking for a job. I'll
never forget that article that was published by

498
00:40:12,559 --> 00:40:15,719
get lab about how they you know, accidentally deleted their production database. Uh

499
00:40:15,800 --> 00:40:20,039
it was like a decade ago.
Now. I was like, oops,

500
00:40:20,039 --> 00:40:23,079
Like I ran this command and I
thought I was on the replication uh server,

501
00:40:23,119 --> 00:40:32,000
and I was actually in production.
I've done that to do. Yeah,

502
00:40:32,280 --> 00:40:37,840
it was in AWS, and I
thought that I was on the on

503
00:40:37,880 --> 00:40:45,360
the staging environment and uh just dropped
an entire database cluster. Oh that that's

504
00:40:45,360 --> 00:40:47,840
not that bad, right, I
mean, you just restore that from from

505
00:40:47,880 --> 00:40:52,159
the one that you you know,
got snapshotted from an hour ago. Like

506
00:40:52,159 --> 00:40:54,559
it's much worse when you, like, you know, write that update statement

507
00:40:54,639 --> 00:40:59,280
in sequel and forget the select that
comes after it, right, you know,

508
00:40:59,280 --> 00:41:01,760
people say you should write that first, like write the from statement first

509
00:41:01,800 --> 00:41:06,480
and then change your select to an
update. Yeah, it's just it's ridiculous

510
00:41:06,519 --> 00:41:09,000
that those mistakes can be made.
But I think at every company I've been

511
00:41:09,039 --> 00:41:12,440
at, there's been a special name
for that, like, oh, don't

512
00:41:12,480 --> 00:41:15,280
eighty four the database, because like
that's just happened to be what the update

513
00:41:15,480 --> 00:41:21,320
was, where someone didn't configure the
restriction correctly and now there's some column with

514
00:41:21,400 --> 00:41:24,000
this wrong value in it and it's
so noticeable too, right, Like it's

515
00:41:24,000 --> 00:41:27,920
not like, oh, database is
gone, let's fix that. It's oh,

516
00:41:27,960 --> 00:41:31,039
when did someone change the name of
all of our customers to eighty four?

517
00:41:34,039 --> 00:41:36,760
I mean that's kind of like a
badge of honor though, like if

518
00:41:36,760 --> 00:41:39,960
you were if you were the person
who implemented eighty four, like, would

519
00:41:39,960 --> 00:41:46,360
you put that on your LinkedIn?
So yeah, I'm that guy. I

520
00:41:46,400 --> 00:41:52,280
think that was my biggest fear when
I started my engineering career was doing one

521
00:41:52,320 --> 00:41:59,119
of these things like the terrified of
touching anything that could look and feel something

522
00:41:59,199 --> 00:42:02,719
like deleting a duction database. And
I think it is about your honor.

523
00:42:02,719 --> 00:42:07,000
It's the moment when you realize,
like, once you do something like this,

524
00:42:07,440 --> 00:42:12,199
hopefully to a smaller scale, you
kind of learn like this is a

525
00:42:12,239 --> 00:42:16,280
process issue, like this should have
this should have never I never should have

526
00:42:15,480 --> 00:42:19,400
been able to do it. Shouldn't
have been a risk that I would do

527
00:42:19,519 --> 00:42:22,760
this. I don't. But when
you start out, you feel you feel

528
00:42:22,880 --> 00:42:28,760
I'm gonna get fired if I need
one big wrong. Yeah, and it's

529
00:42:28,760 --> 00:42:30,519
one of those things. I don't
think you can communicate that. I think

530
00:42:30,559 --> 00:42:37,239
the only way to learn that is
to to earn that badge. This is

531
00:42:37,280 --> 00:42:39,480
a failure everyone has to go through
in your life. You know, suffer

532
00:42:39,519 --> 00:42:44,960
that trauma. You'll live with the
PTSD from that moment on about how the

533
00:42:45,000 --> 00:42:47,079
more the larger system, because you
know you've gained more experience at this time,

534
00:42:47,119 --> 00:42:51,760
you're in a more important position.
Your impact to the company is obviously

535
00:42:51,840 --> 00:42:54,320
going to be higher. You'll never
make that same mistake again. Yeah,

536
00:42:54,400 --> 00:42:59,920
it's like riding a bike, Like
you don't really understand the pros and con

537
00:43:00,119 --> 00:43:02,639
of riding a bike until you face
plant into the side of your house.

538
00:43:02,840 --> 00:43:07,719
You're like, oh, gotcha,
breaks, it was a mailbox for me.

539
00:43:14,360 --> 00:43:21,800
Cool. So let's talk about like
we talk about mimicking the production environment,

540
00:43:21,800 --> 00:43:27,920
and production environments are always changing with
you know, updated code and updates

541
00:43:27,960 --> 00:43:32,440
to the database and sometimes breaking changes, especially like since we've been talking about

542
00:43:32,480 --> 00:43:37,840
databases, like breaking schema changes with
cartosis. How do you make sure that

543
00:43:37,880 --> 00:43:45,760
those production changes get integrated back into
the local dev tool environments. Yeah,

544
00:43:45,280 --> 00:43:50,800
right now, that's something that's something
the end user has to configure. We're

545
00:43:50,840 --> 00:43:54,519
looking into ways to get this more
to provide like a product doze, way

546
00:43:54,679 --> 00:44:00,880
to automatically get this. But right
now, when it comes to reduction change,

547
00:44:00,920 --> 00:44:04,360
my dev environment has to update to
it. You got to. You

548
00:44:04,440 --> 00:44:08,920
gotta have a process in place to
check out updating the configurations. Ideally,

549
00:44:08,960 --> 00:44:14,320
what you do is you any time
that you make a production change, it

550
00:44:14,360 --> 00:44:19,960
goes through your krotosis set up first. That's the ideal scenario, but it's

551
00:44:20,000 --> 00:44:23,159
not always going to happen that way, of course. Yeah. No,

552
00:44:23,280 --> 00:44:29,039
I mean I imagine that you're making
the database changes in your source code anyway

553
00:44:29,079 --> 00:44:32,960
to run a migration, if it's
schemed or schema less you're making the code

554
00:44:34,039 --> 00:44:38,199
changes that are associated, and you
would just you can just refresh your dev

555
00:44:38,280 --> 00:44:42,360
environment, like you know, blow
it away and start fresh, because the

556
00:44:42,679 --> 00:44:45,119
migration should just not even need to
be run potentially and it would just be

557
00:44:45,159 --> 00:44:50,360
the same as production. Well at
least that would be my hope. Yes,

558
00:44:50,760 --> 00:44:58,880
yes, it's it gets goofy when
people do things like like hot fixes,

559
00:44:58,880 --> 00:45:05,480
where like other people hot fixed stuff
and you never looked at it.

560
00:45:05,480 --> 00:45:09,840
It can get goofy. But happy
past scenario, it's not that hard to

561
00:45:09,840 --> 00:45:13,639
get it back up to. You
know, these were these experiences are important.

562
00:45:13,639 --> 00:45:16,760
I remember having to do a production
fix and at the time that meant

563
00:45:16,760 --> 00:45:22,920
that a different team created a SPN
feature branch for us. It was a

564
00:45:22,960 --> 00:45:28,039
hot patch of production, and I
ended up with this problem where there was

565
00:45:28,159 --> 00:45:31,639
code that should have worked in production, but it didn't play nicely with what

566
00:45:31,760 --> 00:45:34,639
was there, and you know,
I compared it to what was actually in

567
00:45:34,920 --> 00:45:37,639
and Devin, it didn't match.
And what I had found out is that

568
00:45:37,679 --> 00:45:39,719
there could be multiple production fixes that
had to be done at the same time,

569
00:45:40,039 --> 00:45:44,519
and merging in SVN didn't really work
that well. And what happened is

570
00:45:44,519 --> 00:45:47,559
is you would get merge conflicts there, and this team that was not the

571
00:45:47,599 --> 00:45:52,480
development team or knew how the feature
should actually work, was going and actually

572
00:45:52,880 --> 00:45:58,480
doing the merge conflict resolution themselves and
pushing that out. And that was a

573
00:45:58,559 --> 00:46:05,400
very horrifying learning experience for me.
I think I'd rather drop the production database.

574
00:46:07,119 --> 00:46:09,320
I mean, you don't even have
the code to look at to know

575
00:46:09,360 --> 00:46:12,960
what the issue was, because like
I had to go find these other branches

576
00:46:12,960 --> 00:46:15,519
that weren't merged to production and like
merge them into my code and see like

577
00:46:15,639 --> 00:46:20,000
it still wasn't right, Like where
is this? Where is this? Wrong?

578
00:46:20,079 --> 00:46:22,599
Code just didn't exist anywhere. And
then of course you have like the

579
00:46:22,639 --> 00:46:27,760
incident response team coming to your desk
because in these days, of course you

580
00:46:27,800 --> 00:46:30,519
had to be in the office and
like asking you, why are we losing

581
00:46:30,559 --> 00:46:35,840
one hundred thousand dollars every minute because
of this problem? I'm like, I

582
00:46:35,880 --> 00:46:45,280
have literally no idea. Yeah,
that's always cool too, That's just another

583
00:46:45,320 --> 00:46:51,840
fun experience of being able to quantify
the cost of downtime, like, oh

584
00:46:51,880 --> 00:47:00,480
wow, this is serious. I
feel bad enough to work like twenty four

585
00:47:00,480 --> 00:47:02,199
hours a day, seven days a
week, and you'll never be able to

586
00:47:02,199 --> 00:47:07,719
wait from your computer in case something
happens there. Right, that's the solution

587
00:47:08,239 --> 00:47:12,840
four seven with VIM on the production
server. Yeah, it's just going to

588
00:47:12,960 --> 00:47:15,599
keep you know, if you keep
bringing that up like I'm gonna, I'm

589
00:47:15,599 --> 00:47:17,239
going to write down this in my
in my notebook, you know, see

590
00:47:17,239 --> 00:47:22,159
when Will got this product ready to
go, where we'll let you you know

591
00:47:22,400 --> 00:47:24,559
it uses maybe s s H under
the hood or your ID you know,

592
00:47:24,760 --> 00:47:29,840
just you called VIM and production you
can even you know it even it lends

593
00:47:29,880 --> 00:47:36,280
itself a name VIP, right,
and we'll see where that goes. Right,

594
00:47:36,599 --> 00:47:38,320
I'm just going to keep campaigning until
they let me give a talk at

595
00:47:38,360 --> 00:47:43,480
like platform con about how to do
this. Well, you know, how

596
00:47:43,519 --> 00:47:46,840
to get accepted to those conferences.
What you do is you first just say

597
00:47:46,880 --> 00:47:51,679
you've done it, and and then
if they get accepted, then you'll have

598
00:47:51,679 --> 00:47:54,599
to come with the whole product and
actually try it out and I then present

599
00:47:54,679 --> 00:48:05,000
it were full of useful tips today. I mean I really I really like

600
00:48:05,039 --> 00:48:09,719
this idea of getting a tool in
the mix here for helping build the the

601
00:48:09,719 --> 00:48:16,480
the environment for real. Yeah,
and if you like to help illustrate the

602
00:48:17,119 --> 00:48:21,039
scale of this, you know,
with your success with the Ethereum foundation,

603
00:48:21,239 --> 00:48:28,440
that's a monster project with completely open
source, you know, and so I'm

604
00:48:28,440 --> 00:48:30,440
assuming that like if you want to
if like, if I wanted to contribute

605
00:48:30,480 --> 00:48:39,639
to the Ethereum project, I could
laugh and Warren, I think I'm going

606
00:48:39,679 --> 00:48:43,440
to ask for access to, you
know, update this tool, and I'd

607
00:48:43,440 --> 00:48:45,039
be like, well, you know, will you know, making changes to

608
00:48:45,119 --> 00:48:52,599
it? I'm not. I'm not
sure I know. But if I wanted

609
00:48:52,599 --> 00:48:57,920
to to contribute to Ethereum, like
I could use crytosis to build my local

610
00:48:58,000 --> 00:49:01,400
div environment which helps me write the
code, test it, and then create

611
00:49:02,320 --> 00:49:07,840
a poll or open a poll request
that's going to be more likely to meet

612
00:49:07,960 --> 00:49:13,880
their contribution guidelines. Is that a
fair statement? It's I mean, it

613
00:49:13,920 --> 00:49:17,000
probably is the easiest way to do
that, Yeah, yeah, versus the

614
00:49:17,079 --> 00:49:23,719
alternative prior to because I worked with
Ethereum before they started at adopting cretosis,

615
00:49:23,800 --> 00:49:29,719
like prior to that, you know, it was like twenty or thirty steps

616
00:49:29,760 --> 00:49:32,239
to get this thing running, you
know, where you were downloading from all

617
00:49:32,280 --> 00:49:36,440
these different repositories, and then you
were compiling it, and then you had

618
00:49:36,440 --> 00:49:40,599
to figure out in the config files
which parts you had to change to make

619
00:49:40,679 --> 00:49:44,519
these different things that you just compiled, but you weren't really sure what they

620
00:49:44,559 --> 00:49:49,679
were talk to each other and so
yeah, this like having this type of

621
00:49:49,719 --> 00:49:52,800
solution makes it easier, and that
could be that could be another benefit for

622
00:49:52,840 --> 00:49:58,079
you, especially if you're an open
source project, making it easier for people

623
00:49:58,119 --> 00:50:05,239
to contribute to your product. There's
actually a good rule of thumb for when

624
00:50:05,360 --> 00:50:10,079
an open source project or community would
would benefit from from using for dosis,

625
00:50:10,079 --> 00:50:14,400
and it's when you go to the
docks and it says how to run locally

626
00:50:14,719 --> 00:50:17,719
if it's like the longer that thing
is, the better you're going to get.

627
00:50:20,400 --> 00:50:22,480
It's kind of the general rule of
thumb is how long is that thing?

628
00:50:23,400 --> 00:50:25,880
So yeah, for the ethereum,
it was, it was huge.

629
00:50:27,239 --> 00:50:30,039
There's other general rule of thumb is
that that that that's pretty much how it

630
00:50:30,039 --> 00:50:34,639
works, uh and and it is
help work for contributing. It's most of

631
00:50:34,679 --> 00:50:40,199
the people, most of our implementations
are open source entirely, so it's you

632
00:50:40,199 --> 00:50:45,559
know, it's it's people contributing back
to those uh, people that use them,

633
00:50:45,719 --> 00:50:49,199
putting things back, getting more options
available. And that really really helps

634
00:50:49,239 --> 00:50:53,599
because our team doesn't have time to
handle all of the different scenarios. UH.

635
00:50:53,960 --> 00:50:59,239
When we start building examples and everything. So having people contribute back is

636
00:50:59,519 --> 00:51:04,199
I think the the Ethereum package,
it's called a package, the definition of

637
00:51:04,239 --> 00:51:07,000
how to spin up an environment,
the Ethereum package. It really is a

638
00:51:07,039 --> 00:51:10,840
remarkable work of open source contributions coming
back. They're very, very engaged users.

639
00:51:12,679 --> 00:51:15,559
I think you touched on this a
little bit earlier on about first run

640
00:51:15,599 --> 00:51:17,000
the licensing model and then and then
you change off to that. Like if

641
00:51:17,079 --> 00:51:22,000
someone's going to get started today with
this, is it I install a CLI

642
00:51:22,159 --> 00:51:24,800
and write a configuration file. Is
there a hosted version? Like on these

643
00:51:24,880 --> 00:51:30,400
packages available and you'll deploy them automatically
to my cloud environment. What does this

644
00:51:30,400 --> 00:51:37,119
look like? There's actually two there's
two versions right now. The standard way

645
00:51:37,199 --> 00:51:40,400
is download the Clyde the a homebrew
or app get or whatever is the preferred

646
00:51:40,719 --> 00:51:45,840
installation thing. Most people who start, they're starting because they see a package

647
00:51:45,880 --> 00:51:50,079
they want to run. So so
most people they're just running a package when

648
00:51:50,079 --> 00:51:53,320
they start to see how it spins
up, and then they start modifying that

649
00:51:53,360 --> 00:51:55,639
package if they want to modify it, or they're like, hey, this

650
00:51:55,719 --> 00:51:59,760
is cool, I'm going to brite
my own my own system, and it's

651
00:51:59,800 --> 00:52:01,840
all all happens on your own laptop
and you're own hardware, and you just

652
00:52:01,920 --> 00:52:07,199
you just run with it and go. And then we do have a cloud

653
00:52:07,679 --> 00:52:10,280
right now that we host where Hey, let's say you don't want to down

654
00:52:10,679 --> 00:52:14,440
the CLI and you don't want to
be using your own compute to be running

655
00:52:14,760 --> 00:52:17,400
the environment, you can just button
click. It's like a no code interface

656
00:52:17,400 --> 00:52:24,239
to run any existing package. There
is also no code interface for modifying the

657
00:52:24,280 --> 00:52:28,679
package to a certain degree. That's
evolving, so you can get more and

658
00:52:28,719 --> 00:52:32,679
more power over modifying it. And
then once you're excited about it, you

659
00:52:32,679 --> 00:52:36,079
can write your own package and then
you can deplay that there as well.

660
00:52:37,880 --> 00:52:43,519
And then the packages are those the
ones that end up showing up in the

661
00:52:43,639 --> 00:52:47,800
Kurtosis catalog. Yes, yeah,
because the Curtosis catalog is actually really cool.

662
00:52:47,840 --> 00:52:52,480
Specifically, you know, if you
going back to the Ethereum example,

663
00:52:52,639 --> 00:52:57,639
you know, you can just grab
that from the catalog and it runs for

664
00:52:57,679 --> 00:53:00,480
you, right, and then there's
there's actually quite a few out there in

665
00:53:00,519 --> 00:53:04,440
your catalog. One that I happened
to know of is the Polygon CDK as

666
00:53:04,480 --> 00:53:07,280
of last week, just went up
in the catalog. So if you want

667
00:53:07,280 --> 00:53:10,159
to run that, you know,
just grab it from the catalog and there

668
00:53:10,199 --> 00:53:14,199
you go. Interesting. Yeah,
they're right there. And and what the

669
00:53:14,400 --> 00:53:16,880
I mean the way the catalog works
right now is it scans public GitHub.

670
00:53:16,960 --> 00:53:22,679
So if it's an open source package, it's going to get detected and populated

671
00:53:22,719 --> 00:53:25,480
into the catalog and then you can
just run it. Because it's an open

672
00:53:25,559 --> 00:53:30,880
source, it's an open source tool. So the Polygon CDK, for example,

673
00:53:31,320 --> 00:53:35,480
the Polygon team put a lot of
work into to get into the package

674
00:53:35,559 --> 00:53:38,559
very in a very nice format,
and now it's there and you can just

675
00:53:38,599 --> 00:53:45,159
button click run it. And one
of the most exciting things about having made

676
00:53:45,159 --> 00:53:49,760
this step of opening everything is that
we're seeing stuff happen without us knowing it

677
00:53:49,880 --> 00:53:52,079
or tracking it too closely, so
like, oh, look like look at

678
00:53:52,119 --> 00:53:54,920
what the Polygon team has done.
This is amazing And that's very exciting.

679
00:53:57,280 --> 00:54:00,920
Yeah, for sure. And I
think that's because y'all are completely open source

680
00:54:01,039 --> 00:54:07,599
as well. Right, So the
tool is actually the BSL license, okay,

681
00:54:07,000 --> 00:54:15,280
source available. You can do everything
except for recreate our right on it,

682
00:54:15,639 --> 00:54:22,280
which seems like a fair constrained exactly. Yeah, no, but I

683
00:54:22,320 --> 00:54:29,719
think that's really cool having the catalog
there, especially with the open source communities,

684
00:54:30,760 --> 00:54:35,039
and it seems that Kurtosis is really
resonating there to make it easy for

685
00:54:35,119 --> 00:54:40,280
people to just run and then contribute
and then improve your product and in a

686
00:54:40,320 --> 00:54:44,800
consistent format, you know, because
I think that's one of the biggest challenges

687
00:54:44,800 --> 00:54:52,119
of running an open source project is
verifying or vetting out the contributions that you

688
00:54:52,199 --> 00:54:58,239
get to make sure that they have
done in some cases just tribal knowledge.

689
00:54:59,079 --> 00:55:02,360
Yes, yes, yes. And
it's one thing we were noticing, especially

690
00:55:02,360 --> 00:55:07,400
as we work with more and more
people who have cloud dependencies, is the

691
00:55:07,440 --> 00:55:14,280
more that your system is is composed
of open source components, the more this

692
00:55:14,360 --> 00:55:19,880
problem is important to you because you're
you're dealing with a launch of different software

693
00:55:19,880 --> 00:55:23,400
components built by different organizations, where
where you can run that entire software component

694
00:55:23,440 --> 00:55:27,840
yourself. That's the whole point of
the open source So you don't have the

695
00:55:28,000 --> 00:55:32,039
issue of you know, cloud provider
run a production environment has zero incentive to

696
00:55:32,039 --> 00:55:36,079
like make you able to like modify
it or move it. In the open

697
00:55:36,079 --> 00:55:38,239
source communities, not the case,
you actually can do it entirely. So

698
00:55:38,639 --> 00:55:45,320
the more open source your tool is
in terms of like the percentage of services

699
00:55:45,320 --> 00:55:49,199
that are involved in your environment which
are open source. The more the more

700
00:55:49,239 --> 00:55:54,199
you get this benefit of like how
do we verify that the contribution is going

701
00:55:54,280 --> 00:55:57,599
to work and makes sense? And
you do kind of have to run it

702
00:55:57,639 --> 00:56:00,519
all to see it. Yeah,
I would even take it further, honestly

703
00:56:00,679 --> 00:56:07,360
that most open source solutions out there
that aren't using a strategy or have a

704
00:56:07,400 --> 00:56:12,480
strategy for easy for contributors to come
in and run the software would benefit a

705
00:56:12,480 --> 00:56:15,199
lot from a strategy like this,
because realistically, if you go out there

706
00:56:15,239 --> 00:56:20,199
and find an open solution, no
matter what it is, even one used

707
00:56:20,199 --> 00:56:23,599
by thousands of organizations, it is
quite the challenge to get that up and

708
00:56:23,679 --> 00:56:28,280
running. Even if it's a darker
container, even if it's you know,

709
00:56:28,320 --> 00:56:30,360
in a registry like it's still there's
a lot that goes on with it.

710
00:56:30,400 --> 00:56:37,760
I remember it was it was even
recently that you didn't need a zookeeper anymore

711
00:56:37,800 --> 00:56:42,199
to run Kafka, Like it was
always this sort of mess that if you

712
00:56:42,239 --> 00:56:45,719
ever wanted to run Kafka yourself,
you needed three different services running on your

713
00:56:45,960 --> 00:56:51,840
machine with multiple nodes and clusters at
the same time in order to even test

714
00:56:51,880 --> 00:56:55,000
this out. And I'm like,
what, yes, yes, it's a

715
00:56:55,039 --> 00:56:59,440
big issue, and it's and it's
for the most part, in my opinion,

716
00:56:59,480 --> 00:57:04,039
it's a bit of a silent issue
because if you're contributing back to an

717
00:57:04,039 --> 00:57:07,159
open source project, and a lot
of the time you're doing it out of

718
00:57:07,880 --> 00:57:10,559
almost like a hobby mentality. It's
like, I want to help this project,

719
00:57:10,599 --> 00:57:14,920
I'm interested in it. If there's
a really big friction bar for me

720
00:57:15,000 --> 00:57:17,039
to do that, I'm not getting
paid to contribute back to it. That's

721
00:57:17,079 --> 00:57:22,360
the whole idea. So I'm not
going to put an inorder the amount of

722
00:57:22,400 --> 00:57:25,639
effort into knocking down the door to
say, like make my testing environment better,

723
00:57:25,760 --> 00:57:29,639
like make my environment better, I'm
just going to disappear. So like

724
00:57:29,679 --> 00:57:35,159
the amount of open source contributions that
you're missing because because people just got frustrated

725
00:57:35,159 --> 00:57:37,519
in the first five minutes and say, you know what, like someone else

726
00:57:37,599 --> 00:57:42,559
is going to handle this contribution at
some point hopefully is I can just imagine

727
00:57:42,559 --> 00:57:45,440
the velocity that you're losing there.
I mean, I hope that's really the

728
00:57:45,760 --> 00:57:50,920
case, that that's even where they're
falling off. I find that in Unfortunately,

729
00:57:50,960 --> 00:57:52,400
the state of the open source today
is like you find an issue out

730
00:57:52,440 --> 00:57:55,719
there, or you want to even
make a change and you may open an

731
00:57:55,719 --> 00:58:00,000
issue or open that poor request and
just never hear back. And with stuff

732
00:58:00,000 --> 00:58:05,119
like this, you know that the
team has invested in what that experience is

733
00:58:05,239 --> 00:58:07,320
on building stuff up. So it
could be a badge of honor really to

734
00:58:07,360 --> 00:58:13,199
say this open source project is using
kurtosis or another tool that makes this experience

735
00:58:13,239 --> 00:58:15,719
better because you know that you thought
about it, that they care about getting

736
00:58:15,760 --> 00:58:24,679
those contributions. Then, so,
is there is there a thought pattern behind

737
00:58:24,679 --> 00:58:29,519
you, Like when we talk about
production servers with the whole DevOps movement,

738
00:58:30,519 --> 00:58:36,719
we kind of came up with this
philosophy of servers are cattle not petch,

739
00:58:36,800 --> 00:58:39,599
you know, referring to the fact
that they should be short lived and you

740
00:58:39,639 --> 00:58:45,159
shouldn't have emotional attachment tool them.
You shouldn't be like hand curating them.

741
00:58:45,440 --> 00:58:52,559
But I feel like dev environments maybe
didn't fall under that umbrella. Is there

742
00:58:52,800 --> 00:58:59,559
like a thought process or something that
you've noticed through critosis where you kind of

743
00:58:59,760 --> 00:59:05,400
see people shifting away from the long
lived development environments because it's a little easier

744
00:59:05,599 --> 00:59:10,000
and standardized to bring them up.
Now, it's I don't know if I

745
00:59:10,039 --> 00:59:14,480
would say that it's a shift away
from it. It's in some ways it

746
00:59:14,559 --> 00:59:19,880
is for certain use cases, like
so how could I describe this? What

747
00:59:19,920 --> 00:59:24,320
one thing crtosis does is if you
run your integration tests in CI and cider

748
00:59:24,360 --> 00:59:29,440
crtosis, it's quite easy to rerun
that locally in your laptop. So if

749
00:59:29,480 --> 00:59:35,320
you want to debug or failing integration
and the end test, rather than recreating

750
00:59:35,320 --> 00:59:37,760
it in a remote cluster that's like
a shared cluster, you would just rerun

751
00:59:37,800 --> 00:59:45,079
it on your laptop. And in
that case there's a shift towards ephemeral environments,

752
00:59:45,320 --> 00:59:49,280
like you're just for depth, like
you're just running vision. But there's

753
00:59:49,320 --> 00:59:52,840
also people who are like, I'm
going to use kryptosis to set up a

754
00:59:52,880 --> 00:59:59,119
persistent development environment because the other deaths
of my team it's just significantly easier for

755
00:59:59,159 --> 01:00:01,960
them to ping an endpoint that's sitting
there stable and to get into that.

756
01:00:02,119 --> 01:00:07,239
Then even to like download a tool
and then re run some commands every single

757
01:00:07,280 --> 01:00:10,800
time, and and then you get
into the problem of like data management.

758
01:00:10,920 --> 01:00:17,199
So if you've invested in your dev
environment, having a particular data set behind

759
01:00:17,239 --> 01:00:22,199
it that's useful for that dev project, and then investing the extra effort into

760
01:00:22,320 --> 01:00:25,960
cloning and moving that data for an
ephemeral use, it often doesn't make sense

761
01:00:27,000 --> 01:00:31,400
you just use the same thing.
So I think it really is It really

762
01:00:31,440 --> 01:00:40,119
is dependent on the use case.
But there definitely is a meaningful difference between

763
01:00:40,280 --> 01:00:45,039
how you treat your dev servers and
your broad servers. So like the cattle,

764
01:00:45,119 --> 01:00:47,800
the cattle not pets thing. I
think it's totally fine for your dev

765
01:00:47,840 --> 01:00:52,519
server to be a pet. Like
it's there's there's there's times when it makes

766
01:00:52,519 --> 01:00:54,519
a lot of sense. The moment
you want to see that it looks like

767
01:00:54,559 --> 01:00:58,159
braud, you do kind of want
to turn it into a cattle just to

768
01:00:58,199 --> 01:01:00,079
see how it works. But there's
a lot of telling reasons to treat it

769
01:01:00,119 --> 01:01:07,760
like a pet, especially if you
are debugging an issue or trying to figure

770
01:01:07,800 --> 01:01:10,920
out the way things kind of work. You want to have that state sitting

771
01:01:10,960 --> 01:01:15,719
around, and you want to really
preserve that because it's going to take you

772
01:01:15,760 --> 01:01:19,639
some time thinking and creative time to
work with it. And if it's a

773
01:01:19,719 --> 01:01:23,239
cattle and you lose it halfway through
your work, it's miserable. You got

774
01:01:23,239 --> 01:01:29,000
to restart, right And I think
I heard you say that there is a

775
01:01:29,679 --> 01:01:34,599
there's a use case here for using
something like critosis to create a persistent dev

776
01:01:34,719 --> 01:01:39,119
environment that provides a common set of
services for your dev team to access.

777
01:01:39,159 --> 01:01:44,840
So not everyone has to run that
locally, but there's one that's centrally available

778
01:01:44,880 --> 01:01:50,920
for them that maybe has a specific
configuration or has a something unique to it

779
01:01:50,960 --> 01:01:55,559
that everyone needs to be thinking about
or addressing in their local development efforts.

780
01:01:55,599 --> 01:02:00,079
So you just provide that as a
shared service for everyone. Yes, and

781
01:02:00,400 --> 01:02:06,679
that's useful for a lot of development
workflows. But then there's another set of

782
01:02:06,679 --> 01:02:10,519
development workflows where you're going to say, I actually do want to isolate for

783
01:02:10,960 --> 01:02:16,719
an ephemeral purpose a particular set of
micro services or a data set, and

784
01:02:16,760 --> 01:02:22,400
I want that to be my sandbox
that nobody else is touching. And that

785
01:02:22,480 --> 01:02:23,480
happens a lot as well, because
it's like, hey, what if three

786
01:02:23,519 --> 01:02:27,760
different teams want to use the dev
cluster and they're all hitting each other,

787
01:02:27,920 --> 01:02:30,639
and then you have to go on
Slack and say, hey, wait a

788
01:02:30,639 --> 01:02:31,440
minute, like, let me use
it for the next two hours, you

789
01:02:31,519 --> 01:02:36,679
guys, when you blow away their
work, and it's miserable, But that's

790
01:02:36,760 --> 01:02:40,199
only sometimes. So the best world
is you have the choice. When you

791
01:02:40,280 --> 01:02:43,920
need to get the isolation, you
can get it quite easily. When you

792
01:02:44,679 --> 01:02:47,400
don't need it, you can use
other people's work. And that's the direction

793
01:02:47,440 --> 01:02:54,599
that we're trying to go towards,
is how do we provide we like high

794
01:02:54,679 --> 01:02:58,519
high level. You want it to
feel like you're in Harry Potter and you

795
01:02:58,519 --> 01:03:00,519
have a wand and you're just like
that, you have the figure need Like

796
01:03:00,559 --> 01:03:05,239
that's the highest level user experience that
you want to get to. It's like

797
01:03:05,239 --> 01:03:07,760
cool, Like, how do you
design the want such that you can do

798
01:03:07,880 --> 01:03:10,960
that? And I think you just
want to have the configurability to be able

799
01:03:12,000 --> 01:03:15,000
to pick which in this scenario,
I want the shared duftbuster or I want

800
01:03:15,039 --> 01:03:21,960
the isolated if I'm one right on, So, continuing on that thought,

801
01:03:22,039 --> 01:03:24,800
what does the future of krotosis look
like? What are the in addition to

802
01:03:24,840 --> 01:03:29,920
that, what are some of the
things that you would like to see getting

803
01:03:30,000 --> 01:03:36,920
implemented? Absolutely, so I said
before, it's right now. Crotosis operates

804
01:03:37,000 --> 01:03:42,679
to you give your terraform scripts or
your open TOFU and it deploys your provisions,

805
01:03:42,719 --> 01:03:46,239
your hardware so to speak, and
maybe your virtualization later like the communities

806
01:03:46,320 --> 01:03:52,679
Buster or Ductor Engine, and then
Crotosis deploys on top of that. We

807
01:03:52,719 --> 01:03:55,079
want crtosis to move in the direction
where you no longer have to do that

808
01:03:55,119 --> 01:03:59,440
first part. You no longer have
to think about and dig into like how

809
01:03:59,440 --> 01:04:02,480
do I how do I split my
my cloud assets? Over how do I

810
01:04:02,519 --> 01:04:06,280
provision my hardware? We want to
get better and better and better at providing

811
01:04:08,679 --> 01:04:13,039
tools to not have to worry about
that, so that that's where we're going.

812
01:04:13,920 --> 01:04:18,519
You know, the more that the
folks in the blockchain space they use

813
01:04:18,599 --> 01:04:23,159
a lot of open source tools where
it's just all can be containerized and you

814
01:04:23,199 --> 01:04:26,280
get everything in the container. The
more that you're working with folks who have

815
01:04:26,360 --> 01:04:30,800
alliances on like a to bus services
or manage authentication services and this kind of

816
01:04:30,800 --> 01:04:34,440
thing, the more that that abstraction
is not so useful anymore because those are

817
01:04:34,440 --> 01:04:38,480
the issues, the issues of the
cloud stuff. So the more that we

818
01:04:38,519 --> 01:04:41,599
can build an instruction there that captures
that stuff in a way that's useful,

819
01:04:42,000 --> 01:04:44,519
that's where we want to go,
and that's where we're doing all this research,

820
01:04:44,559 --> 01:04:47,440
and that's where that's where this thought
experiment of like, well, to

821
01:04:47,559 --> 01:04:54,880
some degree you're limited by the cloud
provider allowing you to easily get like everything

822
01:04:55,039 --> 01:04:59,440
worked over to some degree, have
those limitations. So then, given that's

823
01:04:59,440 --> 01:05:01,039
the world we live in, how
do we get as close as possible?

824
01:05:01,079 --> 01:05:03,679
And that's kind of the design work
that we're looking at right now. Well,

825
01:05:03,719 --> 01:05:08,840
I think there's totally a gap here
in the IAIC world where it doesn't

826
01:05:08,840 --> 01:05:13,679
feel like any of the offerings are
super compelling. There's I mean, I

827
01:05:13,719 --> 01:05:20,440
think anyone that assigns themselves a DevOps
title has a unique perspective on complaining about

828
01:05:20,480 --> 01:05:25,320
literally everything that exists. So you
know, of course the tools that we

829
01:05:25,519 --> 01:05:29,000
have, you know, are not
as good as they should be. And

830
01:05:29,119 --> 01:05:31,639
I think there's always a space for
someone to say I wrote a better terror

831
01:05:31,639 --> 01:05:34,559
form or whatever, because I feel
like that's sort of the abstraction layer that

832
01:05:35,159 --> 01:05:41,440
exists over the cloud providers. And
I'm not saying that anyone should go and

833
01:05:41,480 --> 01:05:44,719
create a new is C tool.
I'm sure someone just got that idea right

834
01:05:44,840 --> 01:05:47,239
when you can do that, you
absolutely can do that and wrap the SDKs

835
01:05:47,280 --> 01:05:51,000
out there. But I do I
do feel like that there's always there is

836
01:05:51,000 --> 01:05:56,800
definitely a room here to grow in
that direction. Yeah, and then that's

837
01:05:58,159 --> 01:06:00,760
it's kind of a maybe a fork
in the road. But the two flip

838
01:06:00,840 --> 01:06:04,840
philosophies is like create that layer so
that it's very easy to do those forks.

839
01:06:05,079 --> 01:06:10,519
The other one is, I guess
it's you call it like the honeycomb

840
01:06:10,679 --> 01:06:14,440
or the launch Darkly philosophy, where
it's like, can you build tools that

841
01:06:14,559 --> 01:06:18,239
make production just safer, like feature
flags, so now just don't worry about

842
01:06:18,239 --> 01:06:23,440
testing or like like so much.
Just get into production under feature flag and

843
01:06:23,480 --> 01:06:26,480
then and then just turn it on
for a certain set of customers and then

844
01:06:26,480 --> 01:06:30,599
you'll figure out how things work or
like deserveability thing. Instead of focusing so

845
01:06:30,679 --> 01:06:33,960
much on like fourteen year staging and
testing environment, you just go into production.

846
01:06:34,039 --> 01:06:38,000
We're going to monitor everything so closely
that we're going to minimize any kind

847
01:06:38,000 --> 01:06:43,519
of damage. And there's I think
there's gaps on both sides, and there

848
01:06:43,840 --> 01:06:47,599
the different engineering leaders and platform leaders
have different opinions about about which way they

849
01:06:47,639 --> 01:06:54,360
want to go, so it's kind
of a lots of different picks on.

850
01:06:54,800 --> 01:06:58,679
I mean, I definitely have an
opinion on that. Realistically, it would

851
01:06:58,719 --> 01:07:00,400
be nice if we could get to
that world. I don't think the cloud

852
01:07:00,400 --> 01:07:04,880
providers offer us the sort of control
over the environment that would allow us to

853
01:07:04,960 --> 01:07:10,280
perform like one out of every million
requests. Yeah, go and changes.

854
01:07:10,440 --> 01:07:15,639
I just feel like we're much better
off pulling production down to another environment to

855
01:07:15,960 --> 01:07:20,400
validate that the code that we have
is exactly executing as we want, and

856
01:07:20,440 --> 01:07:25,400
we can do it, you know, creating synthetic requests from our production environment

857
01:07:25,400 --> 01:07:30,599
and replicating that against the ephemeral,
dynamically created dev one. This is a

858
01:07:30,679 --> 01:07:36,559
perfect example of what we're seeing is
Warren who is like, let's get things

859
01:07:36,760 --> 01:07:41,519
synthetically mocked, Let's get everything running
locally, Let's get it as close as

860
01:07:41,519 --> 01:07:44,400
possible, make sure things work,
and then we have Will who wants to

861
01:07:44,440 --> 01:07:54,440
film Upbraud team VIM right here.
I think valid approaches about valid approaches.

862
01:07:54,480 --> 01:07:58,159
People have different appetites what they want
to do. No, I mean,

863
01:07:58,199 --> 01:08:01,519
there's still definitely things where I'm a
huge proponent of pushing stuff to testing in

864
01:08:01,639 --> 01:08:05,760
production, and we do that under
certain circumstances where we make sure that we

865
01:08:05,920 --> 01:08:10,119
wrapped. Like parallel execution is a
huge thing for us. When we're changing

866
01:08:10,360 --> 01:08:14,079
some of the business logic of how
something works, we'll usually execute two different

867
01:08:14,079 --> 01:08:18,840
paths actually simultaneously in production and validate
whether or not the outcome is exactly as

868
01:08:18,840 --> 01:08:24,760
it should be, and before turning
off the legacy one and when you do

869
01:08:24,840 --> 01:08:30,000
that, When you do that,
does that output still go back to like

870
01:08:30,079 --> 01:08:35,159
your fork traffic or do you know
it's in process? Like it'll basically the

871
01:08:35,159 --> 01:08:40,359
equivalent of having two threads. You
know, you call this method and it

872
01:08:40,399 --> 01:08:43,159
does two things at the same time, and then we throw away the new

873
01:08:43,239 --> 01:08:45,880
result until we like we validate it, and then we throw it away and

874
01:08:45,960 --> 01:08:49,239
if we get any invalidations, then
we you know, that's an alert that

875
01:08:49,279 --> 01:08:53,279
someone goes and looks at and comes
back and says, Okay, you know

876
01:08:53,279 --> 01:08:56,680
what happened here. And if we
don't get any alerts after a period of

877
01:08:56,720 --> 01:09:00,279
time, then that sort of level
of testing has been completed and we can

878
01:09:00,359 --> 01:09:03,119
just delete the old code and own
and actually return the new stuff. I

879
01:09:03,199 --> 01:09:06,199
love that setup. I think that's
I think that's great. I think I

880
01:09:06,199 --> 01:09:12,199
think that's like decently. I mean, it's it's a far cry from like

881
01:09:12,279 --> 01:09:15,279
VIM and prade, but like it's
almost a step towards that. Right.

882
01:09:15,359 --> 01:09:18,680
It's like like you're at least able
to get something into production more safely,

883
01:09:18,920 --> 01:09:25,000
even though it's I imagine there's constraints
on like you wouldn't be able to do

884
01:09:25,039 --> 01:09:27,920
that if there was like very secure
data that was going into the response that

885
01:09:27,960 --> 01:09:29,880
you're like, you shouldn't see.
You wouldn't be able to nidate it that

886
01:09:29,960 --> 01:09:31,239
well, well, I mean we
we sort of had that because we're an

887
01:09:31,279 --> 01:09:36,680
identity provider federated and aggregation and no
one sees the data. It's just you

888
01:09:36,680 --> 01:09:41,399
know, hey, there's something here
that doesn't match, and you know,

889
01:09:41,439 --> 01:09:45,119
you can sort of revalidate that and
realistically the actual who the user is doesn't

890
01:09:45,119 --> 01:09:47,760
really matter in those circumstances. You
can just sort of see what it looks

891
01:09:47,840 --> 01:09:53,920
like. If for some reason there
is some concern. We encrypt the logs

892
01:09:53,960 --> 01:09:57,920
that get written even before they leave
the production environment. We hash the data

893
01:09:57,920 --> 01:10:01,439
that we'll get seen automatically by any
of our engineers before it leaves. So

894
01:10:01,960 --> 01:10:06,520
I mean, very rarely it's the
case that that actually, like what someone's

895
01:10:06,560 --> 01:10:12,039
last name was was relevant for us. That's a very cool setup. I

896
01:10:12,159 --> 01:10:16,880
like that. So that's some discipline
there, though, Like that's very that

897
01:10:16,920 --> 01:10:21,159
sounds to me like that sounds like
a very disciplined approach because you're being very

898
01:10:23,000 --> 01:10:30,000
deliberate about what you're testing, writing
that second path for it, and then

899
01:10:30,039 --> 01:10:36,439
you're having to specifically define and measure
what the success criteria for that is.

900
01:10:36,840 --> 01:10:42,399
So that's a charitable way of looking
at it. You know, maybe that's

901
01:10:42,399 --> 01:10:46,239
my na You don't do that at
all. I mean there was nobly a

902
01:10:46,279 --> 01:10:48,319
time in my life where I'm like, you know, you're releasing that code

903
01:10:48,359 --> 01:10:53,479
to production. Why is there an
arbitrary try catch block you know around that?

904
01:10:54,279 --> 01:10:58,520
But there is another aspect here when
if you're if you care about reliability

905
01:10:58,720 --> 01:11:01,439
and that your stuff don't really go
down and production and the code you're changing,

906
01:11:01,600 --> 01:11:05,600
like there are too many unknowns there. Realistically, you didn't test literally

907
01:11:05,720 --> 01:11:11,720
every case, and sometimes it's not
so critical that you have tested everything,

908
01:11:11,800 --> 01:11:15,560
but you know, validating something happens
in production, like oh, we don't

909
01:11:15,560 --> 01:11:16,920
know if a customer is using this. Well you can at least create a

910
01:11:16,960 --> 01:11:20,560
log message that says, uh,
hey, customer is using this thing,

911
01:11:20,640 --> 01:11:25,439
don't turn it off yet and run
that for a bunch of weeks so that

912
01:11:25,479 --> 01:11:30,800
you have the data to validate.
Uh yeah, I mean you laugh,

913
01:11:30,960 --> 01:11:34,399
but you're not if you don't take
that first step, Like this is absolutely

914
01:11:34,439 --> 01:11:40,600
the advice that someone could be utilizing
to improve their decision making apility, not

915
01:11:40,680 --> 01:11:44,600
like some spreadsheet with a list of
features that are on or off per customer,

916
01:11:44,840 --> 01:11:46,840
but really, like what is happening
in your production environment, and this

917
01:11:46,920 --> 01:11:49,560
is just the next level after that, which is release the code, have

918
01:11:49,640 --> 01:11:54,800
multiple versions running at the same time, measure performance, reliability, you know,

919
01:11:55,000 --> 01:11:59,760
consistency, whatever that is. This
is just how we've happened to be

920
01:11:59,800 --> 01:12:02,680
doing and I feel like it works
really well for us. Unfortunately, so

921
01:12:03,039 --> 01:12:05,520
you know, we're not going to
migrate to something else. I don't know.

922
01:12:05,600 --> 01:12:10,000
I haven't heard anyone else doing something
that you know really changes this.

923
01:12:10,199 --> 01:12:14,920
I mean there's blue green deployments right
where you're siphoning traffic off from your new

924
01:12:15,399 --> 01:12:18,640
version. It sometimes it doesn't really
make sense a lot when you have a

925
01:12:18,640 --> 01:12:24,439
lot of features going to production over
time, where the features especially aren't interacting

926
01:12:24,439 --> 01:12:27,760
with each other. Having them weigh
in a queue to get through this and

927
01:12:27,760 --> 01:12:30,479
then deciding to roll back or not
is a huge expensive process. As you

928
01:12:30,560 --> 01:12:32,920
said, you know, feature flags
can work here, although that's again a

929
01:12:32,960 --> 01:12:38,000
switch. So really parallel execution has
been the only thing I can think of

930
01:12:38,079 --> 01:12:42,199
that really made sense for us early
on. And how do you think about

931
01:12:42,279 --> 01:12:46,800
how that compares to like a canary
environment. I mean, this is sort

932
01:12:46,840 --> 01:12:49,720
of the same thing, like when
you if you have millions of requests that

933
01:12:49,760 --> 01:12:55,039
are that are coming into your service
all the time, then some number of

934
01:12:55,039 --> 01:12:59,399
people would be affected by any change, no matter how small. And if

935
01:12:59,399 --> 01:13:01,039
you have the budget, which is
you know, one of the key terms

936
01:13:01,039 --> 01:13:04,560
that we talk a lot about in
observability, then you know, go for

937
01:13:04,640 --> 01:13:06,800
it, right, you know you
don't need to take some extra steps.

938
01:13:08,079 --> 01:13:12,399
But if it's just a matter of
you know, changing a bunch of parameters

939
01:13:12,439 --> 01:13:15,359
somewhere and you want to see how
it validates it, especially when you have

940
01:13:15,399 --> 01:13:16,920
all the business logic on your side
already, right, you know you're not

941
01:13:17,000 --> 01:13:20,960
calling a third party service, you're
not doing some other things like if you

942
01:13:20,960 --> 01:13:25,800
can really test it all in your
service in production at runtime, why not

943
01:13:26,399 --> 01:13:31,960
do this to validate? Oh was
that hard to set up? I mean

944
01:13:32,000 --> 01:13:34,319
you really, like, you know, think of you're changing a method,

945
01:13:34,359 --> 01:13:38,159
you know, any any engineer out
there. You're changing the internals of some

946
01:13:38,239 --> 01:13:42,800
method. All you need to do
is duplicate that method down to a second

947
01:13:42,800 --> 01:13:45,920
block, call it V two and
have the caller execute both of those things,

948
01:13:45,079 --> 01:13:48,079
wrap the other one in a trycatch
block, and then validate the outputs

949
01:13:48,079 --> 01:13:51,239
in your code and if it doesn't
work, you know, log a message

950
01:13:51,399 --> 01:13:55,880
and that's it's not It's honestly not
a lot there. You can create some

951
01:13:55,920 --> 01:14:00,520
structure and around that with a framework
where you can wrap you know, parallel

952
01:14:00,520 --> 01:14:04,399
execution and then pass it into methods
and have it automatically do it. It's

953
01:14:04,439 --> 01:14:08,880
not a lot of extra overhead if
you feel like you're doing this very very

954
01:14:08,920 --> 01:14:12,199
often. I think this happens,
like one out of ten features that gets

955
01:14:12,199 --> 01:14:15,840
implemented goes in like this. It
also gives us some security around it,

956
01:14:15,960 --> 01:14:20,079
so I wouldn't say it's complicated.
I think a lot of engineers know that

957
01:14:20,760 --> 01:14:25,199
this is a great a way that
you can test and this helps I think

958
01:14:25,279 --> 01:14:28,680
junior engineers, you know, they
navigated this right, you know, throw

959
01:14:28,720 --> 01:14:31,479
a try catch around there. I'm
scared about this affecting production. I think

960
01:14:31,640 --> 01:14:35,720
bringing that fear back in it,
you know, helps us. You know,

961
01:14:35,760 --> 01:14:40,600
thinking that our code that we write
is invincible is the problem here?

962
01:14:41,039 --> 01:14:45,399
Yes? Yes, So can you
just share your screen for us? Warren,

963
01:14:47,199 --> 01:14:51,920
I'm kidding it's really boring right now. I mean, when I'm doing

964
01:14:51,920 --> 01:15:00,000
the podcast, I literally have a
notes page and my audio equipment uli up

965
01:15:00,079 --> 01:15:02,199
in running and that's it. There's
nothing else on my desktop right now.

966
01:15:03,760 --> 01:15:10,039
We are. We're completely different.
I never I never closed windows, and

967
01:15:10,159 --> 01:15:16,279
never reboot. That's exactly what somebody
who wants to be proud would say.

968
01:15:16,279 --> 01:15:20,359
Well, I saw a meme yesterday
and it cracked me up, and it

969
01:15:20,439 --> 01:15:26,119
said, damn, I just accidentally
closed that browser tab that I've been meaning

970
01:15:26,119 --> 01:15:30,199
to read for two years. It
was very careful about my usage there that

971
01:15:30,239 --> 01:15:33,720
control shift T brings that up or
the previous window that I've closed, you

972
01:15:33,760 --> 01:15:36,359
start all my tab Yeah, for
sure. That. Like I was using

973
01:15:36,600 --> 01:15:42,399
x marks on Firefox back in the
day before they bought into it, because

974
01:15:42,439 --> 01:15:45,880
it's just so critical for me that
I can actually get that. The worst

975
01:15:45,880 --> 01:15:49,880
one I have is emails in my
inbox because when you click archive accidentally or

976
01:15:49,960 --> 01:15:55,159
delete like at that email was months
old. Good luck finding what that was.

977
01:15:58,359 --> 01:16:03,279
We have a security polow see that
automatically deletes our emails after a specified

978
01:16:03,279 --> 01:16:15,680
period of time. So email email
management is automated for me. Cool.

979
01:16:15,720 --> 01:16:25,399
So what well on critosis, have
you found an area where it's not a

980
01:16:25,399 --> 01:16:32,239
good fit. Yes, definitely crotosis
with where we are right now, if

981
01:16:32,439 --> 01:16:40,720
you are able to very adequately express
your system with a doctor composed file or

982
01:16:40,760 --> 01:16:45,760
a HELM chart with a relatively small
helm chart in the sense of like your

983
01:16:45,800 --> 01:16:47,319
helptot rebo doesn't have some dozen lines
in it, it's got like, you

984
01:16:47,319 --> 01:16:53,560
know, the same number of configuration
settings. If you have those two things,

985
01:16:53,640 --> 01:16:56,119
you're you're doing great. Krotosis is
not going to be great for you.

986
01:16:56,439 --> 01:17:00,600
It's the situation where those things have
to be augmented by the seven thousand

987
01:17:00,600 --> 01:17:04,000
of my mast script, the bunch
of different documentations on how to configure these

988
01:17:04,039 --> 01:17:09,039
things. If your doctor post file
has or your home charts have a bunch

989
01:17:09,079 --> 01:17:13,640
of lines commented out that say if
you want this behavior, please uncomment these

990
01:17:13,680 --> 01:17:16,399
lines, and it's all over the
place. That's where that's where you should

991
01:17:16,399 --> 01:17:19,359
think a look at prtosis uh,
and that's where we're going to provide a

992
01:17:19,359 --> 01:17:30,520
lot of value at the moment.
Right on excellent. So you mentioned doctor

993
01:17:30,560 --> 01:17:36,560
compose and HELM So I think I
can safely infer there that you're a big

994
01:17:36,600 --> 01:17:44,359
favor of containerization. Yes. Is
that specific or is that a result of

995
01:17:45,239 --> 01:17:47,760
like this is what you're you learned
from your customers or from the beginning,

996
01:17:47,760 --> 01:17:54,359
where you just like containers all the
way I mean, I would love to

997
01:17:54,399 --> 01:17:58,399
say it was entirely deliberate. Uh, and from like the very beginning.

998
01:17:59,079 --> 01:18:01,920
Definitely in the beginning it was like, hey, this is the standard that

999
01:18:01,920 --> 01:18:05,760
people are using to ship these things. I think it's a great abstraction.

1000
01:18:05,880 --> 01:18:11,840
I think containers. I think it's
wonderful to embrace the world of containers.

1001
01:18:11,880 --> 01:18:16,039
I think right now, container right
now, When people think about containers,

1002
01:18:16,039 --> 01:18:21,159
they often also think about the Docker
run time, the Docker build process,

1003
01:18:21,600 --> 01:18:26,000
and so like the of a container, the thing about not only like the

1004
01:18:26,039 --> 01:18:29,199
idea of the container, but also
like what does it look and feel like

1005
01:18:29,239 --> 01:18:32,279
when you build everything inside of the
Docker file, which is like separate from

1006
01:18:32,359 --> 01:18:36,399
having a container. So like what
I love is the container abstraction. I

1007
01:18:36,439 --> 01:18:41,560
don't so much love. It's very
easy to bloat the Docker file. It's

1008
01:18:41,600 --> 01:18:45,000
very easy to blow the container so
that it's like significantly bigger than it really

1009
01:18:45,079 --> 01:18:47,600
needs to be. There's a lot
of stuff to improve there. But when

1010
01:18:47,600 --> 01:18:51,000
it comes to like how you wrap
things up, the ideal world is like

1011
01:18:51,159 --> 01:18:59,239
containers as lightweight as possible, wonderful. The only issue is it is pretty

1012
01:19:00,039 --> 01:19:01,800
It is pretty annoying to get in
and out of containers and deal with the

1013
01:19:02,600 --> 01:19:06,159
like is this a port that is
exposed inside of the container, or is

1014
01:19:06,199 --> 01:19:09,800
it on my laptop or is it
like like which port? Is it?

1015
01:19:09,840 --> 01:19:13,840
At what level of networking? It's
pretty annoying, and it can be.

1016
01:19:13,960 --> 01:19:18,560
It can be also difficult to map
between filesystems and different containers to your own

1017
01:19:18,600 --> 01:19:21,920
file system. When you have mounts
mapped or not, that stuff can be

1018
01:19:21,960 --> 01:19:26,359
tricky. A lot of the abstraction
that we provide in our like run time,

1019
01:19:27,439 --> 01:19:30,359
tries to make that stuff better when
it comes to interacting with the def

1020
01:19:30,479 --> 01:19:34,800
environment. But I think really the
the reaction folks have against containers when it

1021
01:19:34,840 --> 01:19:39,279
comes to environments, a lot of
the time it comes from them being perceived

1022
01:19:39,319 --> 01:19:43,560
as heavyweight, which is often true. If you're running a doctor it often

1023
01:19:43,640 --> 01:19:45,880
is true. It's like there's a
lot of there's a lot of stuff going

1024
01:19:45,920 --> 01:19:48,119
on there. But a lot of
the time it doesn't have to be heavyweight.

1025
01:19:48,159 --> 01:19:54,119
It's just that the way we build
containers now tends to lean towards a

1026
01:19:54,159 --> 01:19:58,399
more heavyweight approach. No, I
think you nailed it there. Realistically,

1027
01:19:58,439 --> 01:20:01,720
it's like this, there's no hobb
load automation. When you make a code

1028
01:20:01,800 --> 01:20:06,239
change, how do you get the
necessary like auto compiling and run like you

1029
01:20:06,359 --> 01:20:11,399
just want to sort of debug it
as soon as possible. I think it's

1030
01:20:11,439 --> 01:20:14,840
a small like that's suset of things. And then there's this other set which

1031
01:20:14,880 --> 01:20:17,399
you for sure mentioned like what if
you're changing something at the container level right

1032
01:20:17,399 --> 01:20:21,520
like to You're definitely going to make
some changes and you're going to need to

1033
01:20:21,560 --> 01:20:25,279
test that in some way. I
don't think I know anyone that wrote a

1034
01:20:25,279 --> 01:20:29,119
Docker file and it was right the
first time or the second time or the

1035
01:20:29,159 --> 01:20:32,399
third time. I did learn about
this thing that you can like now make

1036
01:20:32,399 --> 01:20:35,960
a builder out of it, and
that can really help reduce the size of

1037
01:20:36,000 --> 01:20:41,720
your containers by not storing ninety percent
of what's necessary there. Like, I

1038
01:20:41,760 --> 01:20:45,560
still feel like that's really esoteric,
and most people are not aware that the

1039
01:20:45,560 --> 01:20:49,600
overcon container initiative supports that sort of
reduction. Are you talking about like using

1040
01:20:50,560 --> 01:20:55,439
like a multi stage Docker build where
you run your build process and then store

1041
01:20:55,479 --> 01:20:58,680
that as an artifact and then launch
a new Docker in it. It was

1042
01:20:58,760 --> 01:21:03,119
actually in the door one thing,
right for sure? In multi stage No,

1043
01:21:03,159 --> 01:21:08,840
there's actually a in the darker file
you can specify multiple images and one

1044
01:21:08,840 --> 01:21:13,079
of the images you can say is
this is my builder, and then have

1045
01:21:13,199 --> 01:21:15,960
the tools in there, and then
another image lower down that says, this

1046
01:21:15,039 --> 01:21:19,439
is the actual source image I want, because there's just so many run time

1047
01:21:19,560 --> 01:21:25,520
versus execution time problems that come up, where in the previous world we were

1048
01:21:25,520 --> 01:21:29,279
in a state where they're the same
thing and it's really expensive, but now

1049
01:21:29,359 --> 01:21:32,640
we're much better off. Like you
can get rust containers down from gigabytes to

1050
01:21:33,279 --> 01:21:39,119
really megabytes because the builder is big
and expensive, but the actual built image

1051
01:21:39,199 --> 01:21:43,399
is just pretty much a wrap binary. Yeah, that's the crazy thing,

1052
01:21:44,800 --> 01:21:48,880
especially in the area of like build
optimization. There's so much low hanging fruit

1053
01:21:49,399 --> 01:21:55,600
everywhere, but it it's all different
low hanging fruit, and you have to,

1054
01:21:55,680 --> 01:21:59,039
like you have to do some degree
of looking into it to figure out

1055
01:21:59,079 --> 01:22:00,800
that, oh, you can grab
the thing and put it in here,

1056
01:22:00,840 --> 01:22:02,680
and all of a sudden, I
forgive your buys the megabytes. But it's

1057
01:22:02,800 --> 01:22:06,319
so common to hear that, oh, I brought my build time down from

1058
01:22:06,399 --> 01:22:10,279
ninety seconds to nine seconds, or
I brought it down from five minutes to

1059
01:22:10,319 --> 01:22:13,960
one minute, and it's these are
massive improvements and you build all the time,

1060
01:22:14,319 --> 01:22:18,239
but they're right there in the city
there, but there's no it's not

1061
01:22:18,359 --> 01:22:23,319
often connected, right, Yeah.
I think a lot of For a lot

1062
01:22:23,399 --> 01:22:29,880
of people, there's just they've got
they've done the build process and it took

1063
01:22:29,920 --> 01:22:32,319
a long time, and they just
like, oh, I guess that's the

1064
01:22:32,359 --> 01:22:36,640
way it is, not realizing that
there are a lot of knobs you can

1065
01:22:36,680 --> 01:22:43,239
tweak to change that. Yeah,
And I think I mean, depending on

1066
01:22:43,279 --> 01:22:45,560
where you are on the build process. If you're if you're on your laptop

1067
01:22:45,600 --> 01:22:46,840
in your building and you want it
to be like super fast, and if

1068
01:22:46,880 --> 01:22:49,880
it's two minutes, it's going to
be a bit annoying. But if you're

1069
01:22:50,359 --> 01:22:53,760
if you're merging your pr and you're
waiting for it to go to a staging

1070
01:22:53,840 --> 01:22:57,800
environment, like if it's if it's
five minutes, you're probably okay with it.

1071
01:22:57,840 --> 01:23:00,319
You're probably like, Okay, this
is fine, and try to get

1072
01:23:00,319 --> 01:23:02,399
it from five to two minutes.
It's probably like not that big of a

1073
01:23:02,439 --> 01:23:06,479
deal for you because you don't do
it that often. So then like when

1074
01:23:06,479 --> 01:23:11,880
would you ever want to optimize that? But across all the debts and all

1075
01:23:11,920 --> 01:23:14,479
the mergers, that's it adds up. It's a lot of time, but

1076
01:23:14,640 --> 01:23:21,600
you could have gone faster for sure, well, sweet, is there anything

1077
01:23:21,600 --> 01:23:27,279
else we should talk about? I
feel like we kind of just ran the

1078
01:23:27,319 --> 01:23:34,720
gauntlet here we did. So if
folks are interested in learning more about Kurtosis,

1079
01:23:36,720 --> 01:23:44,039
what where do y'all hang out at
online discord? Well, first of

1080
01:23:44,079 --> 01:23:45,640
all, I recommend going to our
GitHub. The GitHub is the place for

1081
01:23:45,680 --> 01:23:48,920
you enter. So like GitHub,
it's got our code, it's got our

1082
01:23:48,960 --> 01:23:51,600
docks there, it's got the reading
me. So if you want to learn

1083
01:23:51,640 --> 01:23:56,119
my business, go right to the
getthub. And then if you want to

1084
01:23:56,199 --> 01:24:00,199
chat with us, we're always chatting
with the community, So join our discord

1085
01:24:00,560 --> 01:24:03,279
and we'll be there. You can
DM us, you can chat with us

1086
01:24:03,279 --> 01:24:08,359
in the general channel. It's fun
right on cool. Yeah, and I've

1087
01:24:08,359 --> 01:24:12,199
been chatting with y'all a little bit. Y'all are you really are super active

1088
01:24:12,239 --> 01:24:18,039
and super responsive online, which is
nice and it's refreshing to see. It's

1089
01:24:18,079 --> 01:24:23,319
the fun part. The fun part
is chatting with the users. See,

1090
01:24:23,359 --> 01:24:30,359
that's just so anti tech right there, Like, like I would love tech

1091
01:24:30,399 --> 01:24:33,199
if it weren't for the damn users. I feel like there's the difference of

1092
01:24:33,279 --> 01:24:39,319
you know, the outward appearance versus
what you're thinking when they're actually saying things.

1093
01:24:40,640 --> 01:24:43,319
And it's also the users that you're
talking with too. You know,

1094
01:24:43,319 --> 01:24:48,720
when you're talking with with people who
are doing the same thing, you know,

1095
01:24:49,159 --> 01:24:53,600
whether they're software engineers or whatever.
I think that's a different experience than

1096
01:24:54,479 --> 01:25:00,399
trying to talk mod through getting her
dial up modem connected and clearing out her

1097
01:25:00,399 --> 01:25:02,279
Internet Explorer cash or whatever. Yeah, I mean, I think that's definitely

1098
01:25:02,279 --> 01:25:08,800
difference between support right for something and
real engagement with your customers. Yeah,

1099
01:25:08,800 --> 01:25:12,039
for sure. You know, I
usually come away from them like, oh,

1100
01:25:12,199 --> 01:25:15,159
no, we should have that feature. I can't believe we didn't think

1101
01:25:15,159 --> 01:25:19,159
of it. I mean, one
of the fun things about having a developer

1102
01:25:19,239 --> 01:25:26,239
tool is it's buy engineers for engineers. There's a lot of empathetic connection across

1103
01:25:26,279 --> 01:25:31,319
the the product user barrier, where
maybe if we weren't the exact same profile,

1104
01:25:31,600 --> 01:25:36,600
you'd have to you have to bridge
the gap somehow. Well. You

1105
01:25:36,640 --> 01:25:41,279
know, I've heard many times that
that's what makes us successful startup is whenever

1106
01:25:41,319 --> 01:25:46,439
you're solving a problem that you personally
have. I totally agree with that.

1107
01:25:47,119 --> 01:25:50,640
Yeah. Cool, Well, Gayalen, thanks for being on the show man.

1108
01:25:50,680 --> 01:25:57,279
This has been a really cool talk. Thanks for having me. Cool

1109
01:25:57,319 --> 01:26:00,000
Warren thanks for joining me, welcome
back, Glad to have you back,

1110
01:26:00,079 --> 01:26:03,039
kind of show, glad to be
here. And for all of the listeners,

1111
01:26:03,279 --> 01:26:06,560
thank you for listening. Really appreciate
it. Hope you found it useful.

1112
01:26:06,840 --> 01:26:11,840
Oh right, yeah, yeah,
picks, all right, you brought

1113
01:26:11,880 --> 01:26:14,840
it up. Kick us off oring. I just you know, I know

1114
01:26:14,920 --> 01:26:17,880
some listeners were going to be mad
if you know they didn't hear on the

1115
01:26:17,920 --> 01:26:28,319
report. Yeah, So mine this
week is Turn the Ship Around by David

1116
01:26:28,399 --> 01:26:32,399
Marque, which is a book that, irrelevant of your experience and technology or

1117
01:26:32,760 --> 01:26:40,159
why you're focused on either core engineering
or somewhere else, can really help take

1118
01:26:40,279 --> 01:26:44,479
your understanding of how to work effectively
to the next level. It's really about

1119
01:26:45,159 --> 01:26:48,399
leadership in every way, starting from
the bottom all the way up, and

1120
01:26:48,439 --> 01:26:51,439
how to think about it. And
I think it's really it's really interesting to

1121
01:26:51,479 --> 01:26:55,520
read, and if you feel like
you can't commit to doing that, you

1122
01:26:55,560 --> 01:27:00,840
can find ten minutes to watch the
shortened video online. It's something of greatness.

1123
01:27:00,920 --> 01:27:03,439
I can never win the name of
the title. It's a YouTube video.

1124
01:27:03,479 --> 01:27:08,640
You can find it, which is
it's a hilarious and it's really good

1125
01:27:08,640 --> 01:27:15,239
content right on. Awesome Galen putting
on the spot. What'd you bring for

1126
01:27:15,279 --> 01:27:18,720
a pick my pig? It can
be it can be a music Oh for

1127
01:27:18,760 --> 01:27:25,239
sure. Yeah, so I have
been very into jelly Roll lately. I

1128
01:27:25,239 --> 01:27:29,000
don't know if you guys know jelly
roll country singer. Oh yeah, yeah,

1129
01:27:29,039 --> 01:27:33,760
yeah, he's he's uh the country
post Malone. Yes, yes,

1130
01:27:34,680 --> 01:27:38,079
that's hilarious. I've never heard it
before, but as soon as you said

1131
01:27:38,119 --> 01:27:42,119
it, I knew that you were
thinking of the right person. Yes,

1132
01:27:42,239 --> 01:27:46,000
Country post Malone. Jelly Roll is
amazing. I've just been It's rare that

1133
01:27:46,039 --> 01:27:49,720
I find an artist. And then
I just listened to a dozen of his

1134
01:27:49,880 --> 01:27:54,119
songs on a regular basis. He
hit me with, hit me with all

1135
01:27:54,199 --> 01:27:57,000
of them. So if you haven't
checked out jelly Roll, if you're into

1136
01:27:57,039 --> 01:28:00,079
country, if you're into hip hop, it's a really nice combination of both.

1137
01:28:00,359 --> 01:28:08,920
So for sure, Yeah, I
last year I stumbled across hardy and

1138
01:28:08,960 --> 01:28:15,840
which hardy is like country meets heavy
metal or or hard rock. And then

1139
01:28:15,840 --> 01:28:17,880
at some point he did a collaboration
with jelly Roll, which took me down

1140
01:28:17,880 --> 01:28:21,399
that path. Yeah, so I'll
agree with you on that one. That's

1141
01:28:21,399 --> 01:28:28,000
pretty cool and it's you know,
it's definitely not what you would expect from

1142
01:28:28,199 --> 01:28:33,680
country music. It's it's quite a
bit different. I'm not sure Hank william

1143
01:28:33,720 --> 01:28:41,920
Senior Senior would approve of it,
but here we are cool. So I

1144
01:28:42,000 --> 01:28:48,039
brought two picks this week. The
first one is going to totally destroy my

1145
01:28:48,920 --> 01:28:56,199
nerd credibility because I have never read
the book Dune or seen the movie Dune.

1146
01:28:56,720 --> 01:29:02,119
So I am starting to read the
book Dune, and dude, maybe

1147
01:29:02,239 --> 01:29:06,319
one of the best books I've ever
read. I mean, the things that

1148
01:29:06,319 --> 01:29:12,319
that Herbert does in the book is
just unmatched by other stories realistically, like

1149
01:29:12,359 --> 01:29:15,520
that you can tell us by the
number of new concepts and things that were

1150
01:29:15,560 --> 01:29:19,640
just made up. It's not like
a world that just easily imaginable, right,

1151
01:29:19,680 --> 01:29:23,399
And I'm looking forward to it and
I've I've heard from multiple people.

1152
01:29:23,840 --> 01:29:26,279
You know, it's a common saying, oh, the book's better than the

1153
01:29:26,279 --> 01:29:28,880
movie, but I've heard from from
multiple people like, no, No,

1154
01:29:29,520 --> 01:29:32,960
the book is better than the movie
on many, many levels. So I'm

1155
01:29:32,960 --> 01:29:36,760
looking forward, looking forward to getting
into that. The other pick I'm going

1156
01:29:36,840 --> 01:29:44,279
to bring up is I kind of
just lost I kind of fell out of

1157
01:29:44,319 --> 01:29:47,159
love with Chrome as my browser,
and I wanted to see what else was

1158
01:29:47,199 --> 01:29:51,439
out there, Chrome, It's not
you, it's me. I just felt

1159
01:29:51,479 --> 01:30:00,560
like to see other browsers across the
ARC Browser, and I think I completely

1160
01:30:00,640 --> 01:30:14,239
locked up here there you I did
here may be back. I got completely

1161
01:30:14,359 --> 01:30:20,680
kicked out for talking trash about Chrome, didn't I. I'm going to go

1162
01:30:20,720 --> 01:30:25,079
through with it anyway. The ARC
Browser has been really cool. I've been

1163
01:30:25,159 --> 01:30:29,039
using it for about a week now, and there's so many cool, subtle

1164
01:30:29,039 --> 01:30:33,760
little features that I didn't realize belonged
in a browser. Like my favorite one

1165
01:30:34,520 --> 01:30:41,039
is when you're in a Google meet, you know, and you navigate off

1166
01:30:41,079 --> 01:30:45,800
to another tab, and then somebody
asked you a question. You can never

1167
01:30:45,920 --> 01:30:48,680
find which tab is the one for
meat, right, So then you got

1168
01:30:48,680 --> 01:30:51,479
this awkward silence and you gotta admit
that you were screwing off and not paying

1169
01:30:51,479 --> 01:30:56,199
attention to the meeting. Well,
with the ARC Browser, when you leave

1170
01:30:56,279 --> 01:31:00,000
the tab, it just puts a
little thumbnail in the corner of your screw

1171
01:31:00,560 --> 01:31:04,239
with that video meet still going.
So when you never have to go back

1172
01:31:04,239 --> 01:31:06,439
to it, it's just down there
in the corner, you click into it

1173
01:31:06,479 --> 01:31:09,640
and it pops you right back up. And I just thought that was super

1174
01:31:09,640 --> 01:31:15,560
cool. So that's my second pick
for the week, and with that,

1175
01:31:16,399 --> 01:31:19,640
I think we're done here. Galen. Thanks again, Ben, this has

1176
01:31:19,680 --> 01:31:23,760
been pretty cool. I've enjoyed it. I hope the listeners enjoyed it.

1177
01:31:23,800 --> 01:31:29,359
Thank you for listening. We appreciate
your support, and yeah, I hope

1178
01:31:29,439 --> 01:31:30,239
see you all next week.
