WEBVTT

1
00:00:00.200 --> 00:00:03.399
<v Speaker 1>Welcome to React Roundup, the podcast where we keep you

2
00:00:03.480 --> 00:00:07.080
<v Speaker 1>updated on all things React related. This show is brought

3
00:00:07.080 --> 00:00:11.080
<v Speaker 1>to you by Void and top End Devs. Unvoid provides

4
00:00:11.160 --> 00:00:14.839
<v Speaker 1>high quality design and software development services on a client

5
00:00:14.880 --> 00:00:20.239
<v Speaker 1>friendly business model. Unlike all other software agencies, Unvoid allows

6
00:00:20.239 --> 00:00:24.120
<v Speaker 1>clients to only pay after the work is delivered and approved.

7
00:00:24.600 --> 00:00:28.079
<v Speaker 1>Visit unvoid dot com to learn more and reach out.

8
00:00:28.199 --> 00:00:30.679
<v Speaker 1>If you know a company that needs more professionals to

9
00:00:30.760 --> 00:00:36.000
<v Speaker 1>help with design and software development, that's u n void

10
00:00:36.479 --> 00:00:39.840
<v Speaker 1>dot com and top end Davs helps you stay up

11
00:00:39.840 --> 00:00:44.320
<v Speaker 1>to date with cutting edge technologies like JavaScript, Ruby, Elixir,

12
00:00:44.520 --> 00:00:48.799
<v Speaker 1>and AI. Visit topandevs dot com to join their AIDV

13
00:00:48.880 --> 00:00:54.159
<v Speaker 1>boot camp, weekly community meetups and access expert tutorials. I'm

14
00:00:54.240 --> 00:00:58.079
<v Speaker 1>Lucas Paganini, founder of Onvoid and host of this podcast.

15
00:00:58.439 --> 00:01:04.400
<v Speaker 1>Thank you for tuning in. Let's jump into the episode.

16
00:01:07.640 --> 00:01:10.719
<v Speaker 2>Hello everybody, and welcome to another episode of React Round That.

17
00:01:11.120 --> 00:01:13.280
<v Speaker 2>My name is TJ Van Tol and with me on

18
00:01:13.280 --> 00:01:14.840
<v Speaker 2>a panel today is Paige.

19
00:01:14.680 --> 00:01:17.439
<v Speaker 3>Meeting guts Hey everyone, and our.

20
00:01:17.359 --> 00:01:21.159
<v Speaker 2>Special guest today is mirslav nick Love which hopefully I

21
00:01:21.239 --> 00:01:24.000
<v Speaker 2>pronounced that correctly, but mirsta. Welcome to React round that.

22
00:01:24.079 --> 00:01:26.640
<v Speaker 2>Why don't you tell everybody who you are, what you do,

23
00:01:26.799 --> 00:01:28.400
<v Speaker 2>why you're famous, that sort of stuff.

24
00:01:28.879 --> 00:01:31.840
<v Speaker 4>Thank you, hi, everybody. I don't think i'm famous, to

25
00:01:31.879 --> 00:01:36.040
<v Speaker 4>be honest, I work as a UI developer mostly front

26
00:01:36.120 --> 00:01:40.000
<v Speaker 4>ends so one dot com it's Danish company that is

27
00:01:40.040 --> 00:01:45.040
<v Speaker 4>currently expelling, and what I do is basically react and

28
00:01:45.159 --> 00:01:49.040
<v Speaker 4>in my free time, I try to maintain my block

29
00:01:49.400 --> 00:01:54.840
<v Speaker 4>so turning my experience in some useful articles. That's like

30
00:01:54.959 --> 00:01:58.719
<v Speaker 4>something like a hobby. And yeah, I'm a family guy.

31
00:01:59.599 --> 00:02:04.200
<v Speaker 4>My wife, Panta, kids a boy, so that basically takes

32
00:02:04.359 --> 00:02:08.319
<v Speaker 4>a hour all my free time, so I don't really

33
00:02:08.400 --> 00:02:11.719
<v Speaker 4>have much time to spend on side activities.

34
00:02:12.199 --> 00:02:15.639
<v Speaker 2>That's so fun. We were talking before. I'm very jealous Denmark.

35
00:02:15.719 --> 00:02:18.840
<v Speaker 2>Copenhagen is a super beautiful area, so I'm very jealous

36
00:02:18.840 --> 00:02:21.240
<v Speaker 2>of that. And your blog will drop it in the

37
00:02:22.280 --> 00:02:24.479
<v Speaker 2>show notes as well. I like the design on it

38
00:02:24.520 --> 00:02:27.639
<v Speaker 2>as well, and I know like reading through some of them.

39
00:02:27.680 --> 00:02:30.039
<v Speaker 2>I know you wanted to talk a bit about testing

40
00:02:30.120 --> 00:02:33.960
<v Speaker 2>and writing just human what you call human friendly REAC

41
00:02:34.000 --> 00:02:37.000
<v Speaker 2>component tests. Do you want to outline sort of that

42
00:02:37.199 --> 00:02:39.520
<v Speaker 2>whole concept and what you mean by that to sort

43
00:02:39.560 --> 00:02:40.479
<v Speaker 2>of kick us off here?

44
00:02:41.159 --> 00:02:46.080
<v Speaker 4>It's it's basically it's all about library called Unexpected Jays

45
00:02:46.400 --> 00:02:49.919
<v Speaker 4>and it's I know it's not very popular, but what

46
00:02:50.039 --> 00:02:53.000
<v Speaker 4>it does on what it adds on top of everything

47
00:02:53.039 --> 00:02:57.360
<v Speaker 4>else we have seen is actually out of playing English

48
00:02:57.719 --> 00:03:01.280
<v Speaker 4>when you when you write your tests. And I'm using

49
00:03:01.319 --> 00:03:05.159
<v Speaker 4>that library basically for the past five years, and I

50
00:03:05.280 --> 00:03:09.039
<v Speaker 4>just decided to write an article which is just a

51
00:03:09.159 --> 00:03:13.479
<v Speaker 4>short introduction to what is possible with the library. And

52
00:03:13.520 --> 00:03:16.080
<v Speaker 4>so I decided to write the article for cisys Tricks

53
00:03:16.120 --> 00:03:21.159
<v Speaker 4>so that it's basically rich a little bit wider audience.

54
00:03:22.039 --> 00:03:25.479
<v Speaker 4>And it was very surprising that I think right now,

55
00:03:25.479 --> 00:03:30.360
<v Speaker 4>if you write React component tests or just React tests testing,

56
00:03:31.280 --> 00:03:34.560
<v Speaker 4>that appears on the first page. But I believe this

57
00:03:34.719 --> 00:03:40.400
<v Speaker 4>is because of the strong domain of cesys Tricks. So yeah,

58
00:03:40.560 --> 00:03:45.759
<v Speaker 4>it's also brought some discussion because it seems like people

59
00:03:45.840 --> 00:03:49.800
<v Speaker 4>prefer different style of testing and it's a little bit opinionated,

60
00:03:50.560 --> 00:03:53.800
<v Speaker 4>but yeah, there are some there is some positive feedback

61
00:03:54.080 --> 00:03:54.520
<v Speaker 4>as well.

62
00:03:54.840 --> 00:03:58.680
<v Speaker 3>So can you expand a little bit about about what

63
00:03:58.879 --> 00:04:02.199
<v Speaker 3>unexpected jas is because that's actually a framework that I've

64
00:04:02.199 --> 00:04:05.840
<v Speaker 3>never heard of before. I'm interested does it work like

65
00:04:05.960 --> 00:04:09.840
<v Speaker 3>with React testing library or is it Cyprus or is

66
00:04:09.879 --> 00:04:12.400
<v Speaker 3>it both unit and and can you tell us a

67
00:04:12.400 --> 00:04:13.360
<v Speaker 3>little bit more about it?

68
00:04:13.719 --> 00:04:16.759
<v Speaker 4>Yeah, first just to say that I'm not a maintainer

69
00:04:16.800 --> 00:04:20.000
<v Speaker 4>of the library. I'm using it, but as far as

70
00:04:20.040 --> 00:04:22.480
<v Speaker 4>I know, it should be able because it works with

71
00:04:22.560 --> 00:04:25.519
<v Speaker 4>plug ins. It should be able to use some of

72
00:04:25.560 --> 00:04:29.000
<v Speaker 4>the plug ins with reg Testing library, so you can

73
00:04:29.160 --> 00:04:33.199
<v Speaker 4>use REAP testing library and some assertions custom assertions on

74
00:04:33.240 --> 00:04:36.920
<v Speaker 4>top so you can write your plain English tests and

75
00:04:38.480 --> 00:04:42.839
<v Speaker 4>behind that it's React Testing library, so it should be possible,

76
00:04:42.879 --> 00:04:47.079
<v Speaker 4>though I haven't tried. Yeah, and I also kept for

77
00:04:47.079 --> 00:04:49.639
<v Speaker 4>a light version of the article on my block, just

78
00:04:50.040 --> 00:04:53.360
<v Speaker 4>it's a little bit lighter without the introduction because currently

79
00:04:53.399 --> 00:04:57.759
<v Speaker 4>it's a little bit controversial on how we tests, and

80
00:04:58.079 --> 00:05:01.839
<v Speaker 4>I know the community is going strongly after reacticting library.

81
00:05:02.519 --> 00:05:08.360
<v Speaker 4>So people are sometimes speaky when you present something unusual

82
00:05:08.560 --> 00:05:09.000
<v Speaker 4>for you.

83
00:05:09.480 --> 00:05:11.879
<v Speaker 3>Absolutely new things are not to be trusted.

84
00:05:12.920 --> 00:05:15.639
<v Speaker 2>Developments don't have opinions and what you're talking about.

85
00:05:18.240 --> 00:05:21.480
<v Speaker 3>So how did you first come across unexpected? You said

86
00:05:21.480 --> 00:05:23.560
<v Speaker 3>you've been using it for a number of years. Now,

87
00:05:23.600 --> 00:05:25.879
<v Speaker 3>did it somebody else introduce it to you or was

88
00:05:25.920 --> 00:05:28.240
<v Speaker 3>it just something you stumbled upon and you really liked.

89
00:05:28.399 --> 00:05:31.199
<v Speaker 3>How how it operated. Uh.

90
00:05:31.879 --> 00:05:34.519
<v Speaker 4>To be honest, I didn't have choice because when I

91
00:05:34.600 --> 00:05:38.560
<v Speaker 4>joined one dot com, they have already they already used

92
00:05:38.759 --> 00:05:43.079
<v Speaker 4>have already using this library. And some of the people

93
00:05:43.079 --> 00:05:47.480
<v Speaker 4>who are maintaining the library also work for the company

94
00:05:47.600 --> 00:05:50.480
<v Speaker 4>at some point though they are no longer part, but

95
00:05:50.959 --> 00:05:54.240
<v Speaker 4>we're still we're still using it internally.

96
00:05:53.879 --> 00:05:55.319
<v Speaker 3>So that's a good reason.

97
00:05:55.360 --> 00:05:59.639
<v Speaker 2>Is any did you get a little bit into I know,

98
00:05:59.680 --> 00:06:01.920
<v Speaker 2>one thing you cover in your article is trying the

99
00:06:02.040 --> 00:06:05.959
<v Speaker 2>right tests that are sort of a least say, human

100
00:06:06.040 --> 00:06:09.879
<v Speaker 2>friendly or easily readable. Could you give like some examples

101
00:06:09.920 --> 00:06:11.839
<v Speaker 2>of what you mean by that, And I know, like

102
00:06:12.800 --> 00:06:16.680
<v Speaker 2>syntax is kind of hard on an audio podcast, but

103
00:06:16.800 --> 00:06:21.279
<v Speaker 2>just like high level like how you approach structuring tests

104
00:06:21.360 --> 00:06:24.480
<v Speaker 2>in a human friendlier, in a more readable way.

105
00:06:24.680 --> 00:06:29.120
<v Speaker 4>So basically what we use is the usual arrange acts

106
00:06:29.240 --> 00:06:32.800
<v Speaker 4>assert kind of thing, which is I mean you first

107
00:06:32.879 --> 00:06:35.600
<v Speaker 4>arrange or test, then you act on it, and then

108
00:06:35.639 --> 00:06:40.560
<v Speaker 4>you assert. So this is basically shared approach for I

109
00:06:40.600 --> 00:06:45.040
<v Speaker 4>think for every testing library. But what Unexpected does a

110
00:06:45.079 --> 00:06:49.519
<v Speaker 4>little bit different is the expect. Assertion is just a

111
00:06:49.600 --> 00:06:55.279
<v Speaker 4>function expect and inside you pass as many arguments as

112
00:06:55.319 --> 00:07:00.920
<v Speaker 4>you want, and these arguments are just plain strings, so

113
00:07:01.000 --> 00:07:04.560
<v Speaker 4>you don't really have a JP relax syntax like dot

114
00:07:05.199 --> 00:07:09.800
<v Speaker 4>dot equals or dot to be executed. You just play

115
00:07:09.800 --> 00:07:14.680
<v Speaker 4>in English and usually the editor is colors that in

116
00:07:14.680 --> 00:07:16.920
<v Speaker 4>the same color, so it's very easy to read. It's

117
00:07:16.920 --> 00:07:19.959
<v Speaker 4>easy for the eye. Maybe not so straightforward to write

118
00:07:19.959 --> 00:07:23.399
<v Speaker 4>it because your editor won't help you to auto complete

119
00:07:23.720 --> 00:07:29.480
<v Speaker 4>different function goals, but it's it's it's really it's really

120
00:07:29.600 --> 00:07:32.519
<v Speaker 4>easy for the eye. And we we are working in

121
00:07:32.639 --> 00:07:35.800
<v Speaker 4>a in a team and it's basically usually not just

122
00:07:35.839 --> 00:07:39.160
<v Speaker 4>one person who is working with these file testing files,

123
00:07:39.680 --> 00:07:42.560
<v Speaker 4>So you want something expressive there.

124
00:07:42.920 --> 00:07:45.639
<v Speaker 3>That's very cool. I'm looking at the article right now.

125
00:07:46.319 --> 00:07:50.800
<v Speaker 3>I guess one question I have is how how long

126
00:07:50.959 --> 00:07:53.439
<v Speaker 3>do you think it takes a new developer to get

127
00:07:53.519 --> 00:07:57.000
<v Speaker 3>up to speed with using something like unexpected. Like most

128
00:07:57.079 --> 00:07:59.800
<v Speaker 3>of us, if we've been working with React for a while,

129
00:07:59.800 --> 00:08:03.639
<v Speaker 3>we're probably pretty familiar with just may be familiar with Enzyme,

130
00:08:04.160 --> 00:08:08.079
<v Speaker 3>maybe familiar with React testing library. But how easy or

131
00:08:08.120 --> 00:08:10.560
<v Speaker 3>difficult do you think it is to get up to

132
00:08:10.600 --> 00:08:14.120
<v Speaker 3>speed with unexpected and then start to potentially integrate it

133
00:08:14.120 --> 00:08:17.439
<v Speaker 3>into any existing testing frameworks that you might have.

134
00:08:18.000 --> 00:08:20.920
<v Speaker 4>I think it's pretty easy, especially if you use examples

135
00:08:20.959 --> 00:08:25.720
<v Speaker 4>as a real examples as a reference. Maybe documentation is

136
00:08:25.759 --> 00:08:29.199
<v Speaker 4>not going to be the fastest path learning path, but

137
00:08:30.000 --> 00:08:33.200
<v Speaker 4>if you use examples, it's really easy. And usually you

138
00:08:33.240 --> 00:08:36.879
<v Speaker 4>have just you have several common assertions that you would

139
00:08:36.919 --> 00:08:40.639
<v Speaker 4>like to use, and you don't really use so many

140
00:08:41.120 --> 00:08:46.000
<v Speaker 4>different features, at least for the React components. You want

141
00:08:46.039 --> 00:08:50.120
<v Speaker 4>to test if something has rendered, so usually you test

142
00:08:50.519 --> 00:08:54.080
<v Speaker 4>you equate for an element and you test for its

143
00:08:54.159 --> 00:08:58.799
<v Speaker 4>string that it contains. And also the other thing is

144
00:08:58.840 --> 00:09:04.320
<v Speaker 4>testing function that is also straightforward. So apart from these

145
00:09:04.879 --> 00:09:10.960
<v Speaker 4>two things presence of certain elements and executing functions, you're

146
00:09:11.159 --> 00:09:16.080
<v Speaker 4>most likely rarely going to use other other like assercial

147
00:09:16.200 --> 00:09:19.559
<v Speaker 4>So I would say, but it's it's very straightforward, at

148
00:09:19.639 --> 00:09:20.759
<v Speaker 4>least for at least for me.

149
00:09:20.840 --> 00:09:25.720
<v Speaker 3>It us as I remember, that's always encouraging. It's I

150
00:09:25.759 --> 00:09:28.399
<v Speaker 3>remember when I was first learning React Testing Library. It

151
00:09:28.480 --> 00:09:31.279
<v Speaker 3>was kind of a massive mind shift for me to

152
00:09:31.360 --> 00:09:33.720
<v Speaker 3>go from the way that just an enzyme had been

153
00:09:33.759 --> 00:09:37.759
<v Speaker 3>doing it to trying to reorient myself towards the way

154
00:09:37.840 --> 00:09:41.159
<v Speaker 3>React Testing Library focuses on what's in the dom and

155
00:09:41.240 --> 00:09:45.240
<v Speaker 3>interacting with that at a unit test level. So anything

156
00:09:45.279 --> 00:09:48.480
<v Speaker 3>that is easier to get up and started with is

157
00:09:48.519 --> 00:09:51.240
<v Speaker 3>definitely always good.

158
00:09:52.159 --> 00:09:55.120
<v Speaker 2>Yeah, that's still something is like I'm not as in

159
00:09:55.200 --> 00:10:00.639
<v Speaker 2>the weeds with unit testing libraries anymore, So sometimes a

160
00:10:00.679 --> 00:10:03.320
<v Speaker 2>lot of this type of stuff goes over my head

161
00:10:04.039 --> 00:10:07.320
<v Speaker 2>and I'm actually curious, like this, this is a question,

162
00:10:07.360 --> 00:10:10.399
<v Speaker 2>I guess for both of you, is where is the

163
00:10:10.519 --> 00:10:13.600
<v Speaker 2>React world at right now for in terms of like

164
00:10:13.720 --> 00:10:19.600
<v Speaker 2>testing markup structure in your like individual unit tests, Because

165
00:10:19.879 --> 00:10:21.960
<v Speaker 2>I know Miroslov in some of your articles you went

166
00:10:22.000 --> 00:10:26.559
<v Speaker 2>in and you are like basically asserting against the exact

167
00:10:26.679 --> 00:10:30.799
<v Speaker 2>dom structure. Is there some advantages of that or like

168
00:10:31.440 --> 00:10:33.559
<v Speaker 2>versus like I'm if I want to test my component

169
00:10:33.559 --> 00:10:37.200
<v Speaker 2>render something specifically, like how specific should your as search

170
00:10:37.200 --> 00:10:39.600
<v Speaker 2>and be for I'm looking for this exact markup structure

171
00:10:39.720 --> 00:10:41.279
<v Speaker 2>or do you just like try to pick out an

172
00:10:41.320 --> 00:10:44.559
<v Speaker 2>individual string like I just care that it spit this

173
00:10:44.639 --> 00:10:47.480
<v Speaker 2>out correctly. Like I'm kind of curious where the React

174
00:10:47.480 --> 00:10:50.320
<v Speaker 2>world is at with that sort of setup right now.

175
00:10:50.720 --> 00:10:55.080
<v Speaker 3>So for my understanding and what my team is doing

176
00:10:55.320 --> 00:10:59.759
<v Speaker 3>today is that we're a lot more focused on this

177
00:11:00.360 --> 00:11:02.679
<v Speaker 3>basically the same interactions that you would try and do

178
00:11:02.799 --> 00:11:05.399
<v Speaker 3>in an end to end test in the unit tests.

179
00:11:05.720 --> 00:11:10.120
<v Speaker 3>So it's a lot less about did this REDUCS dispatch

180
00:11:10.399 --> 00:11:15.399
<v Speaker 3>happen or did this particular function mock get called? And

181
00:11:15.440 --> 00:11:18.639
<v Speaker 3>it's a lot more of can I see this element

182
00:11:18.720 --> 00:11:21.240
<v Speaker 3>in the dom? Can I click this button? Or is

183
00:11:21.279 --> 00:11:24.720
<v Speaker 3>this button disabled? Did this list appear? And can I

184
00:11:24.799 --> 00:11:28.200
<v Speaker 3>interact with it? Which, like I said, it's a little

185
00:11:28.240 --> 00:11:30.159
<v Speaker 3>bit hard to get used to when you're coming from

186
00:11:30.159 --> 00:11:33.159
<v Speaker 3>the old way of testing did this function fire? But

187
00:11:33.360 --> 00:11:36.559
<v Speaker 3>I like it a lot more because it seems to

188
00:11:36.559 --> 00:11:38.919
<v Speaker 3>me to be a lot more true to life and

189
00:11:38.919 --> 00:11:42.039
<v Speaker 3>how as how a user would interact with our application.

190
00:11:42.159 --> 00:11:44.879
<v Speaker 3>They don't care if the REDUCS dispatch fired or not.

191
00:11:45.000 --> 00:11:47.159
<v Speaker 3>They just care that their list loaded and you know,

192
00:11:47.200 --> 00:11:49.519
<v Speaker 3>they can click the button and go through their shopping cart.

193
00:11:50.480 --> 00:11:52.960
<v Speaker 3>So that's kind of what we've been leaning towards. So

194
00:11:53.080 --> 00:11:56.600
<v Speaker 3>not necessarily, you know, is there this particular H one

195
00:11:56.679 --> 00:12:00.039
<v Speaker 3>tag with this ID? But can I see you know,

196
00:12:00.200 --> 00:12:03.919
<v Speaker 3>my page title? Or can I see this drawer that

197
00:12:04.039 --> 00:12:06.000
<v Speaker 3>is supposed to be there at the bottom and can

198
00:12:06.039 --> 00:12:08.399
<v Speaker 3>I open it? Or can I click buttons? And you know,

199
00:12:08.480 --> 00:12:11.240
<v Speaker 3>do different stuff like that within the component. So that's

200
00:12:11.320 --> 00:12:14.200
<v Speaker 3>kind of the approach that we're taking. But i'd love

201
00:12:14.240 --> 00:12:16.679
<v Speaker 3>to hear how other people are doing it as well.

202
00:12:17.399 --> 00:12:20.519
<v Speaker 4>I would say that we're using the same approach at least.

203
00:12:21.399 --> 00:12:24.279
<v Speaker 4>Comparing the dom structure is something that we use really,

204
00:12:24.840 --> 00:12:27.600
<v Speaker 4>and I know that the communities pretty much with React

205
00:12:27.600 --> 00:12:31.360
<v Speaker 4>Testing Library going away from that kind of assertions, So

206
00:12:31.399 --> 00:12:35.879
<v Speaker 4>we use it really and we mostly unit tests and

207
00:12:35.960 --> 00:12:39.480
<v Speaker 4>we have strong QATEAM, so the visual part is really

208
00:12:39.879 --> 00:12:43.600
<v Speaker 4>for them, so it's not something that we really deal with.

209
00:12:43.960 --> 00:12:49.679
<v Speaker 4>It's we focus on the unit tests and edge cases especially,

210
00:12:50.759 --> 00:12:51.840
<v Speaker 4>so that's ourly.

211
00:12:52.240 --> 00:12:54.360
<v Speaker 2>That makes a lot of sense. And because I remember,

212
00:12:54.879 --> 00:12:56.559
<v Speaker 2>like you said, Page, the way it used to be

213
00:12:56.720 --> 00:12:59.320
<v Speaker 2>is you would you would do things like ensure your

214
00:12:59.360 --> 00:13:02.519
<v Speaker 2>marks we're here, or that your testing structure, but it

215
00:13:02.559 --> 00:13:04.039
<v Speaker 2>felt like a lot of times you were just writing

216
00:13:04.080 --> 00:13:07.320
<v Speaker 2>those tests to write those tests so that you get

217
00:13:07.360 --> 00:13:10.919
<v Speaker 2>like better code coverage and such. I like that just

218
00:13:10.919 --> 00:13:14.039
<v Speaker 2>because it feels like, I don't know, the test just

219
00:13:14.039 --> 00:13:16.519
<v Speaker 2>makes more sense. And I feel like there's a lot

220
00:13:16.519 --> 00:13:20.320
<v Speaker 2>better not just QA, but like visual testing tools now

221
00:13:20.360 --> 00:13:23.919
<v Speaker 2>as well to catch some of these things, Like I

222
00:13:23.960 --> 00:13:26.919
<v Speaker 2>think a lot of these like snapshotting tools are becoming

223
00:13:26.919 --> 00:13:30.200
<v Speaker 2>a lot more popular as well to catch like if

224
00:13:30.200 --> 00:13:33.600
<v Speaker 2>you did screw up some like markup thing in your

225
00:13:33.600 --> 00:13:36.639
<v Speaker 2>buttons suddenly doesn't look like a button anymore. That there's

226
00:13:36.759 --> 00:13:38.320
<v Speaker 2>some other test is going to catch that, so you

227
00:13:38.399 --> 00:13:41.559
<v Speaker 2>don't need to like test your HTML parsing.

228
00:13:42.200 --> 00:13:45.039
<v Speaker 3>Yeah, and actually that's something that I'd be interested to

229
00:13:45.080 --> 00:13:47.519
<v Speaker 3>hear more about. Miroslav, you said that you've got a

230
00:13:47.600 --> 00:13:51.320
<v Speaker 3>QA team who helps you with the visual portion of it.

231
00:13:51.519 --> 00:13:54.600
<v Speaker 3>Are they using that you're awarever they using any particular

232
00:13:54.679 --> 00:13:58.919
<v Speaker 3>tools because visual regression testing is something that my team

233
00:13:58.919 --> 00:14:01.279
<v Speaker 3>has struggled with in the as, but we haven't really

234
00:14:01.320 --> 00:14:05.960
<v Speaker 3>found a great tool that helps keep that up to date.

235
00:14:06.759 --> 00:14:09.559
<v Speaker 4>Yeah, they have their own tools, but a lot of

236
00:14:09.600 --> 00:14:12.840
<v Speaker 4>the testing is I think kind of ends to end testing,

237
00:14:13.120 --> 00:14:16.120
<v Speaker 4>for example, adding a product to the shopping cart, and

238
00:14:16.200 --> 00:14:19.360
<v Speaker 4>we follow the whole process up until the end. This

239
00:14:19.519 --> 00:14:23.879
<v Speaker 4>is what is important for them. I know some people

240
00:14:23.919 --> 00:14:28.960
<v Speaker 4>suggest to write user stories as the part of the storybook,

241
00:14:29.200 --> 00:14:32.639
<v Speaker 4>and then you use something like cypress on top to

242
00:14:33.240 --> 00:14:38.919
<v Speaker 4>visually compare your user stories your components. I haven't tried that.

243
00:14:39.600 --> 00:14:41.919
<v Speaker 4>I think it is for our case, it's going to

244
00:14:41.919 --> 00:14:45.240
<v Speaker 4>be too much of an effort if you really do

245
00:14:45.279 --> 00:14:48.039
<v Speaker 4>your homework with the unit tests. At least our experience

246
00:14:48.039 --> 00:14:52.240
<v Speaker 4>show that we don't really face production box and we

247
00:14:52.279 --> 00:14:55.600
<v Speaker 4>are not really trying to have a full test coverage,

248
00:14:55.840 --> 00:14:59.320
<v Speaker 4>just trying to test the fragile paths of our applications.

249
00:15:00.120 --> 00:15:03.879
<v Speaker 4>So but actually we have a we have a product

250
00:15:03.960 --> 00:15:08.799
<v Speaker 4>which was launched in somewhere October. It's heavily used, and

251
00:15:09.759 --> 00:15:13.840
<v Speaker 4>we didn't have a single front and back for that

252
00:15:14.000 --> 00:15:17.000
<v Speaker 4>product up until this moment. It was I think the

253
00:15:17.080 --> 00:15:21.720
<v Speaker 4>team did a good job of testing and iterations. So

254
00:15:21.759 --> 00:15:27.919
<v Speaker 4>it's I know, it's rare, something that's remarkable from time

255
00:15:27.960 --> 00:15:28.320
<v Speaker 4>to time.

256
00:15:28.720 --> 00:15:29.639
<v Speaker 2>Did you get an award?

257
00:15:29.879 --> 00:15:37.279
<v Speaker 4>Like, Oh, I'm not sure if people notice that achievements.

258
00:15:37.559 --> 00:15:39.440
<v Speaker 3>I don't notice until it stops working.

259
00:15:39.519 --> 00:15:40.360
<v Speaker 4>That's the problem.

260
00:15:40.720 --> 00:15:44.399
<v Speaker 2>Yeah, that's the thing about testing is like there's you

261
00:15:44.440 --> 00:15:47.320
<v Speaker 2>don't get a if you do your job right, Like

262
00:15:47.440 --> 00:15:50.279
<v Speaker 2>no one ever knows that you have all these processes

263
00:15:50.320 --> 00:15:52.360
<v Speaker 2>behind it. It's sort of the good and bad thing

264
00:15:52.360 --> 00:15:55.360
<v Speaker 2>about it. So I'm curious your stuff. What what made

265
00:15:55.399 --> 00:15:57.799
<v Speaker 2>you want to write about this and start a blog

266
00:15:57.879 --> 00:15:59.399
<v Speaker 2>and share some of this stuff.

267
00:15:59.679 --> 00:16:03.559
<v Speaker 4>Yeah, I didn't do it before because I suppose that

268
00:16:04.399 --> 00:16:08.080
<v Speaker 4>our time is such a resource that we basically it's

269
00:16:08.120 --> 00:16:13.519
<v Speaker 4>not we cannot regain it, it's lost basically, so writing

270
00:16:13.559 --> 00:16:17.120
<v Speaker 4>an article, I mean, junior developers, writing an articles is

271
00:16:17.360 --> 00:16:21.000
<v Speaker 4>something that's at least I try to avoid because I

272
00:16:21.200 --> 00:16:24.639
<v Speaker 4>don't think I had something to tell, something variable to

273
00:16:24.679 --> 00:16:29.360
<v Speaker 4>take tell people, and reading my ten minutes article will

274
00:16:29.399 --> 00:16:34.000
<v Speaker 4>be a loss of time. So I decided to start

275
00:16:34.039 --> 00:16:38.320
<v Speaker 4>writing maybe after thirteen years of working with work applications,

276
00:16:39.200 --> 00:16:42.200
<v Speaker 4>just because I feel a little bit more comfortable and

277
00:16:42.840 --> 00:16:46.480
<v Speaker 4>maybe I have something important to say and people want

278
00:16:46.519 --> 00:16:50.440
<v Speaker 4>to just spend there ten minutes and forget after that.

279
00:16:52.440 --> 00:16:56.559
<v Speaker 4>It's a tricky area at least I feel uncomfortable. So yeah,

280
00:16:56.840 --> 00:16:59.000
<v Speaker 4>that's the main reason I suppose. And I have a

281
00:16:59.039 --> 00:17:04.559
<v Speaker 4>lot of ideas material during these years, so there's plenty

282
00:17:04.599 --> 00:17:05.519
<v Speaker 4>of topics.

283
00:17:05.720 --> 00:17:08.559
<v Speaker 3>I think after thirteen years you could be considered kind

284
00:17:08.599 --> 00:17:12.799
<v Speaker 3>of an expert in development. That's that's a fair amount

285
00:17:12.799 --> 00:17:14.640
<v Speaker 3>of time to see a lot of stuff.

286
00:17:16.079 --> 00:17:21.119
<v Speaker 4>Yeah, yeah, explor six this was there back back then,

287
00:17:21.279 --> 00:17:21.839
<v Speaker 4>I remember.

288
00:17:22.279 --> 00:17:26.079
<v Speaker 2>But yeah, thirteen years is about where I'm at as well.

289
00:17:26.119 --> 00:17:29.599
<v Speaker 2>I started. My first apps were i E six only

290
00:17:29.759 --> 00:17:33.279
<v Speaker 2>corporate apps, so this is these are fun times.

291
00:17:35.200 --> 00:17:38.920
<v Speaker 3>Yeah, oh I see here, Oh go ahead, please go ahead.

292
00:17:39.200 --> 00:17:41.960
<v Speaker 4>I just wanted to say that writing an auto about

293
00:17:41.960 --> 00:17:46.000
<v Speaker 4>to explore six is probably I don't know, what's not

294
00:17:46.039 --> 00:17:47.359
<v Speaker 4>going to be very famous.

295
00:17:47.640 --> 00:17:50.000
<v Speaker 2>I don't know. It's about time for like the nostalgia

296
00:17:50.039 --> 00:17:52.759
<v Speaker 2>of that to kick in, because now now you can

297
00:17:52.839 --> 00:17:55.599
<v Speaker 2>tell them it's like war stories right like back in

298
00:17:55.640 --> 00:17:57.559
<v Speaker 2>the day.

299
00:17:57.519 --> 00:18:01.599
<v Speaker 4>Yes, it's true. I mean today people are starting to

300
00:18:01.640 --> 00:18:05.839
<v Speaker 4>react directly. I mean they don't even learn JavaScript. For them,

301
00:18:05.920 --> 00:18:11.119
<v Speaker 4>JavaScript is now it's something like react and five six

302
00:18:11.240 --> 00:18:12.960
<v Speaker 4>years ago, which was maybe je.

303
00:18:12.880 --> 00:18:18.599
<v Speaker 2>Query so query Angular I think like and we're talking

304
00:18:18.640 --> 00:18:23.079
<v Speaker 2>about testing too. The thing that amazes me nowadays is

305
00:18:23.759 --> 00:18:26.079
<v Speaker 2>for the most part, when you write your code, you

306
00:18:26.119 --> 00:18:28.240
<v Speaker 2>don't have to worry too much about your code just

307
00:18:28.279 --> 00:18:32.079
<v Speaker 2>straight up not working and other browsers, which like sometimes

308
00:18:32.200 --> 00:18:35.519
<v Speaker 2>sometimes you do catch little things like it's it's the

309
00:18:35.559 --> 00:18:37.559
<v Speaker 2>sort of thing where you still do kind of need

310
00:18:37.599 --> 00:18:39.880
<v Speaker 2>to test your code and other browsers, but for the

311
00:18:39.920 --> 00:18:42.960
<v Speaker 2>most part you kind of don't anymore, Like especially on

312
00:18:43.000 --> 00:18:46.079
<v Speaker 2>desktop browsers, Like chances are the code you write is

313
00:18:46.119 --> 00:18:49.359
<v Speaker 2>going to work. And that's still like quite the mind

314
00:18:49.400 --> 00:18:52.160
<v Speaker 2>shift from how it used to be. Where it used

315
00:18:52.200 --> 00:18:54.039
<v Speaker 2>to be you wrote your code and like you opened

316
00:18:54.039 --> 00:18:57.119
<v Speaker 2>your you just prayed before you opened all the other

317
00:18:57.200 --> 00:18:59.440
<v Speaker 2>five or six browsers you needed things to work in.

318
00:19:00.160 --> 00:19:02.799
<v Speaker 4>True, I to be honest, I don't think I go

319
00:19:03.000 --> 00:19:08.359
<v Speaker 4>out of Chrome and I don't really test on other browsers. Yeah,

320
00:19:08.359 --> 00:19:12.160
<v Speaker 4>and you're right because even qare they don't they don't

321
00:19:12.200 --> 00:19:17.000
<v Speaker 4>find they don't find spucks often another browsers, So it's

322
00:19:17.400 --> 00:19:18.440
<v Speaker 4>things things are working.

323
00:19:18.960 --> 00:19:21.799
<v Speaker 3>So one question that I had is when I visit

324
00:19:21.880 --> 00:19:24.240
<v Speaker 3>your website, the first thing I see is that you

325
00:19:24.319 --> 00:19:29.759
<v Speaker 3>were previously a CEO and a CTO. So how did

326
00:19:29.799 --> 00:19:33.119
<v Speaker 3>you go from being in charge of whole companies and

327
00:19:33.160 --> 00:19:37.640
<v Speaker 3>whole divisions to back to a developer. Did you want

328
00:19:37.680 --> 00:19:41.279
<v Speaker 3>to be less of a manager and more of a team,

329
00:19:41.680 --> 00:19:44.599
<v Speaker 3>like an individual contributor or how did how did that happen?

330
00:19:45.079 --> 00:19:50.119
<v Speaker 4>Yeah, it's uh, I think it happened naturally. Again, it's

331
00:19:50.359 --> 00:19:54.480
<v Speaker 4>it's a small company where I was basically maybe I

332
00:19:54.559 --> 00:19:57.359
<v Speaker 4>was a CEO. Actually I was doing everything because the

333
00:19:57.440 --> 00:20:01.960
<v Speaker 4>owner were in a basic in Sweden and I was

334
00:20:02.000 --> 00:20:05.279
<v Speaker 4>back in Bulgaria at that time, so I was managing

335
00:20:05.319 --> 00:20:08.799
<v Speaker 4>the whole business plus development for the company. But it

336
00:20:08.839 --> 00:20:12.680
<v Speaker 4>was relatively small one, so it's it's easy to manage

337
00:20:13.480 --> 00:20:17.160
<v Speaker 4>and to have many responsibilities. Even accounting and things like that.

338
00:20:18.000 --> 00:20:22.400
<v Speaker 4>But at that point I also started freelancing, So I

339
00:20:22.880 --> 00:20:26.480
<v Speaker 4>was freelancing a little bit, then moved away from that company,

340
00:20:26.559 --> 00:20:29.640
<v Speaker 4>and then I met my wife here in Copenhagen. It

341
00:20:29.680 --> 00:20:34.720
<v Speaker 4>was related to one of our freelance projects. And Copenhagen

342
00:20:34.759 --> 00:20:38.880
<v Speaker 4>is I mean, it's a really expensive city compared to Europe,

343
00:20:39.039 --> 00:20:41.599
<v Speaker 4>it's probably the most expensive one, and you really need

344
00:20:41.599 --> 00:20:44.359
<v Speaker 4>a full time job to survive here. So this is

345
00:20:44.400 --> 00:20:49.119
<v Speaker 4>how I ended up in the company's web developer. Wow.

346
00:20:49.279 --> 00:20:52.680
<v Speaker 3>So basically running a company wasn't enough for he had

347
00:20:52.680 --> 00:20:56.559
<v Speaker 3>a dove freelance work on the side too. That's dedication.

348
00:20:57.920 --> 00:21:01.759
<v Speaker 4>Yes, at some point it became too much, but yeah,

349
00:21:01.960 --> 00:21:04.759
<v Speaker 4>you can do it for some time before you burn out.

350
00:21:05.359 --> 00:21:06.359
<v Speaker 3>Yeah.

351
00:21:06.400 --> 00:21:11.279
<v Speaker 2>So looking at the blog, is your blog built with Gatsby?

352
00:21:11.519 --> 00:21:13.240
<v Speaker 2>What what did you use to create this?

353
00:21:13.960 --> 00:21:17.200
<v Speaker 4>Yeah, it's exactly gets and I was I was inspired

354
00:21:17.240 --> 00:21:22.640
<v Speaker 4>by Don abramovs bloke. It uses the starter team, so

355
00:21:22.720 --> 00:21:27.359
<v Speaker 4>it's really just the start theme Starter team with some

356
00:21:27.359 --> 00:21:32.079
<v Speaker 4>some tweaks. So I just wanted something simple up and

357
00:21:32.160 --> 00:21:36.319
<v Speaker 4>running fast, and after that maybe I will figure out

358
00:21:36.400 --> 00:21:38.920
<v Speaker 4>a better designed for it, but for now it's just

359
00:21:39.079 --> 00:21:41.119
<v Speaker 4>it just works good.

360
00:21:42.079 --> 00:21:42.480
<v Speaker 2>Yeah.

361
00:21:42.799 --> 00:21:46.640
<v Speaker 3>I like the just the clean look of it and

362
00:21:46.680 --> 00:21:48.160
<v Speaker 3>the fact that you have dark mode.

363
00:21:49.640 --> 00:21:54.039
<v Speaker 4>Yeah, it's it's a default thing now, right everybody.

364
00:21:54.480 --> 00:21:57.160
<v Speaker 2>And I also see you have a newsletter as well.

365
00:21:57.720 --> 00:22:01.279
<v Speaker 4>Yeah, it's I'm trying to keep with. It's once a

366
00:22:01.319 --> 00:22:06.119
<v Speaker 4>month and I'm trying to send I'm usually sending my

367
00:22:06.640 --> 00:22:09.640
<v Speaker 4>new article, which at least I have time for one

368
00:22:09.720 --> 00:22:13.359
<v Speaker 4>article per month. I can't really write more often. It's

369
00:22:13.400 --> 00:22:17.680
<v Speaker 4>difficult with family and one article per month and some

370
00:22:18.039 --> 00:22:23.119
<v Speaker 4>interesting thoughts and links maybe I have found, but at

371
00:22:23.200 --> 00:22:26.240
<v Speaker 4>least I'm trying to write about the topics that you

372
00:22:27.039 --> 00:22:30.400
<v Speaker 4>It was difficult to find a quick solution by just googling,

373
00:22:30.480 --> 00:22:34.759
<v Speaker 4>So if I can't really find a solution, I would

374
00:22:34.759 --> 00:22:39.359
<v Speaker 4>write about it. And I remember it was an article

375
00:22:39.400 --> 00:22:42.799
<v Speaker 4>about something like a editorial on how to create a

376
00:22:42.839 --> 00:22:46.920
<v Speaker 4>sticky table header but would react but by using just

377
00:22:47.480 --> 00:22:51.839
<v Speaker 4>a normal table, not a deep based fleck or flax

378
00:22:51.880 --> 00:22:56.640
<v Speaker 4>books based layouts. And it was surprising to me that

379
00:22:56.880 --> 00:23:00.839
<v Speaker 4>actually there are not so many examples that you can find,

380
00:23:01.680 --> 00:23:04.680
<v Speaker 4>and this article is without any is you always now,

381
00:23:05.200 --> 00:23:09.759
<v Speaker 4>it's it's pretty high when you try to look for

382
00:23:10.079 --> 00:23:11.680
<v Speaker 4>something like that. Who will.

383
00:23:13.359 --> 00:23:18.400
<v Speaker 3>Oh, well, I just noticed because actually I clicked on

384
00:23:18.440 --> 00:23:22.000
<v Speaker 3>that article in particular, I noticed that you have unique reads,

385
00:23:22.240 --> 00:23:24.319
<v Speaker 3>and I was wondering how you did that, because that's

386
00:23:24.359 --> 00:23:26.079
<v Speaker 3>a really cool little feature to have.

387
00:23:26.599 --> 00:23:28.720
<v Speaker 2>Well, I don't think I know what unique reads are.

388
00:23:29.480 --> 00:23:33.960
<v Speaker 4>Yeah, it's it's not Google Analytics, because it's so not

389
00:23:34.079 --> 00:23:37.799
<v Speaker 4>straightforward to implement that thing in your blog.

390
00:23:38.680 --> 00:23:41.920
<v Speaker 2>And I just I just saw it. Okay, you mean

391
00:23:42.000 --> 00:23:44.440
<v Speaker 2>like I see it now, So yeah, this is in

392
00:23:44.480 --> 00:23:47.359
<v Speaker 2>case anybody else here listening to this totally didn't understand

393
00:23:47.359 --> 00:23:51.119
<v Speaker 2>it either. He has on each blog post the number

394
00:23:51.119 --> 00:23:54.200
<v Speaker 2>of unique people that have viewed an individual blog post,

395
00:23:54.519 --> 00:23:57.160
<v Speaker 2>and that is definitely interesting. I don't think I've ever

396
00:23:57.200 --> 00:24:00.640
<v Speaker 2>seen anybody just like sometimes you see views, but I

397
00:24:00.640 --> 00:24:03.319
<v Speaker 2>don't think I've ever seen anybody list unique readers.

398
00:24:03.680 --> 00:24:07.440
<v Speaker 4>Yeah, it was read, but then I found many blocks

399
00:24:07.519 --> 00:24:12.000
<v Speaker 4>which are just counting the visitors, so they have, for example,

400
00:24:12.039 --> 00:24:16.000
<v Speaker 4>they display sixty thousand views. But that doesn't really make

401
00:24:16.039 --> 00:24:18.920
<v Speaker 4>sense because I can reload my brother two hundred times

402
00:24:18.960 --> 00:24:23.160
<v Speaker 4>and then it's not really useful. And I'm using a

403
00:24:23.240 --> 00:24:26.319
<v Speaker 4>third party service that is just a counter, and whenever

404
00:24:26.359 --> 00:24:30.519
<v Speaker 4>your component renders, I just put in use effect a

405
00:24:30.559 --> 00:24:33.839
<v Speaker 4>call to this service, so it will count, but in

406
00:24:33.880 --> 00:24:37.720
<v Speaker 4>the same time return back the number of unique roods.

407
00:24:38.279 --> 00:24:40.640
<v Speaker 4>So this is the way how it's done.

408
00:24:40.759 --> 00:24:42.799
<v Speaker 2>It's very simples, like.

409
00:24:42.759 --> 00:24:46.160
<v Speaker 3>It might be worth a blog post.

410
00:24:46.519 --> 00:24:48.920
<v Speaker 4>Yeah, it's one of these topics that are not very

411
00:24:48.920 --> 00:24:53.000
<v Speaker 4>well covered. If you try to search how to add

412
00:24:53.160 --> 00:24:57.440
<v Speaker 4>a counter and gets the block. It's all about Google analytics,

413
00:24:57.480 --> 00:24:59.640
<v Speaker 4>and it's so difficult.

414
00:25:01.319 --> 00:25:03.559
<v Speaker 2>It's funny though, how little things like that people can

415
00:25:03.559 --> 00:25:07.480
<v Speaker 2>find useful. One of the most popular things I've ever

416
00:25:07.640 --> 00:25:11.240
<v Speaker 2>written is I wrote like my blog is a little

417
00:25:11.279 --> 00:25:15.079
<v Speaker 2>bit older, so it's written with Jekyl, and I came

418
00:25:15.160 --> 00:25:17.039
<v Speaker 2>up with some way like it's like a one liner

419
00:25:17.119 --> 00:25:20.119
<v Speaker 2>piece of code to have a jeckal like point to

420
00:25:20.160 --> 00:25:22.400
<v Speaker 2>an external blog post. So if you wanted to list

421
00:25:22.440 --> 00:25:24.759
<v Speaker 2>blog posts but include things that you wrote on like

422
00:25:24.839 --> 00:25:29.119
<v Speaker 2>other places, and that thing gets like, I don't know what,

423
00:25:29.519 --> 00:25:33.599
<v Speaker 2>but it's like a two paragraph blog post and it

424
00:25:33.640 --> 00:25:36.000
<v Speaker 2>gets like it hit a sweet spot in Google. So

425
00:25:36.000 --> 00:25:38.960
<v Speaker 2>it's funny how sometimes these things that you think are

426
00:25:39.000 --> 00:25:42.799
<v Speaker 2>really little can be actually super valuable to people.

427
00:25:43.240 --> 00:25:49.839
<v Speaker 4>Yeah, it's true. With today's situation, you can really easily

428
00:25:49.960 --> 00:25:53.839
<v Speaker 4>create a serverless kind of service. And because it's so easy,

429
00:25:53.880 --> 00:25:56.720
<v Speaker 4>and people don't really need to have a local database

430
00:25:56.839 --> 00:26:00.480
<v Speaker 4>or to own the database. Yeah, they usually do something

431
00:26:00.519 --> 00:26:04.720
<v Speaker 4>like Firebase and try to easily put together some third

432
00:26:04.759 --> 00:26:08.720
<v Speaker 4>party services and vola. It works, but it's it's not really,

433
00:26:09.079 --> 00:26:12.039
<v Speaker 4>I mean, so much effort for for such a simple job.

434
00:26:12.200 --> 00:26:15.640
<v Speaker 4>It's at least I try to think about the simplest

435
00:26:15.680 --> 00:26:17.000
<v Speaker 4>possible solution out there.

436
00:26:18.119 --> 00:26:20.519
<v Speaker 2>I like it. I feel like that. It's funny because

437
00:26:20.559 --> 00:26:24.079
<v Speaker 2>personal blogs or the one place where over engineering something

438
00:26:24.279 --> 00:26:27.279
<v Speaker 2>is like not only okay, but sometimes almost encourage, right,

439
00:26:27.279 --> 00:26:29.839
<v Speaker 2>because it's like a place that you can experiment and

440
00:26:29.880 --> 00:26:30.559
<v Speaker 2>have some fun with.

441
00:26:31.039 --> 00:26:34.400
<v Speaker 4>Yeah, it's it's especially when you are just starting, you

442
00:26:34.440 --> 00:26:37.279
<v Speaker 4>can do a lot of experiments. I'm doing that a

443
00:26:37.319 --> 00:26:41.839
<v Speaker 4>lot because I don't really have so many readers. It's

444
00:26:41.880 --> 00:26:45.000
<v Speaker 4>it's it's yeah, it's now it's the time to do

445
00:26:45.160 --> 00:26:45.839
<v Speaker 4>crazy things.

446
00:26:46.839 --> 00:26:49.079
<v Speaker 2>When you get a lot of readers, then they came

447
00:26:49.119 --> 00:26:50.839
<v Speaker 2>for the crazy things, and then you get.

448
00:26:50.680 --> 00:26:59.559
<v Speaker 4>To yeah they can even see a four or four yeah.

449
00:26:58.039 --> 00:27:02.960
<v Speaker 2>The yeah, go ahead page, We keep doing this, please continue.

450
00:27:03.640 --> 00:27:06.440
<v Speaker 2>The other thing I'm wondering about, speaking of, like little

451
00:27:06.480 --> 00:27:10.400
<v Speaker 2>implementation details, what are you using to implement the newsletter

452
00:27:11.279 --> 00:27:11.680
<v Speaker 2>it's a.

453
00:27:11.799 --> 00:27:16.640
<v Speaker 4>Mail Chimp for now. They I think they give one thousands,

454
00:27:16.759 --> 00:27:22.079
<v Speaker 4>I think subscribers for free. So it's yeah, it's pretty

455
00:27:22.279 --> 00:27:25.400
<v Speaker 4>say forward choice for me, but I may change it

456
00:27:25.440 --> 00:27:26.039
<v Speaker 4>in the future.

457
00:27:27.079 --> 00:27:28.880
<v Speaker 2>Do they give you the little like you have this

458
00:27:28.920 --> 00:27:31.720
<v Speaker 2>little section in your blog post that encourages people to join.

459
00:27:31.839 --> 00:27:34.119
<v Speaker 2>Is that something they provided or did you code up

460
00:27:34.160 --> 00:27:35.440
<v Speaker 2>the design for that yourself?

461
00:27:35.720 --> 00:27:38.680
<v Speaker 4>Do you mean the pop up the little.

462
00:27:38.440 --> 00:27:41.279
<v Speaker 2>Thing says join a foreign end newsletter like little thing

463
00:27:41.319 --> 00:27:43.519
<v Speaker 2>that entices people to subscribe to the newsletter.

464
00:27:45.640 --> 00:27:48.599
<v Speaker 4>The form on the bottom, Yeah, the form on the

465
00:27:48.599 --> 00:27:52.559
<v Speaker 4>bottom is just the custom made it's not really mail Chimp.

466
00:27:52.720 --> 00:27:58.279
<v Speaker 4>I just post to their service, so it registered the

467
00:27:58.319 --> 00:28:02.000
<v Speaker 4>email address and then I just so just play a

468
00:28:02.000 --> 00:28:04.759
<v Speaker 4>conformed message. But it's not it's not Melchin.

469
00:28:05.440 --> 00:28:07.599
<v Speaker 2>You've got a little bit of design talent, because that

470
00:28:07.640 --> 00:28:12.079
<v Speaker 2>thing looks really nice. It's very I know you said

471
00:28:12.119 --> 00:28:15.319
<v Speaker 2>you're using like the default theme and such, but I

472
00:28:15.319 --> 00:28:17.559
<v Speaker 2>can tell you've tweaked this quite a bit. It looks

473
00:28:17.599 --> 00:28:20.720
<v Speaker 2>really nice. I'm jealous and I might steal this.

474
00:28:22.920 --> 00:28:25.200
<v Speaker 4>Yeah, it's it's an evolution.

475
00:28:27.279 --> 00:28:30.400
<v Speaker 3>Are you hosting a newsletter on your on your website?

476
00:28:30.440 --> 00:28:34.240
<v Speaker 2>TJ No, No, newsletter, but we do stuff for like

477
00:28:34.519 --> 00:28:39.359
<v Speaker 2>kind to react and progress sometimes and definitely take some

478
00:28:39.400 --> 00:28:40.400
<v Speaker 2>inspiration from this.

479
00:28:42.160 --> 00:28:45.200
<v Speaker 3>Yeah, I implemented one on my own personal website, which

480
00:28:45.240 --> 00:28:49.680
<v Speaker 3>I launched about a month ago. When we're recording this anyway,

481
00:28:51.359 --> 00:28:55.119
<v Speaker 3>But I and I looked at all the different email

482
00:28:55.200 --> 00:29:01.960
<v Speaker 3>providers like mail Chimp and mail gun, and I'm yeah,

483
00:29:02.079 --> 00:29:05.119
<v Speaker 3>convert kit is a big one. I ended up going

484
00:29:05.160 --> 00:29:09.519
<v Speaker 3>with one called Substack, though, and the thinking was that

485
00:29:09.720 --> 00:29:13.839
<v Speaker 3>substack doesn't charge you based on the amount of readers

486
00:29:13.880 --> 00:29:17.640
<v Speaker 3>you have. It actually charges you if you start to

487
00:29:17.680 --> 00:29:22.920
<v Speaker 3>monetize your newsletter. Because my blog is exactly what yours is.

488
00:29:22.960 --> 00:29:26.000
<v Speaker 3>It's just a personal one. I write tech articles, I

489
00:29:26.079 --> 00:29:28.680
<v Speaker 3>post them, and if people want to get notified when

490
00:29:28.720 --> 00:29:32.440
<v Speaker 3>I do, great, But I don't really see it ever

491
00:29:32.559 --> 00:29:37.200
<v Speaker 3>becoming some sort of a monetized thing. And I even

492
00:29:37.240 --> 00:29:41.160
<v Speaker 3>though I'm very early in my own website or my

493
00:29:41.519 --> 00:29:46.160
<v Speaker 3>redo of my website, I guess the idea of crossing

494
00:29:46.200 --> 00:29:51.319
<v Speaker 3>those subscriber thresholds and then having to pay thirty bucks

495
00:29:51.400 --> 00:29:54.319
<v Speaker 3>a month, fifty bucks a month more than that just

496
00:29:54.359 --> 00:29:59.680
<v Speaker 3>to send a newsletter probably once a month, just makes

497
00:29:59.720 --> 00:30:04.720
<v Speaker 3>me really unhappy to even contemplate So that's why I

498
00:30:04.759 --> 00:30:06.960
<v Speaker 3>decided to go with substack, because it seems like it

499
00:30:06.960 --> 00:30:10.359
<v Speaker 3>doesn't matter how big your subscriber base gets, they will

500
00:30:10.680 --> 00:30:11.440
<v Speaker 3>not charge you.

501
00:30:14.319 --> 00:30:15.319
<v Speaker 4>So it's a little.

502
00:30:15.039 --> 00:30:19.119
<v Speaker 3>Bit weird because it takes you off of my site

503
00:30:19.480 --> 00:30:22.440
<v Speaker 3>when you subscribe. But my thought is I can write

504
00:30:22.480 --> 00:30:25.319
<v Speaker 3>short blogs on substack that link you back to the

505
00:30:25.319 --> 00:30:28.599
<v Speaker 3>blogs that I've written on my site. So it seems

506
00:30:28.640 --> 00:30:32.279
<v Speaker 3>like a decent solution for the meantime. And then I

507
00:30:32.319 --> 00:30:34.759
<v Speaker 3>guess I ever want to change it and start paying,

508
00:30:35.000 --> 00:30:37.440
<v Speaker 3>or if I decide that I will not get a

509
00:30:37.480 --> 00:30:41.519
<v Speaker 3>subscriber base that warrants that, maybe I'll go with something

510
00:30:41.559 --> 00:30:45.720
<v Speaker 3>more sophisticated that keeps me, keeps users on site, like

511
00:30:45.799 --> 00:30:48.119
<v Speaker 3>Mailchimp or or something in the future.

512
00:30:48.559 --> 00:30:52.920
<v Speaker 4>YEA also heard about substack. I actually have seen Kent

513
00:30:53.119 --> 00:30:56.759
<v Speaker 4>Beeck for example. He's using you as well, so and

514
00:30:56.920 --> 00:31:01.119
<v Speaker 4>he's someone that will I think be immunities around him.

515
00:31:01.200 --> 00:31:05.319
<v Speaker 4>So but he's posting in there. Oh well, that's.

516
00:31:05.039 --> 00:31:09.200
<v Speaker 3>That's encouraging then to know that people who have big

517
00:31:09.240 --> 00:31:11.680
<v Speaker 3>followings are using it to their advantage too.

518
00:31:12.240 --> 00:31:13.039
<v Speaker 4>Yeah.

519
00:31:12.559 --> 00:31:15.400
<v Speaker 2>Yeah, and all the cool kids have newsletters. What am

520
00:31:15.400 --> 00:31:16.599
<v Speaker 2>I even doing with myself?

521
00:31:16.839 --> 00:31:20.039
<v Speaker 3>It's apparently it's just like all the cool kids are

522
00:31:20.039 --> 00:31:23.519
<v Speaker 3>starting tech podcasts. It's like there's more podcasts than there

523
00:31:23.599 --> 00:31:27.480
<v Speaker 3>is time in the day to listen to them.

524
00:31:27.599 --> 00:31:28.319
<v Speaker 4>Yeah, that's true.

525
00:31:29.200 --> 00:31:32.880
<v Speaker 2>Is there things that we haven't covered, I know, anything

526
00:31:32.880 --> 00:31:37.200
<v Speaker 2>about testing components that we didn't get to or ask you.

527
00:31:37.640 --> 00:31:40.960
<v Speaker 4>Oh, I think we touched the basics and if we

528
00:31:41.079 --> 00:31:46.720
<v Speaker 4>have to wrap up, it's just it's very controversial topic,

529
00:31:47.000 --> 00:31:50.359
<v Speaker 4>and I think some sometimes people are too dogmatic about

530
00:31:51.000 --> 00:31:56.039
<v Speaker 4>what we should use in terms of flabbraries. I think, Jane,

531
00:31:56.079 --> 00:31:59.920
<v Speaker 4>it's all about it's all about what you really can

532
00:32:00.119 --> 00:32:04.720
<v Speaker 4>do in your certain situation with your team, with your

533
00:32:04.799 --> 00:32:10.440
<v Speaker 4>organizational structure, because something may work but others won't work

534
00:32:10.640 --> 00:32:12.519
<v Speaker 4>in different organizations.

535
00:32:13.400 --> 00:32:15.640
<v Speaker 2>Do you mean it's controversial in the sense that, like

536
00:32:16.319 --> 00:32:19.640
<v Speaker 2>some people give the impression that like you have to

537
00:32:19.759 --> 00:32:22.880
<v Speaker 2>use the popular thing or else you're doing it wrong

538
00:32:23.000 --> 00:32:23.559
<v Speaker 2>sort of thing.

539
00:32:24.079 --> 00:32:24.240
<v Speaker 3>Yeah.

540
00:32:24.279 --> 00:32:27.880
<v Speaker 4>I mean, for example, if you do all of d

541
00:32:28.160 --> 00:32:32.279
<v Speaker 4>comparisons in your tests and you are publicly doing that

542
00:32:32.359 --> 00:32:36.480
<v Speaker 4>in a form of blog posts or maybe tweeting about it,

543
00:32:37.079 --> 00:32:39.319
<v Speaker 4>you will get a lot of people commenting that this

544
00:32:39.440 --> 00:32:42.079
<v Speaker 4>is definitely in the past and you should not do that.

545
00:32:42.599 --> 00:32:47.079
<v Speaker 4>I see I have even heard that, okay, testing if

546
00:32:47.119 --> 00:32:51.279
<v Speaker 4>a function is called by clicking something in your UI

547
00:32:51.480 --> 00:32:55.480
<v Speaker 4>is also not a good idea. So it's some people

548
00:32:55.519 --> 00:33:00.279
<v Speaker 4>could be really dogmatic about these things, but it's really

549
00:33:00.319 --> 00:33:05.160
<v Speaker 4>what works for you in this particular situation, because sometimes

550
00:33:05.640 --> 00:33:13.279
<v Speaker 4>don't comparison maybe required, and sometimes you want to test

551
00:33:13.359 --> 00:33:17.960
<v Speaker 4>for a function call, especially if it's somewhere between conditional logic,

552
00:33:18.480 --> 00:33:23.720
<v Speaker 4>So you should really think about, yeah, what works for you.

553
00:33:25.960 --> 00:33:29.359
<v Speaker 2>Yeah, I feel like that's that's good advice for I

554
00:33:29.359 --> 00:33:32.559
<v Speaker 2>mean React, testing for Reactor, just software development in general.

555
00:33:32.759 --> 00:33:36.880
<v Speaker 2>Like it's it's good to have sort of best practices,

556
00:33:37.000 --> 00:33:39.599
<v Speaker 2>but at the same time, like, don't yell at people

557
00:33:39.920 --> 00:33:44.440
<v Speaker 2>on Twitter for for things that they're doing that you

558
00:33:44.480 --> 00:33:46.559
<v Speaker 2>don't totally have the context for either.

559
00:33:48.440 --> 00:33:56.000
<v Speaker 4>Yeah, that's why I don't have Twitter. Also, it takes

560
00:33:56.039 --> 00:33:58.039
<v Speaker 4>too much of my time and I don't really have

561
00:33:58.119 --> 00:34:02.440
<v Speaker 4>time to get into converse station since yeah, right and

562
00:34:02.559 --> 00:34:05.400
<v Speaker 4>tweet about relevant.

563
00:34:05.720 --> 00:34:07.759
<v Speaker 2>Cool Paige, did you have anything else?

564
00:34:09.960 --> 00:34:13.000
<v Speaker 3>No, this has been a really interesting conversation though. So

565
00:34:13.760 --> 00:34:16.480
<v Speaker 3>since you're not on Twitter, if people want to find you,

566
00:34:16.639 --> 00:34:18.559
<v Speaker 3>where can they find you online?

567
00:34:19.039 --> 00:34:20.920
<v Speaker 4>If you just go to my blog, you will find

568
00:34:22.000 --> 00:34:26.039
<v Speaker 4>a few links probably the best ways. I just email

569
00:34:27.519 --> 00:34:31.920
<v Speaker 4>and I have also linked and GitHub, so this is

570
00:34:32.119 --> 00:34:32.400
<v Speaker 4>the way.

571
00:34:33.480 --> 00:34:36.960
<v Speaker 2>Well cool, So why don't we move on to the picks? Then, Paige,

572
00:34:37.000 --> 00:34:38.079
<v Speaker 2>you want to kick us off?

573
00:34:38.360 --> 00:34:41.599
<v Speaker 3>Sure? So my pick this week is going to be

574
00:34:41.840 --> 00:34:44.639
<v Speaker 3>a show that has been out for a while, but

575
00:34:45.239 --> 00:34:48.079
<v Speaker 3>my husband and I have been recently rewatching it with

576
00:34:48.519 --> 00:34:51.480
<v Speaker 3>one of our friends who hasn't seen it before, and

577
00:34:51.639 --> 00:34:56.559
<v Speaker 3>is the Jack Reacher series on Amazon Prime. And I

578
00:34:56.639 --> 00:34:59.519
<v Speaker 3>believe that it's Tom Clancy's Jack Reacher. It's based on

579
00:34:59.639 --> 00:35:03.159
<v Speaker 3>the book Looks and it is just rewatching it after

580
00:35:03.239 --> 00:35:05.679
<v Speaker 3>having seen it, you know, a year or two ago.

581
00:35:06.000 --> 00:35:11.159
<v Speaker 3>It's still really well done. It just sucks you in

582
00:35:11.239 --> 00:35:18.079
<v Speaker 3>and we can't stop watching it. So I would definitely

583
00:35:18.880 --> 00:35:21.840
<v Speaker 3>recommend that one if you're looking for something else to

584
00:35:22.039 --> 00:35:24.719
<v Speaker 3>binge as we slowly start to come out of the

585
00:35:24.760 --> 00:35:30.800
<v Speaker 3>COVID Hayes of the past year plus, so I think

586
00:35:30.840 --> 00:35:34.199
<v Speaker 3>that that is going. Actually I'm sorry that that is

587
00:35:34.239 --> 00:35:38.920
<v Speaker 3>the movie with Tom Cruise. What I'm thinking of is

588
00:35:39.119 --> 00:35:45.840
<v Speaker 3>Jack Ryan, another Tom Clancy novel. Please don't write into

589
00:35:45.880 --> 00:35:48.400
<v Speaker 3>the show notes about that that I got it wrong

590
00:35:48.440 --> 00:35:52.440
<v Speaker 3>the first time. But Jack Ryan is the series. There's

591
00:35:52.480 --> 00:35:56.039
<v Speaker 3>two seasons. It's a great watch. I would definitely encourage

592
00:35:56.079 --> 00:35:59.880
<v Speaker 3>it if you're, like, if you're into the spy, espionage,

593
00:36:00.079 --> 00:36:02.960
<v Speaker 3>THEIA type of shows.

594
00:36:03.239 --> 00:36:07.320
<v Speaker 2>Okay, I definitely remember seeing the the ads for this now,

595
00:36:07.639 --> 00:36:08.679
<v Speaker 2>so I'll have to check it out.

596
00:36:08.760 --> 00:36:09.920
<v Speaker 3>That's a good one. Cool.

597
00:36:10.119 --> 00:36:12.519
<v Speaker 2>My pick for this week, I got a I've been

598
00:36:12.599 --> 00:36:14.519
<v Speaker 2>getting my bike out a little bit more. It's been

599
00:36:14.880 --> 00:36:18.559
<v Speaker 2>nicer here in Michigan, and I got a little thing

600
00:36:18.599 --> 00:36:22.480
<v Speaker 2>that's just a quick and easy speedometer for it, which

601
00:36:22.559 --> 00:36:25.360
<v Speaker 2>I kind of like. It's kind of fun to like

602
00:36:25.519 --> 00:36:27.840
<v Speaker 2>challenge yourself to see how fast you can go without

603
00:36:28.159 --> 00:36:32.440
<v Speaker 2>dying on Michigan roads. But it's a diet. A little

604
00:36:32.440 --> 00:36:34.480
<v Speaker 2>bit of research and found one I liked, so I

605
00:36:34.519 --> 00:36:36.440
<v Speaker 2>will drop that in the show notes, and I'll just

606
00:36:36.480 --> 00:36:38.960
<v Speaker 2>pick biking in general if you're not a person that

607
00:36:39.119 --> 00:36:42.599
<v Speaker 2>likes biking fun times, Mireslav, how about your picks?

608
00:36:42.840 --> 00:36:46.239
<v Speaker 4>I think I have two. The one is I recently

609
00:36:47.320 --> 00:36:51.320
<v Speaker 4>found out that Eric Crossmans and the person behind the

610
00:36:51.400 --> 00:36:56.039
<v Speaker 4>Rep Final Rep Final Form, he also starts publishing his

611
00:36:56.320 --> 00:36:59.320
<v Speaker 4>blog posts, and so right now he has a bloke

612
00:36:59.760 --> 00:37:03.480
<v Speaker 4>and he's one of the people who I actually learned

613
00:37:03.480 --> 00:37:07.320
<v Speaker 4>a lot and I think he has what to say,

614
00:37:07.440 --> 00:37:11.280
<v Speaker 4>and it's it's good to if you if you really

615
00:37:11.280 --> 00:37:14.920
<v Speaker 4>want to read something from the people behind React, because

616
00:37:14.960 --> 00:37:20.079
<v Speaker 4>he's he's programming and React for quite some time, so

617
00:37:21.719 --> 00:37:24.320
<v Speaker 4>you can you can visit his block based link. And

618
00:37:24.360 --> 00:37:27.719
<v Speaker 4>then the other one is just an article I read

619
00:37:27.800 --> 00:37:33.599
<v Speaker 4>recently from kempt dot's newsletter. But the article itself, I

620
00:37:33.639 --> 00:37:36.599
<v Speaker 4>think it's not it's older one, it's not new. But

621
00:37:36.639 --> 00:37:40.280
<v Speaker 4>basically he's talking about that in many situations, you don't

622
00:37:40.280 --> 00:37:43.599
<v Speaker 4>really need a global state management solution for your application,

623
00:37:44.400 --> 00:37:48.679
<v Speaker 4>for your React applications, and that is also the case

624
00:37:48.679 --> 00:37:52.199
<v Speaker 4>with many of applicanials I have done. If you really

625
00:37:52.519 --> 00:37:54.960
<v Speaker 4>care for you think about if you can do it

626
00:37:55.119 --> 00:37:57.840
<v Speaker 4>just with React and maybe a little bit of context,

627
00:37:58.320 --> 00:38:01.840
<v Speaker 4>then yeah, we don't really need three ducks. But the

628
00:38:01.960 --> 00:38:06.039
<v Speaker 4>article could be controversial. I will just put that.

629
00:38:07.159 --> 00:38:11.480
<v Speaker 3>Yeah, we've had many discussions in past episodes about that

630
00:38:11.639 --> 00:38:15.840
<v Speaker 3>very controversial subject which you just mentioned. But Mark Erickson,

631
00:38:15.880 --> 00:38:18.760
<v Speaker 3>who was a guest on the podcast a little while back,

632
00:38:18.800 --> 00:38:22.360
<v Speaker 3>did a great job of kind of explaining the difference

633
00:38:22.400 --> 00:38:27.920
<v Speaker 3>between REDUCS, which holds the global state versus context, which

634
00:38:28.079 --> 00:38:31.519
<v Speaker 3>just passes state around the application. Isn't actually in charge

635
00:38:31.519 --> 00:38:34.199
<v Speaker 3>of holding it, which made it a lot more clear

636
00:38:34.239 --> 00:38:36.639
<v Speaker 3>to me kind of when you might need one versus

637
00:38:36.639 --> 00:38:40.360
<v Speaker 3>the other. But I completely agree with you. We as

638
00:38:40.400 --> 00:38:44.719
<v Speaker 3>engineers have way over engineered a lot of applications to

639
00:38:44.880 --> 00:38:47.400
<v Speaker 3>use reducts when we probably didn't really need it in

640
00:38:47.440 --> 00:38:48.119
<v Speaker 3>the first place.

641
00:38:48.639 --> 00:38:53.000
<v Speaker 4>Yeah, it's true. Sometimes we inherit habits from previous applications

642
00:38:53.000 --> 00:38:56.920
<v Speaker 4>and we tend to copy in to pace the same approach.

643
00:38:57.360 --> 00:39:00.000
<v Speaker 2>Yeah well cool, Well, thanks Mary stuff for joining us.

644
00:39:00.039 --> 00:39:02.199
<v Speaker 2>This was a lot of fun chatting with you. Thank

645
00:39:02.239 --> 00:39:04.679
<v Speaker 2>you too, all right, Well, thanks everybody again and see

646
00:39:04.719 --> 00:39:06.800
<v Speaker 2>you next week. Yeah, see you next time.
