1
00:00:00,050 --> 00:00:04,490
Between rough and UV and things like identic modern Python development

2
00:00:04,490 --> 00:00:07,720
is so different than what people have expected from the past.

3
00:00:07,920 --> 00:00:10,879
It's in like the typings are getting better with every version.

4
00:00:11,120 --> 00:00:12,570
Python's event loop.

5
00:00:13,045 --> 00:00:15,245
Is ridiculously performing now.

6
00:00:21,015 --> 00:00:24,425
Welcome to fork around and find out the podcast about

7
00:00:24,425 --> 00:00:27,555
building, running, and maintaining software and systems.

8
00:00:37,975 --> 00:00:38,534
Hello everyone.

9
00:00:38,544 --> 00:00:42,325
And welcome to fork around and find out I am your host, Justin Garrison.

10
00:00:42,325 --> 00:00:44,165
And with me as always, it's Autumn Nash.

11
00:00:44,515 --> 00:00:46,004
Day's special episode.

12
00:00:46,074 --> 00:00:49,475
We have Ada Lund talking about how chaos monkeys and

13
00:00:49,475 --> 00:00:51,795
just controlled chaos can be a good thing for you.

14
00:00:51,795 --> 00:00:54,255
And, and you, you really hooked me with this

15
00:00:54,255 --> 00:00:57,704
story about Rachel Ray taking down a website.

16
00:00:57,705 --> 00:00:59,315
And so we'll get into that in just a second.

17
00:00:59,455 --> 00:01:00,604
Ada, tell us a little about yourself.

18
00:01:00,605 --> 00:01:01,784
What do you, what do you do?

19
00:01:01,915 --> 00:01:03,084
What have you been doing tech?

20
00:01:03,105 --> 00:01:03,734
And what are you kind of.

21
00:01:04,489 --> 00:01:05,920
So, hi, I'm Ada.

22
00:01:05,960 --> 00:01:09,690
I am a lead engineer at a company called DataVance.

23
00:01:09,760 --> 00:01:13,119
I work on a variety of systems.

24
00:01:13,120 --> 00:01:14,789
I've been, I'm kind of a smorgasbord.

25
00:01:14,820 --> 00:01:16,459
I've done everything from web dev.

26
00:01:16,509 --> 00:01:19,829
I got my start as anyone does in Montana, working on like PHP, WordPress

27
00:01:19,830 --> 00:01:24,909
websites, and then shifted into like the usual suspects, 2016, 2017, early

28
00:01:24,909 --> 00:01:28,840
Angular and JavaScript, like React development, uh, taught at code school.

29
00:01:29,250 --> 00:01:32,985
Then I shifted into like, Test and then machine learning engineering

30
00:01:32,995 --> 00:01:35,685
and dev ops and i've just i've kind of been all over the place I

31
00:01:35,685 --> 00:01:38,345
can reasonably impersonate about six different types of engineers.

32
00:01:38,345 --> 00:01:38,765
That's fun

33
00:01:42,965 --> 00:01:45,995
I'm like six devs in a trench coat.

34
00:01:46,014 --> 00:01:46,974
What I really like to do though

35
00:01:51,084 --> 00:01:54,484
It really does feel like that some days where i'm just like yeah, I can

36
00:01:54,524 --> 00:01:58,700
author a front end am I as good as like a Seasoned web engineer who is

37
00:01:58,700 --> 00:02:03,230
like, you know, spend 12 years doing CSS and reacting, things like that.

38
00:02:03,250 --> 00:02:08,129
No, can't do I know, know enough to know that, you know, how to avoid like

39
00:02:08,129 --> 00:02:11,260
accidentally putting use effect into an infinite render loop sometimes.

40
00:02:11,540 --> 00:02:13,340
I feel like that's all of being an engineer.

41
00:02:13,349 --> 00:02:14,430
You're just like faking it.

42
00:02:14,450 --> 00:02:17,760
So you make it and just pray that like, that's my entire backstory.

43
00:02:17,850 --> 00:02:21,030
That's my super in depth in one area.

44
00:02:21,030 --> 00:02:23,230
And that's the only area you work in.

45
00:02:23,300 --> 00:02:23,800
Like.

46
00:02:24,385 --> 00:02:26,325
You're just a Jack of all trades trying to

47
00:02:26,395 --> 00:02:27,745
pretty much every other field.

48
00:02:27,745 --> 00:02:29,845
You just have to know enough to know what questions to ask, right?

49
00:02:29,845 --> 00:02:31,925
Cause you're like, I just need to know which direction

50
00:02:31,925 --> 00:02:34,455
should I go in so I can discover what the answer is.

51
00:02:34,495 --> 00:02:37,344
And as long as you can get down that path, you're fine.

52
00:02:37,834 --> 00:02:39,045
That's really what it

53
00:02:39,094 --> 00:02:39,475
is.

54
00:02:39,524 --> 00:02:41,684
And it's funny because even when you talk to a lot of

55
00:02:41,735 --> 00:02:45,465
those specialists in tech, that's how they got there.

56
00:02:45,465 --> 00:02:48,125
It's just, they kept going down the same rabbit hole.

57
00:02:48,225 --> 00:02:52,025
It's also how, you know, half of us have ADHD because we live in a rabbit hole.

58
00:02:52,674 --> 00:02:57,424
Why, I, yes, why, why, yes, I was diagnosed with autism at the age of five.

59
00:02:57,975 --> 00:02:58,755
Me too, me too.

60
00:03:00,505 --> 00:03:02,714
And it shows in this very room that I'm in.

61
00:03:02,764 --> 00:03:04,844
Um, this is not a special

62
00:03:04,844 --> 00:03:05,894
subject at all.

63
00:03:05,894 --> 00:03:07,768
I think it just means you have great hobbies,

64
00:03:07,768 --> 00:03:08,001
okay?

65
00:03:08,001 --> 00:03:10,845
Like I'm counting like 12 keyboards behind you.

66
00:03:10,994 --> 00:03:13,174
Oh, it gets so much worse if I turn.

67
00:03:13,184 --> 00:03:16,475
Like, okay, okay, hold on, we're doing this, we're doing this.

68
00:03:16,505 --> 00:03:21,274
Okay, so, yeah, those photos are not AI, those photos are just This room for,

69
00:03:21,304 --> 00:03:24,714
for anyone that is listening to this podcast, I'm sorry, but also this is

70
00:03:24,714 --> 00:03:29,715
like a whole studio in, in what looks like a large lock walk in closet.

71
00:03:29,764 --> 00:03:31,624
It's, it's the third bedroom of the house,

72
00:03:31,655 --> 00:03:34,954
and this is 15 years of gear addiction.

73
00:03:35,035 --> 00:03:36,024
Everybody knows it.

74
00:03:36,045 --> 00:03:38,595
It's called gas gear acquisition syndrome.

75
00:03:38,964 --> 00:03:40,195
I have a different kind of gas.

76
00:03:40,225 --> 00:03:44,799
This is, uh, It's it's a studio.

77
00:03:44,810 --> 00:03:48,049
It's so it's funny because a lot of how I got into tech actually was

78
00:03:48,100 --> 00:03:51,890
through this kind of thing Because these same sort of skills used in

79
00:03:51,890 --> 00:03:55,019
like music engineering audio engineering music production these sorts of

80
00:03:55,019 --> 00:03:59,360
things Are a lot of the same general skills general problems something

81
00:03:59,360 --> 00:04:02,920
that you'll use in tech and that you'll Find very useful in tech, you

82
00:04:02,920 --> 00:04:06,969
know, it's this mixture of very scientific, very technical, very detail

83
00:04:06,969 --> 00:04:12,590
oriented work and a degree of taste or artistic like choice to some degree.

84
00:04:12,600 --> 00:04:14,619
And I think even, even if you're writing the like most

85
00:04:14,619 --> 00:04:18,179
boilerplate back end service, there's a degree of that, right?

86
00:04:18,269 --> 00:04:20,659
This, I think this is part of the reason why I fell in love with.

87
00:04:21,135 --> 00:04:24,025
Like software engineering and building systems and like coding particularly

88
00:04:24,025 --> 00:04:27,905
building like internal tooling and stuff like that so much was because it's this

89
00:04:28,465 --> 00:04:33,214
blend of very precise technical in depth knowledge Like you can really get into

90
00:04:33,214 --> 00:04:36,424
the nappy side of it and all that sort of thing and then but also there's just

91
00:04:36,424 --> 00:04:41,025
this Expressivity there's this creativity with it that makes it so much fun.

92
00:04:41,025 --> 00:04:45,265
You can explore and build just wild and wacky things And we'll

93
00:04:45,265 --> 00:04:50,070
get to that but it's one of those things where also just like I

94
00:04:50,100 --> 00:04:53,350
originally graduated in 2013 with an English degree, and I thought

95
00:04:53,350 --> 00:04:58,050
it was terrible at math, at like science, at all these things.

96
00:04:58,119 --> 00:05:01,279
My dad used to have a saying, which is, you know, I love you some, but if

97
00:05:01,279 --> 00:05:05,320
you tried, tried to land a rocket on the moon, you'd land it in Detroit.

98
00:05:05,359 --> 00:05:06,420
And he wasn't wrong.

99
00:05:06,449 --> 00:05:09,320
I, I just did not get along with math well for the longest time.

100
00:05:09,539 --> 00:05:12,950
And then on kind of actually because of my partner that I've

101
00:05:13,090 --> 00:05:15,590
been with now for 11 years seeing her level of learning,

102
00:05:15,590 --> 00:05:16,860
I was just like, well, I have that level of learning.

103
00:05:16,870 --> 00:05:17,370
And you know what?

104
00:05:17,420 --> 00:05:22,049
I, I always have like admired folks like Rupert Neve and I forget the name

105
00:05:22,050 --> 00:05:26,010
of the CEO of Atom Audio and all these guys that have these like very like.

106
00:05:26,230 --> 00:05:29,140
Technical but not necessarily traditional backgrounds.

107
00:05:29,469 --> 00:05:30,960
Although I think the CEO of Adam Audio actually

108
00:05:30,960 --> 00:05:33,099
was like a full physicist for a long time.

109
00:05:33,510 --> 00:05:34,859
And I want to be able to go into that.

110
00:05:34,859 --> 00:05:37,619
Like I want to learn how to write like DSP and how to write like

111
00:05:37,619 --> 00:05:40,669
software plugins, VST plugins for like audio and stuff like that.

112
00:05:40,699 --> 00:05:46,120
And so I went back to school for Sciences and I ended up in finishing

113
00:05:46,120 --> 00:05:50,970
a computer science math dual post back and my work in audio actually

114
00:05:50,970 --> 00:05:55,260
funded a majority of like the textbooks and like a good chunk of tuition

115
00:05:55,270 --> 00:05:58,499
and stuff like that and as well as just like working in tech the entire

116
00:05:58,679 --> 00:06:01,340
time in Montana because I don't know if it's still true, but like

117
00:06:02,060 --> 00:06:08,314
back from like 2014 to like 2020 in Montana, there was just like every

118
00:06:08,314 --> 00:06:13,955
place needed some sort of just like WordPress, PHP, journal dev person.

119
00:06:14,114 --> 00:06:16,365
And there's, it was a small, you know,

120
00:06:16,375 --> 00:06:18,474
growing startup scene up there in Montana.

121
00:06:18,594 --> 00:06:22,164
It's funny how this all like comes in place and, and I still love to

122
00:06:22,164 --> 00:06:24,875
do it because it's like, I'll get done with work for the day and I'll

123
00:06:24,875 --> 00:06:28,385
come over here and it will, it will be very much like similar skills.

124
00:06:28,385 --> 00:06:32,235
So I'm still kind of working that muscle, but it's a very different outlet,

125
00:06:32,465 --> 00:06:33,325
the different keyboard.

126
00:06:33,570 --> 00:06:35,960
You just, it's just from QWERTY to 88 keys.

127
00:06:35,960 --> 00:06:39,690
QWERTY to, to, to knobs and whatever.

128
00:06:40,065 --> 00:06:41,965
Well, as I decided to come up with at a given time

129
00:06:42,175 --> 00:06:43,755
before we before we dive too deep into the

130
00:06:43,755 --> 00:06:46,844
technical side, do you, are you creating music?

131
00:06:46,885 --> 00:06:47,895
Do you mix it?

132
00:06:47,905 --> 00:06:48,475
Do you produce?

133
00:06:48,525 --> 00:06:50,144
I mean, I know usually it's like all of the

134
00:06:50,144 --> 00:06:51,875
above, like which, what do you usually focus on?

135
00:06:51,885 --> 00:06:52,495
Do you like?

136
00:06:52,604 --> 00:06:56,465
I like doing mixing and mastering for other folks.

137
00:06:56,495 --> 00:06:58,144
For the most part, I've always felt more comfortable kind

138
00:06:58,144 --> 00:07:00,665
of as a studio rat kind of, you know, behind the scenes and

139
00:07:00,665 --> 00:07:03,865
that I do commercial audio for Clients and stuff like that.

140
00:07:03,865 --> 00:07:05,075
I have a decent client base.

141
00:07:05,075 --> 00:07:05,775
I built up like,

142
00:07:05,794 --> 00:07:08,235
so we could hire you for a fork road and find out theme.

143
00:07:08,375 --> 00:07:09,044
Yes.

144
00:07:09,145 --> 00:07:10,245
Yes, actually you could.

145
00:07:10,284 --> 00:07:14,294
It's very fun to me to explore and to create these sounds,

146
00:07:14,444 --> 00:07:17,194
I guess, kind of diving in then to the major topic here,

147
00:07:17,194 --> 00:07:20,424
which is just like those rabbit holes and things like that.

148
00:07:20,554 --> 00:07:24,184
If I were to have a like background specialty, it would be building

149
00:07:24,234 --> 00:07:27,235
tooling and in particular, like internal tooling, test tooling.

150
00:07:27,530 --> 00:07:31,600
And that leads to the, I guess, today's story

151
00:07:31,600 --> 00:07:33,370
with like Rachel Ray and things like that.

152
00:07:33,390 --> 00:07:36,179
So back in 2020 when I got down here, got hired

153
00:07:36,180 --> 00:07:39,360
at the Zebra on the test team, uh, as an SDET.

154
00:07:39,659 --> 00:07:42,770
Was tasked with doing, with implementing performance testing.

155
00:07:42,994 --> 00:07:48,715
And the reason was because they had been crawled by rachel ray rachel ray

156
00:07:48,725 --> 00:07:52,245
has a web crawler And it had almost taken the site down like everything

157
00:07:52,245 --> 00:07:55,325
was red lining They had to like impromptu like the dev office team was

158
00:07:55,335 --> 00:07:57,775
just like oh god We gotta spin up replicas, you know We had a kubernetes

159
00:07:57,814 --> 00:08:01,664
cluster couldn't but we had to change the policy on the fly her company

160
00:08:01,704 --> 00:08:07,395
runs Web crawling and my guess is it's to Find links and useful things that

161
00:08:07,395 --> 00:08:11,274
they can put in or maybe just to kind of do some web indexing stuff I'm,

162
00:08:11,275 --> 00:08:17,624
not exactly certain why but it's because of how the caching and everything

163
00:08:17,634 --> 00:08:22,349
was Configured and because of how things were set up at the time with

164
00:08:22,349 --> 00:08:26,989
the auto scaling, we ran over Kubernetes cluster at this point in time.

165
00:08:26,999 --> 00:08:29,509
It wasn't like the Kubernetes side.

166
00:08:29,509 --> 00:08:31,719
The DevOps side was not well understood.

167
00:08:31,719 --> 00:08:37,200
It was just as happens with many sites, applications, APIs.

168
00:08:37,449 --> 00:08:39,980
It had grown up over time, kind of organically.

169
00:08:40,339 --> 00:08:46,100
It was a Django monolith, and it's just It was architected to handle what

170
00:08:46,130 --> 00:08:50,120
it had handled thus far They had never encountered an instance of being web

171
00:08:50,130 --> 00:08:54,170
crawled by someone like rachel ray A lot of times what you find with software

172
00:08:54,189 --> 00:08:58,989
is the current implementation is the best effort implementation Given the

173
00:08:59,000 --> 00:09:03,170
the the the problems that have been encountered thus far in the scope and the

174
00:09:03,170 --> 00:09:08,050
scale that has been encountered thus far It's only when you hit a oh Situation

175
00:09:08,060 --> 00:09:14,170
like that and you find that things like performance testing are actually Super

176
00:09:14,170 --> 00:09:20,329
useful because it's very difficult to replicate situations like that, right?

177
00:09:20,680 --> 00:09:24,800
Or let's say, for example, you do a Super Bowl ad takes the site offline, right?

178
00:09:24,800 --> 00:09:25,829
Or something like that.

179
00:09:26,290 --> 00:09:27,520
You just can't predict.

180
00:09:27,540 --> 00:09:32,830
It's very hard to and it's even harder to like emulate that level of usage.

181
00:09:33,425 --> 00:09:36,704
So that's where kind of the forking around comes in.

182
00:09:37,134 --> 00:09:39,254
And in many ways you don't want to emulate that, right?

183
00:09:39,254 --> 00:09:41,474
Like that's just like pre optimization of like,

184
00:09:41,474 --> 00:09:43,535
Oh, we assume we're going to get a million hits.

185
00:09:43,545 --> 00:09:45,944
It's like, well, like let's just build to what we're actually getting.

186
00:09:45,944 --> 00:09:46,174
Right.

187
00:09:46,174 --> 00:09:51,255
And so like staying within bounds is a smart idea just for time spent.

188
00:09:51,295 --> 00:09:51,545
Right.

189
00:09:51,545 --> 00:09:53,185
And I feel like a lot of people have spent

190
00:09:53,685 --> 00:09:56,474
way too much time on their auto scaling.

191
00:09:56,699 --> 00:09:58,980
When they don't need to, like you could have saved all that engineering

192
00:09:58,980 --> 00:10:02,730
effort on auto scaling on just like over provisioning once and that would

193
00:10:02,730 --> 00:10:06,490
have been okay for you in a lot of cases in the case of this web crawler

194
00:10:06,520 --> 00:10:11,379
comes and it must be hitting the site a lot because I mean you obviously

195
00:10:11,379 --> 00:10:15,149
you have users on the site in general that open links and go to the pages.

196
00:10:15,179 --> 00:10:18,069
But what is the web crawler doing that makes it all of a sudden?

197
00:10:18,099 --> 00:10:22,459
Oh, one instance of a crawler makes us have to scale up the website.

198
00:10:22,870 --> 00:10:23,260
Exactly.

199
00:10:23,260 --> 00:10:25,130
And it's one of those things where in this case, it was the fact that

200
00:10:25,130 --> 00:10:28,020
we were shipping back a lot of HTML back and forth with the cash.

201
00:10:28,579 --> 00:10:32,319
And that was just absolutely just redlining everything.

202
00:10:32,340 --> 00:10:35,520
And also just the way it was crawling about the pages and

203
00:10:35,530 --> 00:10:38,150
all the way we had the links put out and all those things.

204
00:10:38,170 --> 00:10:39,920
It was just absolutely redlining it.

205
00:10:40,279 --> 00:10:42,449
And so in that case, spending more money on the

206
00:10:42,449 --> 00:10:44,030
infrastructure wasn't going to solve the problem.

207
00:10:44,030 --> 00:10:45,839
You had to re architect the actual.

208
00:10:46,265 --> 00:10:47,805
Functionality of the application.

209
00:10:48,165 --> 00:10:48,765
Exactly.

210
00:10:48,765 --> 00:10:51,425
We had to find a way to rearchitect things from the ground up and just be like,

211
00:10:51,425 --> 00:10:54,655
okay, we need to actually be much more efficient with how we're serving this.

212
00:10:54,655 --> 00:10:57,924
If we're going to use the cash to cash HTML, it can't be shopping

213
00:10:57,935 --> 00:11:00,345
back and forth, you know, entire documents and stuff like that.

214
00:11:00,345 --> 00:11:03,945
It needs to be very explicit, like snippets and things of that sort.

215
00:11:03,975 --> 00:11:06,424
Otherwise network eats everything.

216
00:11:06,484 --> 00:11:10,085
This is something that I've always found true, which is network eats everything.

217
00:11:10,095 --> 00:11:11,875
Even still today, we have much better networks

218
00:11:11,875 --> 00:11:13,914
than we did a decade ago, two decades ago.

219
00:11:14,284 --> 00:11:15,455
Network still eats everything.

220
00:11:15,834 --> 00:11:21,584
And yeah, you don't want to pre optimize, you don't want to solve for

221
00:11:21,584 --> 00:11:26,295
problems that are entirely theoretical, and over budgeting is definitely

222
00:11:26,295 --> 00:11:28,924
a good way to do that, like, during my data structure and algorithms

223
00:11:28,924 --> 00:11:32,875
class, uh, we had a challenge to write a breadth surf First graph

224
00:11:32,895 --> 00:11:37,385
problem and being the overconfident chaos gremlin that I was, I was

225
00:11:37,385 --> 00:11:41,965
just like, I'm going to do it for C and I kept running into segfaults

226
00:11:42,094 --> 00:11:45,614
memory errors was trying to be smart about how I was reallocating memory.

227
00:11:45,615 --> 00:11:46,695
So finally just lost my patience.

228
00:11:46,695 --> 00:11:49,864
I allocated what ended up being like two gigabytes of memory and it

229
00:11:49,864 --> 00:11:52,395
just read the entire file and the professor didn't realize that I'd

230
00:11:52,395 --> 00:11:55,285
done that and it handled their, it handled the largest edge case, but

231
00:11:55,285 --> 00:11:57,965
it was very much brute force like, okay, this is going to work like

232
00:11:57,974 --> 00:12:01,134
if you feed me a bigger than two gigabyte text file, then we can talk.

233
00:12:01,150 --> 00:12:06,709
But at the same time, it's like when you start hitting those

234
00:12:06,959 --> 00:12:11,180
limitations, when you write things to solve certain problems, always

235
00:12:11,180 --> 00:12:17,110
make sure to leave yourself escape hatches and means of reconfiguring,

236
00:12:17,119 --> 00:12:22,410
rewriting, reimplementing things easily such that you can go back and.

237
00:12:23,125 --> 00:12:29,055
Address potential scale issues and at the same time like performance testing

238
00:12:29,055 --> 00:12:32,014
is one of the things where people are just like That's like a tomorrow problem.

239
00:12:32,025 --> 00:12:36,225
We don't need to know that up front I always say that if you have

240
00:12:36,225 --> 00:12:39,494
the right tooling like if performance testing frameworks were more

241
00:12:39,494 --> 00:12:44,415
friendly you would write all your unit integration more so your

242
00:12:44,415 --> 00:12:48,944
integration tests as Performance tests because then you could execute

243
00:12:48,944 --> 00:12:52,575
them at scale and you could get that synthetic insight You could get

244
00:12:52,595 --> 00:12:56,245
the checking boxes side of tests, which is does this break or not?

245
00:12:56,245 --> 00:13:01,174
But also you can get the performance metrics You can get particularly

246
00:13:01,174 --> 00:13:03,195
with things like open telemetry and stuff like that You can get

247
00:13:03,205 --> 00:13:05,745
much more detailed insight to how your application is functioning.

248
00:13:05,754 --> 00:13:10,724
It's memory usage all these other things that let you Identify issues

249
00:13:10,724 --> 00:13:16,584
much more accurately beforehand So you can minimize the oh, oh no muffins

250
00:13:17,665 --> 00:13:21,450
it's one of those things where This got down to the performance testing.

251
00:13:21,450 --> 00:13:24,980
So I'm implementing this and the thing that I find is that a

252
00:13:24,980 --> 00:13:28,840
lot of these performance testing frameworks are very rough goes.

253
00:13:28,849 --> 00:13:30,059
They tend towards one of two extremes.

254
00:13:30,059 --> 00:13:34,929
There are frameworks that try to be, let you effectively write integration

255
00:13:34,929 --> 00:13:37,989
tests and execute them at scale, but they're terrible resource hogs.

256
00:13:38,059 --> 00:13:40,780
They execute pretty slowly and they're just kind of a bear to set up.

257
00:13:41,340 --> 00:13:43,630
Or they're much kind of lighter, faster tools, but they

258
00:13:43,640 --> 00:13:46,030
generally only let you hit a single, like, end point.

259
00:13:46,030 --> 00:13:47,800
They're pretty limited in what they can do.

260
00:13:47,949 --> 00:13:50,780
This is what put me on this path of writing

261
00:13:51,400 --> 00:13:52,710
my own performance testing framework.

262
00:13:53,960 --> 00:13:57,709
It's one of those things where, as I've continued down this over the

263
00:13:57,739 --> 00:14:01,140
past five or so years, what I've increasingly realized is we really do

264
00:14:01,180 --> 00:14:06,720
need a new class of test tooling, which frameworks in that they simulate.

265
00:14:07,230 --> 00:14:10,630
User interaction at varying degrees of scale and to me this ideal

266
00:14:10,640 --> 00:14:15,689
framework is something that lets you Write things as very small compact

267
00:14:15,800 --> 00:14:20,010
Unit or integration tests basically you compose them as workflows And

268
00:14:20,010 --> 00:14:23,050
then you execute them at the scale of a performance test and that allows

269
00:14:23,050 --> 00:14:25,679
you to scale up scale down So if you really only need just kind of basic

270
00:14:25,679 --> 00:14:28,955
integration testing stuff, you can kind of bring it down The amount of

271
00:14:28,955 --> 00:14:32,875
concurrency, but if you need to really see where issues at scale might

272
00:14:32,875 --> 00:14:35,885
lie, where those little, you know, hiding demons and goblins in the code

273
00:14:35,885 --> 00:14:38,934
might lie, you can scale it up and you can actually do those things.

274
00:14:38,934 --> 00:14:40,194
And you don't have to change the code.

275
00:14:40,194 --> 00:14:43,974
You just have to change a config or CLI arg was this

276
00:14:44,014 --> 00:14:44,564
output.

277
00:14:44,800 --> 00:14:44,990
Like

278
00:14:44,990 --> 00:14:47,470
a direct results of, of what was happening

279
00:14:47,470 --> 00:14:49,130
where you're just like, Oh, site went down.

280
00:14:49,140 --> 00:14:49,630
We fixed it.

281
00:14:49,630 --> 00:14:50,920
We found it was caching problem.

282
00:14:50,970 --> 00:14:53,560
Let me go build a performance framework.

283
00:14:53,570 --> 00:14:56,250
Like what, what kind of led, like, there's, it seems like a gap in there.

284
00:14:56,380 --> 00:14:57,259
Yeah, that's that.

285
00:14:57,290 --> 00:15:00,280
And that's what I was saying was like performance testing tooling tends to

286
00:15:00,280 --> 00:15:04,300
those two extremes where you have tools that are let you kind of have that

287
00:15:04,300 --> 00:15:08,190
realistic usage, but they're not very friendly to use or tools that let you

288
00:15:08,190 --> 00:15:11,240
just kind of simple usage, but they're very limited in what they let you do.

289
00:15:11,920 --> 00:15:15,540
And we tried using one before that was which we started

290
00:15:15,540 --> 00:15:19,280
with locust and locust does a lot of things, right?

291
00:15:19,360 --> 00:15:24,049
It's very quick to write tests in But to get any reasonable scale out of

292
00:15:24,049 --> 00:15:27,679
it, you have to run it distributed Uh, it's not very resource efficient

293
00:15:27,690 --> 00:15:31,279
So it doesn't play well with a much more resource constrained environments

294
00:15:31,279 --> 00:15:36,170
of something like a kubernetes cluster, especially back in 2020 And it

295
00:15:36,180 --> 00:15:44,300
has a very spicy uh distributed architecture where all Of the workers must

296
00:15:44,300 --> 00:15:48,910
have a copy the exact same copy of the test So you can't just like on the

297
00:15:48,910 --> 00:15:52,519
fly update the test or rerun a job easily You have to basically redo the

298
00:15:52,520 --> 00:15:56,349
deployment or you have to you know If you need to make a change to a test

299
00:15:56,350 --> 00:15:59,700
you have to redeploy things and things of that sort That gets kind of clunky.

300
00:15:59,739 --> 00:16:04,359
It also means that locust has a very nice web ui At the time I was using

301
00:16:04,359 --> 00:16:07,420
it, that web UI was really how they wanted you to interact with it.

302
00:16:07,699 --> 00:16:09,880
Well, developers were okay with UIs, but a

303
00:16:09,880 --> 00:16:11,709
lot of times we prefer command line tools.

304
00:16:12,130 --> 00:16:13,330
And trying to get things running via the

305
00:16:13,330 --> 00:16:15,339
command line was just a rough, rough go.

306
00:16:15,430 --> 00:16:18,680
There are other tools that we wanted to try using, like K6.

307
00:16:19,289 --> 00:16:22,560
K6 probably strikes the best balance, but again, if you

308
00:16:22,560 --> 00:16:25,685
want to use it inside a Kubernetes cluster, You have to use

309
00:16:25,735 --> 00:16:28,585
their custom operator, and that is also a bit of a rough go.

310
00:16:28,725 --> 00:16:30,655
And so for me, it was these continual

311
00:16:30,665 --> 00:16:32,125
frustrations, just like, hey, this roadblock.

312
00:16:32,165 --> 00:16:33,125
Oh, well, this doesn't quite work.

313
00:16:33,135 --> 00:16:34,944
Well, I have to write all this other code

314
00:16:34,944 --> 00:16:36,935
around it to get it to work in our environment.

315
00:16:36,944 --> 00:16:39,515
I have to write all this other code to work to get it to work in environment.

316
00:16:39,535 --> 00:16:42,474
Well, I can run it like this locally, but then I have to do all this

317
00:16:42,475 --> 00:16:44,855
other changes and work to get it to work in a distributed environment.

318
00:16:45,655 --> 00:16:46,965
And that's what pushed me to that.

319
00:16:46,965 --> 00:16:49,945
So what happened was I think it was a time is like the third

320
00:16:49,945 --> 00:16:53,135
time in as many weeks, we're trying to run a test and we kept

321
00:16:53,135 --> 00:16:55,975
running into out of memory issues and our cluster with focused.

322
00:16:55,995 --> 00:16:58,134
And so finally I go to my, my manager.

323
00:16:58,135 --> 00:16:59,825
I'm just like, do you trust me?

324
00:17:00,375 --> 00:17:00,635
Yeah.

325
00:17:00,704 --> 00:17:02,255
It sounds like I'm going to go give me like two weeks.

326
00:17:02,264 --> 00:17:04,674
I'm going to go write our own performance testing framework.

327
00:17:05,055 --> 00:17:05,925
And then I'll be back.

328
00:17:06,045 --> 00:17:07,735
And then I came back two weeks later and we

329
00:17:07,735 --> 00:17:09,905
deployed it and it did the thing and it worked.

330
00:17:10,075 --> 00:17:12,635
Wait, you accurately predicted how long it would take you to write something.

331
00:17:13,195 --> 00:17:15,625
That is, I think that's a big story here.

332
00:17:15,625 --> 00:17:15,925
This is

333
00:17:16,764 --> 00:17:19,685
the, the way engineering is, uh, uh, people

334
00:17:19,695 --> 00:17:21,085
have been like, wait, you made that engineering?

335
00:17:21,085 --> 00:17:27,255
I was just like, Um, because I was at that point, I was motivated.

336
00:17:27,435 --> 00:17:29,755
Have you ever had that when you're just like, I'm going to make this

337
00:17:29,775 --> 00:17:34,305
engineering deadline work because I have spiked, spiked driven development.

338
00:17:34,385 --> 00:17:35,345
So powerful.

339
00:17:35,425 --> 00:17:38,865
Spite and ADHD hyper focused, like, you know what I mean?

340
00:17:38,865 --> 00:17:41,195
Like when it's something that you're like, I have to figure

341
00:17:41,195 --> 00:17:43,495
that like, it bothers you, like you try to go to bed and you're

342
00:17:43,495 --> 00:17:46,195
like, that's all you can think of, like, and you're just like,

343
00:17:46,655 --> 00:17:47,985
I mean, yeah, you should, you should have said

344
00:17:47,985 --> 00:17:50,965
three weeks and slept once or twice, but instead.

345
00:17:51,685 --> 00:17:56,255
It was, it was that and like by that point, so we wanted to get

346
00:17:56,255 --> 00:17:59,025
the results into stats D and this was another thing that I found

347
00:17:59,025 --> 00:18:01,585
with a lot of performance testing frameworks is if you wanted to

348
00:18:01,594 --> 00:18:03,995
get your results somewhere that they didn't support, it was just.

349
00:18:04,725 --> 00:18:07,705
Utter pain trying to get them to do I had basically written an entire

350
00:18:07,705 --> 00:18:10,955
frameworks worth of code already around locust Getting our results

351
00:18:11,015 --> 00:18:14,214
into stats d the way I had to get it done So that it didn't completely

352
00:18:14,215 --> 00:18:16,935
tank the memory because locust was already being a memory hog.

353
00:18:16,965 --> 00:18:22,024
I had to use grpc Well locust uses g event and g event and grpc do

354
00:18:22,025 --> 00:18:24,864
not play nice together and they would just hang the program unless you

355
00:18:24,864 --> 00:18:29,290
brutally monkey patch a couple of things and i'm just like Look, Linda.

356
00:18:29,290 --> 00:18:32,695
I didn't ask for this.

357
00:18:32,695 --> 00:18:34,057
I didn't.

358
00:18:34,057 --> 00:18:35,419
I didn't.

359
00:18:35,420 --> 00:18:37,520
This is actually when I was just getting hacked out on tech twitter too.

360
00:18:37,530 --> 00:18:40,050
And I posted some random thing about it.

361
00:18:40,629 --> 00:18:43,740
And one of the G event devs comes into my

362
00:18:43,740 --> 00:18:46,039
mentions and is just like, what do you mean?

363
00:18:46,039 --> 00:18:47,980
And I'm just like, I don't know!

364
00:18:49,330 --> 00:18:51,490
You write the library, you tell me!

365
00:18:52,080 --> 00:18:52,910
Why don't you like GVENT?

366
00:18:52,950 --> 00:18:55,770
I don't like GVENT because it's breaking things right now, okay?

367
00:18:56,220 --> 00:19:00,999
Like, you have the most fire tech twitter and now tech blue sky, like

368
00:19:01,390 --> 00:19:03,919
Oh gosh, we didn't talk about my in house stuff.

369
00:19:04,220 --> 00:19:05,710
It's made my life for like

370
00:19:05,710 --> 00:19:07,340
three

371
00:19:07,340 --> 00:19:13,479
years But that's that's why we love it and stand for it I

372
00:19:13,480 --> 00:19:17,790
give full credit to like being cold water and like kat dinnings and

373
00:19:17,840 --> 00:19:21,749
uh, Cory and angie and those folks were just like getting me to because

374
00:19:21,749 --> 00:19:25,095
before that I was very much like I have all the spicy thoughts, but

375
00:19:25,095 --> 00:19:29,215
i'm very terrified of saying them because I don't want to lose my job

376
00:19:29,865 --> 00:19:34,145
because I know how the internet works and if I say something like to You

377
00:19:34,145 --> 00:19:37,774
know, I if I mouth off to a particular vc bro or something like that.

378
00:19:37,885 --> 00:19:42,645
I I i'm gonna ruin my entire career And I just got out of montana.

379
00:19:42,645 --> 00:19:46,264
I don't want to be kicked out of tech Right, like I worked

380
00:19:46,264 --> 00:19:49,375
for five years to get above, you know poverty line in

381
00:19:49,375 --> 00:19:52,315
montana Which montana poverty is its own special kind of?

382
00:19:52,645 --> 00:19:53,855
Like ask primogen about it.

383
00:19:53,855 --> 00:19:57,295
It's it's it's bad Like, uh, it's funny because danny and i dan thompson

384
00:19:57,295 --> 00:19:59,335
I we both share this background of like we both worked great cards at

385
00:19:59,415 --> 00:20:02,745
gas stations And I remember the moment where I started like that push

386
00:20:02,745 --> 00:20:07,995
to get into tech was it wasn't working But I was on one of my runs and

387
00:20:08,055 --> 00:20:11,095
I was running down the street I stopped at the gas another gas station

388
00:20:11,104 --> 00:20:13,545
same chain And talked with one of the guys there He was a friend of

389
00:20:13,545 --> 00:20:17,804
mine and 20 minutes later it turned out he got robbed And I got shot.

390
00:20:17,915 --> 00:20:20,695
That's when I was just like I can't do this, like, this English

391
00:20:20,695 --> 00:20:23,495
major isn't paying off, like, I gotta go, I gotta go elsewhere.

392
00:20:23,495 --> 00:20:24,105
I'm, like,

393
00:20:24,425 --> 00:20:26,365
There's a stark difference, right?

394
00:20:26,435 --> 00:20:28,884
There is, like, the people that came from middle class

395
00:20:28,885 --> 00:20:32,085
families and, like, have never, you know, experienced

396
00:20:32,085 --> 00:20:35,984
poverty and, like, all they know is tech and fancy stuff.

397
00:20:36,055 --> 00:20:39,605
And then there's the people that have English degrees and theater

398
00:20:39,605 --> 00:20:43,105
degrees and art degrees and we've all clawed our way out of

399
00:20:43,105 --> 00:20:46,580
poverty and we're just, like, They let us do this every day.

400
00:20:46,939 --> 00:20:47,634
like, you know what I mean?

401
00:20:48,110 --> 00:20:50,300
Like every day you're like, wait, is this my life?

402
00:20:50,659 --> 00:20:52,759
And then I'm just like, oh, but I have spicy thoughts.

403
00:20:52,759 --> 00:20:53,719
And I'm like, don't get fired.

404
00:20:53,779 --> 00:20:54,529
Don't get fired.

405
00:20:54,529 --> 00:20:55,189
Don't get fired.

406
00:20:55,189 --> 00:20:57,889
Like, you know, . And then I hang out with Justin too

407
00:20:57,889 --> 00:21:00,259
much and then the spicy thoughts come out accidentally

408
00:21:00,590 --> 00:21:03,529
as someone who was almost fired for my spicy thoughts online.

409
00:21:03,590 --> 00:21:07,219
Uh, I will say, don't, don't do it if you don't have a , a backup

410
00:21:08,320 --> 00:21:09,940
. 
I mean, it's one of those things though, right?

411
00:21:09,940 --> 00:21:11,409
Where you're just like, you're so, like, you

412
00:21:11,409 --> 00:21:12,970
start off so scared and then eventually like.

413
00:21:13,925 --> 00:21:15,195
I like y'all's spicy thoughts.

414
00:21:15,205 --> 00:21:16,185
So I'm just saying that

415
00:21:17,285 --> 00:21:22,255
But it is just wild that is like I feel like I found my people of spicy

416
00:21:22,255 --> 00:21:26,564
thoughts and like Different backgrounds in tech and it's like we're

417
00:21:26,625 --> 00:21:31,315
obviously all like diverse and different But the similarities are just fire.

418
00:21:31,325 --> 00:21:32,724
Like, you know what I mean?

419
00:21:32,725 --> 00:21:37,335
Like, you're just like, ah, like when you know what it's like to be the poor kid

420
00:21:37,335 --> 00:21:40,825
and we've all like got spicy takes and just, I don't know, like they're just,

421
00:21:40,835 --> 00:21:47,044
you can tell, like we were all built to be like a certain type of people and

422
00:21:47,324 --> 00:21:48,974
see, it's the thing where it's like, when I was growing up as a kid,

423
00:21:48,985 --> 00:21:51,414
I got very like, like, I don't hide the fact that when I grew up in

424
00:21:51,415 --> 00:21:54,375
my household as a kid, like economically, we were, my parents had

425
00:21:54,375 --> 00:21:57,525
busted her butt and we were, we were very much on the like advantage.

426
00:21:58,235 --> 00:22:01,355
Side, but on top of that, like we had house

427
00:22:01,375 --> 00:22:03,815
issues putting this in a very appropriate way.

428
00:22:04,045 --> 00:22:07,595
You know, my, my dad, he's, he's worked through it so hard now, but

429
00:22:07,605 --> 00:22:12,045
he, he had to deal with alcoholism that made growing up really hard.

430
00:22:12,055 --> 00:22:16,314
And, uh, so I'm not used, I was not used to saying also those spicy thoughts for

431
00:22:16,314 --> 00:22:20,034
the longest time, because if I mouthed off to my dad, it did not turn out well.

432
00:22:20,210 --> 00:22:20,480
Yeah,

433
00:22:20,540 --> 00:22:23,740
my family was very religious, but like either half my family

434
00:22:23,750 --> 00:22:26,840
was very religious or the other half was like very like did

435
00:22:26,850 --> 00:22:29,740
drugs and craziness, so it was like you had to be perfect to

436
00:22:29,740 --> 00:22:32,590
stay in the safety, you know what I mean, of the religious side.

437
00:22:33,059 --> 00:22:36,680
So I feel you, like I was always like the opinionated child.

438
00:22:36,940 --> 00:22:37,850
And it was not good.

439
00:22:38,090 --> 00:22:41,450
I would love bringing that side into technology too, because

440
00:22:41,450 --> 00:22:43,860
there are a lot of people that don't feel they belong in tech

441
00:22:43,879 --> 00:22:47,680
because they're like, Oh, my, my dad also went to AA, right?

442
00:22:47,680 --> 00:22:52,199
My mom was in rehab through most of my junior high and high school and beyond.

443
00:22:52,490 --> 00:22:54,999
Um, it's like, this was, this is how people live.

444
00:22:55,040 --> 00:22:57,399
Like this is the reality of a lot of people's lives

445
00:22:57,550 --> 00:22:59,250
and they don't think they can break out of it.

446
00:22:59,290 --> 00:23:00,510
They don't think that they can.

447
00:23:00,920 --> 00:23:03,200
Do something to get themselves out of that situation,

448
00:23:03,200 --> 00:23:05,440
which you, which can be dangerous for their lives.

449
00:23:05,840 --> 00:23:09,310
And in all three of us on this, on this show right

450
00:23:09,310 --> 00:23:11,560
now are like, we've all come through some stuff.

451
00:23:11,590 --> 00:23:13,529
We've all broken out of things.

452
00:23:13,529 --> 00:23:16,350
I remember plenty of welfare Thanksgiving's, right?

453
00:23:16,350 --> 00:23:19,569
Like people bringing us the food to like, be able to have something to eat.

454
00:23:19,569 --> 00:23:19,719
So

455
00:23:19,719 --> 00:23:22,960
embarrassing to have to like use an EBT card and all the things.

456
00:23:22,960 --> 00:23:23,810
But I think that like.

457
00:23:24,035 --> 00:23:25,715
You can have your flavor of heart, right?

458
00:23:25,715 --> 00:23:28,045
Like it doesn't have to, everybody's background doesn't have to

459
00:23:28,055 --> 00:23:30,455
be exactly the same to know that you've been through struggles.

460
00:23:30,475 --> 00:23:33,645
And I don't think like the typical, like whether you grew up in poverty

461
00:23:33,645 --> 00:23:37,014
or middle class, there's still things that can happen in your life.

462
00:23:37,014 --> 00:23:37,785
That makes, we're not trying

463
00:23:37,785 --> 00:23:39,584
to like outpour someone here, right?

464
00:23:39,585 --> 00:23:40,904
Like there isn't that like notion of

465
00:23:41,934 --> 00:23:43,494
people like my friends will be like, Oh, well,

466
00:23:43,564 --> 00:23:45,254
like, I know you're going through this thing.

467
00:23:45,325 --> 00:23:46,765
But this thing happened to me and I'm like,

468
00:23:46,775 --> 00:23:49,935
there's no competition on pain or struggle, right?

469
00:23:49,935 --> 00:23:51,495
Like we're all in it together.

470
00:23:51,915 --> 00:23:54,444
Like, and there are different levels of hard.

471
00:23:54,455 --> 00:23:57,275
And I think what brings us together is the fact

472
00:23:57,275 --> 00:23:59,074
that we got through and we tried to create it.

473
00:23:59,075 --> 00:24:01,414
Like when you come up as a kid, that

474
00:24:01,414 --> 00:24:03,455
doesn't, that can't like really be yourself.

475
00:24:03,665 --> 00:24:04,225
You know what I mean?

476
00:24:04,245 --> 00:24:07,725
And then when you get to like, you've made a life that is better than what

477
00:24:07,725 --> 00:24:12,164
you grew up with and a safe place that you can be yourself and go seek out

478
00:24:12,164 --> 00:24:15,614
community, that's such a win because there's so many ways that you could have

479
00:24:16,524 --> 00:24:19,375
picked an unhealthy way to deal with those problems, you know what I mean?

480
00:24:19,375 --> 00:24:22,725
So the fact that we've got through it, we figured out how to build

481
00:24:22,725 --> 00:24:25,835
that life, that we could have created our own safe spaces and then

482
00:24:25,835 --> 00:24:29,975
found our safe people, that is such a like, it's an underrated.

483
00:24:30,285 --> 00:24:31,535
Win, you know what I mean?

484
00:24:32,005 --> 00:24:32,625
Exactly.

485
00:24:32,625 --> 00:24:35,905
And it's one of those things where there's not a day I wake

486
00:24:35,905 --> 00:24:38,275
up now and I don't feel incredibly lucky to do what I do.

487
00:24:38,595 --> 00:24:41,485
And I just love that you're out there being just like yourself.

488
00:24:41,545 --> 00:24:44,045
Like, like every time you just like a

489
00:24:44,045 --> 00:24:46,435
little bit more 80 shows and just like, yes.

490
00:24:47,960 --> 00:24:50,550
And I'm like, if you come from them in their mentions, I will find you.

491
00:24:52,390 --> 00:24:53,150
I'm the same way.

492
00:24:53,150 --> 00:24:54,750
Like, don't come for my people.

493
00:24:54,760 --> 00:24:56,110
Don't come for my people.

494
00:24:56,120 --> 00:24:57,780
Like, Josie's seen this too.

495
00:24:57,790 --> 00:25:00,059
Like, I will light someone on fire if you come for my people.

496
00:25:00,080 --> 00:25:00,949
But like, how dope

497
00:25:00,950 --> 00:25:01,309
is that?

498
00:25:01,309 --> 00:25:03,760
That we've created this cool community and we have each other's back.

499
00:25:03,760 --> 00:25:04,570
Like, that's so dope.

500
00:25:04,570 --> 00:25:06,280
And like, I got an art degree.

501
00:25:06,330 --> 00:25:08,420
Justin was going to be a mechanic, but he's also

502
00:25:08,420 --> 00:25:10,610
this smart dude with like, a mathematics degree.

503
00:25:10,610 --> 00:25:12,715
You had an In like an English degree.

504
00:25:12,745 --> 00:25:14,114
And we all ended up in the same place.

505
00:25:14,114 --> 00:25:14,584
That's rad.

506
00:25:15,294 --> 00:25:17,455
So my postbacs were actually NCS and applied math.

507
00:25:17,475 --> 00:25:18,365
Hey, there fellow math nerd.

508
00:25:20,814 --> 00:25:22,915
I wanted to do pure math, but it would have been another

509
00:25:22,915 --> 00:25:24,615
year because of how they have the courses lined up.

510
00:25:24,615 --> 00:25:25,834
I mean, it's university of Montana.

511
00:25:26,445 --> 00:25:27,344
I was, I was similar.

512
00:25:27,345 --> 00:25:29,034
Like I wanted to do pure physics, but the

513
00:25:29,034 --> 00:25:30,405
way it lined up, I had to have the math.

514
00:25:30,725 --> 00:25:31,475
And so I was like, all right, fine.

515
00:25:31,534 --> 00:25:33,645
I think this is, I want to graduate in four years.

516
00:25:33,665 --> 00:25:33,955
That's cool.

517
00:25:34,014 --> 00:25:37,705
Sometimes Justin just pops out and I'm like, I know he's

518
00:25:37,705 --> 00:25:39,925
smart, but he just like says something and I'm like.

519
00:25:40,185 --> 00:25:40,774
What goes on?

520
00:25:43,125 --> 00:25:45,815
And then you're on like, the internet and you're like, I built this

521
00:25:45,815 --> 00:25:49,405
thing with Python and it did this crazy like, hydro testing stuff.

522
00:25:50,129 --> 00:25:53,310
And like, I'm just like, you know, what, like, do you sleep?

523
00:25:55,040 --> 00:25:56,590
I do actually, I promise.

524
00:25:56,620 --> 00:25:59,060
I promise I actually sleep, but no, it's one of the things where

525
00:25:59,060 --> 00:26:01,919
it's just like the math side, I used to be terrified of math.

526
00:26:01,919 --> 00:26:04,530
And then the thing you end up reeling is that math at the upper levels

527
00:26:04,559 --> 00:26:08,969
is a lot more creative and open to interpretation and stuff like that.

528
00:26:08,969 --> 00:26:12,180
And even if it's like applied stuff where you're writing systems

529
00:26:12,220 --> 00:26:14,820
of equations or you're writing solvers to solve kind of these.

530
00:26:15,015 --> 00:26:16,575
very practical applied things.

531
00:26:16,625 --> 00:26:18,795
So University of Montana, case in point, their math department

532
00:26:18,805 --> 00:26:21,595
is very much oriented along the side of computational biology.

533
00:26:21,815 --> 00:26:24,585
It's really handy back, uh, right at 2020 because I knew

534
00:26:24,885 --> 00:26:26,865
how to write my own models and everything for COVID.

535
00:26:26,865 --> 00:26:27,405
I did so.

536
00:26:27,844 --> 00:26:30,344
It's, it's one of those things where it

537
00:26:30,354 --> 00:26:33,754
gets so much more fun as a large part of it.

538
00:26:33,774 --> 00:26:36,215
It's just, it's, I will still always say this, like the,

539
00:26:36,235 --> 00:26:39,064
when I step into my complex analysis class, which for those

540
00:26:39,064 --> 00:26:42,874
that don't know, complex analysis is basically calculus.

541
00:26:43,395 --> 00:26:45,695
With complex numbers and proofs, which sounds like three of the

542
00:26:45,705 --> 00:26:49,625
worst things you could ever put together, but it's really cool.

543
00:26:49,625 --> 00:26:50,050
Yeah,

544
00:26:50,050 --> 00:26:52,604
you just gave me, like, anxiety.

545
00:26:52,605 --> 00:26:54,995
I had so much anxiety walking into that class, right?

546
00:26:54,995 --> 00:26:57,755
But then, you realize unless you do these things, because at this

547
00:26:57,755 --> 00:27:00,154
point you've probably taken, like, a multivariable calculus class.

548
00:27:00,854 --> 00:27:05,024
And you have had to solve things like basically what

549
00:27:05,024 --> 00:27:07,094
are called path integrals, basically finding a path.

550
00:27:07,104 --> 00:27:07,705
The hardest

551
00:27:07,705 --> 00:27:09,174
class I've ever taken in my life.

552
00:27:09,245 --> 00:27:09,485
Yeah.

553
00:27:09,534 --> 00:27:09,975
Multivariate.

554
00:27:09,995 --> 00:27:11,254
Like I, I almost died.

555
00:27:11,884 --> 00:27:13,934
It takes like four or five pages to solve these things.

556
00:27:13,934 --> 00:27:18,064
And then you realize with complex analysis, it's like a half paragraph proof.

557
00:27:18,395 --> 00:27:23,034
And you're just like, I did all that math for what?

558
00:27:23,425 --> 00:27:25,875
So at this class, you could show me, Hey, guess what?

559
00:27:26,024 --> 00:27:26,965
There's an easier way.

560
00:27:27,280 --> 00:27:28,040
You didn't leave with

561
00:27:28,410 --> 00:27:28,520
that.

562
00:27:28,520 --> 00:27:31,750
You ever felt like you got like the answers in like a weird way.

563
00:27:31,750 --> 00:27:33,760
Like when I was younger, I was really good at math.

564
00:27:33,790 --> 00:27:36,660
And then I got convinced that I couldn't do math because I would

565
00:27:36,660 --> 00:27:39,519
always find like the weird creative way to solve an equation.

566
00:27:39,520 --> 00:27:41,290
And they're like, that's not how we learned in class.

567
00:27:41,800 --> 00:27:42,570
And it's crazy.

568
00:27:42,570 --> 00:27:45,780
Like, if you look at the studies of how like girls, Don't do

569
00:27:45,780 --> 00:27:48,200
well in math because of the way that like we're taught and

570
00:27:48,200 --> 00:27:51,030
that we're, we're doing it wrong or just the other things I

571
00:27:51,160 --> 00:27:55,090
purposely got the degree that had less calculus in it to avoid it.

572
00:27:55,109 --> 00:27:56,799
Cause I was convinced I was bad at math.

573
00:27:57,189 --> 00:27:59,489
And then I ended up learning math backwards through

574
00:27:59,489 --> 00:28:02,729
like programming and like different like computer, like.

575
00:28:02,975 --> 00:28:05,705
Compu, like, things because the, like, you know, they

576
00:28:05,705 --> 00:28:08,005
share the same, like, kind of functions and, like, wording.

577
00:28:08,595 --> 00:28:11,914
And I was like, this is just a bunch of set of instructions the whole time.

578
00:28:12,014 --> 00:28:16,085
It's basically, and that's the thing for me, is so much of

579
00:28:16,105 --> 00:28:20,145
math in schools, it is, The problem is a teaching problem.

580
00:28:20,145 --> 00:28:23,385
It is how these subject matters are taught and the fact that we do

581
00:28:23,385 --> 00:28:27,225
not allow for students to engage in alternative methods of solutions.

582
00:28:27,495 --> 00:28:30,305
Because when you're an upper level math, that is encouraged.

583
00:28:30,315 --> 00:28:31,875
That's as long as you can prove it.

584
00:28:31,905 --> 00:28:34,964
As long as you can write out your logic and you can QED that thing.

585
00:28:35,275 --> 00:28:35,655
Cool.

586
00:28:35,994 --> 00:28:41,355
But if the rote memorization that is expected until you get to the point, the

587
00:28:41,355 --> 00:28:46,875
fact that we purposely make learning the mathematics and learning computation.

588
00:28:47,210 --> 00:28:53,400
Suffering up until you get to that level is just the most backwards thing to me.

589
00:28:53,410 --> 00:28:57,730
It's frustrating It's so deeply frustrating because if I had a dollar

590
00:28:57,730 --> 00:29:02,349
for every person i've met that is actually fantastic at mathematical and

591
00:29:02,350 --> 00:29:07,049
computational thinking but has been just Absolutely clobbered into thinking

592
00:29:07,050 --> 00:29:10,709
that they're terrible at it because they have had teacher teacher after teacher.

593
00:29:10,749 --> 00:29:11,269
How many of

594
00:29:11,299 --> 00:29:11,549
them were

595
00:29:11,959 --> 00:29:12,589
spicy?

596
00:29:12,810 --> 00:29:15,800
Neurospicy or exactly, exactly.

597
00:29:15,850 --> 00:29:19,780
And it's so wild because like Einstein, like Sebastian Bach, like

598
00:29:19,790 --> 00:29:24,220
all these, like every big person in history that had some like

599
00:29:24,240 --> 00:29:28,869
monumental like change or figured out like something that we are

600
00:29:28,870 --> 00:29:31,759
going to learn in textbooks, we're told the same thing and we're

601
00:29:31,760 --> 00:29:35,770
very neurospicy, but we only teach for like a very small subset.

602
00:29:35,895 --> 00:29:37,115
Of like the population

603
00:29:37,175 --> 00:29:37,695
for me.

604
00:29:37,705 --> 00:29:41,315
That's the biggest thing about the work that we do.

605
00:29:41,355 --> 00:29:46,215
Like I said, that creative aspect is that it encourages

606
00:29:46,285 --> 00:29:49,735
this exploration and this alternative problem solving.

607
00:29:49,765 --> 00:29:52,304
And it's just, it's so incredible.

608
00:29:52,315 --> 00:29:52,515
Like.

609
00:29:53,010 --> 00:29:56,410
When I worked at the code school and if that code school had not unfortunately

610
00:29:56,410 --> 00:29:59,490
failed, I would still be working there because I loved that job so much.

611
00:29:59,720 --> 00:30:04,280
Seeing adults find that like childlike wonder and love of

612
00:30:04,280 --> 00:30:07,199
learning and desire to explore again after they've been told

613
00:30:07,200 --> 00:30:11,960
for their entire lives that there is one way to do things.

614
00:30:11,960 --> 00:30:12,860
This is the way we do things.

615
00:30:12,860 --> 00:30:14,510
If you don't, you are punished.

616
00:30:14,780 --> 00:30:16,680
It is the best feeling in the world.

617
00:30:16,710 --> 00:30:18,860
I still Live for that.

618
00:30:18,880 --> 00:30:21,940
That's a lot of why I like to build things like internal tools and

619
00:30:21,940 --> 00:30:24,280
stuff like that that bring joy to programmers because it lets them

620
00:30:24,280 --> 00:30:27,100
explore and be creative or like libraries that let them solve cool

621
00:30:27,100 --> 00:30:27,510
things.

622
00:30:27,510 --> 00:30:31,309
Just allowing someone to be creative again into into

623
00:30:31,310 --> 00:30:35,089
be a beginner again is a huge win in so much of this.

624
00:30:35,150 --> 00:30:37,560
But you just mentioned something that I did want to get back to.

625
00:30:37,710 --> 00:30:40,970
Your performance testing framework that you built in two weeks, because

626
00:30:40,970 --> 00:30:43,590
we kind of stopped the story there and went on a detour here, but then

627
00:30:43,590 --> 00:30:46,580
you, you now built this thing and it sounds like it was successful.

628
00:30:46,580 --> 00:30:47,769
Is this something that's open source?

629
00:30:47,770 --> 00:30:50,340
Is that something that other people, it is now there's a version

630
00:30:50,340 --> 00:30:51,259
of it that is open source.

631
00:30:51,259 --> 00:30:51,469
Yeah.

632
00:30:51,469 --> 00:30:53,400
So I basically, there was an original version I

633
00:30:53,400 --> 00:30:56,760
wrote that was a. Decent implementation on its ideas.

634
00:30:57,100 --> 00:30:59,000
The newest version that I'm working on is called hyperscale.

635
00:30:59,670 --> 00:31:03,010
It's under the hyperlite, hyper lite organization on github.

636
00:31:03,250 --> 00:31:05,610
It is, I am working on it.

637
00:31:05,730 --> 00:31:06,660
The CLI is working.

638
00:31:06,660 --> 00:31:07,859
It's available as a Python package.

639
00:31:07,860 --> 00:31:08,339
You can run it.

640
00:31:08,360 --> 00:31:10,419
I got a bunch of stuff working in the past couple weeks.

641
00:31:10,430 --> 00:31:12,019
It is very much interactive development.

642
00:31:12,410 --> 00:31:13,790
It has a full CLI.

643
00:31:13,790 --> 00:31:17,600
It has basically, it's all Python written and what it is is

644
00:31:17,600 --> 00:31:20,590
when I originally wrote initial version, which was called hera,

645
00:31:20,830 --> 00:31:22,900
which is a terrible name, it's the best thing I come up with.

646
00:31:22,900 --> 00:31:24,010
'cause like it does many things.

647
00:31:24,010 --> 00:31:25,630
It's, you know, I have a huger gone.

648
00:31:25,720 --> 00:31:27,010
Okay, I'll just steal from that name.

649
00:31:27,280 --> 00:31:28,031
I thought it was really cool.

650
00:31:28,036 --> 00:31:28,225
It,

651
00:31:28,450 --> 00:31:29,320
it's, it's math.

652
00:31:29,320 --> 00:31:29,680
Nerding.

653
00:31:30,070 --> 00:31:33,790
It's best nerding and like, I was just like, cute are gone.

654
00:31:33,790 --> 00:31:34,540
Yeah.

655
00:31:35,350 --> 00:31:36,945
I just, the thing with it though was like.

656
00:31:37,445 --> 00:31:39,155
Every time you try and implement something like this, it

657
00:31:39,155 --> 00:31:41,325
gets part of the way to the actual vision that you have.

658
00:31:41,365 --> 00:31:41,775
Right.

659
00:31:41,815 --> 00:31:45,405
And you again, it gets down to this idea of like best implementation

660
00:31:45,405 --> 00:31:47,684
at the time, given what you know, given the limitations that you have.

661
00:31:47,685 --> 00:31:50,555
So it did well, but there was a lot of baggage with it.

662
00:31:50,555 --> 00:31:51,674
It was really clunky.

663
00:31:51,685 --> 00:31:53,624
It was not going to work as well distributed.

664
00:31:53,864 --> 00:31:56,045
And there were other like architectural decisions that I made with

665
00:31:56,045 --> 00:31:59,345
respect to like pythons multiprocessing that were not That made it

666
00:31:59,345 --> 00:32:04,095
feel really janky to use in my view and this newer version hyperlite

667
00:32:04,145 --> 00:32:08,535
it uses a very different Architecture and very different like

668
00:32:08,545 --> 00:32:12,324
implementation and it has a much more simplified api and it's just

669
00:32:12,335 --> 00:32:16,675
it's so much cleaner and nicer to use The UI is very informative.

670
00:32:16,695 --> 00:32:18,375
It's entirely custom written terminal.

671
00:32:18,375 --> 00:32:20,135
All those terminal graphics are done via a component

672
00:32:20,155 --> 00:32:23,245
library that is in the hyperscale library itself that

673
00:32:23,265 --> 00:32:25,945
I have written, which FYI, your, your website's down

674
00:32:25,954 --> 00:32:26,534
hyperscale.

675
00:32:26,534 --> 00:32:26,944
dev

676
00:32:27,645 --> 00:32:28,074
hyperscale.

677
00:32:28,074 --> 00:32:28,234
dev.

678
00:32:28,255 --> 00:32:29,834
Uh, that is not a website that's up.

679
00:32:29,835 --> 00:32:30,194
Actually.

680
00:32:30,194 --> 00:32:30,555
It shouldn't be.

681
00:32:30,645 --> 00:32:30,935
Okay.

682
00:32:31,285 --> 00:32:31,885
I'm on the guide.

683
00:32:32,165 --> 00:32:32,515
That's where it

684
00:32:32,515 --> 00:32:32,675
was

685
00:32:32,675 --> 00:32:32,835
linked.

686
00:32:32,835 --> 00:32:33,634
Oh, you're on the GitHub.

687
00:32:34,045 --> 00:32:35,725
Hmm, interesting.

688
00:32:36,245 --> 00:32:39,045
Oh, it's, I'm actually working on updating that right now.

689
00:32:39,045 --> 00:32:41,115
I need to update the screenshots and things like that.

690
00:32:41,215 --> 00:32:44,895
But, if you do like a pip install or my preferred tool of

691
00:32:44,895 --> 00:32:48,325
choice, uh, uv, which by the way, shout out Charlie Marsh.

692
00:32:48,995 --> 00:32:51,864
Goodness gracious, that, that man single handedly

693
00:32:51,864 --> 00:32:54,405
changing the entire face of Python development.

694
00:32:54,555 --> 00:32:56,705
I didn't know you could use uv over pip, that's awesome.

695
00:32:57,115 --> 00:32:58,585
I love UV so much.

696
00:32:58,625 --> 00:33:03,945
I have never felt such love for a package manager.

697
00:33:04,405 --> 00:33:05,864
Dwayne, you were so passionate about that.

698
00:33:05,864 --> 00:33:06,774
It made my heart happy.

699
00:33:06,795 --> 00:33:07,605
You were like, look.

700
00:33:07,745 --> 00:33:09,994
I love how fast it is.

701
00:33:10,024 --> 00:33:12,944
I love how easy it is to set up virtual environments.

702
00:33:12,984 --> 00:33:15,074
I love how good the resolver is.

703
00:33:15,114 --> 00:33:17,825
I love how clean and concise the messages are.

704
00:33:17,825 --> 00:33:20,455
I love the fact that it has built in log files that are actually nice.

705
00:33:20,775 --> 00:33:23,525
This isn't to say, again, past efforts like Poetry and stuff like

706
00:33:23,525 --> 00:33:26,305
that, best implementations given what we knew at the time, but UV.

707
00:33:26,430 --> 00:33:27,420
Just nails it.

708
00:33:27,930 --> 00:33:30,220
This is the second episode of the episode with Sam.

709
00:33:30,230 --> 00:33:32,630
Also, we were talking about UV for a little while and just

710
00:33:32,630 --> 00:33:35,619
like how, how much better it is than what came before it.

711
00:33:36,350 --> 00:33:37,220
UV is so good.

712
00:33:37,230 --> 00:33:39,270
Like Charlie Marsh is single handedly changing

713
00:33:39,270 --> 00:33:40,610
the entire face of Python development.

714
00:33:40,639 --> 00:33:43,650
Y'all y'all got to understand like between rough and UV

715
00:33:43,660 --> 00:33:46,850
and things like identic modern Python development is so

716
00:33:46,850 --> 00:33:49,660
different than what people have expected from the past.

717
00:33:49,870 --> 00:33:52,830
It's in like the type pins are getting better with every version.

718
00:33:53,080 --> 00:33:54,490
Python's event loop.

719
00:33:55,005 --> 00:33:57,195
Is Ridiculously performing now.

720
00:33:57,215 --> 00:33:58,984
It's every version since like 3.

721
00:33:58,985 --> 00:34:05,314
10. It's gotten so much faster so much better and it's just it's good You know

722
00:34:05,355 --> 00:34:09,775
and it's like with the uh, the sub interpreters that are finally coming in 3.

723
00:34:09,825 --> 00:34:11,884
14 Well, they've been there since 3.

724
00:34:11,884 --> 00:34:15,175
13 But they're going to be publicly accessible as an executor in 3.

725
00:34:15,175 --> 00:34:18,075
14 And you better bet this framework's going to have that that we're going

726
00:34:18,075 --> 00:34:23,455
to switch over to that the python development is really just The language

727
00:34:23,495 --> 00:34:27,295
is growing up and it's changing in a way that is absolutely fantastic.

728
00:34:27,355 --> 00:34:28,405
And I just

729
00:34:28,415 --> 00:34:31,214
because Python was out there longer than most people think it

730
00:34:31,215 --> 00:34:34,655
was, but it's grown so much in the last couple of versions.

731
00:34:34,694 --> 00:34:38,165
And that was always everybody's complaint that it wasn't performing enough.

732
00:34:38,215 --> 00:34:40,514
And now they're putting so much effort in

733
00:34:40,714 --> 00:34:42,995
everything that you just mentioned as far as performance goes, right?

734
00:34:42,995 --> 00:34:45,885
Like rough and UV, they're all written in rust.

735
00:34:46,250 --> 00:34:50,370
Like, which is a very interesting take on tooling for

736
00:34:50,370 --> 00:34:52,520
a language that's not written in the language, right?

737
00:34:52,520 --> 00:34:55,600
Always, always historically has been like, don't do that, right?

738
00:34:55,600 --> 00:34:58,750
If you're writing something for the Ruby ecosystem, it should be

739
00:34:58,750 --> 00:35:01,309
written in Ruby because we're going to maintain it going forward.

740
00:35:01,609 --> 00:35:05,480
And this idea that's like, actually, let's just pick the more performant

741
00:35:05,490 --> 00:35:08,720
language or something that is, is better to distribute with CLIs.

742
00:35:08,730 --> 00:35:11,670
Like, like just let's write it and go or rust or something else.

743
00:35:12,645 --> 00:35:14,385
Knows how Python works.

744
00:35:14,735 --> 00:35:16,965
Maybe that's the better route for some of these things.

745
00:35:16,965 --> 00:35:18,085
And that seems really interesting.

746
00:35:18,165 --> 00:35:20,175
It kind of makes sense though, because just think about it.

747
00:35:20,175 --> 00:35:23,025
When they make languages, I don't need to be compiled.

748
00:35:23,025 --> 00:35:25,664
They're usually on top of language that is compiling, right?

749
00:35:25,664 --> 00:35:31,665
So it's like just another version of us kind of learning new ways to build

750
00:35:31,675 --> 00:35:35,955
things and to make them more performant, but make it be more accessible because.

751
00:35:36,175 --> 00:35:36,755
Let's be real.

752
00:35:36,755 --> 00:35:40,505
If we're going to, if I'm going to teach someone Python over Java and

753
00:35:40,505 --> 00:35:44,805
teaching them how to account for garbage collection or C and pointers, you

754
00:35:44,805 --> 00:35:49,464
know, it's just, they, they're all on top of assembly, you know what I mean?

755
00:35:49,464 --> 00:35:54,095
Or like whatever, kind of like, it's all just another abstraction.

756
00:35:55,765 --> 00:35:55,995
Yeah.

757
00:35:55,995 --> 00:36:00,175
And that's the thing is like, I, I do actually get in a lot of ways, why.

758
00:36:00,370 --> 00:36:04,030
Rust would be a good choice, particularly because like C and C and

759
00:36:04,030 --> 00:36:07,170
C Python, all those things that comes with a lot of package with it.

760
00:36:07,210 --> 00:36:09,160
And it's just like, if you've ever looked at the C

761
00:36:09,160 --> 00:36:12,879
Python internals, it's a lot, it's a lot to take in.

762
00:36:12,889 --> 00:36:17,120
And so having messed with Py03 and Rust, it's just, it's

763
00:36:17,129 --> 00:36:21,294
such a nice, clean interface to build all the core guts that

764
00:36:21,294 --> 00:36:24,570
really matter as something super performant, very memory safe.

765
00:36:25,035 --> 00:36:26,955
Like that makes a lot of sense because you don't want to

766
00:36:26,965 --> 00:36:28,865
have to worry about memory leaks with a package manager.

767
00:36:28,865 --> 00:36:31,735
You don't want to have to worry about, you know,

768
00:36:31,745 --> 00:36:33,715
global interpreter and all these other things.

769
00:36:33,715 --> 00:36:34,915
You don't want to have to worry about all of that.

770
00:36:34,945 --> 00:36:36,365
It should just work.

771
00:36:36,385 --> 00:36:37,485
And then you have a nice interface.

772
00:36:38,025 --> 00:36:40,515
That seems to be where people really want to put rest.

773
00:36:40,515 --> 00:36:42,965
Like, I think some people look at rest and they're like, I just want

774
00:36:42,965 --> 00:36:46,625
to build everything in it, but as far as big companies and really like.

775
00:36:46,855 --> 00:36:50,135
When we're starting to rewrite, like, whole programs in it,

776
00:36:50,185 --> 00:36:54,715
people are picking, like, very specific places that you need the

777
00:36:54,715 --> 00:36:58,255
memory safety, you need the performance, and just rewriting that.

778
00:36:58,255 --> 00:37:02,434
So I think Rust is going to be one of the few languages that you will

779
00:37:02,434 --> 00:37:06,334
pick a part of your architecture or program and completely rewrite

780
00:37:06,355 --> 00:37:09,635
that section in it, but still maintain the language in everywhere else.

781
00:37:09,635 --> 00:37:13,865
But just the important guts, like a kernel or memory node

782
00:37:13,875 --> 00:37:16,385
or, you know what I mean, like this, like package managers.

783
00:37:16,970 --> 00:37:20,160
That will get rewritten in Rust, even while they maintain

784
00:37:20,300 --> 00:37:23,970
the programs in other areas in the same language, because I

785
00:37:23,980 --> 00:37:27,000
think that's just going to be the new implementation for Rust.

786
00:37:27,320 --> 00:37:29,250
As a general question, one of the benefits

787
00:37:29,250 --> 00:37:31,310
obviously of Rust is like, Oh, it's memory safe.

788
00:37:31,310 --> 00:37:35,129
It's because you're manually managing the memory.

789
00:37:35,130 --> 00:37:35,949
You don't need a garbage collection.

790
00:37:35,959 --> 00:37:36,709
You don't need to do all this stuff.

791
00:37:36,709 --> 00:37:39,070
But then also I think that like CLI tools.

792
00:37:39,495 --> 00:37:40,815
They run for less than a second.

793
00:37:40,935 --> 00:37:41,515
Most of the time, right?

794
00:37:41,635 --> 00:37:43,975
Like I'm running it for a couple seconds or something.

795
00:37:43,985 --> 00:37:47,575
And, and maybe the memory safety would help me with doing

796
00:37:47,575 --> 00:37:50,565
some passing information through that I don't trust.

797
00:37:50,565 --> 00:37:51,744
Like it's, it's arbitrary.

798
00:37:51,745 --> 00:37:55,744
And how many times was there a critical vulnerability in a font?

799
00:37:55,784 --> 00:37:57,414
Because fonts are basically like rendering

800
00:37:57,415 --> 00:37:59,245
engines that you can pass different data to.

801
00:37:59,255 --> 00:38:01,315
Like there's all these like weird places where it's like, Oh.

802
00:38:01,770 --> 00:38:04,370
I don't know the inputs to this thing, but I know what the output should be.

803
00:38:04,380 --> 00:38:07,050
And if we send it garbage in, we get vulnerabilities on

804
00:38:07,050 --> 00:38:09,850
the outputs and maybe like rust is going to help there.

805
00:38:10,100 --> 00:38:12,670
But how much of the other things that rust does

806
00:38:12,670 --> 00:38:16,119
really matter for something like UV for something?

807
00:38:16,150 --> 00:38:17,880
And this is something I'm generally like, I don't,

808
00:38:17,939 --> 00:38:19,610
I don't know the answer to infinity listeners.

809
00:38:19,749 --> 00:38:20,299
No.

810
00:38:20,480 --> 00:38:21,360
Like why are there benefits?

811
00:38:21,390 --> 00:38:23,920
What are the benefits are there to something like this?

812
00:38:23,960 --> 00:38:26,230
I've used like go as a garbage collected language.

813
00:38:26,240 --> 00:38:27,720
And it's like, I don't care because I don't

814
00:38:27,730 --> 00:38:30,530
run a CLI long enough to collect garbage on it.

815
00:38:31,145 --> 00:38:31,655
Right.

816
00:38:31,715 --> 00:38:34,185
And it's, it's one of those things where it's, it's, it's like,

817
00:38:34,785 --> 00:38:37,855
for me with, when I take a lot, look at Rust and writing things

818
00:38:37,875 --> 00:38:41,995
with command line tools and like the, that, that safety and that

819
00:38:41,995 --> 00:38:47,475
performance and things like that, you would think it wouldn't matter.

820
00:38:47,645 --> 00:38:49,675
But it's, it's, it's one of those things where.

821
00:38:50,000 --> 00:38:54,720
When you, particularly in things like Python, when you have things

822
00:38:54,720 --> 00:38:57,360
like global interpreter lock kind of lurking around that can

823
00:38:57,360 --> 00:39:00,580
potentially result in some unsafe situations in various environments.

824
00:39:00,690 --> 00:39:03,490
And other things too, it's just the way that I've heard people

825
00:39:03,490 --> 00:39:06,110
argue for Rust in this case is when it comes down to things like

826
00:39:06,110 --> 00:39:09,110
that, where it's, you know, a couple of seconds of interaction,

827
00:39:09,180 --> 00:39:11,610
what's really the benefit in terms of performance and speed up and

828
00:39:11,620 --> 00:39:14,080
why safety when it's just, you know, a couple of command line R's.

829
00:39:14,080 --> 00:39:16,059
It's not like we're ingesting, you know, 50

830
00:39:16,059 --> 00:39:17,349
terabytes of data and things of that sort.

831
00:39:17,830 --> 00:39:21,270
The biggest thing I've heard is that it's it's the stability in terms

832
00:39:21,280 --> 00:39:26,300
of releases is what it is, which is, it's a long term investment

833
00:39:26,320 --> 00:39:31,100
and developers being able to improve and expand upon the tool.

834
00:39:32,195 --> 00:39:36,215
And being able to release consistently and knowing that things won't break

835
00:39:36,215 --> 00:39:40,075
So that way when you get a new version of the tool, you know that it's if

836
00:39:40,075 --> 00:39:44,235
there are bugs they're not going to be like memory violations and stuff

837
00:39:44,254 --> 00:39:48,095
like that and it is also security in some cases because There are a lot

838
00:39:48,095 --> 00:39:53,220
of cases where folks will try to abuse They'll try to use CLIs for exactly

839
00:39:53,220 --> 00:39:56,300
what you're saying, you know, garbage and malicious data out, right?

840
00:39:56,540 --> 00:39:59,370
I can fuzz a CLI or something and see what happens.

841
00:39:59,850 --> 00:40:00,060
You

842
00:40:00,060 --> 00:40:03,340
would be surprised Data Vance is a healthcare company.

843
00:40:03,640 --> 00:40:04,370
Rather large.

844
00:40:04,660 --> 00:40:06,540
It's a realistic security consideration.

845
00:40:06,560 --> 00:40:09,870
We have to lock down a lot of stuff inside our images So that people

846
00:40:09,870 --> 00:40:13,010
can't run it because people will try to see what they can get away

847
00:40:13,010 --> 00:40:19,970
with injecting into for example, you know Maven or java or java or uv

848
00:40:20,009 --> 00:40:24,649
or pip or other things To see if they can get some access somewhere

849
00:40:24,649 --> 00:40:29,420
else that that program has license to run in so, you know And then just

850
00:40:29,430 --> 00:40:32,470
also but also just on top of that it's one of the things where it's um,

851
00:40:35,840 --> 00:40:38,650
The other part of it I think is when you're releasing something like a

852
00:40:38,650 --> 00:40:42,680
command line tool The expectation is that it should just work, right?

853
00:40:42,680 --> 00:40:46,859
You should be catching memory violations and stuff like that out in live and

854
00:40:47,319 --> 00:40:52,510
tools like languages like rust and stuff like that Um really tend to help

855
00:40:52,660 --> 00:40:57,370
with Preventing that sort of thing early on, it's kind of shifting it left.

856
00:40:57,390 --> 00:41:00,250
I mean, as a, as a, as a consumer of a lot of these tools and

857
00:41:00,250 --> 00:41:02,870
occasional writer of some of them, like just the distribution

858
00:41:02,870 --> 00:41:06,390
model is so much better for compiled languages where I tried to

859
00:41:06,390 --> 00:41:09,489
install a, uh, background remover that was written in Python.

860
00:41:09,490 --> 00:41:11,509
And I was like, I give this a 70 percent chance

861
00:41:11,509 --> 00:41:13,859
of succeeding and sure enough, it failed.

862
00:41:13,859 --> 00:41:13,999
Right.

863
00:41:13,999 --> 00:41:15,439
They would not even go through the install.

864
00:41:15,449 --> 00:41:18,249
Cause like, I, I can't get the right dependencies in your.

865
00:41:18,565 --> 00:41:19,395
Distribution, whatever.

866
00:41:19,425 --> 00:41:21,565
And I'm like, yep, that's what I thought getting a binary

867
00:41:21,845 --> 00:41:25,055
and only relying on the C libraries or something, you

868
00:41:25,055 --> 00:41:27,395
know, is, is, is usually going to be better for me.

869
00:41:27,725 --> 00:41:29,894
Are you, are you doing performance tuning, tuning

870
00:41:29,905 --> 00:41:33,225
and, and stuff at DataVant or are you doing.

871
00:41:33,600 --> 00:41:34,510
Like a data back end.

872
00:41:34,510 --> 00:41:35,570
What's your, what's your role there?

873
00:41:35,810 --> 00:41:38,230
I'm internal services, internal tooling, running and going.

874
00:41:38,240 --> 00:41:39,800
Actually, it's funny that you bring up going,

875
00:41:39,940 --> 00:41:44,030
so going API CLI services, things of that sort.

876
00:41:44,280 --> 00:41:47,569
Um, I've also written a whole slew of course, of internal

877
00:41:47,569 --> 00:41:49,610
tooling and like Python and things of that sort for them.

878
00:41:50,039 --> 00:41:51,630
Data is very multifaceted.

879
00:41:51,690 --> 00:41:56,209
So we have parts of the organization that run very heavily on very legacy, like.

880
00:41:56,210 --> 00:41:57,030
net and stuff like that.

881
00:41:57,490 --> 00:42:01,650
Then we have parts of the org that run almost exclusively in Python.

882
00:42:02,740 --> 00:42:04,990
Good swath of the org services are exclusively in Python.

883
00:42:05,350 --> 00:42:07,220
And then we have another part of the org that uses

884
00:42:07,220 --> 00:42:10,010
a lot of Java and like the thing that my team does.

885
00:42:10,020 --> 00:42:10,830
So you're an enterprise.

886
00:42:11,770 --> 00:42:12,010
Yeah.

887
00:42:12,010 --> 00:42:12,690
We're an enterprise.

888
00:42:12,690 --> 00:42:14,050
That's all those, all those layers of your

889
00:42:14,050 --> 00:42:14,540
enterprise.

890
00:42:14,560 --> 00:42:14,940
This is.

891
00:42:16,029 --> 00:42:19,680
And so what my team does is we bridge all that by writing

892
00:42:19,690 --> 00:42:21,840
a lot of like deployment tooling and stuff like that

893
00:42:21,850 --> 00:42:25,140
in Golang and Golang is interesting because Golang.

894
00:42:25,425 --> 00:42:27,985
Not necessarily before Rust, but it certainly became

895
00:42:28,005 --> 00:42:30,035
hugely popular with a lot of infrastructure stuff.

896
00:42:30,035 --> 00:42:32,205
So if you want to work with like infrastructure libraries

897
00:42:32,205 --> 00:42:36,094
like etcd or it's like the Kubernetes API and stuff like

898
00:42:36,094 --> 00:42:38,684
that, probably the best way to do it is something like Go.

899
00:42:39,335 --> 00:42:42,934
And particularly if you want to turn it into a service or a CLI tool that

900
00:42:42,945 --> 00:42:46,625
interacts with those things, that isn't to say that you can't do those things.

901
00:42:47,225 --> 00:42:49,105
This was like docker was built in go, which

902
00:42:49,105 --> 00:42:51,585
was like maybe a bad call for them early on.

903
00:42:51,585 --> 00:42:51,815
Right.

904
00:42:51,815 --> 00:42:54,205
And it was just like, they did that really early and they

905
00:42:54,205 --> 00:42:57,135
went all in and now everything in that ecosystem, if you're

906
00:42:57,135 --> 00:43:00,784
interacting with the docker API, Kubernetes, whatever, it's all go.

907
00:43:01,125 --> 00:43:01,844
Huge part of it.

908
00:43:01,855 --> 00:43:05,715
And it's one of those things where, so for my team, the reason we went

909
00:43:05,715 --> 00:43:07,975
with something like go as opposed to Python or something like that was

910
00:43:07,975 --> 00:43:10,915
again, that redistributability, the build pipeline and stuff like that.

911
00:43:10,915 --> 00:43:13,395
The fact that we can just build a binary, set it as cross

912
00:43:13,415 --> 00:43:15,504
platform, build a different architecture and just deploy the thing.

913
00:43:15,505 --> 00:43:18,605
Whereas with Python, You have to worry about selecting the right Docker image.

914
00:43:18,605 --> 00:43:21,655
You have to worry about building things for the right, you know, architecture.

915
00:43:21,655 --> 00:43:26,045
You have to worry about, you know, everything being installed and

916
00:43:26,055 --> 00:43:29,335
having available like versions that are available and compatible if

917
00:43:29,335 --> 00:43:33,765
you have a package, but that package doesn't support Mac, for example,

918
00:43:34,084 --> 00:43:36,644
which was a problem when, uh, like M ones and stuff like that came

919
00:43:36,644 --> 00:43:40,154
out because the underlying C code hadn't really become compatible yet.

920
00:43:40,164 --> 00:43:41,034
That could be an issue.

921
00:43:41,334 --> 00:43:43,214
It's just one of those things where.

922
00:43:43,970 --> 00:43:47,280
I in particular so it's funny because I write a lot of python, but going

923
00:43:47,280 --> 00:43:52,610
is actually my favorite language Go and rust and these other languages

924
00:43:52,740 --> 00:43:55,199
just let you take care of stuff So you just don't have to worry about it

925
00:43:55,200 --> 00:44:00,699
and there's an upfront cost particularly with rust with rust the upfront

926
00:44:00,700 --> 00:44:05,770
cost is Hi, because you have to learn about a set of concepts like the

927
00:44:05,880 --> 00:44:10,800
barrow checker and things of that sort that are just kind of intense.

928
00:44:10,830 --> 00:44:12,220
They're, they're taxing their up front.

929
00:44:12,230 --> 00:44:15,579
It's not like CRC where it's kind of, you know, fork around and find

930
00:44:15,580 --> 00:44:19,399
out you learn about how not to mess up memory as you go as you get

931
00:44:19,399 --> 00:44:22,000
the, that, uh, you know, as you encounter segfaults and stuff like

932
00:44:22,000 --> 00:44:25,480
that, which, you know, As you get experienced enough in c and c and

933
00:44:25,480 --> 00:44:27,850
things of that sort you start learning more and more So it's like when

934
00:44:27,850 --> 00:44:32,069
i'm running c anymore I try and use like i'm very careful with it But

935
00:44:32,070 --> 00:44:34,260
I try and use things like shared corners and stuff like that Even if

936
00:44:34,260 --> 00:44:37,670
they are less performant than just mallocing or reallocating memory.

937
00:44:37,760 --> 00:44:40,899
I know how to do that as well Uh, I also know how to do unhinged things with

938
00:44:40,899 --> 00:44:44,400
like compile time template programming and c that No one should ever do.

939
00:44:45,020 --> 00:44:46,340
Can you tell me about those things?

940
00:44:46,340 --> 00:44:48,109
Oh

941
00:44:48,110 --> 00:44:48,550
lord.

942
00:44:49,020 --> 00:44:50,740
Oh yes, yes.

943
00:44:50,780 --> 00:44:54,350
Uh, that's, that all came from a professor we had my last year called

944
00:44:54,350 --> 00:44:57,180
Oliver Sering, who remains one of the most brilliant people I've ever met.

945
00:44:57,190 --> 00:44:58,380
But good lord, the man.

946
00:44:58,970 --> 00:45:02,300
The things that man knows how to do with C are truly unhinged and beautiful.

947
00:45:02,350 --> 00:45:06,160
It's things like, you will compile a program, and you can use template

948
00:45:06,160 --> 00:45:09,380
programming to, at compile time, whilst determining the types, compiling

949
00:45:09,380 --> 00:45:12,949
the program, to use, like, constructs like recursion, to do, like, loops and

950
00:45:12,949 --> 00:45:16,909
things of that sort, to allocate memory, and, like, templating constructs.

951
00:45:17,370 --> 00:45:21,620
Calls and to perform operations and things of that sort.

952
00:45:21,620 --> 00:45:24,470
So the way Oliver and I would use this is basically for like

953
00:45:24,500 --> 00:45:27,420
tensor libraries for scientific computing and things of that sort.

954
00:45:27,450 --> 00:45:29,690
We would use that to basically set up tensor computing

955
00:45:29,740 --> 00:45:31,810
ahead of time because you have a static file there.

956
00:45:32,169 --> 00:45:34,229
So you know the size, the params and all that

957
00:45:34,229 --> 00:45:35,870
stuff as you would need to do at compile time.

958
00:45:36,240 --> 00:45:37,510
And it can just take care of that in compile

959
00:45:37,510 --> 00:45:39,910
time so it doesn't have to do it during run time.

960
00:45:40,080 --> 00:45:42,520
Would I recommend doing that for like a C server program?

961
00:45:42,530 --> 00:45:45,700
Like should you go, you know, build your Drogon app with fancy You

962
00:45:45,700 --> 00:45:49,470
know, compile time vectors and stuff like that, probably not, you

963
00:45:49,470 --> 00:45:53,790
know, is it maybe a useful trick to do for scientific computing

964
00:45:53,790 --> 00:45:56,160
where a lot of times you have access to the day set ahead of time

965
00:45:56,160 --> 00:45:59,519
and it's you kind of those parameters are known, potentially, it's a

966
00:45:59,520 --> 00:46:02,149
trade off and this really gets down to the idea of like optimization.

967
00:46:02,395 --> 00:46:04,515
And things of that sort again, kind of going back

968
00:46:04,515 --> 00:46:06,715
to the performance framework and stuff like that.

969
00:46:07,335 --> 00:46:10,455
The thing you end up learning about optimizing frameworks, particularly

970
00:46:10,455 --> 00:46:14,395
with like performance frameworks, like hyperscale is optimization.

971
00:46:14,455 --> 00:46:15,614
You can reduce the amount of work.

972
00:46:15,625 --> 00:46:16,884
Of course, that's one way of doing it,

973
00:46:16,895 --> 00:46:19,395
which is just you remove work that's done.

974
00:46:19,735 --> 00:46:21,614
You can shift the work elsewhere.

975
00:46:21,845 --> 00:46:23,425
You can do it at a different step at a different place

976
00:46:23,425 --> 00:46:25,245
at different time and get out of the way of things.

977
00:46:25,245 --> 00:46:25,615
Right.

978
00:46:25,825 --> 00:46:27,465
Or you can like.

979
00:46:27,880 --> 00:46:31,650
Distribute the work right you can you can kind of spread it out So you chose

980
00:46:31,650 --> 00:46:34,890
to get done more quickly and then you bring it back together And one of the

981
00:46:34,900 --> 00:46:40,379
things I found with python is that there's a lot of introspection features that

982
00:46:40,379 --> 00:46:44,399
are available So that you can introspect from types and arguments of functions

983
00:46:44,399 --> 00:46:47,849
and stuff like that So one of the things I found also with things like locusts

984
00:46:47,850 --> 00:46:50,650
and stuff like that was that they were doing a lot of dns Calls and stuff

985
00:46:50,650 --> 00:46:53,280
like that while they were running these tests I was just like well, it's like

986
00:46:53,720 --> 00:46:58,115
for example, if it's like a static string, right if i'm just hitting hd Pbin.

987
00:46:58,115 --> 00:46:59,125
org slash get.

988
00:46:59,625 --> 00:47:00,685
That's a hard coded string.

989
00:47:01,135 --> 00:47:02,615
Why do I keep doing these DNS lookups?

990
00:47:02,625 --> 00:47:05,005
Like, why am I invalidating the cache or anything of that sort?

991
00:47:05,025 --> 00:47:06,845
Like, this, this is a static address.

992
00:47:07,285 --> 00:47:10,595
So one of the things Hyperscale lets you do is you can set default

993
00:47:10,605 --> 00:47:14,615
arguments and then specify a, using a type hint from types that the

994
00:47:14,624 --> 00:47:17,505
library provides you, that this is like a URL or something like that.

995
00:47:17,900 --> 00:47:21,960
What hyperscale will do is shifting that work, it will go in before it

996
00:47:21,970 --> 00:47:25,070
starts running the test, it will do the DNS lookups, or it will like

997
00:47:25,080 --> 00:47:28,760
serialize and turn your data into bytes or your headers or stuff like that.

998
00:47:29,210 --> 00:47:32,259
And again, it's that idea of shifting work and just like, hey, if you're going

999
00:47:32,259 --> 00:47:35,439
to tell me that this is just static and you're not changing this, this isn't

1000
00:47:35,439 --> 00:47:38,710
dynamic, we can optimize that ahead of time and that makes it much faster.

1001
00:47:38,730 --> 00:47:40,000
DNS lookups

1002
00:47:40,140 --> 00:47:44,910
can be a big performance bottleneck if you are like, Oh, you know what?

1003
00:47:44,920 --> 00:47:46,210
This I missed the cash.

1004
00:47:46,240 --> 00:47:47,120
Let me go look it up.

1005
00:47:47,180 --> 00:47:50,020
Oh, it's not in my local network, especially if you're

1006
00:47:50,020 --> 00:47:52,100
running like your performance testing containers, right?

1007
00:47:52,100 --> 00:47:54,599
And you're basically starting with a clean slate every time.

1008
00:47:54,600 --> 00:47:58,000
And you're like, Oh, now I need to wait to go find the next answer.

1009
00:47:58,220 --> 00:47:59,980
If that downstream server is affecting your

1010
00:47:59,980 --> 00:48:02,960
performance results, that's not accurate.

1011
00:48:02,960 --> 00:48:03,610
Necessarily.

1012
00:48:03,620 --> 00:48:07,299
You're like, Oh, I must have shift something that is really slow.

1013
00:48:07,299 --> 00:48:09,325
Now it's like, actually, well, no, you just DNS was slow.

1014
00:48:09,505 --> 00:48:11,515
I think we can make sure you get that ahead of time.

1015
00:48:12,155 --> 00:48:12,585
Exactly.

1016
00:48:12,585 --> 00:48:14,685
And some of those things are your performance testing, the DNS server,

1017
00:48:14,685 --> 00:48:17,125
or your performance testing, your actual API and stuff like that.

1018
00:48:17,295 --> 00:48:19,544
And it's also just things like, are your performance

1019
00:48:19,565 --> 00:48:22,494
testing like your server or your performance testing?

1020
00:48:22,495 --> 00:48:24,725
How fast Python can serialize a string, which is.

1021
00:48:25,330 --> 00:48:29,410
Fast dish, but you know, still a overhead or, and this even

1022
00:48:29,410 --> 00:48:31,810
comes into a bigger role when you have things like HTP two and

1023
00:48:31,810 --> 00:48:35,170
things like that where the serialization of headers and all

1024
00:48:35,170 --> 00:48:37,300
these things and the encoding and the HPAC headers and all that

1025
00:48:37,300 --> 00:48:39,730
stuff can get very expensive if you have to repeatedly run it.

1026
00:48:40,060 --> 00:48:43,990
It's one of those things where I went through and I wrote, I took a Python

1027
00:48:45,240 --> 00:48:48,600
HTTP two library, and I basically wrote a bunch of it, kind of removed a bunch

1028
00:48:48,600 --> 00:48:51,870
of bottlenecks and efficiencies and things of that sort, simplified it down.

1029
00:48:51,870 --> 00:48:52,290
So that is.

1030
00:48:52,975 --> 00:48:53,925
Much faster.

1031
00:48:54,095 --> 00:48:57,745
I then took the HPAC library that it had that was pure Python and I

1032
00:48:57,745 --> 00:49:00,495
rewrote that so it kind of optimized that and turned it into its own thing.

1033
00:49:00,695 --> 00:49:04,294
It's still a good amount of overhead where as if I pass

1034
00:49:04,294 --> 00:49:06,934
in just static headers and I do all that ahead of time

1035
00:49:06,935 --> 00:49:09,424
so that I'm just passing in the preencoded headers.

1036
00:49:10,065 --> 00:49:13,755
That's saving a lot of work other things too with a lot of

1037
00:49:13,755 --> 00:49:17,525
these frameworks I I think even within locusts you could have

1038
00:49:17,525 --> 00:49:20,285
different types of locusts making different types of requests

1039
00:49:20,815 --> 00:49:23,755
But each locus could have like you could have an http locust.

1040
00:49:23,755 --> 00:49:27,664
You could have a fast http locust You could have a grpc locust.

1041
00:49:27,884 --> 00:49:33,335
Well, the way modern services work is they You could have

1042
00:49:33,335 --> 00:49:36,265
a web page that is making calls to any number of these

1043
00:49:36,265 --> 00:49:38,495
things and then on top of that You also have the web page.

1044
00:49:38,495 --> 00:49:39,865
That's a part of your performance, right?

1045
00:49:40,320 --> 00:49:43,420
So why not make it so that you, when you're running these workflows,

1046
00:49:43,430 --> 00:49:46,570
you can use multiple clients within a single given workflow.

1047
00:49:46,580 --> 00:49:51,610
So I can simultaneously and admittedly from the same concurrency pool, but still

1048
00:49:51,740 --> 00:49:56,539
at the same times test at the multiple like horizontal layers of that stack.

1049
00:49:56,569 --> 00:50:00,299
So I can test using like a playwright integration

1050
00:50:00,430 --> 00:50:03,090
that my web UI can handle a thousand concurrent users.

1051
00:50:03,100 --> 00:50:05,850
And then I can test at the API layer that, you know, all those back

1052
00:50:05,850 --> 00:50:08,390
end calls that I'm making can also handle that additional traffic.

1053
00:50:08,915 --> 00:50:13,175
And things of that sort, and I can test like it goes on down the line, right?

1054
00:50:13,175 --> 00:50:14,895
Or if I need to make some sort of HTTP three

1055
00:50:14,895 --> 00:50:17,235
or UDP call, I can do that as well, right?

1056
00:50:17,810 --> 00:50:21,400
And it lets you just be much more creative and expressive with your tests

1057
00:50:21,430 --> 00:50:24,780
and really get down to what am I really needing to test and what do I really

1058
00:50:24,780 --> 00:50:29,230
need to see that's the thing with simulation frameworks that differentiates

1059
00:50:29,240 --> 00:50:32,030
them so much from more traditional performance testing tooling is this

1060
00:50:32,030 --> 00:50:36,390
idea of really focusing on how do I get the insight that I need as opposed

1061
00:50:36,399 --> 00:50:41,150
to how fast can I hit something and it's what differentiates them from

1062
00:50:41,150 --> 00:50:44,435
traditional like Unit and integration performance testing frameworks

1063
00:50:44,465 --> 00:50:48,565
and that it's does this break check the box versus what kind of data?

1064
00:50:48,565 --> 00:50:49,475
Can I get back from this?

1065
00:50:49,495 --> 00:50:50,944
What's my memory usage over here in the server?

1066
00:50:50,945 --> 00:50:53,585
What happens when I make this extra udp call what

1067
00:50:53,595 --> 00:50:56,485
happens when I add a probabilistic variation, right?

1068
00:50:56,485 --> 00:50:58,924
And there's like a 50 chance and we'll make this request

1069
00:50:58,934 --> 00:51:01,320
because i've Put that in my test in the workflow, right?

1070
00:51:01,560 --> 00:51:04,830
So I can add a little probabilistic bit in that like chaos testing side.

1071
00:51:05,030 --> 00:51:07,160
Or what happens when I add a mutation and it inserts some

1072
00:51:07,170 --> 00:51:10,480
malformed headers or some extra junk data at the HTTP request?

1073
00:51:10,480 --> 00:51:11,340
Does that trash us?

1074
00:51:11,350 --> 00:51:12,199
Does that really hit us?

1075
00:51:12,369 --> 00:51:13,949
I feel like a lot of the future for a lot of these

1076
00:51:13,949 --> 00:51:17,444
things is shifting from here's a bunch of data.

1077
00:51:17,775 --> 00:51:21,905
You make sense of it to hear some understanding that if you ask the right

1078
00:51:21,905 --> 00:51:25,325
question, hopefully, you know, the answer to that without just like throwing

1079
00:51:25,325 --> 00:51:28,724
a bunch of numbers at you, because as much as people can understand and

1080
00:51:28,725 --> 00:51:32,235
do complicated math, people aren't good with numbers generally, right?

1081
00:51:32,235 --> 00:51:34,085
If you just throw a whole, like, just throw a bunch of numbers

1082
00:51:34,085 --> 00:51:36,165
at me, like, I don't know, let computers do the numbers, right?

1083
00:51:36,165 --> 00:51:39,355
And so letting the computers figure out what the

1084
00:51:39,355 --> 00:51:43,415
meaningful answer or meaning of that number set is.

1085
00:51:43,910 --> 00:51:46,450
Is probably a better way to interact with any of

1086
00:51:46,450 --> 00:51:48,540
these testing tools of saying like, was it faster?

1087
00:51:48,580 --> 00:51:49,160
Yes or no.

1088
00:51:49,180 --> 00:51:49,530
Okay.

1089
00:51:49,540 --> 00:51:50,390
What does that matter?

1090
00:51:50,620 --> 00:51:51,940
Like, does it matter?

1091
00:51:51,940 --> 00:51:54,829
Because I ran this one on a Raspberry PI and that one on a, on

1092
00:51:54,829 --> 00:51:57,989
a, you know, 84 core server, like, well, like it's faster, right?

1093
00:51:57,989 --> 00:51:59,870
So that's no, like, that's not actually what we're trying to get at.

1094
00:51:59,870 --> 00:52:01,299
We're trying to see like, how much does this

1095
00:52:01,299 --> 00:52:03,430
cost or how much do I need to scale it up?

1096
00:52:03,430 --> 00:52:04,470
Or how many replicas do I need?

1097
00:52:04,470 --> 00:52:05,480
Or more.

1098
00:52:05,725 --> 00:52:08,895
Practical like business applications to things

1099
00:52:08,895 --> 00:52:12,215
outside of the code, not just here's a bunch of data.

1100
00:52:12,465 --> 00:52:14,145
Let's apply the data it's okay.

1101
00:52:14,145 --> 00:52:16,455
Well, how does that data fit into the rest of the

1102
00:52:16,455 --> 00:52:20,865
organization or a Java application versus Python versus, you

1103
00:52:20,865 --> 00:52:23,945
know, uh, uh, Rachel Ray, uh, crawling my website, right?

1104
00:52:23,945 --> 00:52:27,065
Like all those things are real world concerns that aren't just

1105
00:52:27,065 --> 00:52:27,615
numbers.

1106
00:52:27,915 --> 00:52:28,405
Exactly.

1107
00:52:28,415 --> 00:52:31,014
And that's the thing is that at the end of the day, a lot of software

1108
00:52:31,015 --> 00:52:33,775
that we write comes back down to dollar value and things of that sort.

1109
00:52:33,795 --> 00:52:37,695
And the metrics that we get, we have a glut of metrics nowadays with testing.

1110
00:52:37,705 --> 00:52:40,135
It's much more challenging because testing tooling as is right

1111
00:52:40,135 --> 00:52:43,035
now does not do as good a job of exposing just, and I mean

1112
00:52:43,035 --> 00:52:45,485
just bare line exposing metrics and numbers as it should.

1113
00:52:46,085 --> 00:52:46,825
It's kind of the first step.

1114
00:52:47,245 --> 00:52:48,575
That business logic step.

1115
00:52:49,425 --> 00:52:53,965
Is really what's key and that gets down more at least in my view to like Having

1116
00:52:53,965 --> 00:52:56,945
good integrations with reporters and things of that sort so like for hyperscale

1117
00:52:56,945 --> 00:52:59,854
it has integration with like 31 different reporting options data dog postgres

1118
00:52:59,855 --> 00:53:03,995
db, you name it and that just gives you that freedom to be able to tell that

1119
00:53:03,995 --> 00:53:08,095
business story because if i'm just outputting a bunch of Timing results to a

1120
00:53:08,095 --> 00:53:11,425
json file that doesn't tell a great story but if I can publish that to a data

1121
00:53:11,425 --> 00:53:15,655
dog dashboard and then have that dashboard set up such that it's Like you were

1122
00:53:15,655 --> 00:53:19,600
saying it shows that dollar value of like This latency is costing us this many

1123
00:53:19,600 --> 00:53:24,910
dollars this many requests Because of how much memory is using is costing us

1124
00:53:24,910 --> 00:53:30,070
this much That tells a story that's something that I can go to a organization

1125
00:53:30,070 --> 00:53:33,660
leader or something of that sort and say hey This is the dollar value.

1126
00:53:33,660 --> 00:53:37,609
This is the story that it's telling like the reason why We need

1127
00:53:37,610 --> 00:53:40,760
to optimize this cash even though rachel ray seems like one off

1128
00:53:40,790 --> 00:53:45,245
instance is because the story that's telling is that Our ui is

1129
00:53:45,245 --> 00:53:49,335
costing us money because of how much we're shipping back and forth.

1130
00:53:49,645 --> 00:53:55,205
It's instability So that it's an issue once right now But it's going to become

1131
00:53:55,205 --> 00:53:58,285
more and more of an issue as we try and ship more and more data back and forth

1132
00:53:58,285 --> 00:54:01,485
as this Application goes and as we keep following this pattern of shipping

1133
00:54:01,485 --> 00:54:05,295
these very complex documents back and forth using this cache It's going to slow

1134
00:54:05,295 --> 00:54:07,705
down other things and it's going to become more than just Rachel Rick calling.

1135
00:54:07,705 --> 00:54:10,275
It's going to be the average user hits the webpage and it

1136
00:54:10,275 --> 00:54:13,525
takes seconds to load because it has to go out to the caching.

1137
00:54:13,675 --> 00:54:14,695
Hope that it's there.

1138
00:54:14,715 --> 00:54:16,524
Hope that that document's hot and ship it back.

1139
00:54:16,905 --> 00:54:19,264
I feel like testing and security because it's harder

1140
00:54:19,264 --> 00:54:22,045
to show business value until something bad happens.

1141
00:54:22,275 --> 00:54:24,745
is always underrated and it's so hard to get

1142
00:54:24,745 --> 00:54:26,475
funding and for people to take seriously.

1143
00:54:26,985 --> 00:54:29,765
And then something bad happens and they magically want you to save

1144
00:54:29,765 --> 00:54:31,755
the world and you're like, dude, I've been trying to tell you.

1145
00:54:31,905 --> 00:54:35,765
It just sucks because being reactive costs so much more money.

1146
00:54:35,805 --> 00:54:38,794
You know, being reactive makes you so much more vulnerable,

1147
00:54:39,195 --> 00:54:42,595
but It's like you can talk to your blue in the face

1148
00:54:42,595 --> 00:54:45,895
about being proactive and people don't want to be like,

1149
00:54:45,965 --> 00:54:49,275
and that's exactly what this sort of understanding helps you to do, right?

1150
00:54:49,275 --> 00:54:52,155
Because if you have some of the frameworks and data in place, like

1151
00:54:52,164 --> 00:54:56,505
I can't tell you how many interesting problems I spent half a day.

1152
00:54:56,790 --> 00:55:00,150
Investigating how much money it cost us and realize I'm like, Oh,

1153
00:55:00,150 --> 00:55:03,440
this is only like 100 bucks like this is like as interesting as

1154
00:55:03,440 --> 00:55:07,610
a problem is that is it is not worth the time fixing and it is

1155
00:55:07,620 --> 00:55:10,739
not like we can just spend another 100 next month and it's okay.

1156
00:55:10,739 --> 00:55:13,909
I will go find another problem that's actually worth spending time on

1157
00:55:14,349 --> 00:55:16,060
Corey Quinn heads up the duck bill group.

1158
00:55:16,060 --> 00:55:17,500
And this is something that he always impresses, which is

1159
00:55:17,500 --> 00:55:19,980
like we're aiming to optimize items that are, you know,

1160
00:55:20,260 --> 00:55:24,080
millions of dollars off your AWS bill, not hundreds.

1161
00:55:24,430 --> 00:55:25,680
It's a couple hundred bucks a month.

1162
00:55:25,985 --> 00:55:28,795
That's pocket change for where you know that we're

1163
00:55:28,795 --> 00:55:31,585
looking at hitting the big items, and it's the same thing.

1164
00:55:31,675 --> 00:55:34,045
It's something that you learn when you really start pursuing optimization in

1165
00:55:34,045 --> 00:55:38,575
general, which is this idea of performance in general, which is like what is

1166
00:55:38,605 --> 00:55:42,045
the amount of effort you're putting into this task versus what is the return?

1167
00:55:42,055 --> 00:55:44,415
And can you actually quantify that right?

1168
00:55:44,435 --> 00:55:46,064
Is it really worthwhile?

1169
00:55:46,410 --> 00:55:52,220
A lot of times, like I've seen developers just go on perfectionists.

1170
00:55:52,760 --> 00:55:53,300
Just ideals.

1171
00:55:53,360 --> 00:55:55,040
Yeah, ideals get in the way.

1172
00:55:55,460 --> 00:55:58,010
And admittedly, I used to tend to that side myself.

1173
00:55:58,040 --> 00:56:00,410
I, I remember back, I was at the code school.

1174
00:56:00,410 --> 00:56:03,560
I got in a debate one time with a fellow instructor over whether or

1175
00:56:03,560 --> 00:56:06,530
not it was more important to teach four loops versus the math methods.

1176
00:56:06,530 --> 00:56:08,300
Just like, well, if they don't know for loops, they don't know basics.

1177
00:56:08,300 --> 00:56:09,770
It's just like, okay, yeah, fine, but then we

1178
00:56:09,770 --> 00:56:11,690
need to get them on board the methods as quickly.

1179
00:56:11,690 --> 00:56:13,980
It's just like, but there's, they're less performant.

1180
00:56:13,980 --> 00:56:14,910
They're not, they're not as good.

1181
00:56:14,910 --> 00:56:15,450
And it's just like.

1182
00:56:15,860 --> 00:56:17,470
It's like, who cares?

1183
00:56:17,920 --> 00:56:19,860
Like, it's so much more readable and clean.

1184
00:56:19,860 --> 00:56:21,900
And this is what's going to be expected of them at the job.

1185
00:56:21,900 --> 00:56:24,939
And that was one of the times where it was just, it was

1186
00:56:24,940 --> 00:56:27,569
this awakening of just like, the business value, right?

1187
00:56:27,950 --> 00:56:30,749
The amount of money spent and that time it takes the developer

1188
00:56:30,749 --> 00:56:34,679
to write a good, clean, well maintained, correct for loop that

1189
00:56:34,690 --> 00:56:36,930
hopefully doesn't break or have a one off error, whatever it is.

1190
00:56:37,530 --> 00:56:41,290
It is just so much more than it would take like it's so

1191
00:56:41,290 --> 00:56:44,740
much more than the cost of the iota of compute more that

1192
00:56:44,740 --> 00:56:47,510
it uses to run that map statement or that filter state.

1193
00:56:47,510 --> 00:56:50,199
And that is like you mentioned, like the readability,

1194
00:56:50,209 --> 00:56:53,020
like the maintenance of software is so expensive and.

1195
00:56:54,650 --> 00:56:57,350
And that is why, like, that is what I want this podcast to be about.

1196
00:56:57,380 --> 00:56:59,110
It's all, it's not about writing code.

1197
00:56:59,110 --> 00:57:01,010
It's not about like the fun, like cool new tools.

1198
00:57:01,010 --> 00:57:03,950
Like this is like the legacy podcast, right?

1199
00:57:03,950 --> 00:57:06,509
This is all like, Hey, the stuff that makes money, right?

1200
00:57:06,509 --> 00:57:09,839
Like that is, that is the stuff that in so many developers, they get into it.

1201
00:57:09,839 --> 00:57:13,080
Cause they're like, I see all this money that I get and get paid

1202
00:57:13,089 --> 00:57:17,330
by being a developer, but they never want to boil their own.

1203
00:57:18,065 --> 00:57:20,915
Like job function down to a dollar amount, right?

1204
00:57:20,915 --> 00:57:22,485
They say like all the other people, like the sales

1205
00:57:22,505 --> 00:57:24,355
people, I can buy a dollar amount on the marketing people.

1206
00:57:24,355 --> 00:57:27,185
I can put a dollar amount on legal, all these other like functions in

1207
00:57:27,185 --> 00:57:30,384
the organization they can look at and say like, Oh, those all are here.

1208
00:57:30,404 --> 00:57:34,145
Cause they cost or make money in some way, but I'm the developer.

1209
00:57:34,165 --> 00:57:37,175
And I feel like this is hard thing where, yeah, like

1210
00:57:37,175 --> 00:57:38,985
developers need to just open their eyes and say, Oh,

1211
00:57:38,995 --> 00:57:41,965
how much money is the feature you're working on worth?

1212
00:57:42,595 --> 00:57:43,745
And how much is it worth?

1213
00:57:44,035 --> 00:57:47,675
In a year or two or two, you know, like, like that is where you start to

1214
00:57:47,785 --> 00:57:51,825
extrapolate it out and say, now maintenance matters and now performance matters.

1215
00:57:51,825 --> 00:57:55,555
And now all that other stuff matters more, the longer it exists.

1216
00:57:55,654 --> 00:58:00,964
I think we're in this realm of like the toxic 10 times engineer,

1217
00:58:00,995 --> 00:58:04,915
like everything is so technical and I'm more technical than you.

1218
00:58:04,915 --> 00:58:07,985
And look at how I wrote what could have been.

1219
00:58:08,580 --> 00:58:12,500
Three lines of code and one line of code and writing code as fast as

1220
00:58:12,500 --> 00:58:15,740
possible and not understanding the business impact or just the way

1221
00:58:15,740 --> 00:58:19,600
that it impacts a huge code base in general, like we are lacking giving

1222
00:58:19,600 --> 00:58:22,990
people context and we are lacking forcing engineers to be able to

1223
00:58:22,990 --> 00:58:27,769
understand business stakeholders and the fact that what you build, right?

1224
00:58:27,770 --> 00:58:31,905
So like, if you're just worried about flexing tech it Technically,

1225
00:58:32,205 --> 00:58:34,845
you're not even making sure you're building the right thing.

1226
00:58:34,855 --> 00:58:37,595
You're not making sure that you're building a thing that brings value.

1227
00:58:37,645 --> 00:58:39,545
They just want to flex technically.

1228
00:58:39,585 --> 00:58:41,605
Well, and we've always praised the firefighters, right?

1229
00:58:41,605 --> 00:58:44,614
We've always been reactive when he always said, Oh, wow, you fixed that outage.

1230
00:58:44,614 --> 00:58:44,924
Couldn't.

1231
00:58:44,935 --> 00:58:45,585
Congratulations.

1232
00:58:45,585 --> 00:58:46,014
Like, yeah.

1233
00:58:46,165 --> 00:58:48,375
But the person over that's like, here's the emails I spent

1234
00:58:48,635 --> 00:58:51,194
six months ago that said we're going to get into this problem.

1235
00:58:51,394 --> 00:58:51,574
I'm

1236
00:58:51,574 --> 00:58:53,794
the six months ago person who's like, bro,

1237
00:58:53,854 --> 00:58:55,525
like, I'm not just, but think about it.

1238
00:58:55,980 --> 00:58:57,150
It's a team sport.

1239
00:58:57,370 --> 00:59:00,030
Just because you wrote the code doesn't mean you're fixing it.

1240
00:59:00,040 --> 00:59:03,230
So if it's shitty code, or if it's very unreadable,

1241
00:59:03,560 --> 00:59:06,410
when somebody else has to come up behind you on call.

1242
00:59:06,970 --> 00:59:10,050
and try to figure out what is wrong here, you're

1243
00:59:10,050 --> 00:59:12,620
costing engineering hours in that moment, right?

1244
00:59:13,000 --> 00:59:16,560
Like, it's not just about how fast you can write it, but is it going to cause

1245
00:59:16,590 --> 00:59:19,869
other people to, like, and just like Ada was talking about earlier, like,

1246
00:59:20,200 --> 00:59:24,329
when you re architect things, right, you're asking for engineering hours.

1247
00:59:24,689 --> 00:59:27,180
So when you go and rebuild something, build it right.

1248
00:59:27,595 --> 00:59:31,615
Take in the context and then go back and make sure that you're

1249
00:59:31,615 --> 00:59:35,075
building it in a flexible way that will scale and that is

1250
00:59:35,125 --> 00:59:38,535
right for what this product is now and what it's going to be.

1251
00:59:39,240 --> 00:59:41,550
Moving forward and people don't take that in and then

1252
00:59:41,550 --> 00:59:43,510
they're like, where did we get all this technical debt, bro?

1253
00:59:43,510 --> 00:59:44,510
You built it into it.

1254
00:59:44,520 --> 00:59:45,360
Like, you know what I mean?

1255
00:59:45,360 --> 00:59:49,310
Like it's you can't always account for the future But

1256
00:59:49,769 --> 00:59:52,409
with where we are now and the amount of technology and

1257
00:59:52,410 --> 00:59:55,330
how much infrastructure grew you can at least try, right?

1258
00:59:55,330 --> 00:59:59,310
You can at least and we don't put any emphasis on that as a developer It's

1259
00:59:59,310 --> 01:00:03,450
about like how fast can you build it yada yada yada, but it's not enough

1260
01:00:03,460 --> 01:00:08,245
foresight like We need to be able to be the people that have context,

1261
01:00:08,245 --> 01:00:11,575
bring in the requirements, talk to stakeholders, figure out your business

1262
01:00:11,595 --> 01:00:15,075
value and how to communicate that to your leadership and stakeholders.

1263
01:00:15,465 --> 01:00:18,745
And we have lost that as engineers because, but look,

1264
01:00:18,755 --> 01:00:22,094
bro, I can write 500 lines of code in like an hour and.

1265
01:00:22,625 --> 01:00:26,115
Completely burn things down because I tried it and I built it fast.

1266
01:00:27,905 --> 01:00:28,855
That's the thing.

1267
01:00:28,895 --> 01:00:29,565
That's the thing.

1268
01:00:29,605 --> 01:00:31,204
And it's just like, this is something that,

1269
01:00:31,315 --> 01:00:33,705
okay, we're getting into spicy take time.

1270
01:00:34,365 --> 01:00:39,004
There's, there's a two pronged side of this, which is that one, we have

1271
01:00:39,855 --> 01:00:43,355
Glorified the writing of code itself without and what most people don't

1272
01:00:43,355 --> 01:00:48,715
realize is that every line of code that you write has a cost it is debt

1273
01:00:49,005 --> 01:00:54,884
that you are writing and when you write a bunch of stuff quickly and

1274
01:00:54,885 --> 01:01:00,715
make a bunch of decisions it'll work for now you are not just solving

1275
01:01:00,715 --> 01:01:04,905
something you're taking out a loan against If it's just you your future

1276
01:01:04,905 --> 01:01:09,485
self, but if it's not just you the entire rest of the org potentially the

1277
01:01:09,485 --> 01:01:13,635
rest of the business and at some point you are going to have to pay that

1278
01:01:13,635 --> 01:01:17,415
debt and you had better really hope that you get to pay that debt before

1279
01:01:17,515 --> 01:01:20,505
things blow up before things get big because otherwise you end up with

1280
01:01:20,514 --> 01:01:23,345
things like myspace where they literally had to get put out of business

1281
01:01:23,375 --> 01:01:26,705
because they could not rearchitect their app to to beat the competition

1282
01:01:26,885 --> 01:01:30,755
I just I love you so much, like, you just be like, you just, you

1283
01:01:30,795 --> 01:01:34,305
understand my heart, like, just, dude, like, like, you sit in

1284
01:01:34,495 --> 01:01:36,994
rooms, and you're just sitting there arguing with, like, three

1285
01:01:36,994 --> 01:01:39,185
different engineering managers, and you're just like, bro, like,

1286
01:01:39,324 --> 01:01:44,764
You can give me two extra weeks to write this now, get it okay.

1287
01:01:45,000 --> 01:01:45,800
Like get it done.

1288
01:01:45,800 --> 01:01:49,430
Well, or yeah, I can sign this out in two weeks, but we're

1289
01:01:49,430 --> 01:01:52,770
going to be back here in two months and it's going to be bad.

1290
01:01:52,790 --> 01:01:53,890
It's going to be miserable.

1291
01:01:53,920 --> 01:01:54,009
And

1292
01:01:54,009 --> 01:01:56,009
think about the amount of engineering hours.

1293
01:01:56,009 --> 01:01:58,540
If you do a double, like if there's 10 engineers doing it, right.

1294
01:01:58,549 --> 01:01:59,999
Think about how much engineers are paid.

1295
01:02:00,020 --> 01:02:02,220
Think about the hours you're going to take to redo it.

1296
01:02:02,239 --> 01:02:04,570
And to like, that's so much money.

1297
01:02:04,770 --> 01:02:08,680
Or just like when people try to tell you that like the cloud is

1298
01:02:09,260 --> 01:02:11,610
like certain parts of the cloud are more expensive than on prem.

1299
01:02:11,700 --> 01:02:13,390
Some of them, they really are, right?

1300
01:02:13,399 --> 01:02:15,949
But they don't count in like the people cost.

1301
01:02:15,960 --> 01:02:21,100
So like if you have to hire a DBA or multiple DBAs, that also costs money.

1302
01:02:21,100 --> 01:02:24,080
So you have to weigh them in a actual like

1303
01:02:24,135 --> 01:02:25,625
You have to really think about it, right?

1304
01:02:25,625 --> 01:02:29,165
Like in way, all of the costs and the technical debt and everything.

1305
01:02:29,165 --> 01:02:32,325
So sometimes like people don't even realize how expensive

1306
01:02:32,325 --> 01:02:34,504
cloud is going to get because they didn't take everything into

1307
01:02:34,505 --> 01:02:37,985
consideration, but then they just automatically assume on premise

1308
01:02:37,995 --> 01:02:40,625
cheaper because they're only thinking about hardware, right?

1309
01:02:40,635 --> 01:02:43,014
So it's like, there's just so many technical,

1310
01:02:43,014 --> 01:02:46,695
like gives and takes that people forget to do and.

1311
01:02:46,985 --> 01:02:51,925
We have just incentivized the work fast and fail or work.

1312
01:02:51,985 --> 01:02:52,375
What is it?

1313
01:02:52,385 --> 01:02:52,965
The fail?

1314
01:02:52,975 --> 01:02:53,665
What is that stupid thing?

1315
01:02:53,785 --> 01:02:53,975
Move fast

1316
01:02:53,995 --> 01:02:55,015
and break things?

1317
01:02:55,154 --> 01:02:55,524
Yeah.

1318
01:02:55,565 --> 01:02:58,625
And like, which sometimes you do have to break stuff

1319
01:02:58,625 --> 01:03:01,474
to learn how they work, but you don't have to just be

1320
01:03:01,475 --> 01:03:05,735
completely obnoxious and just a bull in a tie in a shop.

1321
01:03:05,745 --> 01:03:08,595
This, like what you said earlier, this is a creative art.

1322
01:03:08,605 --> 01:03:10,495
Like it is almost an art, you know what I mean?

1323
01:03:10,845 --> 01:03:13,455
And it is very much problem solving and see how things work.

1324
01:03:13,455 --> 01:03:15,925
And you can, you can nicely break things.

1325
01:03:16,300 --> 01:03:16,960
You know what I mean?

1326
01:03:17,000 --> 01:03:19,550
Like you can break things in a way where you're learning and

1327
01:03:19,550 --> 01:03:22,390
you're like, okay, if I like put this print statement here and

1328
01:03:22,390 --> 01:03:25,740
then like, you know, common out this line of code, but you don't

1329
01:03:25,740 --> 01:03:28,150
have to take a whole thing down just because you're an idiot.

1330
01:03:28,210 --> 01:03:32,020
Like, it's the difference between like building, making a sculpture and

1331
01:03:32,099 --> 01:03:34,529
taking the time to make sure that it's, you know, placed well, that you

1332
01:03:34,530 --> 01:03:36,890
aren't invading your, your fellow neighbor's properties and stuff like that.

1333
01:03:36,890 --> 01:03:38,800
And just building a sculpture and putting down everybody else's.

1334
01:03:39,155 --> 01:03:40,105
Houses around that like that.

1335
01:03:40,165 --> 01:03:44,145
We have a guy out here in the neighborhood that does metal sculpting, and this

1336
01:03:44,145 --> 01:03:46,965
is an HOA neighborhood, but he does it in such a way where the HOA is completely

1337
01:03:46,965 --> 01:03:49,815
unbothered by it, even though he shows it all out there, because he is so

1338
01:03:49,815 --> 01:03:53,684
careful about how he constructs things, and he's so conscious about when he

1339
01:03:53,685 --> 01:03:57,275
does it, what time of night, how much noise he's making, all these other things.

1340
01:03:57,295 --> 01:04:00,615
And it is, good lord, if developers exercised that amount of general

1341
01:04:00,615 --> 01:04:03,615
situational awareness when they built things, we'd be in such a better state.

1342
01:04:04,075 --> 01:04:06,845
And when you all end up in on call or something

1343
01:04:06,845 --> 01:04:08,545
gets messed up, who do you want to help?

1344
01:04:08,565 --> 01:04:12,255
The dude who is considerate or the dude who breaks stuff

1345
01:04:12,264 --> 01:04:14,495
and is just a jerk and thinks they know everything?

1346
01:04:14,554 --> 01:04:14,914
Right?

1347
01:04:14,915 --> 01:04:17,295
Like, who are you going to stay on that call with?

1348
01:04:17,304 --> 01:04:18,105
Who are you going to?

1349
01:04:18,144 --> 01:04:18,625
You know what I mean?

1350
01:04:18,655 --> 01:04:19,935
It is a team sport.

1351
01:04:19,944 --> 01:04:21,005
You need each other.

1352
01:04:21,384 --> 01:04:23,624
I've exited calls because of individuals like that because

1353
01:04:23,624 --> 01:04:25,685
it's just like, okay, I'm going to come back once we've.

1354
01:04:26,350 --> 01:04:29,940
We need a little bit more time to let that, like, simmer a little bit.

1355
01:04:30,450 --> 01:04:31,360
We need some time.

1356
01:04:31,730 --> 01:04:33,170
There's a couple other people here on the call.

1357
01:04:33,170 --> 01:04:34,130
I'm going to take a break real quick

1358
01:04:34,130 --> 01:04:36,070
because I've got another thing to attend to.

1359
01:04:36,070 --> 01:04:38,819
I'm going to come back, and we're going to handle this like mature adults.

1360
01:04:38,989 --> 01:04:40,619
I think eventually we're going to get to the

1361
01:04:40,619 --> 01:04:42,559
point where these things make us better engineers.

1362
01:04:42,570 --> 01:04:44,539
Like, we know what makes us better engineers, and I

1363
01:04:44,570 --> 01:04:48,240
think eventually that will be, you know, looked on well.

1364
01:04:48,260 --> 01:04:51,100
But honestly, like, okay, low key, not to get too spicy.

1365
01:04:51,150 --> 01:04:54,690
I just hope that Dodge goes so wrong that we can get rid of, like, can I just,

1366
01:04:54,710 --> 01:04:57,500
I want something to point to, to be like, did you, did you see it though?

1367
01:04:57,590 --> 01:05:03,340
Cause like, I'm so tired of existing in toxic tech, bro engineering.

1368
01:05:03,359 --> 01:05:06,539
And just, you know what I'm like, we all know we've all built things and we

1369
01:05:06,540 --> 01:05:10,620
know that you need the emotional intelligence and you need communication skills.

1370
01:05:10,860 --> 01:05:12,150
And leaders can tell us this.

1371
01:05:12,150 --> 01:05:15,180
How many times has Kelsey and Angie and all these amazing things.

1372
01:05:15,295 --> 01:05:18,245
People put these in talks and told the world that this is what we need.

1373
01:05:18,245 --> 01:05:21,535
And it's important to building technology and still we're here.

1374
01:05:22,635 --> 01:05:26,235
So I'm just like, what level of like foreground and find out,

1375
01:05:26,235 --> 01:05:30,724
do we need to do for it to trickle down into like hiring?

1376
01:05:32,234 --> 01:05:33,669
That's the other thing too, is it's just like.

1377
01:05:34,210 --> 01:05:37,710
The other part is like the VC capitalism thing, which is where the Elon Musk

1378
01:05:37,720 --> 01:05:40,970
bro side really comes in, which is the, ah, we just need to, you know, move fast

1379
01:05:40,970 --> 01:05:44,100
and break things, we need to scale up and these, it's the emphasis on features.

1380
01:05:44,160 --> 01:05:48,650
I am so sick of new features and not just the AI stuff.

1381
01:05:48,660 --> 01:05:50,250
All the AI stuff is the worst offender.

1382
01:05:50,520 --> 01:05:52,220
New features being pushed down.

1383
01:05:52,875 --> 01:05:58,535
On upon me that I literally have an entire studio in the other bedroom

1384
01:05:58,645 --> 01:06:02,134
That is two thousands kit only is completely disconnected from the

1385
01:06:02,134 --> 01:06:04,484
internet If I want to install something I have to come over to another

1386
01:06:04,485 --> 01:06:09,930
computer insert a usb drive copy the the installer That you know is from

1387
01:06:09,950 --> 01:06:13,550
that I download from whatever vst plugin maker that I may want to use

1388
01:06:13,550 --> 01:06:16,740
or things like that So if I want serum, I have to go over to serum's

1389
01:06:16,770 --> 01:06:19,840
website download put on the usbs to come over and install it and it like

1390
01:06:19,840 --> 01:06:22,540
it makes this whole thing where It's just like I don't want your updates.

1391
01:06:22,739 --> 01:06:27,130
I don't want Roll into cloud pestering me to install or to log

1392
01:06:27,140 --> 01:06:30,780
back in because it can't remember that I logged in 16 minutes ago.

1393
01:06:31,060 --> 01:06:34,560
I have an old iMac and I gave it to my kid and I was like, never touch

1394
01:06:34,560 --> 01:06:37,420
the update button and then he did one day and I was like, oh gosh,

1395
01:06:39,450 --> 01:06:40,310
I was like, don't do it.

1396
01:06:40,660 --> 01:06:43,900
But okay, do you ever watch those VC dudes in the Elons and then

1397
01:06:43,900 --> 01:06:47,520
just be like, Tell me you've built some cool stuff for two seconds

1398
01:06:47,520 --> 01:06:50,200
and you've never maintained anything in a real environment.

1399
01:06:50,220 --> 01:06:50,760
You know what I mean?

1400
01:06:51,590 --> 01:06:53,919
Have we all just been waiting for them to figure it out?

1401
01:06:53,919 --> 01:06:54,680
Like, you know, just

1402
01:06:54,910 --> 01:07:00,790
in, in many, many places, especially the last 15, 20 years, you know, post.

1403
01:07:01,329 --> 01:07:05,519
com boom, sort of like this new wave of cloud, people have jumped.

1404
01:07:06,010 --> 01:07:10,620
Jobs and technology so frequently that they haven't had to maintain anything

1405
01:07:10,630 --> 01:07:14,150
me and my friend were talking about that dude Also, okay.

1406
01:07:14,150 --> 01:07:16,990
There's a different level of like tech bro confidence, right?

1407
01:07:16,990 --> 01:07:21,859
Like they will come in they will delete 16 lines of something do

1408
01:07:21,860 --> 01:07:26,630
some other stuff and with entire confidence And not even think about

1409
01:07:26,630 --> 01:07:29,680
the future, because for one, if they just pretend to be confident,

1410
01:07:30,050 --> 01:07:33,590
the ramp up period for so long was like, what, six months to a year?

1411
01:07:33,590 --> 01:07:35,989
So they weren't expected to know anything for six months to a year.

1412
01:07:36,240 --> 01:07:38,229
Then they just had to survive for like a year and

1413
01:07:38,230 --> 01:07:39,979
they were already job hopping to the next job.

1414
01:07:39,990 --> 01:07:40,700
You know what I mean?

1415
01:07:40,990 --> 01:07:43,889
So they like, sometimes they weren't even actually like, we

1416
01:07:43,889 --> 01:07:46,320
don't even know if they were good at like the first two jobs.

1417
01:07:46,330 --> 01:07:47,590
Like, you know what I mean?

1418
01:07:48,120 --> 01:07:50,630
And then they're just like in there, like advising about stuff.

1419
01:07:50,660 --> 01:07:53,500
And like, sometimes I walked into rooms and people will

1420
01:07:53,500 --> 01:07:57,160
like, as an essay, these are all people that supposedly

1421
01:07:57,160 --> 01:08:00,170
have been in, you know, industry for 15 to 20 years.

1422
01:08:00,480 --> 01:08:02,349
And then like senior essays or like L6s or

1423
01:08:02,350 --> 01:08:04,829
L7s would walk in and tell you something.

1424
01:08:04,829 --> 01:08:07,190
And I'm like, bro, have you ever built anything in production?

1425
01:08:07,420 --> 01:08:08,380
That's a scary feeling.

1426
01:08:08,470 --> 01:08:09,270
Oh, I've had that.

1427
01:08:10,030 --> 01:08:13,240
But you're over here telling so many people how to build

1428
01:08:13,240 --> 01:08:16,910
things with this very like Let's use a Cassandra database.

1429
01:08:17,890 --> 01:08:18,959
I used to work on Cassandra.

1430
01:08:19,170 --> 01:08:19,939
Oh my God.

1431
01:08:20,210 --> 01:08:21,780
Don't get me started on the scaling of it.

1432
01:08:23,220 --> 01:08:25,399
Oh, everybody thinks Noah's scale is fun

1433
01:08:25,399 --> 01:08:26,900
until they have to actually maintain on.

1434
01:08:27,460 --> 01:08:28,630
We are already over time.

1435
01:08:28,660 --> 01:08:30,080
Ada, thank you so much for coming on the show.

1436
01:08:30,080 --> 01:08:32,880
Where should people find you to hear more of your spicy

1437
01:08:32,880 --> 01:08:33,300
takes?

1438
01:08:34,070 --> 01:08:34,970
I believe it's adalund.

1439
01:08:34,970 --> 01:08:35,850
dev on Blue Sky.

1440
01:08:35,900 --> 01:08:37,690
That's where you want to find me for the most part.

1441
01:08:37,740 --> 01:08:39,710
My github is slash adalund.

1442
01:08:39,760 --> 01:08:40,610
That's where you can find me there.

1443
01:08:40,610 --> 01:08:42,340
Those are really the two places I'm at nowadays.

1444
01:08:42,399 --> 01:08:43,899
And I just want to say thank you so much for this.

1445
01:08:43,899 --> 01:08:45,899
Yeah, Autumn, I'm with y'all.

1446
01:08:45,910 --> 01:08:49,499
We living through the consequences of your actions is really what it is.

1447
01:08:49,939 --> 01:08:54,170
I'm so excited to finally virtually like meet you cause like, look

1448
01:08:54,210 --> 01:08:57,720
I have like been one of her biggest fans for like years, okay?

1449
01:08:57,720 --> 01:09:00,790
Like just The spicy takes, like I live for them.

1450
01:09:01,090 --> 01:09:03,610
And, and you are in the, uh, we have a starter

1451
01:09:03,610 --> 01:09:05,830
pack on Blue Sky with guests on the show.

1452
01:09:05,830 --> 01:09:07,780
So if anyone wants to, we're you're already in there.

1453
01:09:07,840 --> 01:09:09,730
We're recording this a couple weeks before it comes out, but Yeah.

1454
01:09:09,730 --> 01:09:13,450
So if people are on Blue Sky, uh, f afo fm, there

1455
01:09:13,450 --> 01:09:15,070
is a starter pack that has all of our guests.

1456
01:09:15,070 --> 01:09:16,720
We're, I think we're gonna break it up by year.

1457
01:09:16,720 --> 01:09:18,160
'cause there is a limit.

1458
01:09:18,340 --> 01:09:20,410
We can't scale it past 150 or whatever.

1459
01:09:20,410 --> 01:09:20,950
So I

1460
01:09:20,950 --> 01:09:22,540
just, I, I love that feature.

1461
01:09:22,540 --> 01:09:23,800
Talk about things that are actually like.

1462
01:09:24,100 --> 01:09:26,350
Thoughtful and we'll put together a starter pack.

1463
01:09:26,420 --> 01:09:28,310
Like blue sky has been a nice experience.

1464
01:09:28,330 --> 01:09:28,520
And

1465
01:09:28,530 --> 01:09:32,140
also like, I also hear the people that are abusing it in various ways.

1466
01:09:32,140 --> 01:09:34,270
And it's like, you can't, no feature ever.

1467
01:09:34,840 --> 01:09:37,250
We all know that you build software and you can

1468
01:09:37,250 --> 01:09:39,104
never intend how people are going to use it.

1469
01:09:39,104 --> 01:09:40,339
We'll use it however they

1470
01:09:40,340 --> 01:09:42,219
want to with whatever intentions they have.

1471
01:09:42,219 --> 01:09:45,270
And that is unfortunate, but we are trying to use it for good.

1472
01:09:45,980 --> 01:09:46,910
Yeah, exactly.

1473
01:09:46,930 --> 01:09:47,910
It's like the performance testing

1474
01:09:47,910 --> 01:09:50,480
framework that can be used to DDoS the site.

1475
01:09:50,700 --> 01:09:53,016
That is, that is exactly how locusts exhibit you.

1476
01:09:53,016 --> 01:09:55,010
That is consequences of your actions, right?

1477
01:09:55,050 --> 01:09:58,560
And it's one of the things where it's just like, but yeah, thank you for this.

1478
01:09:58,570 --> 01:09:59,829
I'm so glad I get to meet y'all.

1479
01:10:00,150 --> 01:10:01,369
I'm so glad I got to meet you.

1480
01:10:01,820 --> 01:10:02,070
Thank

1481
01:10:02,070 --> 01:10:04,060
you everyone for tuning into this episode.

1482
01:10:04,260 --> 01:10:07,330
Your homework for this, this week is to please rate the show

1483
01:10:07,330 --> 01:10:10,170
and leave a comment with whatever you developed out of spite.

1484
01:10:10,200 --> 01:10:11,129
We would love to see

1485
01:10:12,710 --> 01:10:15,280
like your best programming memes.

1486
01:10:15,320 --> 01:10:17,649
Cause we need, like, I think we need like a, a

1487
01:10:17,650 --> 01:10:21,260
meme competition of like your best nerdy meme.

1488
01:10:22,135 --> 01:10:25,635
I'm immediately going to go for Emperor Palpatine's let the hate flow through.

1489
01:10:27,965 --> 01:10:29,305
This is why y'all follow Ada.

1490
01:10:29,345 --> 01:10:30,195
Okay, Gem.

1491
01:10:31,715 --> 01:10:32,374
so much, everyone.

1492
01:10:32,374 --> 01:10:33,914
Thank you, Ada, for coming on the show.

1493
01:10:33,975 --> 01:10:34,764
We'll talk to you all next week.

1494
01:10:34,765 --> 01:10:35,225
Y'all take

1495
01:10:35,235 --> 01:10:35,605
care.

1496
01:10:35,655 --> 01:10:36,025
Later.

1497
01:10:51,514 --> 01:10:54,545
Thank you for listening to this episode of Fork Around and Find Out.

1498
01:10:54,824 --> 01:10:56,974
If you like this show, please consider sharing it with

1499
01:10:56,975 --> 01:11:00,154
a friend, a coworker, a family member, or even an enemy.

1500
01:11:00,264 --> 01:11:02,365
However we get the word out about this show

1501
01:11:02,575 --> 01:11:04,775
helps it to become sustainable for the long term.

1502
01:11:05,070 --> 01:11:08,740
If you want to sponsor this show, please go to fafo.

1503
01:11:08,790 --> 01:11:12,320
fm slash sponsor and reach out to us there about what

1504
01:11:12,320 --> 01:11:14,520
you're interested in sponsoring and how we can help.

1505
01:11:15,790 --> 01:11:18,980
We hope your systems stay available and your pagers stay quiet.

1506
01:11:19,499 --> 01:11:20,669
We'll see you again next time.