1
00:00:07,000 --> 00:00:10,640
Speaker 1: Hey everybody, and welcome to another episode of Adventures in Angular.

2
00:00:11,080 --> 00:00:14,759
This week, on our panel, we have Shi Resnik. Hello, Hello, Hello,

3
00:00:15,519 --> 00:00:18,039
we have Eunice. I should have asked how to say

4
00:00:18,079 --> 00:00:23,760
your last name, Let's ask Shy exactly. That's perfect.

5
00:00:25,800 --> 00:00:28,559
Speaker 2: Hello everyone, I'm Charles max Wood from dev Chat dot tv.

6
00:00:28,920 --> 00:00:30,399
I'm kind of excited my book.

7
00:00:30,399 --> 00:00:32,399
Speaker 1: It just came out in paperback on Amazon, so you

8
00:00:32,439 --> 00:00:34,399
can go pick it up Amazon dot com. We have

9
00:00:34,439 --> 00:00:37,359
a special guest this week, and that is Dave Cooper. Dave,

10
00:00:37,439 --> 00:00:38,320
do you want to say hello?

11
00:00:38,640 --> 00:00:38,960
Speaker 3: Hello?

12
00:00:39,000 --> 00:00:41,880
Speaker 4: Everyone? It's very nice and fun to be here.

13
00:00:42,679 --> 00:00:44,399
Speaker 1: Do you want to just give us a brief introduction

14
00:00:44,479 --> 00:00:46,640
who you are? White people know who you are?

15
00:00:47,240 --> 00:00:49,600
Speaker 4: Oh yeah, I'm not too sure anyone knows so I am, but.

16
00:00:51,280 --> 00:00:51,560
Speaker 3: Wow.

17
00:00:52,200 --> 00:00:55,679
Speaker 4: Yeah, I'm the developer living in London at the moment.

18
00:00:56,119 --> 00:00:57,920
I've been here for a few years. Before that was

19
00:00:57,960 --> 00:01:02,640
living in Australia and I guess I just recently did

20
00:01:02,679 --> 00:01:06,480
my first conference talk at Angular Connect this year, which

21
00:01:06,519 --> 00:01:08,719
was a lot of fun. It was just following the

22
00:01:08,719 --> 00:01:11,239
birth of my daughter, so I was unbelievably tired and

23
00:01:11,799 --> 00:01:13,400
sort of had a bit of baby brain through that.

24
00:01:13,480 --> 00:01:15,200
But that was a lot of fun. I do quite

25
00:01:15,200 --> 00:01:17,680
a bit of talking around London, just at various meetups,

26
00:01:18,200 --> 00:01:21,200
mostly around the front end space. That's sort of sort

27
00:01:21,200 --> 00:01:24,359
of the thing that's got my interests very core.

28
00:01:25,159 --> 00:01:28,359
Speaker 1: So, yeah, your talk, if I remember, it was about

29
00:01:28,640 --> 00:01:32,560
doing some sort of like modular design or prototyping and

30
00:01:32,640 --> 00:01:33,719
testing things like that.

31
00:01:33,879 --> 00:01:38,239
Speaker 4: Yeah, so it was basically about I still have trouble

32
00:01:38,280 --> 00:01:42,120
succinctly sort of describing this, which is probably a little

33
00:01:42,120 --> 00:01:44,319
bit of a problem, But basically I see a lot

34
00:01:44,359 --> 00:01:48,319
of developers sort of in the situation where you know,

35
00:01:48,640 --> 00:01:50,519
you might be working by yourself or in a team,

36
00:01:50,719 --> 00:01:53,879
and you've got a new project, and you've got obviously

37
00:01:53,959 --> 00:01:55,799
a lot of fun end and back end components that

38
00:01:55,840 --> 00:02:00,359
need building, and I see a lot of people do

39
00:02:00,799 --> 00:02:04,319
some naughty things around how they are deal with data

40
00:02:04,359 --> 00:02:07,480
in their applications. So you know, people connecting out to

41
00:02:07,519 --> 00:02:11,520
production services to test features that they're developing locally on

42
00:02:11,919 --> 00:02:15,360
their machines or things like that. And I think that

43
00:02:15,639 --> 00:02:18,680
a lot of people seem to be avoiding using decent

44
00:02:18,840 --> 00:02:22,000
I guess mock solutions, like data mocking solutions these So

45
00:02:22,000 --> 00:02:24,800
I sort of talk about that and try to encourage

46
00:02:24,800 --> 00:02:28,159
people that it's a lot faster to use mock data,

47
00:02:28,319 --> 00:02:30,439
so it's a lot safer I guess as well, because

48
00:02:30,439 --> 00:02:33,240
you're not touching things that you shouldn't. I'm all about

49
00:02:33,400 --> 00:02:37,080
rapid prototyping or just getting code out there in front

50
00:02:37,120 --> 00:02:40,759
of people, and I find that working like that allows

51
00:02:40,759 --> 00:02:42,560
me to be able to achieve that goal, and so

52
00:02:42,599 --> 00:02:44,840
I sort of, I guess, preach a little bit about

53
00:02:44,879 --> 00:02:47,680
that and it usually generates some pretty fun discussions.

54
00:02:48,439 --> 00:02:49,400
Speaker 2: So what are the secrets?

55
00:02:49,479 --> 00:02:49,680
Speaker 4: Right?

56
00:02:49,800 --> 00:02:51,479
Speaker 2: What are the secrets to doing this? Kind of.

57
00:02:54,080 --> 00:02:54,800
Speaker 4: The secrets?

58
00:02:54,960 --> 00:02:58,199
Speaker 2: I think prank faster, right, Yeah, that's it.

59
00:02:58,280 --> 00:03:01,879
Speaker 4: Just work faster, write more, write less bugs. I think

60
00:03:01,919 --> 00:03:04,800
that this is definitely one of those things that you know,

61
00:03:04,800 --> 00:03:07,479
there's always some cool new thing in the front end

62
00:03:07,520 --> 00:03:10,319
space every every week or every month, and I think

63
00:03:10,360 --> 00:03:13,719
when it comes to data marketing solutions that sort of

64
00:03:13,719 --> 00:03:17,039
stay quite stagnant for you know, the better part. I

65
00:03:17,240 --> 00:03:19,960
know of pretty much this decade, there isn't really much

66
00:03:20,439 --> 00:03:23,759
I guess, innovation happening in that space. But I think

67
00:03:23,800 --> 00:03:26,479
that there are some libraries starting to emerge, and I've

68
00:03:26,479 --> 00:03:29,439
written one myself as well, that just allow you to

69
00:03:30,159 --> 00:03:33,800
as simply as possible, you know, specify what endpoints your

70
00:03:33,800 --> 00:03:37,000
front end application is going to connect out to and

71
00:03:37,159 --> 00:03:39,599
what sort of data you want back from when you

72
00:03:40,120 --> 00:03:43,360
request something from one of those resources, but then also

73
00:03:43,439 --> 00:03:45,759
have the flexibility to say, you know, let's just say

74
00:03:45,800 --> 00:03:50,000
that we're working on a banking app and we want

75
00:03:50,000 --> 00:03:52,199
to be able to pull up a customer that you know,

76
00:03:52,360 --> 00:03:55,840
maybe they've got three different accounts or three different bank accounts,

77
00:03:55,919 --> 00:03:57,879
two of them are in credit, one of them's in debt,

78
00:03:58,000 --> 00:04:01,280
and they've got a late pain. And if you don't

79
00:04:01,319 --> 00:04:04,520
have some sort of data marcking solution in place for that,

80
00:04:04,560 --> 00:04:06,680
you need to tink around with databases, or you need

81
00:04:06,759 --> 00:04:09,960
to have some test account that could be in whatever state.

82
00:04:10,120 --> 00:04:13,520
And I think being able to really quickly and reliably

83
00:04:13,599 --> 00:04:18,480
manipulate application state without having to mess around with databases

84
00:04:18,720 --> 00:04:21,920
or connecting out using real customers in production or your

85
00:04:21,920 --> 00:04:25,240
staging environments and things like that, I think that that's

86
00:04:25,240 --> 00:04:27,600
sort of like a very overlooked thing in the front

87
00:04:27,720 --> 00:04:30,560
end space. I think it's so handy and it's such

88
00:04:30,560 --> 00:04:34,399
a nice developer experience when you start to contribute to

89
00:04:34,399 --> 00:04:36,240
someone else's code base and all you have to do

90
00:04:36,319 --> 00:04:37,639
to be able to get things up and running is

91
00:04:37,680 --> 00:04:40,480
clone their code and stare dependencies and immediately you can

92
00:04:40,519 --> 00:04:43,279
start doing things with it. Rather than having to ask

93
00:04:43,319 --> 00:04:45,680
a lot of questions about how can we pull up

94
00:04:45,680 --> 00:04:47,759
the application in a particular state.

95
00:04:48,199 --> 00:04:50,600
Speaker 5: Just have one question here. What would be the challenge

96
00:04:50,759 --> 00:04:53,720
if you want to sync like your remugs with your

97
00:04:53,879 --> 00:04:57,199
real API, like keeping it use like the same I

98
00:04:57,240 --> 00:05:00,560
don't know, like furies in open API or as ry. Yeah,

99
00:05:01,000 --> 00:05:03,040
is this like a challenge? What's the cost?

100
00:05:03,519 --> 00:05:06,000
Speaker 4: Yeah? So it is a challenge. I think you've you've

101
00:05:06,000 --> 00:05:09,879
got two different routes sort of down this path. One

102
00:05:09,920 --> 00:05:13,519
of them is that you just accept that there is

103
00:05:13,560 --> 00:05:16,319
the possibility that your your data, like your your local

104
00:05:16,399 --> 00:05:18,560
data and your MAX might get out of sync. And

105
00:05:18,600 --> 00:05:21,480
you'd sort of hope that someone would notice that that's

106
00:05:21,519 --> 00:05:24,199
not foolproof, and you know that can obviously lead to

107
00:05:24,240 --> 00:05:27,040
problems because you're developing it gets one thing locally and

108
00:05:27,079 --> 00:05:30,879
that's not what's in your staging or production environments. There's

109
00:05:31,040 --> 00:05:34,759
also tooling out there that can allow you to sync up,

110
00:05:34,800 --> 00:05:38,319
as you mentioned before, like Swagger specifications and generate mocks

111
00:05:38,360 --> 00:05:40,759
off the back of that. There's loads of things that

112
00:05:40,839 --> 00:05:43,319
do that, and I think that I'm starting to see

113
00:05:43,360 --> 00:05:45,759
a little bit more use of it around the place,

114
00:05:45,879 --> 00:05:49,040
Like even in my current workplace. The other day, someone

115
00:05:49,079 --> 00:05:50,920
came up to me and was like, Hey, check this out.

116
00:05:50,920 --> 00:05:53,800
You can actually generate, you know, a mock server off

117
00:05:53,800 --> 00:05:56,800
the back of a Swagger specification, and it's really cool

118
00:05:56,800 --> 00:06:00,160
to see people doing that. I think that it is

119
00:06:00,240 --> 00:06:02,639
probably one of the biggest challenges in this space though,

120
00:06:02,959 --> 00:06:06,079
because people really like actual data, or at least data

121
00:06:06,120 --> 00:06:09,240
that looks like it could be production data. Like you

122
00:06:09,279 --> 00:06:13,439
don't want random garbled strings for people's names and addresses

123
00:06:13,600 --> 00:06:17,600
and and really large numbers for things like a banking

124
00:06:17,759 --> 00:06:20,879
banking app, where realistically the numbers are a lot smaller

125
00:06:21,319 --> 00:06:23,439
than things like that. So yeah, it is a real challenge,

126
00:06:23,720 --> 00:06:26,399
but I don't think it's an insurmountable one.

127
00:06:27,199 --> 00:06:31,000
Speaker 3: Okay, so sorry if I miss that before.

128
00:06:31,120 --> 00:06:34,480
Speaker 6: But what are the steps, Like, what do the listeners

129
00:06:34,519 --> 00:06:39,240
can do in order to start and benefit from it?

130
00:06:39,720 --> 00:06:42,160
Speaker 4: Yeah, I mean the first thing that I'd probably say

131
00:06:42,319 --> 00:06:45,800
is if you're connecting out to a production or staging

132
00:06:45,839 --> 00:06:50,639
service to develop your apps locally, I'd probably recommend downloading

133
00:06:50,959 --> 00:06:54,160
any mock library. Yeah, anything that there's loads of them

134
00:06:54,160 --> 00:06:57,720
off at NPM I've written one called data Marks that's

135
00:06:57,720 --> 00:06:59,560
starting to get a bit of a bit of traction

136
00:06:59,600 --> 00:07:02,600
at the moment, which is really good. I'm seeing contributions

137
00:07:02,600 --> 00:07:04,959
from the community, but just getting one of them. I mean,

138
00:07:04,959 --> 00:07:07,720
there's loads of really really popular ones as well. You've

139
00:07:07,759 --> 00:07:10,560
got things like Jason Server, which I mean, I'm not

140
00:07:10,560 --> 00:07:12,319
one hundred percent sure how many hits that gets, but

141
00:07:12,319 --> 00:07:14,560
it must get at least one hundred k downloads a week,

142
00:07:15,160 --> 00:07:18,399
and just get your application to connect out to that,

143
00:07:18,680 --> 00:07:21,199
and I think you can immediately start seeing the benefits

144
00:07:21,199 --> 00:07:25,000
of it. Like a lot of these mocking solutions as well,

145
00:07:25,040 --> 00:07:27,519
they don't even spin up. Not a lot of them,

146
00:07:27,519 --> 00:07:29,480
but some of them don't even spin up like an

147
00:07:29,560 --> 00:07:33,759
extra service. Like you've got data Marks, which is as

148
00:07:33,800 --> 00:07:36,519
I said, the library that I wrote earlier, it leverages

149
00:07:36,839 --> 00:07:42,480
intercepting fetch and h XHR requests, so not even running

150
00:07:42,480 --> 00:07:45,240
an extra service. So if you've got a really low

151
00:07:45,319 --> 00:07:49,199
end laptop like myself, which really struggles to run most things,

152
00:07:49,480 --> 00:07:50,959
you know, it's not an extra thing, which is like

153
00:07:51,040 --> 00:07:52,519
chewing up your CPU and battery.

154
00:07:52,920 --> 00:07:56,160
Speaker 6: Yeah, first of all, all someome job on grading the library,

155
00:07:56,639 --> 00:08:01,600
and I just want to clarify the term is thrown

156
00:08:01,680 --> 00:08:05,000
around a lot, and it means several things in the

157
00:08:05,040 --> 00:08:08,199
world of testing. So just to clarify it, we're talking

158
00:08:08,199 --> 00:08:09,720
about fake data.

159
00:08:10,160 --> 00:08:13,920
Speaker 4: Yeah, that's a really yeah, that's that's a really good point. Actually, Yeah,

160
00:08:14,000 --> 00:08:16,439
that that term does get thrown around in the testing

161
00:08:16,480 --> 00:08:19,959
space a lot. Yeah, we're talking about, yeah, fake data.

162
00:08:20,040 --> 00:08:23,040
So we have a request, you know, to Dave's cool

163
00:08:23,079 --> 00:08:27,399
api dot com slash foo, and when we hit that endpoint,

164
00:08:27,439 --> 00:08:30,800
we're expecting a particular response back, and that response is

165
00:08:31,000 --> 00:08:33,480
what I'm referring to as the market it's the mock

166
00:08:33,600 --> 00:08:34,919
response to that request.

167
00:08:35,759 --> 00:08:38,559
Speaker 3: Yeah, so that's a differentiate in like testing.

168
00:08:38,919 --> 00:08:42,519
Speaker 6: When we're talking about mark smock objects, we're usually talking

169
00:08:42,519 --> 00:08:47,120
about like stuff that has assertions.

170
00:08:45,840 --> 00:08:48,559
Speaker 3: Built into them, so if you don't get the stuff

171
00:08:48,600 --> 00:08:52,080
you you expect, it throws an error.

172
00:08:52,639 --> 00:08:56,080
Speaker 6: But when you talk about just getting like fake data

173
00:08:56,200 --> 00:09:00,039
or just like you know, just running a method and

174
00:09:00,080 --> 00:09:04,120
not like doing anything just so it will satisfy the compiler,

175
00:09:04,600 --> 00:09:08,799
we're talking about stubs. So that so just like getting

176
00:09:08,879 --> 00:09:11,759
the data just to display on the screen the list.

177
00:09:11,480 --> 00:09:13,080
Speaker 3: Of puppies that you want to display.

178
00:09:13,360 --> 00:09:16,320
Speaker 6: It's probably it's more like like a stub to those

179
00:09:16,360 --> 00:09:19,360
on you of you who know like that term, So

180
00:09:19,519 --> 00:09:22,759
that's what we're talking about, like fake data, And just

181
00:09:22,759 --> 00:09:23,720
to clarify.

182
00:09:23,679 --> 00:09:26,519
Speaker 1: Yeah, no, that's a that's a very very good point there. Yeah,

183
00:09:26,639 --> 00:09:30,039
definitely right, and that you know, just to reiterate that.

184
00:09:30,200 --> 00:09:32,279
The idea then is, yeah, then you don't have this

185
00:09:32,399 --> 00:09:35,200
back end system that's chewing up more CPU or memory

186
00:09:35,759 --> 00:09:37,679
and you can just focus on your Angerer app.

187
00:09:38,120 --> 00:09:41,320
Speaker 4: Yeah. And I find that not having it because I mean,

188
00:09:41,360 --> 00:09:43,639
it really depends the sort of developer you are and

189
00:09:43,639 --> 00:09:46,399
what where your interests lie as well. But I think

190
00:09:46,639 --> 00:09:49,279
I see it in a lot more junior people as well.

191
00:09:49,320 --> 00:09:51,720
As you know, you're working on a you know, you

192
00:09:51,799 --> 00:09:54,279
might be on a product team at work, and your

193
00:09:54,279 --> 00:09:56,600
team might be split one of many ways, but you

194
00:09:56,679 --> 00:09:59,200
might have front end specialists and back end specialists in

195
00:09:59,240 --> 00:10:03,159
your team. And I do notice that there are certain

196
00:10:03,440 --> 00:10:07,000
I guess there are certain types of developers that like

197
00:10:07,120 --> 00:10:10,080
prefer to stick into their own space, so they prefer

198
00:10:10,159 --> 00:10:13,039
not to have to write endpoint like back and end

199
00:10:13,039 --> 00:10:14,919
points themselves, or maybe they just don't know how to

200
00:10:15,759 --> 00:10:19,840
or whatever. I find that sometimes you hear things like oh,

201
00:10:19,919 --> 00:10:22,639
I can't work on that yet, because the API is

202
00:10:22,679 --> 00:10:24,679
not ready for that yet. And that's one of the

203
00:10:24,720 --> 00:10:29,200
perfect use cases for using these sorts of things is

204
00:10:29,200 --> 00:10:31,600
that you don't actually require a single line of back

205
00:10:31,679 --> 00:10:35,080
end code to be written, and you can already complete

206
00:10:35,159 --> 00:10:37,960
the front end components without a single line of back

207
00:10:38,039 --> 00:10:38,960
end code being written.

208
00:10:39,799 --> 00:10:42,279
Speaker 3: Yeah, that's a very good scenario for that.

209
00:10:42,639 --> 00:10:45,600
Speaker 6: Have you talked about again, sorry if I mean, say,

210
00:10:45,840 --> 00:10:48,960
I had some technical issues with like audio and stuff,

211
00:10:48,960 --> 00:10:52,600
so I didn't hear some of the earlier comments. Did

212
00:10:52,600 --> 00:10:56,559
you talk about what happens once you have the data,

213
00:10:56,600 --> 00:11:00,639
like the real data, do you like still integrated or

214
00:11:00,879 --> 00:11:02,919
just at that point you just like lose the mock

215
00:11:03,519 --> 00:11:07,360
data and then switch over to using the you know,

216
00:11:07,519 --> 00:11:10,159
the real one, or like, what's this strategy there?

217
00:11:10,679 --> 00:11:14,240
Speaker 4: I guess the strategy there is that whatever solution that

218
00:11:14,279 --> 00:11:17,720
you're using, is that you would only really want to

219
00:11:17,759 --> 00:11:22,480
be using these mocked responses when you're developing your application locally,

220
00:11:22,919 --> 00:11:25,679
so that when you're making a build for your staging

221
00:11:25,720 --> 00:11:29,399
a production environment, that you're you're no longer using these

222
00:11:29,720 --> 00:11:32,639
these mock services anymore. So there's a few ways that

223
00:11:32,679 --> 00:11:35,279
you can do that, Like in the entry points to

224
00:11:35,320 --> 00:11:38,519
your application, you can always do a check to see

225
00:11:38,519 --> 00:11:41,360
if you're in a development environment, and then from there

226
00:11:41,519 --> 00:11:45,000
you can dynamically choose to dynamically import your mock libraries

227
00:11:45,639 --> 00:11:48,279
or your mock services, and then that way it doesn't

228
00:11:48,320 --> 00:11:50,879
affect your bundle size when you're making production builds and

229
00:11:50,919 --> 00:11:51,559
things like that.

230
00:11:52,279 --> 00:11:53,200
Speaker 3: Cool nice.

231
00:11:53,360 --> 00:11:57,879
Speaker 6: And for testing, like let's say, unit tests and stuff,

232
00:11:58,399 --> 00:12:02,559
do develop weed that or you just just for development purposes.

233
00:12:03,159 --> 00:12:05,600
Speaker 4: I've found that the strategy that works me is just

234
00:12:05,720 --> 00:12:11,039
using it for development purposes, because when you're writing unit tests,

235
00:12:11,159 --> 00:12:14,120
you know, most of the time i'd gather you know,

236
00:12:14,559 --> 00:12:18,360
you're not necessarily writing unit tests that are unit testing

237
00:12:18,440 --> 00:12:22,120
things that make HGTP calls. And if you are, that

238
00:12:22,279 --> 00:12:24,200
is a simple thing that you could use now I'm

239
00:12:24,279 --> 00:12:26,960
using the term I guess again, but you could use

240
00:12:27,000 --> 00:12:29,879
a mock library for that. For instance. You know, if

241
00:12:29,879 --> 00:12:34,039
you're using jest or mocker or anything like that, you

242
00:12:34,120 --> 00:12:37,480
know you could mock those directly in your unit tests.

243
00:12:38,000 --> 00:12:40,039
Speaker 2: You can also have your CI run your end end

244
00:12:40,039 --> 00:12:40,679
tests and.

245
00:12:40,919 --> 00:12:45,000
Speaker 6: Yep, yeah, most of them. You probably wouldn't want to

246
00:12:45,559 --> 00:12:51,320
unit test your outer layer of your client app. You

247
00:12:51,360 --> 00:12:54,919
probably want to write integration tests there just to see

248
00:12:54,960 --> 00:12:58,080
that your client is talking with the back end in

249
00:12:58,120 --> 00:13:02,559
the right way, and it's not like really helpful to

250
00:13:03,360 --> 00:13:07,480
you know, mock up stuff that you don't really you

251
00:13:07,519 --> 00:13:11,480
can really control. But that's the topic for another episode.

252
00:13:11,519 --> 00:13:12,080
Speaker 3: I guess.

253
00:13:12,360 --> 00:13:12,840
Speaker 4: Yeah.

254
00:13:13,039 --> 00:13:15,919
Speaker 5: I got a question, like before like diving into like

255
00:13:16,200 --> 00:13:19,600
the testing part. If we dive into it, if we're

256
00:13:19,720 --> 00:13:24,000
like developing the app and creating like this fake data,

257
00:13:24,399 --> 00:13:29,240
would you recommend having like a fake data set for

258
00:13:29,519 --> 00:13:32,840
the whole app or do you have like fake data

259
00:13:32,840 --> 00:13:37,600
sets for each context? So like, okay, let's let's suppose

260
00:13:37,679 --> 00:13:40,320
we're in this state and I'm going to load this

261
00:13:40,399 --> 00:13:43,600
fake data and I'm going to try my app with

262
00:13:43,720 --> 00:13:46,120
this fake data, or do you have like global fake

263
00:13:46,200 --> 00:13:47,559
data that you use all the time.

264
00:13:48,240 --> 00:13:51,120
Speaker 4: I found that maintaining a list of like I refer

265
00:13:51,240 --> 00:13:53,759
to them myself just as fixtures. It's probably not quite

266
00:13:53,799 --> 00:13:56,799
the right term for it, but basically, I mean it's

267
00:13:56,840 --> 00:13:59,799
sort of a little bit of both. I've found that

268
00:14:00,120 --> 00:14:03,919
you know, you've got your in the library that I've written.

269
00:14:03,960 --> 00:14:07,600
I refer to them as scenarios, so the application will

270
00:14:07,639 --> 00:14:09,399
have I guess what you would refer to as the

271
00:14:09,440 --> 00:14:13,320
default scenario. So that is like your happiest path that

272
00:14:13,360 --> 00:14:16,320
your application could have. You know, you use the logs incorrectly.

273
00:14:17,039 --> 00:14:19,799
You know, they can view their account information, they can

274
00:14:19,840 --> 00:14:23,279
make you know whatever changes they want, and there's no

275
00:14:23,399 --> 00:14:26,200
sort of error states or weird edge case states. And

276
00:14:26,240 --> 00:14:29,639
then you introduce the concept of a scenario, which is

277
00:14:30,159 --> 00:14:32,919
sort of starting to handle these edge and error cases.

278
00:14:33,120 --> 00:14:36,799
And I've seen different libraries handle these things different ways,

279
00:14:36,840 --> 00:14:39,639
but usually at the end of the day, you define

280
00:14:39,679 --> 00:14:43,320
your default scenarios or like your your happiest path for

281
00:14:43,799 --> 00:14:47,600
how you use your application, and then these scenarios get

282
00:14:47,639 --> 00:14:50,600
merged into that so that you get everything that happens

283
00:14:50,639 --> 00:14:54,559
in your default scenario plus whatever you define in this

284
00:14:54,720 --> 00:14:57,519
edge case, maybe there's like a maybe there's like a

285
00:14:57,559 --> 00:15:00,759
log in error or something like that, or maybe that's

286
00:15:00,799 --> 00:15:03,679
not the greatest example. Maybe we're already logged in, so

287
00:15:03,720 --> 00:15:06,360
that's part of our happy path, and maybe when we

288
00:15:06,399 --> 00:15:09,320
try to view our account information for account number two,

289
00:15:09,919 --> 00:15:12,240
there's some sort of five hundred error from the server,

290
00:15:12,440 --> 00:15:14,960
so that would be part of I guess the set

291
00:15:14,960 --> 00:15:19,600
of mocks for that edge case scenario or error case scenario.

292
00:15:20,120 --> 00:15:22,879
And then when you're using your app, when you're developing

293
00:15:22,919 --> 00:15:24,679
your app locally and you're trying to test that out

294
00:15:24,679 --> 00:15:27,559
and see how things behave you know, you'd expect that

295
00:15:27,679 --> 00:15:30,799
your app would probably do have some something to handle

296
00:15:30,840 --> 00:15:33,240
what happens when we get some sort of error from

297
00:15:33,279 --> 00:15:33,639
the server.

298
00:15:34,440 --> 00:15:39,120
Speaker 5: Thanks, that's a very good question. This, Thank you very much, Shy.

299
00:15:39,440 --> 00:15:40,360
I'm trying hard.

300
00:15:41,279 --> 00:15:42,960
Speaker 3: I know I'm here to support.

301
00:15:43,519 --> 00:15:46,519
Speaker 5: Thank you. Let's still have another question, can I go,

302
00:15:48,000 --> 00:15:53,080
yeah on a roll? Okay, so it's quite the same topic, like,

303
00:15:53,320 --> 00:15:57,679
would you like considering in developing like an angler app

304
00:15:58,080 --> 00:16:00,639
and and I want like some fake data for my

305
00:16:00,919 --> 00:16:06,399
happy past? Would you recommend using a fake library like

306
00:16:06,480 --> 00:16:10,519
yours to have like fake HCP responsors or would you

307
00:16:10,559 --> 00:16:14,759
recommend fake services with the same interfaces and like that?

308
00:16:15,000 --> 00:16:17,440
Can I don't know, change the data in memory or

309
00:16:17,480 --> 00:16:18,720
in a store or anything.

310
00:16:19,000 --> 00:16:22,080
Speaker 4: So that Yeah, that was an interesting that's an interesting one.

311
00:16:22,200 --> 00:16:26,919
So how this all started for me is I had

312
00:16:26,919 --> 00:16:30,000
this problem for the first time, which was, Hey, I'm

313
00:16:30,039 --> 00:16:32,519
starting a new application from scratch, and I don't want

314
00:16:32,519 --> 00:16:35,519
to have to talk to services that you know, either

315
00:16:35,559 --> 00:16:38,080
exists in a live environment or they haven't been written yet.

316
00:16:38,120 --> 00:16:40,600
And that's I sort of got led down that path,

317
00:16:40,639 --> 00:16:43,440
and I was introduced This is back when I was

318
00:16:43,440 --> 00:16:46,799
still writing Angular JAS, and I was introduced to a

319
00:16:46,840 --> 00:16:52,200
library called Angular Multi Marx and that does it basically

320
00:16:52,200 --> 00:16:55,039
behaves the same way that data Marx behaves, except data

321
00:16:55,039 --> 00:17:00,559
Marx is framework agnostic. And so when I was writing Days,

322
00:17:01,399 --> 00:17:04,440
I think I first used it for a React application.

323
00:17:04,880 --> 00:17:06,599
I'm not sure if I'm allowed to say React or

324
00:17:06,640 --> 00:17:10,519
if that's going to get beat down for me. Yeah,

325
00:17:10,559 --> 00:17:14,200
I'll get dumped from the coal in a second. And

326
00:17:14,559 --> 00:17:17,160
I remember it working really nicely because to sort of

327
00:17:17,160 --> 00:17:20,799
like bootstrap a React application. It's slightly lighter on code

328
00:17:20,839 --> 00:17:24,119
than what the Angular Cli generates. But the truth of

329
00:17:24,160 --> 00:17:27,559
the matter is that it doesn't matter what framework you're

330
00:17:27,640 --> 00:17:30,799
using or anything like that. There's always an entry point

331
00:17:30,839 --> 00:17:34,000
to the application, and the developer almost always has access

332
00:17:34,039 --> 00:17:37,680
to that entry point. And for instance, the way that

333
00:17:37,799 --> 00:17:40,000
data max works with it is all you need to

334
00:17:40,039 --> 00:17:44,400
do is call a function called inject max and you

335
00:17:44,640 --> 00:17:47,119
through to that function. You pass through the set of

336
00:17:47,160 --> 00:17:50,640
scenarios that you want to use with your application. So

337
00:17:50,680 --> 00:17:53,920
it's very unintrusive. So I guess to answer your question, yeah,

338
00:17:53,920 --> 00:17:57,759
I would recommend using something like data max or something

339
00:17:57,839 --> 00:18:00,759
that if you prefer to go down on the path

340
00:18:00,839 --> 00:18:04,119
that has something that actually spins up something like a

341
00:18:04,160 --> 00:18:07,200
node service or any HGTP server. You could use something

342
00:18:07,359 --> 00:18:10,680
like a Jason server or API mocker, or you know,

343
00:18:10,680 --> 00:18:14,160
there's there's so many different things, but it's an unintrusive

344
00:18:14,200 --> 00:18:18,000
way of integrating it with your application while still having

345
00:18:18,079 --> 00:18:22,480
that freedom to have I guess the idea is when

346
00:18:22,519 --> 00:18:25,440
you build or deploy it to a different environment that

347
00:18:25,480 --> 00:18:28,000
you're not stuck with that mock solution. You can sort

348
00:18:28,000 --> 00:18:30,440
of build it out of your application as well.

349
00:18:31,200 --> 00:18:35,680
Speaker 5: Okay, so your recommand are like to use fake data

350
00:18:35,720 --> 00:18:40,440
at the HTP level, so it's framework agnostic and you

351
00:18:40,440 --> 00:18:41,519
can reuse it somewhere else.

352
00:18:41,559 --> 00:18:44,759
Speaker 4: Okay, yeah, absolutely, And it just it makes life so

353
00:18:44,880 --> 00:18:47,440
much quicker and easier, especially if you're trying to prototype

354
00:18:47,440 --> 00:18:51,400
something or spin up a new project that you know

355
00:18:51,839 --> 00:18:53,880
it's going to stick around for a while, or even

356
00:18:53,880 --> 00:18:55,559
if it's not yet as just said, even if it's

357
00:18:55,599 --> 00:18:59,240
just prototyping. I just think that it's such a fast

358
00:18:59,319 --> 00:19:03,000
way to get code written and immediately start you know,

359
00:19:03,119 --> 00:19:05,240
really being able to focus on the front end space.

360
00:19:06,079 --> 00:19:06,400
Speaker 5: Thanks.

361
00:19:06,680 --> 00:19:09,039
Speaker 1: Yeah, so what's the cycle that you follow. I mean,

362
00:19:09,079 --> 00:19:12,640
are you're doing TDD. Are you you know, build test,

363
00:19:12,759 --> 00:19:13,440
build test.

364
00:19:14,400 --> 00:19:17,319
Speaker 4: Yeah, that's a that's a good question. I'd probably be

365
00:19:17,440 --> 00:19:20,480
lying if I said that I always do TDD. But

366
00:19:21,240 --> 00:19:23,000
possible blasphemy again, but.

367
00:19:23,519 --> 00:19:24,079
Speaker 3: That's for me.

368
00:19:26,119 --> 00:19:28,039
Speaker 2: Shy is the only one you'll make cry with them. Sorry,

369
00:19:28,079 --> 00:19:28,680
I'm gonna leave.

370
00:19:30,880 --> 00:19:30,960
Speaker 3: No.

371
00:19:31,240 --> 00:19:35,240
Speaker 4: I think it really depends for me on the project

372
00:19:35,319 --> 00:19:38,759
and the nature of the work. For simple crowd applications,

373
00:19:39,240 --> 00:19:43,960
I'm probably less inclined to follow a more hardcore methodology.

374
00:19:44,000 --> 00:19:48,640
For projects that I'm joining and contributing to, I'm probably

375
00:19:48,640 --> 00:19:52,319
more inclined to do it. I find that a lot

376
00:19:52,359 --> 00:19:56,079
more of my work these days. I'm really enjoying a

377
00:19:56,079 --> 00:19:58,119
lot of projects that I contribute to these days, U

378
00:19:58,240 --> 00:20:01,759
Cyprus for the for the UI and all of that,

379
00:20:01,839 --> 00:20:06,279
And I'm really enjoying the idea of writing Cyprus tests first,

380
00:20:06,400 --> 00:20:10,440
so that and making them fail and then building against that.

381
00:20:10,880 --> 00:20:13,640
I find that that's been a really I guess effective

382
00:20:13,680 --> 00:20:16,440
way that works for me. But I think it's such

383
00:20:16,599 --> 00:20:20,119
a difficult question to answer because there isn't a silver bullet.

384
00:20:20,680 --> 00:20:23,200
There's nothing that works perfectly for everyone.

385
00:20:23,799 --> 00:20:27,279
Speaker 1: Yeah, that's a very BDD to me, which is behavioral development,

386
00:20:27,480 --> 00:20:30,599
which is you build the big story first and then

387
00:20:30,640 --> 00:20:33,359
you cycle and you get the steps out with your

388
00:20:33,480 --> 00:20:34,279
unit tests.

389
00:20:34,599 --> 00:20:36,200
Speaker 3: Yeah, yeah, most of that.

390
00:20:36,319 --> 00:20:40,400
Speaker 6: I find that the writing test after the code is

391
00:20:40,440 --> 00:20:44,359
good when you are exploring like a new and you

392
00:20:44,559 --> 00:20:48,160
think that you're still not sure how it looks like

393
00:20:48,279 --> 00:20:51,000
how the API behaved, you don't really know the API yet.

394
00:20:51,519 --> 00:20:54,680
Some people preferred to do it in TDD that like

395
00:20:54,880 --> 00:20:58,400
those scenarios. I find it too confusing because I need

396
00:20:58,400 --> 00:21:02,079
to like focus on the test and learning a new API.

397
00:21:02,240 --> 00:21:04,400
But once I learn, like once I know the API,

398
00:21:04,519 --> 00:21:07,480
I switch the order and then it's much easier to.

399
00:21:08,039 --> 00:21:11,839
Speaker 3: Oh, I know that this is how it behaves like this.

400
00:21:11,839 --> 00:21:15,119
Speaker 6: Library or something like that, or this like thermac, and

401
00:21:15,160 --> 00:21:17,559
now I know how to write my test to test

402
00:21:17,599 --> 00:21:18,160
my logic.

403
00:21:18,519 --> 00:21:21,200
Speaker 3: Only my logic uses this or something like that.

404
00:21:21,599 --> 00:21:26,039
Speaker 6: But I find it also another scenario to use I

405
00:21:26,039 --> 00:21:28,400
don't know if it's that common, but to use like

406
00:21:28,440 --> 00:21:32,079
a fake data libraries like like you mentioned and Jason

407
00:21:32,160 --> 00:21:36,160
server is when doing demos like for talks and for

408
00:21:36,640 --> 00:21:40,799
courses and you know, workshops. That's the best scenario because

409
00:21:41,480 --> 00:21:45,640
nobody has to like now download postgrass or you know,

410
00:21:45,799 --> 00:21:50,039
install like a database or even know what like you know,

411
00:21:50,200 --> 00:21:53,680
it reduces all the complexity, So that's another good use case.

412
00:21:54,920 --> 00:21:57,880
Speaker 4: Absolutely it's a sort of education side and the demo

413
00:21:58,000 --> 00:22:01,880
side is absolutely great. You also you're in full control,

414
00:22:02,400 --> 00:22:06,079
like you're reducing the number of points of failure and

415
00:22:06,680 --> 00:22:07,880
reducing the complexity.

416
00:22:08,680 --> 00:22:08,960
Speaker 5: Yep.

417
00:22:09,400 --> 00:22:10,960
Speaker 2: Have you done anything with storybook?

418
00:22:11,319 --> 00:22:14,079
Speaker 4: Yeah? I love storybook. I've just spun up a new

419
00:22:14,079 --> 00:22:15,960
project in the last couple of weeks where we've had

420
00:22:16,000 --> 00:22:19,920
quite a few contributors towards it from the basically day one,

421
00:22:20,319 --> 00:22:23,839
and we've found really really effective use of storybook to

422
00:22:23,880 --> 00:22:26,480
sort of any sort of shared component goes in there

423
00:22:26,480 --> 00:22:28,720
and it's very quick. You know, I can say say

424
00:22:28,759 --> 00:22:31,160
to the gang, you know here, I've developed this. It's

425
00:22:31,200 --> 00:22:33,079
in storybook. You can use it if you want, or

426
00:22:33,079 --> 00:22:35,799
you can you can tweak it. So I've found a

427
00:22:35,799 --> 00:22:37,839
lot of success and it's also in the past as well,

428
00:22:38,200 --> 00:22:41,079
but this has been the most effective sort of use

429
00:22:41,119 --> 00:22:43,359
of it I've seen where you've got loads of developers

430
00:22:43,359 --> 00:22:46,400
from the beginning on something and you know, you don't

431
00:22:46,440 --> 00:22:49,839
want to be building the same thing multiple times and

432
00:22:50,079 --> 00:22:52,920
having that soundbox environment from the get go has been

433
00:22:52,920 --> 00:22:53,720
really really helpful.

434
00:22:54,519 --> 00:22:54,799
Speaker 3: Cool.

435
00:22:55,519 --> 00:23:00,920
Speaker 5: We got one little question about consumer driven contract with

436
00:23:01,039 --> 00:23:03,759
I don't know, libraries like BACKED. I don't know if

437
00:23:03,799 --> 00:23:07,960
you're familiar with that, and if you are. For instance,

438
00:23:07,960 --> 00:23:11,359
when I use BACKED, I usually use that in my

439
00:23:11,480 --> 00:23:16,039
integration tests, for instance, and it generates the facts for

440
00:23:16,200 --> 00:23:20,720
the back end. But would that be possible to integrate

441
00:23:20,920 --> 00:23:25,039
that with your fake data library or something?

442
00:23:25,480 --> 00:23:28,279
Speaker 4: It might be. I've not done it myself. I think

443
00:23:28,319 --> 00:23:32,720
I've probably I'm probably falling into the category of people

444
00:23:32,759 --> 00:23:37,480
who haven't seen PAC testing being used very effectively in organizations.

445
00:23:38,079 --> 00:23:41,599
I think that the the theory, like how it works

446
00:23:41,599 --> 00:23:43,960
and what it's used for is like very sound. I'm

447
00:23:44,000 --> 00:23:47,359
just I just don't think that I've really been exposed

448
00:23:47,839 --> 00:23:51,160
to anyone, like any organization that does it well. But

449
00:23:51,200 --> 00:23:53,000
I'm sure there's a million people out there that can

450
00:23:53,000 --> 00:23:55,480
tell me that they love it in terms of using

451
00:23:55,480 --> 00:23:58,720
it with these sorts of like fake data libraries. I'm

452
00:23:58,720 --> 00:24:02,279
not one hundred percent sure whether or not that's I

453
00:24:02,279 --> 00:24:06,039
don't know what the right word is, whether there's a

454
00:24:06,160 --> 00:24:08,359
decence or not yield from that to make it worth

455
00:24:08,400 --> 00:24:10,920
the effort. But maybe the rest of the game here

456
00:24:11,440 --> 00:24:12,640
have some other thoughts.

457
00:24:13,119 --> 00:24:16,440
Speaker 6: Yeah, I think that like the future is in the

458
00:24:16,480 --> 00:24:20,200
connectivity between those two points. Like you already have your

459
00:24:20,319 --> 00:24:24,599
fake data which has a schema you know, like shape,

460
00:24:25,039 --> 00:24:28,759
and you already have like if you're going to I

461
00:24:28,799 --> 00:24:31,519
think that again, the future is in like stuff like Packed.

462
00:24:31,519 --> 00:24:34,599
I don't know if pact itself because it's still like

463
00:24:34,599 --> 00:24:39,640
like in I feel like a proper node server table

464
00:24:39,759 --> 00:24:42,559
like for testing and stuff like that still like uses

465
00:24:42,599 --> 00:24:46,519
the thing the Ruby application behind the scenes, which.

466
00:24:46,319 --> 00:24:47,200
Speaker 2: I can confirm.

467
00:24:47,480 --> 00:24:51,480
Speaker 6: Yeah, so, but the idea behind it I think is

468
00:24:53,720 --> 00:24:56,960
very very very useful, And to those of you who

469
00:24:57,000 --> 00:24:58,079
don't know what it is.

470
00:24:58,119 --> 00:24:59,759
Speaker 3: Check out packed JSPA.

471
00:25:00,960 --> 00:25:04,599
Speaker 6: Basically, it means that you have contract tests between your

472
00:25:04,599 --> 00:25:08,240
client and your server, and when you mock out your

473
00:25:08,319 --> 00:25:13,720
server like with instead of using like just fake data

474
00:25:13,960 --> 00:25:17,200
without any connection to the server side, you actually use

475
00:25:17,319 --> 00:25:20,839
fake data and that fake data and or the contract

476
00:25:20,960 --> 00:25:24,640
is being generated as ad Jason, and then on the

477
00:25:24,680 --> 00:25:27,359
service side they take this Jason and run it through

478
00:25:28,640 --> 00:25:31,599
like as an API call to the server to test

479
00:25:31,640 --> 00:25:35,200
if the server returns what the contract says it needs

480
00:25:35,200 --> 00:25:38,440
to return and if not, you see an integration problem.

481
00:25:38,799 --> 00:25:39,640
Speaker 3: And that's a.

482
00:25:40,119 --> 00:25:44,079
Speaker 6: I feel that's a much more scalable approach rather than

483
00:25:44,279 --> 00:25:48,400
like using integration tests or end to end test because

484
00:25:48,480 --> 00:25:51,359
those can cover just you know, a small chunk of

485
00:25:51,440 --> 00:25:56,680
your logic because otherwise, for an enterprise application, for example,

486
00:25:56,799 --> 00:25:57,240
it can.

487
00:25:57,119 --> 00:25:59,400
Speaker 3: Take like two hours. I don't know to run all

488
00:25:59,440 --> 00:26:04,440
the scenarios and everything breaks all the time, But I don't.

489
00:26:04,759 --> 00:26:08,039
Speaker 6: I feel like we're only just beginning, Like I don't

490
00:26:08,039 --> 00:26:10,599
have like a go to solution now because I think

491
00:26:10,839 --> 00:26:13,880
there's still much more work to be done. But I

492
00:26:14,480 --> 00:26:17,799
feel that PACKED is a cool organization, like the people

493
00:26:17,839 --> 00:26:18,359
behind it.

494
00:26:18,759 --> 00:26:20,559
Speaker 3: They are open, they have a cool.

495
00:26:22,480 --> 00:26:25,599
Speaker 6: No it's not slack, I think it's a guitar channel

496
00:26:26,480 --> 00:26:29,559
or no, they have also a slack channel and very

497
00:26:29,599 --> 00:26:32,559
open to collaborations and contributions.

498
00:26:33,119 --> 00:26:34,960
Speaker 3: So that's my bit.

499
00:26:35,200 --> 00:26:37,960
Speaker 6: But I think the connection between like the fake data

500
00:26:38,000 --> 00:26:41,440
and something like PACKED or contract testing this is the

501
00:26:41,559 --> 00:26:42,880
obvious thing because you.

502
00:26:42,960 --> 00:26:44,160
Speaker 3: Already have it.

503
00:26:44,160 --> 00:26:47,359
Speaker 6: It's like I think they have there's a strong connection

504
00:26:47,400 --> 00:26:50,000
that they want to work now on in trying to

505
00:26:50,079 --> 00:26:54,680
solve which is between story books and unities because both

506
00:26:54,799 --> 00:26:59,440
have use cases, Right, you describe use cases in your storybook,

507
00:26:59,559 --> 00:27:02,759
like which flags can you like turn on and stuff

508
00:27:02,759 --> 00:27:05,640
like that, and now it behaves, which basically the same

509
00:27:05,680 --> 00:27:08,599
setup in the unit test. You set up the same

510
00:27:08,799 --> 00:27:11,880
stuff in the unities. So like the connection between them

511
00:27:12,200 --> 00:27:15,440
is something I'm exploring right now and trying to maybe

512
00:27:15,680 --> 00:27:19,119
do something new with them. But more on that later

513
00:27:19,200 --> 00:27:21,559
on when I have some POC to show.

514
00:27:23,599 --> 00:27:26,440
Speaker 5: But by the way, concern impacts for those who want

515
00:27:26,480 --> 00:27:30,039
to try, like in fact, like shy, Like I don't

516
00:27:30,079 --> 00:27:31,759
know if I'm gonna take it with me on this,

517
00:27:31,839 --> 00:27:33,480
but you know, I'm not a big fan of like

518
00:27:33,519 --> 00:27:36,119
the real implementation because like pacts is really based on

519
00:27:36,400 --> 00:27:39,799
running a packed server next to your app and then

520
00:27:39,960 --> 00:27:43,400
running a PACT client to test your API, which is

521
00:27:43,480 --> 00:27:49,079
not very unit tests and friendly and paralyzation friendly, and yeah,

522
00:27:49,119 --> 00:27:51,440
it breaks a lot and it brings a lot. So

523
00:27:51,839 --> 00:27:55,119
I've been experiencing things where you what I love about

524
00:27:55,240 --> 00:27:59,240
PACT is the pact specification, Like the JSON file that

525
00:27:59,519 --> 00:28:02,359
came the schema is really nice and it says like

526
00:28:02,440 --> 00:28:05,200
I'm expecting this request and I'm going to respond this

527
00:28:05,240 --> 00:28:09,359
if I'm in this state and I'm not aware of

528
00:28:09,400 --> 00:28:14,079
any library. I've just been experimenting things and maybe you.

529
00:28:14,039 --> 00:28:18,680
Speaker 6: Can you're working on something that they will general to

530
00:28:18,799 --> 00:28:20,960
generate the files without going through the server.

531
00:28:21,759 --> 00:28:27,000
Speaker 5: Yeah, the idea is to make something that doesn't especially

532
00:28:27,039 --> 00:28:30,279
doesn't need the client. What I want to mean by this,

533
00:28:30,400 --> 00:28:33,000
I'm not like putting out like I'm not teasing about anything.

534
00:28:33,000 --> 00:28:37,799
I'm just saying that. I'm just saying that Packed. If

535
00:28:37,839 --> 00:28:43,359
you're not satisfied by packed jas like server and all

536
00:28:43,400 --> 00:28:50,480
the perform a didos attack on them, maybe maybe we

537
00:28:50,599 --> 00:28:54,039
need some libraries that handle the specification. So keep an

538
00:28:54,079 --> 00:28:57,640
eye on Like the Packed specification. The scheme is really nice,

539
00:28:57,640 --> 00:28:59,839
and the way they did it, I think there's something.

540
00:29:00,160 --> 00:29:02,359
I joined Chai on this, like there's something we can

541
00:29:02,599 --> 00:29:06,319
we can do there to join, like all this fake

542
00:29:06,480 --> 00:29:10,160
data with the swagger and the fact there is something,

543
00:29:10,680 --> 00:29:11,519
there is something to do.

544
00:29:11,599 --> 00:29:16,079
Speaker 3: This is the future. Yep, you heard it here first.

545
00:29:19,319 --> 00:29:25,279
Speaker 5: I said it before, but I was along with my cat.

546
00:29:25,319 --> 00:29:27,720
Speaker 1: With my cat, we're kind of getting toward the end

547
00:29:27,720 --> 00:29:29,319
of our time. Is there anything else that we should

548
00:29:30,240 --> 00:29:31,279
make sure we cover here?

549
00:29:32,119 --> 00:29:34,799
Speaker 3: How long it took you to grow this beard?

550
00:29:35,079 --> 00:29:35,319
Speaker 5: Dave?

551
00:29:35,839 --> 00:29:38,160
Speaker 4: Oh, yes, you can see this. I'm not too sure

552
00:29:38,200 --> 00:29:41,079
because I do trim it quite a bit. I've thought

553
00:29:41,079 --> 00:29:44,920
it for quite a few years now, most significent, Thank

554
00:29:44,960 --> 00:29:49,119
you very much. I always enjoy a beard conflict. There's

555
00:29:49,119 --> 00:29:51,880
about there's about eighteen chins underneath this beard.

556
00:29:51,920 --> 00:29:52,519
Speaker 5: I think.

557
00:29:54,839 --> 00:29:56,279
Speaker 3: You're you're in good company.

558
00:29:58,559 --> 00:30:01,000
Speaker 1: I'm kind of curious how much how much more quickly

559
00:30:01,039 --> 00:30:03,279
were you able to move using this technique?

560
00:30:04,400 --> 00:30:04,680
Speaker 3: Boller?

561
00:30:05,039 --> 00:30:06,799
Speaker 2: Do you just feel like you're manfester.

562
00:30:07,200 --> 00:30:10,640
Speaker 4: The beard or the mocking solutions.

563
00:30:10,759 --> 00:30:14,240
Speaker 3: Marking the beard the beard? How quickly?

564
00:30:14,400 --> 00:30:19,119
Speaker 4: Yeah, it's much less. I feel like I mean, personally,

565
00:30:19,400 --> 00:30:22,559
it just feels like I'm not blocked by anything to

566
00:30:22,599 --> 00:30:25,400
do with data. I can make it exactly what I

567
00:30:25,440 --> 00:30:27,799
want when I need to. And you know what, you know,

568
00:30:27,880 --> 00:30:29,799
if I am just spinning up a new project and

569
00:30:29,960 --> 00:30:32,519
I'm waiting on some backend work to be done round

570
00:30:32,519 --> 00:30:35,440
waiting on myself to implement some endpoints, you know, I

571
00:30:35,480 --> 00:30:38,359
can right the front end and i can develop my

572
00:30:38,400 --> 00:30:42,240
features or fix my bugs or whatever. And let's just

573
00:30:42,279 --> 00:30:45,039
say that there's nothing in place to enforce any sort

574
00:30:45,079 --> 00:30:48,039
of integrity between what fake data I'm using and what

575
00:30:48,039 --> 00:30:50,880
the actual schema it's going to look like most of

576
00:30:50,920 --> 00:30:52,519
the time, and by most of the time, I mean

577
00:30:52,640 --> 00:30:55,400
ninety nine times out of one hundred, I can take

578
00:30:55,440 --> 00:30:57,839
a pretty good guess at what it's going to look

579
00:30:57,920 --> 00:31:01,240
like anyway. And you know, if it turns out that

580
00:31:01,240 --> 00:31:03,839
there's an extra field that's coming back in the response

581
00:31:03,880 --> 00:31:06,359
body of a particular request that I need to be

582
00:31:06,519 --> 00:31:09,759
mindful of, or I've met like I've given something the

583
00:31:09,799 --> 00:31:12,279
wrong name or whatever, you know, that's a very quick

584
00:31:12,319 --> 00:31:16,319
and easy fix. So I guess to answer your question directly,

585
00:31:17,200 --> 00:31:20,759
it feels many orders of magnitude faster. And anyone that

586
00:31:20,759 --> 00:31:23,119
I've sort of introduced to this or spoken about or

587
00:31:23,160 --> 00:31:26,000
implored to use that's sort of engaged in any sort

588
00:31:26,039 --> 00:31:28,599
of conversation, you sort of you see them have that

589
00:31:28,640 --> 00:31:31,799
sort of moment where they realize just how helpful this

590
00:31:31,839 --> 00:31:34,480
sort of stuff is. I don't really think that everyone

591
00:31:34,640 --> 00:31:38,880
is aware of these sorts of techniques and that they

592
00:31:38,920 --> 00:31:41,559
aren't complicated to set up, and they're not invasive in

593
00:31:41,559 --> 00:31:44,440
your own code base, and you sort of see them

594
00:31:44,759 --> 00:31:47,359
have that sort of Eureka moment, the light bulb turns

595
00:31:47,400 --> 00:31:50,880
on and all of a sudden, this is great. So yeah,

596
00:31:50,960 --> 00:31:52,680
I guess that's probably the best answer that I can

597
00:31:52,720 --> 00:31:55,519
give you for that nice But the way.

598
00:31:55,400 --> 00:31:57,720
Speaker 3: Have you talked about other generating like.

599
00:31:58,440 --> 00:32:03,119
Speaker 4: Yeah, so I'm I'm currently I've just about written a

600
00:32:03,200 --> 00:32:07,720
finished writing a Chrome plug in that I can make

601
00:32:07,759 --> 00:32:11,880
it record and requests that I'm making and capture actual

602
00:32:11,960 --> 00:32:15,440
requests and export them as marks to use nice, which

603
00:32:15,480 --> 00:32:17,759
is really really nice. I'm hoping to get that published

604
00:32:17,799 --> 00:32:21,480
pretty soon and I'll be spamming that on on social

605
00:32:21,519 --> 00:32:24,559
media and trying to get people now in that as well.

606
00:32:25,039 --> 00:32:30,039
Speaker 5: I'm away retweak excellent And by the way, I also

607
00:32:30,079 --> 00:32:34,920
have like a real quick question concerning recommendation. Would you

608
00:32:34,960 --> 00:32:40,559
recommend using like static fake data like as static as possible,

609
00:32:41,240 --> 00:32:45,759
or would you recommend using like some dynamic features like

610
00:32:45,839 --> 00:32:48,359
things we can see with the Jason server, Like would

611
00:32:48,359 --> 00:32:52,519
you hard code like slash user slash user ID and

612
00:32:52,559 --> 00:32:57,599
the response are Would you recommend like writing dynamics stuff

613
00:32:57,720 --> 00:33:01,319
like add some a little JavaScript to the Jason server.

614
00:33:02,279 --> 00:33:04,079
Speaker 4: That's a good question. I guess it depends on what

615
00:33:04,160 --> 00:33:07,039
data you're dealing with. But that sort of leads into

616
00:33:07,079 --> 00:33:10,559
other conversations as well, Like you've got certain things that

617
00:33:11,119 --> 00:33:15,000
you know they're pretty static, like someone's name is pretty static,

618
00:33:15,519 --> 00:33:19,119
someone's account balance is not so static. But even for

619
00:33:19,200 --> 00:33:22,039
the things that are really static, you know, you then

620
00:33:22,160 --> 00:33:25,319
get you then delve into the territory of I can't

621
00:33:25,319 --> 00:33:28,039
remember what the exact term for it is, but you know,

622
00:33:28,079 --> 00:33:30,519
we're talking about, well, what if you've got a really

623
00:33:30,519 --> 00:33:32,480
really long name or really really short name sort of

624
00:33:32,759 --> 00:33:36,599
catching those sorts of boundaries. What happens when your applications

625
00:33:36,680 --> 00:33:39,359
using a language that is, instead of left to right,

626
00:33:39,400 --> 00:33:41,319
it's sort of right to left sort of language. And

627
00:33:41,359 --> 00:33:43,920
you've got those sorts of you know, and now you've

628
00:33:43,920 --> 00:33:45,799
got got to deal with really short and long names

629
00:33:45,799 --> 00:33:48,480
and see how how you interface behaves with that sort

630
00:33:48,519 --> 00:33:51,319
of stuff. So I guess I can't really directly give

631
00:33:51,359 --> 00:33:53,640
you an answer there. Most of the time I tend

632
00:33:53,640 --> 00:33:58,319
to stick with really static things, but I guess it's

633
00:33:58,359 --> 00:34:01,680
definitely very valid ton stead of using a more dynamic

634
00:34:01,680 --> 00:34:05,000
approach as well, it probably helps you test a wider

635
00:34:05,119 --> 00:34:06,240
range of things.

636
00:34:06,599 --> 00:34:06,880
Speaker 5: Thanks.

637
00:34:06,920 --> 00:34:10,960
Speaker 2: Okay, all right, well let's go ahead and use the picks. Shy,

638
00:34:11,440 --> 00:34:13,000
do you want to start us off with the picks?

639
00:34:13,360 --> 00:34:13,599
Speaker 6: Yeah?

640
00:34:13,719 --> 00:34:15,039
Speaker 3: Yes, Jack.

641
00:34:17,679 --> 00:34:22,360
Speaker 6: First of all, I want to pick so Angikov did

642
00:34:22,840 --> 00:34:28,199
this live call when they talked about IV and how

643
00:34:28,239 --> 00:34:32,280
to prepare to angular for angular and nine how to

644
00:34:32,360 --> 00:34:35,960
prepare right now before the announcement, so check it out.

645
00:34:36,000 --> 00:34:37,079
Speaker 3: I will put a link.

646
00:34:37,920 --> 00:34:45,119
Speaker 6: And also recently I retweeted or I tweeted this short

647
00:34:45,199 --> 00:34:51,119
video by Angela you where she talks about her approach

648
00:34:51,239 --> 00:34:55,239
to like focus on things you can change and be

649
00:34:55,280 --> 00:34:58,679
in a role model. Really cool short video teaches I

650
00:34:58,679 --> 00:35:02,519
think iOS and how to develop apps for mobile.

651
00:35:03,079 --> 00:35:07,639
Speaker 3: So I'll put that as well. And those are our.

652
00:35:07,559 --> 00:35:11,599
Speaker 2: Picks nice units you have to picks for us.

653
00:35:12,000 --> 00:35:17,119
Speaker 5: So I have this link. It's Chase on generator dot com.

654
00:35:17,239 --> 00:35:20,159
It's just I thought about it because it's related to

655
00:35:20,480 --> 00:35:23,000
the topic, like it's really nice. I don't know if

656
00:35:23,039 --> 00:35:26,119
you know about it. It's a little online tool to

657
00:35:26,400 --> 00:35:31,280
generate fake data that doesn't look like full bar, you know,

658
00:35:31,599 --> 00:35:35,519
something more realistic. It has generators for company names and

659
00:35:35,760 --> 00:35:39,639
cities and things like that. And the other the other

660
00:35:39,760 --> 00:35:44,599
pick is a random code from canspeg like father of

661
00:35:44,639 --> 00:35:47,199
Extreme Programming, which is quite related to what we're talking

662
00:35:47,239 --> 00:35:49,840
about here today about tests and things like that. It

663
00:35:50,239 --> 00:35:55,119
just says like that developing an application is just like

664
00:35:55,159 --> 00:35:58,039
a boat with a hole in it. If you keep

665
00:35:58,159 --> 00:36:02,639
rowing like you end up under the water. But if

666
00:36:02,639 --> 00:36:05,159
you just keep on like taking the water out of

667
00:36:05,199 --> 00:36:08,639
the boat. You're not moving, so it's like an equilibrium.

668
00:36:08,880 --> 00:36:12,320
And that's what I like about the approach of Dave Cooper. Okay,

669
00:36:12,400 --> 00:36:15,480
we're not like TDD and everything. We're not just like

670
00:36:15,599 --> 00:36:19,159
it's not perfect, but anyway, we're moving forward, we're moving fast,

671
00:36:19,159 --> 00:36:21,079
and we're keeping it clean anyway, you.

672
00:36:21,119 --> 00:36:21,920
Speaker 3: Know, awesome.

673
00:36:21,920 --> 00:36:24,159
Speaker 6: By the way, I want to mention that Canback has

674
00:36:24,199 --> 00:36:28,920
a nice little video series now on YouTube on his

675
00:36:29,360 --> 00:36:34,079
channel where he talks about testing. You need testing, I think,

676
00:36:34,159 --> 00:36:38,760
And one thing that he mentioned which really makes make

677
00:36:38,880 --> 00:36:43,400
sense to me was not treating your code, your testing

678
00:36:43,400 --> 00:36:48,639
code as production code, which is countering most beliefs that

679
00:36:48,679 --> 00:36:52,519
I heard before, like keeping your tests dry and all

680
00:36:52,559 --> 00:36:56,199
that stuff. It actually creates more problems when you try

681
00:36:56,199 --> 00:36:59,239
to keep things dry and you end up not understanding

682
00:36:59,239 --> 00:37:00,199
what the tests are doing.

683
00:37:00,360 --> 00:37:02,360
Speaker 3: So that's kind of a nice way.

684
00:37:02,840 --> 00:37:06,599
Speaker 6: And now this and I don't know counter approach to

685
00:37:06,679 --> 00:37:09,800
look at your tests and try not to dry everything

686
00:37:10,000 --> 00:37:12,960
and make everything you still just think about what you

687
00:37:13,000 --> 00:37:16,840
are drying and what you're keeping in like in front

688
00:37:16,840 --> 00:37:20,159
of the developer who write the test or maintain the test.

689
00:37:20,599 --> 00:37:21,440
Speaker 3: So that's one thing.

690
00:37:21,480 --> 00:37:23,800
Speaker 6: And by the way, I've forgot to mention in my piks,

691
00:37:23,880 --> 00:37:27,480
let me like hijack one quick. I have like a

692
00:37:27,519 --> 00:37:31,079
free workshop on like the types of tests and stuff

693
00:37:31,079 --> 00:37:33,960
like that, so you could like sign up on testangler

694
00:37:34,000 --> 00:37:36,840
dot com and when it will be released again you

695
00:37:36,880 --> 00:37:40,239
will get a entification. But I'm talking there about like

696
00:37:40,639 --> 00:37:42,920
you know, the contract tests and all the stuff that

697
00:37:42,920 --> 00:37:46,559
we talked about this episode. Just forgot about it. So yeah,

698
00:37:46,599 --> 00:37:47,719
testanglar dot com.

699
00:37:47,920 --> 00:37:51,920
Speaker 2: And that's it for me, Nice Unice, anything else from you?

700
00:37:52,480 --> 00:37:53,719
Speaker 5: Oh, that's it for today.

701
00:37:53,760 --> 00:37:54,119
Speaker 3: Okay.

702
00:37:54,519 --> 00:37:56,320
Speaker 1: I'm always like eager to go and then I'm like,

703
00:37:56,440 --> 00:37:59,400
am I cutting them off? So awesome. I've got a

704
00:37:59,440 --> 00:38:02,519
couple of picks here. The first one is Man on

705
00:38:02,559 --> 00:38:04,760
the other shows I've been doing Christmas movie picks, but

706
00:38:04,800 --> 00:38:06,360
I think we might be a little bit too late

707
00:38:06,400 --> 00:38:08,119
on that. I'm gonna throw it out anyway, and we'll

708
00:38:08,119 --> 00:38:10,119
just see where it goes. If you get this right

709
00:38:10,159 --> 00:38:13,360
after Christmas watch them anyway. So I'm just gonna pick

710
00:38:13,519 --> 00:38:15,639
four or five Christmas movies that I really really love.

711
00:38:16,039 --> 00:38:18,760
These were spread out over several weeks on like JavaScript

712
00:38:18,800 --> 00:38:21,400
jabber and stuff, so if you've already heard them, I'm sorry.

713
00:38:21,440 --> 00:38:22,400
Speaker 2: But there you go.

714
00:38:22,760 --> 00:38:24,719
Speaker 1: Some of the movies that I think everybody should watch.

715
00:38:24,760 --> 00:38:27,360
I think my favorite one of all time is A

716
00:38:27,440 --> 00:38:31,119
Christmas Story, and that's just a classic movie, tons of

717
00:38:31,119 --> 00:38:32,599
one liner's funny scenes.

718
00:38:32,920 --> 00:38:34,880
Speaker 2: I mean, just a terrific movie.

719
00:38:35,280 --> 00:38:36,840
Speaker 1: So if you haven't seen it, I think it came

720
00:38:36,880 --> 00:38:39,719
out in nineteen eighty three, definitely check it out.

721
00:38:39,840 --> 00:38:40,760
Speaker 2: And then the.

722
00:38:40,679 --> 00:38:42,400
Speaker 1: Rest of these are going to be a bit older.

723
00:38:42,719 --> 00:38:45,880
The first one's called Holiday Inn. It's the first movie

724
00:38:45,960 --> 00:38:49,880
in which the song White Christmas appeared. And yes, there

725
00:38:49,920 --> 00:38:52,880
is a movie called White Christmas. Both movies actually have

726
00:38:52,960 --> 00:38:55,599
Bean Crosby in them, and he sings the song in

727
00:38:55,639 --> 00:38:58,400
both movies. They're both terrific. One was made in the

728
00:38:58,400 --> 00:39:00,920
forties and one was made in the fifties. Holiday Inn

729
00:39:00,960 --> 00:39:04,199
has Being Crosby and Fred Astaire in it, so a

730
00:39:04,239 --> 00:39:06,880
little bit more dancing and zinging and stuff. There is

731
00:39:06,960 --> 00:39:09,480
plenty of singing in White Christmas though, and it features

732
00:39:09,559 --> 00:39:13,039
Danny Kay, and Danny Kay is hilarious. So if you

733
00:39:13,079 --> 00:39:15,159
want to go look up other older movies that are

734
00:39:15,199 --> 00:39:18,599
worth watching that are freaking funny, just go find anything

735
00:39:18,599 --> 00:39:21,719
with him in it, because they're awesome. And then another

736
00:39:21,760 --> 00:39:23,559
one and This is an old movie. It's a Kerry

737
00:39:23,599 --> 00:39:27,800
Grant movie. It's called The Bishop's Wife. Basically, it's this

738
00:39:27,880 --> 00:39:30,800
bishop he feels called to build the cathedral in the town,

739
00:39:31,480 --> 00:39:35,079
and so this angel appears and you know, kind of

740
00:39:35,079 --> 00:39:38,639
interacts with him and his wife. Anyway, it's a terrific movie.

741
00:39:38,679 --> 00:39:40,239
I'm not going to spoil too much more of it,

742
00:39:40,320 --> 00:39:44,480
but yeah, it was pretty awesome. And then my mom

743
00:39:44,519 --> 00:39:46,599
took us all to see Frozen two, so I'm going

744
00:39:46,639 --> 00:39:48,599
to pick that. It's not a Christmas movie, but it

745
00:39:48,679 --> 00:39:52,280
was terrific and my favorite part was the Lost in

746
00:39:52,320 --> 00:39:54,880
the Woods song. If you grew up as part of

747
00:39:54,920 --> 00:39:57,320
my generation, you'll enjoy it. That's all I'm going to

748
00:39:57,360 --> 00:39:59,719
say about that. Dave, Do you have some picks for us?

749
00:40:00,199 --> 00:40:03,360
Speaker 4: Yeah? I was going to be really self indulgent and

750
00:40:03,519 --> 00:40:07,360
just pick the Mocking Library that I wrote as a pick,

751
00:40:07,440 --> 00:40:10,280
but no, no, no, no, no, I can't do that.

752
00:40:11,000 --> 00:40:13,280
Speaker 2: And then pick that mouse all right, I'll pick.

753
00:40:13,079 --> 00:40:16,599
Speaker 4: That Data Marks. You can get it off NPM. If

754
00:40:16,639 --> 00:40:19,000
you do, give it a go, and if you love

755
00:40:19,000 --> 00:40:21,480
it or hate it, please let me know. I'm always

756
00:40:21,920 --> 00:40:27,360
up for contributions or discussions or suggestions. I love all

757
00:40:27,360 --> 00:40:31,360
of that stuff. But I think I'll pick another thing

758
00:40:31,440 --> 00:40:34,559
which is not along these sorts of lines. But I've

759
00:40:35,159 --> 00:40:38,280
recently just returned to working after about three and a

760
00:40:38,320 --> 00:40:41,320
half months off because my baby was born and I

761
00:40:41,719 --> 00:40:44,880
had the opportunity to take some time to time off

762
00:40:44,920 --> 00:40:48,039
work to sort of learn how to take care of

763
00:40:48,039 --> 00:40:52,079
a human. But during that time I got really big

764
00:40:52,119 --> 00:40:58,000
into baking bread and it's unbelievably satisfying putting in the

765
00:40:58,000 --> 00:41:01,599
effort and the hours to getting a really good loaf

766
00:41:01,679 --> 00:41:05,159
of bread baked. So there's a guy who lives in

767
00:41:05,239 --> 00:41:08,599
Bath in the UK called Richard Bertone, and he's got

768
00:41:08,599 --> 00:41:12,400
a book called Dough and that would be my pick.

769
00:41:13,119 --> 00:41:16,159
I've done a bread making course with him before, but

770
00:41:16,280 --> 00:41:19,199
he is like the bread god. He really understands all

771
00:41:19,239 --> 00:41:22,239
of that stuff. So my pick will be baked some

772
00:41:22,320 --> 00:41:23,920
bread and read that book.

773
00:41:25,719 --> 00:41:26,079
Speaker 5: Nice.

774
00:41:26,960 --> 00:41:29,239
Speaker 1: I love cooking. So yeah, that's right at my alley.

775
00:41:29,719 --> 00:41:31,480
If people want to find you online, where are you?

776
00:41:32,119 --> 00:41:35,119
Speaker 4: I'm on Twitter. I'm not super active, but that's just

777
00:41:35,119 --> 00:41:38,599
because I don't think many people want to read my ramblings.

778
00:41:38,599 --> 00:41:43,360
But my Twitter handle is at Dave Wright's Codes with

779
00:41:43,400 --> 00:41:47,039
an S on the end. There you can also see

780
00:41:47,079 --> 00:41:49,880
my blog at Dave Cooper dot org or shoot me

781
00:41:49,920 --> 00:41:52,079
an email on Dave at Davecooper dot org.

782
00:41:52,639 --> 00:41:55,840
Speaker 1: Nice, all right, well we'll go ahead and wrap up,

783
00:41:55,880 --> 00:41:58,000
but thanks for coming and talking to us.

784
00:41:58,199 --> 00:41:59,280
Speaker 4: Yeah, thanks so much for having me.

785
00:41:59,280 --> 00:42:01,159
Speaker 2: That was a lot of fun and thanks for filling

786
00:42:01,199 --> 00:42:02,000
in with this unis.

787
00:42:02,199 --> 00:42:04,039
Speaker 5: Thank you, thank you for having me.

788
00:42:04,360 --> 00:42:07,559
Speaker 1: All right, folks, Well, yeah, we'll have another one next

789
00:42:07,599 --> 00:42:09,000
week and in the meantime max out

