1
00:00:14,279 --> 00:00:17,760
Speaker 1: Hello, everybody, this is just Reach's Adventure and Devil. Will

2
00:00:17,760 --> 00:00:20,800
you already laughing at me? You can't put me on

3
00:00:20,839 --> 00:00:23,480
the spot? Do the intro? Now they're laughing at me?

4
00:00:24,679 --> 00:00:27,160
All right, Well, I'm Jillian Rowe and with me this

5
00:00:27,239 --> 00:00:30,760
week is Will Button and Jonathan Hall Highouse.

6
00:00:32,039 --> 00:00:34,679
Speaker 2: And technically I'm laughing with you, not at you, because

7
00:00:34,679 --> 00:00:35,439
you were laughing too.

8
00:00:37,719 --> 00:00:40,000
Speaker 1: It's okay. I only felt a little bit put on

9
00:00:40,000 --> 00:00:40,359
the spot.

10
00:00:40,399 --> 00:00:42,240
Speaker 3: I'll forgive you some day to be fair.

11
00:00:42,320 --> 00:00:44,960
Speaker 2: I did say okay, let's go and then hit record.

12
00:00:46,479 --> 00:00:48,640
Speaker 3: I'll stand with Billian that she was put on the spot,

13
00:00:48,719 --> 00:00:51,560
but I fully support putting Billian on the spot. So, yeah,

14
00:00:54,759 --> 00:00:56,119
what are we talking about today, guys?

15
00:00:56,280 --> 00:00:58,799
Speaker 1: All right, we're going to talk about c i CD tools.

16
00:00:58,920 --> 00:01:01,000
What do you use, what do you hate? Why did

17
00:01:01,039 --> 00:01:03,000
you use it? Do you get a choice? Does your

18
00:01:03,079 --> 00:01:04,799
job just like dictate it for you? Or do you

19
00:01:04,840 --> 00:01:07,120
have like some kind of some kind of input into

20
00:01:07,159 --> 00:01:09,680
this decision? Why would you make your decisions? Who wants

21
00:01:09,719 --> 00:01:11,640
to hit us up first? And I think you suggested

22
00:01:11,680 --> 00:01:13,680
the topics, so she gets put you on the spot.

23
00:01:13,480 --> 00:01:17,079
Speaker 3: Now, okay, yeah, so it's a big topic. So the

24
00:01:17,120 --> 00:01:19,599
reason I thought of it is earlier this week was

25
00:01:19,640 --> 00:01:23,439
last week on LinkedIn, one of my contacts asked the

26
00:01:23,519 --> 00:01:26,280
public which CICD tool would you like me to use?

27
00:01:26,480 --> 00:01:29,120
In a demo about how to get started with CICD,

28
00:01:29,359 --> 00:01:32,200
which led into a bigger conversation of which ones are people?

29
00:01:32,319 --> 00:01:34,640
And she did a poll which gave four options, and

30
00:01:34,920 --> 00:01:37,359
none of the four options were things I'd even used before,

31
00:01:37,560 --> 00:01:39,840
and I've used probably a dozen of them. So that

32
00:01:39,959 --> 00:01:43,680
just goes to show that there's a huge selection of

33
00:01:43,760 --> 00:01:46,519
tools to pick from. And I don't know how she

34
00:01:46,599 --> 00:01:49,480
chose her for but I think it was Jenkins and

35
00:01:49,760 --> 00:01:54,120
whatever AWS provides, and maybe Azure DevOps and I don't

36
00:01:54,120 --> 00:01:56,439
know what else. You know, it's a good conversation to have.

37
00:01:56,560 --> 00:01:58,480
I think, how do you choose one of these tools

38
00:01:58,480 --> 00:02:00,280
to use? Because there's so many and they all do

39
00:02:00,439 --> 00:02:03,879
roughly the same thing. They all automate the running of tasks,

40
00:02:04,000 --> 00:02:08,840
which can be running tests, building software, tagging releases, ordering

41
00:02:08,879 --> 00:02:11,120
pizza perhaps whatever they whatever they do, they can they

42
00:02:11,159 --> 00:02:13,879
can automate these things. So yeah, I don't know how

43
00:02:13,879 --> 00:02:16,680
we want to tackle this. I mean, if somebody asked

44
00:02:16,680 --> 00:02:19,240
me quickly, Jonathan, what CSD S will do you prefer.

45
00:02:19,319 --> 00:02:20,639
I have a quick answer to that, and that is

46
00:02:20,680 --> 00:02:23,560
get laud ci. But that's not a very useful answer

47
00:02:23,560 --> 00:02:25,960
without a lot of context, because that's not the answer

48
00:02:26,000 --> 00:02:27,879
I would get to everybody. And if ask me what

49
00:02:27,919 --> 00:02:30,319
should they do, that's a different question than what do

50
00:02:30,400 --> 00:02:32,319
I prefer? So, yeah, I don't know how we want

51
00:02:32,319 --> 00:02:33,080
to tackle this today.

52
00:02:33,439 --> 00:02:36,080
Speaker 2: I think that I think there's like two different ways

53
00:02:36,120 --> 00:02:39,800
to answer this. You know, there's I'm starting out choosing

54
00:02:39,919 --> 00:02:44,879
a CICD tool, and we have a CICD tool in

55
00:02:45,000 --> 00:02:49,120
place and we want to replace it. And for that

56
00:02:49,240 --> 00:02:55,039
latter question, my go to response is always don't. I mean,

57
00:02:55,120 --> 00:02:57,919
they all have things that they're good at and bad at,

58
00:02:58,680 --> 00:03:01,919
and the cost of transitioning from one to the other.

59
00:03:02,560 --> 00:03:05,280
There's just not enough value in it because you might

60
00:03:05,360 --> 00:03:09,960
solve one specific problem, but you're introducing other problems that

61
00:03:10,280 --> 00:03:11,719
you don't know you have problems with.

62
00:03:11,840 --> 00:03:13,520
Speaker 3: Yet I tend to agree it's.

63
00:03:13,439 --> 00:03:16,120
Speaker 1: Always a trade off. Yeah, everything like that is a

64
00:03:16,159 --> 00:03:16,639
trade off.

65
00:03:17,400 --> 00:03:20,240
Speaker 2: The best CICD is the one that you already have installed.

66
00:03:20,879 --> 00:03:24,039
Speaker 3: Usually. Yeah, So there are times when it's appropriate to change,

67
00:03:24,039 --> 00:03:27,280
but not for that reason, like if you're changing from

68
00:03:27,319 --> 00:03:29,520
at lastly and to GitHub for example, you maybe need

69
00:03:29,560 --> 00:03:31,439
to change from Bamboo to get hub actions at the

70
00:03:31,439 --> 00:03:33,879
same time, but not because you want to change your

71
00:03:33,879 --> 00:03:37,360
CSD tool, just because you're changing everything else simultaneously, for sure,

72
00:03:37,439 --> 00:03:40,240
So I would almost I mean, there have been times

73
00:03:40,240 --> 00:03:42,800
when I migrated off of a CSP tool, but there

74
00:03:42,800 --> 00:03:44,879
were cases where it was not being used properly or

75
00:03:44,919 --> 00:03:47,919
being used very little, so that there was very little

76
00:03:47,960 --> 00:03:50,800
invested and it wasn't doing much for us. So you know,

77
00:03:51,039 --> 00:03:53,080
it was basically a proof of concept that we decided

78
00:03:53,120 --> 00:03:55,199
not to continue with, if you want to make up

79
00:03:55,240 --> 00:03:57,000
that way. So that's a different scenario than I think

80
00:03:57,039 --> 00:03:59,199
what you're talking about. If you have a CICD configured

81
00:03:59,280 --> 00:04:02,680
and already doing some thing valuable, I think really hard

82
00:04:02,719 --> 00:04:06,840
before changing, really really hard. When you when you're done

83
00:04:06,919 --> 00:04:09,000
thinking hard, go think hard again.

84
00:04:10,599 --> 00:04:13,280
Speaker 1: I think there are some good stories behind these opinions.

85
00:04:13,360 --> 00:04:16,079
You guys have a like emotional trauma to share around

86
00:04:16,319 --> 00:04:18,959
switching up c I S peoples and then realizing it

87
00:04:19,000 --> 00:04:22,199
was it was a terrible, terrible mistake. Or clearly you

88
00:04:22,199 --> 00:04:24,319
guys have never made such a mistake like that, right.

89
00:04:24,360 --> 00:04:26,439
Speaker 3: No, No, I thought really hard and decided not to

90
00:04:26,519 --> 00:04:27,000
do it.

91
00:04:28,680 --> 00:04:32,600
Speaker 2: I've I think my experience forming that opinion has been

92
00:04:32,720 --> 00:04:37,519
from not from switching, but from having exposure to several

93
00:04:37,560 --> 00:04:40,160
different ones, Like I've used git Lab, I've used Jenkins,

94
00:04:40,240 --> 00:04:44,199
I've used Circle CI, Travis CI and all of them. Like,

95
00:04:44,839 --> 00:04:49,800
I can't see the value. There's a fe use cases

96
00:04:49,800 --> 00:04:52,720
for it, but I can't see on the surface the

97
00:04:52,800 --> 00:04:55,879
value in switching from one to the other because I've

98
00:04:55,920 --> 00:04:58,480
I've used a lot of them, and each has their

99
00:04:58,519 --> 00:05:03,160
own strengths and weaknesses, but enough to justify rebuilding all

100
00:05:03,240 --> 00:05:05,920
that stuff, especially if you have like a lot have

101
00:05:06,000 --> 00:05:07,800
it doing a lot. You know, if you have a

102
00:05:07,839 --> 00:05:11,439
lot of different pipelines, that's going to be some pain.

103
00:05:11,560 --> 00:05:13,600
And at the at the end, you know, what did

104
00:05:13,639 --> 00:05:16,959
you really gain? What value did the customers who are

105
00:05:17,000 --> 00:05:19,920
buying or using your product to get from you switching

106
00:05:20,079 --> 00:05:21,240
the CICD solution.

107
00:05:21,720 --> 00:05:23,519
Speaker 3: I want to add to that. And there might be

108
00:05:23,680 --> 00:05:26,480
times when it's appropriate to change, if you're using an

109
00:05:26,480 --> 00:05:30,079
anti antiquated tool, for example, or it's just too slow

110
00:05:30,480 --> 00:05:32,439
or it doesn't integrate with things you're needing to do.

111
00:05:32,839 --> 00:05:35,680
But if you go that route, don't change everything at once,

112
00:05:36,000 --> 00:05:38,600
just implement the new things you need. I know that

113
00:05:38,639 --> 00:05:40,959
there's the engineer and every one of us hates this

114
00:05:41,079 --> 00:05:44,439
idea of maintaining two systems, but it's worth it versus

115
00:05:45,279 --> 00:05:47,439
trying to do turn to ram everything of the new

116
00:05:47,480 --> 00:05:50,199
system and breaking stuff along the way, just to admit

117
00:05:50,360 --> 00:05:52,720
you're going to maintain two systems, one for the new

118
00:05:52,759 --> 00:05:55,680
stuff that immigrates with the Raspberry pies or whatever weird

119
00:05:55,720 --> 00:05:57,759
thing you're trying to do, and the old one that

120
00:05:57,839 --> 00:05:58,879
manages the old stuff.

121
00:05:59,160 --> 00:06:02,000
Speaker 1: Cool. Well, what about somebody who's switching to or not

122
00:06:02,040 --> 00:06:06,920
switching but starting clean slink projects CICD tool. What are

123
00:06:07,000 --> 00:06:08,920
kind of the scenarios where we would choose one or

124
00:06:08,959 --> 00:06:11,000
the other. I have one right off the bat. If

125
00:06:11,040 --> 00:06:13,720
you have data or some kind of data or software

126
00:06:13,759 --> 00:06:16,560
that have to be private. There are scenarios where you

127
00:06:16,600 --> 00:06:19,920
can use the open ones like GitHub, GitHub, circle, all

128
00:06:19,959 --> 00:06:22,279
that kind of thing. Most of them now, I think,

129
00:06:22,360 --> 00:06:25,920
do allow for at least some actions or like CICD

130
00:06:26,199 --> 00:06:28,279
minutes or I forget exactly how it's metered. I think

131
00:06:28,279 --> 00:06:30,199
on GitHub it's tide of the number of actions or

132
00:06:30,199 --> 00:06:33,720
the number of minutes. I forget how much for private repositories,

133
00:06:33,720 --> 00:06:37,279
but it's often quite limited. Unless you're on a public repository,

134
00:06:37,480 --> 00:06:39,560
so that could be a reason to change. You're like, Okay,

135
00:06:39,560 --> 00:06:41,639
we have this heavy duty workload. It has to be

136
00:06:41,680 --> 00:06:44,920
private for some reason, so either we need to take

137
00:06:44,920 --> 00:06:46,839
get hub a bunch of money, or we need to

138
00:06:47,240 --> 00:06:49,639
move it onto something in house like Jenkins or get

139
00:06:49,720 --> 00:06:52,680
lab that's managed internally. But really that's it. That's the

140
00:06:52,720 --> 00:06:55,600
only differentiation that I make because all my stuff is

141
00:06:55,600 --> 00:06:58,560
in make files anyways. So I can be on GitHub,

142
00:06:58,720 --> 00:07:01,199
I can be on Jenkins, be anywhere because it's called

143
00:07:01,279 --> 00:07:03,680
colin make, you know, like make tests or whatever. Then

144
00:07:03,759 --> 00:07:04,160
there we are.

145
00:07:04,439 --> 00:07:07,920
Speaker 3: So my simple answer is use whatever's easiest to get

146
00:07:07,920 --> 00:07:10,759
started with. And if you're using GitHub, that probably means

147
00:07:10,759 --> 00:07:12,759
to get hub actions. Pre using git lab it probably

148
00:07:12,759 --> 00:07:15,959
means to get lab CI. If you're using Bitbucket, it

149
00:07:15,959 --> 00:07:19,160
probably means Bamboo. If you're I don't know when it

150
00:07:19,199 --> 00:07:21,439
would ever mean Jenkins. I can't think of a reason

151
00:07:21,480 --> 00:07:25,839
to start using Jenkins unless you're already using it. So

152
00:07:26,000 --> 00:07:28,560
do you? Uh, Maybe you just want to become a

153
00:07:28,879 --> 00:07:32,600
Maybe you like pain and like to learn old systems

154
00:07:32,639 --> 00:07:35,079
because it feels fun, like, you know, get a Commodore

155
00:07:35,120 --> 00:07:37,360
sixty four at the same time, why don't you.

156
00:07:37,040 --> 00:07:39,160
Speaker 2: You can on a Commodore sixty four?

157
00:07:39,240 --> 00:07:43,879
Speaker 3: Can you? I'm sure you can't, but it sounds like

158
00:07:43,879 --> 00:07:45,759
a good project. I think I might have to learn

159
00:07:45,800 --> 00:07:51,480
Jenkins and Commodore sixty fours now. So that's my short answer. However,

160
00:07:52,360 --> 00:07:54,560
So that's what that usually means. If somebody takes that

161
00:07:54,600 --> 00:07:56,639
at face value, that probably means using get hub actions

162
00:07:56,680 --> 00:08:00,160
because it's it's easy. Most people use get hub their

163
00:08:00,240 --> 00:08:03,120
coporate actions. However, I think get how Actions is actually

164
00:08:03,120 --> 00:08:06,240
a really bad tool. It feels like a version zero

165
00:08:06,319 --> 00:08:09,360
point six of get lad ci, you know, it feels

166
00:08:09,399 --> 00:08:11,199
like it has a lot of rough edges. Still, it's

167
00:08:11,319 --> 00:08:14,720
not really intuitive to use yet. The one killer feature

168
00:08:14,759 --> 00:08:17,800
it has over get lad Ci is is this sort

169
00:08:17,839 --> 00:08:21,120
of pre bundled ability to just PLoP in other people's code,

170
00:08:21,480 --> 00:08:23,160
what do they call it their marketplace. You can just

171
00:08:23,680 --> 00:08:26,639
you know, choose an action from some random person off

172
00:08:26,639 --> 00:08:29,079
the street and start running it. It also strikes me

173
00:08:29,079 --> 00:08:33,960
as really dangerous. It's like it's like n PM for

174
00:08:33,960 --> 00:08:37,000
for get houb actions and who wants that? Really? Right?

175
00:08:38,799 --> 00:08:41,720
Speaker 1: I just picked up the Helm release from GitHub Actions.

176
00:08:41,799 --> 00:08:45,080
There's I don't know what the doctor doctor builds push

177
00:08:45,320 --> 00:08:47,120
like that's the that's all I'm doing.

178
00:08:47,840 --> 00:08:53,519
Speaker 3: So if you don't care about security.

179
00:08:53,279 --> 00:08:55,919
Speaker 1: Well see no, if you care about security, I still

180
00:08:55,919 --> 00:08:57,919
think you should be hosting it in house. That's I

181
00:08:57,919 --> 00:08:58,639
think that's well.

182
00:08:58,639 --> 00:09:01,519
Speaker 3: There's different aspects of security though, I mean, yeah, I

183
00:09:02,039 --> 00:09:04,000
mean it depends how much you care about security, right,

184
00:09:04,000 --> 00:09:05,840
But I mean if you don't care about security and

185
00:09:05,879 --> 00:09:08,559
you want easy then maybe get have actions is fine

186
00:09:08,679 --> 00:09:10,639
if you don't have to edit them yourself. If you

187
00:09:10,679 --> 00:09:12,720
need to edit them yourself, then the learning curve goes

188
00:09:12,799 --> 00:09:15,679
up really quickly compared to just picking something from the

189
00:09:16,600 --> 00:09:21,039
at least and Yammel and and more than that. I mean,

190
00:09:21,120 --> 00:09:24,399
JavaScript isn't the hard part. It's it's the format and

191
00:09:24,639 --> 00:09:26,600
the way the different actions interact with each other and

192
00:09:26,639 --> 00:09:30,159
trying to tie puzz them together. So if you need

193
00:09:30,200 --> 00:09:33,799
something more more customized, I think get lab CI is

194
00:09:33,960 --> 00:09:36,840
far easier to use and get actions for simple things,

195
00:09:36,879 --> 00:09:38,320
either any of them will work. I mean, if you're

196
00:09:38,360 --> 00:09:41,039
just writing a cell script, you can do that anywhere now.

197
00:09:41,080 --> 00:09:42,759
But if you need something more complicated, I feel like

198
00:09:42,799 --> 00:09:45,360
get lab is easier. That part of that's probably because

199
00:09:45,360 --> 00:09:47,799
I've been using it. Longer, so I have the mental

200
00:09:47,799 --> 00:09:49,879
model better in my head. But I've heard many other

201
00:09:49,879 --> 00:09:51,440
people say the same that they feel like get lab

202
00:09:51,759 --> 00:09:54,720
CI is more mature product and get have actions that

203
00:09:54,759 --> 00:09:55,840
probably won't be true forever.

204
00:09:55,919 --> 00:09:58,000
Speaker 1: I explicated, like you have to build for a bunch

205
00:09:58,039 --> 00:10:00,639
of different hardware, so you have like really complic matrix

206
00:10:00,679 --> 00:10:03,519
builds because I'm just running make tests like the time,

207
00:10:03,759 --> 00:10:05,600
like make tests the doctor build and that's.

208
00:10:05,919 --> 00:10:07,919
Speaker 3: Yeah, if that's all you're doing, you're you're pretty good

209
00:10:07,960 --> 00:10:09,879
to go. If you're trying to deploy to Kubernetes at

210
00:10:09,879 --> 00:10:12,000
the same time, you know, if if you want to

211
00:10:12,000 --> 00:10:16,320
automate your deployments to Kubernetes or to Heroku or to whatever,

212
00:10:16,679 --> 00:10:19,840
then to Firebase, then you have other things that need

213
00:10:19,879 --> 00:10:22,399
to be done. You need to integrate your your authentication

214
00:10:22,519 --> 00:10:24,399
with those things. So you know, there's a certain number

215
00:10:24,440 --> 00:10:27,399
of complex steps that need to happen. If you start

216
00:10:27,440 --> 00:10:31,440
to do interstep dependencies, things get complicated very quickly. In

217
00:10:31,480 --> 00:10:34,360
other words, say you have five repositories and they each

218
00:10:34,360 --> 00:10:37,480
film an artifact, and then whatever one of those is updated,

219
00:10:37,639 --> 00:10:40,360
you rebuild a master artifact that takes you know, those

220
00:10:40,399 --> 00:10:42,639
libraries and compiles of together the single thing and then

221
00:10:42,679 --> 00:10:44,519
deploys it. So things like that they can start to

222
00:10:44,519 --> 00:10:47,240
get complicated quickly. And no doubt you can do any

223
00:10:47,240 --> 00:10:48,919
of these things with any of the tools. It's a

224
00:10:48,960 --> 00:10:52,240
question of how difficult. And this is why, going back

225
00:10:52,279 --> 00:10:55,279
to Will's earning point, if you already have this working,

226
00:10:55,480 --> 00:10:57,000
for God's sake, don't redo it.

227
00:10:58,320 --> 00:11:03,159
Speaker 1: Yeah, I think about these like really specialized CICD tools

228
00:11:03,360 --> 00:11:05,080
that I'm starting to see pop up. So we were

229
00:11:05,120 --> 00:11:07,399
talking a bit before the show, as we do before

230
00:11:07,399 --> 00:11:10,639
we press record, about this tool that I'm using called Spacelift,

231
00:11:10,720 --> 00:11:12,759
which is I think it's kind of supposed to be

232
00:11:12,799 --> 00:11:16,200
like terraform Cloud, except hopefully hopefully less expensive for me

233
00:11:16,279 --> 00:11:18,519
and my wallet. But no, no, I'm kidding, Like it

234
00:11:18,519 --> 00:11:20,320
looks good, but it has these sort of like managed

235
00:11:20,399 --> 00:11:23,679
terraform environments, and it's very specifically for people doing terraforms

236
00:11:23,720 --> 00:11:27,240
with care about security and policies and maybe building different

237
00:11:27,320 --> 00:11:31,159
terraform modules and also protecting your like your stacks as well,

238
00:11:31,200 --> 00:11:34,840
so you can insert these policies to you know, say

239
00:11:35,440 --> 00:11:37,399
don't kill it if this happens, or kill it if

240
00:11:37,440 --> 00:11:39,120
this happens. Like these kind of things that are very

241
00:11:39,120 --> 00:11:42,519
specific to deploying infrastructure, and I think now GitHub has

242
00:11:42,519 --> 00:11:45,720
one maybe for JavaScript or for CI like you know,

243
00:11:45,799 --> 00:11:47,519
like I don't, I don't know, but I do feel

244
00:11:47,519 --> 00:11:49,000
like it's kind of a trend to see these more

245
00:11:49,120 --> 00:11:53,720
very specialized CICD services pop up for particular frameworks and

246
00:11:53,759 --> 00:11:56,039
code tools and things. Are you guys seeing that too?

247
00:11:56,519 --> 00:11:59,159
Speaker 2: I haven't, but I'm the work I'm I've been on

248
00:12:00,039 --> 00:12:03,840
stainly has been pretty generic work, you know, not anything

249
00:12:03,840 --> 00:12:07,879
specific that sounds like it's pretty pretty siloed to address

250
00:12:07,879 --> 00:12:10,600
a specific use case. And I can imagine if you're

251
00:12:10,639 --> 00:12:13,440
in that use case, you're feeling that pain. But if

252
00:12:13,440 --> 00:12:16,200
you're not in that use case, then you probably don't

253
00:12:16,200 --> 00:12:17,120
know that it exists.

254
00:12:17,639 --> 00:12:21,399
Speaker 3: So I have not used any specific tools like that,

255
00:12:21,559 --> 00:12:24,840
but I've definitely used things that are intended to plug

256
00:12:24,919 --> 00:12:29,559
into an existing CICD tool or pipeline for specific needs,

257
00:12:30,000 --> 00:12:33,360
you know, simple things. Sonarchy was an example, or depending

258
00:12:33,360 --> 00:12:36,279
on the Textec you're using, you might have specific linters

259
00:12:36,320 --> 00:12:38,960
for your for your language or your tool set. You know.

260
00:12:39,000 --> 00:12:40,159
We had a guest on if you want to go

261
00:12:40,399 --> 00:12:43,559
talking about doing this sort of analysis for Kubernet's manifests

262
00:12:43,600 --> 00:12:45,320
and you know, so that would be a tool that

263
00:12:45,399 --> 00:12:48,440
you could plug into any CICD pipeline, whether it's get

264
00:12:48,480 --> 00:12:50,840
hub or get lab or genkins or whatever. So I've

265
00:12:50,919 --> 00:12:52,480
used a lot of those, and you know, so you

266
00:12:52,519 --> 00:12:55,120
sort of build up your pipeline with all these different tools.

267
00:12:55,600 --> 00:12:59,600
Some of those sometimes are are more sasas than like

268
00:12:59,799 --> 00:13:02,600
a tool one that I've used is called coke co

269
00:13:03,039 --> 00:13:05,360
or other co covered tools. Cover alls is not the

270
00:13:05,399 --> 00:13:08,480
one where they just do like reporting of your test

271
00:13:08,480 --> 00:13:12,639
coverage stats, but they usually have a thin hook into

272
00:13:12,639 --> 00:13:16,559
your CICD tool that reports the stats with a mainline

273
00:13:16,600 --> 00:13:19,120
tool or over a STAPI or something like that, and

274
00:13:19,159 --> 00:13:21,559
then you log into their web interface to see all

275
00:13:21,559 --> 00:13:23,559
the fancy reporting you do. So that's kind of a

276
00:13:23,639 --> 00:13:26,440
hybrid solution there. You know, it's a stable one tool,

277
00:13:26,519 --> 00:13:28,960
but it hasn't hooked into your existing thing. I think

278
00:13:29,000 --> 00:13:31,559
what you're talking about is more of a holistic thing

279
00:13:31,639 --> 00:13:34,080
for a specific use case. So I'm not mistaken, And

280
00:13:34,360 --> 00:13:37,360
it sounds like it more maybe applies more to like

281
00:13:37,720 --> 00:13:40,679
a low code or no code type of product, or

282
00:13:40,720 --> 00:13:44,200
maybe not product, but like problem solving. I don't know how,

283
00:13:44,480 --> 00:13:46,200
I don't know if I understand exactly what you're saying.

284
00:13:47,200 --> 00:13:49,679
Speaker 1: What I'm seeing is a lot of enterprise companies that

285
00:13:50,159 --> 00:13:52,960
are having trouble hiring people or maybe just don't want

286
00:13:53,000 --> 00:13:56,120
to hire, you know, like as many people as they need,

287
00:13:56,120 --> 00:13:58,480
and are starting to outsource to these different agencies and

288
00:13:58,519 --> 00:14:01,600
different services. So instead of hiring their own Terrorform expert,

289
00:14:01,639 --> 00:14:04,559
they're going a Terraform cloud and signing up for whatever

290
00:14:04,600 --> 00:14:07,200
the highest SLA plan is and getting some kind of

291
00:14:07,240 --> 00:14:09,320
support through that. So I'm not even sure that it's

292
00:14:09,320 --> 00:14:11,360
so much the software as it is about to support,

293
00:14:11,600 --> 00:14:14,120
to be honest, you know, like when I'm actually looking

294
00:14:14,159 --> 00:14:16,000
at it, I'm like, ah, which way is that? So

295
00:14:16,679 --> 00:14:18,399
I don't know. I don't know because I'm still pretty

296
00:14:18,399 --> 00:14:20,080
new to these kind of things myself. I am checking

297
00:14:20,080 --> 00:14:22,639
out Spacelift for some of my like for some of

298
00:14:22,679 --> 00:14:24,559
my stacks and things, and it does look like it

299
00:14:24,600 --> 00:14:27,399
will be good, especially after I had a very expensive

300
00:14:27,399 --> 00:14:30,919
AWS bill a couple months ago last month that wasn't

301
00:14:30,919 --> 00:14:32,799
even a couple months ago. I've just got like, you know,

302
00:14:33,080 --> 00:14:34,960
I'm still upset about that. So that's kind of what

303
00:14:35,000 --> 00:14:37,080
made me start. That's what made start looking at this

304
00:14:37,159 --> 00:14:39,879
kind of thing, was that I had this really expensive AWS bill,

305
00:14:39,960 --> 00:14:42,200
and I was like, oh, maybe I should make sure

306
00:14:42,240 --> 00:14:44,759
my stacks are actually getting destroyed when I think they

307
00:14:44,799 --> 00:14:47,440
should be getting destroyed. And since I just had a

308
00:14:47,480 --> 00:14:50,120
two thousand dollars AWS bill, maybe it would be worth

309
00:14:50,159 --> 00:14:51,919
me throughout a couple hundred bucks a months at it,

310
00:14:51,919 --> 00:14:54,440
because that's I mean two thousand that's ten months of

311
00:14:54,679 --> 00:14:57,679
spacelift while I'm looking at it. So I don't know,

312
00:14:58,080 --> 00:15:01,039
I'm still figuring these things out too, Okay, anybody thought

313
00:15:01,039 --> 00:15:04,840
I had any answers? Answer is no, I don't. I'll

314
00:15:04,919 --> 00:15:06,440
just figuring along.

315
00:15:06,759 --> 00:15:09,240
Speaker 3: I'm curious to hear what's CICD tools each of us

316
00:15:09,320 --> 00:15:12,639
have used, and maybe just brief impressions, you know, if

317
00:15:12,639 --> 00:15:14,559
you liked incoins or not likedcons and why you know,

318
00:15:14,720 --> 00:15:15,480
in a sentence or.

319
00:15:15,440 --> 00:15:19,320
Speaker 2: Two, I love and hate Jenkins. You know, Yeah, I've

320
00:15:19,399 --> 00:15:21,840
used it quite a bit. And the thing I love

321
00:15:21,879 --> 00:15:24,600
about it is you can do absolutely anything with it.

322
00:15:24,840 --> 00:15:27,440
And the thing I hate about it is you can

323
00:15:27,480 --> 00:15:31,120
do just absolutely anything with it. So I like, yah, yeah, yeah,

324
00:15:31,240 --> 00:15:33,519
I had a scenario. I know this is longer than

325
00:15:33,519 --> 00:15:36,879
my two sentences, but I'm gonna do it anyway. That

326
00:15:37,679 --> 00:15:40,240
a few years back, I was working with a company,

327
00:15:40,399 --> 00:15:43,440
and I think this ties into your statement about which

328
00:15:43,480 --> 00:15:45,600
c ICD you know do the simple one. We had

329
00:15:45,600 --> 00:15:50,759
one We were moving this application from Heroku to AWS

330
00:15:51,320 --> 00:15:55,320
and Heroku has their own pipeline tool that works really,

331
00:15:55,399 --> 00:15:59,000
really slick, and I wanted to in moving to ABS,

332
00:15:59,039 --> 00:16:01,759
I wanted to make sure that we didn't lose any features,

333
00:16:02,240 --> 00:16:06,000
and so we went with Jenkins. And the scenario was,

334
00:16:06,480 --> 00:16:08,879
you know, you would write your code, you would push

335
00:16:08,919 --> 00:16:12,120
it up, you would run the tests, all pretty straightforward stuff.

336
00:16:12,120 --> 00:16:14,559
But then when you opened up a poor request, we

337
00:16:14,600 --> 00:16:18,720
would create a poll request environment, so we would spin

338
00:16:18,799 --> 00:16:24,559
up the Docker containers, provision the databases, create the load balancers,

339
00:16:24,639 --> 00:16:27,960
create the route fifty three DNS entries, all of that

340
00:16:28,000 --> 00:16:30,440
stuff so that anyone who was reviewing your code had

341
00:16:30,440 --> 00:16:35,679
a working environment to see what the actual end product

342
00:16:35,759 --> 00:16:39,000
looked like. And then when that poor request was either

343
00:16:39,120 --> 00:16:42,039
merged or closed, it tore down that environment, and that

344
00:16:42,159 --> 00:16:45,200
kicked off the build process to build the Docker images,

345
00:16:45,240 --> 00:16:50,679
pushed those up into the ABS Docker registry, deployed to

346
00:16:50,759 --> 00:16:54,360
the staging environment, and all of that kind of stuff.

347
00:16:54,399 --> 00:16:56,480
So it was pretty There was a lot of moving

348
00:16:56,559 --> 00:17:00,679
pieces and nothing really had the ability to do that

349
00:17:01,320 --> 00:17:05,559
without writing your own Python accessing the photo three library.

350
00:17:05,880 --> 00:17:08,880
And so that's where Jenkins came in handy, because you

351
00:17:08,880 --> 00:17:12,799
could just give it this application or this code that

352
00:17:13,039 --> 00:17:15,880
accessed Boto three and it would do it, and then

353
00:17:15,920 --> 00:17:18,960
you could secure that with im permission, so that Jenkins

354
00:17:19,000 --> 00:17:21,839
only had access to what it needed to, which was

355
00:17:21,880 --> 00:17:24,160
still a lot, because it had access to S three

356
00:17:24,319 --> 00:17:28,160
and rds and firegate and Route fifty three and the

357
00:17:28,200 --> 00:17:29,799
load balancers and all that kind of stuff.

358
00:17:30,000 --> 00:17:32,200
Speaker 1: That is cool, though Human in the loop, well, I

359
00:17:32,279 --> 00:17:34,480
like it, yeah, And.

360
00:17:34,440 --> 00:17:36,160
Speaker 2: The part that I hate about that is when you

361
00:17:36,200 --> 00:17:39,039
get to that level of Jenkins, you know, you write

362
00:17:39,039 --> 00:17:42,240
your Boto three stuff, and then you have a Jenkins

363
00:17:42,319 --> 00:17:46,079
DSL that knows how to call and access that, and

364
00:17:46,200 --> 00:17:49,039
when there's an error in it, you get a Java

365
00:17:49,119 --> 00:17:53,079
stack stack trace, so a Java stack trace that refers

366
00:17:53,119 --> 00:17:56,960
to a DSL that refers to a Python Vota three library,

367
00:17:57,400 --> 00:18:00,440
so that any error messages you got were just adsbsolutely

368
00:18:00,519 --> 00:18:02,200
worthless fascinating.

369
00:18:02,519 --> 00:18:04,559
Speaker 3: Have you used any others or is that really the

370
00:18:04,599 --> 00:18:05,880
main one you used?

371
00:18:05,920 --> 00:18:07,880
Speaker 2: Will That's the only one I've really gone deep with.

372
00:18:07,920 --> 00:18:11,200
I've used a Circle, CI and Travis and get lab,

373
00:18:11,599 --> 00:18:15,960
but all for just really a high level basic CiCe stuff,

374
00:18:16,000 --> 00:18:17,400
nothing that extensive.

375
00:18:18,960 --> 00:18:21,480
Speaker 3: My first introduction to CSD was a Travis. I was

376
00:18:21,480 --> 00:18:23,680
working at a company several years ago where we actually

377
00:18:23,680 --> 00:18:27,359
hosted our own on prem Travis Travis Enterprise. That was

378
00:18:27,400 --> 00:18:29,319
the first time I used CI, and I really, I

379
00:18:29,359 --> 00:18:33,000
really liked it. I later came to prefer the get

380
00:18:33,079 --> 00:18:36,359
lab model, which maybe Travis has changed since then, but

381
00:18:36,759 --> 00:18:39,559
get lab has the concept of pipelines and Travis didn't

382
00:18:39,559 --> 00:18:42,160
really have that concept. So I prefer the pipeline approach.

383
00:18:42,559 --> 00:18:44,359
In fact, if somebody was an asked me, how would

384
00:18:44,359 --> 00:18:46,279
you choose a good CI tool, I would say that

385
00:18:46,319 --> 00:18:48,079
could be the first thing. Look, so does it have

386
00:18:48,160 --> 00:18:50,359
pipeline support because it doesn't have to. I don't know

387
00:18:50,359 --> 00:18:52,480
if Jenkins does. I don't know if he uses that model.

388
00:18:52,519 --> 00:18:55,839
Okay it does. Yeah, well that that model is available.

389
00:18:56,359 --> 00:18:59,599
Like you just log into Jenkins and point and click

390
00:18:59,599 --> 00:19:02,039
your way tout success. You don't get the pipeline model,

391
00:19:02,079 --> 00:19:04,880
but there is if you write your own pipelines, and

392
00:19:04,880 --> 00:19:08,000
that's what we did there. There was a we created

393
00:19:08,000 --> 00:19:11,319
a Jenkins library that executed the pipeline and then each

394
00:19:12,079 --> 00:19:14,720
development team had a YAML file in their repo where

395
00:19:14,720 --> 00:19:18,400
they could specify how many running containers they wanted, the

396
00:19:18,440 --> 00:19:22,559
memory and CPU allocated to each doctor container, and for

397
00:19:22,680 --> 00:19:25,880
auto scaling, could specify your metrics of whether you scaled

398
00:19:25,960 --> 00:19:29,200
on memory, CPU, or latency and what that value was.

399
00:19:30,680 --> 00:19:33,079
I've also used Circle a little bit on one of

400
00:19:33,119 --> 00:19:34,960
the open first projects I help with, so I don't

401
00:19:35,000 --> 00:19:37,920
have extensive experience. My main experience with Circle is that

402
00:19:37,960 --> 00:19:40,599
I find the dashboard confusing, but that's probably just because

403
00:19:40,599 --> 00:19:44,039
I haven't used it enough. I've also used Codeeship at

404
00:19:44,039 --> 00:19:45,759
a company several years ago. I didn't really like that

405
00:19:45,799 --> 00:19:48,039
one very much. We actually migrated from Codehip to Travis.

406
00:19:48,480 --> 00:19:53,200
We broke all the rules that we'll talk about it. Wait.

407
00:19:53,240 --> 00:19:55,799
Actually at that company, at that company we had we

408
00:19:55,799 --> 00:19:57,839
were using like three different SI tools, like each team

409
00:19:57,839 --> 00:20:00,440
would pick their own, and so it was more of

410
00:20:00,440 --> 00:20:03,480
a consolidation thing than it was a real migration. And

411
00:20:03,519 --> 00:20:05,599
it wasn't doing anything complicated. It was doing what what

412
00:20:05,720 --> 00:20:08,160
Dillian talked about, basically, make test and make build, and

413
00:20:08,160 --> 00:20:10,680
that's kind of all it did. So I also used,

414
00:20:10,680 --> 00:20:12,519
of course get hub actions and get lab. I talked

415
00:20:12,519 --> 00:20:15,359
about both of those. There's probably few others I've dabbled with,

416
00:20:15,400 --> 00:20:17,119
but those are the ones I had the most experienced

417
00:20:17,119 --> 00:20:20,119
with and and the main reason I like get lab

418
00:20:20,759 --> 00:20:23,559
is because, well two reasons really. The first is I

419
00:20:23,640 --> 00:20:25,839
like the pipeline model, and second is I like to

420
00:20:25,880 --> 00:20:28,519
get lab interface in general. I feel like it's a

421
00:20:28,640 --> 00:20:32,160
more complete solution in gethub, although GitHub is catching up

422
00:20:32,400 --> 00:20:34,559
since la Kasoft's acquisition, they've been adding a lot of

423
00:20:34,599 --> 00:20:37,200
new features. But yeah, so that's that's my experience.

424
00:20:37,400 --> 00:20:39,880
Speaker 1: I think. Yeah, I've used all the kind of all

425
00:20:39,920 --> 00:20:42,160
the big names. I've used drinkings when I've used something

426
00:20:42,200 --> 00:20:44,759
in house. Travis, I think Travis was the first one

427
00:20:44,759 --> 00:20:46,720
that I used for like a big open source project

428
00:20:46,759 --> 00:20:49,720
because we were using Travis and that's it was there

429
00:20:49,759 --> 00:20:51,279
and we're I think it was it was probably one

430
00:20:51,279 --> 00:20:52,880
of the first, like I mean, I kind of think

431
00:20:52,880 --> 00:20:54,839
it was one of the first like publicly available ones

432
00:20:54,920 --> 00:20:57,519
right that was free, that was available for open source projects.

433
00:20:57,559 --> 00:20:59,359
So we were on that, and then I think we

434
00:20:59,400 --> 00:21:02,640
switched to Start because the Circle guys were throwing some

435
00:21:02,720 --> 00:21:05,799
cash at open source projects, and you know open source projects,

436
00:21:05,839 --> 00:21:07,839
we always need the cash. So we're there. And then

437
00:21:07,880 --> 00:21:10,279
actually I've been kind of, i suppose breaking all the

438
00:21:10,359 --> 00:21:12,759
rules by kind of rolling a lot of my own

439
00:21:12,799 --> 00:21:15,000
solutions lately, which is that I do a lot of this.

440
00:21:15,319 --> 00:21:16,880
I do a lot of like human in the loop

441
00:21:17,000 --> 00:21:21,079
and things that specifically need a really specific, almost editorial

442
00:21:21,119 --> 00:21:23,319
workflow where there has to be at some point a

443
00:21:23,400 --> 00:21:27,759
person who approves something, and they can't like they're scientists usually,

444
00:21:27,839 --> 00:21:29,880
so they can't you can't give them like a stack trace,

445
00:21:29,920 --> 00:21:32,119
all right, Like that's not okay, we can't give normal

446
00:21:32,119 --> 00:21:35,000
people stack traces, all right, Like we're we're not doing

447
00:21:35,039 --> 00:21:37,880
that over here. So you know, the one thing that

448
00:21:37,920 --> 00:21:40,119
I've really been liking lately is to use I'll actually

449
00:21:40,200 --> 00:21:44,440
use airflow Patchy Airflow, which is it's a workflow orchestration engine,

450
00:21:44,599 --> 00:21:48,039
so it's I mean, it's there. It builds basically data pipelines.

451
00:21:48,319 --> 00:21:51,519
But then because it's built on Python and flask, which

452
00:21:51,599 --> 00:21:54,039
is a like a web framework that I'm familiar with,

453
00:21:54,119 --> 00:21:56,559
it's really easy to build like plug ins and additional

454
00:21:56,559 --> 00:21:59,440
interfaces and things like this. So let's say I have, like,

455
00:21:59,480 --> 00:22:01,799
you know, one of these pipelines that's generating tools, and

456
00:22:01,799 --> 00:22:03,880
then one of those tools and then another tool will

457
00:22:03,920 --> 00:22:06,640
generate some kind of QC metrics on this pool. At

458
00:22:06,680 --> 00:22:09,359
some point a person has to make a decision on this,

459
00:22:09,680 --> 00:22:12,759
and sometimes it's a part of the data engineering workflow,

460
00:22:12,759 --> 00:22:16,160
and sometimes it's a part of a software workflow that is,

461
00:22:16,319 --> 00:22:19,359
you know, still informed by a data engineering workflow because

462
00:22:19,400 --> 00:22:22,079
the software has to produce correct data. So it's all

463
00:22:22,160 --> 00:22:24,039
kind of there's a lot of gray area between the

464
00:22:24,079 --> 00:22:27,119
data engineering and the softlow the software engineering, is what

465
00:22:27,119 --> 00:22:30,599
I'm saying. So I've really been liking that lately because yeah,

466
00:22:30,640 --> 00:22:33,039
because again I can give like people who need actual

467
00:22:33,319 --> 00:22:36,599
like web interfaces, I can give them pretty easily web interfases.

468
00:22:36,839 --> 00:22:39,200
But at the same time, it's all just really integrated

469
00:22:39,240 --> 00:22:42,039
into the workflow, and I can automate as much as

470
00:22:42,440 --> 00:22:44,960
can be automated. So normally it will look like, you know,

471
00:22:45,000 --> 00:22:47,400
we have like three steps, and then there will be

472
00:22:47,440 --> 00:22:50,640
some point where human has to approve something. The human

473
00:22:50,680 --> 00:22:53,000
will get like a yes no kind of form, and

474
00:22:53,039 --> 00:22:55,359
then that feeds back to airflow and we'll either pick

475
00:22:55,400 --> 00:22:57,640
off the rest of the workflow or cancel it, depending

476
00:22:57,640 --> 00:22:59,720
on how that how that ends up going. If I'm

477
00:22:59,759 --> 00:23:01,640
not doing anything that's complicated, though, I tend to just

478
00:23:01,720 --> 00:23:04,680
use githab actions because it usually is just like Make builds,

479
00:23:04,680 --> 00:23:05,240
Make tests.

480
00:23:05,400 --> 00:23:09,480
Speaker 3: And the problem with the problem with starting with whatever

481
00:23:09,480 --> 00:23:12,559
it's easy because it's not complicated, is six months later

482
00:23:12,599 --> 00:23:18,319
it's complicated, and then you're married to that tool. But

483
00:23:18,359 --> 00:23:21,200
that's the problem with like make files versus basscripts versus

484
00:23:21,240 --> 00:23:23,119
Pearl or Python or something like that, like, oh, it's

485
00:23:23,119 --> 00:23:26,000
just simple, I'll just use Make tests, and then six

486
00:23:26,039 --> 00:23:28,640
months later you have the six thousand line make file

487
00:23:28,680 --> 00:23:30,480
and nobody can understand it. And I should have done

488
00:23:30,480 --> 00:23:31,240
this in Python.

489
00:23:32,680 --> 00:23:34,119
Speaker 1: I don't think I'm quite ready to give up my

490
00:23:34,119 --> 00:23:35,039
Make files, Jonathan.

491
00:23:35,039 --> 00:23:39,079
Speaker 3: I don't think that's I like me, although I like Make,

492
00:23:39,160 --> 00:23:41,640
but I have done some really nasty make stuff before,

493
00:23:41,720 --> 00:23:44,119
stuff I would these days never do again. I think,

494
00:23:44,200 --> 00:23:46,200
I mean, I have no problem. Yeah, I'm pretty sure

495
00:23:46,279 --> 00:23:48,160
Make is touring complete and it should not be.

496
00:23:53,799 --> 00:23:55,519
Speaker 1: Files from like cold Dead Hands.

497
00:23:55,599 --> 00:23:55,640
Speaker 3: No.

498
00:23:56,200 --> 00:23:59,519
Speaker 2: No, I think there's a really good lesson hidden in there. Though.

499
00:24:00,000 --> 00:24:03,519
One of the keys I think to making successful pipelines

500
00:24:04,039 --> 00:24:08,079
is to wrap all of your individual steps up into

501
00:24:08,160 --> 00:24:11,480
a smaller command and then just have the pipeline call

502
00:24:11,599 --> 00:24:13,839
that command. So when you look at the pipeline, it's

503
00:24:13,880 --> 00:24:17,440
like it does these five things, and now those five

504
00:24:17,559 --> 00:24:20,640
things might represent a bunch of other smaller tasks, but

505
00:24:20,640 --> 00:24:25,519
I think that's still more easily understood by someone coming

506
00:24:25,559 --> 00:24:28,960
in to work on it. Then if you have a

507
00:24:28,960 --> 00:24:33,480
CICD pipeline that has six hundred individual steps in.

508
00:24:33,400 --> 00:24:35,960
Speaker 1: It, well, that's what I like about air flows that

509
00:24:36,960 --> 00:24:39,880
right out the gate you get a picture of the

510
00:24:39,880 --> 00:24:42,519
directed a syclick graph, so you know step one, step

511
00:24:42,559 --> 00:24:45,240
two depends upon step one, which if that's successful, it

512
00:24:45,279 --> 00:24:47,319
goes here. If it's not successful, it goes here. Like

513
00:24:47,319 --> 00:24:48,960
it gives you a picture of that right in the

514
00:24:49,000 --> 00:24:50,960
dashboard so you can see it, and then you can

515
00:24:51,000 --> 00:24:53,480
actually click on each individual part and it like colors

516
00:24:53,480 --> 00:24:55,240
it based on whether or not it was successful and

517
00:24:55,279 --> 00:24:56,680
this kind of stuff. So I just find it much

518
00:24:56,680 --> 00:24:59,559
more intuitive for like a person to deal with rather

519
00:24:59,640 --> 00:25:02,640
than a any of the other CICD work cloths. I mean,

520
00:25:02,680 --> 00:25:05,160
I'll use them because they're there and they're free, but like,

521
00:25:05,480 --> 00:25:07,680
if I'm going to build anything complicated, most of the

522
00:25:07,720 --> 00:25:09,480
time these days, I just go build with an airpluck.

523
00:25:09,799 --> 00:25:12,079
Speaker 2: I think get lab does a fairly good job that

524
00:25:12,240 --> 00:25:16,079
of visualizing the pipeline and the you know how how

525
00:25:16,079 --> 00:25:18,279
to build or how the pipeline is going to run,

526
00:25:18,359 --> 00:25:20,400
which steps are dependent and which one failed?

527
00:25:22,039 --> 00:25:24,039
Speaker 1: Oh my goal trial. Okay, I don't actually think your

528
00:25:24,079 --> 00:25:26,079
lab is probably one of the ones I haven't only used.

529
00:25:26,279 --> 00:25:27,920
Speaker 3: One thing I really like about get lab is that

530
00:25:28,000 --> 00:25:30,359
it so easy to start your own runners. I run

531
00:25:30,599 --> 00:25:33,319
some private projects that aren't eligible for their free, open

532
00:25:33,359 --> 00:25:36,759
source unlimited minutes or whatever, and so every month I

533
00:25:36,759 --> 00:25:38,799
get this thing. If you here, I don't know how

534
00:25:38,799 --> 00:25:41,799
many minutes or four hundred minutes or whatever, upgrade now

535
00:25:41,880 --> 00:25:44,160
for like twelve dollars or whatever it is. I'm like, no,

536
00:25:44,640 --> 00:25:47,039
I just I have a Hetzner dot d account for

537
00:25:47,079 --> 00:25:49,400
I think three dollars a month, and if run a

538
00:25:49,400 --> 00:25:51,640
get lab runnerund there and I connect to that, and

539
00:25:52,200 --> 00:25:54,400
so for three bucks a month, I have unlimited minutes.

540
00:25:54,480 --> 00:25:57,000
It's super easy to do that. I haven't logged into

541
00:25:57,000 --> 00:25:59,160
that server for probably two years's probably been hacked by now,

542
00:25:59,200 --> 00:26:05,640
I don't know it's mining block chain. I think get

543
00:26:05,680 --> 00:26:07,559
hub Actions is going to be adding support for the

544
00:26:07,920 --> 00:26:09,880
maybe they have already added the ability to run your

545
00:26:09,880 --> 00:26:12,440
own runners too, but I mean that's also really nice

546
00:26:12,480 --> 00:26:14,400
if you have special hardware you need to be using,

547
00:26:14,440 --> 00:26:16,960
if you need a GPU to run your tests or something,

548
00:26:17,000 --> 00:26:18,480
or you want to run on an ARM system or

549
00:26:18,559 --> 00:26:22,519
Raspberry Pie or something like that, that's something that that's

550
00:26:22,519 --> 00:26:24,160
the reason we didn't discuss at the beginning. If you

551
00:26:24,200 --> 00:26:26,200
have special needs like that, you're going to be limited

552
00:26:26,200 --> 00:26:29,240
in which CIC tools you can use. Like try to

553
00:26:29,279 --> 00:26:32,559
see I believe offers Linux and MAAC. Maybe they do

554
00:26:32,640 --> 00:26:34,680
Windows now I'm not sure. But if you need to

555
00:26:34,799 --> 00:26:37,400
run your code against Windows on Windows servers or a

556
00:26:37,480 --> 00:26:39,759
Raspberry Pie or whatever you're gonna have, you're gonna be

557
00:26:39,799 --> 00:26:42,319
limited and the choices you have. So that's one nice

558
00:26:42,319 --> 00:26:43,759
thing about being able to run your own runners that

559
00:26:43,839 --> 00:26:45,799
get love gives you, and I think ge hub actions

560
00:26:45,799 --> 00:26:48,720
either does or soon will. You can set up your

561
00:26:48,720 --> 00:26:53,279
own runners to access your hardware encryption devices, or your

562
00:26:53,400 --> 00:26:57,039
MPEG encoders or whatever random kind of custom stuff you

563
00:26:57,119 --> 00:26:59,240
might need, So that that's something to think about too.

564
00:26:59,720 --> 00:27:03,960
Speaker 2: Yeah, specifically, if you're building iOS apps, I've dealt with

565
00:27:04,000 --> 00:27:07,519
that quite a bit, and that's a huge pain because

566
00:27:07,559 --> 00:27:10,480
it's got to be done on a Mac. So you're

567
00:27:10,519 --> 00:27:13,839
either using a Mac that you have physical access to

568
00:27:14,160 --> 00:27:18,079
as a runner, or there are some third party services

569
00:27:18,799 --> 00:27:22,440
that will integrate with your CICD and do the build

570
00:27:22,519 --> 00:27:24,559
for you, but all the ones I'm aware of are

571
00:27:24,839 --> 00:27:26,319
are relatively expensive.

572
00:27:26,880 --> 00:27:27,039
Speaker 3: Yeah.

573
00:27:27,079 --> 00:27:29,279
Speaker 1: I got into like three D modeling a little bit

574
00:27:29,400 --> 00:27:32,920
is my quarantine hobby, and that immediately made me think, like,

575
00:27:33,440 --> 00:27:36,039
how do video games like when people make video games, right,

576
00:27:36,039 --> 00:27:38,119
because they're the point is is that you're supposed to

577
00:27:38,119 --> 00:27:40,319
be able to release them on like all the platforms

578
00:27:40,359 --> 00:27:42,720
now right, Like you see a video game, it's not

579
00:27:42,799 --> 00:27:45,440
just like on PlayStation or Nintendo or whatever. It's it's

580
00:27:45,480 --> 00:27:48,000
on like everything. It's on. It's for games, it's for

581
00:27:48,039 --> 00:27:50,240
the switch, it's for all of them. So I always

582
00:27:50,279 --> 00:27:52,160
kind of wonder, like, well, how do they do their testing?

583
00:27:52,880 --> 00:27:54,279
I kind of find a whole lot on it. It

584
00:27:54,319 --> 00:27:56,319
seems like every it's still like a very closely guarded,

585
00:27:56,359 --> 00:27:58,319
secreted video games. I did see a little bit that

586
00:27:58,400 --> 00:28:03,240
like Unity uses AWS because AWS have actual Mac like instances,

587
00:28:03,279 --> 00:28:05,200
Like you can run Windows instances and you can run

588
00:28:05,200 --> 00:28:07,079
Mac instances. But for the rest of them, I don't know,

589
00:28:07,519 --> 00:28:10,160
just build and hope it runs and people can install it.

590
00:28:10,319 --> 00:28:13,319
Speaker 2: If you listen to the comments from the gamers. Then, yeah,

591
00:28:13,440 --> 00:28:16,720
that's the exact strategy. Build it and let your customers

592
00:28:16,920 --> 00:28:17,640
figure it out.

593
00:28:18,680 --> 00:28:23,480
Speaker 1: Yes, your customers need the acceptance testing. That's my business

594
00:28:23,519 --> 00:28:24,519
model too. You know what.

595
00:28:26,720 --> 00:28:28,279
Speaker 2: I haven't done. That's a really good point. I haven't

596
00:28:28,319 --> 00:28:31,519
done any work in the game industry. But yeah, there's

597
00:28:31,599 --> 00:28:35,160
a lot of compiling for different platforms that happens there.

598
00:28:35,160 --> 00:28:36,960
And I don't know what to compile time or to

599
00:28:36,960 --> 00:28:40,200
build time for your average game is.

600
00:28:40,640 --> 00:28:43,240
Speaker 1: I don't know. Let's get pretty involved, Like I feel like,

601
00:28:43,359 --> 00:28:45,839
just like so really small scenes and like small little

602
00:28:45,880 --> 00:28:49,079
games and unreal and that's it's backed by C plus plus,

603
00:28:49,079 --> 00:28:51,160
so you actually have to go through and compile everything,

604
00:28:51,559 --> 00:28:53,839
and even for just like a you know, something really small,

605
00:28:53,880 --> 00:28:54,680
it can take a while.

606
00:28:55,039 --> 00:28:59,119
Speaker 2: Yeah, any game you download these days is it seems

607
00:28:59,160 --> 00:29:01,759
like it's a minimum of five gigs. A lot of

608
00:29:01,839 --> 00:29:04,160
that's video assets, I would assume, So I don't know

609
00:29:04,200 --> 00:29:07,920
if those are involved in the compiling process or if

610
00:29:08,279 --> 00:29:10,759
you can compile your video assets once and then just

611
00:29:10,799 --> 00:29:13,279
compile the run time for each specific platform. I don't

612
00:29:13,279 --> 00:29:14,119
know how that works.

613
00:29:14,559 --> 00:29:16,880
Speaker 3: Next week on adventures and game development.

614
00:29:16,880 --> 00:29:19,720
Speaker 2: Right, let's see who we know that works in that

615
00:29:20,319 --> 00:29:21,640
industry that we can get on the show.

616
00:29:22,359 --> 00:29:24,079
Speaker 1: No, there was a couple of plug ins and like

617
00:29:24,119 --> 00:29:27,359
they weren't they weren't very well developed for different platforms,

618
00:29:27,400 --> 00:29:28,960
and I know, like an f C plus plus that

619
00:29:29,000 --> 00:29:31,559
I was like, huh, maybe this should be my new calling.

620
00:29:31,720 --> 00:29:33,759
Just go and then fix all the platforms and set

621
00:29:33,839 --> 00:29:37,079
up the CICD and make plugins that actually compile to

622
00:29:37,160 --> 00:29:40,400
the different the different platforms and sell them on the marketplace.

623
00:29:40,480 --> 00:29:43,519
And what am I doing all this data science stuff for? Anyways?

624
00:29:43,559 --> 00:29:45,160
And then I figured out, you know, very quickly, that

625
00:29:45,240 --> 00:29:49,920
it wasn't that simple hopes and dreams, most as most

626
00:29:49,920 --> 00:29:51,720
things tend to be, It was not that simple. Yeah,

627
00:29:51,720 --> 00:29:53,319
I think if you have like specific HERD, if you

628
00:29:53,359 --> 00:29:57,640
have specific hardware or specific security considerations, you should really

629
00:29:57,880 --> 00:29:59,920
like look into your choice and not be nearly as

630
00:30:00,079 --> 00:30:02,759
asual is I tend to be with like, well this

631
00:30:02,799 --> 00:30:04,799
one looks good today. You know, it's not the action

632
00:30:04,920 --> 00:30:08,799
that I need this morning, So we'll use that, you know,

633
00:30:08,839 --> 00:30:11,279
maybe actually go through and do your research and think

634
00:30:11,319 --> 00:30:13,759
about it a little bit and see which one kind

635
00:30:13,759 --> 00:30:15,640
of or if any of them support the different platforms

636
00:30:15,640 --> 00:30:16,160
that you need.

637
00:30:16,279 --> 00:30:18,039
Speaker 2: Unless you have a coupon because we know if you

638
00:30:18,079 --> 00:30:20,279
have a coupone, you're using it.

639
00:30:22,559 --> 00:30:24,160
Speaker 1: Oh so you know that's one thing with thought. I

640
00:30:24,200 --> 00:30:26,559
signed up for the free prile of Spacelift and they

641
00:30:26,559 --> 00:30:28,880
immediately like they contacted me on like day, They got

642
00:30:28,960 --> 00:30:30,839
me in a Slack connect group with them. They will

643
00:30:30,920 --> 00:30:32,799
like call us if you're not call us, but you know,

644
00:30:32,880 --> 00:30:35,680
like message us if we need anything. And I was like, oh, well,

645
00:30:35,759 --> 00:30:39,759
this is almost as good as a coupon. So do

646
00:30:39,799 --> 00:30:42,279
we have any like good projects for people starting off

647
00:30:42,279 --> 00:30:44,200
and see ICD? I think you were talking about that

648
00:30:44,240 --> 00:30:45,279
a little bit early, Terronic.

649
00:30:46,599 --> 00:30:49,960
Speaker 3: Yeah, I'm actually gonna do a course probably starting on

650
00:30:50,000 --> 00:30:53,400
April about this. I'm going to walk people through, so

651
00:30:53,920 --> 00:30:57,160
stay tuned. I'll give them more details as it approaches.

652
00:30:57,799 --> 00:31:00,960
But the concept for my course is I intend to

653
00:31:01,759 --> 00:31:05,519
walk people through publishing an app. Maybe it maybe you

654
00:31:05,559 --> 00:31:07,599
build a PHP app or or something, or if you

655
00:31:07,599 --> 00:31:09,200
haven't built one, we get to see this work press

656
00:31:09,359 --> 00:31:14,240
or react some react to do NBC or something like that. Yeah. Yes,

657
00:31:14,279 --> 00:31:16,440
to take a simple app that uses the database and

658
00:31:16,720 --> 00:31:20,119
deploy it to Kubernetes using CICD with the sort of

659
00:31:20,119 --> 00:31:23,799
review environment that will talk about, so you can every

660
00:31:23,839 --> 00:31:26,680
time you create a ProQuest, it'll pop up this temporary

661
00:31:26,720 --> 00:31:28,640
environment you can play around with, do your testing on,

662
00:31:28,839 --> 00:31:30,680
and then when you merge it will teare it down

663
00:31:30,720 --> 00:31:32,920
to it away. So I think that's that's a really

664
00:31:32,960 --> 00:31:34,759
good way to start. Pick a simple app if you've

665
00:31:34,759 --> 00:31:37,599
written one. If you haven't written one, you can just download,

666
00:31:37,640 --> 00:31:39,319
like I said, to do NBC or something like that,

667
00:31:39,400 --> 00:31:43,480
some sort of test app or work press or whatever, PHP,

668
00:31:43,599 --> 00:31:45,680
my ad Man, anything like that, anything that's an app

669
00:31:45,720 --> 00:31:47,519
that at a web or basis of a place to start,

670
00:31:47,559 --> 00:31:51,160
and just deploy it somewhere and deploy automatically. I don't

671
00:31:51,200 --> 00:31:54,839
mean like type cupit, cuddle whatever, you'll do that in

672
00:31:54,880 --> 00:31:57,480
the process, but get it automated so that when whenever

673
00:31:57,559 --> 00:32:00,559
you commit, you run your tests, and when you hit

674
00:32:00,680 --> 00:32:03,240
merge at automatical ploys. Which tool you use is less

675
00:32:03,240 --> 00:32:05,680
important than just getting that process done. So I'll probably

676
00:32:05,680 --> 00:32:07,039
do the course of get lab to CEI, but I'm

677
00:32:07,039 --> 00:32:09,440
going to try to keep it as generic as possible

678
00:32:09,519 --> 00:32:12,799
and simple Bash commands so that anybody who doesn't want

679
00:32:12,799 --> 00:32:15,400
to use a good lab can apply the same knowledge

680
00:32:15,440 --> 00:32:18,279
to GitHub actions or to genkins or whatever other tool

681
00:32:18,319 --> 00:32:18,640
they want.

682
00:32:18,880 --> 00:32:22,359
Speaker 2: Yeah, I would agree that's. Yeah, the act of taking

683
00:32:22,400 --> 00:32:26,519
something from code to deployed is a huge learning experience

684
00:32:26,519 --> 00:32:30,839
for somebody interested in getting getting into DevOps. And another

685
00:32:30,960 --> 00:32:33,119
key point that you mentioned there is if you don't

686
00:32:33,119 --> 00:32:34,839
know how to write code, or if you haven't built

687
00:32:34,880 --> 00:32:39,240
an application, that's not a blocker because in the software

688
00:32:39,279 --> 00:32:41,680
engineering world, like one of the most common things for

689
00:32:41,799 --> 00:32:44,319
learning a new language is to create a to do apps.

690
00:32:44,319 --> 00:32:46,359
So if you go to GitHub and search for to

691
00:32:46,440 --> 00:32:49,319
do apps, you're going to find thousands of them that

692
00:32:49,440 --> 00:32:53,599
you can download that meet those criteria of having a

693
00:32:53,599 --> 00:32:57,640
web user interface and a database back end and just

694
00:32:57,759 --> 00:32:58,920
use that exactly.

695
00:32:59,000 --> 00:33:00,960
Speaker 1: Yeah. I would also add try to get at least

696
00:33:01,000 --> 00:33:04,240
familiar with the idea of matrix builds, which is where

697
00:33:04,599 --> 00:33:06,759
you want to kind of build things with different options,

698
00:33:06,799 --> 00:33:08,359
even if it's kind of you know, you're sort of

699
00:33:08,440 --> 00:33:10,440
artificially putting it in there. So an example of that

700
00:33:10,440 --> 00:33:12,880
would be you take your you take your to do

701
00:33:13,039 --> 00:33:16,759
app and you install it sent hosts, Ubuntu an Alpine,

702
00:33:17,039 --> 00:33:19,839
and you do that through doctor containers or however you're

703
00:33:19,880 --> 00:33:21,559
going to do that. But that would be three variants

704
00:33:21,559 --> 00:33:23,920
of the same package. And I'm sure that you know

705
00:33:24,039 --> 00:33:26,119
like things will come off along the way there and

706
00:33:26,160 --> 00:33:27,839
then you'll kind of you'll kind of learn about that

707
00:33:27,839 --> 00:33:28,720
process as well.

708
00:33:29,079 --> 00:33:31,079
Speaker 3: That's a really good thing. If you're building a shared

709
00:33:31,119 --> 00:33:33,599
library and you don't know who's going to be using it,

710
00:33:33,839 --> 00:33:35,599
you know you want to make sure it works on Mac,

711
00:33:35,640 --> 00:33:37,880
Windows and Linux, for example, and you want to make

712
00:33:37,880 --> 00:33:40,640
sure it works on three different versions of Linux, then

713
00:33:40,920 --> 00:33:45,880
that's exactly the time when those matrixes are matrices are

714
00:33:46,319 --> 00:33:46,799
are called for.

715
00:33:47,839 --> 00:33:49,960
Speaker 1: Oh well, does anybody else have anything to add or

716
00:33:49,960 --> 00:33:51,079
should we just go to picks?

717
00:33:51,480 --> 00:33:54,160
Speaker 3: Just do some pics every week?

718
00:33:54,200 --> 00:33:57,559
Speaker 1: One of us, all right, Donald, who wants to go

719
00:33:57,599 --> 00:33:59,519
for astronomers? Not me?

720
00:33:59,640 --> 00:33:59,880
Speaker 3: I'm not.

721
00:34:00,599 --> 00:34:04,279
Speaker 2: I've got I'm ready this week. So I'll stall for

722
00:34:04,359 --> 00:34:07,039
time and share way more details about my picks than

723
00:34:07,039 --> 00:34:09,159
what I should to give Jonathan an extra few minutes.

724
00:34:09,599 --> 00:34:12,559
So I've got two picks this week. First one is

725
00:34:12,599 --> 00:34:16,320
a movie called The Blacksmith and the Devil. It's on Netflix,

726
00:34:17,039 --> 00:34:21,519
and its super cool movie about a surprise no school

727
00:34:21,519 --> 00:34:25,000
over alert here. It's about a blacksmith and he captures

728
00:34:25,039 --> 00:34:29,000
this demon that he thinks is responsible for all the

729
00:34:29,079 --> 00:34:31,239
trauma and turmoil in his life. And he's got this

730
00:34:31,320 --> 00:34:34,400
demon captured and he tortures him. But then there's this

731
00:34:34,440 --> 00:34:39,239
really cool plot twist at the end that has you going, oh, dude,

732
00:34:39,320 --> 00:34:41,320
right on, let's go. And so I won't tell you

733
00:34:41,360 --> 00:34:45,000
any more than that to keep from ruining the suspense.

734
00:34:45,039 --> 00:34:47,440
But it's a really cool movie. The Blacksmith and the

735
00:34:47,480 --> 00:34:50,679
Devil really well done. Only on Netflix as far as

736
00:34:50,719 --> 00:34:53,920
I know, but I only watch about maybe two or

737
00:34:53,920 --> 00:34:57,079
three movies a year, and this was one of them.

738
00:34:57,239 --> 00:34:59,559
So it was it was cool. It was a good

739
00:34:59,599 --> 00:35:03,159
couple of are spent. The other thing for my pick

740
00:35:03,559 --> 00:35:08,840
this week is these eye drops called Acuity. So like

741
00:35:09,199 --> 00:35:11,280
as the as the old man in the group, I

742
00:35:11,280 --> 00:35:14,639
feel obligated to tell you all that as you get older,

743
00:35:15,159 --> 00:35:19,239
your eyesight's going to go bad and you need like

744
00:35:19,320 --> 00:35:22,800
a close yeah, Like you need a close circle of

745
00:35:22,960 --> 00:35:27,239
friends who will call you out so when you're heading

746
00:35:27,320 --> 00:35:30,599
into the store with your sunglasses on top of your

747
00:35:30,639 --> 00:35:33,199
head and your eyeglasses on your face, that they stop

748
00:35:33,280 --> 00:35:35,440
you and go, no, no, no, we don't do that

749
00:35:35,519 --> 00:35:37,960
around here. So you need that group of friends in

750
00:35:38,000 --> 00:35:40,559
your life. But otherwise you can get these eye drops

751
00:35:40,599 --> 00:35:43,480
that just came out in fall of twenty twenty one.

752
00:35:43,840 --> 00:35:47,159
If you're like me, whenever you got old and your

753
00:35:47,239 --> 00:35:50,559
eye your eye drop, eyesight for reading went to hell.

754
00:35:51,199 --> 00:35:53,599
These eye drops are specifically made for that. So you

755
00:35:53,639 --> 00:35:56,039
put these eye drops in and then for like the

756
00:35:56,079 --> 00:35:59,440
next four hours, my vision is like it was ten

757
00:35:59,519 --> 00:36:04,679
years ago. And so it beats wearing glasses, or more importantly,

758
00:36:04,719 --> 00:36:07,400
it beats trying to figure out where I left my glasses.

759
00:36:07,920 --> 00:36:09,719
So those are my two picks for the week. Do

760
00:36:09,800 --> 00:36:12,320
you ever wonder where you left the eye drops so far? No,

761
00:36:13,280 --> 00:36:15,159
I've been using the eye drops for about a week now,

762
00:36:15,320 --> 00:36:19,079
so we'll see what the long term impact of that is.

763
00:36:19,119 --> 00:36:22,239
But right now, I just keep them in the bathroom

764
00:36:22,280 --> 00:36:24,000
and whenever I get up and get ready for work,

765
00:36:24,000 --> 00:36:27,320
I'll drop them in, and then around lunchtime I'll go

766
00:36:27,400 --> 00:36:30,159
and put the next set in because they only last

767
00:36:30,199 --> 00:36:31,239
for about four hours.

768
00:36:32,360 --> 00:36:34,559
Speaker 3: I haven't pick ready, now go for it. So I

769
00:36:34,639 --> 00:36:37,880
just finished reading a book. It's an old book, but

770
00:36:37,920 --> 00:36:39,679
it's a classic book. It's a good book. It's been

771
00:36:39,679 --> 00:36:41,800
made into two movies. That's how old it is. It's

772
00:36:41,840 --> 00:36:43,880
been around long enough to make two movies out of it.

773
00:36:44,079 --> 00:36:46,039
That's all quiet on the Western Front and It's a

774
00:36:46,039 --> 00:36:49,960
fictionalized story of a German soldier during World War One,

775
00:36:50,559 --> 00:36:53,000
and it really just tells the story of more the

776
00:36:53,039 --> 00:36:56,119
feeling of combat in World War One and the trenches

777
00:36:56,559 --> 00:36:59,519
more than like a military story like this. There's no

778
00:36:59,639 --> 00:37:02,559
story conquest or whatever. It's here's what it was like

779
00:37:02,639 --> 00:37:05,920
to live in the trenches and deal with death and

780
00:37:05,960 --> 00:37:08,960
with the fear of death and not enough food and

781
00:37:08,960 --> 00:37:11,440
that sort of stuff. So it's a really good book. Obviously,

782
00:37:11,440 --> 00:37:13,639
it's I mean, probably everybody's heard of it. You don't

783
00:37:13,639 --> 00:37:16,440
want to read or listen to the book. Wat's the movie.

784
00:37:17,280 --> 00:37:18,960
There was one that came out in the twenties, I

785
00:37:19,000 --> 00:37:20,760
think black and white, and then it was remade again

786
00:37:20,800 --> 00:37:24,760
in the nineteen seventies. So I me recommended nice cool.

787
00:37:24,760 --> 00:37:27,000
Speaker 1: Well, I'm going to pick The Wheel of Time. It

788
00:37:27,159 --> 00:37:29,599
is one of my favorite book series. I reread it

789
00:37:29,639 --> 00:37:31,960
every couple of years, and I wanted rereading it again

790
00:37:32,039 --> 00:37:34,960
because I tried to watch the Amazon series of The

791
00:37:34,960 --> 00:37:38,159
Wheel of Time and I couldn't quite get through that.

792
00:37:38,199 --> 00:37:40,320
But I just decided to go back to the source

793
00:37:40,360 --> 00:37:42,920
material and go back to the books reread those. It

794
00:37:43,000 --> 00:37:45,159
really is like one of my favorite series. There's a

795
00:37:45,159 --> 00:37:47,320
couple there in the middle that you could probably skip

796
00:37:47,360 --> 00:37:49,519
and like, you know, you would be fine in terms

797
00:37:49,519 --> 00:37:52,519
of plotline and things happening and all that kind of stuff.

798
00:37:52,559 --> 00:37:54,320
Just get the cliff notes. But I don't know, they're

799
00:37:54,320 --> 00:37:56,599
really great. They're one of my favorite series. Go for It.

800
00:37:56,800 --> 00:37:59,079
So there's that, and then I think on tech pics,

801
00:37:59,119 --> 00:38:03,159
I've been playing with this program called Hissora, which is

802
00:38:03,480 --> 00:38:06,119
like as it's one of these web frameworks, you like

803
00:38:06,159 --> 00:38:07,840
throw it on top of the database and then it

804
00:38:07,920 --> 00:38:10,320
just kind of spins up all your APIs. But one

805
00:38:10,360 --> 00:38:12,599
kind of thing is that it has subscriptions and real

806
00:38:12,679 --> 00:38:15,400
time events, and another nice thing is you can also

807
00:38:15,480 --> 00:38:18,920
pull in like additional APIs, so if you have if

808
00:38:18,920 --> 00:38:21,199
you have like a series of micro services, you could

809
00:38:21,280 --> 00:38:22,840
use to have to kind of tie them all together

810
00:38:22,920 --> 00:38:25,199
and then it could handle, you know, throwing your authentication

811
00:38:25,280 --> 00:38:27,760
tokens and stuff like that around. So I've just been

812
00:38:27,800 --> 00:38:30,559
playing a little bit with that. It's been fun. So's

813
00:38:30,719 --> 00:38:32,800
it's a good program. I recommend it. Go see it.

814
00:38:32,800 --> 00:38:35,880
I think it's got lots of stars on GitHub. And yeah,

815
00:38:35,960 --> 00:38:38,480
that's it for me. All right, guys, Well that's a wrap.

816
00:38:38,599 --> 00:38:40,519
Thanks and talk to you next week, all right, See

817
00:38:40,519 --> 00:38:41,639
you guys,

