1
00:00:06,599 --> 00:00:10,080
Speaker 1: Hello, everyone, thanks for coming to another episode of Adventures

2
00:00:10,080 --> 00:00:14,000
in Angul There. Today we have Aaron Frost, your host.

3
00:00:14,439 --> 00:00:17,199
I work with Hero Devez and with Angie Koon. And

4
00:00:17,239 --> 00:00:20,039
on the panel we have Joseph Eames.

5
00:00:20,440 --> 00:00:22,960
Speaker 2: Hello, I also refer to myself am the third person

6
00:00:23,280 --> 00:00:27,039
Joseph Imes here and the CEO of thanks to Happy

7
00:00:27,039 --> 00:00:27,480
to be here.

8
00:00:27,839 --> 00:00:29,239
Speaker 3: We have Jennifer Widella.

9
00:00:29,559 --> 00:00:31,079
Speaker 4: Do I have to say something witty and in the

10
00:00:31,079 --> 00:00:31,960
third person.

11
00:00:32,000 --> 00:00:35,799
Speaker 3: Third person's optional whitty? We already knew you were. What

12
00:00:35,920 --> 00:00:36,399
do you require?

13
00:00:36,520 --> 00:00:40,119
Speaker 4: Okay? Well, I am a JavaScript developer at a consulting

14
00:00:40,159 --> 00:00:42,920
company called the Toove. And we'll make fun of Aaron

15
00:00:42,960 --> 00:00:43,759
as much as I can.

16
00:00:44,240 --> 00:00:47,600
Speaker 1: Why are you talking about the ka I thought you were.

17
00:00:48,479 --> 00:00:51,159
Speaker 4: I will take the whole podcast just to talk about kombucha.

18
00:00:51,960 --> 00:00:53,759
And I actually just bottled a new batch and it's

19
00:00:53,759 --> 00:00:56,000
extra fermented and pineapple Serrano.

20
00:00:55,679 --> 00:00:57,719
Speaker 3: Flavored pineapple serrano.

21
00:00:58,119 --> 00:01:00,719
Speaker 4: Oh yeah, Like I gave it to my my girlfriend's

22
00:01:00,719 --> 00:01:03,439
like husbands like spat it out his nose because he

23
00:01:03,479 --> 00:01:05,439
wasn't prepared for the spice. It was hilarious.

24
00:01:05,799 --> 00:01:07,519
Speaker 3: Well that's amazing. That sounds really good.

25
00:01:07,719 --> 00:01:11,799
Speaker 1: And then we have a special guest today. He comes

26
00:01:11,840 --> 00:01:15,319
from US from San Jose area, Moum, New area. His

27
00:01:15,359 --> 00:01:18,599
name is Alex Eagle and he's from the Angular team.

28
00:01:19,040 --> 00:01:22,200
He works on CELI. I'm gonna let him introduce himself, Alex,

29
00:01:22,200 --> 00:01:23,280
go ahead, Hi.

30
00:01:23,439 --> 00:01:27,200
Speaker 3: Yeah, Alex Eagle is a third person? Can I use

31
00:01:27,239 --> 00:01:29,920
the royal we? Is that confusing? That might be confusing?

32
00:01:30,280 --> 00:01:35,480
Especially language? Good? Yeah, So we work on it was

33
00:01:35,560 --> 00:01:38,879
CLI team. Yeah, I've been to Google for over ten years.

34
00:01:38,879 --> 00:01:40,519
That we're working on Angler for like four and a

35
00:01:40,560 --> 00:01:46,319
half years and recently working mostly building test developer tooling

36
00:01:46,400 --> 00:01:48,879
kind of stuff. So I've been leaving Cli for the

37
00:01:48,920 --> 00:01:52,959
last six months or so, and I've been working on

38
00:01:53,000 --> 00:01:55,159
Basil for a couple of years, which I think we're

39
00:01:55,159 --> 00:01:57,760
going to talk about. Yeah, yeah, let's talk about it.

40
00:01:58,280 --> 00:02:00,680
So I tweeted last night that you need to be

41
00:02:00,760 --> 00:02:03,239
wary of people that have first names for last names.

42
00:02:03,439 --> 00:02:06,280
Is Eagle a first name? I was really tempted to

43
00:02:06,319 --> 00:02:08,800
reply to that last night and say like like this,

44
00:02:08,800 --> 00:02:11,840
this seems unkind to someone, and of course James Henry

45
00:02:12,199 --> 00:02:15,280
for god, No, I don't feel like anything to contribute

46
00:02:15,319 --> 00:02:16,719
to that threat. As far as I know, Eagle is

47
00:02:16,759 --> 00:02:17,520
only a last name.

48
00:02:17,599 --> 00:02:20,879
Speaker 1: Eagle's only it's pretty cool nickname, though it could be

49
00:02:20,919 --> 00:02:21,919
a person name is on sain.

50
00:02:22,080 --> 00:02:24,840
Speaker 3: People may need to be worried of you. You're you're

51
00:02:24,919 --> 00:02:26,280
in the gray area, right.

52
00:02:26,759 --> 00:02:29,159
Speaker 5: It's a title. It's not a first or last name.

53
00:02:29,159 --> 00:02:29,680
It's a title.

54
00:02:30,000 --> 00:02:35,039
Speaker 3: Alex the Eagle, the Eagle Squire, the third yep, so Alex.

55
00:02:35,599 --> 00:02:39,280
Speaker 1: We've been hearing about Basil for less time than we've

56
00:02:39,280 --> 00:02:42,680
been hearing about IVY, but still a long time. Yeah,

57
00:02:42,919 --> 00:02:46,479
we all know IVY fixes everything, but Basil fixes a

58
00:02:46,520 --> 00:02:47,599
couple other things.

59
00:02:47,800 --> 00:02:50,639
Speaker 3: So so what's kind of a state of Basil right

60
00:02:50,719 --> 00:02:53,319
right now? So the state of it is we launched

61
00:02:53,400 --> 00:02:57,000
an opt in preview at ng CONF, which is coincidentally

62
00:02:57,039 --> 00:02:59,120
the same thing that IVY is in. So yeah, there's

63
00:02:59,120 --> 00:03:01,960
two big efforts that are both at a similar stage

64
00:03:02,000 --> 00:03:04,080
in their in their in their life cycle, which is

65
00:03:04,080 --> 00:03:08,639
that they're big disruptive changes. Well disruptive in terms of

66
00:03:08,840 --> 00:03:11,240
there's a lot changing in angular Obviously, both of these

67
00:03:11,240 --> 00:03:13,680
we want to land without disruption for users, and so

68
00:03:13,719 --> 00:03:17,960
the hard thing is to go like to vet whether

69
00:03:18,120 --> 00:03:20,719
whether it works for everybody's applications before we try to

70
00:03:20,759 --> 00:03:22,960
roll it out widely. So that's true for iv and

71
00:03:23,000 --> 00:03:25,159
we're right. We've we've asked people to opt into IVY

72
00:03:25,199 --> 00:03:27,479
and tell us if it breaks their up. For Basil,

73
00:03:27,879 --> 00:03:31,479
it's similarly possible to opt in and use BASIL today.

74
00:03:31,879 --> 00:03:33,520
But I think you know what we'll spend most of

75
00:03:33,520 --> 00:03:35,879
our time talking about is what why would you want

76
00:03:35,879 --> 00:03:38,319
to do that IVY? As you said, like, there's this

77
00:03:38,400 --> 00:03:40,800
perception that it does. It does solve a bunch of things,

78
00:03:40,879 --> 00:03:42,680
and it also unlocks our team to be able to

79
00:03:42,719 --> 00:03:45,039
do a bunch of things. Basils is solving a more

80
00:03:45,080 --> 00:03:49,960
specific problem, which is largely enterprise scale building really big

81
00:03:50,000 --> 00:03:53,479
apps with lots of engineers and lots of lots of code.

82
00:03:53,759 --> 00:03:56,759
Speaker 4: What's your elevator pitch? Why should we opt in today?

83
00:03:57,479 --> 00:04:01,000
Speaker 3: So I think the elevator pitch is mostly directed that

84
00:04:01,000 --> 00:04:03,800
people have a specific problem, and so if you don't

85
00:04:03,840 --> 00:04:06,199
have that problem, then I don't necessarily want to get

86
00:04:06,240 --> 00:04:10,120
everybody to use a thing that adds, you know, a

87
00:04:10,240 --> 00:04:13,000
risk for you and doesn't doesn't have upside. So the

88
00:04:13,080 --> 00:04:16,000
upside is that Basil is a different approach to how

89
00:04:16,040 --> 00:04:18,360
to orchestrate all of the work that needs to happen

90
00:04:18,399 --> 00:04:22,680
when you run your building test, and it decouples all

91
00:04:22,720 --> 00:04:25,519
of the different tools in a way that is sort

92
00:04:25,560 --> 00:04:27,680
of like the Unix philosophy. It is like each of

93
00:04:27,680 --> 00:04:29,920
these tools can be run independently, and then we just

94
00:04:29,920 --> 00:04:32,319
need like an equivalent of the Unix pipe, which lets

95
00:04:32,319 --> 00:04:33,920
me take centered output of one tool and put it

96
00:04:33,959 --> 00:04:37,519
into sandard input of the next. So that means the elevator,

97
00:04:37,519 --> 00:04:39,480
I mean, the elevator pitch is really we want to

98
00:04:39,480 --> 00:04:41,800
make your building test a lot faster, and we think

99
00:04:41,879 --> 00:04:44,040
that this is an area where the CLI hasn't been

100
00:04:44,079 --> 00:04:46,279
really strong for for big enterprise apps. This isn't the

101
00:04:46,279 --> 00:04:47,800
problem we've tried to solve in the past, so this

102
00:04:47,839 --> 00:04:50,800
is us trying to solve that problem. So currently, I

103
00:04:50,879 --> 00:04:53,439
make a new Angular project, right, and then.

104
00:04:53,399 --> 00:04:56,000
Speaker 1: Me and my me and my workmates we build on

105
00:04:56,040 --> 00:04:58,360
it for six months, a year, a couple of years,

106
00:04:58,839 --> 00:05:01,120
and now it covers the whole time. Webpacks kind of

107
00:05:01,160 --> 00:05:04,680
got my back and it it just kind of does

108
00:05:04,720 --> 00:05:07,120
everything I needed to do. Like I have no idea

109
00:05:07,120 --> 00:05:12,160
what's behind the curtains with the CLI right now. Eventually

110
00:05:12,720 --> 00:05:15,439
the an your team may try and just like swap

111
00:05:15,480 --> 00:05:18,600
that webpack for Basil. For me, what are kind of

112
00:05:18,639 --> 00:05:21,360
the triggers that like I would look forward to say,

113
00:05:21,519 --> 00:05:24,360
I might need to consider Basil, like I might need

114
00:05:24,399 --> 00:05:26,839
to proactively look for Basil rather than just waiting for

115
00:05:26,879 --> 00:05:29,160
this CLI to force it on me. Are what are

116
00:05:29,199 --> 00:05:33,120
some of those triggers that you know, the everyday developer,

117
00:05:33,120 --> 00:05:35,399
the every day Anula developer can be looking forward to

118
00:05:35,399 --> 00:05:38,439
to to know when when it's time to start watching

119
00:05:38,480 --> 00:05:40,000
Alex Eagles conference talks.

120
00:05:40,399 --> 00:05:42,439
Speaker 3: Before I answer, one quick clarification, we have to be

121
00:05:42,720 --> 00:05:45,120
I want to be clear that Basil doesn't replace Webpack,

122
00:05:45,399 --> 00:05:48,120
like you totally run web Pack under Basil, Like I

123
00:05:48,120 --> 00:05:50,439
think the mental model is a little more subtle, where

124
00:05:50,439 --> 00:05:52,279
Webpack is kind of doing a couple of jobs and

125
00:05:52,319 --> 00:05:54,199
we just want Basil to do one of those jobs.

126
00:05:54,439 --> 00:05:57,480
Totally still makes sense to his Webpack totally possible to

127
00:05:57,480 --> 00:05:59,759
like have a Webpack and fig and there are a

128
00:05:59,759 --> 00:06:01,560
lot of options right for how to run your tools.

129
00:06:01,560 --> 00:06:04,759
Webpec can still be with them. Okay, so yeah, what

130
00:06:04,759 --> 00:06:06,040
are the triggers? How do you know that you need

131
00:06:06,079 --> 00:06:08,720
this thing? So it's really that there are a few

132
00:06:08,720 --> 00:06:10,920
of them. One is that you are operating in such

133
00:06:10,920 --> 00:06:13,439
a large scale that your CI takes like an hour

134
00:06:13,879 --> 00:06:15,920
and like it takes way too long to run all

135
00:06:15,959 --> 00:06:17,879
of your tests, or it could be that you're running

136
00:06:17,920 --> 00:06:19,759
locally and when you do a production build it takes

137
00:06:19,800 --> 00:06:23,560
over fifteen minutes, and so you're like completely unproductive if

138
00:06:23,600 --> 00:06:26,000
you need to debug something that's only that only shows

139
00:06:26,079 --> 00:06:29,240
up in the proud build. Another trigger is that it's

140
00:06:29,399 --> 00:06:32,839
a little more organizational. How do you interact with other

141
00:06:32,879 --> 00:06:34,920
teams around you? So, if you're doing microfront ends, how

142
00:06:34,920 --> 00:06:37,920
do you test that your your Angular app will work

143
00:06:38,040 --> 00:06:41,360
when somebody else is either they're dynamically loading some stuff

144
00:06:41,360 --> 00:06:44,600
into the same page or you have totally separate spas

145
00:06:44,639 --> 00:06:47,120
like you actually do a server round trip between apps,

146
00:06:47,319 --> 00:06:50,959
but you're passing information in like the URL parameters. How

147
00:06:50,959 --> 00:06:53,279
do you test that the whole system is going to work? So,

148
00:06:53,319 --> 00:06:55,519
if you want to be able to integrate your software

149
00:06:55,720 --> 00:06:59,439
across multiple apps, then Basil helps with that. Also, if

150
00:06:59,439 --> 00:07:01,879
you want to work more closely with your back end

151
00:07:01,879 --> 00:07:04,600
team where you find a lot of defects in production

152
00:07:04,800 --> 00:07:06,680
because you weren't able to integrate the front end back

153
00:07:06,720 --> 00:07:09,079
end inside of all of your integration tests, then you

154
00:07:09,079 --> 00:07:11,600
want to build system that understands the full stack, and

155
00:07:11,639 --> 00:07:13,360
so you have a problem that's bigger than just Angular.

156
00:07:13,360 --> 00:07:14,800
You're like, well, I have a Java back end or

157
00:07:14,839 --> 00:07:16,519
have a c sharp back end, and when I make

158
00:07:16,639 --> 00:07:18,079
changes there, I want to be able to verify that

159
00:07:18,120 --> 00:07:20,600
the front end still works. So now you want a

160
00:07:20,600 --> 00:07:24,560
build tool that understands that's, you know, a bigger is

161
00:07:24,560 --> 00:07:28,000
solving a bigger problem for the entire ecosystem and not

162
00:07:28,160 --> 00:07:30,639
just for your front end. So those are subtle, right,

163
00:07:30,680 --> 00:07:32,959
I think if you think of like I just do Angular,

164
00:07:33,040 --> 00:07:35,600
my team writes an Angular app. Yes, webpac has my

165
00:07:35,639 --> 00:07:38,120
back today, You're fine, and you should definitely not watch

166
00:07:38,120 --> 00:07:40,040
my conference talks unless you know you're just like a

167
00:07:40,079 --> 00:07:40,920
build system geek.

168
00:07:41,720 --> 00:07:44,279
Speaker 4: So, speaking of your conference talks, for anybody who is

169
00:07:44,319 --> 00:07:46,319
not privileged enough to see your talk at Energy conf,

170
00:07:46,319 --> 00:07:48,240
can you maybe explain a little bit more about like

171
00:07:48,279 --> 00:07:50,680
what it means to be a build tool versus a

172
00:07:50,680 --> 00:07:53,600
dev tool versus CI Like you mentioned it not replacing webpac.

173
00:07:53,639 --> 00:07:54,959
Can you go a little bit more in depth into

174
00:07:55,000 --> 00:07:55,560
explaining that.

175
00:07:56,079 --> 00:07:58,600
Speaker 3: Yeah, thinks it's a good one. So I think for

176
00:07:58,639 --> 00:08:00,399
a lot of people these things get kind of can used.

177
00:08:00,639 --> 00:08:02,639
Like we sent out a survey saying what build tools

178
00:08:02,639 --> 00:08:04,319
do you use today? And I got a lot of responses,

179
00:08:04,319 --> 00:08:09,360
which was Jenkins. So Jenkins is a continuous integration that's

180
00:08:09,480 --> 00:08:12,040
just you know, it's schedules so it like watches for

181
00:08:12,120 --> 00:08:13,800
changes to your EPO, or you can have it be

182
00:08:13,839 --> 00:08:16,319
like a CRON that schedules periodically and then it just

183
00:08:16,399 --> 00:08:18,399
runs whatever you say is your build tool, so you

184
00:08:18,519 --> 00:08:21,759
like it runs some program. Then later you need to,

185
00:08:22,360 --> 00:08:24,000
like at the other end of the stack, you need

186
00:08:24,040 --> 00:08:26,360
to do specific transformations to your code. You need to

187
00:08:26,480 --> 00:08:29,519
like run the type strip compiler to convert it to JavaScript.

188
00:08:29,519 --> 00:08:32,440
You need to run SAS to do your CSS pree processing.

189
00:08:32,480 --> 00:08:35,120
You need to run webpack or roll up to bundle

190
00:08:35,120 --> 00:08:38,240
things together into fewer files. So in the middle of

191
00:08:38,279 --> 00:08:41,000
those two things is okay. So the build needs to happen,

192
00:08:41,039 --> 00:08:44,039
like the CIS has triggered, and there are all these

193
00:08:44,039 --> 00:08:46,200
different steps that I need to do, like run typescript

194
00:08:46,200 --> 00:08:48,519
and run SaaS. So then I want something that I

195
00:08:48,519 --> 00:08:50,240
would call a build system. You can think of it

196
00:08:50,279 --> 00:08:52,879
as like orchestrating the build and that's a layer that

197
00:08:53,000 --> 00:08:55,720
can be a layer in the middle that is independent

198
00:08:55,759 --> 00:08:57,840
of like what's ciuus, and it's also independent of what

199
00:08:57,879 --> 00:09:00,000
tools you use. And I think The reason this is

200
00:09:00,039 --> 00:09:03,600
really confusing in JavaScript today is that we used to

201
00:09:03,679 --> 00:09:05,759
have Grunt and then we had Gulp, and those were

202
00:09:06,039 --> 00:09:08,759
those fit this middle of the stack. They didn't know

203
00:09:08,840 --> 00:09:11,840
how to do a particular transformation. But then the sort

204
00:09:11,879 --> 00:09:14,840
of replacement of of Gulp was okay, picked Webpack or

205
00:09:15,399 --> 00:09:18,960
roll up or you know a different like a like

206
00:09:19,440 --> 00:09:22,639
I think Cyprus has plugins for these different things. Basically,

207
00:09:22,639 --> 00:09:24,799
you pick one workflow tool and then its job is

208
00:09:24,799 --> 00:09:26,519
to have plugins to go and do all of the

209
00:09:26,559 --> 00:09:30,519
individual transforms. So so basically you can think of as

210
00:09:30,519 --> 00:09:33,399
being like the next in the lineage after Gulp, as

211
00:09:33,440 --> 00:09:38,559
opposed to replacing a bundler or a test runner or

212
00:09:38,600 --> 00:09:39,279
a depth server.

213
00:09:40,159 --> 00:09:43,879
Speaker 1: So it doesn't replace like a bundler. And I currently

214
00:09:43,919 --> 00:09:46,799
we currently we use the CLI as a bundler, right,

215
00:09:46,840 --> 00:09:50,679
We use it as a generator like a Yeoman generator,

216
00:09:50,720 --> 00:09:53,919
and then we use it for other tools and then

217
00:09:54,360 --> 00:09:55,799
for the build step we you.

218
00:09:55,759 --> 00:09:59,960
Speaker 3: Know, it leverages Webpack for its bundler features, right mm hmm.

219
00:10:00,320 --> 00:10:04,000
Speaker 1: I understand that one day I may be able to

220
00:10:04,200 --> 00:10:08,840
like opt into a version of the cl I that.

221
00:10:10,120 --> 00:10:12,240
Speaker 3: It will kind of you'll.

222
00:10:12,200 --> 00:10:14,639
Speaker 1: Kind of do all the all the things that webpac

223
00:10:14,679 --> 00:10:17,519
does form already, you guys will kind of autumn you

224
00:10:17,559 --> 00:10:20,279
will auto make the Basil doing that for me, like

225
00:10:20,320 --> 00:10:22,240
you'll kind of you'll kind of ship it with a

226
00:10:22,240 --> 00:10:24,399
bunch of predefined tasks that it knows how to do.

227
00:10:24,639 --> 00:10:29,000
Speaker 3: Is that true? Yeah, that's right. Okay, So it's consumed.

228
00:10:29,000 --> 00:10:31,960
Speaker 1: It's being able to say one day I'll show up

229
00:10:32,000 --> 00:10:34,480
at work, I'll do an MPM install, and then my

230
00:10:34,639 --> 00:10:36,840
build is actually using Basil that day.

231
00:10:37,399 --> 00:10:43,600
Speaker 3: Yeah that's right. Okay, So Basil an NPM. So just

232
00:10:43,679 --> 00:10:45,559
like you could have had Gulp in your package chase

233
00:10:45,639 --> 00:10:48,639
on and you know, you run NPM build, NPM, run

234
00:10:48,679 --> 00:10:51,519
serve whatever, the workflow for a developer on your team

235
00:10:51,559 --> 00:10:56,320
doesn't change. So either the either the CLI does everything

236
00:10:56,320 --> 00:10:58,480
for you and nobody in your team has to do anything,

237
00:10:58,600 --> 00:11:01,039
which is sort of the end vision. We'll see if

238
00:11:01,039 --> 00:11:03,000
we ever really get to a point where it's it's

239
00:11:03,039 --> 00:11:07,120
a full like zero effort drop in replacement, and certainly

240
00:11:07,159 --> 00:11:11,200
in the meantime some often effort required. We can talk

241
00:11:11,200 --> 00:11:15,000
about what the effort is. And even there only somebody

242
00:11:15,039 --> 00:11:17,559
on your team who's aware of like, like imagine this

243
00:11:17,600 --> 00:11:19,840
somebody today who like is into webpack and figure what

244
00:11:19,879 --> 00:11:21,440
they're doing, and most people on your team don't ever

245
00:11:21,480 --> 00:11:23,720
touch that because it's scary and it breaks things. Yeah,

246
00:11:24,039 --> 00:11:26,720
to model, like you have somebody who can who digs

247
00:11:26,799 --> 00:11:29,159
a level deeper into the build, and like, yeah, so

248
00:11:29,519 --> 00:11:31,399
that's the person who's changing how your build works, and

249
00:11:31,399 --> 00:11:33,440
everybody else on the team should be completely unaware that

250
00:11:33,440 --> 00:11:34,000
that's happening.

251
00:11:34,519 --> 00:11:38,759
Speaker 1: So with Basil being on NPM and it it trying

252
00:11:38,879 --> 00:11:41,799
to kind of be the next step of like a gun,

253
00:11:42,039 --> 00:11:45,159
a gunt or a Gulp. With like Grunt and Gulp,

254
00:11:45,720 --> 00:11:48,759
we had these other MPM package is, like I could

255
00:11:48,759 --> 00:11:53,360
have grunt Babel or like that grunt Babel was like

256
00:11:53,399 --> 00:11:56,600
a Babel, a Grunt plug in that would do Babel

257
00:11:56,639 --> 00:11:59,720
stuff for me, right, Or I could have had I

258
00:11:59,720 --> 00:12:01,840
had all all these Grunt and gold plugins that kind

259
00:12:01,879 --> 00:12:04,639
of were already kind of configured to do their thing

260
00:12:04,679 --> 00:12:08,840
inside of the Grunt or Gold ECOSCRP. Is Basil having

261
00:12:08,879 --> 00:12:10,519
a lot of that same plugin system or is that

262
00:12:10,600 --> 00:12:11,320
not really a thing?

263
00:12:11,559 --> 00:12:15,360
Speaker 3: Or like how does that's actually totally identical, totally same

264
00:12:15,399 --> 00:12:19,799
mental model. In our case, we followed what Typescript did.

265
00:12:19,879 --> 00:12:22,759
So if you have some NPM package, let's say you

266
00:12:22,799 --> 00:12:25,000
know banana, then you would look for at types slash

267
00:12:25,039 --> 00:12:26,919
Banana would be the name of the NPM package that

268
00:12:26,960 --> 00:12:30,240
gives you the typings, right yep. And then some packages

269
00:12:30,639 --> 00:12:32,960
shipped like are written in typescript and so they ship

270
00:12:33,039 --> 00:12:35,159
the typings inside of the package and so you don't

271
00:12:35,159 --> 00:12:37,240
need anything. You just get the package and it's all

272
00:12:37,279 --> 00:12:40,039
built in. Yeah, same models at types. So if you

273
00:12:40,080 --> 00:12:42,639
had a package called Banana, you would use at basil

274
00:12:42,679 --> 00:12:45,840
slash banana to get the plug in. Okay, it must

275
00:12:45,840 --> 00:12:48,240
be lunchtime here. Why I'm thinking about bananas.

276
00:12:49,639 --> 00:12:51,559
Speaker 4: My husband and I just started playing the New Jockey Klong,

277
00:12:51,720 --> 00:12:52,840
so that was picking me laugh.

278
00:12:54,080 --> 00:12:56,159
Speaker 3: Yeah, okay, so we talk about barrels too, although that's

279
00:12:56,200 --> 00:12:57,000
kind of confusing, you know.

280
00:12:57,159 --> 00:12:57,320
Speaker 1: Oh.

281
00:12:58,360 --> 00:13:00,600
Speaker 3: And similarly, if you had a package that was with Basil,

282
00:13:00,639 --> 00:13:03,320
then it could just be that it distributes Basil files

283
00:13:03,320 --> 00:13:05,639
in it and you don't need any separate sidecar package.

284
00:13:06,000 --> 00:13:08,639
So another way to describe this, also new back to

285
00:13:08,679 --> 00:13:12,720
Manji CoV talk is Gulp, Grunt, and Basil are all

286
00:13:12,799 --> 00:13:14,519
kind of this hub and spoke model where you have

287
00:13:14,559 --> 00:13:17,159
one like orchestration tool and it needs one plug in

288
00:13:17,200 --> 00:13:22,200
for each test runner or like transpiler, Like every one

289
00:13:22,240 --> 00:13:25,639
of the tools in your toolbox is plugged into this orchestrator,

290
00:13:26,200 --> 00:13:29,120
and so you know, so you imagine this is the

291
00:13:29,159 --> 00:13:31,679
third Like if there's Gulp, Grunt, and Basil are the three,

292
00:13:31,720 --> 00:13:34,399
then you have three times. However, many tools is how

293
00:13:34,399 --> 00:13:37,000
many plugins needs to be written. Compare that with what's

294
00:13:37,080 --> 00:13:39,639
what you have when each tool becomes a monolith and

295
00:13:39,720 --> 00:13:42,399
needs to understand the whole ecosystem. Then you have an

296
00:13:42,519 --> 00:13:44,960
M by end matrix where you have each all the

297
00:13:45,000 --> 00:13:47,480
columns are all the tools in your toolbox, and all

298
00:13:47,480 --> 00:13:51,080
the rows are all of the end user like workflow tools.

299
00:13:51,120 --> 00:13:52,919
So like I need a Cypress typeescript plug in, and

300
00:13:52,960 --> 00:13:54,960
I need a webpac type stript plug in, or I

301
00:13:54,960 --> 00:13:57,559
need Cipress to run webpack. If I'm using roll Up,

302
00:13:57,559 --> 00:13:59,000
then I need to roll up type script plug in.

303
00:13:59,000 --> 00:14:01,679
And so you can imagine one one one column is

304
00:14:01,759 --> 00:14:04,159
typescript and then for every tool that you use, there's

305
00:14:04,159 --> 00:14:06,679
a row where you have to plug typescript into that tool.

306
00:14:06,879 --> 00:14:08,440
Then you have to plug SaaS into that tool, and

307
00:14:08,480 --> 00:14:10,720
so you just end up with this much bigger space

308
00:14:10,960 --> 00:14:14,720
of like the plugin might not exist, like maybe there's

309
00:14:14,720 --> 00:14:17,039
no like roll up, I know, like roll up and

310
00:14:17,120 --> 00:14:19,000
view for example, I was recently looking at how view

311
00:14:19,039 --> 00:14:21,120
is hooked up, Like there's a roll up view plug in,

312
00:14:21,120 --> 00:14:22,960
but it's kind of like not supported as much as

313
00:14:22,960 --> 00:14:25,519
the view plug in for webpac is. It seems like

314
00:14:25,879 --> 00:14:27,639
you know, here, I'm not the expert ob at all,

315
00:14:27,679 --> 00:14:29,720
but like the fact that you need to go through

316
00:14:29,759 --> 00:14:32,360
all of the tools and fill in this box is

317
00:14:32,399 --> 00:14:34,639
a problem. And then you end up depending on so

318
00:14:34,679 --> 00:14:37,200
many different contributors for so many open source projects, and

319
00:14:37,240 --> 00:14:40,279
like it's awesome that that open source and JavaScript in

320
00:14:40,320 --> 00:14:42,600
particular is this bizarre model of like many many people

321
00:14:42,600 --> 00:14:45,799
building things, but it's it's harder to get like one

322
00:14:45,840 --> 00:14:47,679
tool chain that actually works end to end when there's

323
00:14:47,679 --> 00:14:50,159
so many different things to coordinate. So I think this

324
00:14:50,240 --> 00:14:52,000
is this is part of sort of this is This

325
00:14:52,039 --> 00:14:55,320
doesn't make you, as a developer do anything different, but

326
00:14:55,360 --> 00:14:58,240
I think as tooling authors in the ecosystem, we should

327
00:14:58,240 --> 00:15:01,879
be thinking about like all of these monoliths means that

328
00:15:02,360 --> 00:15:04,799
it's really hard to make a new tool because you

329
00:15:04,799 --> 00:15:06,320
have to plug it into all the workflow stuff, or

330
00:15:06,320 --> 00:15:07,960
it's really hard to make a new workflow thing, Like

331
00:15:08,000 --> 00:15:09,720
if you want to make a new bundler, you have

332
00:15:09,759 --> 00:15:12,200
to write plugins for every tool, and so we've kind

333
00:15:12,200 --> 00:15:15,120
of gotten into a point where everything works with webpack.

334
00:15:15,200 --> 00:15:17,440
That's great, Like there's something wrong with using webpack, right,

335
00:15:17,879 --> 00:15:20,000
but does everything work with roll up? Well, I don't know,

336
00:15:20,000 --> 00:15:22,120
maybe not everything. And then like you write a whole

337
00:15:22,120 --> 00:15:24,399
new test runner, Like how are you going to do

338
00:15:24,440 --> 00:15:26,360
all the transpilers for your new test runner? And so

339
00:15:26,399 --> 00:15:28,440
it means that we don't have as much innovation because

340
00:15:28,840 --> 00:15:31,080
there's such a barrier to making a new thing to

341
00:15:31,120 --> 00:15:33,480
plug it into everything else in the ecosystem. So this

342
00:15:33,519 --> 00:15:35,360
goes back to this Unix philosophy that like, well, it

343
00:15:35,360 --> 00:15:37,240
seems like you should just be able to publish your tool,

344
00:15:37,720 --> 00:15:39,039
and then it should be able to work with other

345
00:15:39,039 --> 00:15:41,679
people's tools without having to like there should be a

346
00:15:41,720 --> 00:15:44,919
standard sort of you know, in the case of Unix,

347
00:15:44,919 --> 00:15:47,799
it's like text files with line endings. That's that's the

348
00:15:47,840 --> 00:15:49,720
protocol that the different tools speak with each other. And

349
00:15:49,720 --> 00:15:52,440
then there's they're composable and you don't have to have

350
00:15:52,480 --> 00:15:55,120
a monolithic tool that understands cut and said and awk

351
00:15:55,200 --> 00:15:57,559
and everything built in. I could rant about that forever.

352
00:15:57,600 --> 00:15:58,360
How long do we have.

353
00:15:59,360 --> 00:16:01,159
Speaker 4: Well, Actually, I kind of wanted to go back to

354
00:16:01,200 --> 00:16:04,399
Aaron's question talking about triggers and looking at because I

355
00:16:04,440 --> 00:16:07,000
feel like in the enterprise world, like a lot of

356
00:16:07,000 --> 00:16:09,440
times this stuff can creep up on you like a

357
00:16:09,639 --> 00:16:12,639
frog not in boiling water, but like slowly being brought

358
00:16:12,639 --> 00:16:15,159
to boil water, where things just get a little bit

359
00:16:15,200 --> 00:16:18,120
slower and a little bit longer as they grow. Like,

360
00:16:18,159 --> 00:16:20,600
do you have any good horror stories of like people

361
00:16:20,679 --> 00:16:22,440
that have really pushed the max or like at what

362
00:16:22,440 --> 00:16:26,039
point would you go in and see something that Basil

363
00:16:26,120 --> 00:16:27,519
is trying to solve and would like walk into a

364
00:16:27,519 --> 00:16:29,559
code base and just start crying at the compile time?

365
00:16:29,960 --> 00:16:33,399
Speaker 3: Yeah, frog in a boiling pod is totally the right metaphor.

366
00:16:34,320 --> 00:16:36,039
I mean, I think we've probably all seen this on

367
00:16:36,080 --> 00:16:38,960
our projects. Given a small project, like things kind of

368
00:16:39,000 --> 00:16:41,480
get slower over time and a certain amount of effort

369
00:16:41,480 --> 00:16:44,080
that you put in to keep your development process fast.

370
00:16:44,240 --> 00:16:46,960
And you know, it's hard to get a big company

371
00:16:47,080 --> 00:16:49,919
to fund developer infrastructure and developer productivity, and I think

372
00:16:49,960 --> 00:16:52,080
it's something as developers were all trying to find like

373
00:16:52,440 --> 00:16:54,799
some spare time or like somebody on our team who's

374
00:16:54,879 --> 00:16:57,320
especially gullible, who will help to do this stuff and

375
00:16:57,360 --> 00:17:00,960
like keep us all working, and yeah, that's that's that sucks. Like,

376
00:17:01,000 --> 00:17:03,600
I think there are certain inflection points where you notice

377
00:17:03,600 --> 00:17:05,160
that it's happening, and probably one of them is you

378
00:17:05,200 --> 00:17:07,000
need to go into the CLI and like change the

379
00:17:07,039 --> 00:17:09,519
max heap size for node and then and then you

380
00:17:09,519 --> 00:17:11,240
have some developers who are like, oh, I don't have

381
00:17:11,279 --> 00:17:13,359
sixteen gigs of RAM on my laptop, and you're like, well, okay,

382
00:17:13,359 --> 00:17:15,079
everybody's getting a new laptop if you want to do

383
00:17:15,119 --> 00:17:17,599
a production build, and so like, there are certain points

384
00:17:17,599 --> 00:17:20,319
where it's especially obvious that that's happening. But yeah, I

385
00:17:20,359 --> 00:17:23,480
agree that it's it's hard to basil is just is

386
00:17:23,519 --> 00:17:26,279
just one of many things where we want to keep

387
00:17:26,319 --> 00:17:29,079
ourselves productive, and as we scale up, it becomes hard

388
00:17:29,119 --> 00:17:30,759
to do. A lot of the enterprises we talk to

389
00:17:30,799 --> 00:17:32,960
are interested in mono repos right now because it's hard

390
00:17:33,000 --> 00:17:35,039
to I mean, just something's going on in the industry.

391
00:17:35,079 --> 00:17:37,960
We can talk about that as its own topic. That's

392
00:17:38,000 --> 00:17:41,240
a big investment in keeping yourself productive. Like once you

393
00:17:41,240 --> 00:17:43,359
start using a mono repo, it's another reflection point where

394
00:17:43,400 --> 00:17:45,079
you realize, oh, if I don't have a build tool

395
00:17:45,119 --> 00:17:47,759
that can that understands all the software in here? Then

396
00:17:47,759 --> 00:17:49,519
how do I build all the things in this Monto repo?

397
00:17:50,839 --> 00:17:55,480
Speaker 1: So I'm looking at Basil and like as it kind

398
00:17:55,480 --> 00:17:58,799
of an experienced engineer, I hear people describe it, and

399
00:17:58,839 --> 00:18:01,920
the descriptions get a little like I like, I kind

400
00:18:01,920 --> 00:18:05,279
of like go oh, because people are like, hey, you

401
00:18:05,279 --> 00:18:11,119
can run your build across forty cloud servers, and I'm like,

402
00:18:11,200 --> 00:18:14,480
what what kind of what kind of build needs to

403
00:18:14,519 --> 00:18:17,319
involve the cloud? Like that sounds crazy? That sounds scary

404
00:18:17,359 --> 00:18:20,200
to me, that like I need to spin up some

405
00:18:20,319 --> 00:18:22,279
easy two instance is just to run my a build.

406
00:18:22,319 --> 00:18:26,160
Speaker 3: You like, it makes enerous, So like, explain the power.

407
00:18:26,720 --> 00:18:28,839
Speaker 1: Explain where you're trying to take us, because it sounds

408
00:18:29,079 --> 00:18:31,200
I realized there's some immense power. I know that your

409
00:18:31,240 --> 00:18:34,000
team your build went from an hour to like seven minutes,

410
00:18:34,720 --> 00:18:37,599
so I know that it's got huge potential.

411
00:18:38,079 --> 00:18:42,079
Speaker 3: I'm just trying to understand some of the scary edges

412
00:18:42,119 --> 00:18:44,519
that I hear about. I'm like, I'm not ready for that.

413
00:18:44,519 --> 00:18:46,960
That sounds way too cool for like what I'm doing.

414
00:18:47,319 --> 00:18:50,400
By the way, we talked about testing earlier. So Joe

415
00:18:50,880 --> 00:18:54,920
Joe left the podcast because he hates that stuff. Yeah,

416
00:18:55,039 --> 00:18:55,400
he's back.

417
00:18:56,720 --> 00:18:59,000
Speaker 5: So the good thing we are not talking about testing anymore.

418
00:18:59,039 --> 00:19:00,160
I don't want to talk about it.

419
00:19:00,319 --> 00:19:03,079
Speaker 3: Yeah, I's about to answer your question with with mentions

420
00:19:03,079 --> 00:19:05,720
of testing. Okay, No, go ahead, yeah, answer answer to

421
00:19:05,799 --> 00:19:08,400
answer to answer my question. Okay. I feel like this

422
00:19:08,440 --> 00:19:11,079
is giving me a second shot at Jennifer's earlier question

423
00:19:11,160 --> 00:19:13,440
what's the elevator pitch? Because I was like, I don't

424
00:19:13,440 --> 00:19:15,480
want people to use this. Okay, here's here's the vision

425
00:19:16,240 --> 00:19:18,319
for how how awesome this can all be. As your

426
00:19:18,359 --> 00:19:20,559
software grows and you have a big Mono repo and

427
00:19:20,759 --> 00:19:23,200
I make a change somewhere and I want to be like,

428
00:19:23,279 --> 00:19:27,519
does everything still work right? And if I have integration tests,

429
00:19:27,640 --> 00:19:29,599
that's really cool because now I can be like, Okay,

430
00:19:29,720 --> 00:19:31,799
if I run all the integration tests, I'm really confident

431
00:19:31,799 --> 00:19:34,000
that when I ship this, like everything is like the

432
00:19:34,000 --> 00:19:37,039
whole system works altogether. And as I write more integration tests,

433
00:19:37,039 --> 00:19:39,519
I have more engineers on my project, and there's more,

434
00:19:39,799 --> 00:19:42,519
you know, like software does nothing but grow, right, and

435
00:19:42,559 --> 00:19:46,839
so like eventually, over time, the amount of CPU, the

436
00:19:46,880 --> 00:19:48,599
amount of resources I need to do builds and test

437
00:19:48,680 --> 00:19:52,680
grows and eventually we hit this limit where we say, okay,

438
00:19:52,680 --> 00:19:54,359
well we're not willing to wait that long, like we

439
00:19:54,400 --> 00:19:56,200
could get a big, beefy machine to do our build,

440
00:19:56,720 --> 00:20:00,440
or like I can get a faster laptop and eventually

441
00:20:00,480 --> 00:20:02,160
I get to a point where it does doesn't feel

442
00:20:02,160 --> 00:20:06,200
fast enough, and like the obvious thing to do is okay, well,

443
00:20:06,240 --> 00:20:08,200
you're just trying to do too much work, So don't

444
00:20:08,240 --> 00:20:10,160
run all the tests every time you make a change.

445
00:20:10,200 --> 00:20:12,839
Don't run the front end integration tests when you change

446
00:20:12,839 --> 00:20:14,920
the back end, or you change like the data schema

447
00:20:15,160 --> 00:20:17,559
that is used for the you know, the protocol that

448
00:20:17,559 --> 00:20:19,200
the services in the front end are using to talk

449
00:20:19,240 --> 00:20:22,240
to the back end. Like nobody's got resources to run

450
00:20:22,279 --> 00:20:24,880
all those tests, like why even try? And so then

451
00:20:24,880 --> 00:20:26,440
we end up with every team is on their own

452
00:20:26,480 --> 00:20:29,240
little island and they're running a continuous build, which they

453
00:20:29,240 --> 00:20:32,240
call continuous integration, but they're not integrating their software with

454
00:20:32,279 --> 00:20:35,000
the other teams, so it's not really integration anymore. I

455
00:20:35,000 --> 00:20:37,799
think we've kind of gotten in this false mindset where

456
00:20:38,240 --> 00:20:41,200
we're doing CI, but everybody does their own little CI

457
00:20:41,279 --> 00:20:42,880
for their own peace of the world, and it's only

458
00:20:42,920 --> 00:20:45,880
later when we go to ship that like hopefully during like,

459
00:20:46,000 --> 00:20:48,160
you know, we have some period when we're doing manual

460
00:20:48,160 --> 00:20:49,720
testing and we discover bugs or else they go to

461
00:20:49,759 --> 00:20:52,000
production and then we're like, oh, like the version X

462
00:20:52,039 --> 00:20:53,480
of this thing didn't work with the version why of

463
00:20:53,519 --> 00:20:55,400
that thing, like you know, and we're like, oh, well,

464
00:20:55,400 --> 00:20:57,279
could we have written an integration test for that? If

465
00:20:57,319 --> 00:20:59,000
you think in a post mortem sense, like what could

466
00:20:59,000 --> 00:21:01,000
we have done? Well, we could write a whole bunch

467
00:21:01,000 --> 00:21:02,799
of integration tests across the whole stack and run them

468
00:21:02,839 --> 00:21:04,720
every time I make a change, and then you're back

469
00:21:04,759 --> 00:21:06,480
to like, Okay, well now our build is way too slow.

470
00:21:06,839 --> 00:21:09,160
So really the vision is like I want both. I

471
00:21:09,200 --> 00:21:10,599
want to be able to like, every time I make

472
00:21:10,640 --> 00:21:12,519
a change, I want to be like, yeah, test might change,

473
00:21:12,920 --> 00:21:15,640
and pretty quickly from like most kinds of changes, I

474
00:21:15,680 --> 00:21:17,720
should get feedback that says everything in the whole system

475
00:21:17,759 --> 00:21:20,359
still works, Like you can ship to PROD and there

476
00:21:20,359 --> 00:21:22,640
won't be any integration failures between back and on the

477
00:21:22,640 --> 00:21:24,599
front end, or between different micro front ends, or like

478
00:21:24,599 --> 00:21:27,680
however you divide up your work. So okay, so let's

479
00:21:27,759 --> 00:21:29,880
let's still go into that a little bit. So okay,

480
00:21:29,920 --> 00:21:31,599
so I just said I want to rerun all the

481
00:21:31,640 --> 00:21:34,039
tests when it made a little change. So first of all,

482
00:21:34,039 --> 00:21:36,799
I don't want to actually re execute all the tests. First,

483
00:21:36,839 --> 00:21:39,640
I want there to be something you can kind of imagine.

484
00:21:39,680 --> 00:21:42,440
It's like change detection and Angular like something was changed,

485
00:21:42,480 --> 00:21:44,000
and now I need to re render the view, and

486
00:21:44,039 --> 00:21:46,440
I don't want to like recreate all the dom And

487
00:21:46,480 --> 00:21:48,279
this is getting into too much you know, tech detail,

488
00:21:48,319 --> 00:21:50,039
But like, this is what Anglo does under the covers,

489
00:21:50,119 --> 00:21:52,319
is it does this algorithm to figure out, okay, based

490
00:21:52,400 --> 00:21:54,799
on what just changed, what could do I need to render?

491
00:21:55,240 --> 00:21:56,799
And what we're talking about in the build system is

492
00:21:56,839 --> 00:21:59,480
totally equivalent. Based on the source code file you just changed,

493
00:22:00,079 --> 00:22:02,519
what tests possibly need to be rerun. So one of

494
00:22:02,559 --> 00:22:04,559
the things we have, one of the things Basil needs

495
00:22:04,559 --> 00:22:07,039
in order to solve our problems is it has to

496
00:22:07,119 --> 00:22:10,480
understand this dependency graph. And so you know, we can

497
00:22:10,519 --> 00:22:12,799
talk about how it understands that dependency graph. But assuming

498
00:22:13,039 --> 00:22:14,880
it knows the graph, then it can figure out, okay,

499
00:22:14,920 --> 00:22:16,599
these are the only things that are possibly need to

500
00:22:16,599 --> 00:22:19,119
be rerun. The second thing is it could say, okay,

501
00:22:19,160 --> 00:22:20,960
so now something needs to be rerun, but let me

502
00:22:21,000 --> 00:22:23,200
look at all of the inputs for each step in

503
00:22:23,240 --> 00:22:26,480
the build and if the inputs haven't changed, Basil assumes

504
00:22:26,480 --> 00:22:28,920
that it doesn't need to rerun that thing. And so

505
00:22:29,039 --> 00:22:30,720
there are a lot of there's there's a lot of

506
00:22:30,720 --> 00:22:33,640
cases where you know, you change a comment and then

507
00:22:33,680 --> 00:22:36,319
downstream in your JavaScript you've stripped all the comments. Let's say,

508
00:22:36,480 --> 00:22:38,519
so then the inputs to the test are not changed

509
00:22:38,559 --> 00:22:40,680
because you change this comment, and so the test doesn't

510
00:22:40,680 --> 00:22:43,240
need to rerun. And this is incrementality. And so Basil

511
00:22:43,279 --> 00:22:46,880
has like really good incrementality properties of only needs to

512
00:22:46,880 --> 00:22:49,720
rerun certain things, and it can assume, based on the

513
00:22:49,720 --> 00:22:52,680
inputs exactly what work needs to happen. Right, that's a

514
00:22:52,680 --> 00:22:57,079
good fancy word too, incrementality. Yeah, incremental. I mean we

515
00:22:57,119 --> 00:22:59,039
all kind of know that, Like I made this little change.

516
00:22:59,039 --> 00:23:00,960
I don't want to rerun all integration tests in the

517
00:23:00,960 --> 00:23:03,240
world except the one invasion test that actually would have

518
00:23:03,240 --> 00:23:04,559
caught the problem I just introduced.

519
00:23:04,640 --> 00:23:04,799
Speaker 1: Right.

520
00:23:05,200 --> 00:23:07,880
Speaker 2: Yeah, I don't know if this as cool as transclusion,

521
00:23:07,920 --> 00:23:08,720
but it's pretty cool.

522
00:23:09,000 --> 00:23:12,440
Speaker 3: Yeah, there's no transclusion in Basil. Don't worry. Okay, Okay,

523
00:23:12,480 --> 00:23:16,119
So now so there's two more steps along this journey. Okay,

524
00:23:16,160 --> 00:23:18,880
so now something does need to rerun, right, One of

525
00:23:18,880 --> 00:23:20,680
my inputs, one of my job script files is different,

526
00:23:20,680 --> 00:23:23,160
and so the test needs to execute. But it turns

527
00:23:23,200 --> 00:23:26,160
out my coworker already ran the same build and they

528
00:23:26,160 --> 00:23:28,200
had the same change. Or maybe the CI already ran

529
00:23:28,200 --> 00:23:30,200
and it had the same change. Maybe I like pushed

530
00:23:30,200 --> 00:23:32,119
to commit and so the you know, he was doing

531
00:23:32,119 --> 00:23:36,039
a pre submit run on my CI. So if anybody,

532
00:23:36,119 --> 00:23:38,480
if one of my coworkers or my CI has already

533
00:23:38,519 --> 00:23:41,319
done this exact build with exactly the same inputs, then

534
00:23:41,359 --> 00:23:43,880
Basil can use a cash and so now I can

535
00:23:43,920 --> 00:23:46,559
cash the build artifacts, the intermediate build artifacts, right like

536
00:23:46,559 --> 00:23:50,200
the steps in between typescript and webpac. Let's say this

537
00:23:50,359 --> 00:23:51,920
can be cashed, so I don't need to rerun that

538
00:23:51,960 --> 00:23:55,039
step if anybody else has already run it with identical inputs.

539
00:23:55,400 --> 00:23:57,599
So that's cool. It means even like if my CI

540
00:23:57,759 --> 00:23:59,359
is up to date and I and I sink to

541
00:24:00,480 --> 00:24:02,440
and I rerun the build, I should mostly be getting

542
00:24:02,440 --> 00:24:04,640
cash hits and so I can have incrementality even in

543
00:24:04,680 --> 00:24:06,519
a case where you would imagine you'd normally get a

544
00:24:06,559 --> 00:24:09,519
really cold build. So that's that's step two of the pitch.

545
00:24:09,880 --> 00:24:12,799
So step three is Okay, I change something and I

546
00:24:12,839 --> 00:24:15,799
don't get cash hits, Like I just like updated the

547
00:24:15,880 --> 00:24:18,240
version of Angular in my project, and so everything is

548
00:24:18,240 --> 00:24:20,960
affected by that. Right, you look at the dependency graph

549
00:24:20,960 --> 00:24:23,519
and you're like, okay, all my components, all my nGy modules,

550
00:24:23,519 --> 00:24:25,960
like everything depends on the version of Angular. And I

551
00:24:25,960 --> 00:24:28,279
didn't have this on CI yet. So now I actually

552
00:24:28,279 --> 00:24:29,519
do have a bunch of work to do. Like I

553
00:24:29,559 --> 00:24:30,839
have to do the big build, I have to run

554
00:24:30,839 --> 00:24:33,480
all the integration tests. I don't have enough comput on

555
00:24:33,519 --> 00:24:36,359
my laptop to do that. So this is where I

556
00:24:36,400 --> 00:24:38,519
want to just throw a bunch of CPUs at this problem.

557
00:24:38,920 --> 00:24:42,039
And so Basil, since it understands all of the inputs

558
00:24:42,039 --> 00:24:43,400
for each step that needs to run, it can just

559
00:24:43,480 --> 00:24:46,240
upload those inputs somewhere else where there's enough available CPU,

560
00:24:46,680 --> 00:24:49,359
and it can farm out the build so it can paralyze.

561
00:24:49,359 --> 00:24:51,000
If there's twenty things that could be happening in parail,

562
00:24:51,039 --> 00:24:53,240
I can get twenty machines to do those things. And

563
00:24:53,279 --> 00:24:55,680
so not only am I not constrained anymore by like

564
00:24:56,119 --> 00:24:57,799
you know, in Node, it's hard to even use all

565
00:24:57,799 --> 00:25:01,400
the CPUs on your machine because JavaScript is single thread

566
00:25:01,519 --> 00:25:04,599
and like single process. I should say, although Node now

567
00:25:04,680 --> 00:25:07,079
has this worker threads API. That's pretty new, and so

568
00:25:07,240 --> 00:25:09,000
like you can kind of farm out things to the

569
00:25:09,079 --> 00:25:11,319
rest of the CPUs on your machine. But like what

570
00:25:11,319 --> 00:25:12,599
we really want is I just want to throw like

571
00:25:12,640 --> 00:25:14,799
one hundred and fifty CPUs at it. And so now

572
00:25:14,799 --> 00:25:16,920
we finally get back to what Frosty said earlier, Like, yeah,

573
00:25:16,920 --> 00:25:18,920
on Angular, when we threw one hundred fifty machines at

574
00:25:18,920 --> 00:25:21,880
our CI, it went down like eighty seven percent, right,

575
00:25:21,920 --> 00:25:23,720
It went from sixty minutes to seven and a half

576
00:25:23,799 --> 00:25:27,400
or something because because we were willing to like throw

577
00:25:27,440 --> 00:25:29,759
machines at it, right, and cloud is getting cheap for

578
00:25:29,759 --> 00:25:33,119
all the time and buying laptops for all your engineers

579
00:25:33,160 --> 00:25:34,960
can't possibly scale to what the cloud can do.

580
00:25:35,440 --> 00:25:37,759
Speaker 5: You're saying that the key there is that determination.

581
00:25:37,880 --> 00:25:41,480
Speaker 2: It's not so much that it inherently increases the speed,

582
00:25:41,480 --> 00:25:44,079
but it lets to you either decide one only rerun

583
00:25:44,119 --> 00:25:48,400
a small set of the tests that need to be run, right,

584
00:25:48,680 --> 00:25:51,599
or make the determination a large set of testing to

585
00:25:51,640 --> 00:25:53,839
be run. So does that mean that it's possible to

586
00:25:53,880 --> 00:25:57,440
decide somehow the computer gets to decide. You know, the

587
00:25:57,480 --> 00:26:00,599
system is somewhere Basil is deciding, hey, I only need

588
00:26:00,640 --> 00:26:02,720
to run a small set, I can run those locally,

589
00:26:02,839 --> 00:26:04,319
versus I need to run a longer set.

590
00:26:04,319 --> 00:26:06,000
Speaker 5: I'm going to send those up. Is there like some

591
00:26:06,039 --> 00:26:06,640
criteria there?

592
00:26:06,720 --> 00:26:06,920
Speaker 3: Is it?

593
00:26:06,920 --> 00:26:09,920
Speaker 2: More like, hey, because it knows and it kicks off,

594
00:26:09,960 --> 00:26:12,200
you know, some eighty seven minute process on my machine

595
00:26:12,599 --> 00:26:14,920
versus normally it's kicking off a thirty second process.

596
00:26:14,920 --> 00:26:15,720
Speaker 5: And somehow I did.

597
00:26:15,640 --> 00:26:18,880
Speaker 2: The magic change that cascaded across so many pieces that

598
00:26:18,880 --> 00:26:20,400
we have to rerun the whole entire thing.

599
00:26:21,039 --> 00:26:22,359
Speaker 5: Is that what we're talking about here?

600
00:26:22,519 --> 00:26:26,119
Speaker 3: Or yeah, So what you're getting at is that once

601
00:26:26,200 --> 00:26:28,559
we decide we have to do one of the steps

602
00:26:28,559 --> 00:26:29,079
in the build.

603
00:26:29,200 --> 00:26:32,279
Speaker 5: And when you say we decide, whose weed the basil?

604
00:26:32,359 --> 00:26:32,480
Speaker 4: Right?

605
00:26:32,559 --> 00:26:35,519
Speaker 3: Right, Yes, you've may changes to your inputs, and so

606
00:26:35,599 --> 00:26:38,039
some number of the build steps needs to be rerun.

607
00:26:38,519 --> 00:26:41,599
Excuting tests and tests are great to paralyze like some

608
00:26:41,720 --> 00:26:43,039
depend on each other, right, so.

609
00:26:43,400 --> 00:26:46,240
Speaker 5: Right, if they do that, you and I need to

610
00:26:46,279 --> 00:26:46,720
have a talk.

611
00:26:47,279 --> 00:26:50,160
Speaker 3: Yeah, exactly. So if the test needs to be rerun,

612
00:26:50,240 --> 00:26:52,759
then then yeah, Basil can decide should I schedule it locally?

613
00:26:53,079 --> 00:26:55,240
Do I have plenty of CPUs locally? Do I need

614
00:26:55,279 --> 00:26:58,480
to run it remote? And yeah, it depends on sort

615
00:26:58,519 --> 00:27:00,519
of the width of the graph. There's a lot of

616
00:27:00,559 --> 00:27:04,200
things to paralyze, then it's worth it to take the

617
00:27:04,240 --> 00:27:06,640
extra latency hit of uploading my inputs to the cloud

618
00:27:06,680 --> 00:27:10,319
and then downloading the resulting build artifact. Whereas if my

619
00:27:10,400 --> 00:27:12,559
if I'm if I'm doing an incremental build, then my

620
00:27:12,599 --> 00:27:15,359
local my local resources are sufficient for the build steps

621
00:27:15,359 --> 00:27:18,200
from running. And so yeah, Basil will like just paralyze

622
00:27:18,200 --> 00:27:20,559
the work over your local CPUs. And one thing I

623
00:27:20,599 --> 00:27:24,359
really like about Basil is that that scheduling algorithm is

624
00:27:24,400 --> 00:27:26,759
totally independent of how you express your build and how

625
00:27:26,759 --> 00:27:29,839
the build executes. Right, so bezel is making new releases

626
00:27:29,920 --> 00:27:32,279
like in in the release that just came out this week,

627
00:27:32,640 --> 00:27:36,720
it automatically tries to keep compilers warm, and so like

628
00:27:36,759 --> 00:27:39,200
the typescript compiler, we can keep it running and so

629
00:27:39,240 --> 00:27:40,480
we don't have to pay the cost of like a

630
00:27:40,519 --> 00:27:43,279
new node process. It's the same thing as TSC dash watch,

631
00:27:43,640 --> 00:27:46,119
like you run compiler running in a watch mode. And

632
00:27:46,160 --> 00:27:48,000
so Basil is able to do things like that too.

633
00:27:49,160 --> 00:27:51,720
To assuming that you're that you've that your Basil plug

634
00:27:51,720 --> 00:27:54,319
in for the compiler knows how to keep the compiler running,

635
00:27:54,720 --> 00:27:57,079
then Basil schedule like, okay, well, I'll just keep four

636
00:27:57,079 --> 00:27:59,599
copies of the compiler alive so that I have much

637
00:27:59,680 --> 00:28:02,680
less latency when I send it work to get to

638
00:28:03,119 --> 00:28:05,599
kick off the type trip. So yeah, this is this

639
00:28:05,640 --> 00:28:07,839
is totally inside stuff. Like as a user you don't care,

640
00:28:08,279 --> 00:28:11,319
but Basil can be smarter about the heuristics for where

641
00:28:11,359 --> 00:28:14,359
to do the build to handle this trade off between

642
00:28:14,400 --> 00:28:16,880
do I have enough resources and what's the latency of

643
00:28:17,000 --> 00:28:19,559
using a farm of remote build workers.

644
00:28:20,079 --> 00:28:24,799
Speaker 2: That sounds like the kind of magic that turns into

645
00:28:25,000 --> 00:28:28,519
a disaster when you try to, Like I hear people

646
00:28:28,559 --> 00:28:32,240
talking about I've heard before people talking about some kind

647
00:28:32,240 --> 00:28:34,200
of thing that's like, hey, we can make this happen

648
00:28:34,319 --> 00:28:36,279
like this, and then when you go to do the details,

649
00:28:36,480 --> 00:28:39,039
you realize, oh my gosh, this is like five times

650
00:28:39,079 --> 00:28:42,279
more complex and ridiculous, and I can't get this configure

651
00:28:42,359 --> 00:28:44,160
correctly because I'm.

652
00:28:43,759 --> 00:28:45,920
Speaker 5: Just trying to think through the process of it.

653
00:28:45,960 --> 00:28:50,200
Speaker 2: Makes a decision that you've changed enough inputs that your

654
00:28:50,240 --> 00:28:52,279
local you know one, understanding your local machine and the

655
00:28:52,279 --> 00:28:55,039
power that it has available, right, and then to understanding

656
00:28:55,079 --> 00:28:58,039
how to send that up to your CI system in

657
00:28:58,039 --> 00:29:00,319
the cloud and say no, no, kick this off on the cloud. Then,

658
00:29:00,480 --> 00:29:02,279
you know, like I understand the process of what it's

659
00:29:02,279 --> 00:29:03,759
like when I'm on the developer and I'm on my

660
00:29:03,799 --> 00:29:06,119
box and I've got a set of CI tests and

661
00:29:06,160 --> 00:29:10,160
i go change something and those tests need to rerun.

662
00:29:10,400 --> 00:29:13,279
Sometimes those tests take forever, and sometimes they don't. And

663
00:29:13,359 --> 00:29:17,279
if Basil incrementally says, hey, I don't need to run

664
00:29:17,319 --> 00:29:19,880
all the testimony, run the small set, then who thank goodness,

665
00:29:19,960 --> 00:29:22,759
this test round is only taking me twenty seconds, whereas

666
00:29:22,759 --> 00:29:24,119
if I have to run the whole test run, it

667
00:29:24,119 --> 00:29:25,039
takes me ninety minutes.

668
00:29:25,119 --> 00:29:28,200
Speaker 5: Right. But the minute that you make the decision of oh.

669
00:29:28,039 --> 00:29:32,119
Speaker 2: My gosh, you know, or analyzing what's on the machine

670
00:29:32,119 --> 00:29:33,759
and saying this has to go somewhere else, and I think,

671
00:29:33,759 --> 00:29:34,920
oh my gosh, that either a set.

672
00:29:35,000 --> 00:29:39,480
Speaker 5: It's either crazy magic or snake oil.

673
00:29:41,319 --> 00:29:46,519
Speaker 2: So from you, it sounds like my opinion is it's

674
00:29:46,519 --> 00:29:48,640
got to be magic, right because I know you.

675
00:29:48,759 --> 00:29:54,440
Speaker 5: But that's it's just it just sounds amazingly whacked. That's

676
00:29:54,759 --> 00:29:56,079
the best. The best word that's whacked.

677
00:29:57,839 --> 00:30:00,720
Speaker 3: Let me offer an existence proof that somebody does it

678
00:30:00,759 --> 00:30:02,559
this way, which is, you know, we haven't pointed out

679
00:30:02,640 --> 00:30:04,400
yet on this podcast, but like we always say this

680
00:30:04,480 --> 00:30:06,920
at every enjin com. Google does it this way, right,

681
00:30:07,200 --> 00:30:09,799
This is how we develop the biggest apps at Google.

682
00:30:10,200 --> 00:30:12,759
It's by having thousands of machines. And I used to

683
00:30:12,839 --> 00:30:15,519
be the tech league for our continuous build system and

684
00:30:15,599 --> 00:30:17,640
at that time it was like tens of thousands machines.

685
00:30:17,680 --> 00:30:18,960
I don't know what it is now. I'm probably not

686
00:30:18,960 --> 00:30:20,559
even supposed to say if I did know, but like

687
00:30:21,119 --> 00:30:24,359
lots of like resources and production data set. You say

688
00:30:24,400 --> 00:30:28,160
that number, say it, I would be guessing. So maybe

689
00:30:28,160 --> 00:30:29,480
it's fine for me to guess it's got to be

690
00:30:29,519 --> 00:30:32,279
like over one hundred k machine. But you know, I

691
00:30:32,279 --> 00:30:34,160
mean you divide that by how many engineers work at Google.

692
00:30:34,200 --> 00:30:36,519
So like, yeah, you have a few machines per person. Basically,

693
00:30:36,559 --> 00:30:38,279
like we bought you a laptop and we have like,

694
00:30:38,319 --> 00:30:40,200
you know, three machines in the data center to your builds.

695
00:30:40,200 --> 00:30:43,680
That's reasonable, right, So yeah, so like we we do

696
00:30:43,799 --> 00:30:47,160
this and yeah, it's it's there's a lot of complexity

697
00:30:47,160 --> 00:30:49,279
and making me work and so yeah, it sounds kind

698
00:30:49,279 --> 00:30:50,799
of scary, like how do you decide to run local

699
00:30:50,880 --> 00:30:52,880
or remote? So first of all, this is not something

700
00:30:53,000 --> 00:30:55,680
users care about. Right. The user does is say like

701
00:30:55,680 --> 00:30:57,960
I have a director. You have typescript files here, that's

702
00:30:58,000 --> 00:30:59,400
all you say, tobout and you say, oh, and it

703
00:30:59,440 --> 00:31:01,400
depends on this other directory over there. And I know

704
00:31:01,799 --> 00:31:04,759
Aaron's asked about this the pendency graph thing. As a user,

705
00:31:04,880 --> 00:31:07,359
like as long as Basils dependency graph, it knows what

706
00:31:07,400 --> 00:31:09,839
to do. Right As an author, when I wrote, when

707
00:31:09,880 --> 00:31:13,000
we write the typescript compiler plug in for Basil, there's

708
00:31:13,039 --> 00:31:14,440
a couple of things we have to do, but it's

709
00:31:14,440 --> 00:31:16,400
basically we have to be careful that the only things

710
00:31:16,400 --> 00:31:18,519
we need are the things that we told Basil we're

711
00:31:18,559 --> 00:31:21,079
going to use, and that we don't rely on like

712
00:31:21,160 --> 00:31:23,599
local paths on the disc, because the thing could run

713
00:31:23,599 --> 00:31:25,319
somewhere else. So when you're writing one of these things,

714
00:31:25,359 --> 00:31:27,680
you have to put some basic rules about being hermetic,

715
00:31:28,079 --> 00:31:31,319
meaning like you only depend on the things you declared right, right,

716
00:31:31,519 --> 00:31:34,000
and so then like when Basil lays out your thing

717
00:31:34,039 --> 00:31:36,359
on some other machine, it's like in some different directory,

718
00:31:36,640 --> 00:31:38,799
but your your typescript can figure, your ts can fig

719
00:31:38,799 --> 00:31:40,960
file is there on disc, and all your typescript inputs

720
00:31:40,960 --> 00:31:42,680
are there on disc, and your DTS files are there

721
00:31:42,680 --> 00:31:45,400
on disc. Run the typescript compiler. You tell basil where

722
00:31:45,400 --> 00:31:48,680
the outputs go and then it downloads them back. So

723
00:31:48,720 --> 00:31:51,480
as as a plugin author, you have to declare all

724
00:31:51,519 --> 00:31:54,640
the inputs, declare all the outputs, and be and be

725
00:31:54,720 --> 00:31:57,519
hermetic about how you operate. And you also should be deterministic.

726
00:31:57,519 --> 00:31:59,400
You should make sure given the same inputs, I produce

727
00:31:59,400 --> 00:32:01,680
the same output so that the casting can work, right,

728
00:32:01,680 --> 00:32:03,319
because you don't want to like pollute the cast because

729
00:32:03,359 --> 00:32:06,240
then you'll cause a bunch of rebuilds that shouldn't happen. Right.

730
00:32:06,599 --> 00:32:09,440
Speaker 2: So, one of the things that I think is universally

731
00:32:09,440 --> 00:32:13,200
true is if it's a good idea for Facebook or

732
00:32:13,240 --> 00:32:15,119
Google to do something in every company in the world

733
00:32:15,200 --> 00:32:18,400
to do something that's universal, that's universally too, right.

734
00:32:18,720 --> 00:32:21,480
Speaker 3: Yeah, it's universal. You just made a fact.

735
00:32:21,799 --> 00:32:23,720
Speaker 5: I did. I'm pretty sure I stated I or made

736
00:32:23,720 --> 00:32:26,240
a fact. You're right, I made a fact. I made it.

737
00:32:26,799 --> 00:32:30,319
That's that's the fact I made, folks. Yeah, right.

738
00:32:30,480 --> 00:32:33,240
Speaker 2: So when I see what Facebook is doing with their development,

739
00:32:33,400 --> 00:32:35,839
obviously that's what every company in the world needs to

740
00:32:35,880 --> 00:32:38,880
do for their development. When I see that Google's using basil, like,

741
00:32:38,960 --> 00:32:41,039
I'm going to start up right now. We have a

742
00:32:41,119 --> 00:32:43,680
quarter time developer, literally twenty hours a month.

743
00:32:43,920 --> 00:32:45,079
Speaker 5: That's what we have for development.

744
00:32:45,160 --> 00:32:47,839
Speaker 2: So I should be turning him onto getting him that's

745
00:32:47,880 --> 00:32:49,559
his next project to implementing BASIL.

746
00:32:50,559 --> 00:32:53,319
Speaker 5: Right, you do it it that?

747
00:32:53,319 --> 00:32:55,440
Speaker 3: That doesn't That does not sound right. I'm pretty sure

748
00:32:55,440 --> 00:32:58,240
you want that person to develop code that's useful for you. Yeah,

749
00:32:58,240 --> 00:33:01,440
there's there's a scale question. I think the only startups

750
00:33:01,480 --> 00:33:04,519
I see who are who get started with this sort

751
00:33:04,519 --> 00:33:08,839
of scalable build infrastructure are ones where somebody left Google

752
00:33:08,960 --> 00:33:10,960
or Facebook and is like, oh, I just want to

753
00:33:11,000 --> 00:33:12,480
have the same thing I'm used to from day one

754
00:33:12,519 --> 00:33:14,680
and like set that up right. So somebody who just

755
00:33:14,720 --> 00:33:17,319
has that proclivity or like they have the experience doing it,

756
00:33:17,359 --> 00:33:19,279
and they're like, hey, on the team, I just quit

757
00:33:19,319 --> 00:33:21,640
Google and so like here's Baseil. Like you're welcome.

758
00:33:21,880 --> 00:33:24,519
Speaker 2: We talked earlier on about like criteria things you should

759
00:33:24,559 --> 00:33:26,920
look for, and you said a really long build time

760
00:33:27,119 --> 00:33:29,480
was like the number one criteria you should look forward to.

761
00:33:29,480 --> 00:33:30,680
Speaker 5: Say, hey, it's time.

762
00:33:30,799 --> 00:33:34,240
Speaker 2: So you're at a company, your build time is obviously

763
00:33:34,359 --> 00:33:37,400
maybe something at least north of twenty minutes. Right, your

764
00:33:37,400 --> 00:33:39,839
sei time is at least north of twenty minutes, maybe

765
00:33:39,920 --> 00:33:42,680
more running on a single machine, that's time to start thinking.

766
00:33:42,920 --> 00:33:45,720
What about another criteria I think is still useful, Like

767
00:33:46,000 --> 00:33:48,960
I could be a solo developer and end up with

768
00:33:48,960 --> 00:33:52,440
a sixty minute I'm having a tough time imagining actually

769
00:33:52,480 --> 00:33:54,119
getting to that point, but I think it's possible that

770
00:33:54,119 --> 00:33:56,279
there's a there's some place where there's a solo developer

771
00:33:56,319 --> 00:33:59,279
with a sixty minute SEI time. Right, if your solo

772
00:33:59,319 --> 00:34:02,079
developer is that kind of that characteria, like, eh, you

773
00:34:02,119 --> 00:34:03,960
probably don't want to spend the resources it's going to

774
00:34:04,000 --> 00:34:07,680
take implement or is it gonna is that like ROI

775
00:34:07,839 --> 00:34:10,679
gonna be pretty reasonable that even if you're solo and

776
00:34:10,719 --> 00:34:13,679
you've got to do all the basil implementation work yourself.

777
00:34:13,559 --> 00:34:16,599
Speaker 1: It sounds like I'm gonna I'm gonna guess. I'm guessing.

778
00:34:17,159 --> 00:34:21,079
It sounds like because it's like functional and if the

779
00:34:21,119 --> 00:34:24,159
input's the same it doesn't rerun that step, it could

780
00:34:24,199 --> 00:34:27,159
still be massively time savings for one person.

781
00:34:27,199 --> 00:34:29,719
Speaker 3: Still, I think the answer is, yes, there are cases

782
00:34:29,719 --> 00:34:31,559
where a solo developer would want it, But I don't

783
00:34:31,559 --> 00:34:34,840
think it's for build time. I think I thinks always right, like,

784
00:34:34,840 --> 00:34:37,679
it's hard to imagine like writing enough code that it

785
00:34:37,719 --> 00:34:40,880
takes an hour to execute, like your building test as

786
00:34:40,880 --> 00:34:42,559
a single like you need you need millions of lines

787
00:34:42,599 --> 00:34:43,159
of code, right.

788
00:34:43,400 --> 00:34:46,440
Speaker 2: I was imagining somebody who's super into end tests and

789
00:34:46,559 --> 00:34:49,199
just like what nuts about it? Right, Like I'm writing

790
00:34:49,199 --> 00:34:51,639
an end I'm like doing BDD I writing end to

791
00:34:51,760 --> 00:34:54,119
end tests for every piece of functionality, right, and I

792
00:34:54,199 --> 00:34:56,800
end up with a thousand end to end tests on

793
00:34:56,840 --> 00:34:58,800
my twenty thousand lines of code.

794
00:34:59,079 --> 00:35:01,880
Speaker 3: Right yeah, I mean even there, like you're you should

795
00:35:01,880 --> 00:35:05,199
find your picture come up faster, even if it's a

796
00:35:05,440 --> 00:35:06,119
separate topic.

797
00:35:06,559 --> 00:35:06,679
Speaker 5: Right.

798
00:35:07,480 --> 00:35:09,920
Speaker 3: No, But so like I'm just thinking to answer the question,

799
00:35:10,000 --> 00:35:11,639
like if I was doing a small project when I

800
00:35:11,639 --> 00:35:14,079
start with basil, and I do actually, and there are

801
00:35:14,079 --> 00:35:16,199
a couple of reasons. One is that I can do

802
00:35:16,280 --> 00:35:18,679
full stack. I can like everything, like you know, I'm

803
00:35:18,719 --> 00:35:20,840
not just writing an angular front end unless I'm like

804
00:35:20,920 --> 00:35:23,920
you know, using somebody's API, Like I'm just talking to

805
00:35:23,960 --> 00:35:25,320
get a API or something, right, And it's just like

806
00:35:25,360 --> 00:35:27,199
a pure front end project, so I need to like

807
00:35:27,199 --> 00:35:29,599
I'm building more than just types strip code. The other

808
00:35:29,639 --> 00:35:32,199
reason is that the way you put your bill together

809
00:35:32,440 --> 00:35:34,920
is is but I can like drop in like oh

810
00:35:34,960 --> 00:35:36,800
I need one of these, any one of those like

811
00:35:36,800 --> 00:35:38,639
I'm gonna have a type strip library that's an input

812
00:35:38,679 --> 00:35:43,320
to a bundler step you express. The configuration is just

813
00:35:43,360 --> 00:35:45,960
really ergonomic, and so if you've already, like if you've

814
00:35:46,039 --> 00:35:49,400
learned Basil already, then it takes it it's a lot

815
00:35:49,480 --> 00:35:51,880
less time to set up your your your tool chain

816
00:35:51,880 --> 00:35:54,519
and like keep it up to date. Basically, I don't

817
00:35:54,559 --> 00:35:56,480
know that that's the reason that you would that you

818
00:35:56,480 --> 00:35:58,639
would want to spend the time to learn Basil necessarily,

819
00:35:58,679 --> 00:36:00,960
Like you know, you can probably get other options off

820
00:36:01,000 --> 00:36:02,760
the shelf, and I guess it kind of depends on

821
00:36:02,800 --> 00:36:04,840
how custom your build is. Like if you're if you're

822
00:36:05,039 --> 00:36:06,920
if Ango Cli doesn't exactly what you need, then you're

823
00:36:06,920 --> 00:36:09,280
done right. And if somebody else's tool chain does exactly

824
00:36:09,280 --> 00:36:12,760
what you need, that's fine. I think it's it's really

825
00:36:13,519 --> 00:36:15,440
you know, at Google, every build is a snowflake and

826
00:36:15,480 --> 00:36:17,679
everybody needs to customize what it does. And if we said,

827
00:36:17,840 --> 00:36:20,119
even the Anglo Cli internally at Google, we mostly use

828
00:36:20,159 --> 00:36:23,679
it for scaffolding files and then people edit the build

829
00:36:23,719 --> 00:36:27,719
configurations by hand. It's not the same way it does. External.

830
00:36:27,960 --> 00:36:31,119
Speaker 2: Are the build snowflakes because they're beautiful or because they're delicate,

831
00:36:31,199 --> 00:36:32,760
or because if there's a there's enough of them you

832
00:36:32,800 --> 00:36:35,760
get buried under them and you you drown and suffocate.

833
00:36:36,199 --> 00:36:37,880
Speaker 3: I think it's because that each one is different. I

834
00:36:37,880 --> 00:36:40,400
think that's why say snowflake. But I think your other

835
00:36:40,440 --> 00:36:41,960
analogies are actually pretty good too.

836
00:36:42,559 --> 00:36:45,000
Speaker 4: I think we have a new talk title, so.

837
00:36:46,800 --> 00:36:50,639
Speaker 5: That is that would be an awesome talk title, wouldn't it, Uh, Alex, I.

838
00:36:50,559 --> 00:36:51,159
Speaker 3: Got a question.

839
00:36:51,719 --> 00:36:55,079
Speaker 1: So the A team they go through this big effort,

840
00:36:55,599 --> 00:36:59,000
they reduce their build internally at Google from sixty minutes

841
00:36:59,039 --> 00:37:03,320
to seven right, right, how does that positively affect your team? Like,

842
00:37:04,159 --> 00:37:06,320
I don't I don't know how it was negative? Fucking

843
00:37:06,360 --> 00:37:08,440
you can you kind of spell out to some people

844
00:37:09,000 --> 00:37:11,320
this is how we benefited from that type of a

845
00:37:11,440 --> 00:37:13,800
savings because some people might have a hard time understanding.

846
00:37:14,280 --> 00:37:16,920
I don't care if it takes an hour or eight minutes.

847
00:37:17,480 --> 00:37:20,079
Speaker 3: So the first one is nothing is worse than you

848
00:37:20,079 --> 00:37:21,840
push a PR and then like you get in the

849
00:37:21,840 --> 00:37:23,960
car and you're like, oh, like oh sorry, you push

850
00:37:24,000 --> 00:37:25,559
a PR and you're around for a few minutes and

851
00:37:25,559 --> 00:37:27,400
you're like okay, like it's running, that's cool. And then

852
00:37:27,440 --> 00:37:29,239
you leave and you switch context and then like an

853
00:37:29,280 --> 00:37:31,280
hour later it was read because of some dumb tests

854
00:37:31,320 --> 00:37:32,880
that you could have Like you could have fixed that

855
00:37:32,920 --> 00:37:36,119
in the same loop, right, So like losing a development

856
00:37:36,199 --> 00:37:38,280
round trip, or you're sitting there in your machine and

857
00:37:38,320 --> 00:37:39,599
you're like, this has to be green. It has to

858
00:37:39,639 --> 00:37:41,000
merge before I get home. Let me sit here for

859
00:37:41,039 --> 00:37:43,239
an extra hour and wait to see if it's green. Yep.

860
00:37:43,480 --> 00:37:45,679
That's only for the Angular team. Like, you know, we're

861
00:37:45,719 --> 00:37:48,199
working lots of things at once, and so we're pushing snapshots,

862
00:37:48,639 --> 00:37:50,760
you know, we're pushing commits to our prs, and like

863
00:37:50,760 --> 00:37:53,039
like a faster round trip just allows you to do

864
00:37:53,119 --> 00:37:55,719
things in real time that you would otherwise have to

865
00:37:55,800 --> 00:37:58,559
like you know, context switch out in it. So there's

866
00:37:58,559 --> 00:38:01,840
a real productivity boost. The other thing is Igor has

867
00:38:01,840 --> 00:38:06,440
claimed Igor is the illustrious leader of Angular. He's he's

868
00:38:06,480 --> 00:38:09,760
His feeling is that by introducing Basil, we're now like

869
00:38:09,800 --> 00:38:13,119
getting a jillion more prs through the project. And so

870
00:38:13,199 --> 00:38:15,360
really it was like scaling up our ability to pump

871
00:38:15,480 --> 00:38:17,760
changes through this thing. And Angler itself is like a

872
00:38:17,760 --> 00:38:19,719
big mono repo. It's a pretty good example. If you

873
00:38:19,760 --> 00:38:22,599
send us a pr and you watch, like you know,

874
00:38:22,639 --> 00:38:24,559
angler uses circle CI. But then you look at the

875
00:38:24,559 --> 00:38:26,320
circle CI jobs and like a giant, a bunch of

876
00:38:26,360 --> 00:38:28,159
them spin up, and then the Basil one spins up,

877
00:38:28,440 --> 00:38:30,760
and there's like there's a lot of testing to do

878
00:38:31,400 --> 00:38:32,920
when you make a change, and we really want to

879
00:38:32,920 --> 00:38:35,360
get that feedback on a PR. So the other thing

880
00:38:35,400 --> 00:38:38,199
for us is that we know when we merge things

881
00:38:38,199 --> 00:38:40,920
that all of our integration tests are passing for everybody's PR,

882
00:38:41,440 --> 00:38:44,119
for every commit that we push to a PR. And

883
00:38:44,440 --> 00:38:46,360
if we weren't using Basil, I think we wouldn't be

884
00:38:46,400 --> 00:38:48,400
able to keep up on our CI anymore. And then

885
00:38:48,440 --> 00:38:50,159
we would be making the trade off I described earlier

886
00:38:50,159 --> 00:38:51,920
where we'd be like, well, we'll run the test in

887
00:38:51,960 --> 00:38:53,960
the directory that you change, and then like sometime later

888
00:38:54,000 --> 00:38:56,480
we'll find out whether anything still works. And then and

889
00:38:56,519 --> 00:38:58,440
then like I don't know how we would ever ship Angular,

890
00:38:58,519 --> 00:39:01,000
Like we released song Green, it's like we really like

891
00:39:01,000 --> 00:39:03,039
our CI is trustworthy and we run it all the time.

892
00:39:03,440 --> 00:39:05,920
There's something I want to make sure I say it

893
00:39:06,000 --> 00:39:09,159
before we get know other questions because I noticed like

894
00:39:09,800 --> 00:39:12,199
Aaron's question in our in our chat here about like

895
00:39:12,239 --> 00:39:14,800
how do you create this all these cloud servers? What

896
00:39:14,840 --> 00:39:16,920
does it look like when we actually opted into RB,

897
00:39:17,199 --> 00:39:19,320
we flipped a setting in Basel, so we said like

898
00:39:19,400 --> 00:39:22,519
dashed Aashknfig Eagles remote and then we signed up for

899
00:39:22,639 --> 00:39:25,840
a service that is on Google Cloud called Remote Build Execution.

900
00:39:26,480 --> 00:39:28,719
And so I'm actually partnering a lot with that team

901
00:39:28,840 --> 00:39:32,119
as they're onboarding. They started onboarding some Angular enterprises already

902
00:39:32,559 --> 00:39:34,639
they manage this whole sm of machines for you, so

903
00:39:35,360 --> 00:39:37,320
and they do all the elasticity of making sure you're

904
00:39:37,360 --> 00:39:40,280
not being builed when you're not doing builds and like yeah,

905
00:39:40,320 --> 00:39:42,920
so you're you're not going on Amazon EAC too, and

906
00:39:43,000 --> 00:39:47,280
like provisioning like you know, your own Kubernetes cluster of

907
00:39:47,360 --> 00:39:49,320
build workers, Like no, you just you just turn on

908
00:39:49,360 --> 00:39:51,800
a flag and you give Google Cloud your credit card,

909
00:39:52,320 --> 00:39:54,800
so like you can run one of these on premises,

910
00:39:54,800 --> 00:39:56,239
Like there are open source versions of it, but I

911
00:39:56,239 --> 00:39:58,119
think for most people it's just it's way more effective

912
00:39:58,159 --> 00:40:00,000
to just use a cloud service that already does it.

913
00:40:00,039 --> 00:40:01,920
Speaker 1: I don't have to learn Kubernetes and docer in order

914
00:40:01,960 --> 00:40:04,880
to use Basil, Like that's that's my goodsert of like

915
00:40:05,039 --> 00:40:06,119
gat day.

916
00:40:06,760 --> 00:40:08,800
Speaker 3: You should learn those so you can be friends with

917
00:40:08,880 --> 00:40:11,960
Dan wellyn and you get more jobs that way. There's

918
00:40:12,000 --> 00:40:14,559
lots of Kubernetes and docer are awesome, and they actually

919
00:40:14,599 --> 00:40:16,880
do have tie ins with Basil that you know, if

920
00:40:16,880 --> 00:40:19,400
that's your thing, Like we can discuss how those how

921
00:40:19,880 --> 00:40:22,360
that kind of deployment and that kind of target environment.

922
00:40:22,800 --> 00:40:25,119
You can do those builds under Basil too. But no, like,

923
00:40:25,119 --> 00:40:26,960
we have a service that does this. Everybody should check

924
00:40:26,960 --> 00:40:29,400
out if you go to Basil dot Angular dot io,

925
00:40:30,559 --> 00:40:32,079
which I guess we should put in the show notes,

926
00:40:32,119 --> 00:40:33,920
like this is the one place to go. The first

927
00:40:33,960 --> 00:40:36,039
thing under resources is a link to this remote build

928
00:40:36,079 --> 00:40:37,000
execution service.

929
00:40:37,440 --> 00:40:39,960
Speaker 1: Okay, So I'm currently we're going with a team where

930
00:40:39,960 --> 00:40:43,519
there's thirty developers and I'm trying to understand the words

931
00:40:43,559 --> 00:40:46,039
you're saying and apply it to the.

932
00:40:46,119 --> 00:40:46,880
Speaker 3: Like this team.

933
00:40:47,719 --> 00:40:50,400
Speaker 1: Just yeah, I do this anytime I'm listening to podcasts

934
00:40:50,440 --> 00:40:52,719
and I'm listening to you, Like, all right, how does

935
00:40:52,760 --> 00:40:55,440
this apply to me? So, like, let's say I'm on

936
00:40:55,480 --> 00:40:57,800
the team with these thirty with these thirty folks and

937
00:40:58,880 --> 00:41:01,760
uh person, like way over in their stead room they

938
00:41:01,880 --> 00:41:05,639
changed some file right and that and that, So do

939
00:41:05,679 --> 00:41:07,960
I run this at debt time? And then that puts

940
00:41:08,039 --> 00:41:11,320
like pushes like the I can't remember what you called it,

941
00:41:11,360 --> 00:41:14,440
the output, the the.

942
00:41:13,719 --> 00:41:15,519
Speaker 3: Intermediate build artifact, Yeah, the.

943
00:41:15,480 --> 00:41:19,840
Speaker 1: Builder, the I b A. It pushes the IVA out

944
00:41:19,880 --> 00:41:24,639
to some like team build process that Google provision for

945
00:41:24,679 --> 00:41:26,360
me because I use the link you just told us

946
00:41:26,400 --> 00:41:29,119
to go to, and then next time I make a commit,

947
00:41:29,280 --> 00:41:31,840
it doesn't have to do that step because it did

948
00:41:31,840 --> 00:41:33,880
that step when he when that person started he or

949
00:41:33,920 --> 00:41:36,079
she when they did it, it did it. Then.

950
00:41:36,280 --> 00:41:39,840
Speaker 3: So my builds faster because am I understanding it?

951
00:41:39,880 --> 00:41:40,000
Speaker 1: Right?

952
00:41:40,039 --> 00:41:41,719
Speaker 3: Like my my current builds faster.

953
00:41:41,599 --> 00:41:45,199
Speaker 1: Because when they made the change on their machine, that

954
00:41:45,320 --> 00:41:47,760
IBA got pushed out at that time, and then all

955
00:41:47,800 --> 00:41:49,599
builds that need that in the future are faster.

956
00:41:50,039 --> 00:41:53,639
Speaker 3: Explained to understand it, Yes, that that is correct. You

957
00:41:53,719 --> 00:41:56,480
kind of those build artifacts with your co workers so

958
00:41:56,519 --> 00:41:59,280
you don't have to redo work that's identical to the work

959
00:41:59,280 --> 00:42:01,679
they already did. So if there's thirty of us and

960
00:42:01,679 --> 00:42:03,400
we're all sharing the same and.

961
00:42:03,320 --> 00:42:05,840
Speaker 1: I'm not even like building, I'm just doing like I'm

962
00:42:05,840 --> 00:42:08,199
in dev mode, it's not even pushed out to a server.

963
00:42:08,280 --> 00:42:12,480
I can my reloads really be like instant just because

964
00:42:12,519 --> 00:42:14,559
we're all sharing the same IVAS, like is that kind

965
00:42:14,559 --> 00:42:15,440
of what we're talking about.

966
00:42:16,119 --> 00:42:18,159
Speaker 3: Yeah, I mean the the the important use case to

967
00:42:18,199 --> 00:42:20,079
think about is like you come in the morning and

968
00:42:20,119 --> 00:42:23,840
you do your first like you know, energy serve, Like

969
00:42:23,920 --> 00:42:27,119
after you sync to heead have to compile all the

970
00:42:27,159 --> 00:42:29,519
typeescript and run all this ass and like you know,

971
00:42:29,760 --> 00:42:33,199
like twitting and whatever else is in the in the

972
00:42:33,239 --> 00:42:36,400
critical path to bring your local server up, and all

973
00:42:36,440 --> 00:42:39,119
those steps should be cashion. It's because it's like somebody

974
00:42:39,159 --> 00:42:40,800
already did it before you got in, or the CI

975
00:42:40,920 --> 00:42:41,679
already did it.

976
00:42:41,960 --> 00:42:44,880
Speaker 1: And basic will just be like, oh wait, I'm just

977
00:42:45,039 --> 00:42:48,599
I'm just using the uh the thing in the in

978
00:42:48,679 --> 00:42:51,880
the remote build server thing that you guys all share now.

979
00:42:52,320 --> 00:42:54,239
Speaker 3: Yeah, I mean the simple thing. Actually, you can set

980
00:42:54,280 --> 00:42:56,480
up a cash in your office and it's just a

981
00:42:56,480 --> 00:42:59,920
WebDAV server. So like forget about the road execution part.

982
00:43:00,039 --> 00:43:02,159
Let's say you're like execution always happens here on your

983
00:43:02,199 --> 00:43:04,440
laptop because this is much simpler to set up just

984
00:43:04,559 --> 00:43:06,639
web deft server with like a you know, like a

985
00:43:06,679 --> 00:43:09,280
fast solid state disc or something, and like you all

986
00:43:09,320 --> 00:43:11,199
point to it and yeah, now you can share those

987
00:43:11,280 --> 00:43:13,159
you can share build artifacts with your coworkers.

988
00:43:13,400 --> 00:43:15,760
Speaker 1: So I'm going to come back to a different question

989
00:43:15,840 --> 00:43:18,559
that Joe asked earlier, because it sounds like maybe the

990
00:43:18,599 --> 00:43:21,280
answers even if my bill doesn't take an hour, it

991
00:43:21,360 --> 00:43:24,599
still sounds really beneficial because with the CLI, I've seen

992
00:43:24,679 --> 00:43:28,039
times where or just with Webpack in general, I've seen

993
00:43:28,039 --> 00:43:30,519
times where I make one file change and it's like

994
00:43:30,639 --> 00:43:34,000
twenty seconds to recompile and refresh.

995
00:43:33,559 --> 00:43:35,280
Speaker 3: My page to make sure nothing broke right.

996
00:43:35,719 --> 00:43:39,360
Speaker 1: It sounds like le Basolo, it would be like most

997
00:43:39,440 --> 00:43:41,840
of that the input's the same, so I don't need

998
00:43:41,880 --> 00:43:43,840
to recompile, Like is that just.

999
00:43:43,880 --> 00:43:48,119
Speaker 3: This is where like so for this example, like my

1000
00:43:48,159 --> 00:43:49,920
webpack was slow to come up, Well, first of all,

1001
00:43:50,039 --> 00:43:52,039
the webpac team is already working on this, and like

1002
00:43:52,159 --> 00:43:55,599
Webpac five is going to have an on disc pash

1003
00:43:55,719 --> 00:43:57,880
so that when you restart the webpack dev server, you're

1004
00:43:57,920 --> 00:44:00,719
not you don't get a cold boot. So so like yeah,

1005
00:44:00,719 --> 00:44:02,400
I mean like everybody in the ecosystem is working on

1006
00:44:02,440 --> 00:44:04,039
solving the same problems. It's not like Basil has the

1007
00:44:04,039 --> 00:44:07,039
only solution to these problems. So like one answer is well, yeah,

1008
00:44:07,039 --> 00:44:09,480
I mean like when like webpac is going to improve

1009
00:44:09,559 --> 00:44:11,519
and like you're not going to wait for cold starts

1010
00:44:11,559 --> 00:44:13,719
as much. The next part of the answer is okay,

1011
00:44:13,719 --> 00:44:15,880
So let's say, like we do think like webpac is

1012
00:44:15,920 --> 00:44:18,039
doing more work than it should need to do. We

1013
00:44:18,119 --> 00:44:19,760
have to break it down a little bit and like

1014
00:44:19,800 --> 00:44:22,920
profile webpack and say, okay, is the slow step, Like

1015
00:44:23,039 --> 00:44:25,559
in the worst case, the slow step is read the

1016
00:44:25,719 --> 00:44:27,880
graph of all of my import statements in my code

1017
00:44:27,880 --> 00:44:29,400
and figure out where to do the code splitting and

1018
00:44:29,400 --> 00:44:30,880
how to like make the chunks and if I have

1019
00:44:30,920 --> 00:44:33,719
the common chunks plug in, then like calculate which chunks

1020
00:44:33,719 --> 00:44:36,760
are in common between between two routes. Let's say, if

1021
00:44:36,760 --> 00:44:40,119
I'm doing route based code splitting, that's a global program analysis.

1022
00:44:40,199 --> 00:44:42,519
Like you change any file you might have, you know,

1023
00:44:42,599 --> 00:44:44,920
some common chunk that now includes something it didn't before.

1024
00:44:45,320 --> 00:44:47,239
And if that's the slow step, Basil doesn't just make

1025
00:44:47,280 --> 00:44:50,559
that magically faster, because a global program analysis still needs

1026
00:44:50,599 --> 00:44:51,760
to be run and it's going to take the same

1027
00:44:51,800 --> 00:44:54,719
amount of time. Like Basil just knows how to run processes,

1028
00:44:54,719 --> 00:44:57,480
like it just spawns processes. So it's really the question

1029
00:44:57,599 --> 00:44:59,320
is that you have to, like if you could see

1030
00:44:59,320 --> 00:45:01,400
the graph of what's happening inside of webpac, if you

1031
00:45:01,400 --> 00:45:05,000
could see like the type trip compile separate from calculating

1032
00:45:05,039 --> 00:45:07,599
the chunks, then you would know, Okay, like if I'm

1033
00:45:07,639 --> 00:45:10,519
spending time in something that could be incremental or parallelizable

1034
00:45:10,920 --> 00:45:13,199
versus I'm spending time in something that like is going

1035
00:45:13,239 --> 00:45:14,559
to be the same no matter who runs it.

1036
00:45:14,840 --> 00:45:17,440
Speaker 4: Okay. So I always like to hear about the why

1037
00:45:17,480 --> 00:45:19,679
behind tools and the kind of problem you're solving. Have

1038
00:45:19,760 --> 00:45:23,039
you had any just spectacular horror stories that you feel

1039
00:45:23,039 --> 00:45:24,880
like Basils really going to step up to the plate

1040
00:45:24,960 --> 00:45:28,079
and solve, like any just ridiculous build times that you

1041
00:45:28,079 --> 00:45:29,440
can't even imagine happened.

1042
00:45:30,119 --> 00:45:33,480
Speaker 3: I mean, I live in the A in a special bubble,

1043
00:45:34,000 --> 00:45:36,280
like you know, internally at Google, we've had Basil since

1044
00:45:36,280 --> 00:45:41,000
I started, and like you know, on the Angular project, yeah,

1045
00:45:41,039 --> 00:45:43,840
like we had we had builds that the tickle on time.

1046
00:45:43,880 --> 00:45:47,239
We've been using Basil for two years. I think, like

1047
00:45:47,280 --> 00:45:52,079
I think Angular six was shipped, like was built by Basil,

1048
00:45:52,079 --> 00:45:53,519
and then we pushed a ten PM from there.

1049
00:45:53,840 --> 00:45:56,800
Speaker 1: It is don't name names, but tell us your horror story.

1050
00:45:56,920 --> 00:46:01,239
Give us the horror story. Don't name names matters here,

1051
00:46:01,280 --> 00:46:03,719
but give us the horror story. I like Jen's question.

1052
00:46:04,239 --> 00:46:05,840
Speaker 3: I would love to tell you a great horror story.

1053
00:46:05,880 --> 00:46:06,800
I'm trying to think of one.

1054
00:46:07,199 --> 00:46:09,000
Speaker 4: I mean, you don't get like people complaining on give

1055
00:46:09,039 --> 00:46:10,960
it Hub being like oh my gosh, my buildtime was this,

1056
00:46:11,039 --> 00:46:14,639
and you're like okay, well, or you just like blinders,

1057
00:46:14,679 --> 00:46:16,440
don't don't pay attention. No.

1058
00:46:16,519 --> 00:46:18,679
Speaker 3: I mean I've talked to some some Angular customers and

1059
00:46:18,960 --> 00:46:21,159
they tell me like their overall build time is like

1060
00:46:21,239 --> 00:46:24,000
you know, we wait ninety minutes to you know, like

1061
00:46:24,079 --> 00:46:25,760
build the whole thing, or like you know how much

1062
00:46:25,840 --> 00:46:29,079
ram that needs to go into their build. And I think, yeah,

1063
00:46:29,119 --> 00:46:32,159
there are some extreme cases like that that sound totally crazy. Here,

1064
00:46:32,239 --> 00:46:34,119
let me let me tell you this horror story. It's

1065
00:46:34,119 --> 00:46:38,400
not the one you're looking for. Oh imagine. So, so

1066
00:46:38,440 --> 00:46:41,639
Google has this mono repo, and the mono repo means

1067
00:46:41,679 --> 00:46:44,119
like everything is compiled from source. Right, So if you

1068
00:46:44,159 --> 00:46:46,159
want to build your Angular app, you first have to

1069
00:46:46,159 --> 00:46:48,360
build Angular. You want to build Angular, you first have

1070
00:46:48,400 --> 00:46:50,960
to build the type strip compiler, and like goes all

1071
00:46:51,000 --> 00:46:53,719
the way down. Okay, So here's the horror story. Googler

1072
00:46:53,760 --> 00:46:55,519
comes in on their first day and is like oh okay,

1073
00:46:55,639 --> 00:46:57,519
mg knew and then like, let's build the app. And

1074
00:46:57,559 --> 00:47:00,440
it says like compiling clang, right, you're come piling the

1075
00:47:00,440 --> 00:47:03,719
C plus plus tool and you're like, oh my god,

1076
00:47:03,840 --> 00:47:06,159
and like because like you're like, oh my god, Like

1077
00:47:06,440 --> 00:47:09,760
I think we compile node from source in the Mono repo, right,

1078
00:47:09,760 --> 00:47:12,079
like we have the sources for node, and obviously, like

1079
00:47:12,079 --> 00:47:14,039
in order to compile typescript first you need node. In

1080
00:47:14,199 --> 00:47:15,840
order to get node, you first have to compile it.

1081
00:47:16,320 --> 00:47:18,639
So the horror story is, yeah, we actually built everything

1082
00:47:18,679 --> 00:47:21,960
from head but like, thank goodness there's remote cashing because

1083
00:47:22,000 --> 00:47:23,880
like there's no way anybody would ever do one of

1084
00:47:23,880 --> 00:47:27,440
these builds, right, yeah, that would be horrible. Yeah, my

1085
00:47:27,440 --> 00:47:30,199
horror story was really more like yet another sales project

1086
00:47:30,199 --> 00:47:30,719
I'm working on.

1087
00:47:30,800 --> 00:47:34,880
Speaker 1: Sorry, yeah there was also another like a Google's really awesome.

1088
00:47:35,679 --> 00:47:38,039
Speaker 3: I mean there are times that that's handy, right, So

1089
00:47:38,159 --> 00:47:40,639
like we can like bring in a node, a new

1090
00:47:40,679 --> 00:47:43,199
like node binary and then test everything and see what breaks,

1091
00:47:43,239 --> 00:47:45,559
because it's all yeah, that's cool.

1092
00:47:45,760 --> 00:47:49,199
Speaker 1: All right, Well, uh thanks for letting us grill you

1093
00:47:49,239 --> 00:47:52,239
with questions. I learned a life like other life, Like

1094
00:47:52,239 --> 00:47:54,880
I'm more well prepared than I was before the podcast

1095
00:47:54,920 --> 00:47:57,519
to kind of work with these things. So there's many

1096
00:47:57,559 --> 00:47:59,760
people with questions and they might want to reach out

1097
00:47:59,760 --> 00:47:59,960
to you.

1098
00:48:00,000 --> 00:48:01,119
Speaker 3: How do people get ahold of you?

1099
00:48:01,159 --> 00:48:02,920
Speaker 1: What's like, what's the best way what would you prefer

1100
00:48:03,000 --> 00:48:04,320
the community to reach out to you at?

1101
00:48:04,960 --> 00:48:07,079
Speaker 3: So you can start from basil, dot angle, dot io

1102
00:48:07,679 --> 00:48:10,159
and you know, read through the resources there we have,

1103
00:48:10,360 --> 00:48:12,519
you know, like obviously, like I don't have enough time

1104
00:48:12,519 --> 00:48:16,920
to answer you know, hundreds of questions a day, so like, yeah,

1105
00:48:16,960 --> 00:48:19,320
get her, I don't. I don't actually follow get her.

1106
00:48:19,320 --> 00:48:22,239
There's a slack for basil, so you start using it.

1107
00:48:22,280 --> 00:48:24,800
You can you can go search for basil slack Joe

1108
00:48:25,199 --> 00:48:26,800
Joe another slack bro.

1109
00:48:26,920 --> 00:48:29,280
Speaker 5: I'm excited. I'm definitely joining up.

1110
00:48:31,239 --> 00:48:33,880
Speaker 3: Memory. You can commit to a chat. It's good.

1111
00:48:34,199 --> 00:48:36,119
Speaker 2: I'm my goal is to get to an into one

1112
00:48:36,159 --> 00:48:38,639
hundred Slack organizations.

1113
00:48:38,679 --> 00:48:41,320
Speaker 4: Are you being sarcastic? Do you want to.

1114
00:48:43,239 --> 00:48:46,639
Speaker 3: Memory that he has to run slack from a cloud.

1115
00:48:47,920 --> 00:48:53,280
Speaker 5: Actually use basil just for slack though, and every time

1116
00:48:53,320 --> 00:48:53,679
there's a.

1117
00:48:53,599 --> 00:48:55,519
Speaker 2: Message that has to go through and figure out all right,

1118
00:48:55,760 --> 00:48:56,320
based on.

1119
00:48:56,239 --> 00:48:58,679
Speaker 5: This message, how many instances do we need?

1120
00:49:00,000 --> 00:49:02,639
Speaker 4: Okay, maybe that's like Basil's new pitch. Though you don't

1121
00:49:02,639 --> 00:49:04,199
have to close Slack to run it.

1122
00:49:04,760 --> 00:49:09,000
Speaker 1: Yeah, Basil build your Angular app and chat.

1123
00:49:12,480 --> 00:49:14,639
Speaker 4: Literally you need to hire us to be the new

1124
00:49:14,639 --> 00:49:15,320
marketing team.

1125
00:49:17,440 --> 00:49:19,280
Speaker 3: Well no, now I'm just thinking about like, hey, like,

1126
00:49:19,280 --> 00:49:21,360
what are the Basil rules look like for building an

1127
00:49:21,360 --> 00:49:23,679
electron app, because so I could actually build slack itself.

1128
00:49:23,719 --> 00:49:27,360
But that's funny. There's also DevRel at angular dot io,

1129
00:49:28,199 --> 00:49:30,639
so then you can send questions over to I assume

1130
00:49:30,639 --> 00:49:35,079
most people listening to Minko getchev. He's he's their community,

1131
00:49:35,119 --> 00:49:37,000
and he's he's he's on our team now, and he's

1132
00:49:37,079 --> 00:49:40,480
he's working. He's he's the DevRel contact for Basil. He

1133
00:49:40,519 --> 00:49:43,239
answers a lot of stuff. Too cool. We're gonna move

1134
00:49:43,239 --> 00:49:44,039
on to the pick section.

1135
00:49:45,119 --> 00:49:47,280
Speaker 1: I had to pick. I'm trying to camera my pic.

1136
00:49:47,880 --> 00:49:51,280
I may go pickless and the A'm going pickless. Oh wait, no, no,

1137
00:49:51,280 --> 00:49:55,519
no pick here. It is acts throwing. You have to

1138
00:49:55,559 --> 00:49:58,000
grow a beard to do it, so that's the one downside.

1139
00:49:58,679 --> 00:50:00,960
You don't have to grow a beard. You rent an

1140
00:50:01,000 --> 00:50:04,719
axe and they they rent you a wooden wall to

1141
00:50:04,719 --> 00:50:05,159
throw it at.

1142
00:50:05,239 --> 00:50:07,000
Speaker 3: It's pretty amazing acts starring.

1143
00:50:07,039 --> 00:50:10,320
Speaker 1: If you've never done it, it doesn't really feel very

1144
00:50:10,519 --> 00:50:13,400
it doesn't sound very social to me. It doesn't feel

1145
00:50:13,440 --> 00:50:15,679
like inherently a great date activity.

1146
00:50:16,440 --> 00:50:18,360
Speaker 3: I love it. It felt like it was a really

1147
00:50:18,360 --> 00:50:19,280
fun date activity.

1148
00:50:19,360 --> 00:50:20,880
Speaker 1: It's real, it's real fun to hang out with your

1149
00:50:20,880 --> 00:50:23,039
friends too, So it's it's it's it's kind of an

1150
00:50:23,119 --> 00:50:24,840
all activity anyway, just saying.

1151
00:50:24,920 --> 00:50:26,440
Speaker 4: Did you never play darts at the bar?

1152
00:50:27,239 --> 00:50:27,480
Speaker 1: Yeah?

1153
00:50:27,559 --> 00:50:30,519
Speaker 3: I mean I've never murdered anyone with a dart though, Well.

1154
00:50:30,400 --> 00:50:32,719
Speaker 4: I mean, wait, who do you murder with an ax?

1155
00:50:33,599 --> 00:50:36,840
Speaker 1: I've never heard of anyone murdering I meant, I've never

1156
00:50:36,880 --> 00:50:38,880
heard of anyone murdering people with darts, That is what

1157
00:50:39,000 --> 00:50:39,400
I meant.

1158
00:50:39,920 --> 00:50:42,639
Speaker 3: So access brutal, man access brutal.

1159
00:50:42,760 --> 00:50:47,039
Speaker 1: So so yeah, acts throwing, that's my pick, Jennifer, you

1160
00:50:47,039 --> 00:50:49,280
want to go next on the picks?

1161
00:50:49,519 --> 00:50:53,519
Speaker 4: Oh gosh, my pick is such trash so scandalous. News

1162
00:50:53,559 --> 00:50:57,760
broke out in Bachelor Nation yesterday from Reality See with

1163
00:50:58,360 --> 00:51:00,599
one of the contestants having a girlfriend and back home

1164
00:51:00,639 --> 00:51:03,400
the whole time. So I've just been like deep down

1165
00:51:03,400 --> 00:51:06,280
the Reddit rabbit hole of all the spoilers happening from

1166
00:51:06,280 --> 00:51:07,480
the season. It's great.

1167
00:51:07,920 --> 00:51:11,280
Speaker 3: So is your your pickage is the bachelor or.

1168
00:51:11,519 --> 00:51:13,400
Speaker 2: Is it having your girl friend at home while you

1169
00:51:13,440 --> 00:51:16,000
compete on a dating show, which I'm.

1170
00:51:16,800 --> 00:51:20,360
Speaker 4: Okay, basically all the drama coming off season.

1171
00:51:20,760 --> 00:51:23,280
Speaker 5: Basic pick is drama, pick is Reality TV.

1172
00:51:24,480 --> 00:51:27,519
Speaker 3: Channel is from Reality TV.

1173
00:51:27,960 --> 00:51:30,719
Speaker 4: And I'm really excited because in case you see, I'm

1174
00:51:30,719 --> 00:51:33,159
giving a pub con talk if choosing a jobascrit primework

1175
00:51:33,199 --> 00:51:35,280
well as like an episode of The Bachelorette, and I'm

1176
00:51:35,280 --> 00:51:36,960
doing it on the season of the Bachelorette, So I've

1177
00:51:37,000 --> 00:51:38,840
got primo material to work with.

1178
00:51:39,039 --> 00:51:42,119
Speaker 1: Yeah, it was almost like it was serendipitously planned for you.

1179
00:51:42,800 --> 00:51:47,280
Speaker 2: That's good, Joe, you have a you have a have

1180
00:51:47,480 --> 00:51:51,400
got two picks. Actually, my first pick is soccer.

1181
00:51:51,800 --> 00:51:58,679
Speaker 5: Okay, right now? The World Cup? Yeah, yeah, surprising.

1182
00:51:59,559 --> 00:52:01,119
Speaker 2: Looking into the history of the word soccer is a

1183
00:52:01,280 --> 00:52:03,760
very interesting thing to do, by the way, But soccer

1184
00:52:03,840 --> 00:52:06,159
is awesome right now. Football for the outside of the

1185
00:52:06,280 --> 00:52:09,639
US right now it's going on and the Women's World Cup.

1186
00:52:09,760 --> 00:52:13,960
And what's particularly great about that is the US dominates

1187
00:52:14,599 --> 00:52:19,440
in women's world soccer. We are, you know, a clear, clear,

1188
00:52:19,840 --> 00:52:25,039
clearly dominant force. They just trashed Thailand thirteen to nothing.

1189
00:52:25,320 --> 00:52:29,400
Thailand was great competitors, by the way, but yeah, thirteen

1190
00:52:29,440 --> 00:52:33,559
to nothing of biggest thirteen thirteen, the biggest score and

1191
00:52:33,639 --> 00:52:36,679
biggest gap and biggest set out ever in World Cup

1192
00:52:36,719 --> 00:52:38,599
history and the history of the of.

1193
00:52:38,559 --> 00:52:41,400
Speaker 5: The human race ever since cavemen started bashing.

1194
00:52:42,000 --> 00:52:44,880
Speaker 4: How do you feel about the pushback against the team

1195
00:52:44,960 --> 00:52:46,760
for dominating that badly instead.

1196
00:52:46,440 --> 00:52:50,480
Speaker 2: Of like, well, you can only sub three times, So

1197
00:52:50,519 --> 00:52:53,000
that's one reason, and they did use all three steps.

1198
00:52:53,039 --> 00:52:55,960
But to answer Jennifer's question, some of the responses that

1199
00:52:56,000 --> 00:52:58,960
I heard I thought were really particularly on point.

1200
00:52:59,159 --> 00:53:01,000
Speaker 5: One of the responses is, this is the men who

1201
00:53:01,079 --> 00:53:02,320
we having this conversation.

1202
00:53:02,559 --> 00:53:05,159
Speaker 2: I'm not sure that's true or not, because this has

1203
00:53:05,199 --> 00:53:07,960
never happened with the men, because the men are, you know,

1204
00:53:08,079 --> 00:53:11,320
not that good, right, Like the women are awesome and

1205
00:53:11,360 --> 00:53:13,840
the men are pretty down, you.

1206
00:53:13,800 --> 00:53:15,280
Speaker 5: Know, at the bottom of the barrel.

1207
00:53:15,440 --> 00:53:18,239
Speaker 2: Being thirtieth or fortieth in the world is kind of

1208
00:53:18,320 --> 00:53:22,559
like being last. So one we can't know that, we

1209
00:53:22,599 --> 00:53:24,800
can't know if this would happen, if this happened, like

1210
00:53:24,840 --> 00:53:27,840
the biggest We had an eight to one with Brazil

1211
00:53:28,320 --> 00:53:32,679
and Germany last World Cup and like a ton of

1212
00:53:32,679 --> 00:53:35,960
people lost their jobs, but that's nothing compared to thirteen

1213
00:53:36,000 --> 00:53:39,360
to nothing. The second thing that somebody said, which was

1214
00:53:39,960 --> 00:53:42,079
then maybe this will be a wake up call to

1215
00:53:42,159 --> 00:53:44,159
countries around the world to spend more time and energy

1216
00:53:44,199 --> 00:53:47,880
but on their women's soccer programs. Really dig that one, right,

1217
00:53:48,320 --> 00:53:52,079
And I do believe in fairness and not running up

1218
00:53:52,119 --> 00:53:55,639
the score in the non competitive levels. But when you

1219
00:53:55,679 --> 00:54:00,280
hit a certain level, I personally am saying, hey, women

1220
00:54:00,440 --> 00:54:03,719
deserve to prove how great they are. They absolutely deserve

1221
00:54:03,760 --> 00:54:05,159
to prove how great they are, and the rest of

1222
00:54:05,159 --> 00:54:08,719
the world should understand how dominant this particular team at

1223
00:54:08,719 --> 00:54:09,760
this particular time is.

1224
00:54:09,840 --> 00:54:13,559
Speaker 1: Oh, Joe, you're you're comfortable with Michael, Jordan and Kobe

1225
00:54:13,599 --> 00:54:18,039
winning all those championships too? Then well, wait a second,

1226
00:54:18,039 --> 00:54:21,280
we're talking about and is not scored.

1227
00:54:21,880 --> 00:54:24,840
Speaker 2: Come on, we're talking about a different mechanic here. That's

1228
00:54:24,880 --> 00:54:28,159
the I'm I'm like stacking a particular team within a.

1229
00:54:28,159 --> 00:54:30,920
Speaker 5: Market, right, I agree with you.

1230
00:54:30,960 --> 00:54:31,440
Speaker 3: I agree.

1231
00:54:31,719 --> 00:54:34,559
Speaker 2: I don't believe LA should ever be allowed to play

1232
00:54:34,679 --> 00:54:37,880
in any professional sport ever. Again, like there should not

1233
00:54:38,000 --> 00:54:40,880
be they Ell should not be able to field professional

1234
00:54:40,880 --> 00:54:43,159
sports from now on until his the end of time.

1235
00:54:43,199 --> 00:54:46,000
Speaker 5: But that's a different matter. That's speaking from a small market.

1236
00:54:46,800 --> 00:54:48,159
Second second pick.

1237
00:54:48,639 --> 00:54:52,119
Speaker 2: Second pick is playing dudges of dragons with Aaron Frost,

1238
00:54:52,159 --> 00:54:54,559
not just I picked Dudges of Dragons before, but I'm

1239
00:54:54,559 --> 00:54:57,000
going to pick playing Dudges of Dragons with Aaron Frost.

1240
00:54:57,519 --> 00:55:00,840
We've had such amazing times and such hlarious stuff, and

1241
00:55:01,239 --> 00:55:03,239
playing without him there's about a folk you guys have

1242
00:55:03,280 --> 00:55:05,960
to play without Aaron and it's been fun. But he

1243
00:55:06,079 --> 00:55:09,119
just he adds a really fun element. Aaron is just

1244
00:55:09,199 --> 00:55:10,679
a really great guy to do it.

1245
00:55:10,639 --> 00:55:11,480
Speaker 5: Just about anything with.

1246
00:55:11,639 --> 00:55:14,719
Speaker 2: But I will say Dungeons and Dragons. I've seen something

1247
00:55:14,800 --> 00:55:18,760
happen at our table that you could not possibly script right,

1248
00:55:18,880 --> 00:55:23,440
Like a writer couldn't come up with nothing that acquisitions incorporated.

1249
00:55:23,760 --> 00:55:25,800
What are the big ones? The Adventure Zone and what's

1250
00:55:25,840 --> 00:55:28,760
the other one? The other big D and D all

1251
00:55:28,800 --> 00:55:31,360
the voice actors and they have the video show?

1252
00:55:31,360 --> 00:55:32,320
Speaker 3: What is that?

1253
00:55:32,119 --> 00:55:32,159
Speaker 4: No?

1254
00:55:33,960 --> 00:55:36,320
Speaker 2: No, oh my gosh, I can't believe. I'm like embarrassed

1255
00:55:36,360 --> 00:55:38,519
to not know this, But everybody else is. Everybody's listening

1256
00:55:38,519 --> 00:55:38,719
to this.

1257
00:55:38,760 --> 00:55:40,039
Speaker 5: It's it all in the D and D is gonna

1258
00:55:40,039 --> 00:55:42,559
be like, dude, is this and whatever it is?

1259
00:55:43,199 --> 00:55:45,800
Speaker 2: None of them have done anything as amazing as what

1260
00:55:45,840 --> 00:55:46,920
has happened at our table.

1261
00:55:46,960 --> 00:55:48,719
Speaker 5: I can guarantee it. I will put money on it.

1262
00:55:49,119 --> 00:55:51,639
Speaker 2: You can't pick something that was as awesome and as

1263
00:55:51,679 --> 00:55:53,639
funny as what happened to us at the end of

1264
00:55:53,719 --> 00:55:54,880
our last adventure.

1265
00:55:55,000 --> 00:55:58,280
Speaker 6: So yeah, So, Jennifer, just to kind of give you insight,

1266
00:55:58,400 --> 00:56:03,559
I created the I created a character who's the oblivious

1267
00:56:04,119 --> 00:56:07,280
male in the room and he.

1268
00:56:07,360 --> 00:56:11,760
Speaker 1: Does some of the stupidest stuff because he's ignorant to

1269
00:56:12,000 --> 00:56:13,719
like norms and stuff.

1270
00:56:13,800 --> 00:56:18,760
Speaker 3: And he's so fun to play. It's it's so ridiculous.

1271
00:56:18,880 --> 00:56:20,719
I get to make up a story.

1272
00:56:20,400 --> 00:56:26,280
Speaker 1: About what I think the dumb all all man is

1273
00:56:26,360 --> 00:56:29,800
and he's it's just the funnest character. So yeah, anyway,

1274
00:56:30,320 --> 00:56:33,679
thanks Joe. All Right, Alex, do you have any picks?

1275
00:56:34,000 --> 00:56:35,480
Speaker 3: Yeah, I can give you a pick. Do you think

1276
00:56:35,480 --> 00:56:39,400
anybody's still listening at this point? Like soccer? I guess

1277
00:56:40,000 --> 00:56:41,719
so I talk.

1278
00:56:41,639 --> 00:56:44,039
Speaker 1: About testing and soccer, So if they're still here, they're

1279
00:56:44,079 --> 00:56:44,760
real fans.

1280
00:56:44,880 --> 00:56:49,039
Speaker 3: Yeah, Jordan benningson amazing like rookie goalie only played half

1281
00:56:49,039 --> 00:56:52,440
a season, wins wins the Stanley Cup. You know, maybe

1282
00:56:52,440 --> 00:56:54,320
people are still listening because they're driving in their car

1283
00:56:54,360 --> 00:56:56,199
and they know it's not safe to like, you.

1284
00:56:56,239 --> 00:56:58,960
Speaker 5: Know, up pick up their phone in my podcast.

1285
00:56:59,360 --> 00:57:01,639
Speaker 3: So for that person, and I'm just gonna say, like yeah,

1286
00:57:01,679 --> 00:57:03,079
you're you're doing the right thing. Keep your hands on

1287
00:57:03,119 --> 00:57:08,320
the wheel, don't don't you pick stiff drivers. I only

1288
00:57:08,320 --> 00:57:10,079
have ten more minutes of filler right here before I

1289
00:57:10,079 --> 00:57:13,440
send you my pick. Okay, yeah, okay, cool, I would pick.

1290
00:57:13,960 --> 00:57:15,840
I wanted to watch some space shows. I was trying

1291
00:57:15,840 --> 00:57:17,360
to find TV shows to watch, but I have no

1292
00:57:17,440 --> 00:57:19,679
time for anything. And like, my problem with most TV

1293
00:57:19,760 --> 00:57:21,440
shows is that they're just like, oh, they have like

1294
00:57:21,440 --> 00:57:23,280
a secondary plot line, and it just takes all this

1295
00:57:23,320 --> 00:57:25,760
extra time and it's not it's not dense enough. So

1296
00:57:25,840 --> 00:57:27,320
I found the show Firefly.

1297
00:57:27,480 --> 00:57:29,159
Speaker 4: You guys, are you kidding me?

1298
00:57:29,360 --> 00:57:29,960
Speaker 3: Yeah?

1299
00:57:30,159 --> 00:57:30,880
Speaker 4: Are you choking?

1300
00:57:31,480 --> 00:57:35,360
Speaker 3: You found you joking? And maybe everybody already knows it.

1301
00:57:35,639 --> 00:57:39,880
But here, oh my god, there I found this guy.

1302
00:57:39,960 --> 00:57:42,159
You need to his name Shakespeare. I don't know if

1303
00:57:42,199 --> 00:57:43,079
you've heard of them, bro.

1304
00:57:44,159 --> 00:57:52,519
Speaker 1: I got some other things I need to tell you about.

1305
00:57:49,320 --> 00:57:53,679
Speaker 3: This movie Star Wars and on the third episode.

1306
00:57:54,400 --> 00:57:59,159
Speaker 6: Those spoilers and Firefly guys, give them some time.

1307
00:57:59,760 --> 00:58:02,320
Speaker 4: I'll else my pretty floral bonnet. I will.

1308
00:58:04,920 --> 00:58:06,880
Speaker 5: Oh Alex literally that is.

1309
00:58:06,960 --> 00:58:08,920
Speaker 2: It was by far the best sci fi show to

1310
00:58:08,920 --> 00:58:10,639
ever be on TV, absolutely barred out.

1311
00:58:10,679 --> 00:58:11,840
Speaker 5: I mean, Star Trek's great.

1312
00:58:11,920 --> 00:58:12,639
Speaker 3: Don't get me wrong.

1313
00:58:13,480 --> 00:58:17,039
Speaker 4: Have you watched the Expanse yet? I have the throne

1314
00:58:17,039 --> 00:58:21,000
both Firefly and Battle Star Galactica for me really.

1315
00:58:20,760 --> 00:58:22,920
Speaker 2: So, I was not a fan of Battle Star Galactic

1316
00:58:23,119 --> 00:58:25,239
far too dark. I don't like shows that are gonna

1317
00:58:25,480 --> 00:58:30,000
the stories around how much bad can we make humans do?

1318
00:58:30,519 --> 00:58:33,119
Speaker 5: Right? And that's the that's the core underlying plot of

1319
00:58:33,199 --> 00:58:34,159
Battlestar Galactica.

1320
00:58:34,280 --> 00:58:36,360
Speaker 3: They were all humans. They were all humans.

1321
00:58:36,719 --> 00:58:39,119
Speaker 5: Well that's true, but they were. The point was that

1322
00:58:39,320 --> 00:58:40,800
nobody cared what the cylons are doing.

1323
00:58:40,840 --> 00:58:42,360
Speaker 2: It was the humans, Like, how can we write a

1324
00:58:42,400 --> 00:58:44,320
story that shows humans devolving?

1325
00:58:44,559 --> 00:58:45,480
Speaker 5: Right? I don't know.

1326
00:58:45,519 --> 00:58:49,079
Speaker 2: I like the stories that bring humans up beds.

1327
00:58:51,320 --> 00:58:53,920
Speaker 5: Yeah, but the Expanse I thought was great. But I

1328
00:58:53,960 --> 00:58:56,559
just I really like that better than Firefly.

1329
00:58:57,159 --> 00:58:59,880
Speaker 4: Yeah, for sure, And like I am, I was dire

1330
00:59:00,199 --> 00:59:02,159
Firefly fan. I'm on the fan of I'm on the

1331
00:59:02,159 --> 00:59:04,239
fence about Joss Whedon in general right now, but like

1332
00:59:04,480 --> 00:59:07,960
loved Firefly, but for like a truly to its core

1333
00:59:08,079 --> 00:59:11,079
good sci fi show, because like Firefly is like space,

1334
00:59:11,400 --> 00:59:13,760
Pirates and good and happiness and all that is great

1335
00:59:13,760 --> 00:59:16,159
with the Whedon verse Space Cowboys, Yes, Space.

1336
00:59:16,320 --> 00:59:18,000
Speaker 5: What did I say?

1337
00:59:18,199 --> 00:59:18,800
Speaker 4: Space Fighter.

1338
00:59:19,519 --> 00:59:24,199
Speaker 2: Okay, that's not raw. You're not wrong, But yeah, did

1339
00:59:24,199 --> 00:59:25,920
you see Castle? Did you watch Castle?

1340
00:59:26,239 --> 00:59:26,679
Speaker 4: I did not.

1341
00:59:27,239 --> 00:59:31,000
Speaker 2: Oh there's there's like three payoffs after Wait.

1342
00:59:30,639 --> 00:59:32,440
Speaker 4: No, I did see the episode where he dresses up

1343
00:59:32,440 --> 00:59:34,159
as a space cowboy for Halloween. Is that what you're

1344
00:59:34,159 --> 00:59:34,800
gonna say?

1345
00:59:35,000 --> 00:59:35,119
Speaker 5: So?

1346
00:59:36,360 --> 00:59:39,599
Speaker 1: But my favorite about this pick is that Alex was like,

1347
00:59:41,159 --> 00:59:43,239
I don't know if they've ever heard of it. I mean,

1348
00:59:43,840 --> 00:59:47,360
I'm gonna say it and hopefully someone knows, hopefully is

1349
00:59:47,360 --> 00:59:48,239
not too obscure.

1350
00:59:49,079 --> 00:59:53,960
Speaker 3: And then everyone who's listening is like, oh my god. Yeah.

1351
00:59:54,719 --> 00:59:56,840
Speaker 4: So once he finished Firefly, you have to go watch

1352
00:59:56,880 --> 00:59:57,559
Doctor Horrible.

1353
00:59:58,039 --> 01:00:02,000
Speaker 5: Oh yeah, I'm making the and Castle. You should watch Castle.

1354
01:00:02,039 --> 01:00:02,920
It's a good one too.

1355
01:00:03,039 --> 01:00:06,480
Speaker 2: But I am so excited, Alex that you have discovered Firefly,

1356
01:00:06,960 --> 01:00:09,599
and you know, organically, I'm.

1357
01:00:09,480 --> 01:00:12,800
Speaker 3: So excited that you've discovered remote build execution. Joe.

1358
01:00:14,599 --> 01:00:16,519
Speaker 2: I would not say that I have discovered that, to

1359
01:00:16,559 --> 01:00:19,239
be honest, I'm gonna say somebody told me about it.

1360
01:00:19,239 --> 01:00:21,840
Speaker 5: It's like it's like hearing the Firefly is a thing. No, no, no,

1361
01:00:22,159 --> 01:00:23,239
you discovered it. I have.

1362
01:00:23,679 --> 01:00:26,519
Speaker 2: I'm just like, yeah, it's a thing, I've heard about

1363
01:00:26,519 --> 01:00:28,880
it someday I'll be cool enough to be involved. But

1364
01:00:28,960 --> 01:00:31,800
you are now joining this really awesome firefight club, and

1365
01:00:31,840 --> 01:00:32,599
I feel.

1366
01:00:32,559 --> 01:00:36,079
Speaker 5: I feel privileged, right, Like I think Alex Evil joined

1367
01:00:36,119 --> 01:00:39,519
my club. That's that's big. Yeah.

1368
01:00:39,599 --> 01:00:41,880
Speaker 1: Well, hey, I'm gonna cut this off. It's it's we're

1369
01:00:41,920 --> 01:00:44,920
an hour and fifteen, so I'm gonna end this. But Alex,

1370
01:00:45,440 --> 01:00:48,360
you are a gracious guests that you were coming on.

1371
01:00:49,159 --> 01:00:52,480
Speaker 5: Yes, yeah, thanks for listening too. This is like this

1372
01:00:52,719 --> 01:00:55,920
super awesome episode. This is this is going down, you know,

1373
01:00:56,039 --> 01:00:57,480
top one of my top ones.

1374
01:00:57,519 --> 01:00:59,800
Speaker 2: I liked this one, not just for the ending, not

1375
01:01:00,199 --> 01:01:01,320
for the discussion about the picks.

1376
01:01:01,719 --> 01:01:05,000
Speaker 3: Okay, everybody, thanks for coming. We'll check you next time. Peace.

1377
01:01:05,280 --> 01:01:05,599
Speaker 1: Peace,

