1
00:00:06,639 --> 00:00:09,919
Speaker 1: Hey, everybody, welcome to another episode of Adventures and Angulare.

2
00:00:10,000 --> 00:00:11,480
Speaker 2: I'm Aaron Frost, the host.

3
00:00:11,759 --> 00:00:15,640
Speaker 1: I work with Hero Devs and Ngi komf And today

4
00:00:15,679 --> 00:00:20,000
on the panel we have Shai Resnik, shay I Insroy yourself.

5
00:00:20,359 --> 00:00:23,679
Speaker 3: Hello, I'm Shy Resnik, I run Testanngelar dot com and

6
00:00:23,800 --> 00:00:25,559
Hires dot A, thank you very much.

7
00:00:28,440 --> 00:00:33,520
Speaker 1: We got Joe Emes go ahead, Eyboddy, Joe Eames from

8
00:00:33,600 --> 00:00:35,840
Thinkster dot I O.

9
00:00:37,520 --> 00:00:38,119
Speaker 3: And uh.

10
00:00:38,240 --> 00:00:44,759
Speaker 1: Notably missing is one of the world's newest moms, Alyssa Nichael.

11
00:00:45,119 --> 00:00:46,159
Speaker 2: Oh my god.

12
00:00:47,119 --> 00:00:49,359
Speaker 1: Well, I mean by the time this comes out, be

13
00:00:49,479 --> 00:00:52,920
on my It's anytime this week though, So I's gonna.

14
00:00:52,719 --> 00:00:54,119
Speaker 4: Be gone that we don't know.

15
00:00:54,359 --> 00:00:57,240
Speaker 2: No, I don't know anything. But that's why she's not here.

16
00:00:57,399 --> 00:01:01,399
Speaker 1: She's resting up for mom anyway.

17
00:01:01,159 --> 00:01:02,719
Speaker 2: So she's gonna be out for a few epistols.

18
00:01:02,719 --> 00:01:06,239
Speaker 1: But everyone follow her on Twitter and wish your good

19
00:01:06,319 --> 00:01:07,480
luck as a new mom.

20
00:01:07,519 --> 00:01:08,239
Speaker 2: I'm excited for.

21
00:01:08,640 --> 00:01:13,200
Speaker 1: And then as our guest, we have Rauz. We're gonna

22
00:01:13,200 --> 00:01:15,040
have Ral go ahead and introduce yourself.

23
00:01:14,719 --> 00:01:18,719
Speaker 2: To the to the crowd.

24
00:01:18,200 --> 00:01:24,439
Speaker 5: Vold and I'm the CEO for a small company called

25
00:01:24,480 --> 00:01:27,840
Bite Default and we worked for all the world and.

26
00:01:27,719 --> 00:01:28,719
Speaker 6: We do a lot of time.

27
00:01:29,599 --> 00:01:30,719
Speaker 7: What's the name of your company?

28
00:01:31,079 --> 00:01:32,120
Speaker 6: By default?

29
00:01:32,519 --> 00:01:36,840
Speaker 4: It's yeah, bite bite default, yeah bite.

30
00:01:38,760 --> 00:01:40,959
Speaker 2: What was the name of your old your old company.

31
00:01:42,079 --> 00:01:44,040
Speaker 6: I didn't have an old company.

32
00:01:43,959 --> 00:01:44,599
Speaker 2: No, you did.

33
00:01:44,719 --> 00:01:46,920
Speaker 1: You had a company with you and another guy.

34
00:01:46,959 --> 00:01:48,879
Speaker 2: It was you had to developers. What was the name

35
00:01:48,920 --> 00:01:49,439
of your company?

36
00:01:49,599 --> 00:01:53,120
Speaker 6: Ah, that wasn't a company. Actually that was just a

37
00:01:53,159 --> 00:01:55,159
blog and it was too fucking developers.

38
00:01:55,560 --> 00:01:55,879
Speaker 8: Yeah to.

39
00:01:57,719 --> 00:01:59,159
Speaker 4: Hey, hey, code of condo.

40
00:01:59,719 --> 00:02:03,079
Speaker 1: Yeah, the phone, it's the name of a company. Calm down,

41
00:02:04,840 --> 00:02:09,120
telling me you're don't judge his company. You're judging his

42
00:02:09,199 --> 00:02:10,000
company now.

43
00:02:09,879 --> 00:02:11,879
Speaker 4: All right, you're a dumb American.

44
00:02:12,000 --> 00:02:21,800
Speaker 1: Okay, everybody, welcome to the show.

45
00:02:22,080 --> 00:02:22,479
Speaker 8: All right.

46
00:02:23,039 --> 00:02:25,319
Speaker 2: We invited Raoul the.

47
00:02:25,280 --> 00:02:29,520
Speaker 1: Soothing tones of Raoul to the show today because Raoul

48
00:02:29,599 --> 00:02:30,960
has some stuff we wants to talk about.

49
00:02:30,960 --> 00:02:32,240
Speaker 8: What are we talking about today, Raoul?

50
00:02:33,479 --> 00:02:34,080
Speaker 2: I see that.

51
00:02:35,840 --> 00:02:38,879
Speaker 5: I found that this is a very interesting topic, which

52
00:02:38,960 --> 00:02:43,360
is the angler.

53
00:02:43,159 --> 00:02:44,199
Speaker 8: And j X.

54
00:02:45,199 --> 00:02:48,319
Speaker 1: Okay, so a lot of people are like, dude, so

55
00:02:48,400 --> 00:02:49,240
many keywords.

56
00:02:49,280 --> 00:02:52,439
Speaker 2: I don't even know what is the keyword? Functional programming?

57
00:02:52,520 --> 00:02:54,520
Speaker 6: Need okay, function programming.

58
00:02:55,520 --> 00:03:01,599
Speaker 5: This is like programming or functional programming.

59
00:03:03,800 --> 00:03:06,280
Speaker 4: It's like when you use the function.

60
00:03:06,680 --> 00:03:11,479
Speaker 5: Now, yeah, it's actually it's it's like objects are into programming,

61
00:03:11,520 --> 00:03:14,680
but you're not using objects mostly all the time.

62
00:03:14,840 --> 00:03:17,520
Speaker 6: You are composing functions instead of objects.

63
00:03:17,840 --> 00:03:21,759
Speaker 3: So I think it's it's when you are dealing with

64
00:03:22,639 --> 00:03:26,599
functions that like produce no side effects, right or am

65
00:03:26,639 --> 00:03:27,120
I wrong?

66
00:03:27,719 --> 00:03:31,840
Speaker 6: Yeah, well that's that's part of it. Yeah, but that's

67
00:03:31,879 --> 00:03:32,719
that's very true.

68
00:03:33,360 --> 00:03:38,080
Speaker 1: What's the difference between functional programming and pure functional programming pure.

69
00:03:37,840 --> 00:03:40,120
Speaker 6: Fictional program Probably I don't know.

70
00:03:40,879 --> 00:03:45,280
Speaker 5: I'm going to just guess that pure functional programming doesn't

71
00:03:45,319 --> 00:03:51,080
have a child say it said the effects or you're

72
00:03:51,159 --> 00:03:54,879
not going to adach anything to global objects or whatever.

73
00:03:55,759 --> 00:03:58,639
Speaker 7: So is there like dirty functional program.

74
00:04:00,479 --> 00:04:02,000
Speaker 4: Don't go there, it's a trap.

75
00:04:02,400 --> 00:04:05,360
Speaker 6: Yeah, I know, I know it is that then.

76
00:04:05,319 --> 00:04:09,319
Speaker 7: Just impure functional programming. Functional programming.

77
00:04:09,479 --> 00:04:15,759
Speaker 2: Oh man, I'm out out the eject button.

78
00:04:17,160 --> 00:04:18,800
Speaker 7: The eject button.

79
00:04:19,279 --> 00:04:22,839
Speaker 9: We just saw right out. James Bond, Stop you two.

80
00:04:23,040 --> 00:04:28,399
You have a conference run, you have a conference run. Okay,

81
00:04:28,480 --> 00:04:31,720
let's stick with functional programming. So functional program can you

82
00:04:31,759 --> 00:04:34,519
tell us what's the problem that it's trying to solve?

83
00:04:34,879 --> 00:04:38,959
Speaker 5: Well, I think that what it's trying to solve, it's.

84
00:04:40,240 --> 00:04:43,680
Speaker 6: Usual problems with extending classes.

85
00:04:43,879 --> 00:04:49,360
Speaker 5: And sometimes to avoid to half states in your objects

86
00:04:49,399 --> 00:04:53,480
that can be you know, maybe contaminated.

87
00:04:52,839 --> 00:04:56,199
Speaker 6: By other states or that kind of stuff.

88
00:04:56,560 --> 00:05:00,920
Speaker 5: So what's it's important is that your function and receive

89
00:05:01,959 --> 00:05:04,639
some parents and return some values and that's it.

90
00:05:04,800 --> 00:05:08,759
Speaker 3: So so they're not producing any side effects. But let's

91
00:05:08,839 --> 00:05:12,040
let's take a real example from Angler, like I have

92
00:05:12,120 --> 00:05:18,360
a component okay, okay, and I have a service Let's say,

93
00:05:18,600 --> 00:05:22,360
like I don't know, like a product component and a

94
00:05:22,439 --> 00:05:28,519
product service and to display products on the play and okay,

95
00:05:28,839 --> 00:05:33,360
what is the where's the functional program goes?

96
00:05:33,759 --> 00:05:36,199
Speaker 4: Like playing in that scenario.

97
00:05:36,399 --> 00:05:38,560
Speaker 6: In that scenario, pro is going to pay.

98
00:05:38,560 --> 00:05:41,360
Speaker 5: If you want to display a list of products, probably

99
00:05:41,480 --> 00:05:43,319
you should use something.

100
00:05:43,079 --> 00:05:49,759
Speaker 6: Like AnGR X or this other library. I don't remember

101
00:05:49,759 --> 00:05:50,160
the name.

102
00:05:50,839 --> 00:05:56,040
Speaker 4: What no our no our X, Yes, and I.

103
00:05:56,000 --> 00:05:58,720
Speaker 6: Don't remember the name. Actually I will find it. I

104
00:05:58,759 --> 00:06:01,199
will find a no no no no.

105
00:06:01,240 --> 00:06:03,839
Speaker 5: It's very similar to nji X, but it just as

106
00:06:03,879 --> 00:06:07,839
the creators and so on.

107
00:06:08,079 --> 00:06:09,920
Speaker 6: So you probably will use one of those.

108
00:06:10,160 --> 00:06:13,079
Speaker 5: And what you're going to do is to use is

109
00:06:13,920 --> 00:06:18,519
anngr X this revex pattern where you are not going

110
00:06:18,600 --> 00:06:22,240
to call the service directly, but you are going to

111
00:06:22,480 --> 00:06:25,519
call an action that it's going to call the service,

112
00:06:25,800 --> 00:06:29,079
and you are going to receive an action with.

113
00:06:29,040 --> 00:06:30,439
Speaker 6: A response from the service.

114
00:06:31,319 --> 00:06:33,480
Speaker 5: In the middle of that process that it's going to

115
00:06:33,519 --> 00:06:37,000
be a store in a thing called a store, very

116
00:06:37,040 --> 00:06:41,480
appropriate name. The thing is that you cannot modify that

117
00:06:41,560 --> 00:06:42,439
the store directly.

118
00:06:42,519 --> 00:06:45,040
Speaker 6: You have to use always, all the time actions.

119
00:06:45,160 --> 00:06:47,879
Speaker 5: So that's to prevent those side effects that you need

120
00:06:48,399 --> 00:06:51,720
that you said before, that's pretty much it is.

121
00:06:52,240 --> 00:06:55,040
Speaker 10: Here's my favorite question about side effects, side effects or

122
00:06:55,040 --> 00:06:58,000
how you actually make a program do something. So why

123
00:06:58,439 --> 00:07:00,600
do I worry about side effects?

124
00:07:01,879 --> 00:07:02,279
Speaker 8: Effects?

125
00:07:02,560 --> 00:07:06,480
Speaker 7: Nothing happens, literally nothing happens without a side effect.

126
00:07:07,240 --> 00:07:11,600
Speaker 2: So like, let's say you have a function. Okay, uh

127
00:07:11,720 --> 00:07:14,319
huh Wesse.

128
00:07:15,759 --> 00:07:18,519
Speaker 1: We'll say you have a function and you pass, uh

129
00:07:19,000 --> 00:07:23,560
you pass like a person object into the function. Yeah,

130
00:07:24,000 --> 00:07:27,319
you don't want the function to mutate the person maybe

131
00:07:27,360 --> 00:07:30,680
I do. Well, that's not functional. That's that would be

132
00:07:30,720 --> 00:07:31,199
a mutation.

133
00:07:31,360 --> 00:07:34,240
Speaker 4: That's not function to function. Why Joe?

134
00:07:34,279 --> 00:07:39,480
Speaker 3: What what Jose is asking is why wouldn't I want

135
00:07:39,720 --> 00:07:40,120
to be.

136
00:07:40,439 --> 00:07:42,720
Speaker 10: So here here's my scenario. I got a function, it's

137
00:07:42,759 --> 00:07:47,800
the radioactive spider function. I pass in the Peter Parker person, right.

138
00:07:48,240 --> 00:07:51,839
Obviously I want the function to mutate the person, right,

139
00:07:51,839 --> 00:07:52,680
that just makes sense.

140
00:07:52,720 --> 00:07:55,120
Speaker 7: But you're saying that with functional program. I don't want

141
00:07:55,120 --> 00:07:56,399
that to app So it's functional program.

142
00:07:56,439 --> 00:08:00,720
Speaker 10: There's no superheroes, right, we don't Marvel does making money.

143
00:08:02,839 --> 00:08:03,439
Speaker 6: That's not true.

144
00:08:03,480 --> 00:08:06,480
Speaker 5: You can you can use you can use effects, and

145
00:08:06,560 --> 00:08:10,279
that can start to mutiate the results that you're getting

146
00:08:10,279 --> 00:08:12,560
from the server if you if that's what you want,

147
00:08:12,680 --> 00:08:13,720
If that's what you want.

148
00:08:13,839 --> 00:08:16,480
Speaker 3: But let's talk about why not, Like what is the

149
00:08:16,560 --> 00:08:18,399
problem that that's the first question.

150
00:08:18,519 --> 00:08:19,160
Speaker 6: What is the.

151
00:08:19,040 --> 00:08:22,759
Speaker 4: Problem that doing this way solve?

152
00:08:23,160 --> 00:08:26,040
Speaker 2: You know, like, well, he's the expert.

153
00:08:26,839 --> 00:08:29,480
Speaker 6: I mean, in my opinion, I'm not the expert. I'm

154
00:08:29,560 --> 00:08:31,959
just using it a lot in my work. That's it.

155
00:08:32,759 --> 00:08:36,080
I'm not going to say that I'm an expert. I'm

156
00:08:36,080 --> 00:08:38,559
not going to say that I'm an expert anything in

157
00:08:38,559 --> 00:08:39,320
my life, I think.

158
00:08:39,919 --> 00:08:43,960
Speaker 5: Okay, So what it's trying to solve is the you know,

159
00:08:44,039 --> 00:08:48,320
when when your applications are growing a lot, it usually

160
00:08:48,360 --> 00:08:52,039
happens that a lot of interactions between your data is

161
00:08:52,039 --> 00:08:58,799
happening there. So if you're using uh, this one direction pattern,

162
00:08:59,639 --> 00:09:04,120
you can know every time that someone or some function

163
00:09:04,360 --> 00:09:08,840
or some component or certain view has modified it.

164
00:09:08,919 --> 00:09:11,919
Speaker 6: That that's that's store. So that's the point of this

165
00:09:12,039 --> 00:09:12,759
thing that you.

166
00:09:12,679 --> 00:09:15,960
Speaker 4: Can How would you change? How would you know that?

167
00:09:16,279 --> 00:09:20,600
Speaker 5: Well, we we use reducs tools, the debt tools for reducts,

168
00:09:20,639 --> 00:09:24,679
and every time that you you can see the.

169
00:09:26,159 --> 00:09:29,519
Speaker 6: Log with all the with all the actions that you

170
00:09:29,600 --> 00:09:30,679
have executed.

171
00:09:31,120 --> 00:09:31,440
Speaker 4: M hm.

172
00:09:31,919 --> 00:09:34,799
Speaker 5: So every time that you do a call to the server,

173
00:09:35,320 --> 00:09:39,840
and every time that you modify your store or you

174
00:09:39,879 --> 00:09:41,639
add an eating to that store, or.

175
00:09:41,720 --> 00:09:44,080
Speaker 6: You remove some things from the store.

176
00:09:43,960 --> 00:09:46,879
Speaker 5: You can know that because you have on the debt tools,

177
00:09:46,879 --> 00:09:48,440
you have all the log So.

178
00:09:49,240 --> 00:09:53,000
Speaker 3: And by the way, I believe that mobiics, which is

179
00:09:53,039 --> 00:09:59,240
a different implementation of state management, has the same thing,

180
00:09:59,320 --> 00:10:01,720
but they use a think setters and getters now they

181
00:10:01,759 --> 00:10:04,399
use proxies I think to achieve the same thing. So

182
00:10:04,440 --> 00:10:06,759
you get a log of all the changes to a

183
00:10:06,799 --> 00:10:11,919
certain thing, and without writing like a special action or

184
00:10:12,399 --> 00:10:16,720
making it functional per se, you can decorate something as

185
00:10:16,759 --> 00:10:20,519
an action and then prevent people from using it in

186
00:10:20,600 --> 00:10:23,159
other like levels of the program.

187
00:10:23,440 --> 00:10:25,200
Speaker 4: But okay, so so.

188
00:10:25,120 --> 00:10:29,559
Speaker 3: You get like the logability, let's say, the logging ability

189
00:10:30,480 --> 00:10:33,639
to know when you do this in that shape.

190
00:10:34,720 --> 00:10:37,000
Speaker 7: Can you also get lovability in there?

191
00:10:37,240 --> 00:10:42,679
Speaker 3: Is that not No, lovability is not related to state management.

192
00:10:42,799 --> 00:10:49,639
It's far far away management pattern you will meet. But

193
00:10:50,240 --> 00:10:52,960
it's hate ability in there.

194
00:10:53,080 --> 00:10:55,879
Speaker 4: Yeah, but that's that's true with.

195
00:10:55,840 --> 00:10:59,919
Speaker 3: Today's But okay, so let's say you have something that

196
00:11:00,080 --> 00:11:05,840
mutate the you know that this is how people worked

197
00:11:05,879 --> 00:11:09,679
for years where they had like I don't know, services

198
00:11:09,840 --> 00:11:14,200
or some cash or some something that holds like the person,

199
00:11:15,120 --> 00:11:18,799
and then something would change it and it will render

200
00:11:19,279 --> 00:11:22,480
you know, and wherever we got to a place where

201
00:11:23,480 --> 00:11:26,639
it doesn't make sense or you know, something happens and

202
00:11:26,720 --> 00:11:29,840
I don't know, like what happens and you know the

203
00:11:29,879 --> 00:11:34,879
problems that you are describing, is it happening like from

204
00:11:34,919 --> 00:11:38,600
your expand you moved to NNGRX for for a reason,

205
00:11:38,840 --> 00:11:40,919
So what led you to move to that?

206
00:11:41,080 --> 00:11:43,480
Speaker 6: Okay, that's a good question.

207
00:11:44,039 --> 00:11:47,559
Speaker 5: Well, first of all, we started in this project like

208
00:11:48,799 --> 00:11:53,440
in Angler alpha, so angie x didn't exist at all. Interesting,

209
00:11:53,840 --> 00:11:58,279
that's the first thing. So after working in the project

210
00:11:58,360 --> 00:12:05,879
for like one year or so, intex looked stable, pre stable,

211
00:12:06,519 --> 00:12:11,120
and we decided to give it a try. Why because well,

212
00:12:11,279 --> 00:12:15,600
you know, functional programming was getting a lot of trauction.

213
00:12:17,039 --> 00:12:20,799
Speaker 6: One of my co workers. He is very into ELM

214
00:12:20,960 --> 00:12:24,720
two and he.

215
00:12:25,279 --> 00:12:27,440
Speaker 5: Kind of combines me, Hey, we should give it a

216
00:12:27,519 --> 00:12:30,840
try to this because we have these benefits, these benefits,

217
00:12:30,879 --> 00:12:31,559
these things.

218
00:12:31,679 --> 00:12:34,559
Speaker 6: And they said, okay, let's let's give you a try.

219
00:12:34,840 --> 00:12:35,200
Speaker 7: Yeah.

220
00:12:35,200 --> 00:12:39,039
Speaker 3: Wait, zooming, what is this benefit and this benefit and

221
00:12:39,120 --> 00:12:39,799
this benefit.

222
00:12:40,279 --> 00:12:45,879
Speaker 5: Well, he explained to me all these the problems about

223
00:12:45,960 --> 00:12:51,759
using all gender interprogramming instead of functional programming, and the

224
00:12:51,799 --> 00:12:56,639
benefits with for example, using braduct step tools and all

225
00:12:56,679 --> 00:12:57,200
that stuff.

226
00:12:57,440 --> 00:13:01,080
Speaker 3: But I did you suffer from anything before you moved

227
00:13:01,240 --> 00:13:05,759
to anngio rex, Like have you experienced any pain or

228
00:13:05,840 --> 00:13:10,080
hate ability with the old way or let's say the

229
00:13:10,159 --> 00:13:12,240
older way of how we did it.

230
00:13:12,679 --> 00:13:18,559
Speaker 5: Not necessarily, but afterwards we think that it was the

231
00:13:18,639 --> 00:13:24,279
right choice because for example, we did some UI refactors,

232
00:13:24,399 --> 00:13:30,039
like we basically redown the whole UI, so we we throw.

233
00:13:30,480 --> 00:13:39,000
Speaker 11: All the ACL and sas files, keep some components, but

234
00:13:39,159 --> 00:13:42,720
we do it are completely right from the of the UI.

235
00:13:42,879 --> 00:13:47,360
Speaker 5: But because we used anchi X, we we were able

236
00:13:47,440 --> 00:13:50,960
to reuse a lot of code, like all the services,

237
00:13:51,600 --> 00:13:54,840
all the redoucers, the effects, the models.

238
00:13:55,279 --> 00:13:58,000
Speaker 6: Basically we were able to reduce a lot of.

239
00:13:57,879 --> 00:14:03,080
Speaker 5: That which you can do that Also, if you're inducing

240
00:14:03,080 --> 00:14:04,440
a YOURX, that's that's true.

241
00:14:04,960 --> 00:14:08,200
Speaker 6: But maybe it's going to be more difficult if you

242
00:14:08,240 --> 00:14:09,399
are not, you.

243
00:14:09,399 --> 00:14:12,840
Speaker 3: Know, make concerns if you put a lot of logic

244
00:14:12,879 --> 00:14:14,320
in the components here.

245
00:14:14,200 --> 00:14:18,440
Speaker 5: Yeah yeah, yeah, And sometimes you can mess up things

246
00:14:18,480 --> 00:14:21,000
easily if you're not using patterns.

247
00:14:21,440 --> 00:14:25,759
Speaker 2: That's shy mm hmm, I objecked. I feel like you're

248
00:14:25,840 --> 00:14:26,639
leading the witness.

249
00:14:27,080 --> 00:14:29,159
Speaker 4: No, I'm asking him to say something.

250
00:14:29,559 --> 00:14:30,879
Speaker 2: Just tell him what to stay.

251
00:14:31,000 --> 00:14:34,720
Speaker 6: He's taking for his work. He's taking.

252
00:14:34,960 --> 00:14:38,960
Speaker 3: Guy, say I love I love you, Shy, say I

253
00:14:39,039 --> 00:14:40,960
love you Shy.

254
00:14:40,320 --> 00:14:41,879
Speaker 7: But I know you and you know.

255
00:14:44,360 --> 00:14:47,519
Speaker 2: See noise bro.

256
00:14:51,600 --> 00:14:54,000
Speaker 5: But no, it's it's okay. I mean I I I.

257
00:14:54,000 --> 00:14:57,799
I can't like the questions. I like to be interrogated.

258
00:14:58,399 --> 00:15:00,679
Speaker 2: No, I think Shy's questions. I think a lot of

259
00:15:00,759 --> 00:15:02,799
us don't know what a redux is.

260
00:15:02,840 --> 00:15:04,519
Speaker 1: We don't know where it came from, we don't know

261
00:15:04,519 --> 00:15:07,080
why we need it, but we know that we keep

262
00:15:07,120 --> 00:15:09,879
hearing about it, so we just adopt it.

263
00:15:11,399 --> 00:15:13,159
Speaker 2: I don't know what it is. I don't know what

264
00:15:13,200 --> 00:15:14,799
it is, but I got to adopt it.

265
00:15:14,879 --> 00:15:17,519
Speaker 1: And so I think that's why I was asking, like, Hey,

266
00:15:17,720 --> 00:15:19,399
what was the pain that pushed you there?

267
00:15:19,759 --> 00:15:21,720
Speaker 7: Why did the new iPhone?

268
00:15:22,320 --> 00:15:25,080
Speaker 10: Yeah, that's what it is.

269
00:15:26,039 --> 00:15:29,799
Speaker 3: The iPhone that red Beat has it, I must have

270
00:15:29,919 --> 00:15:30,600
it as well.

271
00:15:32,879 --> 00:15:35,600
Speaker 10: But what is But I still in line for four

272
00:15:35,679 --> 00:15:38,600
days to get one exactly.

273
00:15:38,720 --> 00:15:41,879
Speaker 1: No, you know, it's funny you say that, but that's

274
00:15:41,879 --> 00:15:44,799
how I feel like. I had no idea what it was.

275
00:15:44,799 --> 00:15:47,080
But people were like, oh, do you have state in

276
00:15:47,120 --> 00:15:57,159
your app? I'm like, oh, yeah, they're like.

277
00:15:58,919 --> 00:16:05,639
Speaker 2: Them, you have some reducs in your apps state And.

278
00:16:05,559 --> 00:16:08,600
Speaker 1: I'm like, I might have a state, you know, but

279
00:16:08,759 --> 00:16:11,120
uh no, And I feel like I got duped a

280
00:16:11,159 --> 00:16:14,720
little bit. And by the time I realized what it is,

281
00:16:14,919 --> 00:16:18,559
I realized, oh, this is overkill for what I need.

282
00:16:18,600 --> 00:16:22,240
I needed a better solution for this. But what I

283
00:16:22,320 --> 00:16:25,879
got was I got the doomsday solution that I only

284
00:16:25,879 --> 00:16:28,799
need if I have like a highly real time, concurrent

285
00:16:28,879 --> 00:16:32,960
data driven app, which most of our apps aren't, and

286
00:16:33,000 --> 00:16:35,240
even in the apps that are, ninety percent of the

287
00:16:35,320 --> 00:16:36,200
data in that app is.

288
00:16:36,240 --> 00:16:39,600
Speaker 2: And so I don't know, I understand that that's a question.

289
00:16:39,720 --> 00:16:42,039
Speaker 3: No, that's a good point for us to because for

290
00:16:42,240 --> 00:16:45,879
that example, let's say like a high uh, you know,

291
00:16:46,120 --> 00:16:48,919
a lot of events push mutifications, and stuff like that.

292
00:16:49,399 --> 00:16:53,879
Maybe in that complexity level, when you have mutable data

293
00:16:54,000 --> 00:16:57,559
that keeps changing a lot, you might have a hard

294
00:16:57,600 --> 00:17:02,000
time to keep track where like you know that come

295
00:17:02,039 --> 00:17:05,480
from mutation happen and then it makes sense to keep it,

296
00:17:06,200 --> 00:17:08,480
uh you know mutable.

297
00:17:09,119 --> 00:17:10,519
Speaker 7: Well, I just want to point out something.

298
00:17:10,559 --> 00:17:13,720
Speaker 10: I'm actually building the next Facebook, so I obviously need it.

299
00:17:14,079 --> 00:17:15,480
Speaker 7: Right, I'm actually doing that.

300
00:17:15,599 --> 00:17:18,640
Speaker 10: I'm building the whatever is going to be replaced Facebook.

301
00:17:20,559 --> 00:17:21,920
Speaker 7: Right, I'm pretty sure.

302
00:17:21,960 --> 00:17:23,960
Speaker 10: I mean everybody in my company says we're building the

303
00:17:23,960 --> 00:17:26,319
next Face. My boss says, we're building the next Facebook.

304
00:17:27,079 --> 00:17:30,279
So we're going to be as performance as Facebook.

305
00:17:30,359 --> 00:17:32,039
Speaker 2: Right, you have a boss, Joe.

306
00:17:35,200 --> 00:17:41,160
Speaker 10: I'm channeling my inner employee, your spirit animals.

307
00:17:41,720 --> 00:17:44,680
Speaker 7: Yeah, yeah, is Dilbert. My spirit animal is Dilbert.

308
00:17:45,119 --> 00:17:48,759
Speaker 3: Okay, So let's get back to njr X and functional

309
00:17:48,920 --> 00:17:52,599
n gr REX. So you're doing NJI REX, which is

310
00:17:52,920 --> 00:17:57,240
divided into instead of mutating something, you raise an action,

311
00:17:57,440 --> 00:17:59,960
your mit an action or something like that, and which

312
00:18:00,160 --> 00:18:06,119
is like an event, and like you have the reducer, which, yeah, the.

313
00:18:07,599 --> 00:18:10,839
Speaker 2: State, right I have I have the same question.

314
00:18:11,000 --> 00:18:16,599
Speaker 1: So I understand reducts, actions, side effects, reducer selectors. Right,

315
00:18:17,440 --> 00:18:21,839
how is functional programming with anji x different than programming

316
00:18:21,880 --> 00:18:22,599
with anji X.

317
00:18:22,640 --> 00:18:25,599
Speaker 2: Like, what's the difference between functional.

318
00:18:25,079 --> 00:18:28,200
Speaker 1: Inj X and non functional injections? I know anj X

319
00:18:28,240 --> 00:18:30,799
the way we learned it. Like, what makes your inter

320
00:18:31,119 --> 00:18:36,319
x functional? I guess programming.

321
00:18:35,799 --> 00:18:39,920
Speaker 6: In Yeah, I will say that anji x is functional

322
00:18:40,039 --> 00:18:44,039
by default. So if you are doing interi X, you're

323
00:18:44,119 --> 00:18:45,279
doing functional programming.

324
00:18:45,599 --> 00:18:49,200
Speaker 3: So the reducers themselves are return and immutable data like

325
00:18:49,359 --> 00:18:52,519
luted the actual data they receive, but a new copy

326
00:18:52,960 --> 00:18:55,720
of the data. And that makes them functional because they

327
00:18:55,759 --> 00:18:58,960
don't produce any side effect. They don't change maybe the

328
00:18:59,039 --> 00:19:01,000
state that they got, right.

329
00:19:01,200 --> 00:19:04,039
Speaker 6: This is if you are doing properly.

330
00:19:04,160 --> 00:19:09,279
Speaker 1: Yeah, So the reducer is what's known as a pure function.

331
00:19:09,960 --> 00:19:12,400
If you give it the same input, it will put

332
00:19:12,480 --> 00:19:14,279
out the same output every single time.

333
00:19:14,400 --> 00:19:16,119
Speaker 2: That's supposed to be what your reducer does.

334
00:19:16,119 --> 00:19:18,640
Speaker 1: If you have a reducer that, given the same input,

335
00:19:18,680 --> 00:19:22,880
would ever output a different output, then you're not necessarily

336
00:19:22,920 --> 00:19:26,599
dealing with a functional of a pure function as a reducer,

337
00:19:26,599 --> 00:19:27,720
which is what they're supposed to be.

338
00:19:27,839 --> 00:19:28,079
Speaker 8: Right.

339
00:19:29,160 --> 00:19:31,680
Speaker 1: So when we talk about functional programming with injurax, are

340
00:19:31,680 --> 00:19:34,079
we talking about the reducer or were talking about like

341
00:19:34,119 --> 00:19:37,240
the selectors, because really that's where these two paradigms are

342
00:19:37,240 --> 00:19:39,519
going to come in. Are going to be in the

343
00:19:39,559 --> 00:19:42,119
reducer or the selector. It's not necessarily going to be

344
00:19:42,240 --> 00:19:44,799
in the side effect of the actions.

345
00:19:44,799 --> 00:19:47,880
Speaker 2: So what does functional programming and inji act mean?

346
00:19:48,920 --> 00:19:50,440
Speaker 6: Who's a g X here?

347
00:19:51,039 --> 00:19:53,799
Speaker 2: When I get forced to, I do okay.

348
00:19:53,599 --> 00:19:56,720
Speaker 6: And I'm engine okay, okay, who like it?

349
00:19:57,240 --> 00:19:58,839
Speaker 1: It was bro that was this since your comment, I

350
00:19:58,920 --> 00:20:00,640
use it when enforced you, I'm being honest.

351
00:20:01,039 --> 00:20:07,480
Speaker 6: Okay, do you like it? Oh? No, you hate it? Yeah?

352
00:20:07,559 --> 00:20:11,079
Speaker 1: I mean it's I love my friends that build it,

353
00:20:11,200 --> 00:20:12,880
So I won't say what I really think.

354
00:20:12,960 --> 00:20:13,559
Speaker 2: I just think.

355
00:20:13,839 --> 00:20:17,480
Speaker 1: Also it's it's a bit over architectured for most of

356
00:20:17,519 --> 00:20:18,279
what I do.

357
00:20:18,559 --> 00:20:21,160
Speaker 4: But I think we talked about it like two episodes ago.

358
00:20:21,480 --> 00:20:25,400
Speaker 3: They also say that you might not need Angie rex

359
00:20:25,440 --> 00:20:28,680
in everything that you do. You have use cases for that,

360
00:20:28,799 --> 00:20:29,799
and that's cool.

361
00:20:29,839 --> 00:20:30,319
Speaker 4: That's okay.

362
00:20:30,319 --> 00:20:33,319
Speaker 3: That's why I asked, and I asked from a sincere

363
00:20:33,359 --> 00:20:37,279
place the use case. The troll went through why he

364
00:20:37,400 --> 00:20:41,000
needed or they needed to use it. Because this is

365
00:20:41,279 --> 00:20:44,839
what I want to know myself when I will encounter

366
00:20:45,240 --> 00:20:47,799
a use case like that I really want to know,

367
00:20:47,880 --> 00:20:50,920
because if I will encounter this use case, I want

368
00:20:50,960 --> 00:20:53,720
to know if I should implement it or not. What

369
00:20:53,960 --> 00:20:56,880
is your experience if it was helpful. I'm not asking

370
00:20:56,920 --> 00:20:59,279
it to troll. I'm asking from a sincere place.

371
00:20:59,640 --> 00:21:02,440
Speaker 6: Okay, thank you, Shay. I know that you are not

372
00:21:02,559 --> 00:21:05,400
controlled all the time, all the time, all the time.

373
00:21:06,200 --> 00:21:11,319
Speaker 12: I don't know if when we choose at the moment,

374
00:21:12,079 --> 00:21:18,079
when we chosen that angur X or you know state

375
00:21:18,160 --> 00:21:19,759
management thing.

376
00:21:20,519 --> 00:21:23,480
Speaker 5: I don't know if it was a good decision or

377
00:21:23,559 --> 00:21:27,839
if it was a very good, you know, solution for

378
00:21:28,799 --> 00:21:34,119
our problem. Because in most cases of URAP, we are

379
00:21:34,200 --> 00:21:38,000
just displaying list and that kind of things, which is

380
00:21:38,880 --> 00:21:41,640
like the ninety nine percent of the apps are doing.

381
00:21:42,200 --> 00:21:44,799
But we have a particular case where we have to

382
00:21:45,319 --> 00:21:50,559
generate forms dynamically and store the data and all that stuff.

383
00:21:51,319 --> 00:21:52,720
Speaker 6: We're using anj X for all that.

384
00:21:53,880 --> 00:21:58,000
Speaker 5: Yep, it's pretty complex to explain all what we do.

385
00:21:58,640 --> 00:22:02,319
Speaker 13: But I do you really know, as I said before,

386
00:22:02,519 --> 00:22:05,559
that it was very good because when we did this

387
00:22:06,359 --> 00:22:10,559
you know, this refractor, it was so easy to do

388
00:22:10,640 --> 00:22:11,240
that refractor.

389
00:22:11,359 --> 00:22:15,000
Speaker 3: Okay, let me ask you, like I don't know, backward

390
00:22:15,079 --> 00:22:19,559
questions like if I want do n g X in

391
00:22:19,599 --> 00:22:22,200
a functional way, what will be the danger in that?

392
00:22:22,480 --> 00:22:22,599
Speaker 6: Like?

393
00:22:22,640 --> 00:22:24,960
Speaker 3: What am I missing? What's the pain there?

394
00:22:25,680 --> 00:22:29,319
Speaker 14: It is true, and I agree with Aaron that it

395
00:22:29,359 --> 00:22:35,880
is not maybe what you should use for everything, for

396
00:22:36,000 --> 00:22:38,440
every single app that you're going to do, you should not.

397
00:22:38,640 --> 00:22:40,839
Speaker 6: Probably use and your X for everything.

398
00:22:41,640 --> 00:22:45,279
Speaker 5: I really think that if your app is pretty big

399
00:22:45,440 --> 00:22:47,359
and you expect that your RAPP is going to grow

400
00:22:47,440 --> 00:22:51,559
a lot, you are going to get more benefits a

401
00:22:51,599 --> 00:22:56,839
long time. Why I do think that because when your

402
00:22:56,920 --> 00:23:01,880
app is growing and you have a lot of screens,

403
00:23:02,039 --> 00:23:05,799
and those screens are growing, and you have you know,

404
00:23:05,920 --> 00:23:10,720
for example, now you have this upload component where you

405
00:23:10,759 --> 00:23:14,359
can do multiple uploads and then you can move along

406
00:23:14,440 --> 00:23:17,680
your app and you can still see your uploads there.

407
00:23:17,880 --> 00:23:19,960
Speaker 6: And all that and that can stuff.

408
00:23:20,079 --> 00:23:23,240
Speaker 5: Okay, you are going to be able to reuse a

409
00:23:23,279 --> 00:23:25,920
lot of code across old the screens, and it's going

410
00:23:25,960 --> 00:23:30,920
to be very easy to use the same services and

411
00:23:30,960 --> 00:23:35,079
all that stuff across all those views when your app

412
00:23:35,519 --> 00:23:37,720
this is growing and growing. And this is something that

413
00:23:37,759 --> 00:23:41,359
I've noticed, As I said, we've been working in this

414
00:23:41,519 --> 00:23:45,519
play for since Anglaropha and we started using a ger

415
00:23:45,759 --> 00:23:48,039
X I think that when vers in two.

416
00:23:50,160 --> 00:23:50,839
Speaker 6: What's released.

417
00:23:51,839 --> 00:23:54,640
Speaker 5: So we've been using jr X for a long long

418
00:23:54,680 --> 00:23:58,440
time I will say almost two years maybe, and this

419
00:23:58,599 --> 00:24:02,759
is something that we we really noticed that it helped

420
00:24:02,839 --> 00:24:06,920
us to right now to create new screens for us.

421
00:24:06,960 --> 00:24:10,279
It's very very fast. A big part of that is

422
00:24:10,319 --> 00:24:12,039
because we are using a ger X I think.

423
00:24:12,920 --> 00:24:17,319
Speaker 3: Okay, sorry to cut you there, just focusing again, reiterating

424
00:24:17,440 --> 00:24:20,880
my question. It was not about using anji X. Let's

425
00:24:20,880 --> 00:24:25,160
say I'm using anji rex already. But now, like let's

426
00:24:25,160 --> 00:24:29,279
say we said that the functional elements of it was

427
00:24:29,599 --> 00:24:33,039
the reducer. Like if I'm making sure I'm returning and

428
00:24:33,200 --> 00:24:37,480
copy the data and not the data I received, this

429
00:24:37,960 --> 00:24:42,079
will make it like a pure function with outside effects,

430
00:24:42,119 --> 00:24:44,880
and then this will make it function. What is the

431
00:24:45,000 --> 00:24:49,079
danger with not doing it that way? Like if I

432
00:24:49,119 --> 00:24:53,039
will return what I received and mutated, what will happen?

433
00:24:53,119 --> 00:24:54,319
Speaker 4: What is the danger in there?

434
00:24:54,480 --> 00:24:54,960
Speaker 6: Probably?

435
00:24:55,119 --> 00:24:57,359
Speaker 5: Well, this is going to happen is you will have

436
00:24:58,359 --> 00:25:03,240
your restore is going to have a copy in memory

437
00:25:03,400 --> 00:25:06,640
that it's not what you're ready, what you really get.

438
00:25:07,839 --> 00:25:11,839
So maybe you're going to see that one of your

439
00:25:11,920 --> 00:25:14,799
views is okay and the others not or something like that.

440
00:25:16,000 --> 00:25:20,200
Speaker 6: Why let me think about it. Okay, so you're telling

441
00:25:20,240 --> 00:25:23,359
me that you mutated your store.

442
00:25:25,119 --> 00:25:30,720
Speaker 15: Actually that's not possible unless, yeah, you do the reducer

443
00:25:31,599 --> 00:25:35,240
you mess up with your redeuser. But mostly what it's

444
00:25:35,319 --> 00:25:38,920
going to happen, it's probably what I said. You are

445
00:25:38,960 --> 00:25:43,160
going to your data, the data that you receive it

446
00:25:43,759 --> 00:25:48,079
from from the server or from whatever. It's not going

447
00:25:48,160 --> 00:25:51,039
to be the same that you have in your serve.

448
00:25:52,200 --> 00:25:56,359
So I don't know what you're going to want that.

449
00:25:57,519 --> 00:26:02,279
Speaker 1: Actually, Yeah, sometimes getting into the weeds on NNGRX stuff

450
00:26:02,319 --> 00:26:04,240
is tough because we all have.

451
00:26:04,160 --> 00:26:06,960
Speaker 2: Different needs, right, every single one of our app is so.

452
00:26:06,960 --> 00:26:11,839
Speaker 1: Different and and uh, it's hard to compare. I think

453
00:26:12,000 --> 00:26:13,559
I think that a lot of the disconnect around the

454
00:26:13,559 --> 00:26:17,559
conversation of hey, state, just even that word any more,

455
00:26:17,599 --> 00:26:20,480
that word is so loaded, Like it used to just

456
00:26:20,559 --> 00:26:24,720
mean variables that had values, but now it's so loaded

457
00:26:24,759 --> 00:26:26,119
what state even stands for.

458
00:26:26,200 --> 00:26:29,119
Speaker 2: And so I think people come into the word state

459
00:26:29,200 --> 00:26:31,400
with a lot of like already.

460
00:26:31,160 --> 00:26:34,519
Speaker 1: Established points and assumptions made, and it makes it hard

461
00:26:34,559 --> 00:26:37,599
to sometimes see gide eye on what we're talking about.

462
00:26:37,759 --> 00:26:40,039
Speaker 2: And so there's a lot of confusion anymore.

463
00:26:40,039 --> 00:26:42,720
Speaker 1: At least when I'm like when I'm on the Twitter

464
00:26:43,200 --> 00:26:45,920
or I'm on when I'm talking to those pirates. You

465
00:26:45,960 --> 00:26:50,680
know that I was talking to like stop talking to pirates. Well,

466
00:26:50,880 --> 00:26:52,559
you know, if they talk to you, it's rude to

467
00:26:52,559 --> 00:26:53,720
not talk back. You have to talk.

468
00:26:53,960 --> 00:26:58,119
Speaker 4: Yeah, but they don't. They don't really like no, they like.

469
00:26:58,200 --> 00:26:58,680
Speaker 2: They like me.

470
00:26:58,839 --> 00:27:03,240
Speaker 1: No, they're programming pirates. So anyway, it makes it hard sometimes.

471
00:27:03,279 --> 00:27:07,480
But I am interested in understanding how people can write

472
00:27:07,920 --> 00:27:12,519
better functional RX stuff. And I think that the functional

473
00:27:12,599 --> 00:27:15,799
parts of of NGRX.

474
00:27:15,279 --> 00:27:16,680
Speaker 2: Are RX itself.

475
00:27:17,039 --> 00:27:18,599
Speaker 1: Like when I look at, hey, how do how do

476
00:27:18,640 --> 00:27:22,680
I make my NJRX functional? I go, Okay, Well, in

477
00:27:23,000 --> 00:27:27,599
njr X there's the reducer and you also have the effects,

478
00:27:27,640 --> 00:27:31,880
which even the RX n GRX team feels like NJRXFX

479
00:27:32,240 --> 00:27:35,599
are completely separate from njr X, right, like they want

480
00:27:35,599 --> 00:27:38,079
people to use effects even outside of njr X, And

481
00:27:38,079 --> 00:27:40,839
I'm like, okay, cool, So n g RX effects kind

482
00:27:40,839 --> 00:27:42,039
of are outside of JX.

483
00:27:42,119 --> 00:27:44,400
Speaker 2: So and when you look at an effect, it's really

484
00:27:45,000 --> 00:27:46,039
it's really just r X.

485
00:27:46,599 --> 00:27:46,839
Speaker 6: Yeah.

486
00:27:48,680 --> 00:27:51,559
Speaker 1: And so when I look at at n g r X,

487
00:27:51,720 --> 00:27:56,079
I see wrappers around some RX stuff, and so I

488
00:27:56,119 --> 00:27:59,960
think that the point here being getting good at NJR. Again,

489
00:28:00,000 --> 00:28:03,480
we didn't get at RXS and functional RX and like

490
00:28:04,240 --> 00:28:08,640
state mapping and like deriving one state from a previous

491
00:28:08,680 --> 00:28:12,400
state is really how you how you get good at

492
00:28:12,440 --> 00:28:17,359
functional programming inside of JRX or RX. It's it's almost unrelated.

493
00:28:17,599 --> 00:28:20,599
It's almost a separate conversation to INJEX and it's more

494
00:28:20,720 --> 00:28:24,519
just around our X just in general, unless you're talking

495
00:28:24,519 --> 00:28:27,319
about the reducer function, because the reducer function that actually

496
00:28:27,400 --> 00:28:30,440
is functional, right, Like that that is the piece of

497
00:28:30,440 --> 00:28:33,920
INJEX that is FP. And so that's kind of how

498
00:28:33,960 --> 00:28:36,200
I'm seeing, Like are we talking about the reducer or

499
00:28:36,200 --> 00:28:38,680
are we talking about how we select it back out

500
00:28:38,759 --> 00:28:42,759
of the store and mutate it from an array of

501
00:28:42,839 --> 00:28:46,200
users that's hard to search through into a map of

502
00:28:46,319 --> 00:28:49,480
users that's easy to search through, right, and like stuff

503
00:28:49,519 --> 00:28:51,920
like that, like and how are we doing that kind

504
00:28:51,920 --> 00:28:54,519
of thing? So that that's kind of how I see

505
00:28:54,519 --> 00:28:58,680
when we're talking about functional programming in RX or INJX,

506
00:28:58,680 --> 00:29:02,039
I'm really just seeing a lot of conversations about our exs.

507
00:29:02,160 --> 00:29:04,240
Speaker 2: Is that true role? Or what are you seeing different

508
00:29:04,319 --> 00:29:05,200
than what I'm seeing?

509
00:29:05,920 --> 00:29:09,839
Speaker 5: I agree with you. I think that XS is super important.

510
00:29:10,200 --> 00:29:16,000
I mean we are using heavily obviously here xcs, especially

511
00:29:16,440 --> 00:29:17,480
in the facts as you.

512
00:29:17,519 --> 00:29:20,480
Speaker 6: Said, and also when we get.

513
00:29:20,319 --> 00:29:24,680
Speaker 5: The you know, the success actions when we do a

514
00:29:24,759 --> 00:29:28,960
call and that's the SEXES action, it's a return. We

515
00:29:29,000 --> 00:29:32,160
do some operations maybe on the view whatever, and we

516
00:29:32,400 --> 00:29:35,880
use a lot of xsre too. So yeah, RXS is

517
00:29:35,880 --> 00:29:38,440
definitely super important. If you want to be good probably

518
00:29:38,519 --> 00:29:42,720
with nji X and functional programming, you have to to

519
00:29:43,039 --> 00:29:45,720
work a lot with RXS and be good with that.

520
00:29:47,119 --> 00:29:51,400
Speaker 6: And it's complex until you you get it. It's complex.

521
00:29:52,160 --> 00:29:56,599
Speaker 1: I remember, you know, my first Angular two. I think

522
00:29:56,680 --> 00:29:59,759
I came in on Angular three. No, sorry, Anger three

523
00:29:59,799 --> 00:30:03,160
is visible. Sorry, I think I came in on Angular four. Sorry,

524
00:30:03,319 --> 00:30:05,920
I just stepped into hornetsness. My bad, dude, I didn't

525
00:30:05,920 --> 00:30:10,960
mean to poke the bear. Sorry, I came in on

526
00:30:11,000 --> 00:30:12,200
the imaginary Angular.

527
00:30:12,279 --> 00:30:14,039
Speaker 2: Sorry, no, I came in on Angular four.

528
00:30:14,640 --> 00:30:20,680
Speaker 1: And I kind of just skipped RX because like the

529
00:30:20,720 --> 00:30:23,039
plural site courses that were teaching me and like the

530
00:30:23,079 --> 00:30:25,880
Todd models were like just do to promise.

531
00:30:26,039 --> 00:30:28,640
Speaker 2: And they're basically they're like just step.

532
00:30:28,400 --> 00:30:32,160
Speaker 1: Around it, like just get it back to a promise.

533
00:30:32,599 --> 00:30:32,839
Speaker 6: Yeah.

534
00:30:32,960 --> 00:30:35,799
Speaker 1: So and I'm not blaming them because I think and

535
00:30:35,839 --> 00:30:37,319
I think there's a lot of people that still think

536
00:30:37,359 --> 00:30:40,640
this today. A lot of data doesn't need to be

537
00:30:40,680 --> 00:30:43,759
a stream because it's only coming one time, it's not concurrent,

538
00:30:44,200 --> 00:30:46,240
it's not going to update again and again and again.

539
00:30:46,839 --> 00:30:48,680
Speaker 2: So promises were fine for them.

540
00:30:48,680 --> 00:30:50,839
Speaker 1: So I think that there was some merit to teaching

541
00:30:50,839 --> 00:30:54,079
it that way, but it causes to kind of sidestep

542
00:30:54,160 --> 00:30:57,279
ANGULAR or sorry X because it's it's pokey, right, Like

543
00:30:57,920 --> 00:31:02,920
promises have like two callbacks, right, our X has like

544
00:31:03,400 --> 00:31:06,240
four million and one as of this week, operators like

545
00:31:06,319 --> 00:31:09,400
they got a new one. It's now four million and one, right, Joe, Joe,

546
00:31:09,480 --> 00:31:11,200
am I right, it's up to.

547
00:31:11,160 --> 00:31:15,079
Speaker 2: Four million one, Yes, four million, and you know, okay, cool,

548
00:31:15,200 --> 00:31:15,640
thank you.

549
00:31:17,279 --> 00:31:21,200
Speaker 1: So I think that like there's a reason why everyone

550
00:31:21,279 --> 00:31:24,160
was like, hey, just don't do this, just step around it, right,

551
00:31:24,400 --> 00:31:27,400
And Bonnie at Hirez was like, don't do it, it's bad.

552
00:31:27,519 --> 00:31:30,799
Speaker 2: I'm like, okay, I'm not gonna do it, and so

553
00:31:32,400 --> 00:31:32,759
and so.

554
00:31:33,000 --> 00:31:36,079
Speaker 1: But now I think the community generally is like, all right,

555
00:31:36,160 --> 00:31:38,839
about face, let's let's get serious on this RX stuff.

556
00:31:38,960 --> 00:31:40,960
And even if I only have to learn three or

557
00:31:41,000 --> 00:31:42,680
four of the operators, I at least need to learn it,

558
00:31:42,720 --> 00:31:45,039
and so there seems to be a bit more prowess

559
00:31:45,240 --> 00:31:50,920
now in angular seven. I think a lot of people's reluctant,

560
00:31:51,039 --> 00:31:53,440
like people like me, oh my gosh, Like I got

561
00:31:53,480 --> 00:31:56,799
over the reluctance because I had it identified with that

562
00:31:56,839 --> 00:32:00,200
comment a lot, Joe. But now I love it, Like

563
00:32:00,440 --> 00:32:02,519
I look at like my favorite technologies I've learned in

564
00:32:02,559 --> 00:32:05,079
the last five years, and I think RX is my

565
00:32:05,200 --> 00:32:08,359
number one, Like it is so phenomenal, like.

566
00:32:08,240 --> 00:32:09,200
Speaker 2: It's so amazing.

567
00:32:09,319 --> 00:32:12,640
Speaker 1: But I wasn't there when I started, and I wasn't

568
00:32:12,640 --> 00:32:14,160
there with any either when I started.

569
00:32:14,359 --> 00:32:15,960
Speaker 2: It took me some time to fall in love with it.

570
00:32:16,000 --> 00:32:19,480
Speaker 7: And so yeah, the same way you felt about backbone.

571
00:32:19,759 --> 00:32:28,759
Speaker 1: Uh yeah, no, backbone. I never had a honeymoon phase,

572
00:32:28,839 --> 00:32:31,599
but it never I never got like, oh I like

573
00:32:31,680 --> 00:32:33,000
you now, Like I never got there.

574
00:32:34,160 --> 00:32:36,799
Speaker 2: Backbone was always like this is just as hard as

575
00:32:36,839 --> 00:32:41,400
just jaquerry. So why can't if.

576
00:32:39,920 --> 00:32:42,519
Speaker 7: You never offered let's just be friends, you never asked

577
00:32:42,599 --> 00:32:43,000
said that.

578
00:32:44,039 --> 00:32:46,799
Speaker 8: It's me, it's not you.

579
00:32:47,279 --> 00:32:50,400
Speaker 3: Wait, but let's get back to the just to maybe

580
00:32:50,440 --> 00:32:53,880
I don't know, summarize or just trying to figure out

581
00:32:53,960 --> 00:32:56,559
what we we have learned today.

582
00:32:57,240 --> 00:32:57,880
Speaker 6: Okay, so.

583
00:33:00,200 --> 00:33:04,359
Speaker 3: You know, I'm trying to maybe take the like, you know,

584
00:33:04,440 --> 00:33:09,519
the points that what is important because well the topic

585
00:33:09,559 --> 00:33:13,480
of today is Andrea X like functional ANDNGI X.

586
00:33:13,559 --> 00:33:13,720
Speaker 7: Right.

587
00:33:14,559 --> 00:33:18,079
Speaker 3: I think that we as a panel did like maybe

588
00:33:18,359 --> 00:33:21,079
not so good of a job, maybe interrupting you a

589
00:33:21,119 --> 00:33:25,960
lot with questions. Uh, and we didn't let you maybe

590
00:33:26,640 --> 00:33:28,480
do or say the thing that you wanted to do

591
00:33:28,599 --> 00:33:29,079
or say.

592
00:33:29,359 --> 00:33:31,720
Speaker 4: So I want you to.

593
00:33:31,759 --> 00:33:35,200
Speaker 3: Have, like you know, the the chance now to maybe

594
00:33:35,880 --> 00:33:38,119
talk about what you want to talk or just to

595
00:33:38,559 --> 00:33:40,920
you know, give us the points, the important points you

596
00:33:40,960 --> 00:33:42,599
want to pass m.

597
00:33:44,519 --> 00:33:46,640
Speaker 5: So you don't have any questions, right, and you're just

598
00:33:46,720 --> 00:33:48,759
doing this because you are not more creative.

599
00:33:49,200 --> 00:33:53,640
Speaker 8: Yeah, that's yeah, I can vouch for that. Yeah, it's

600
00:33:53,680 --> 00:33:54,680
a little bit that I think.

601
00:33:54,799 --> 00:33:56,880
Speaker 1: I think Shi feels like we pulled it off the

602
00:33:56,960 --> 00:33:59,680
rails and we didn't we didn't get to hear your message,

603
00:33:59,799 --> 00:34:02,160
and we want to make sure the listeners hear your message.

604
00:34:02,240 --> 00:34:02,880
Speaker 2: Yeah, am I wrong?

605
00:34:03,480 --> 00:34:04,599
Speaker 4: Yeah, That's what I meant.

606
00:34:04,839 --> 00:34:06,759
Speaker 6: Okay, Okay, well.

607
00:34:08,440 --> 00:34:11,360
Speaker 5: A couple of things I think, as you said, uh,

608
00:34:12,360 --> 00:34:16,440
just use funcial pramming and injury X redex and all

609
00:34:16,440 --> 00:34:18,880
the stuff. If you like it, you don't like it,

610
00:34:18,920 --> 00:34:22,039
and you don't feel comfortable with that, just don't do it.

611
00:34:22,480 --> 00:34:27,320
I think that that's that's uh the technology. It's just

612
00:34:27,360 --> 00:34:30,000
to get the best of it. If you're not getting

613
00:34:30,039 --> 00:34:32,719
it or you're not getting the best of it, just

614
00:34:32,760 --> 00:34:35,280
don't do it. Just do whatever you want and do

615
00:34:35,280 --> 00:34:39,480
you think it's right. If you don't like angler, you

616
00:34:39,480 --> 00:34:42,679
can use view yes, or backbone or whatever.

617
00:34:43,199 --> 00:34:46,360
Speaker 7: I highly recommend backbone. I highly recommend that tame here.

618
00:34:47,119 --> 00:34:50,320
Speaker 8: So that's the bone back for life.

619
00:34:50,880 --> 00:34:54,119
Speaker 1: I was on the View Reduced Documents the other day

620
00:34:54,519 --> 00:34:59,079
and they had a statement they said, this is like glasses.

621
00:35:00,199 --> 00:35:03,559
You'll know when you need it, and so if you

622
00:35:03,679 --> 00:35:06,400
don't know you need glasses, then you don't need I'm like,

623
00:35:06,639 --> 00:35:08,960
no one, none of us are like, I don't know

624
00:35:08,960 --> 00:35:11,039
if I need glasses, Shack go buy glasses.

625
00:35:11,079 --> 00:35:11,559
Speaker 8: Like no, no.

626
00:35:11,719 --> 00:35:11,880
Speaker 2: Like.

627
00:35:12,320 --> 00:35:15,000
Speaker 1: I hit thirty nine this year, and this was the

628
00:35:15,000 --> 00:35:17,920
first year I was like, I need a gentleman needs glasses.

629
00:35:18,039 --> 00:35:19,880
Speaker 3: I read the same thing, and I have a problem

630
00:35:19,920 --> 00:35:23,760
with that because people are usually afraid that when you

631
00:35:23,880 --> 00:35:26,719
will know, it will be too late, you know, so

632
00:35:26,760 --> 00:35:29,679
they always have to figure out if I should invest

633
00:35:29,719 --> 00:35:33,159
in this technology or framework whatever or library and to

634
00:35:33,199 --> 00:35:35,800
study it now before it gets too late. And then

635
00:35:35,880 --> 00:35:39,159
I'm I'm in scale and I cannot dog, I cannot

636
00:35:39,199 --> 00:35:41,800
change my code because it's too messy and all that stuff.

637
00:35:41,880 --> 00:35:45,400
Speaker 1: Yeah, it's a balance, right, like you have to balance

638
00:35:45,519 --> 00:35:49,280
the the FOMO or the you don't want to write

639
00:35:49,320 --> 00:35:54,079
legacy code, right. I think reducts is unique because it

640
00:35:54,119 --> 00:35:56,800
has so much and I know that the angie X

641
00:35:56,840 --> 00:35:57,280
team when.

642
00:35:57,199 --> 00:35:59,320
Speaker 2: I hear this is gonna love. It has so much

643
00:35:59,360 --> 00:36:00,639
boiler plate that.

644
00:36:02,960 --> 00:36:08,760
Speaker 1: I think that you do need. Yeah, Brandon loves that part.

645
00:36:08,880 --> 00:36:11,119
Just so everyone knows. Tweet him about it if everyone

646
00:36:11,119 --> 00:36:17,760
wants to tweet Brandon and yeah, hashtag Brandon mentioned Brandon

647
00:36:17,800 --> 00:36:20,960
say thanks for the hashtag, boy. But no, I think

648
00:36:21,000 --> 00:36:23,079
that there is you need to ask a couple box

649
00:36:23,119 --> 00:36:25,960
of questions to make sure it's worth it, because when

650
00:36:26,000 --> 00:36:28,800
it's worth it, it's worth it. But I think there's

651
00:36:28,800 --> 00:36:32,559
a lot of the time that it might be over engineered, right, Like,

652
00:36:33,119 --> 00:36:35,360
no one wants to strap a lawnmore to the bottom

653
00:36:35,400 --> 00:36:37,119
of your teslattle more you're a.

654
00:36:37,440 --> 00:36:40,199
Speaker 8: Fire Yeah wait, like you could do that?

655
00:36:40,639 --> 00:36:43,880
Speaker 2: No, you can, but you no one wants Joe, Joe, Joe,

656
00:36:44,000 --> 00:36:44,519
back it up.

657
00:36:44,840 --> 00:36:47,280
Speaker 7: I'm getting excited now. I know somebody who just bought

658
00:36:47,320 --> 00:36:49,239
a Tesla and I have a lawnmower.

659
00:36:50,760 --> 00:36:53,000
Speaker 2: Well, don't do it, Joe.

660
00:36:53,079 --> 00:36:55,519
Speaker 8: You could do it. No, you could do I could.

661
00:36:55,960 --> 00:36:57,199
Speaker 2: There's a time when it's.

662
00:36:57,079 --> 00:36:59,840
Speaker 1: Like, okay, guys, the only feasible way to manage this

663
00:36:59,920 --> 00:37:02,039
is to put the the lawnmower onto the Tesla. Like

664
00:37:02,079 --> 00:37:04,800
there's a scenario where that's someone is gonna say that

665
00:37:04,840 --> 00:37:05,800
before the world ends.

666
00:37:06,519 --> 00:37:11,719
Speaker 8: But it's not. It's not listen, yeah, like.

667
00:37:11,400 --> 00:37:14,039
Speaker 1: Like there's a scenario where that's a viable solution and

668
00:37:14,079 --> 00:37:17,880
no one has a smile on their face, right, But there's.

669
00:37:19,760 --> 00:37:22,719
Speaker 2: But there's a lot of scenarios I would even argue.

670
00:37:22,519 --> 00:37:26,159
Speaker 1: More where it's okay to put a bully in somewhere

671
00:37:26,159 --> 00:37:29,719
else besides like in the in Therx store.

672
00:37:30,159 --> 00:37:32,000
Speaker 2: And so that's all we're saying.

673
00:37:32,519 --> 00:37:37,360
Speaker 1: And the glasses, despite Shy being a contrarian, the glasses

674
00:37:37,440 --> 00:37:39,079
example is a good example.

675
00:37:39,320 --> 00:37:42,239
Speaker 2: Like everyone understands it. Like I don't know if I

676
00:37:42,320 --> 00:37:42,639
need it.

677
00:37:42,920 --> 00:37:43,280
Speaker 6: Some of me.

678
00:37:43,360 --> 00:37:45,199
Speaker 1: I came on Twitter and they said, hey, this is

679
00:37:45,199 --> 00:37:48,320
not a good example because glasses at leaks fix something

680
00:37:48,719 --> 00:37:54,480
and I don't read like there are some people that

681
00:37:54,039 --> 00:37:57,039
that disagree with it still, so like I'm just having

682
00:37:57,119 --> 00:38:01,480
fun roast over. No know, hey, Twitter taught me this.

683
00:38:01,599 --> 00:38:03,679
I didn't teach this. I'm not saying I would never

684
00:38:03,800 --> 00:38:05,480
say that. Twitter said that.

685
00:38:05,639 --> 00:38:06,840
Speaker 2: I would just asking the question.

686
00:38:07,360 --> 00:38:10,960
Speaker 1: Yeah, no, I'm not saying asking the question just because

687
00:38:10,960 --> 00:38:12,400
I said it doesn't mean I support it.

688
00:38:13,199 --> 00:38:13,400
Speaker 2: You know.

689
00:38:13,599 --> 00:38:18,639
Speaker 10: But now hold on, what about the scenario where I'm

690
00:38:18,679 --> 00:38:23,199
building the next Facebook. In that case, right I need

691
00:38:23,519 --> 00:38:26,159
I need to write, yeah, yeah, I need it right

692
00:38:26,199 --> 00:38:28,360
off that right, I'm building the next Facebook.

693
00:38:28,480 --> 00:38:30,239
Speaker 7: I don't know if you need this, you need it.

694
00:38:30,360 --> 00:38:33,199
Speaker 3: You should, you probably should implement you know what you

695
00:38:33,239 --> 00:38:37,440
said before that State. It used to be about variables,

696
00:38:37,719 --> 00:38:40,880
you know, putting values inside of viables, and now it

697
00:38:40,960 --> 00:38:45,800
became just like this ward, the complicated ward. There's another

698
00:38:45,840 --> 00:38:49,199
aspect that people don't talk about a lot. I feel

699
00:38:49,400 --> 00:38:55,800
when talking about State is cashing. You know, that's a topic, right,

700
00:38:55,960 --> 00:39:00,360
that is very very hard, Like I don't know those

701
00:39:00,480 --> 00:39:03,800
to talking about State because if you think about the

702
00:39:03,880 --> 00:39:09,400
stores in nj X, it's a cash layer, okay that

703
00:39:10,039 --> 00:39:13,559
you could like, you know, use and then you have

704
00:39:13,719 --> 00:39:17,760
other questions do I need a cash layer, okay in

705
00:39:17,800 --> 00:39:20,559
that scenario, do I need it anyway? Or do I

706
00:39:20,679 --> 00:39:24,639
need always the fresh data from the server and all

707
00:39:24,679 --> 00:39:28,559
that question that people don't talk about that enough, I feel,

708
00:39:28,599 --> 00:39:31,559
But that's a topic for maybe a different episode.

709
00:39:31,880 --> 00:39:37,000
Speaker 1: Yeah, I think that cash is something that is helpful

710
00:39:37,119 --> 00:39:40,639
in some scenarios and it makes other apps worse because

711
00:39:41,320 --> 00:39:44,719
cash means you're trying to keep data around for more

712
00:39:44,760 --> 00:39:48,360
than temporary purposes, and you can end up with a

713
00:39:48,360 --> 00:39:51,480
lot of stale data unintentionally, And so if you're going

714
00:39:51,559 --> 00:39:55,239
to cash, you have to have an effective casing strategy otherwise,

715
00:39:55,440 --> 00:39:59,159
like probably with some sort of server push notifications telling.

716
00:39:58,960 --> 00:40:02,000
Speaker 2: You update the cash. Otherwise you're gonna have still data

717
00:40:02,000 --> 00:40:04,320
and stuff. So I think a lot of people look at.

718
00:40:04,320 --> 00:40:08,199
Speaker 1: NJRX erroneously, and I don't. NNGRX wasn't built to be

719
00:40:08,239 --> 00:40:11,519
a client side database. It's not meant to get the data,

720
00:40:11,559 --> 00:40:13,360
put it in there, and then never ask for it again.

721
00:40:13,440 --> 00:40:15,000
It's only meant to be a place where you can

722
00:40:15,000 --> 00:40:18,119
concurrently serve the same piece of data to multiple people

723
00:40:18,119 --> 00:40:20,920
without worrying if they have different copies. But it's not

724
00:40:20,960 --> 00:40:23,039
necessarily meant to be a cash so I think cashing

725
00:40:23,119 --> 00:40:26,480
is a completely different topic separate of NJRX. In my opinion,

726
00:40:26,920 --> 00:40:30,679
I think I think you could solve cashing with NJRX.

727
00:40:31,280 --> 00:40:33,280
Speaker 2: I think you could put it into the store.

728
00:40:33,360 --> 00:40:36,679
Speaker 1: But every app is so different, every need for cash,

729
00:40:36,840 --> 00:40:40,519
Like if I if you were selling donuts, your cash

730
00:40:40,679 --> 00:40:43,679
is so much different than if you're if you're selling

731
00:40:43,760 --> 00:40:49,280
stock options, right or like real time appropriate, because I mean, well,

732
00:40:49,360 --> 00:40:51,519
donuts are static, like they're not going to change, right,

733
00:40:51,559 --> 00:40:52,639
Like so your cash?

734
00:40:53,000 --> 00:40:55,239
Speaker 16: Yeah, the donut like shot you've never had a donut

735
00:40:55,559 --> 00:41:02,679
I ate on and then it changed, and I'm going

736
00:41:02,719 --> 00:41:04,079
to asking why anyway.

737
00:41:04,119 --> 00:41:07,079
Speaker 3: Okay, Okay, forget about the cash. Okay, that's a different topic,

738
00:41:07,119 --> 00:41:10,239
a different episode. I see like people, Okay, yeah, you

739
00:41:10,280 --> 00:41:12,239
could catch it with this plug in. And then it

740
00:41:12,320 --> 00:41:14,960
becomes like, because it's sort of a repository, you have

741
00:41:15,039 --> 00:41:18,760
like one giant object that is the store, which has

742
00:41:18,840 --> 00:41:21,880
lots of properties on it, which is a giant, big store,

743
00:41:21,920 --> 00:41:23,119
which is an anti.

744
00:41:22,800 --> 00:41:24,679
Speaker 4: Pattern if you think about it.

745
00:41:25,039 --> 00:41:29,280
Speaker 3: Okay, a large, large object holding all the stage. Where's

746
00:41:29,280 --> 00:41:30,599
the single responsibility.

747
00:41:30,960 --> 00:41:33,079
Speaker 1: It's even more of an anti pattern if you realize

748
00:41:33,079 --> 00:41:35,679
that it keeps a copy to every old version of

749
00:41:35,719 --> 00:41:41,119
the data as well. Mm hmm hashtag redox tact tools hashtag.

750
00:41:41,440 --> 00:41:46,920
Speaker 3: So okay, but there are good things that we could

751
00:41:46,960 --> 00:41:50,159
take from it, and that's what I wanted to investigate

752
00:41:50,159 --> 00:41:51,000
in this episode.

753
00:41:51,039 --> 00:41:54,920
Speaker 8: Like when you say, what do you mean and X like.

754
00:41:54,559 --> 00:41:59,519
Speaker 3: Like the patterns, like the functional aspects, the functional aspects.

755
00:42:00,079 --> 00:42:03,039
Let's say, okay, here's one benefit that I see two

756
00:42:03,079 --> 00:42:09,440
functional way overwriting okay, testing okay, Like if you have

757
00:42:09,599 --> 00:42:13,440
a functional like a service, or let's say you have

758
00:42:13,519 --> 00:42:17,119
like a pure functions, it's much easier to test it.

759
00:42:17,719 --> 00:42:22,119
Then if you have like a state mutating kind of thing.

760
00:42:22,559 --> 00:42:25,559
It's not that that is not possible to test, but

761
00:42:26,079 --> 00:42:30,079
pure functions are super easy to test and to understand.

762
00:42:30,280 --> 00:42:34,719
So's that's one direction that using a pattern like n

763
00:42:34,800 --> 00:42:38,360
GX maybe drive you in the reducers to make them

764
00:42:38,440 --> 00:42:41,679
pure functions and they're easier to test. That's one benefit

765
00:42:41,679 --> 00:42:43,960
that I see to the functions. That's why I wanted

766
00:42:44,000 --> 00:42:46,880
to investigate. That's why I asked these questions to get

767
00:42:46,920 --> 00:42:50,559
a better understanding what are the benefits. Maybe if I'm

768
00:42:50,599 --> 00:42:53,239
not using an gr X, I could still take these

769
00:42:53,239 --> 00:42:58,000
benefits into my projects. Right, So do you see any

770
00:42:58,039 --> 00:43:02,679
other benefits like these that our listeners could take to

771
00:43:02,800 --> 00:43:03,519
their project.

772
00:43:04,320 --> 00:43:06,440
Speaker 1: Ng X has a ton of good things, Like it

773
00:43:06,519 --> 00:43:11,199
has memoized pipes streams right, like, so your streams are memoized,

774
00:43:11,239 --> 00:43:14,480
meaning it's not gonna fire more than necessary.

775
00:43:14,559 --> 00:43:16,719
Speaker 2: So there's a there's an insane amount like when you

776
00:43:16,800 --> 00:43:19,440
turn on the push on push.

777
00:43:19,239 --> 00:43:21,599
Speaker 1: For change the text of strategy and an angular component

778
00:43:22,039 --> 00:43:26,199
with memoized streams, that's pretty performant and there's no real

779
00:43:26,239 --> 00:43:28,840
way to deny that. And so there's a lot of

780
00:43:28,880 --> 00:43:31,519
really good things that it teaches you. It teaches you

781
00:43:31,599 --> 00:43:34,400
like if you use the facade pattern that Thomas Burlison

782
00:43:34,480 --> 00:43:37,760
talks about on with NNGX, you end up with a

783
00:43:37,800 --> 00:43:41,039
really nice API around your store and teaching people how

784
00:43:41,119 --> 00:43:42,480
to write APIs.

785
00:43:42,039 --> 00:43:44,239
Speaker 2: Around their data access layers really valuable.

786
00:43:44,280 --> 00:43:48,440
Speaker 1: Like, so it actually teaches you a lot of insanely

787
00:43:48,480 --> 00:43:49,679
good patterns.

788
00:43:49,239 --> 00:43:52,800
Speaker 8: And when you know you need it, it's like.

789
00:43:53,000 --> 00:43:57,239
Speaker 1: The most effective way to have highly concurrent, highly shared data,

790
00:43:57,280 --> 00:44:00,599
Like I can't think more easy to trace way of

791
00:44:00,719 --> 00:44:03,239
coding that up on highly concurrent data.

792
00:44:03,360 --> 00:44:06,159
Speaker 10: So did you One of those examples in there was

793
00:44:06,199 --> 00:44:11,719
that an example of how happen to deal with the

794
00:44:11,800 --> 00:44:14,719
complexity at ADS teaches you good things?

795
00:44:15,280 --> 00:44:15,519
Speaker 8: Is that?

796
00:44:15,920 --> 00:44:19,079
Speaker 10: Is that a mean the facade pattern, that's like, I'm

797
00:44:19,079 --> 00:44:22,679
dealing with the complexity I'm doing I'm I'm I'm working

798
00:44:23,440 --> 00:44:25,480
in spite of it. That was that seemed like that

799
00:44:25,599 --> 00:44:28,559
was one of your examples there, right, Like no, I wasn't.

800
00:44:28,719 --> 00:44:31,320
Speaker 1: Yeah, I mean what you're saying is not untrue, but

801
00:44:31,639 --> 00:44:33,199
that's not why I was saying it.

802
00:44:33,280 --> 00:44:35,599
Speaker 2: Like, because you can write in your X in.

803
00:44:35,599 --> 00:44:38,440
Speaker 1: A way where you've broken the log demeter and now

804
00:44:38,480 --> 00:44:41,159
your component knows too much about the store, right, and

805
00:44:41,679 --> 00:44:44,800
like that's crazy. Or maybe you take the selector back

806
00:44:44,840 --> 00:44:48,480
into your component and then you start making immutable streams

807
00:44:48,519 --> 00:44:50,679
in your component when really that should be up inside

808
00:44:50,679 --> 00:44:52,800
of a service so that other people can reuse the

809
00:44:52,840 --> 00:44:53,480
same logic.

810
00:44:53,559 --> 00:44:54,159
Speaker 2: You know what I'm saying.

811
00:44:54,199 --> 00:44:57,800
Speaker 10: And so hey, this is a pretty advanced episode, but

812
00:44:57,840 --> 00:45:00,000
still it might be good to do a quick definition

813
00:45:00,079 --> 00:45:00,639
of law demeter.

814
00:45:00,760 --> 00:45:03,239
Speaker 7: Finty name dropped it.

815
00:45:03,239 --> 00:45:08,599
Speaker 1: It's just trying to draw fences around like pieces of

816
00:45:08,800 --> 00:45:12,519
logic and keep them reasonable in themselves so that you

817
00:45:12,519 --> 00:45:14,960
you don't have one thing that knows too much about

818
00:45:15,039 --> 00:45:18,760
it's it's environment or a component knows too much about

819
00:45:18,760 --> 00:45:19,280
the store.

820
00:45:19,960 --> 00:45:22,760
Speaker 3: A good example for it if when you find yourself

821
00:45:23,280 --> 00:45:27,400
calling an object like a service, get this other service.

822
00:45:27,519 --> 00:45:30,880
If it has a method that gets you another object,

823
00:45:31,119 --> 00:45:33,440
and then you use and call a method on that

824
00:45:33,599 --> 00:45:36,880
other object, this is breaking the law of demeter because

825
00:45:37,400 --> 00:45:40,480
you should have just like a you know, function that

826
00:45:40,559 --> 00:45:43,000
does something and don't get you another object.

827
00:45:43,079 --> 00:45:45,400
Speaker 4: You should inject this object if you need it.

828
00:45:45,960 --> 00:45:49,519
Speaker 1: Yeah, Lucas, and actually I learned this from Lucas and

829
00:45:49,679 --> 00:45:51,039
uh Lucas rouble key.

830
00:45:51,199 --> 00:45:53,960
Speaker 2: Everyone knows, I mean, and he's great, and so it's

831
00:45:54,000 --> 00:45:54,679
really important.

832
00:45:54,719 --> 00:45:56,679
Speaker 1: I think there's a there's a ton of good stuff

833
00:45:56,679 --> 00:45:59,440
to even if you're like I don't need injects, there's

834
00:45:59,480 --> 00:46:01,440
still a lot of patterns from it you should be following.

835
00:46:01,480 --> 00:46:03,719
Speaker 2: And I'll all stand on that hill.

836
00:46:04,400 --> 00:46:09,639
Speaker 5: I think that, Well, there are a lot of things

837
00:46:09,679 --> 00:46:12,800
about ins X about using anji x in your project.

838
00:46:13,239 --> 00:46:16,599
For me, one of them is that if you're working

839
00:46:16,840 --> 00:46:21,039
in kind of big teams, it's going to be very

840
00:46:21,119 --> 00:46:25,559
used to introduce new members because when there is there

841
00:46:25,639 --> 00:46:29,440
is a lot of documentation. There is good a lot

842
00:46:29,880 --> 00:46:33,679
of good examples on internet. Once you have learned how

843
00:46:33,800 --> 00:46:38,000
anti X works to use anterior X. It's it is

844
00:46:38,199 --> 00:46:41,960
maybe you have to write this boilerplate that it's not

845
00:46:42,039 --> 00:46:45,679
boiler plate actually, but boiler plate, okay. And the thing

846
00:46:45,760 --> 00:46:48,639
is that when you have learned that, it is very

847
00:46:48,639 --> 00:46:52,719
easy to to you know, to call service and you

848
00:46:52,800 --> 00:46:56,960
know exactly how the data flows, which is this is

849
00:46:57,039 --> 00:47:00,840
you know, every time that you heard about redex, you say,

850
00:47:01,440 --> 00:47:04,880
what the hell they mean when they say how the

851
00:47:05,000 --> 00:47:08,639
data flows, and you say that sounds like it bullshit, right,

852
00:47:09,320 --> 00:47:14,639
So the thing is it's it's that it's not because

853
00:47:15,199 --> 00:47:19,119
you know that when you call an action from your view,

854
00:47:19,760 --> 00:47:23,400
that action is going to you know, it's going to

855
00:47:23,440 --> 00:47:28,360
be captured or get from on the effect, and then

856
00:47:28,440 --> 00:47:29,639
on the effect you will.

857
00:47:29,559 --> 00:47:33,880
Speaker 6: Call to a service. That service will do some process

858
00:47:34,280 --> 00:47:40,840
or whatever and return you know, value to the defect

859
00:47:41,039 --> 00:47:42,000
and the effect.

860
00:47:41,679 --> 00:47:45,239
Speaker 5: Will return a new action. So you can do this

861
00:47:46,559 --> 00:47:49,840
interactions with your view. So the good thing about that

862
00:47:50,119 --> 00:47:52,599
is it's because because.

863
00:47:52,320 --> 00:47:54,239
Speaker 6: The flow is so it's so clear.

864
00:47:54,400 --> 00:47:56,599
Speaker 5: So you call the action, it goes to the defect,

865
00:47:56,800 --> 00:47:59,880
from the defect to the service, from the service to

866
00:48:00,079 --> 00:48:03,079
the fact back and from the fact it goes back

867
00:48:03,119 --> 00:48:07,800
to the UI because that flowed so easy to understand

868
00:48:07,800 --> 00:48:10,679
when you have done it like a few times, because

869
00:48:10,880 --> 00:48:13,280
it is easy when you have worked with that for

870
00:48:13,320 --> 00:48:14,039
a while.

871
00:48:14,559 --> 00:48:17,440
Speaker 6: It's easy to you know, to put some stuff in

872
00:48:17,480 --> 00:48:17,840
the middle.

873
00:48:18,360 --> 00:48:20,840
Speaker 5: So for example, what we do is we are using

874
00:48:20,960 --> 00:48:25,239
some a thing called decoders and disney coders.

875
00:48:25,599 --> 00:48:28,760
Speaker 6: It's a library that we created, which what.

876
00:48:28,679 --> 00:48:31,960
Speaker 5: It's doing is that when we do a call to

877
00:48:32,079 --> 00:48:36,679
the API, we use disney coders to decode the response

878
00:48:36,719 --> 00:48:39,599
from the server, and if the response from the server

879
00:48:39,760 --> 00:48:44,239
is what we expect, then we return as success. Otherwise

880
00:48:44,320 --> 00:48:47,760
return our failure. Where we are doing that because sometimes

881
00:48:48,159 --> 00:48:51,320
there are bags introduced in the API that can crush

882
00:48:51,400 --> 00:48:54,519
the UI, and with those decoders we can prevent that.

883
00:48:55,280 --> 00:48:59,199
And that kind of things are very easy to understand

884
00:48:59,599 --> 00:49:02,840
if you so if you are following that architecture and

885
00:49:03,119 --> 00:49:07,039
patterns are good because force you to do the things

886
00:49:07,079 --> 00:49:10,119
in bangue. So there is not going to be a

887
00:49:10,159 --> 00:49:13,400
mother of choice of this developer or this order developer.

888
00:49:13,679 --> 00:49:16,400
You know, you're going to do this in that way

889
00:49:16,480 --> 00:49:20,000
because it's how you should do that, because it's the

890
00:49:20,039 --> 00:49:23,280
proper way, and that's it. So it's going to be

891
00:49:23,360 --> 00:49:27,000
easy to understand for everybody. I'm comfortable with that. I'm

892
00:49:27,039 --> 00:49:30,480
comfortable using patterns and libraries and the good things.

893
00:49:30,840 --> 00:49:33,559
Speaker 1: All Right, we're late in the show, so Ral, if

894
00:49:33,559 --> 00:49:35,800
anyone wants to reach out to you, have any questions

895
00:49:35,840 --> 00:49:37,000
for you, where can they find you?

896
00:49:37,039 --> 00:49:37,519
Speaker 2: On Twitter?

897
00:49:38,119 --> 00:49:42,360
Speaker 5: On alcraft which is E L E C A as

898
00:49:42,519 --> 00:49:48,440
H on Twitter with the same user they will follow

899
00:49:49,320 --> 00:49:54,639
phone me on GitHub too, and probably other networks.

900
00:49:54,840 --> 00:49:58,320
Speaker 1: Okay, cool, Well, thanks for coming on, Thanks for letting

901
00:49:58,400 --> 00:50:00,920
us brande you with questions and for helping us dive

902
00:50:01,000 --> 00:50:05,400
into functional programming with NJRX and with our Yes, it's appreciated.

903
00:50:05,760 --> 00:50:08,320
Let's go, let's move in the picks. Does anyone want

904
00:50:08,360 --> 00:50:10,280
to start the pick section? Yeah?

905
00:50:10,639 --> 00:50:14,840
Speaker 3: I want to recommend I tweeted about it today and

906
00:50:14,920 --> 00:50:19,480
also let talk by Steve Freeman, who is one of

907
00:50:19,519 --> 00:50:22,559
the goose, the growing object or in the Software Guided

908
00:50:22,559 --> 00:50:28,719
by testbook, which gave a lecture two years ago about

909
00:50:29,280 --> 00:50:33,960
TDD and how we meant it to be. So that's

910
00:50:34,159 --> 00:50:37,519
uh that I will put the link and that's it

911
00:50:37,599 --> 00:50:38,239
for me today.

912
00:50:39,000 --> 00:50:43,519
Speaker 1: Perfect, Joe, you want to go, Yeah, I'm gonna pick

913
00:50:43,599 --> 00:50:44,159
type script.

914
00:50:45,079 --> 00:50:48,400
Speaker 7: I like, yeah, type God's pretty cool.

915
00:50:48,920 --> 00:50:51,679
Speaker 10: I started like playing around with a few things, and

916
00:50:52,639 --> 00:50:54,400
I was looking at some computer science stuff and I

917
00:50:54,440 --> 00:50:56,960
don't know if any of you knew this. I'm gonna

918
00:50:57,239 --> 00:51:00,880
anybody who knows this, I'll buy you a swig. Did

919
00:51:00,920 --> 00:51:05,079
you know that typescript supports tuples? Yep, you did you

920
00:51:05,079 --> 00:51:07,880
get a swig? No, they're tuples. It's it's also gift

921
00:51:09,480 --> 00:51:10,320
not twops.

922
00:51:11,039 --> 00:51:12,039
Speaker 7: I've heard it both ways.

923
00:51:13,119 --> 00:51:13,760
Speaker 4: That stupid.

924
00:51:13,800 --> 00:51:16,119
Speaker 2: That's what the Jiff people say, Joe, that's what the gif.

925
00:51:17,000 --> 00:51:20,119
Speaker 7: That's what the Jeff chef.

926
00:51:21,000 --> 00:51:25,639
Speaker 10: Anyway, Typescript supports them tuple tuples, and I did not

927
00:51:25,760 --> 00:51:27,320
know that until I was like looking around in the

928
00:51:27,320 --> 00:51:30,960
corner anyway. So type actually pretty cool. What I like

929
00:51:30,960 --> 00:51:34,320
about it is it's fairly easy to like learn on

930
00:51:34,400 --> 00:51:36,199
top of JavaScript, and there's really not that much you

931
00:51:36,239 --> 00:51:38,039
learned to need to learn to be pretty good at it.

932
00:51:38,079 --> 00:51:40,280
So I actually did throw together a quick little like

933
00:51:40,400 --> 00:51:44,360
video lesson on five essential lips lessons for top typescript Competence.

934
00:51:45,000 --> 00:51:48,000
So if you google that five Essential Lessons for Typescript Competence,

935
00:51:48,000 --> 00:51:48,480
you'll find it.

936
00:51:48,519 --> 00:51:51,480
Speaker 7: I put it up over on Thinkster, but it's free

937
00:51:51,480 --> 00:51:51,960
to the public.

938
00:51:52,320 --> 00:51:58,639
Speaker 2: Type script pipescript all right, I might take a pic here.

939
00:51:59,039 --> 00:52:00,760
I'm at two picks today. Okay.

940
00:52:01,039 --> 00:52:04,920
Speaker 1: The first pick is the company I'm working with, Hero Devs,

941
00:52:05,360 --> 00:52:08,239
is launching a new conference. It's called rx Just Live.

942
00:52:08,840 --> 00:52:11,400
It's gonna be in Vegas on September fifth and sixth.

943
00:52:11,840 --> 00:52:12,079
Speaker 6: Uh.

944
00:52:12,119 --> 00:52:15,960
Speaker 2: The CFP is opening tonight, all RXGS conference. If you

945
00:52:15,960 --> 00:52:16,840
want to go check it out.

946
00:52:16,840 --> 00:52:20,039
Speaker 1: It's RxJS dot live and you can go on Twitter

947
00:52:20,239 --> 00:52:22,199
rx just Live the Twitter account.

948
00:52:22,599 --> 00:52:23,719
Speaker 2: Do a follow there to.

949
00:52:23,679 --> 00:52:26,320
Speaker 1: Follow for announcements for the CFP for tickets. Tickets go

950
00:52:26,400 --> 00:52:29,079
on sale by the time this happens. The CFP and

951
00:52:29,079 --> 00:52:30,800
the tickets will already be on sale by the time

952
00:52:30,840 --> 00:52:33,840
this podcast goes out. So anyway, if you're out there saying, hey,

953
00:52:33,840 --> 00:52:35,519
I need to get better at this rx stuff.

954
00:52:35,519 --> 00:52:39,039
Speaker 2: I need to understand streams and observables and these patterns.

955
00:52:38,559 --> 00:52:41,119
Speaker 3: And dude, that's just like the whole world.

956
00:52:42,039 --> 00:52:42,559
Speaker 8: Yeah, I know.

957
00:52:42,760 --> 00:52:45,519
Speaker 1: But if you're if you want to come, it's a

958
00:52:45,559 --> 00:52:46,360
first year conference.

959
00:52:46,400 --> 00:52:47,480
Speaker 2: It's gonna be a lot of fun.

960
00:52:47,639 --> 00:52:50,199
Speaker 1: There's gonna be a lot of you know, Podwazaki, Ben

961
00:52:50,280 --> 00:52:52,280
Lesch people there that are They're gonna teach us and

962
00:52:52,360 --> 00:52:54,280
we're gonna spend a couple days of community learning So.

963
00:52:54,440 --> 00:52:57,159
Speaker 2: That's my first pick is RX Just Life. Second pick

964
00:52:57,639 --> 00:52:59,559
a book called The Go Giver.

965
00:53:00,400 --> 00:53:04,199
Speaker 1: I read it and I had a moment where it

966
00:53:04,239 --> 00:53:06,880
added some clarity. And I read a book, a small

967
00:53:06,920 --> 00:53:09,519
book like this about a decade ago that changed me.

968
00:53:10,039 --> 00:53:12,239
And as I was reading The Go Giver, I could

969
00:53:12,239 --> 00:53:15,559
tell this was going to change the way I approached

970
00:53:15,599 --> 00:53:18,320
a lot of things. And as I read it, I

971
00:53:18,360 --> 00:53:20,320
started thinking about some people a lot of you guys

972
00:53:20,320 --> 00:53:23,280
will know, Like I started thinking about Joe Eames, I

973
00:53:23,320 --> 00:53:27,239
started thinking about Jesse Sanders, I started thinking about Jorge

974
00:53:27,320 --> 00:53:33,480
Kano and just people that give really endlessly and like

975
00:53:33,559 --> 00:53:36,280
I'm amazed at how their giving makes me want to

976
00:53:36,320 --> 00:53:38,039
be a soldier for them.

977
00:53:38,639 --> 00:53:40,639
Speaker 2: And this book was like, hey, when.

978
00:53:40,480 --> 00:53:44,079
Speaker 1: You give people, people are on your team now and

979
00:53:44,119 --> 00:53:46,320
they love you and they're looking out for your And.

980
00:53:46,239 --> 00:53:49,679
Speaker 2: So it's called the Go Giver. It helps you put.

981
00:53:49,519 --> 00:53:51,960
Speaker 1: Some terms around all the giving that you do. You know,

982
00:53:52,079 --> 00:53:54,960
certainly Hires gives a lot to the community. Hi Rez

983
00:53:55,000 --> 00:53:57,519
would be part of this giver category. So I wanted

984
00:53:57,519 --> 00:53:59,880
to just put it out there for people about giving

985
00:54:00,199 --> 00:54:02,119
and how to kind of grow as an influencer.

986
00:54:02,199 --> 00:54:03,679
Speaker 2: Is called the Go Giver and you can check it

987
00:54:03,679 --> 00:54:05,679
out on audible. It's only about three hours. So those

988
00:54:05,679 --> 00:54:06,880
are my two picks this week.

989
00:54:07,239 --> 00:54:12,079
Speaker 3: By the way, you're one of my inspirations, Frost, forgiving

990
00:54:12,760 --> 00:54:15,440
from seeing the behind the scenes of Energi Coon and

991
00:54:15,440 --> 00:54:17,599
how much you put an effort to give back to

992
00:54:17,639 --> 00:54:18,320
the attendees.

993
00:54:18,639 --> 00:54:19,559
Speaker 8: So just know that.

994
00:54:20,360 --> 00:54:22,719
Speaker 2: Thanks man, appreciate it. Well, you want to take a

995
00:54:22,800 --> 00:54:25,559
chance at some add some picks.

996
00:54:25,880 --> 00:54:30,320
Speaker 5: Yeah, obviously I use this this thing called quick time

997
00:54:30,400 --> 00:54:31,039
dot io.

998
00:54:31,320 --> 00:54:32,400
Speaker 6: I don't know if you know it.

999
00:54:33,239 --> 00:54:37,280
Speaker 5: This is a great tool where you can transform your

1000
00:54:37,960 --> 00:54:41,679
you know, your a Jason files to interfaces and so on.

1001
00:54:42,320 --> 00:54:44,519
It is very very useful and using it a lot

1002
00:54:44,679 --> 00:54:46,880
and I like it a lot. And the other thing

1003
00:54:46,920 --> 00:54:50,440
that I will like you it's my my friends at

1004
00:54:50,559 --> 00:54:51,119
a Grid.

1005
00:54:51,880 --> 00:54:54,280
Speaker 6: They are great. I don't know if you know about

1006
00:54:54,280 --> 00:54:57,280
the ag greed, but age Grid is the best grid

1007
00:54:57,360 --> 00:55:00,280
in the world, and I love the guys behind it, yus.

1008
00:55:00,639 --> 00:55:03,159
They are very very very very nice.

1009
00:55:05,119 --> 00:55:05,840
Speaker 7: Second that.

1010
00:55:08,119 --> 00:55:12,519
Speaker 6: And that's it. I think that those are two very

1011
00:55:12,519 --> 00:55:13,519
good things.

1012
00:55:13,920 --> 00:55:14,199
Speaker 7: Cool.

1013
00:55:14,519 --> 00:55:17,519
Speaker 1: Well, thanks for coming on everybody, Thanks for listening. If

1014
00:55:17,559 --> 00:55:19,639
you want to reach out to us, go follow us

1015
00:55:19,800 --> 00:55:23,400
on Twitter, Angular Podcast and we will be tweeting some

1016
00:55:23,440 --> 00:55:26,199
new announcements from there going forward. So thank you and

1017
00:55:26,239 --> 00:55:27,320
we'll catch you all next time.

1018
00:55:27,679 --> 00:55:29,920
Speaker 6: Thank you, rool, Thank you everybody,

