1
00:00:00,200 --> 00:00:03,720
Speaker 1: Welcome to Adventures in Angler, the largest and most popular

2
00:00:03,799 --> 00:00:07,799
podcasts in the world about web development with Angler, This

3
00:00:07,919 --> 00:00:11,800
show is brought to you by Void and top Endavs.

4
00:00:12,480 --> 00:00:17,160
Unvoid provides high quality design and software development services on

5
00:00:17,280 --> 00:00:22,640
a client friendly business model. Unlike all other agencies, Unvoid

6
00:00:22,879 --> 00:00:26,640
allows clients to only pay after the work is delivered

7
00:00:26,760 --> 00:00:31,320
and approved. Visit unvoid dot com to learn more and

8
00:00:31,440 --> 00:00:33,679
reach out. If you know a company that needs more

9
00:00:33,679 --> 00:00:38,280
professionals to help with design and software development, that's u

10
00:00:38,679 --> 00:00:44,000
n vod dot com and top and Davs helps you

11
00:00:44,079 --> 00:00:49,439
stay up to date with cutting edge technologies like JavaScript, Ruby, Elixir,

12
00:00:49,520 --> 00:00:54,240
and AI. Visit topd davs dot com to join their

13
00:00:54,280 --> 00:00:59,479
AIDV book camp, weekly community meetups and access expert tutorials.

14
00:01:00,159 --> 00:01:04,400
Lucas Paganini, founder of on Void and host of this podcast,

15
00:01:04,799 --> 00:01:13,040
Thank you for tuning in. Let's jump into the episode.

16
00:01:14,799 --> 00:01:18,640
Speaker 2: Hey everybody, and welcome back to another Adventures in Angular.

17
00:01:19,159 --> 00:01:22,200
This week, on our panel, we have two new panelists.

18
00:01:22,239 --> 00:01:26,560
We have Richard Stourle. Hey, hey, hey, you want to

19
00:01:26,599 --> 00:01:28,799
remind people who you are because we haven't had you

20
00:01:28,879 --> 00:01:29,920
on for a few weeks.

21
00:01:30,319 --> 00:01:31,640
Speaker 3: Yeah, my name is Richard.

22
00:01:31,799 --> 00:01:35,799
Speaker 4: I am a front and leave developer for a company

23
00:01:35,799 --> 00:01:41,400
called Optimal Systems. I am based in Berlin, Germany, originally

24
00:01:41,439 --> 00:01:46,599
from Johannesburg, South Africa. And yeah, I'm really loving the show.

25
00:01:46,640 --> 00:01:51,040
I'm a big fan of Anglia Adventures in Angular and yeah,

26
00:01:51,120 --> 00:01:53,239
I'm happy to be back again.

27
00:01:53,359 --> 00:01:56,280
Speaker 2: All right, and just to keep it multinational. We also

28
00:01:56,359 --> 00:02:00,120
have another new panelist we have and you can tell

29
00:02:00,120 --> 00:02:02,799
me if I say your name wrong too. It's super Nichra.

30
00:02:03,239 --> 00:02:05,719
Speaker 3: Yeah, yeah, it's correct. And Hi guys, I.

31
00:02:05,719 --> 00:02:07,560
Speaker 2: Do you want to remind you of who you are?

32
00:02:07,640 --> 00:02:09,280
It's been a few months that you've been on.

33
00:02:09,879 --> 00:02:14,479
Speaker 5: Yeah, so I'm as Stol, I'm Super Wednister. I'm from

34
00:02:14,479 --> 00:02:18,520
India and currently I'm in Bangalore and I'm a full

35
00:02:18,520 --> 00:02:23,879
stack developer. Currently I'm working in society General and I

36
00:02:23,879 --> 00:02:27,599
think once in last year I was in the show

37
00:02:27,680 --> 00:02:30,919
at a as a guest and now I'm very happy

38
00:02:31,360 --> 00:02:32,599
to be as a panelists.

39
00:02:32,960 --> 00:02:34,400
Speaker 3: It will be a wonderful experience.

40
00:02:34,719 --> 00:02:38,479
Speaker 5: And I had a I have a YouTube channel that

41
00:02:38,680 --> 00:02:42,159
is on basically on Angler and that is fun of Heuristic.

42
00:02:42,719 --> 00:02:45,960
Speaker 3: So everything is going on together awesome.

43
00:02:46,240 --> 00:02:49,599
Speaker 2: I'm Charles max Wood from dev chat dot tv. Maybe

44
00:02:49,680 --> 00:02:52,280
I should do a little intro too. So I started

45
00:02:52,280 --> 00:02:54,439
the show with a bunch of friends of mine, what

46
00:02:54,719 --> 00:02:58,840
like seven years ago or something, And yeah, we've been

47
00:02:58,840 --> 00:03:00,719
doing the show for a while. I kind of handed

48
00:03:00,759 --> 00:03:02,719
it off some other folks wound up taking it back

49
00:03:02,759 --> 00:03:06,400
over January timeframe. Shy and I were doing it for

50
00:03:06,439 --> 00:03:09,759
a while. I interviewed a few folks like Richard, and yeah,

51
00:03:09,919 --> 00:03:12,599
I wanted to bring some more people back in and so, yeah,

52
00:03:12,639 --> 00:03:16,159
I'm excited to be talking to some new friends. And yeah,

53
00:03:16,240 --> 00:03:20,840
we have a guest today. That's walking, is it seed?

54
00:03:21,120 --> 00:03:21,360
Speaker 3: Yep?

55
00:03:21,599 --> 00:03:22,960
Speaker 6: Yeah, that's good. That's good.

56
00:03:23,199 --> 00:03:23,680
Speaker 3: That's good.

57
00:03:23,680 --> 00:03:25,960
Speaker 2: That's good. That means I said it wrong. Why don't

58
00:03:25,960 --> 00:03:28,919
you go ahead and introduce yourself and we'll dive into

59
00:03:28,960 --> 00:03:30,360
our topic here in a minute.

60
00:03:30,520 --> 00:03:35,000
Speaker 6: Okay. Yeah, So I'm a full stack developer. I'm currently

61
00:03:35,000 --> 00:03:40,599
working as a freelance I'm from Rosario, Argentina, and I'm

62
00:03:40,639 --> 00:03:46,000
currently living in Buenos Aires. And yeah, I've been writing

63
00:03:46,080 --> 00:03:50,800
a couple of articles around ngccess and Firebase, which I've

64
00:03:50,800 --> 00:03:54,319
also been working on for the last few years. And

65
00:03:54,759 --> 00:03:58,159
last year I wrote a plugging plugging with the help

66
00:03:58,919 --> 00:04:02,719
with the angi Exist team, applying that connects ng access

67
00:04:02,800 --> 00:04:07,520
and Firebase, and yeah, happy to be here. Yeah, hopefully

68
00:04:07,800 --> 00:04:10,039
this will help everybody who's listening.

69
00:04:10,360 --> 00:04:12,599
Speaker 2: All right, well, I'm going to start real basic for

70
00:04:12,960 --> 00:04:16,839
some of our newer listeners, newer to Angular and the ecosystem,

71
00:04:16,879 --> 00:04:18,800
and then we can just go as deep as we want.

72
00:04:19,199 --> 00:04:21,079
Do you want to just explain real quick what nng

73
00:04:21,199 --> 00:04:24,079
access is and what Firebase is and then we can

74
00:04:24,160 --> 00:04:25,279
just go for it.

75
00:04:25,399 --> 00:04:30,639
Speaker 6: Okay, yes, So first I'll start with Firebase, which is

76
00:04:30,879 --> 00:04:35,439
a back end. Yeah, it's a platform which helps you

77
00:04:35,839 --> 00:04:40,040
or provides you with mainly a database for you to

78
00:04:40,079 --> 00:04:44,680
build apps, but not only a database. It also provides

79
00:04:44,759 --> 00:04:52,800
you authorization, server less functions or yeah, ability, capability to

80
00:04:52,920 --> 00:04:58,079
run server less code, and it also has a lot

81
00:04:58,120 --> 00:05:01,680
of other tools that makes Yeah, it makes everything you

82
00:05:01,759 --> 00:05:05,120
need to build an app very easy and very accessible.

83
00:05:05,839 --> 00:05:09,560
So you can spin up an app really really simple

84
00:05:09,639 --> 00:05:13,480
and really quick with Firebase. Nd Axcess on their hand,

85
00:05:14,120 --> 00:05:19,439
it's a library state management library that it's within the

86
00:05:19,480 --> 00:05:25,079
Angler ecosystem. It is based on the redax pattern, so

87
00:05:25,120 --> 00:05:28,839
it's kind of similar to n GRX, but it's not

88
00:05:29,079 --> 00:05:33,879
like ANGI rex it has it's different and yeah, so

89
00:05:34,079 --> 00:05:39,079
it basically allows you to manage the state in your

90
00:05:39,120 --> 00:05:43,399
application in a more structure way. It allows you to

91
00:05:43,519 --> 00:05:48,959
organize how you handle the state with actions and stuff

92
00:05:49,000 --> 00:05:54,000
like that. And yeah, basically when you're starting, when you're

93
00:05:54,000 --> 00:05:57,480
building apps, you'll normally get to a point where when

94
00:05:57,519 --> 00:06:00,639
you've got going to need to use a state management

95
00:06:00,800 --> 00:06:04,720
library as you wrap growth and well, NGS is one

96
00:06:04,759 --> 00:06:08,959
of the options out there is the one that I prefer. Yeah,

97
00:06:09,319 --> 00:06:12,319
I don't know if that kind of gives an idea

98
00:06:13,120 --> 00:06:15,240
about purpison in jexcess.

99
00:06:15,839 --> 00:06:18,800
Speaker 5: Yeah, what I think, what what I got? I think

100
00:06:18,839 --> 00:06:22,199
it's for the everyone as well. It's a little new,

101
00:06:22,879 --> 00:06:25,680
newer in market, I guess, And it's kind of a

102
00:06:25,879 --> 00:06:31,079
similar concept as gid X as you tool, but it

103
00:06:31,319 --> 00:06:35,480
has what I'm just seeing here, it has some less components,

104
00:06:35,519 --> 00:06:38,000
so let's less to code.

105
00:06:38,759 --> 00:06:39,519
Speaker 3: That's a good thing.

106
00:06:40,839 --> 00:06:45,040
Speaker 6: Yeah, Yeah, one one of the differences, or I guess that, Yeah,

107
00:06:45,040 --> 00:06:48,800
the main difference between ngxs and and gi X is

108
00:06:48,839 --> 00:06:53,959
that it was built to keep simplicity, like with simplicity

109
00:06:54,519 --> 00:07:00,000
as the first thing in mind. So and also yeah,

110
00:07:00,040 --> 00:07:03,720
idea about the NGXY is that it was or it

111
00:07:03,839 --> 00:07:07,279
feels that it's similar to everything else that you do

112
00:07:07,360 --> 00:07:10,560
in Angular. So in Angular you have classes and components,

113
00:07:11,199 --> 00:07:15,279
and in NGXS you have your state which is also

114
00:07:15,319 --> 00:07:19,759
a class, and you decorated with a state decorator, and

115
00:07:20,720 --> 00:07:24,160
you have your actions, which are also functions that you

116
00:07:24,279 --> 00:07:29,000
decorate with the with an action decorator. And then within

117
00:07:29,120 --> 00:07:33,600
your state class you can inject other services the same

118
00:07:33,639 --> 00:07:37,759
way that you inject services in your components. So it's

119
00:07:37,800 --> 00:07:42,639
basically pretty. You feel that you're writing similar code to

120
00:07:43,199 --> 00:07:48,720
everything else you're writing your Angular applications. And the other

121
00:07:49,000 --> 00:07:52,920
main difference with ji X is that since you can

122
00:07:53,079 --> 00:07:57,600
have a sync functions as a first citizen of NNGXS,

123
00:07:58,120 --> 00:08:02,560
you don't need what in any direct arects they call effects,

124
00:08:02,959 --> 00:08:06,759
which are things that you have to connect like in

125
00:08:06,800 --> 00:08:10,199
a separate file or yeah, you have to configure it

126
00:08:10,360 --> 00:08:13,639
in when. When you have when you call an API

127
00:08:13,759 --> 00:08:17,040
and all that. So in JXS you can directly inject

128
00:08:17,240 --> 00:08:21,839
your API in a state class for example, and then

129
00:08:22,199 --> 00:08:26,480
create an action that it's actually a promise or unservable,

130
00:08:27,160 --> 00:08:31,519
so that means that it's a synchronous and the library

131
00:08:31,560 --> 00:08:35,120
will all handle that synchronous for you, so you don't

132
00:08:35,120 --> 00:08:38,480
have to worry to subs, subscribing and all that. So

133
00:08:38,600 --> 00:08:42,480
the livery will do that for you, and yeah, that

134
00:08:42,960 --> 00:08:46,240
for me, that that's that's something that Also it makes

135
00:08:46,240 --> 00:08:49,600
things easier because you can have all that in the

136
00:08:49,639 --> 00:08:53,759
same action, so it's easier to understand the code and

137
00:08:53,799 --> 00:08:54,200
all that.

138
00:08:54,919 --> 00:08:57,960
Speaker 4: So yeah, I think so, I think that's a very

139
00:08:58,000 --> 00:09:02,120
good comparison. And I'm very glad that we addressed the

140
00:09:02,120 --> 00:09:04,399
elephant in the room because I think I had one

141
00:09:04,440 --> 00:09:07,559
of those questions lined up as well, and it would

142
00:09:07,559 --> 00:09:10,480
be remiss if we didn't ask that question. But you

143
00:09:10,519 --> 00:09:14,320
also mentioned some very key differences there. But my question

144
00:09:14,399 --> 00:09:17,559
would be based on your experience and your humble opinion,

145
00:09:18,039 --> 00:09:20,919
and I presume you've used your ex as well, even

146
00:09:20,960 --> 00:09:25,039
though you're a core member of the NJXS team. Would

147
00:09:25,120 --> 00:09:29,600
you what would be a good use case for using

148
00:09:30,200 --> 00:09:32,480
this tech that you you wrote an article about so

149
00:09:32,840 --> 00:09:35,120
using Firebase and NJXS.

150
00:09:35,720 --> 00:09:40,399
Speaker 6: So yeah, so basically, this this plugging came out, came

151
00:09:40,440 --> 00:09:43,440
out as an idea for me because I was I

152
00:09:43,480 --> 00:09:47,799
started working on a project and we started working with

153
00:09:48,080 --> 00:09:52,440
firebase right as a back end, which also Firebase another

154
00:09:52,679 --> 00:09:57,480
cool feature is that allows you to build reactive apps

155
00:09:57,600 --> 00:10:02,679
right since fire Base lets you connect with the query

156
00:10:02,759 --> 00:10:06,799
to the back end database. Every change that occurs in

157
00:10:06,840 --> 00:10:11,159
the database is pushed to their clients that are connected,

158
00:10:11,879 --> 00:10:15,399
without clients needing to pull for every time they want

159
00:10:15,879 --> 00:10:19,080
new the new the latest data let's say, or the

160
00:10:19,159 --> 00:10:24,320
latest value. So all the all the new new changes

161
00:10:24,440 --> 00:10:28,159
or the new values that happen in the database are

162
00:10:28,440 --> 00:10:31,200
pushed to the to the clients that are connected to them.

163
00:10:31,519 --> 00:10:36,919
So I started working on a project with Firebase. I

164
00:10:36,960 --> 00:10:42,559
initially started using just the Firebase library, which is a

165
00:10:42,639 --> 00:10:46,559
service that you can inject in your components. And then

166
00:10:47,000 --> 00:10:50,159
as my app grew, I had to start doing something

167
00:10:50,200 --> 00:10:53,919
with the about the state in the applicacy is becoming

168
00:10:54,240 --> 00:10:58,799
to conerson to understand how everything was connected and all that.

169
00:10:59,000 --> 00:11:02,480
And at that point I made a research on which

170
00:11:02,519 --> 00:11:07,679
were the different libraries that I could use to manage

171
00:11:07,879 --> 00:11:13,240
state and so the three that I liked more ng

172
00:11:13,639 --> 00:11:18,240
X which was the most popular, one, NGXS which actually

173
00:11:18,480 --> 00:11:21,080
a friend of mine told me about that one, and

174
00:11:21,120 --> 00:11:24,159
then the album was a Kita. So what I did

175
00:11:24,279 --> 00:11:28,399
is I created the same feature with the three libraries,

176
00:11:28,879 --> 00:11:33,639
and I ended up deciding for NGXS because that was

177
00:11:33,759 --> 00:11:37,279
the one that I liked the most, and that I

178
00:11:37,440 --> 00:11:40,679
felt that was the simpler and the one that would

179
00:11:40,759 --> 00:11:45,000
help him better in my project. I mean if right

180
00:11:45,000 --> 00:11:49,279
now or actually after that, I wrote the plugging which

181
00:11:49,440 --> 00:11:54,840
also improved further or make things easier even easier between

182
00:11:55,120 --> 00:11:59,440
ngxcess and Firebase. I don't know if there's something such

183
00:11:59,480 --> 00:12:03,480
a connect between n g r X and Firebase. I

184
00:12:03,519 --> 00:12:08,000
honestly didn't make a research on that, but definitely if

185
00:12:08,159 --> 00:12:12,879
if your angler application has Firebase, if you want me,

186
00:12:13,000 --> 00:12:16,519
if you need to implement or to add some state

187
00:12:16,600 --> 00:12:20,639
management in your application, I would say give this plug

188
00:12:20,679 --> 00:12:24,840
in a try, because definitely you're going to feel that

189
00:12:25,039 --> 00:12:29,559
things get easier for you. Yeah, you have, you have

190
00:12:29,639 --> 00:12:32,960
some you have. You will have a learning curve until

191
00:12:33,039 --> 00:12:37,360
you figure out because once once you start using a

192
00:12:37,360 --> 00:12:40,600
state management lebrary like ng Access, but most of them

193
00:12:40,639 --> 00:12:45,600
are similar in that way, you start dispatching actions to

194
00:12:45,720 --> 00:12:50,159
get things done. You modify the state on the in

195
00:12:50,200 --> 00:12:52,919
the in the state class or in the reducers in

196
00:12:53,000 --> 00:12:56,720
case of j X, and then you select slices of

197
00:12:57,320 --> 00:12:59,840
state right that that is the one that you present

198
00:13:00,519 --> 00:13:05,120
to your components or that you're using your components. So

199
00:13:05,720 --> 00:13:08,519
once you have once you learn that. The thing about

200
00:13:08,519 --> 00:13:12,679
this plan is that makes everything feel in the same

201
00:13:12,679 --> 00:13:15,240
way or work in the same way that you would

202
00:13:15,320 --> 00:13:20,600
normally use your NG access state. So you can use

203
00:13:20,919 --> 00:13:25,120
or you can combine data from different APIs or even

204
00:13:25,440 --> 00:13:29,320
the state that you have in your app with the

205
00:13:29,320 --> 00:13:33,080
one that is coming from Firebase, and merging that data

206
00:13:33,120 --> 00:13:37,120
is super easy because everything is in NG access, so

207
00:13:37,159 --> 00:13:40,799
you can combine that data very easily. And yeah, that's

208
00:13:40,960 --> 00:13:44,720
kind of the main the main advantage of using this planning.

209
00:13:45,159 --> 00:13:47,879
Speaker 2: So I guess what I'm trying to figure out is

210
00:13:48,440 --> 00:13:50,960
and I apologize if you cover this in your article

211
00:13:51,000 --> 00:13:53,320
and I just missed it, or if it's covered in

212
00:13:53,360 --> 00:13:57,399
the documentation for your plugin. But so if I have

213
00:13:57,480 --> 00:13:59,240
data that I just want to live in my app,

214
00:13:59,320 --> 00:14:01,679
and I have data that I want to live in Firebase,

215
00:14:02,039 --> 00:14:03,720
is there a way to differentiate that and how does

216
00:14:03,759 --> 00:14:04,159
that work?

217
00:14:04,399 --> 00:14:09,159
Speaker 6: So basically, when you use Firebase, maybe maybe I should

218
00:14:09,200 --> 00:14:11,440
have started I should have started there. So when you

219
00:14:11,519 --> 00:14:17,000
use Firebase, you need the service that the angler fire

220
00:14:17,039 --> 00:14:22,200
library has or provides, and with that you connect to

221
00:14:22,320 --> 00:14:25,799
the database. So when you can create a connection to

222
00:14:25,840 --> 00:14:31,200
the database is when Firebase starts sending your data with

223
00:14:31,279 --> 00:14:34,559
the from the party that you you wrote, right, and

224
00:14:34,600 --> 00:14:39,000
then you can make updates or create new documents and

225
00:14:39,080 --> 00:14:42,080
that will be of course that that will be sync

226
00:14:42,120 --> 00:14:46,840
into the back end database. So essentially, if you're making

227
00:14:46,879 --> 00:14:49,960
the query, you want that data to live in your app.

228
00:14:50,200 --> 00:14:52,639
If you want that data to be in your app,

229
00:14:53,639 --> 00:14:58,240
it's and you're using estate management, it's better to keep

230
00:14:58,279 --> 00:15:01,360
in your state management lab or along with all the

231
00:15:01,440 --> 00:15:05,919
other app data, right because most most of the times

232
00:15:05,919 --> 00:15:09,240
are going to need to make connections or merch, make

233
00:15:09,440 --> 00:15:13,559
merches between those that data. So let's say you have

234
00:15:13,600 --> 00:15:16,960
a form or you have I don't know, some some

235
00:15:17,200 --> 00:15:20,200
UI data something like that you're keeping in your state

236
00:15:20,320 --> 00:15:24,279
in any access, and then you bring data from Firebase

237
00:15:24,759 --> 00:15:27,240
for example, for example a list of users or whatever.

238
00:15:27,759 --> 00:15:30,080
Let's say you have a filter and the list of users.

239
00:15:30,159 --> 00:15:34,840
So filtering that it's super easy because you have all

240
00:15:34,879 --> 00:15:41,279
the data in ang access and you can then make

241
00:15:41,320 --> 00:15:44,240
the filter with in the same data. Said, you don't

242
00:15:44,240 --> 00:15:49,679
have to make complicated connections between the Angular fire service

243
00:15:50,120 --> 00:15:53,120
and the the data that you have in your store,

244
00:15:53,799 --> 00:15:57,000
because I mean you can do that. You can do that,

245
00:15:57,679 --> 00:16:01,480
but it's more complicated. You have to are using a

246
00:16:01,519 --> 00:16:05,440
lot of r rx J. Yes, operators, you have to

247
00:16:05,799 --> 00:16:10,320
start doing a lot of other things that, well, it's

248
00:16:10,879 --> 00:16:12,200
more complicated, I guess.

249
00:16:12,519 --> 00:16:14,759
Speaker 2: Yeah. I think you answered my question when you said

250
00:16:14,799 --> 00:16:17,200
that you first set things up with any other fire

251
00:16:17,320 --> 00:16:19,919
and then use this plug in to kind of connect

252
00:16:20,440 --> 00:16:23,120
and you pull everything into n G access and then

253
00:16:23,200 --> 00:16:25,519
n g axcess just looks at it all as data.

254
00:16:25,840 --> 00:16:27,240
Speaker 6: Right, exactly exactly.

255
00:16:27,279 --> 00:16:30,639
Speaker 2: That makes sense to me that that seems simpler too perfect.

256
00:16:31,000 --> 00:16:35,080
Speaker 6: Yeah, yeah, so basically what the plugging does and yeah,

257
00:16:35,120 --> 00:16:38,279
following the same concept on how you use fire Base,

258
00:16:38,639 --> 00:16:42,200
if you don't use if you don't use ngxcess. So

259
00:16:42,679 --> 00:16:46,799
you have a query, So what what this planning does

260
00:16:46,879 --> 00:16:51,120
is fits that query into the n G access model.

261
00:16:51,360 --> 00:16:55,759
So on on ng access, in order to do something,

262
00:16:55,879 --> 00:16:59,320
you have to dispatch an action, right, So what what

263
00:16:59,440 --> 00:17:02,080
you do with this plan is that you connect an

264
00:17:02,120 --> 00:17:06,880
action with a query and the results of that query,

265
00:17:07,759 --> 00:17:11,640
you you connect those with your store the state right,

266
00:17:12,200 --> 00:17:16,200
So basically what will happen is that you will configure

267
00:17:16,640 --> 00:17:21,400
in your state class that when you dispatch a next action,

268
00:17:22,279 --> 00:17:25,240
a action whatever, or let's say we call it load

269
00:17:25,359 --> 00:17:29,640
users that action when you start that action, you're going

270
00:17:29,680 --> 00:17:34,359
to query the collection users from Firebase right, and with

271
00:17:34,640 --> 00:17:38,720
that query starts a meeting results. And we have to

272
00:17:38,759 --> 00:17:43,200
remember that those results are going to be a stream,

273
00:17:43,319 --> 00:17:46,039
so it's not a one only thing. It's going to

274
00:17:46,079 --> 00:17:50,400
be constantly a meeting as changes occur in the database.

275
00:17:50,839 --> 00:17:54,599
Every time a new emission happens, you're going to grab

276
00:17:54,640 --> 00:17:58,880
those results and insert them in your in your store.

277
00:17:59,160 --> 00:18:01,079
The planning is going to do that for you, so

278
00:18:01,119 --> 00:18:04,480
you don't have to worry. So that's that's kind of

279
00:18:04,519 --> 00:18:07,559
the magic that happens is you don't have to worry

280
00:18:07,559 --> 00:18:11,920
about updating the state every time. You just configure the

281
00:18:12,440 --> 00:18:16,039
which action is going to start the querry and how

282
00:18:16,039 --> 00:18:21,599
you're going to update your store with the results. Everything

283
00:18:21,680 --> 00:18:24,279
else is handled by by the by the library.

284
00:18:24,599 --> 00:18:26,000
Speaker 3: That's very cool.

285
00:18:27,200 --> 00:18:29,240
Speaker 4: Yeah, I think there was one thing that I picked

286
00:18:29,359 --> 00:18:32,240
out of what you mentioned. Now, well several things, but

287
00:18:32,319 --> 00:18:35,039
the one that really stuck out for me was you

288
00:18:35,160 --> 00:18:37,799
mentioned that just like just like we have in an

289
00:18:37,960 --> 00:18:40,400
j r X, we've got the effects or the concept

290
00:18:40,400 --> 00:18:44,799
of effects, and you said this is not necessary in ANGIXS,

291
00:18:45,039 --> 00:18:48,400
And I'm just wondering, how do you ensure that, First

292
00:18:48,400 --> 00:18:51,519
of all, where do you handle your ACYNC code and

293
00:18:51,559 --> 00:18:54,480
your side effects, and how do you ensure that your

294
00:18:54,559 --> 00:18:56,920
stay remains your store remains immutable?

295
00:18:57,400 --> 00:19:03,720
Speaker 6: Right? So well, when and energy exist, actions can can

296
00:19:03,759 --> 00:19:07,240
be asynchronous, right. So that means or the way that

297
00:19:07,359 --> 00:19:10,799
you do that is that you from that action you

298
00:19:10,880 --> 00:19:14,920
return either a promise or observable. So the state is

299
00:19:14,960 --> 00:19:18,759
going to be immutable because when you write the action,

300
00:19:19,359 --> 00:19:23,680
there's a context that gets passed to that action, which

301
00:19:23,720 --> 00:19:26,480
is the one that you used to patch the state

302
00:19:27,480 --> 00:19:30,319
or to make modifications to the state, right, and those

303
00:19:30,400 --> 00:19:33,960
changes are going to be immutable. And that's that is

304
00:19:33,960 --> 00:19:38,279
something that that context that gets passed or injected to

305
00:19:38,400 --> 00:19:41,799
you in the action ensure I don't know if that

306
00:19:42,400 --> 00:19:47,440
answers your question, but basically the state is immutable. And

307
00:19:48,039 --> 00:19:53,160
the asynchronous thing about NGXS is just that if we

308
00:19:53,200 --> 00:19:57,039
compare with n gi xis that it includes the effect

309
00:19:57,119 --> 00:20:00,000
in the same action. We can maybe we can image

310
00:20:00,039 --> 00:20:03,160
you need like that because you can have an observable

311
00:20:03,240 --> 00:20:06,119
or a promise and the library is going to handle

312
00:20:06,160 --> 00:20:10,359
that for you. So it's going to wait or to

313
00:20:10,599 --> 00:20:14,640
subscribe to an observable or is going to do then

314
00:20:14,880 --> 00:20:19,079
to a promise let's say and run the next the

315
00:20:19,079 --> 00:20:23,839
subsequent code for you. But the way that you patch

316
00:20:24,000 --> 00:20:27,440
the state or that you make modifications, it's always immutable.

317
00:20:28,079 --> 00:20:29,440
Speaker 3: Yeah, that's that's very neat.

318
00:20:31,480 --> 00:20:36,960
Speaker 5: Yeah yeah, yeah, yeah, go ahead, Sorry, no, no.

319
00:20:37,160 --> 00:20:41,319
Speaker 6: So the other thing about having the bit or having

320
00:20:41,359 --> 00:20:47,119
the future of as synchronous actions is that actions have

321
00:20:47,400 --> 00:20:52,559
a life cycle. So actions get dispatched and actions then

322
00:20:52,680 --> 00:20:56,599
are completed or canceled, and they can be completed with

323
00:20:56,680 --> 00:21:02,119
an error or or successful. So an error can occur

324
00:21:02,200 --> 00:21:05,920
within the action. So you have like different events that

325
00:21:06,000 --> 00:21:09,359
will occur during the action life cycle, and you can

326
00:21:09,400 --> 00:21:14,240
have different states have the action can finish. And that's

327
00:21:14,319 --> 00:21:18,920
also very very interesting because with that you can then

328
00:21:19,680 --> 00:21:22,319
know when an action has started and when an action

329
00:21:22,480 --> 00:21:27,279
has finished, and that's super helpful. Actually, there's another plugging

330
00:21:27,960 --> 00:21:32,400
on ngxaid that it's also very very nice that you

331
00:21:32,519 --> 00:21:37,480
can subscribe to know when an action is being executed.

332
00:21:37,839 --> 00:21:41,160
So let's this is the famous or the yeah, the

333
00:21:41,960 --> 00:21:47,400
very common the loading load the loading feature right rather spinner,

334
00:21:47,880 --> 00:21:51,480
So basically you always want to put a loading or

335
00:21:52,000 --> 00:21:55,640
spinner when when an action or something is going on. Right,

336
00:21:56,160 --> 00:22:01,240
So with that life cycle, NGXA makes it super easy

337
00:22:01,359 --> 00:22:03,759
for you because you can track when the action is

338
00:22:03,799 --> 00:22:07,720
dispatched and start spinning, and when the action has completed,

339
00:22:07,839 --> 00:22:11,119
you stop, so you don't Angie access will handle that

340
00:22:11,720 --> 00:22:15,559
state for you. So you just query when the action

341
00:22:15,720 --> 00:22:19,880
has started and when it has ended. And I think

342
00:22:19,880 --> 00:22:21,720
that in injuries you kind oft do that. You have

343
00:22:21,799 --> 00:22:26,240
to manually like start a loader before an action is dispatched,

344
00:22:26,440 --> 00:22:29,759
and so you have to do another thing right in

345
00:22:29,839 --> 00:22:31,319
order to do that.

346
00:22:31,960 --> 00:22:35,519
Speaker 4: Yeah, I'm actually giggling because, yeah, that's exactly. I remember

347
00:22:35,640 --> 00:22:38,119
my own experience with my team a couple of years back.

348
00:22:38,200 --> 00:22:41,240
We were using an English shop and we use NNGRX

349
00:22:42,119 --> 00:22:45,079
and exactly the scenario that you've just described. Now, yeah,

350
00:22:45,119 --> 00:22:48,440
you had to jump through certain hooks to manage that

351
00:22:48,480 --> 00:22:50,759
what appears to be a very.

352
00:22:50,599 --> 00:22:52,400
Speaker 3: Straightforward and simple scenario.

353
00:22:52,400 --> 00:22:54,759
Speaker 4: But yeah, it's very interesting to hear that that is

354
00:22:55,640 --> 00:22:57,880
manage internality within the library.

355
00:22:57,960 --> 00:23:00,519
Speaker 3: It's very cool. Yeah, I have a.

356
00:23:00,519 --> 00:23:03,920
Speaker 5: Question, like, like, I think you have just explained that one,

357
00:23:03,960 --> 00:23:07,440
so I just want to clarify what I got is correct.

358
00:23:07,720 --> 00:23:12,039
So we basically make make APA calls inside our state

359
00:23:12,440 --> 00:23:16,480
once accident is dispatched, and update the state itself inside

360
00:23:16,480 --> 00:23:19,960
the state. Like in the case of ng X, we

361
00:23:20,119 --> 00:23:24,400
use a reducer and sorry effects and reducer. So here

362
00:23:24,440 --> 00:23:27,279
everything will happen inside the state. Is that correct?

363
00:23:27,599 --> 00:23:31,480
Speaker 6: Exactly? All the gode lives in that state class, so

364
00:23:31,599 --> 00:23:35,400
you can have like the comparison to the reducer in

365
00:23:36,000 --> 00:23:39,960
energy excess. It's an action and within the action you

366
00:23:40,039 --> 00:23:44,920
can call an API for example far Base or whatever

367
00:23:44,960 --> 00:23:48,480
a PA you want to call, and then you can

368
00:23:48,880 --> 00:23:53,279
patch or make the modification to the state. So you

369
00:23:53,319 --> 00:23:57,599
have both things in the same like, yeah, it's called

370
00:23:57,599 --> 00:23:59,319
the action the same code blog.

371
00:23:59,519 --> 00:24:02,200
Speaker 3: Let's say, yeah, so I have one more question.

372
00:24:02,759 --> 00:24:06,039
Speaker 5: So if you check in engie erics, so you store

373
00:24:06,319 --> 00:24:10,000
it mapped with the reducer to change the state of

374
00:24:10,119 --> 00:24:13,559
your of your application. Like suppose I have two three

375
00:24:14,000 --> 00:24:19,680
one user model and one supports some items. Then I

376
00:24:19,680 --> 00:24:22,319
if I want to uproducer, I will use the user

377
00:24:22,400 --> 00:24:26,319
reducer and unto updateight term, I will update use the

378
00:24:26,480 --> 00:24:27,279
item reducer.

379
00:24:28,079 --> 00:24:30,200
Speaker 3: But how it maps here, that will.

380
00:24:30,000 --> 00:24:34,799
Speaker 6: Work right, So when you want to change something, you

381
00:24:35,279 --> 00:24:39,720
create an action. The action can receive a payload. So

382
00:24:39,799 --> 00:24:43,599
let's say yeah, if it's you can dispatch. When you

383
00:24:43,640 --> 00:24:46,599
dispatch an action, you can pass a parameter with values

384
00:24:47,359 --> 00:24:50,920
and you receive that in the action block action code

385
00:24:50,960 --> 00:24:57,240
blog and so as I mentioned earlier, so there's a context.

386
00:24:57,799 --> 00:24:59,400
So I think in you jer x, you have to

387
00:24:59,480 --> 00:25:03,319
return the new value, right, you just returned in the

388
00:25:03,400 --> 00:25:07,160
reducer you read. So in anti access it's a bit

389
00:25:07,160 --> 00:25:12,440
more imperative. So you get a context injected in the action.

390
00:25:12,680 --> 00:25:16,079
It comes as a parameter in the action. And then

391
00:25:16,359 --> 00:25:19,240
with that context, you have a method that is called

392
00:25:19,359 --> 00:25:22,640
patch state, and that patch state is the one that

393
00:25:22,680 --> 00:25:25,960
you have to pass the new value that you want

394
00:25:26,079 --> 00:25:30,440
the state to have so you can perform whatever operation

395
00:25:30,559 --> 00:25:34,720
you need or and when when that patch state is executed,

396
00:25:34,920 --> 00:25:39,480
the store gets updated in a in the middle way,

397
00:25:39,880 --> 00:25:43,720
and all these selectors that depend on that data will

398
00:25:44,240 --> 00:25:48,480
push the the new values to all the components that

399
00:25:48,680 --> 00:25:51,279
are connected to that selector.

400
00:25:51,359 --> 00:25:55,119
Speaker 5: Right, So the selector is basically seen as Watson enngietics.

401
00:25:55,839 --> 00:25:57,559
Speaker 6: Yes, yes, it's the sane.

402
00:25:57,799 --> 00:25:59,920
Speaker 2: So I have to ask this because I have the

403
00:26:00,160 --> 00:26:03,559
guy that touches like every line of code that I write,

404
00:26:03,680 --> 00:26:06,880
and he's a complete idiot, and his name is Chuck

405
00:26:06,960 --> 00:26:10,839
from yesterday, all right, And the only way that I

406
00:26:10,839 --> 00:26:14,200
can keep this guy in line is to write tests. Okay,

407
00:26:14,559 --> 00:26:17,079
I mean chuck from today, he's fine, but Chuck from yesterday.

408
00:26:17,119 --> 00:26:20,640
The guy's more on okay, and he screws stuff up,

409
00:26:20,640 --> 00:26:22,920
and I find his mistakes in the code that I write, right,

410
00:26:22,920 --> 00:26:24,279
because I have to go back and I have to

411
00:26:24,279 --> 00:26:27,400
fix them. And so, but if I write tests, then

412
00:26:27,559 --> 00:26:31,119
a lot of times I can avoid writing some of

413
00:26:31,160 --> 00:26:33,400
these bugs in my code. Not that I ever write

414
00:26:33,400 --> 00:26:36,319
bugs in my code, but how do I test this stuff? Right?

415
00:26:36,720 --> 00:26:39,279
How do I make sure that I'm not writing bugs

416
00:26:39,279 --> 00:26:42,759
in my in my in my stuff right?

417
00:26:43,519 --> 00:26:48,359
Speaker 6: So, and she exists, I mean for testing the actions

418
00:26:48,359 --> 00:26:51,400
and all that. There's so if you go to the

419
00:26:51,480 --> 00:26:56,240
dogs there there is some documentation on how to make

420
00:26:56,279 --> 00:27:02,559
tests with Firebase the plugging. So you're basically you will

421
00:27:02,599 --> 00:27:06,519
have to mock the query right, because what you're doing

422
00:27:06,680 --> 00:27:11,000
is that the library is connecting the query with an action.

423
00:27:12,079 --> 00:27:16,240
So what you have to mock is the results that

424
00:27:16,319 --> 00:27:21,799
the query is going to admit, and how the given

425
00:27:21,880 --> 00:27:27,359
that the store is going to get changes updated or

426
00:27:27,640 --> 00:27:31,240
inserted in the store. So that's kind of what you

427
00:27:31,279 --> 00:27:34,519
would want to test. How the mock the results of

428
00:27:34,559 --> 00:27:36,960
the query that are going to get admitted and what

429
00:27:37,039 --> 00:27:38,000
will happen after that?

430
00:27:38,680 --> 00:27:39,799
Speaker 2: Right the thing?

431
00:27:40,079 --> 00:27:44,599
Speaker 6: So yeah, honestly, there I think there are a lot

432
00:27:44,599 --> 00:27:49,839
of libraries to mock obserbles. You can even create a

433
00:27:49,920 --> 00:27:53,119
behavior subject for example, and use that as the mock,

434
00:27:53,559 --> 00:27:57,200
which is what I do sometimes. If I have to

435
00:27:57,240 --> 00:28:01,160
be completely honest, I mostly use or I try to

436
00:28:01,240 --> 00:28:06,119
use more Cypress to make tests sometimes not a lot

437
00:28:06,119 --> 00:28:09,559
of not a lot of unit tests. And so one

438
00:28:09,599 --> 00:28:13,519
of the things about using or the way that I

439
00:28:13,680 --> 00:28:17,559
like to use this plugging and that I try to

440
00:28:17,839 --> 00:28:21,319
keep the code in my applications, even though sometimes it's

441
00:28:21,400 --> 00:28:24,799
not very easy, is to try to keep it as

442
00:28:24,839 --> 00:28:30,759
simple as possible, right, so, because that is less prone

443
00:28:31,000 --> 00:28:37,039
and it also it's more maintainable. So this library helps

444
00:28:37,039 --> 00:28:41,119
you with that. So and the way that you should

445
00:28:41,559 --> 00:28:45,400
or that I try to use this to try to

446
00:28:45,960 --> 00:28:49,880
be the less complicated as possible. I mean, the common

447
00:28:50,119 --> 00:28:52,480
the most common operations that you would need to do

448
00:28:52,519 --> 00:28:56,839
in your application is bring a list of items from

449
00:28:56,880 --> 00:29:01,279
the database or a specific items from the database. And

450
00:29:02,079 --> 00:29:06,680
so basically your state is going to typically typically look

451
00:29:06,799 --> 00:29:11,119
like have a couple of a couple of connections, So

452
00:29:11,240 --> 00:29:14,519
want to get a list or all of the items

453
00:29:14,519 --> 00:29:18,559
and want to get a specific item, right, and those

454
00:29:19,160 --> 00:29:22,839
the result is going to be stored in that state

455
00:29:23,319 --> 00:29:26,119
and that state class let's call it users for example,

456
00:29:26,160 --> 00:29:28,039
want to get all the users, want to get a

457
00:29:28,079 --> 00:29:31,160
specific user, and they're all going to live in that

458
00:29:31,240 --> 00:29:34,359
state as an array, right, and then you have the

459
00:29:34,720 --> 00:29:40,039
selectors to get active users, to get users that have

460
00:29:40,160 --> 00:29:45,559
signed in last day. And so yeah, that's when I

461
00:29:45,720 --> 00:29:50,839
try to keep the state or yeah, how to write

462
00:29:51,359 --> 00:29:54,319
the code most of the times, right, of course, there

463
00:29:54,319 --> 00:29:58,519
are sometimes that things get complicated because it is what

464
00:29:58,599 --> 00:30:02,440
it is, right, and for that situations you you probably

465
00:30:02,480 --> 00:30:07,279
need to make some tests. Also, one cool feature about

466
00:30:07,440 --> 00:30:11,119
and you ex says is that the selectors are written

467
00:30:11,200 --> 00:30:16,000
as functions, as pure functions, so it's very easy to

468
00:30:16,000 --> 00:30:19,200
to create tests around the selectors. So this is different

469
00:30:19,279 --> 00:30:22,640
from from the library, right, but you can you can

470
00:30:22,839 --> 00:30:27,680
easily inject, so you basically provide the function the set

471
00:30:27,720 --> 00:30:30,480
of results that is going to be your mock, and

472
00:30:30,519 --> 00:30:35,200
then you you expect something and you just write execute

473
00:30:35,200 --> 00:30:39,759
that function. So it's it's super easy to test selectors

474
00:30:39,799 --> 00:30:43,720
in that way. Yeah, so I hope hopefully that that helps.

475
00:30:44,839 --> 00:30:48,119
Speaker 2: No, it makes sense, and I mean it was mostly

476
00:30:48,160 --> 00:30:50,599
the angular part of it, or not the angular part

477
00:30:50,599 --> 00:30:53,039
of it. I was hoping to mark the angular part

478
00:30:53,039 --> 00:30:55,920
of it. Yeah, that's genius check things. No, it was

479
00:30:55,960 --> 00:30:57,519
the fire based part of it that I was trying

480
00:30:57,559 --> 00:30:59,279
to figure out. Yeah, if there was a way to

481
00:30:59,319 --> 00:31:03,440
mock that because I can kind of see Yeah, I'm like,

482
00:31:04,519 --> 00:31:07,440
can I reliably get the right data back and have

483
00:31:07,559 --> 00:31:10,640
it come into my state the right way? And and yeah,

484
00:31:10,640 --> 00:31:12,839
the more I think about that, the more Cyprus kind

485
00:31:12,880 --> 00:31:15,279
of feels like the right level to be testing that

486
00:31:15,359 --> 00:31:18,319
at because essentially then yeah, what I want to know

487
00:31:18,599 --> 00:31:23,039
is maybe at the component level, if I if I have,

488
00:31:23,319 --> 00:31:26,440
if I trigger some kind of action, yeah, is it

489
00:31:26,480 --> 00:31:30,839
going to follow through the system make the query on

490
00:31:30,880 --> 00:31:32,319
the back end, But I don't want it to make

491
00:31:32,319 --> 00:31:34,200
a query because I don't want to go to an in,

492
00:31:34,359 --> 00:31:37,480
run out to Google, and then is it going to update?

493
00:31:37,640 --> 00:31:39,240
Is it going to make the proper updates on the

494
00:31:39,279 --> 00:31:41,440
other end, right, depending on what data gets back? So

495
00:31:41,480 --> 00:31:43,119
I just need to mock that data out, So that

496
00:31:43,160 --> 00:31:43,680
makes sense.

497
00:31:43,960 --> 00:31:48,359
Speaker 4: Yeah, I'm I've got a very So I'm I suppose

498
00:31:48,400 --> 00:31:53,000
there's someone out there listening to this podcast and wondering, like,

499
00:31:53,079 --> 00:31:57,160
whoa Okay, JXS sounds super cool. You know, they can't

500
00:31:57,200 --> 00:32:00,960
wait to jump right in and get thoughted. I guess

501
00:32:01,039 --> 00:32:04,519
my question would be, like, what other common pitfalls people

502
00:32:04,599 --> 00:32:09,400
fall into when starting out with NJXS and what advice

503
00:32:09,400 --> 00:32:10,960
would you give them to avoid them?

504
00:32:11,400 --> 00:32:17,039
Speaker 6: Right? So, yeah, that's that's an interesting question. So my experience,

505
00:32:17,160 --> 00:32:20,400
I think, or yeah, my experience and from what I've

506
00:32:20,440 --> 00:32:25,119
seen in the slack community that JXS has, which by

507
00:32:25,119 --> 00:32:29,880
the way, is very active, and yeah, people ask about

508
00:32:29,880 --> 00:32:34,279
for best practices and all that. Yeah, some of us reply,

509
00:32:34,480 --> 00:32:38,920
or even people that are there, so that's that's very cool.

510
00:32:39,200 --> 00:32:43,279
So I think that basically, or what most of it

511
00:32:43,400 --> 00:32:49,119
happens is that you start writing your your JS code

512
00:32:49,240 --> 00:32:52,119
or your state code with a lot of how to

513
00:32:52,240 --> 00:32:55,119
say it, it's it's I don't want to say complicated,

514
00:32:55,119 --> 00:32:59,119
but because it's like you start doing it very specific

515
00:32:59,440 --> 00:33:03,160
to your to your use case, and over time you

516
00:33:03,440 --> 00:33:07,799
start noticing that you have to keep your state as

517
00:33:07,880 --> 00:33:12,279
generic as possible. So like in the in your life cycle,

518
00:33:12,720 --> 00:33:16,839
you would probably start because maybe your app requires in

519
00:33:16,920 --> 00:33:21,160
some place that you display a product let's say a

520
00:33:21,160 --> 00:33:25,200
product detail, right, and so with that in mind, you

521
00:33:25,359 --> 00:33:30,400
probably create some state for just that product and stuff

522
00:33:30,440 --> 00:33:33,240
like that, right, and then you then quickly realize that

523
00:33:33,480 --> 00:33:37,960
you're going to have to keep the product available for

524
00:33:38,119 --> 00:33:41,599
other places, for other pages, and you're most likely going

525
00:33:41,640 --> 00:33:44,160
to have to load a lot of products. Right that

526
00:33:44,160 --> 00:33:46,680
That's kind of what happened to me and what I've

527
00:33:46,759 --> 00:33:51,359
seen in the in the community asking, right. So with

528
00:33:51,440 --> 00:33:54,680
that in mind, you would probably start your designing your

529
00:33:54,720 --> 00:33:59,279
state to keep one product living in your application, right,

530
00:33:59,720 --> 00:34:02,960
and then you realize that you have it's better to

531
00:34:03,039 --> 00:34:07,920
keep it as an array and create selectors that reflect

532
00:34:07,960 --> 00:34:09,960
what each component needs.

533
00:34:10,360 --> 00:34:11,119
Speaker 3: Right.

534
00:34:11,199 --> 00:34:14,679
Speaker 6: So, so basically I would say that that's one of

535
00:34:14,840 --> 00:34:19,159
one of the main things. It's not designing your state

536
00:34:19,920 --> 00:34:23,440
with the needs of your components. So let the selectors

537
00:34:23,480 --> 00:34:26,760
do that for you because they are super flexible and

538
00:34:27,079 --> 00:34:29,920
very easy to change. And try to keep your state

539
00:34:30,719 --> 00:34:35,119
as generic and as raw as possible, so meaning if

540
00:34:35,159 --> 00:34:37,719
you're going to if you have products, or if you

541
00:34:37,760 --> 00:34:41,920
have users, or if you have I don't know, yeah, invoices, whatever,

542
00:34:42,360 --> 00:34:45,920
So try to keep them as rass possible in the state,

543
00:34:46,440 --> 00:34:50,639
and then let the selectors make the specific give the

544
00:34:50,679 --> 00:34:53,960
specificity for each component that you need in your application.

545
00:34:54,400 --> 00:34:57,519
So that's yeah, I would say that that's one of

546
00:34:57,119 --> 00:35:00,400
the main things. The other main thing is is as

547
00:35:00,400 --> 00:35:05,360
synchronous actions. So I think that sometimes because people is

548
00:35:05,679 --> 00:35:10,039
used to use n g X, they usually follow the

549
00:35:10,079 --> 00:35:14,199
pattern of having a load action and the success or

550
00:35:14,239 --> 00:35:19,719
fail action of that load, and that in nj X

551
00:35:19,800 --> 00:35:23,400
that is glued together with the effects, right, So in

552
00:35:23,599 --> 00:35:25,960
NGXS you don't need that. You can just have the

553
00:35:26,039 --> 00:35:30,000
load and what the load finishes. You will get the

554
00:35:30,039 --> 00:35:33,639
result in the same block of code and make something

555
00:35:34,039 --> 00:35:36,599
or it would fail in the same block of code

556
00:35:36,639 --> 00:35:39,519
and you can do something about it. So the patterns

557
00:35:39,559 --> 00:35:43,440
about that, it's also something that frequently I see it

558
00:35:44,039 --> 00:35:47,719
in that people that people ask ask a lot about.

559
00:35:48,320 --> 00:35:52,400
So in my experience, from what we most mostly recommend

560
00:35:52,519 --> 00:35:55,719
is that you should in jexcess, you should go out

561
00:35:55,920 --> 00:35:58,920
from the or not use that pattern of the three

562
00:35:58,960 --> 00:36:03,440
actions for loading something. You would prefer just keeping a

563
00:36:03,480 --> 00:36:08,119
load action and keep everything within that block of code,

564
00:36:08,280 --> 00:36:10,920
which also makes a lot more sense when you need

565
00:36:10,960 --> 00:36:13,639
to start fixing things or you need to change because

566
00:36:13,760 --> 00:36:15,960
everything is going to live in a single.

567
00:36:15,719 --> 00:36:18,880
Speaker 4: Place, right, Yeah, that makes a whole lot of sense.

568
00:36:19,199 --> 00:36:22,079
Keep your states as generic as possible. And use your

569
00:36:22,079 --> 00:36:25,199
selectors to you know, to get a slice of the

570
00:36:25,280 --> 00:36:28,639
data that you're interested in. It's very cool talk. I

571
00:36:28,679 --> 00:36:31,320
don't know about you, but I'm very I'm itching to

572
00:36:31,440 --> 00:36:35,679
hear you came about how he managed to become a

573
00:36:35,760 --> 00:36:39,199
co member of ang XS. You know, how did you

574
00:36:39,280 --> 00:36:41,280
join the team and what was your journey?

575
00:36:41,360 --> 00:36:46,000
Speaker 6: Like, well, that's that's a very very good question. So yeah,

576
00:36:46,039 --> 00:36:51,239
so it all started last year with the pandemic, so

577
00:36:51,679 --> 00:36:54,679
that that was one good thing that the pandemic brought

578
00:36:54,719 --> 00:36:59,000
for me. Actually, yeah, so since I started using ang

579
00:36:59,119 --> 00:37:05,199
excess in my project, I started participating on Slack in

580
00:37:05,239 --> 00:37:08,679
the community a lot. I have a couple of yeah

581
00:37:08,800 --> 00:37:14,559
questions and suggestions and the team was very yeah, so

582
00:37:14,639 --> 00:37:20,320
they received my suggestions very well. There was a point

583
00:37:20,880 --> 00:37:23,920
I think that I came out with the idea of

584
00:37:24,960 --> 00:37:30,679
writing this this plugging. And at that point when the

585
00:37:30,960 --> 00:37:36,199
core the team leader of the of the core team yeah,

586
00:37:36,639 --> 00:37:39,760
asked me if if I wanted to join to join

587
00:37:39,800 --> 00:37:44,280
the team. So we we kind of work together on

588
00:37:44,559 --> 00:37:49,119
this plugging and yeah, I've been participating on on the

589
00:37:49,239 --> 00:37:53,000
on the team meetings and all that since then. But

590
00:37:53,079 --> 00:38:00,800
basically it was I started, uh actively contributing in slack. I. Yeah,

591
00:38:00,800 --> 00:38:03,360
I think that there were a couple of issues that

592
00:38:03,519 --> 00:38:07,599
came out on the on the enge exist that I

593
00:38:07,639 --> 00:38:14,440
collaborate as well to fix those, and then I started suggesting, yeah,

594
00:38:14,800 --> 00:38:17,159
this kind of plug ins or making a couple of changes,

595
00:38:17,400 --> 00:38:21,840
and yeah, they they liked the ideas that I had,

596
00:38:22,000 --> 00:38:25,840
so in the end they proposed being part of the team.

597
00:38:26,000 --> 00:38:29,280
Speaker 4: Wow, that's that's a very interesting Sorry.

598
00:38:29,480 --> 00:38:32,960
Speaker 5: So how many Yeah, so how many days it took

599
00:38:33,039 --> 00:38:35,920
you to finish? I think it's seeing a lot of

600
00:38:36,000 --> 00:38:38,480
good in pandemic.

601
00:38:40,000 --> 00:38:42,760
Speaker 6: Yeah, I think it's It was around I don't know,

602
00:38:43,039 --> 00:38:46,000
two three months. So the thing is that, or at

603
00:38:46,079 --> 00:38:48,760
least in the process for me, was that I came

604
00:38:48,840 --> 00:38:53,800
up with the idea. I wrote like the first version

605
00:38:53,880 --> 00:38:57,760
of it, which was completely different from the one that

606
00:38:57,920 --> 00:39:00,400
it's out there now, and I that was read that

607
00:39:00,480 --> 00:39:04,760
one to the team leader, which is called Mark whitfelt.

608
00:39:05,440 --> 00:39:08,280
He really liked it. He liked the idea and he

609
00:39:08,480 --> 00:39:14,320
suggested changes to make it more ergonomic and easier to use.

610
00:39:14,800 --> 00:39:18,519
And yeah, since then, I yeah, it was a second version.

611
00:39:19,000 --> 00:39:21,280
So I think that the whole process was around two

612
00:39:21,320 --> 00:39:24,239
three months, But it was not like all the time

613
00:39:24,280 --> 00:39:26,639
working on it. It was a lot of time spent

614
00:39:26,920 --> 00:39:31,519
thinking about it, how it should work. And then when

615
00:39:31,519 --> 00:39:36,320
I finally did the first version and that something it

616
00:39:36,400 --> 00:39:40,760
was possible and it was helpful. Then it was trying

617
00:39:40,760 --> 00:39:44,920
to polish it and make it better and easier to use.

618
00:39:45,400 --> 00:39:48,159
Speaker 4: Cool So do you have any number of terms of

619
00:39:48,440 --> 00:39:51,360
usage of the plug in you? Are you aware of

620
00:39:51,400 --> 00:39:53,559
how it's been used out in the wilds so to speak?

621
00:39:53,760 --> 00:39:58,119
Speaker 6: No, to be honest, no, I know that. I know that,

622
00:39:58,199 --> 00:40:01,519
I know that it has been used, So it has

623
00:40:01,760 --> 00:40:04,800
I have been a lot. There have been a lot

624
00:40:04,800 --> 00:40:09,000
of questions coming to the to the gift repository, So

625
00:40:09,079 --> 00:40:12,840
that's a way of knowing that someone is using it.

626
00:40:13,440 --> 00:40:18,320
The are they We also did an angular session with

627
00:40:18,559 --> 00:40:23,000
Beman and so there was I participated there as well,

628
00:40:23,480 --> 00:40:25,800
and there were a couple of questions about the plugging,

629
00:40:26,440 --> 00:40:31,480
so that also at least interesting about about it. But yeah,

630
00:40:31,519 --> 00:40:34,920
if I have to be honest, I wouldn't know how

631
00:40:35,000 --> 00:40:39,880
many how many people are using it. I guess that

632
00:40:39,960 --> 00:40:43,119
I could look at the downloads, but I don't know

633
00:40:43,119 --> 00:40:46,880
if that's that like completely the usage.

634
00:40:47,360 --> 00:40:50,480
Speaker 2: Yeah, I know the projects, not necessarily people.

635
00:40:50,519 --> 00:40:54,400
Speaker 6: Right, So I know that the ant Excess team lead

636
00:40:54,480 --> 00:40:57,079
uses is used it in one of their projects.

637
00:40:57,159 --> 00:41:03,119
Speaker 5: So yeah, yeah, right, yeah, that's so one question I

638
00:41:03,159 --> 00:41:05,360
was like having, like if I use this one in

639
00:41:05,440 --> 00:41:09,119
my project? So I think you may have covered they

640
00:41:09,400 --> 00:41:12,320
I haven't gone through the plug in, so just asking,

641
00:41:12,400 --> 00:41:15,719
like suppose if I make a call to serve and

642
00:41:15,800 --> 00:41:19,599
somehow might state got update date, but like means my

643
00:41:19,760 --> 00:41:23,119
data got updated, but the state is not and and

644
00:41:23,599 --> 00:41:27,519
at that moment somehow the connection failed, how it managed

645
00:41:27,559 --> 00:41:31,079
the state, like is it will fire away? Fireways will

646
00:41:31,440 --> 00:41:35,800
meet it again if you're if you're without any changes, So.

647
00:41:35,679 --> 00:41:40,800
Speaker 6: You're asking what happens when when the connection fails or

648
00:41:41,079 --> 00:41:43,480
you have your out of connection with Firebase.

649
00:41:44,280 --> 00:41:49,159
Speaker 5: That yeah, But scenario is like suppose your database is

650
00:41:49,320 --> 00:41:53,920
updated but while getting a response, your connection failed due

651
00:41:53,920 --> 00:41:57,639
to internet connections, so that it's handled here like kind

652
00:41:57,639 --> 00:42:00,840
of because that is we are not ready to state

653
00:42:01,159 --> 00:42:04,840
and now we can add one more, right.

654
00:42:05,559 --> 00:42:09,760
Speaker 6: Right, So that's that's the beauty. That's the beauty of Firebase.

655
00:42:10,159 --> 00:42:14,480
And the good thing about using this this plugging is

656
00:42:14,519 --> 00:42:17,960
that it doesn't interfere with Firebase already does for you,

657
00:42:18,320 --> 00:42:20,760
which by the way, it's it's a lot, and it

658
00:42:20,840 --> 00:42:24,199
handles it very well. So the way that Firebase works

659
00:42:24,400 --> 00:42:28,639
is that they initially update the in the client site

660
00:42:28,960 --> 00:42:32,559
locally and then it tries to sink with sink with

661
00:42:32,679 --> 00:42:35,800
the server. It is going to retry until it works.

662
00:42:36,400 --> 00:42:40,280
So basically, basically you don't have to worry about that

663
00:42:40,480 --> 00:42:44,320
because Firebase is taking care of that for you. You

664
00:42:44,360 --> 00:42:49,800
can get confirmations when it actually has updated the database,

665
00:42:50,239 --> 00:42:53,920
but most of the times it's going to you're not

666
00:42:53,960 --> 00:42:57,519
going to need that because your fire Base is working

667
00:42:57,920 --> 00:43:01,920
on a is working like in a law side. First,

668
00:43:02,719 --> 00:43:06,719
you're always going to be updated in in the in

669
00:43:06,760 --> 00:43:11,519
your application. So so it's like when you make an

670
00:43:11,639 --> 00:43:15,639
update for example, you will see reflected in your in

671
00:43:15,679 --> 00:43:20,239
your application instantly right and then it's going to update

672
00:43:20,280 --> 00:43:24,519
it in the back end, which which also that model.

673
00:43:24,760 --> 00:43:28,840
It is very very good to for reactivity in your

674
00:43:28,880 --> 00:43:32,400
application because that's something that I haven't mentioned and I

675
00:43:32,440 --> 00:43:36,880
think it's a very important thing. So with anti Access

676
00:43:36,920 --> 00:43:39,559
and Firebase, you can make and you will make your

677
00:43:39,599 --> 00:43:43,639
application reactive from from the front end to the back end.

678
00:43:43,679 --> 00:43:47,840
Because Angie Access it's also a reactive it's a reactive

679
00:43:47,880 --> 00:43:53,320
state management library and every time something changes in the store,

680
00:43:53,719 --> 00:43:56,599
all the components get senked with the new with the

681
00:43:56,639 --> 00:44:00,320
new value. And in Firebase, every time something change just

682
00:44:00,480 --> 00:44:04,719
in the in the database, all changes are pushed to

683
00:44:04,800 --> 00:44:10,239
the connected clients right away. So you don't have when

684
00:44:10,679 --> 00:44:14,119
every time or after you create a connection or a query,

685
00:44:14,519 --> 00:44:18,440
you don't have to worry anymore about pulling data and

686
00:44:19,480 --> 00:44:23,760
like you have like a two way data to fetch data. Right,

687
00:44:24,000 --> 00:44:28,880
it's already connected and data is flowing through the connections

688
00:44:29,039 --> 00:44:29,599
all the time.

689
00:44:29,760 --> 00:44:32,719
Speaker 5: So buy back to all the get calls. Sorry, so

690
00:44:32,760 --> 00:44:35,400
we can say by buy back to all the get calls.

691
00:44:35,400 --> 00:44:38,360
So in normal application, we used to make a get call,

692
00:44:38,480 --> 00:44:42,119
then put updates and again we'll get.

693
00:44:42,159 --> 00:44:47,920
Speaker 6: So right right, exactly, exactly exactly.

694
00:44:46,559 --> 00:44:49,199
Speaker 3: I think. For yeah, yeah, that's very interesting.

695
00:44:49,239 --> 00:44:51,840
Speaker 4: I mean I've had the pleasure of working with fire

696
00:44:51,880 --> 00:44:54,800
Base in the past a couple of years back, and

697
00:44:54,880 --> 00:44:57,559
I'm sure a whole lot of things have changed since then.

698
00:44:58,239 --> 00:45:00,599
But I mean it's as a platform, I think it's

699
00:45:00,760 --> 00:45:06,280
it's great. I mean you can literally pull together simple

700
00:45:06,719 --> 00:45:10,079
something that is typically not so easy to do by hand,

701
00:45:10,159 --> 00:45:14,920
for example, handling authentication. You've got that fire Store database,

702
00:45:15,079 --> 00:45:18,719
real time database storage, hosting and functions and so forth.

703
00:45:19,400 --> 00:45:21,119
And I've had a pleasure to to play around with

704
00:45:21,159 --> 00:45:24,639
all of those for one of my previous customers, and

705
00:45:24,719 --> 00:45:27,280
I absolutely love it. I think all the points that

706
00:45:27,320 --> 00:45:30,760
you've mentioned today, it's it's all valid, and I would

707
00:45:30,960 --> 00:45:33,079
urge people out there to to give it a try.

708
00:45:33,599 --> 00:45:36,280
But for me, I'm always very curious, like when someone

709
00:45:36,400 --> 00:45:40,239
mentioned something that sounds so good like you have today,

710
00:45:40,880 --> 00:45:46,000
I'm always thinking about maintenance, right, how easy is it

711
00:45:46,039 --> 00:45:48,920
to debug apps that are built with the enge access?

712
00:45:49,440 --> 00:45:52,760
Do you have something similar like redux def tools for example.

713
00:45:53,079 --> 00:45:57,159
Speaker 6: Yes, yes you do, and I would say yeah, I

714
00:45:57,159 --> 00:46:01,440
mean for me, of course, you'll always you always have

715
00:46:01,559 --> 00:46:05,159
to learn right to in order to use your to

716
00:46:05,320 --> 00:46:08,800
use your your new library. Uh there, there's going to

717
00:46:08,800 --> 00:46:14,639
be some learning career. But and the access so since then,

718
00:46:15,440 --> 00:46:19,199
since all the acing actions or acink is allowed in

719
00:46:19,239 --> 00:46:23,079
your actions, you can place debuggers within your block of code.

720
00:46:23,119 --> 00:46:25,719
So it's going to stop there, and that that makes

721
00:46:25,760 --> 00:46:29,960
it easier to the bag. And as far as changes

722
00:46:30,159 --> 00:46:33,679
in your store or how they're there, they are the

723
00:46:33,719 --> 00:46:37,920
state is changing after actions are executed. You can hook

724
00:46:38,320 --> 00:46:41,400
you can use the redax dep tools it's the same,

725
00:46:41,880 --> 00:46:45,199
the same plugging, the chrome plugging, and you will see

726
00:46:45,840 --> 00:46:50,199
changes that happen in your store after each action, so

727
00:46:50,920 --> 00:46:53,559
you can be bag the bag that way as well.

728
00:46:54,960 --> 00:46:57,400
Speaker 2: All right, great stuff. Now I'm going to go play

729
00:46:57,400 --> 00:47:00,400
with it. So we've already burned an hour on this

730
00:47:00,519 --> 00:47:04,239
and now we're gonna go burn more, right of course.

731
00:47:05,119 --> 00:47:07,360
But yeah, before we do that, I'm gonna push it

732
00:47:07,400 --> 00:47:09,880
over to picks because, yeah, we're kind of getting to

733
00:47:09,880 --> 00:47:11,920
our time. I want to make sure that, yeah, we

734
00:47:11,960 --> 00:47:14,119
wrap this up before people have to run off and

735
00:47:14,119 --> 00:47:17,320
do other stuff. So yeah, let's go ahead and do picks.

736
00:47:17,719 --> 00:47:20,719
I'm pretty sure everybody here has done it before except

737
00:47:20,760 --> 00:47:24,000
maybe Joaquin. So yeah, let's let's go ahead and have

738
00:47:24,119 --> 00:47:25,920
Richard do it first. Richard, do you have some picks

739
00:47:25,920 --> 00:47:26,480
for us today?

740
00:47:26,639 --> 00:47:28,360
Speaker 3: Yes, I've got two today.

741
00:47:28,519 --> 00:47:31,559
Speaker 4: The first one is if you remember, Chuck, we spoke

742
00:47:31,599 --> 00:47:35,679
a couple of weeks ago about my pending trip to

743
00:47:35,880 --> 00:47:38,599
Crete in Greece. I, yeah.

744
00:47:38,440 --> 00:47:39,480
Speaker 2: I had a punchels.

745
00:47:41,079 --> 00:47:41,559
Speaker 3: Yeah.

746
00:47:41,599 --> 00:47:44,639
Speaker 4: It was a small little town called Kanya as the

747
00:47:44,679 --> 00:47:48,920
locals call it. But it's just picturesque. It's so beautiful

748
00:47:49,000 --> 00:47:52,199
and tranquil. Yeah, and I had a chance to go

749
00:47:52,280 --> 00:47:55,880
and recharge my batteries so to speak. Came back feeling

750
00:47:55,960 --> 00:48:00,199
super refreshed and ready to rock and roll again. So yeah,

751
00:48:00,239 --> 00:48:02,800
if you do get an opportunity to travel, I would

752
00:48:02,840 --> 00:48:05,280
definitely pick that up. Let me know, if you want

753
00:48:05,320 --> 00:48:08,519
to know where all the cool beaches are at, I'll be.

754
00:48:11,440 --> 00:48:14,039
And then the other one is So the funny thing

755
00:48:14,079 --> 00:48:16,679
is the company I work for, all the different teams

756
00:48:16,760 --> 00:48:20,280
have names of birds, and my team's The name of

757
00:48:20,320 --> 00:48:23,079
our team is called Dodo. If you know of this

758
00:48:23,199 --> 00:48:26,440
extint bird called Dodo. But yeah, I just want to

759
00:48:26,440 --> 00:48:29,440
send a shout out to my team. They're they're fantastic.

760
00:48:29,480 --> 00:48:32,320
They're great bunch of boys and girls and we work

761
00:48:32,360 --> 00:48:35,760
great together. So yeah, I just want to say shout

762
00:48:35,800 --> 00:48:39,400
out to them. Awesome super yes picks for us.

763
00:48:39,440 --> 00:48:40,280
Speaker 3: Yeah yeah, yeah.

764
00:48:40,320 --> 00:48:44,119
Speaker 5: So first one will be technical picks and that I

765
00:48:44,199 --> 00:48:48,920
recently came across. You're back in frame work for no Jazz.

766
00:48:49,000 --> 00:48:53,920
It's a nest Jazz. It's not next, but I was

767
00:48:53,960 --> 00:48:56,440
also a little kind of at the begining. So it's

768
00:48:56,599 --> 00:49:02,079
Nest Chess. And the true cool thing is it's like

769
00:49:02,360 --> 00:49:05,679
you can say, seventy to eighty percent similar ads angler

770
00:49:06,480 --> 00:49:10,599
We have services, we have models, we have everything. So

771
00:49:10,639 --> 00:49:15,000
it's a pretty gift for Angler developer to develop the

772
00:49:15,079 --> 00:49:18,840
back end, and every Angle Angler developer should check it

773
00:49:18,920 --> 00:49:24,239
once because again, be full start developer with that. And

774
00:49:25,159 --> 00:49:28,639
the second one will be a Netflix city that I

775
00:49:28,719 --> 00:49:31,000
think everybody knows is Lucifer.

776
00:49:31,440 --> 00:49:34,280
Speaker 3: I'm watching that right now, and that's all it is

777
00:49:34,400 --> 00:49:35,559
for me this week.

778
00:49:35,800 --> 00:49:38,039
Speaker 2: Awesome. Yeah, and if you could put your links to

779
00:49:38,079 --> 00:49:39,880
your picks in the chat, then we'll make sure we

780
00:49:39,880 --> 00:49:41,360
get them in the show notes. So I'll throw in

781
00:49:41,440 --> 00:49:43,679
my picks here real quick. Now. I've picked this on

782
00:49:43,840 --> 00:49:46,480
like every show because it's still bending my brain. I

783
00:49:46,519 --> 00:49:49,199
am so I listened to the book. Now I'm reading

784
00:49:49,199 --> 00:49:52,000
the book. I probably listen to it again here soon.

785
00:49:52,599 --> 00:49:55,920
It's called Who Not How. It is very much more

786
00:49:55,920 --> 00:49:59,119
of a business book, I guess, than a technical book.

787
00:49:59,480 --> 00:50:01,480
But I'm finding it applicable in a whole bunch of

788
00:50:01,519 --> 00:50:03,360
areas of my life. So if you're trying to get

789
00:50:03,360 --> 00:50:05,920
more done in life, then this is the book for you, Okay,

790
00:50:06,519 --> 00:50:08,880
and let me just give you the rundown real quick.

791
00:50:09,239 --> 00:50:11,920
So for me, I'm working a full time job. I'm

792
00:50:11,920 --> 00:50:14,159
trying to run a podcast network. I have five kids.

793
00:50:14,519 --> 00:50:16,320
I trained for a marathon that I did not run

794
00:50:16,360 --> 00:50:19,039
on Saturday because my nephew got me sick. I will

795
00:50:19,039 --> 00:50:22,440
spare you the gory details because it's kind of gross

796
00:50:22,480 --> 00:50:27,239
how some of this stuff manifests. But anyway, so, yeah,

797
00:50:27,280 --> 00:50:29,039
you know, I have all this stuff going on in life,

798
00:50:29,440 --> 00:50:32,920
and I was trying to do everything myself, and to

799
00:50:32,960 --> 00:50:36,800
a certain degree I still am. But I started reading

800
00:50:36,800 --> 00:50:39,280
this book and I realized that I don't have to

801
00:50:39,320 --> 00:50:42,800
do everything myself. So I've started bringing people in to

802
00:50:42,880 --> 00:50:45,679
do more of this stuff. And yeah, some of it

803
00:50:45,760 --> 00:50:47,880
I feel like, oh, it's not going to get done

804
00:50:47,920 --> 00:50:49,880
the way that I want or exactly how I want

805
00:50:50,000 --> 00:50:52,679
or as good as I would do it, But holy crap,

806
00:50:52,760 --> 00:50:55,079
I cannot do it all myself. And the other thing

807
00:50:55,199 --> 00:50:59,280
is is the more I free up myself from doing

808
00:50:59,320 --> 00:51:02,039
the things that I don't have to do, the more

809
00:51:02,119 --> 00:51:05,199
I can spend time working on the things that I

810
00:51:05,280 --> 00:51:08,159
do have to do, and especially the things that allow

811
00:51:08,239 --> 00:51:12,320
me to pay the bills at home and pay the

812
00:51:12,360 --> 00:51:14,679
bills for the people that are working for me here

813
00:51:14,719 --> 00:51:16,760
in the podcast network and stuff like that. If you're

814
00:51:16,800 --> 00:51:19,840
my kids screaming, I'm really sorry. So anyway, you get

815
00:51:19,880 --> 00:51:22,920
the idea. That's kind of how it opens up. So

816
00:51:22,960 --> 00:51:25,480
there are four sections. The first one is freedom of money,

817
00:51:25,519 --> 00:51:28,000
the second one's freedom of time. I might have gotten

818
00:51:28,000 --> 00:51:30,559
those backwards. The third one's freedom of relationships, and the

819
00:51:30,599 --> 00:51:32,519
fourth one is freedom of purpose. And those are the

820
00:51:32,519 --> 00:51:35,320
four sections. So the first one, the first two talk

821
00:51:35,320 --> 00:51:37,760
about freedom of time, freedom and money, right, And so

822
00:51:37,880 --> 00:51:40,000
the idea is is you start bringing up your time,

823
00:51:40,360 --> 00:51:42,679
and then once you have time to focus on the

824
00:51:42,760 --> 00:51:45,239
right things, then you start to free up money, right,

825
00:51:45,320 --> 00:51:47,840
because you start focusing on the things and making more money.

826
00:51:48,079 --> 00:51:50,760
And then you can start focusing on the relationships that

827
00:51:51,000 --> 00:51:54,000
matter both in your business and in life. And then

828
00:51:54,320 --> 00:51:58,039
you can start focusing on actually working on the things

829
00:51:58,079 --> 00:52:00,920
that help build your purpose in life. And so anyway,

830
00:52:01,480 --> 00:52:04,639
it completely blew me away to the point where I

831
00:52:04,719 --> 00:52:07,039
just immediately started working through the book the second time.

832
00:52:07,320 --> 00:52:10,000
Loved it. So I'm going to pick that another book

833
00:52:10,039 --> 00:52:12,679
that I listened to that I also really enjoyed, because

834
00:52:12,719 --> 00:52:14,559
I do listen when I'm out and about, but I

835
00:52:14,559 --> 00:52:18,039
wanted to actually read the physical book. So this book

836
00:52:18,119 --> 00:52:21,840
is called Sorry my brain just went blank on it.

837
00:52:21,920 --> 00:52:24,039
But it was recommended to Me by my friend Manny

838
00:52:24,320 --> 00:52:26,079
and it's one of his favorite books.

839
00:52:26,519 --> 00:52:28,039
Speaker 3: Oh what's it called.

840
00:52:28,360 --> 00:52:30,320
Speaker 2: I can pull it up on audible as a Man

841
00:52:30,360 --> 00:52:34,559
Thinketh by James Allen, And it's funny because it's an

842
00:52:34,599 --> 00:52:38,480
older book. Like the newer books of this genre, they

843
00:52:38,519 --> 00:52:42,239
tend to tell stories and illustrate their points and stuff

844
00:52:42,239 --> 00:52:45,679
like that. But the older ones like Napoleon Hills, Think

845
00:52:45,719 --> 00:52:49,079
and Grow Rich. You've got what's the other one, the

846
00:52:49,119 --> 00:52:51,800
Carnegie Book, Win Friends and influence people. A lot of

847
00:52:51,800 --> 00:52:54,639
those they have less of the story and less of

848
00:52:54,679 --> 00:52:57,760
the narrative and they more just kind of just tell

849
00:52:57,800 --> 00:53:01,159
you their ideas and just flesh them out. And so

850
00:53:01,320 --> 00:53:03,840
this is one of those, right, And so I like

851
00:53:03,880 --> 00:53:05,679
the stories, and so it was a little bit harder

852
00:53:05,719 --> 00:53:07,199
for me to kind of get through. And there's a

853
00:53:07,239 --> 00:53:10,920
lot to unpack there. So it's very tense, but there

854
00:53:11,000 --> 00:53:14,840
is so much there that is just so there's just

855
00:53:14,960 --> 00:53:16,840
so much there that you can just get so much

856
00:53:16,880 --> 00:53:20,519
out of. And so I encourage you to go take

857
00:53:20,559 --> 00:53:23,559
a minute to go listen to it, because I mean,

858
00:53:23,719 --> 00:53:27,320
just just quality stuff. But the flip side is is that, yeah,

859
00:53:27,480 --> 00:53:29,840
just be aware that you might have to go back

860
00:53:29,880 --> 00:53:32,360
through it in order to get all mine, all the

861
00:53:32,360 --> 00:53:35,519
gold out of it. But yeah, terrific book there as well.

862
00:53:35,599 --> 00:53:38,519
So those are my two picks. I'm going to pick

863
00:53:38,559 --> 00:53:42,400
those two books. And then of course devinfluencers dot Com

864
00:53:42,400 --> 00:53:44,920
slash podcast is the podcast I've been doing every day.

865
00:53:45,079 --> 00:53:47,920
There you go, All right, Joaquin, what are your picks?

866
00:53:48,320 --> 00:53:54,559
Speaker 6: Okay, So I would say my biggest newsul voice. Actually

867
00:53:54,599 --> 00:53:58,920
it's just a shout out to my football team I'm

868
00:53:59,159 --> 00:54:03,119
fan of. We're not in the in the best shape

869
00:54:03,199 --> 00:54:06,039
right now, but probably next season will be will be

870
00:54:06,039 --> 00:54:08,920
better for us, and.

871
00:54:08,639 --> 00:54:11,599
Speaker 2: That's a true fan. I love my football team. It's

872
00:54:11,679 --> 00:54:14,519
not the best year for us, but I'm there for

873
00:54:14,599 --> 00:54:15,159
you guys.

874
00:54:17,079 --> 00:54:22,280
Speaker 6: Yeah, and so Angie excess. Of course. The other pic

875
00:54:22,320 --> 00:54:25,400
I wanted to mention is a TV show I recently

876
00:54:25,559 --> 00:54:29,000
watched a mare of Install which was very very pretty

877
00:54:29,039 --> 00:54:33,159
cool for me, very good and yeah, those are awesome.

878
00:54:33,280 --> 00:54:34,719
Speaker 2: And then if people want to get a hold of

879
00:54:34,760 --> 00:54:38,119
you online, you know, say geth ub Twitter that kind

880
00:54:38,159 --> 00:54:39,400
of stuff where they find you.

881
00:54:39,760 --> 00:54:43,480
Speaker 6: So yeah, I'm in Twitter. My account is j o

882
00:54:43,880 --> 00:54:47,119
a q ce I did. I'm going to send a

883
00:54:47,159 --> 00:54:50,880
link there if you want to post it, but it's

884
00:54:50,920 --> 00:54:54,320
basically a couple of letters of my name and my

885
00:54:54,320 --> 00:54:57,360
my last name. Yeah, I'm in Twitter and agree. I'm

886
00:54:57,400 --> 00:54:59,800
Goodaby with the same account, so.

887
00:55:00,840 --> 00:55:04,079
Speaker 2: The awesome all right, Well thanks for coming. This was

888
00:55:04,119 --> 00:55:06,639
awesome and until next time, folks max out

