1
00:00:06,759 --> 00:00:11,160
Hello everyone, and welcome to Adventures
in Angular. My name is Alyssa Nichel.

2
00:00:11,240 --> 00:00:15,839
I am the Angular Developer advocate at
Progress for Kendo Ui. And today

3
00:00:15,880 --> 00:00:21,160
on our panel we have the awesome
Brooks Forsif with us. Hi everyone and

4
00:00:21,359 --> 00:00:27,160
Chris Ford. Good day, awesome, awesome and our show today we have

5
00:00:27,719 --> 00:00:33,439
a guest who is joining us.
His name is Sonny Yusef. And Sonny,

6
00:00:33,479 --> 00:00:38,840
how are you doing today? Lovely
lovely an So I'm loving love a

7
00:00:38,880 --> 00:00:43,560
lot of sun than goodness. I
was so ready for summer. So Sonny

8
00:00:43,679 --> 00:00:48,799
tell us for those listening to the
podcast today, you know who have somehow

9
00:00:49,079 --> 00:00:52,439
managed to not hear of you,
Can you give us a quick intro to

10
00:00:52,479 --> 00:00:56,200
yourself, what you do, where
you work, et cetera. Yeah,

11
00:00:56,240 --> 00:01:00,960
So I'm Sonny Yusef. I'm known
as the Nigerian stay in England. We're

12
00:01:00,960 --> 00:01:04,480
on a small consultant in London and
mostly now we're working on the project of

13
00:01:04,519 --> 00:01:10,959
the past few years with a company
on Mindline where we are building a lot

14
00:01:10,959 --> 00:01:15,480
of healthcare stuff. So like building
basically a more mobile sorry, a mental

15
00:01:15,519 --> 00:01:19,599
health platform that allows you know,
patients and doctors to sort of like create

16
00:01:19,640 --> 00:01:23,519
stuff. So the therapist can create
like a lot of content and they can

17
00:01:23,560 --> 00:01:29,079
push down to the patient in a
very friendly manner and vice versa. And

18
00:01:29,079 --> 00:01:33,599
and then there's also like all other
administrative stuff and it's pretty much all Angular,

19
00:01:33,799 --> 00:01:38,079
uh, which was hard to sell
it first, but gladly when that

20
00:01:38,159 --> 00:01:44,239
narrap was it like, was it
between Angular and some other framework? What

21
00:01:44,400 --> 00:01:48,840
was the what was the cell?
I think it was between Angular and somebody

22
00:01:48,840 --> 00:01:53,680
else's eager And that's that's all I'm
going to say. It was like it

23
00:01:53,719 --> 00:01:57,959
was a it was a no brainer. You're building an enterprise grade JavaScript first

24
00:01:59,120 --> 00:02:02,159
platform, right, you know,
like it's all about the right tool for

25
00:02:02,200 --> 00:02:06,400
the right job. I think it
Spelt was around at the time. Spelt

26
00:02:06,400 --> 00:02:09,039
would have been a very good fit
as well, but it just made sense,

27
00:02:09,199 --> 00:02:13,319
you know, like it's you know, SEO is not really part of

28
00:02:13,360 --> 00:02:15,759
the picture, so you know,
the single pitch application stuff that really matter.

29
00:02:16,199 --> 00:02:21,039
So it was a case of yeah
it was Angler was always an option,

30
00:02:21,120 --> 00:02:24,360
but maybe one or two people didn't
want to learn Angular to the level

31
00:02:24,400 --> 00:02:28,400
that was required for you to do
something like that. But in the end,

32
00:02:28,639 --> 00:02:31,599
yeah, well that is awesome.
I'm glad that the Angular won the

33
00:02:31,599 --> 00:02:36,879
battle for that one been a part
of a project years ago when it was

34
00:02:36,960 --> 00:02:42,439
the Angler JS switched to Angular and
actually lost the battle to he was React.

35
00:02:42,639 --> 00:02:46,800
So yeah, it reacts amazing.
It's amazing. Sometimes I think if

36
00:02:46,840 --> 00:02:51,439
we were to go down the React
path for this particular project, it would

37
00:02:51,439 --> 00:02:55,759
have been really, really, really
really difficult because you know some of the

38
00:02:55,800 --> 00:02:59,840
things we're doing in here. It's
like, you know, when you're working

39
00:02:59,840 --> 00:03:02,520
Hell Care. You can go into
one client they want all the botanist to

40
00:03:02,560 --> 00:03:07,199
fly to space, while there's other
client ones. So you're constantly like,

41
00:03:08,080 --> 00:03:10,400
that's that's how you get paid,
right, you do what they want?

42
00:03:10,840 --> 00:03:15,319
But then how can you make a
central engine that allows you to easily more

43
00:03:15,479 --> 00:03:20,759
unneat people's requirements. And you know
when you have things like AOT or things

44
00:03:20,800 --> 00:03:23,680
like the Ivory render, and now
you have things like lazy loaded, it's

45
00:03:23,719 --> 00:03:28,919
an absolute no brain or not to
use our case. Yeah, I love

46
00:03:28,960 --> 00:03:32,000
it. It reminds me of when
I try to tell people about why I

47
00:03:32,120 --> 00:03:38,960
use a UI library because there's so
much that can be reinvented, But why

48
00:03:38,080 --> 00:03:42,960
why reinvent the will in when you
could be spending time on other parts,

49
00:03:43,000 --> 00:03:46,840
like of the other features of the
product, So I feel like the same

50
00:03:46,879 --> 00:03:52,199
thing. Why would you essentially building
out your own framework versus choosing Angular that

51
00:03:52,280 --> 00:03:55,719
has so much, so much already
done for you. So yeah, absolutely,

52
00:03:55,879 --> 00:04:00,520
I think in our case we actually
ended up it in SDK because you

53
00:04:00,560 --> 00:04:03,840
know, every single client is almost
like a separate application in a Mono report

54
00:04:04,400 --> 00:04:10,639
because you build O the SDK and
then you create this like schematic that every

55
00:04:10,680 --> 00:04:15,199
single client app almost like takes in
that SDK. So so like how Android

56
00:04:15,280 --> 00:04:17,639
works, they just all implement that
SDK. So if the client needs a

57
00:04:17,680 --> 00:04:24,079
specific use case, you can build
their own like mini SDK within that client

58
00:04:24,120 --> 00:04:28,279
space. But if also you bring
a new feature that everybody else has to

59
00:04:28,319 --> 00:04:30,240
have, you can just do that
and maintain that at one place. And

60
00:04:30,319 --> 00:04:32,839
that really allows you to say,
yeah, you end up with a lot

61
00:04:32,879 --> 00:04:39,360
of applications physically, but maintainability long
term wise. You can have project owners

62
00:04:39,720 --> 00:04:43,439
that do nothing but you know,
SDK work and ever that and it's yeah,

63
00:04:43,480 --> 00:04:46,360
it's it's yeah, it's really really
amazing. So you have several clients

64
00:04:46,399 --> 00:04:54,120
like, yeah, clients in the
same Mono repo using the same so yeah,

65
00:04:54,160 --> 00:04:58,319
exactly. So what we've tried to
do is code all sits in the

66
00:04:58,360 --> 00:05:01,720
mono report. Right, you have
the S which is like these granular building

67
00:05:01,759 --> 00:05:06,279
blocks for every single application. Then
you have like a let's say, you

68
00:05:06,319 --> 00:05:10,680
know, let's say you become a
client for us. So let's say Brooks's

69
00:05:10,959 --> 00:05:14,519
company comes in, and Brooks's company
would be like, okay, We'll created

70
00:05:14,720 --> 00:05:18,079
an actual engine ad app, you
know, engine generate app, and we'll

71
00:05:18,079 --> 00:05:24,519
create Brooks's client and then in that
book's client app, we would inherit everything

72
00:05:24,639 --> 00:05:28,920
in that SDK, right, pretty
much everything that Brooks's client needs. And

73
00:05:28,959 --> 00:05:31,399
if Brooks's don needs something that is
very specifical Brooks, we could just go

74
00:05:31,480 --> 00:05:34,199
into that Burgers plan and do that. So we don't have to like think

75
00:05:34,240 --> 00:05:39,600
about like the continuous integration on the
that scale. We could just think about

76
00:05:39,600 --> 00:05:44,000
it on just that Brooks's client scale
and right only like endo intest for Brooks's

77
00:05:44,000 --> 00:05:46,120
slign scale, that kind of thing. In the future, we would probably

78
00:05:46,160 --> 00:05:47,800
use a schematics so that when we
want to add that it's a little bit

79
00:05:47,839 --> 00:05:55,279
more automated as well. So,
Yeah, updating work for like into Angular,

80
00:05:55,560 --> 00:06:00,480
yeah, or any of the independency
versions, is it just one update

81
00:06:00,560 --> 00:06:05,360
and all of them are updated?
Yeah? So because it's still one Angular

82
00:06:05,480 --> 00:06:12,199
very boat, it's still one package
Jason file, right, which means yes,

83
00:06:13,000 --> 00:06:16,399
as the scale as you scale up, that could potentially be problematic,

84
00:06:16,439 --> 00:06:21,399
but not necessarily because nine times out
of ten, like nine out of ten

85
00:06:21,439 --> 00:06:27,040
packages are all used by all the
applications. There's rarely a case where this

86
00:06:27,160 --> 00:06:30,160
one guy. And even if that
was a case, instead of becoming a

87
00:06:30,160 --> 00:06:32,720
problem, someday that would be easily
solvable where you could. I think there's

88
00:06:32,759 --> 00:06:36,240
some nifty fancy things you can do
with like MPM where you can have like

89
00:06:36,439 --> 00:06:42,000
almost like minimpms. We haven't gotten
the need to do that, but yeah,

90
00:06:42,000 --> 00:06:45,439
if we needed to object. So
I you recently operated to Angular nine,

91
00:06:45,439 --> 00:06:48,480
which is a breath of fresh air. It was updating the one package

92
00:06:48,560 --> 00:06:54,800
or Jason file and then everybody like
all the apps not a just all Angular

93
00:06:54,879 --> 00:06:58,199
nine. You know, that's it. And yeah, so at this point

94
00:06:58,240 --> 00:07:00,560
it's pretty cool. It's easy.
You have the back end and the repo

95
00:07:00,680 --> 00:07:04,879
as well or is that a separate
repel. No. So I'm kind of

96
00:07:05,000 --> 00:07:10,800
known as being a very like I
would say, ultra servilest type of guy,

97
00:07:11,519 --> 00:07:17,199
like I've been serverless. Yeah,
the next big thing, Yeah,

98
00:07:17,240 --> 00:07:21,279
so I've been servilest since twenty eleven. That's how serverless I have been,

99
00:07:23,040 --> 00:07:29,000
like the very first version of Azure
type of serviles before Firebase. Because I

100
00:07:29,040 --> 00:07:32,600
think a lot of people, we
developers, we like to over engineer sometimes

101
00:07:32,879 --> 00:07:36,560
like it's okay for somebody else to
just let you do things, like it's

102
00:07:36,600 --> 00:07:42,560
cool, no one's going to be
So we we're using Atlas, mongodbi Atlas

103
00:07:43,519 --> 00:07:46,800
and so everything is all there.
If you need anything, you can just

104
00:07:46,879 --> 00:07:49,759
use functions. But we have had
a need for an APR. We are

105
00:07:49,839 --> 00:07:56,560
thinking should we add those sgs APIs? We only have one of those inside

106
00:07:56,560 --> 00:08:01,000
of the repot we are right now
we have like a almost like a back

107
00:08:01,120 --> 00:08:05,160
end monoebal type of thing or we're
just doing that. But because we have

108
00:08:05,199 --> 00:08:09,680
the one, we haven't that like, should we put it in there where

109
00:08:09,720 --> 00:08:13,000
we still haven't made the choice yet. I guess, yeah, how do

110
00:08:13,040 --> 00:08:18,040
you like an SJS? I love
SGS? I think as well. Yeah,

111
00:08:18,800 --> 00:08:22,519
I think if you're working with Angular, it should be your first choice,

112
00:08:22,600 --> 00:08:26,600
not because it's great or it's not
great, but it's because you have

113
00:08:26,680 --> 00:08:31,639
the ability now to use the same
exact thought process to think of a back

114
00:08:31,720 --> 00:08:35,480
end application, and they've encapsulated it
so well that someone like me, Actually

115
00:08:35,519 --> 00:08:39,639
I don't really know much about express. I haven't really used note that deeply.

116
00:08:39,759 --> 00:08:43,440
But I can still go in an
SGS application and just use the observables

117
00:08:43,440 --> 00:08:48,000
and everything and just know that,
Okay, this function just decorated would get

118
00:08:48,279 --> 00:08:52,879
and use the same principles and relatively
get a very stable application working out quickly.

119
00:08:54,159 --> 00:08:58,440
And the organization is great too,
like it's organized like an angular application.

120
00:08:58,519 --> 00:09:01,000
I feel like I need to go
try. Now you're selling me on

121
00:09:01,039 --> 00:09:05,679
it. So stuff. Actually,
so I wanted to ask you. I

122
00:09:05,679 --> 00:09:11,600
saw the topic for today's podcast and
build a form around it, and I

123
00:09:11,639 --> 00:09:18,200
was hoping this meant that you might
actually finally put a positive spin on maybe

124
00:09:18,240 --> 00:09:22,159
reactive forms for me. Yeah,
yeah, yeah, absolutely. So you're

125
00:09:22,159 --> 00:09:28,320
not like reactive forms. Yeah,
I can't say it's the best thing.

126
00:09:28,240 --> 00:09:35,600
God, yeah. I just learning
now that in the community people are not

127
00:09:35,679 --> 00:09:41,159
necessarily happy with reactive forms, And
honestly, I don't know why. But

128
00:09:41,200 --> 00:09:46,240
I don't you don't know why,
like because I think I don't know if

129
00:09:46,240 --> 00:09:52,799
it's a remnant of how bad Maybe
and the other forms were or jet.

130
00:09:52,919 --> 00:09:56,080
Let's be real, forms are crap, you know, if we have to

131
00:09:56,159 --> 00:10:01,000
pick what we got pay to do
every single day. No, you wouldn't

132
00:10:01,039 --> 00:10:05,200
be like forms every day. If
you see that one serial kit that goes

133
00:10:05,240 --> 00:10:11,080
forms that you know who to stay
away from. Right, Formed out really

134
00:10:11,080 --> 00:10:16,879
difficult generally, right, and I
think people forget how bad it was in

135
00:10:16,919 --> 00:10:20,480
comparison to reactive forms. It's not
perfect, but people forget how much you

136
00:10:20,519 --> 00:10:22,720
can do just because of your reactive
forms. Like, I don't envision myself

137
00:10:22,759 --> 00:10:26,840
doing anything else with forms in any
other framework so easily. And and by

138
00:10:26,840 --> 00:10:31,480
the way, there's no there's no
point that you would choose template like driven

139
00:10:31,519 --> 00:10:35,960
for angula. I know the first
one is reactive forms and the second one

140
00:10:35,039 --> 00:10:39,480
is also reactive forms. Those are
the only two types of forms that exist

141
00:10:39,480 --> 00:10:45,320
in Angular Okay, okay, So
I'm just I'm not sold on it yet

142
00:10:45,399 --> 00:10:48,720
because I don't see the value in
it. So I would love to hear

143
00:10:48,440 --> 00:10:52,279
you kind of break that down for
us. Yeah, yeah, yeah,

144
00:10:52,320 --> 00:10:56,840
so yeah, template forms still exists, right, let's be should put.

145
00:10:56,120 --> 00:11:03,639
Yeah, I'm controlling now a big
time, getting stuff really easily done.

146
00:11:03,919 --> 00:11:07,440
Right, But when you start getting
to the field of testing and even the

147
00:11:07,440 --> 00:11:11,600
people that created this have come out
and say please use reactive forms. So

148
00:11:11,840 --> 00:11:13,799
I think the problem with reactive forms
is a few things. If you come

149
00:11:13,799 --> 00:11:20,639
from a very Java dot Net object
oriented background, you'd find reactive forms pretty

150
00:11:20,960 --> 00:11:24,240
straightforward and you'd see that it makes
sense. But if you come from a

151
00:11:24,279 --> 00:11:28,639
traditional JavaScript let's say you're a React
developer and you just joined and started using

152
00:11:28,639 --> 00:11:35,879
angle the traditional JavaScript, you might
struggle with the how monotonous that using reactive

153
00:11:35,879 --> 00:11:37,799
forms can be. It's like,
okay, I have to think about formula,

154
00:11:37,919 --> 00:11:41,440
phone group and everything like that.
So it's it's really that. But

155
00:11:41,720 --> 00:11:46,879
when you understand why that exists,
actually you really appreciate that. Oh it

156
00:11:48,000 --> 00:11:52,360
makes it so that the things I
want to do, the complex things I

157
00:11:52,360 --> 00:11:54,960
want to do with forms easy.
So with the reactive forms, it's hard

158
00:11:54,960 --> 00:11:56,919
to do the simple stuff, or
it looks hard to do the simple stuff,

159
00:11:56,919 --> 00:12:01,240
but it's easy to do the more
complex stuff. Well, that was

160
00:12:01,279 --> 00:12:03,399
why I was wondering if there was
ever a moment with a form that you're

161
00:12:03,440 --> 00:12:09,240
like, yeah, let's not make
this reactive, like it's legitimately like one

162
00:12:09,240 --> 00:12:11,879
input or something like. I didn't
know if there was a line that you

163
00:12:11,960 --> 00:12:15,360
drew or if you actually were always
yeah, I'm pretty much all the way

164
00:12:15,399 --> 00:12:18,159
because if it's just one input,
I'm just using like a form control,

165
00:12:18,240 --> 00:12:20,480
right, like, because you have
three members, you have the phone control,

166
00:12:20,519 --> 00:12:22,879
you have the phone group on the
phone or rate. So if it's

167
00:12:22,919 --> 00:12:26,960
just one input, I would still
use the form control. And yes,

168
00:12:28,039 --> 00:12:31,279
if I was to use the like
template forms, I'll probably get it done

169
00:12:31,360 --> 00:12:35,559
half the time. Well, now
I'm struggling to test. Now if I

170
00:12:35,639 --> 00:12:39,600
needed to do anything, and if
I needed to make something that like to

171
00:12:39,639 --> 00:12:43,440
make a validata or something like that, unscrewed pretty much. I kind of

172
00:12:43,480 --> 00:12:48,799
feel like, also, I think
that if you're gonna you shouldn't use both

173
00:12:48,840 --> 00:12:50,440
types of forms. I think,
like any in any one application, I

174
00:12:50,480 --> 00:12:54,200
think you should just pick one and
you should go with it. And and

175
00:12:54,360 --> 00:12:56,919
to be fair, if your choice
is to use the template forms, that's

176
00:12:56,960 --> 00:13:01,480
that's fine, you know, dig
your own grave, but that if you

177
00:13:01,120 --> 00:13:05,000
if you're if you're happy with reactive
forms, like, I don't think you

178
00:13:05,039 --> 00:13:07,960
should be dropping in any template stuff. Because you think about onboarding a new

179
00:13:09,000 --> 00:13:11,639
developer onto a project, They're going
to come along and be like all right,

180
00:13:11,159 --> 00:13:13,399
I've got to build a form now. But I'm seeing both types of

181
00:13:13,480 --> 00:13:18,039
use, So what what am I
supposed to do? I see? Okay,

182
00:13:18,080 --> 00:13:20,720
so you're saying it's much better to
be consistent throughout the app, no

183
00:13:20,759 --> 00:13:24,200
matter how simple a form is.
Yeah, I think so I can see,

184
00:13:24,240 --> 00:13:28,120
like, for example, in our
project, we I don't know if

185
00:13:28,159 --> 00:13:31,080
it's a rule or unknown rule,
but reactive forms are the only things allowed.

186
00:13:31,279 --> 00:13:35,440
It's it's just like an unwritten rule. Like I think we generally see

187
00:13:35,639 --> 00:13:39,679
template forms at like a code smell. Yeah, I think we do that.

188
00:13:39,759 --> 00:13:41,639
We've got to that place where it's
like what is that? And this

189
00:13:41,679 --> 00:13:46,519
is not to bash anybody that uses
template forms. It has use cases.

190
00:13:46,639 --> 00:13:50,399
I think just for us, it's
like we've used reactive forms well enough to

191
00:13:50,480 --> 00:13:52,679
know even for the simple stuff,
it is worth when in the extra time

192
00:13:52,759 --> 00:13:58,679
to just make it reactive forms.
I'd love to hear why the template forms

193
00:13:58,799 --> 00:14:03,440
cause problems for testing. I think
because like if you think about it,

194
00:14:03,799 --> 00:14:07,639
with the reactive forms right, you
can easily test inside of the component,

195
00:14:07,039 --> 00:14:11,000
so you can really like, for
example, if you needed to test the

196
00:14:11,120 --> 00:14:16,039
validata function, right, you can
write that validata function testing without even doing

197
00:14:16,039 --> 00:14:18,919
anything with forms. You can just
write a pure function somewhere right that you

198
00:14:18,960 --> 00:14:24,080
can test literally outside of the scope
of angular as well, so you know

199
00:14:24,120 --> 00:14:26,080
that that piece of logic works very
well. And then now when you get

200
00:14:26,080 --> 00:14:31,360
into the realms of a synchronous all
of that while template because everything is you

201
00:14:31,399 --> 00:14:35,399
know, banana in a box if
you needed to test. Now you're dealing

202
00:14:35,480 --> 00:14:41,080
with this whole engine model style thing
where if things start changing every now and

203
00:14:41,159 --> 00:14:46,799
then you're like guessing and stuff like
that, you could get hurt really quickly.

204
00:14:48,039 --> 00:14:52,240
Imagine Sanny like seeing engine model and
just like cringing, like, well,

205
00:14:52,360 --> 00:14:56,200
I think it sounds like you like
just does sweep the desk? Yeah,

206
00:14:56,639 --> 00:15:00,720
just computer on the floor, engine
model. I don't see no,

207
00:15:00,720 --> 00:15:05,840
no, no, nope, no, yeah. I just I just started

208
00:15:05,840 --> 00:15:09,799
a project and they're using template forms. And that's the first project I've ever

209
00:15:09,840 --> 00:15:13,399
been on, like about four or
five years to doing anular to development with

210
00:15:13,519 --> 00:15:16,879
template forms, and I'm just like, what is going on here? This

211
00:15:16,960 --> 00:15:20,919
is so much different. It's people
got their fans. Like if I'm like

212
00:15:20,960 --> 00:15:24,039
quite a lot of the form stuff
on stack overflow, people people's answers on

213
00:15:24,080 --> 00:15:28,080
their tend to go straight to template
forms. So I remember when I was

214
00:15:28,519 --> 00:15:31,960
when I was first starting out with
Angula obviously, like it's not an easy

215
00:15:31,960 --> 00:15:35,720
framework, is it. So I
was going googling quite a lot of stuff

216
00:15:35,720 --> 00:15:39,200
and I'd quite often find that I'm
on stack overflow and if it's a forms

217
00:15:39,279 --> 00:15:43,360
question, the answer is all with
emgy model. But like I committed quite

218
00:15:43,360 --> 00:15:46,879
early on to go with the reactive
forms because they just they just work better

219
00:15:46,879 --> 00:15:50,840
for me. But in terms of
I understand them better, I like having

220
00:15:50,840 --> 00:15:52,559
all my logic and the component that's
why. That's why I like them.

221
00:15:52,600 --> 00:15:56,120
I like to keep as much stuff
out of the template as I can.

222
00:15:56,399 --> 00:15:58,840
So, yeah, it was,
it was in those early days. It

223
00:15:58,919 --> 00:16:00,000
was. It was quite tricky when
I'm trying to find out the answer to

224
00:16:00,000 --> 00:16:03,279
a thing. It's like right now, now I've also got to convert it

225
00:16:03,320 --> 00:16:07,240
from you know, from the template
based form into into the reactive form solution.

226
00:16:07,519 --> 00:16:11,879
It's funny because it's the same with
you know, Kendo Ui, where

227
00:16:11,919 --> 00:16:15,559
we're constantly creating new components and a
lot of them. As you can imagine

228
00:16:15,559 --> 00:16:21,639
our form input type components and so
all of our documentation is twofold, right,

229
00:16:21,679 --> 00:16:25,000
It's it's all this is how you
would implement and validate and test it

230
00:16:25,039 --> 00:16:27,360
with reactive. This is how you
do with template driven and so even whenever,

231
00:16:27,519 --> 00:16:33,039
like we just released a couple new
things for forms and we don't our

232
00:16:33,080 --> 00:16:36,200
docs aren't finished yet because we only
have the reactive docs out right now.

233
00:16:36,279 --> 00:16:41,039
So it's just interesting having to support
both and seeing lots of people use both.

234
00:16:42,600 --> 00:16:48,720
Yeah, I would not be surprised
if the ideality somebody deprecates the template

235
00:16:48,759 --> 00:16:51,200
forms, I will not be surprised. I feel like there has I don't

236
00:16:51,200 --> 00:16:53,080
know if I've had this conversation with
someone, what would that I mean,

237
00:16:53,120 --> 00:16:57,960
that would be like like think of
Brooks's project right now, that's like using

238
00:16:59,159 --> 00:17:02,120
Like what would that even look like
because it's not like you can just be

239
00:17:02,240 --> 00:17:07,240
like Erry update from template driven to
react it like that would but you and

240
00:17:07,319 --> 00:17:11,359
warn us and then like you know, you'd have a year to change it,

241
00:17:11,519 --> 00:17:15,759
right in theory, but you know
most people would put it off until

242
00:17:15,799 --> 00:17:18,839
like there are three versions behind the
version they dropped it, and then you

243
00:17:18,839 --> 00:17:23,519
know, calling an overpriced consultant to
change it all for buck fifty an hour.

244
00:17:23,680 --> 00:17:26,960
But that's really what it looks like. Yeah, I don't know,

245
00:17:26,279 --> 00:17:30,559
that's a good question. If they'll
if they'll drop it yeah, I would

246
00:17:30,599 --> 00:17:32,920
have be surprised. I would have
be surprised. I think. I think

247
00:17:33,559 --> 00:17:37,880
forms are I say forms are the
most underrated part of any like our day

248
00:17:37,880 --> 00:17:41,799
to day lives. Every single day, every one of us here has used

249
00:17:41,799 --> 00:17:45,519
a form. If you think about
your browser address bar, that is a

250
00:17:45,559 --> 00:17:48,279
form. If you think about a
lift you press those bots, that is

251
00:17:48,319 --> 00:17:52,799
a form. Think about your mobile
phone when you wake wake your mobile phone

252
00:17:52,839 --> 00:17:56,519
up and you are making a phocal, that is a form. You go

253
00:17:56,559 --> 00:18:00,960
into your car, and those radio
bots and their technical forms. But we

254
00:18:02,039 --> 00:18:04,559
don't see them as forms because they
work. We only remember that they're forms

255
00:18:04,559 --> 00:18:07,200
when they don't work. And that's
that's the key thing there. Now I'm

256
00:18:07,240 --> 00:18:11,160
going to say, everything is a
formula, and what have you done?

257
00:18:11,039 --> 00:18:15,960
I'm getting scared. This is like
a horror movie here are taking over?

258
00:18:15,960 --> 00:18:21,200
Yeah, it is. It's our
day to day. Forms are how we

259
00:18:21,799 --> 00:18:26,519
just key to how we provide inputs
to machines. Right. Think about even

260
00:18:26,559 --> 00:18:32,480
your remote control is technically a form. You are putting input like you I

261
00:18:32,519 --> 00:18:34,279
can go, I can milk this
to like the very end, but it's

262
00:18:34,480 --> 00:18:38,759
it's they're very key. I was
watching SpaceX and you know everybody was like,

263
00:18:38,799 --> 00:18:41,440
hey, what was this built?
And apparently the dashboard was built a

264
00:18:41,480 --> 00:18:48,160
JavaScript basically I was like, yeah, yeah, self made version of electron.

265
00:18:48,279 --> 00:18:51,400
But those are all forms, They're
just buttons, and this is what

266
00:18:51,519 --> 00:18:55,920
takes taking people to space. So
it shows you that it's really really important.

267
00:18:56,279 --> 00:19:00,480
So I see a link to an
angular connect talck to that Sonny did,

268
00:19:00,559 --> 00:19:04,000
so is there I'm assuming you want
people to go and check out that

269
00:19:04,119 --> 00:19:08,000
talk, so like, not too
many spoilers, but is there anything like

270
00:19:08,079 --> 00:19:12,039
big takeaways that you want to highlight
from it that you shared with everyone in

271
00:19:12,079 --> 00:19:17,039
regular connect? Yeah. I think
the most thing is really showing like some

272
00:19:17,160 --> 00:19:19,839
of the building blocks of forms,
Like you know, talking about how you

273
00:19:19,880 --> 00:19:22,440
know everything. First of all,
you need to think of everything as an

274
00:19:22,519 --> 00:19:27,680
abstract control. That is the base
element. Everything is an abstract control,

275
00:19:27,720 --> 00:19:32,000
and then it's just this out.
This abstract control has three children, which

276
00:19:32,039 --> 00:19:37,880
is the firm control, which you
use for individual form elements or it excuse

277
00:19:37,960 --> 00:19:41,119
me, input elements, and then
the form group and then the former rate

278
00:19:41,359 --> 00:19:44,759
form are is rarely used because a
lot of times even when the former raate

279
00:19:44,880 --> 00:19:48,000
is as correct, I just still
use the form group because the form group

280
00:19:48,039 --> 00:19:55,359
is just it's that object based API
is really really easy to work. You

281
00:19:55,359 --> 00:19:59,720
know. Can you use a form
group with like an energy for though,

282
00:19:59,799 --> 00:20:03,440
you know, when you have several
when you're adding in more questions into the

283
00:20:03,480 --> 00:20:07,440
form based on their answers. Technically
I just used a form array and that

284
00:20:07,599 --> 00:20:10,480
was like, I don't know,
a couple of times I've used it.

285
00:20:10,519 --> 00:20:15,400
I use it when you're like adding
a car and then you have questions about

286
00:20:15,440 --> 00:20:17,640
each car, you know, like
do you want to red or black?

287
00:20:17,720 --> 00:20:19,480
Right? And then you have to
answer those Yeah you could, I mean

288
00:20:19,519 --> 00:20:22,000
there are ways where you could.
But can you do that with a form

289
00:20:22,039 --> 00:20:27,200
group? The form because it's not
an intro. If you need yeah,

290
00:20:27,279 --> 00:20:32,640
you'd have to use something like maybe
object or keys and whatever. And that

291
00:20:33,200 --> 00:20:36,960
case, if iterating is very very
key to your experience, then the form

292
00:20:37,039 --> 00:20:41,160
array might be much better experience.
There are a few things about forms that

293
00:20:41,160 --> 00:20:44,680
can be better as well. We'll
we'll probably get into that later on.

294
00:20:44,759 --> 00:20:48,559
But I guess in that talk the
most important thing was really showing specific use

295
00:20:48,599 --> 00:20:52,839
cases. So one of the use
cases I should was that a lot of

296
00:20:52,839 --> 00:20:56,000
people loved was the ACYNC validata,
which is you know where I did a

297
00:20:56,079 --> 00:21:03,279
live deb where I use a Zippopotamus. It's an online free API that allows

298
00:21:03,279 --> 00:21:07,720
you to send a zip code for
a country and you get the information back.

299
00:21:07,799 --> 00:21:11,400
It's free zipper bart and mass zipoparton
dot us I guess and then you

300
00:21:11,440 --> 00:21:17,079
can go like forward slash UK for
Slash Australia. It's supports like twenty or

301
00:21:17,200 --> 00:21:21,519
thirty different countries. And so where
I was able to like put in a

302
00:21:21,640 --> 00:21:26,240
postcode our live watch the form go
and see whether that person we could deliver

303
00:21:26,279 --> 00:21:29,599
it to that person based on their
postcode. That that I think is very,

304
00:21:29,720 --> 00:21:32,880
very very key because when you think
about, like say you're creating a

305
00:21:32,880 --> 00:21:34,480
social media application, what's the first
thing people do to create a username?

306
00:21:34,519 --> 00:21:37,039
You want to see if that username
is taken or not. Now the form

307
00:21:37,079 --> 00:21:42,160
has to wait to listen asynchronously whether
that API request is good or bad.

308
00:21:42,440 --> 00:21:45,000
These are some of the use cases
that you know, we don't think about

309
00:21:45,000 --> 00:21:49,319
as formers what they are. That's
actually super interesting. I've never really thought

310
00:21:49,319 --> 00:21:52,480
of it like that. How yeah, you need to need to be able

311
00:21:52,480 --> 00:21:56,640
to validate on the fly, Like
yeah, yeah, that's that's very interesting.

312
00:21:56,839 --> 00:22:02,000
I like that. I like the
zipopotamus as well, somebody thought long

313
00:22:02,079 --> 00:22:04,799
and hard about that name, didn't
they. Yeah, it's a nice I

314
00:22:04,799 --> 00:22:07,640
mean there are other things when you
think about, like not just the under

315
00:22:07,680 --> 00:22:11,240
fly stuff as well, but just
like Brooks are saying, when you need

316
00:22:11,279 --> 00:22:15,480
to remove things here and there,
you know you need to hide and show

317
00:22:15,519 --> 00:22:18,440
stuff, and that's also things what
also you needed to do think about when

318
00:22:18,480 --> 00:22:22,440
you need to really like you know, everybody has used that form where you

319
00:22:22,559 --> 00:22:26,039
feel in something you make a mistake, you send it to the survey,

320
00:22:26,039 --> 00:22:29,400
it comes back absolutely empty and it
tells you you made a problem. So

321
00:22:29,440 --> 00:22:33,799
being able to compose that data and
recompose that data that is also key.

322
00:22:33,000 --> 00:22:38,759
And knowing when somebody is interacted with
the phone to provide really radios experiences,

323
00:22:38,759 --> 00:22:42,680
you know, advised the assessed fire. A lot of things I'm going to

324
00:22:42,759 --> 00:22:47,799
react to form are really really really
super could have done with you on the

325
00:22:47,799 --> 00:22:51,640
show a few weeks ago. My
fellow might remember that I was having an

326
00:22:51,680 --> 00:22:53,200
issue where I was I was trying
to All I was trying to do is

327
00:22:53,200 --> 00:22:57,359
reset a form because the requirement for
this thing that I was working on for

328
00:22:57,440 --> 00:23:00,039
work was that there's the reset but
on the form and I reset, I

329
00:23:00,039 --> 00:23:03,960
clicked the reset button, go like
my form my this dot my form dot

330
00:23:04,000 --> 00:23:08,160
reset. All the validation flared up, like suddenly I've got my empty form,

331
00:23:08,200 --> 00:23:10,799
but it's saying, oh, this
field is required, this field is

332
00:23:10,839 --> 00:23:12,920
required, this field is required.
I wasted something like three days on that

333
00:23:14,119 --> 00:23:17,039
trying to work out how to resolve
that's the answer to that. By the

334
00:23:17,079 --> 00:23:19,440
way it was filed like it was
a really proper, filthy solution. It

335
00:23:19,480 --> 00:23:22,079
turns out I don't know whether I
don't know whether it's a bug in Angular,

336
00:23:22,160 --> 00:23:26,920
whether it's bugging Angular material, or
whether it's something specific in like one

337
00:23:26,960 --> 00:23:30,519
of the components that we're using on
the project, right, but other people

338
00:23:30,519 --> 00:23:33,079
would encountered it. And it turns
out the only way to resolve it was

339
00:23:33,079 --> 00:23:37,960
that when you click the reset button, you destroy the component and then reinstantiate

340
00:23:38,039 --> 00:23:41,759
it in a set time out.
And it's it was like the fields weren't

341
00:23:41,880 --> 00:23:51,880
like touched or dirty, set valid
You try like just using like Marcus touched,

342
00:23:52,039 --> 00:23:55,400
Marcus untouched all those things as well. Yeah, I did everything,

343
00:23:56,279 --> 00:24:00,880
you know, because there was people
were registering like get issues about similar things,

344
00:24:02,400 --> 00:24:04,960
so which is why I'm wondering if
it's a bug with angula maybe,

345
00:24:06,039 --> 00:24:07,279
but you know, everything I've tried
just didn't work, and in fact,

346
00:24:07,319 --> 00:24:11,880
that that is the kind of solution
that I absolutely hate using because that is

347
00:24:12,119 --> 00:24:15,359
absolutely not the way that you should
be resettling a form, right, But

348
00:24:15,519 --> 00:24:18,720
sometimes what are you going to do? Well? I guess we can use

349
00:24:18,759 --> 00:24:22,759
this opportunity to talk about some of
the things that we don't like about reactive

350
00:24:22,799 --> 00:24:26,160
forms, right yeah, yeah,
like that. I don't know, I've

351
00:24:26,160 --> 00:24:29,119
never come across that use case.
So I actually investigated one of the things

352
00:24:29,119 --> 00:24:30,799
I know that is very difficult to
do, and I've spoken to I think

353
00:24:30,839 --> 00:24:34,000
I've spoken to someone on the Angular
team about this and they were like,

354
00:24:34,160 --> 00:24:37,920
you know, right now. One
of the things that apparently at the time

355
00:24:37,960 --> 00:24:40,839
I spoke, which was like a
year and a half ago, there wasn't

356
00:24:40,880 --> 00:24:44,920
anybody in charge of maintaining a forms
project. So the Forms was one of

357
00:24:44,920 --> 00:24:48,279
those was that it was so well
built that everything else has gone forward,

358
00:24:48,480 --> 00:24:52,000
there hasn't been anyone to show it
love because you know, so it's one

359
00:24:52,039 --> 00:24:56,000
of the way they're thinking about really
completely imagining it, you know, from

360
00:24:56,039 --> 00:24:57,640
behind the scenes. So for example, if you needed to be bounce on

361
00:24:57,759 --> 00:25:02,279
an input, it's actually pretty difficult, which is crazy. That's like,

362
00:25:02,440 --> 00:25:06,400
just say, hey, I want
to debounce on this particular input field,

363
00:25:06,480 --> 00:25:11,480
you know, don't update it after
HiT's actually really really really difficult, Like

364
00:25:11,559 --> 00:25:14,680
it's so difficult to do something as
simple as that. And I also,

365
00:25:14,799 --> 00:25:18,920
one thing I don't like is if
you needed to add a new phone control

366
00:25:19,400 --> 00:25:23,480
or register a validator, you couldn't
really just add a validator. You had

367
00:25:23,519 --> 00:25:26,640
to sort of like, so let's
say you have four validators right in as

368
00:25:26,680 --> 00:25:30,240
the properties. You couldn't just add
a fifth one. You had to like

369
00:25:30,759 --> 00:25:34,519
construct an array or object of five
validators and then send that validator in.

370
00:25:34,640 --> 00:25:40,359
So you were like always resetting,
you were never mutating, and they took

371
00:25:40,519 --> 00:25:44,200
you know, immutable just to a
whole new level. So yeah, that

372
00:25:44,240 --> 00:25:45,559
I don't like. I think it
can be better. I think maybe one

373
00:25:45,599 --> 00:25:52,240
thing that I don't like is that
with the reactive forms, there's maybe too

374
00:25:52,359 --> 00:25:56,079
many ways to do the same thing. Like yeah, so, I mean,

375
00:25:56,359 --> 00:25:59,599
you know, I always like to
when I'm creating my form, I

376
00:25:59,640 --> 00:26:03,960
always use the form builder, this
dot form builder, dot group passing all

377
00:26:03,000 --> 00:26:07,440
my stuff. But then you know, I go to another component and then

378
00:26:07,480 --> 00:26:11,839
I see that somebody is just building
individual form controls and just just assigning stuff

379
00:26:11,839 --> 00:26:14,839
in there. And it's like this
goes back to what we were saying earlier

380
00:26:14,880 --> 00:26:18,599
about how you know you you should
use just one one type of form's method

381
00:26:18,640 --> 00:26:22,599
because that way it's consistent. But
actually, as it turns out, you

382
00:26:22,680 --> 00:26:26,039
need like levels of consistency on that. There's too many ways, too many

383
00:26:26,079 --> 00:26:29,759
ways to skin that cap. Yeah, it kind of touches on just my

384
00:26:29,880 --> 00:26:34,440
issues of it just seems just headachey
more difficult. Like I I'm trying to

385
00:26:34,480 --> 00:26:38,759
debug my reactive form like yet last
week, and I kept googling like the

386
00:26:38,880 --> 00:26:44,279
error I was getting and there wasn't
a lot of help, and the way

387
00:26:44,319 --> 00:26:47,519
I ended up doing it was just
to basically go a different route. And

388
00:26:47,599 --> 00:26:49,839
so that's kind of the same thing
of that. I just I don't know,

389
00:26:49,880 --> 00:26:53,000
it's just harder. I think from
a it's like you said, it's

390
00:26:53,079 --> 00:26:57,480
easier to do complex things with reactive
forms, but if you're just like out

391
00:26:57,480 --> 00:27:00,400
of the gate trying to do something
simple and it's like not working and you're

392
00:27:00,440 --> 00:27:03,079
like how do I do this?
And then everyone online is like, here's

393
00:27:03,119 --> 00:27:10,079
a template driven way to do it. Yeah, there's some it's hard to

394
00:27:10,480 --> 00:27:12,000
ramp up to it, you know
what I mean, Like it's complicated to

395
00:27:12,079 --> 00:27:15,920
dive in and get going on it. And maybe there's better tutorials or something

396
00:27:17,000 --> 00:27:18,880
that I missed when I was getting
started on it. But I think it's

397
00:27:18,880 --> 00:27:22,720
so funny Brooks that you're like the
exact reverse where you're like just now seeing

398
00:27:22,720 --> 00:27:26,400
a template driven way and you're like, oh, yeah, what is it?

399
00:27:26,519 --> 00:27:29,279
Yeah yeah, now it feels weird. I'm looking at it being like,

400
00:27:29,359 --> 00:27:30,920
oh, okay, I guess this
is how we're going to do it.

401
00:27:32,119 --> 00:27:34,240
I think for me, what we
were working on in our project was

402
00:27:34,279 --> 00:27:37,480
really what made me fall in love
with forms because you know, when you're

403
00:27:37,519 --> 00:27:41,880
building for healthcare, you're also building
for education. That's just how it works.

404
00:27:41,480 --> 00:27:45,119
That's why anybody that's worked in healthcare
could easily move to education, because

405
00:27:45,160 --> 00:27:48,400
it's like one of the says just
cos out on the same point, because

406
00:27:48,599 --> 00:27:52,599
think about it, We're allowing people
to create content, right, which ends

407
00:27:52,680 --> 00:27:57,000
up as an adjacent format, and
then this patients see that content because you

408
00:27:57,039 --> 00:28:00,319
know, content answer the question,
which is also an adjacent format. Right.

409
00:28:00,640 --> 00:28:03,279
So you know what I ended up
doing. I didn't set out to

410
00:28:03,279 --> 00:28:07,880
build an SDK. There was already
a version one. Admit it. It

411
00:28:07,920 --> 00:28:11,480
was on your to do list that
year. You know, It's one of

412
00:28:11,519 --> 00:28:14,599
them ones. Is like how Linux
got made right. The guy just realized

413
00:28:14,640 --> 00:28:17,839
that, oh, I've built a
kernel, like oh, oh, as

414
00:28:17,880 --> 00:28:21,640
well, just you know, make
it so like what you really shake it?

415
00:28:21,640 --> 00:28:22,799
Does? You know? He just
says, oh, it's my lunchtime.

416
00:28:23,440 --> 00:28:26,319
I feel like creating my own private
jets. And then ury goes ahead

417
00:28:26,359 --> 00:28:30,640
and creates own private jets and it
comes and devils it like it's just a

418
00:28:30,839 --> 00:28:33,880
regular thing. And he's like,
oh, you don't have a private jet.

419
00:28:34,039 --> 00:28:37,079
I didn't know that. That's how
brilliant he is. So you didn't

420
00:28:37,119 --> 00:28:41,920
go into it planning to do you
know, we had a version one that

421
00:28:41,039 --> 00:28:47,680
basically it was working. But you
know, healthcare is very you're going to

422
00:28:47,720 --> 00:28:52,240
be audited. You would audit you
really well security because if you, like

423
00:28:52,319 --> 00:28:56,359
say, somebody should like you know, you die misdiagnosed the wrong person that

424
00:28:56,400 --> 00:28:59,960
has ramification. So that is the
type of mindset it needs to go.

425
00:29:00,119 --> 00:29:00,880
So when I jumped on the project, I told them, hey, you

426
00:29:00,920 --> 00:29:04,000
know, yeah, I need to
start looking at this as life or death,

427
00:29:04,079 --> 00:29:07,200
not just like hey, we're writing
coul code. You cannot do that

428
00:29:07,440 --> 00:29:11,559
because I don't want to go to
jail, and I'm pretty sure you don't

429
00:29:11,559 --> 00:29:15,119
want to go to jail. So
I guess when we started out, so

430
00:29:15,160 --> 00:29:18,640
what we had was a really working
application, wonderful, but it had like

431
00:29:18,839 --> 00:29:22,079
pretty much everything was HTML, you
know, which was nice, but I

432
00:29:22,119 --> 00:29:25,720
was like, well, maintainability wise, this is not really. So what

433
00:29:25,759 --> 00:29:27,279
we end up doing is we created
what I call these block systems. Right,

434
00:29:27,319 --> 00:29:32,119
so you have like an image block, a text block, a radio

435
00:29:32,200 --> 00:29:34,880
bottom block, a checkbox block.
They around twelve of them, you know,

436
00:29:36,000 --> 00:29:38,960
image, video, audio, and
that's what you can compose a bunch

437
00:29:40,000 --> 00:29:42,799
of like the page with. So
you can have these blocks on this page,

438
00:29:42,880 --> 00:29:45,839
right, so you can have like
page one, this block you put

439
00:29:45,920 --> 00:29:51,559
in all the fields, the ID
and everything. So with the what's it

440
00:29:51,640 --> 00:29:56,279
called the now we also have the
use case where every client once they apsolute

441
00:29:56,319 --> 00:29:59,759
different. Right. So what actually
ended up doing is the SDK is actually

442
00:30:00,359 --> 00:30:03,960
has there's no template in the SDK. It exists solely to holding the component's

443
00:30:04,000 --> 00:30:07,200
logic. And then what you do
is you inherit that SDK. You create

444
00:30:07,200 --> 00:30:12,720
the same component, but you use
component inheritance to inherit that way super yeah

445
00:30:12,880 --> 00:30:19,079
exactly. So you go in,
Okay, Brooks application has Brooks image block,

446
00:30:19,240 --> 00:30:26,119
Brooks text block, but that just
exists to inherit from SDK block a

447
00:30:26,240 --> 00:30:30,799
text block and then implement the templates
the way Brooks wanted. But if Brooks,

448
00:30:30,119 --> 00:30:34,079
say image block needs to do anything
different, you can just override or

449
00:30:34,119 --> 00:30:38,160
like add features on top only in
that Brook SDK. And that's really Underto

450
00:30:38,720 --> 00:30:45,079
compound that, Brook SDK would have
brook Web and then brook like Mobile,

451
00:30:45,119 --> 00:30:47,720
which is like an ionic app,
so you not have to have like almost

452
00:30:47,759 --> 00:30:51,400
like a mini Brook SDK that is
shared between those two as well. So

453
00:30:51,440 --> 00:30:53,599
it's that level of complexity. Was
like, we weren't a fan of it,

454
00:30:53,640 --> 00:30:56,559
but I was like, look,
if we want to be able to

455
00:30:56,559 --> 00:31:00,680
walk into any client and say hey, we can absolutely over an give you

456
00:31:00,759 --> 00:31:03,400
what you need with that line,
we need to put in this work and

457
00:31:03,480 --> 00:31:07,480
once we do it it takes a
year or whatever. Now we have the

458
00:31:07,480 --> 00:31:10,240
infrastructure that we can do. So
we ended up with an SDK and now

459
00:31:10,279 --> 00:31:14,000
we're like, wow, it's so
easy for us to do the cool stuff

460
00:31:14,039 --> 00:31:17,880
because the SDK is not changing,
you know. So yeah, that was

461
00:31:18,079 --> 00:31:23,440
interesting. So you talked about clients
having like desiring different looks. How has

462
00:31:23,480 --> 00:31:27,160
that been challenging being like, okay, this form needs to look totally different

463
00:31:27,440 --> 00:31:33,799
or not really just create different themes
and throw throw it in with SaaS variables

464
00:31:33,880 --> 00:31:37,319
or what's your Yeah. So,
because every single application is its own container,

465
00:31:37,880 --> 00:31:41,319
like you are just literally so you
don't have someone sitting just designed for

466
00:31:41,359 --> 00:31:45,839
that particular specific application, not needing
to do any code. So so for

467
00:31:45,880 --> 00:31:51,240
example, if I'm creating a new
project tomorrow, all I'm doing is just

468
00:31:51,359 --> 00:31:56,480
implementing the HTML and CSS for what
that particular firm block looks like. But

469
00:31:56,720 --> 00:32:02,240
all the behavior is or it already
exists in the what's it called the SDK.

470
00:32:02,400 --> 00:32:06,559
So for example, each block has
what we call a data property where

471
00:32:06,559 --> 00:32:08,839
you pass it the data for that
particular block and you're just going to them.

472
00:32:08,839 --> 00:32:13,119
I say, okay, data dot
header here, data dot text here.

473
00:32:13,480 --> 00:32:16,200
You know data. You don't need
to write individual tests because it's already

474
00:32:16,160 --> 00:32:22,039
been tested at the STK level,
So you're just literally like that. It

475
00:32:22,160 --> 00:32:24,319
sounds complex, but if you think
about what it allows you to do,

476
00:32:24,440 --> 00:32:29,160
is it allows you to sleep well
knowing that hey, doesn't matter what will

477
00:32:29,240 --> 00:32:31,480
change. This guy is always gonna
like, you know, we can mess

478
00:32:31,559 --> 00:32:36,000
things up and it's not gonna affect
all the other apps. And we can

479
00:32:36,079 --> 00:32:40,119
test this centrally and know this works. And so it's without angular reactive forms

480
00:32:40,680 --> 00:32:45,519
we would we would absolutely be screwed. I'm one hundred percent. I feel

481
00:32:45,599 --> 00:32:50,599
a little bit like I want to
hear A Lissa tell us a bit more

482
00:32:50,640 --> 00:32:55,440
about why she would still prefer template
driven forms. It's just it's super It's

483
00:32:55,519 --> 00:33:00,200
not that like deep of a thing. It's just really make it sound like

484
00:33:00,240 --> 00:33:06,200
it is. Yeah, pretend you're
a template forms it. It's it's because

485
00:33:06,680 --> 00:33:14,359
I resist change and I got used
to how template driven forms work, and

486
00:33:14,400 --> 00:33:17,440
so anything outside of it, not
just react forms, obviously would look foreign.

487
00:33:17,680 --> 00:33:22,559
And I'm still not like I'm still
not great at reactive programming in general,

488
00:33:22,720 --> 00:33:27,160
and so it's just honestly, it
feels like a It was just so

489
00:33:27,200 --> 00:33:29,960
funny to hear books say that,
because it was like the exact opposite.

490
00:33:29,960 --> 00:33:32,240
For me. It just feels foreign
and I'm uncomfortable with it, and when

491
00:33:32,240 --> 00:33:37,279
I debug problems with it, that's
where I start like bashing my face in

492
00:33:37,319 --> 00:33:39,359
because I'm like, okay, like
That's that's where I'm like, can we

493
00:33:39,440 --> 00:33:44,599
just do it the old way please? So it's nothing to do with really

494
00:33:44,599 --> 00:33:49,440
how it performs, just strictly the
I guess the learning curve to get going.

495
00:33:49,920 --> 00:33:52,759
That that bothers me with it with
really anything reactive, so not just

496
00:33:52,799 --> 00:33:58,400
forms. To be fair, do
you, I never used anglae JS,

497
00:33:58,480 --> 00:34:01,160
right, so Anglic anglic too as
it was at the time, was was

498
00:34:01,200 --> 00:34:05,839
my first experience at Angler. So
when I was learning it, I had,

499
00:34:05,880 --> 00:34:08,559
you know, actly watching that day
they did you guys, have you

500
00:34:08,559 --> 00:34:14,079
seen the keynote where there was like
all these tombstones and they were like rip

501
00:34:14,519 --> 00:34:16,599
like everything in Angular JS. It
was like, you know, r ip

502
00:34:16,840 --> 00:34:22,800
scope and rip uh like directives or
whatever. It was like every single thing

503
00:34:22,800 --> 00:34:24,960
that you used to using in Angular
JS. And I was like watching it

504
00:34:25,000 --> 00:34:29,199
because like Angler JS was my life
back then, and I was like,

505
00:34:29,239 --> 00:34:34,239
what are they doing to me?
Like I was like dying a little bit

506
00:34:34,280 --> 00:34:37,880
inside when that keynote came out.
So yeah, that it is. It's

507
00:34:37,880 --> 00:34:42,719
because I, you know, when
I started programming, I learned JavaScript at

508
00:34:42,760 --> 00:34:46,199
the very first, and then I
tacked on some Angular JS and some Firebase

509
00:34:46,239 --> 00:34:51,039
and I saw the magic of like
just building web apps quickly and it was

510
00:34:51,119 --> 00:34:52,960
just magic. I loved it.
And so yeah, that's kind of my

511
00:34:53,000 --> 00:34:59,719
background and it's just still hard for
me to adopt the reactive way. One

512
00:34:59,719 --> 00:35:04,480
of them reasons why people maybe might
also shy away from reactive forms is also

513
00:35:04,559 --> 00:35:07,639
the fact that you know, it
does kind of require some level of RXX,

514
00:35:07,719 --> 00:35:12,079
which was a big thing for me
because you know, let's be honest,

515
00:35:12,119 --> 00:35:14,880
I never heard of nobody is just
so rags and when like cool,

516
00:35:15,320 --> 00:35:19,920
you know, everybody went like for
a while. Most people, let's be

517
00:35:20,000 --> 00:35:24,280
real, most of us that use
just know enough rxgs to get by,

518
00:35:24,480 --> 00:35:29,360
we just we just knew it.
We were not like ben less level like

519
00:35:29,760 --> 00:35:34,599
RXX, Like okay, I know
how to subscribe, unsubscribed and use the

520
00:35:34,639 --> 00:35:37,239
acing pipe and that's where it ends, right, Like, you know,

521
00:35:37,880 --> 00:35:42,360
maybe I know how to use a
behavior subject. You know, that's like

522
00:35:42,760 --> 00:35:49,000
cool. But that's all you need
though, to be honest, the time,

523
00:35:49,719 --> 00:35:52,000
is there really anything else is there? And when I knew I didn't

524
00:35:52,000 --> 00:35:57,199
know RHGX was when I read a
blog post by Ben Lesh saying you do

525
00:35:57,239 --> 00:36:00,199
not need to unsubscribe as much as
you think, and all I could just

526
00:36:00,199 --> 00:36:02,679
be like, oh, snaps,
because I was unsubscribing everyone. He can't

527
00:36:02,719 --> 00:36:07,519
explain, like, look, you're
unsubscribing, so you're creating a variable to

528
00:36:07,639 --> 00:36:10,400
hold in the subscription so that you
can go see the the energy un destroyed

529
00:36:10,639 --> 00:36:15,480
and then call on subscriber's like no, you know you can just like say

530
00:36:15,519 --> 00:36:21,599
they take one, or like you'll
take until Actually just building the logic why

531
00:36:21,719 --> 00:36:28,320
you were subscribing, I was like, that actually makes sub sense, makes

532
00:36:28,320 --> 00:36:31,119
sense because then this thing would take
care of the cleanup for me, wouldn't

533
00:36:31,119 --> 00:36:37,920
it. Oh and then yeah,
so yeah, but yeah, do you

534
00:36:37,960 --> 00:36:42,000
think that plays a role into maybe
making people people a little bit more hesitant

535
00:36:42,000 --> 00:36:45,599
to use reactive forms for sure?
Oh my gosh, yeah absolutely. I'm

536
00:36:45,880 --> 00:36:49,679
like looking at this talk now by
Ben Lasher and I'm like, I want

537
00:36:49,679 --> 00:36:53,199
to see this. Yeah, he's
a legend. He's like, he's just

538
00:36:53,239 --> 00:36:58,719
such a legend. He should be
ben ledged, not lesh we should change

539
00:36:58,800 --> 00:37:06,480
into legends. Just change it.
It's finished. I will tweet him that

540
00:37:05,840 --> 00:37:10,280
you're welcome. Then called the d
m B in the you know, name

541
00:37:10,360 --> 00:37:16,320
request change, throwing a poor request
in there. When you said the d

542
00:37:16,400 --> 00:37:20,719
MV, I was like, are
we getting him a license plate that has

543
00:37:20,840 --> 00:37:30,559
like that on it. That'd be
cool too, you you my imagine having

544
00:37:30,599 --> 00:37:34,039
that level of RXGS knowledge show just
on hand. I don't know how he

545
00:37:34,119 --> 00:37:37,519
does it, because he just he'll
just appear on someone's Twitter feed and just

546
00:37:37,559 --> 00:37:42,119
go where someone's just someone's just sort
of idly tweeting I can't do this thing

547
00:37:42,119 --> 00:37:45,840
on r x GS, and then
just like flies in like some kind of

548
00:37:45,880 --> 00:37:49,719
superhero. And here's a bit of
an almanac, isn't he He just dropped

549
00:37:49,920 --> 00:37:54,159
like five operators that you've never heard
of. You know how many operators there

550
00:37:54,199 --> 00:38:00,119
are? Like the total number for
a while, there's a lot. I

551
00:38:00,119 --> 00:38:04,400
think they're the hundreds. One I
recently started using more was share replay.

552
00:38:04,480 --> 00:38:07,559
So I used to have this case
where I was in complex stuff, but

553
00:38:07,679 --> 00:38:09,559
I was I was just for the
share operator. But then whenever I went

554
00:38:09,599 --> 00:38:13,159
to the template, it just the
data wouldn't show up, and I wasn't

555
00:38:13,199 --> 00:38:16,079
really understanding why, Like, hey, I'm sharing. The whole point is

556
00:38:16,079 --> 00:38:19,960
I don't want this to send more
than once. But apparently the share operator

557
00:38:20,039 --> 00:38:23,719
kind of only gets what setting points
and there's some like weird stuff I've never

558
00:38:23,760 --> 00:38:27,880
forgoted. But when you use the
share replay, you still get only one

559
00:38:27,920 --> 00:38:32,440
request being made, but it almost
like replaced the entire like what's it called

560
00:38:34,280 --> 00:38:38,320
stuff dream Oh so much terminology in
there, pipeline stream just to throw buzzwords

561
00:38:39,039 --> 00:38:43,760
Exchance. Yeah, we won't know
if you're right or wrong, so that's

562
00:38:43,840 --> 00:38:49,719
right. Yeah, blah blah,
folk joined, blah blah, take him

563
00:38:49,719 --> 00:38:58,239
till. Yeah, it's like Laura
mepsom but like for Exchance operators. Oh

564
00:38:58,320 --> 00:39:05,639
my gosh. Yeah, I started
playing with Combined latest recently. No,

565
00:39:05,760 --> 00:39:08,800
I only use ZIP where maybe sometimes
you have like those cases where you have

566
00:39:09,840 --> 00:39:15,079
like a parameter from the router and
you also want to do something else,

567
00:39:15,199 --> 00:39:17,880
but you need to do something else, like in between, where normally you

568
00:39:17,880 --> 00:39:22,960
could just get like the flocket and
then pass it down to a switch map

569
00:39:22,440 --> 00:39:25,320
and then do that, but sometimes
you need to do another thing. Maybe

570
00:39:25,320 --> 00:39:29,079
you need to get some data from
here, but you also need to get

571
00:39:29,199 --> 00:39:35,360
data that comes that uses the like
the parameter here, and then so you

572
00:39:35,440 --> 00:39:37,760
cont cons and then use it both
of them and then you subscribe and you

573
00:39:37,920 --> 00:39:44,159
like then it's it's yeah, that's
cool. I feel like I want to

574
00:39:44,159 --> 00:39:47,239
tell JS operated story, but I
wasn't sure. I listened like she was

575
00:39:47,280 --> 00:39:52,760
getting ready to wrap up there now
I'm now I'm sitting I'm tatering on the

576
00:39:52,800 --> 00:39:54,280
brink and whether tell my story or
not? No, no, I want

577
00:39:54,320 --> 00:39:57,880
to hear this story. I was
probably not that exciting. I've probably built

578
00:39:57,880 --> 00:40:00,039
it up like I was just thinking
that it. I know we've gone way

579
00:40:00,039 --> 00:40:05,280
off topic, right, But as
we started off talking about what I like

580
00:40:05,320 --> 00:40:09,679
about forms and now this has become
what I like about rsts. One thing

581
00:40:09,719 --> 00:40:14,639
I do like is is that you
can just like suddenly discover some operator just

582
00:40:14,679 --> 00:40:16,840
because you suddenly need it, and
you go and try and figure out how

583
00:40:16,840 --> 00:40:20,239
am I going to do this and
find there is an operator for that.

584
00:40:20,679 --> 00:40:24,679
When I had recently there was this
weird EDU case on the project that I'm

585
00:40:24,679 --> 00:40:30,960
working on where occasionally you have you'd
have some pipelines that included going off to

586
00:40:31,079 --> 00:40:35,920
like an authorization service to get you
know, make sure that the user is

587
00:40:35,920 --> 00:40:39,360
logged in, and that there's this
weird educase that if you happen to refresh

588
00:40:39,360 --> 00:40:45,639
your page at about the same time
that your session was expiring now, that

589
00:40:45,639 --> 00:40:49,599
that service would just return like undefined
or null or something, and it would

590
00:40:49,639 --> 00:40:52,480
just everything would blow up on the
page because this like checking your service was

591
00:40:52,559 --> 00:40:55,599
just like at the top of a
long pipeline, and I was like,

592
00:40:57,039 --> 00:40:58,880
on Earth am I going to resolve
this? And I was like, what

593
00:40:58,920 --> 00:41:02,639
I really need is some way of
only like continuing down the line if there's

594
00:41:02,840 --> 00:41:06,360
if there's something to do, and
and I found there. I think it's

595
00:41:06,360 --> 00:41:08,920
something like skip while, and so
I could just put that in my pipe.

596
00:41:08,920 --> 00:41:12,760
At the top, you hit the
old service, then you got skip

597
00:41:12,840 --> 00:41:15,800
while. Basically the thing that he
returned is equal to no, or is

598
00:41:15,840 --> 00:41:20,320
equal to undefined or something, and
literally putting that in there just meant that

599
00:41:20,400 --> 00:41:22,159
it hit the old service, it
gets the undefined, it goes nope,

600
00:41:22,280 --> 00:41:24,440
wait for the next one, and
it just all worked to fix it.

601
00:41:24,440 --> 00:41:29,000
And it's like it's brilliant. One
line, simple little line. I should

602
00:41:29,000 --> 00:41:32,679
better be in my pick skip one. That's that's very smart. Do you

603
00:41:32,719 --> 00:41:36,599
think a filter would have worked as
well? I'm just thinking about it.

604
00:41:37,199 --> 00:41:40,639
Yeah, yeah, possibly that's true. Time. Anyway, here ends my

605
00:41:40,719 --> 00:41:44,559
story. I liked it. I'll
buy the story bek for it. Yeah,

606
00:41:44,719 --> 00:41:47,000
thanks, man, I appreciate it. It's good. That's good.

607
00:41:47,039 --> 00:41:52,840
Sorry, I'm just looking at all
these ones that I haven't even like pluck.

608
00:41:54,360 --> 00:41:58,800
Basically you could pass in the property
name in an object and it would

609
00:41:58,800 --> 00:42:00,920
just get that for instead of went
into the map and then get it in

610
00:42:01,000 --> 00:42:04,519
the returnity. So you just see, like for example, if it was

611
00:42:04,559 --> 00:42:08,360
like there are params, you could
just say pluck the pass and the parameter

612
00:42:08,480 --> 00:42:12,559
rise name, and then he just
returns the value for you. So it's

613
00:42:12,599 --> 00:42:16,199
really, really really I've heard of
pluck from Underscore. I think it's it's

614
00:42:16,199 --> 00:42:22,840
pretty cool. I like that.
I think that's my pick. I think

615
00:42:22,000 --> 00:42:27,760
mine would be. I like share
and share reeply. It just just makes

616
00:42:27,760 --> 00:42:32,440
everything nice. Yeah, which one
sure sare reply? Yeah? Like looking

617
00:42:32,480 --> 00:42:37,800
each one of these up as you
guys know. So when you all are

618
00:42:37,840 --> 00:42:42,960
looking for new ways to do their
new methods or new ways to do this,

619
00:42:43,320 --> 00:42:46,280
are you just blindly googling or is
there like a resource whether it's our

620
00:42:46,400 --> 00:42:50,800
x J stocks or something else that
you is like your go to bookmarks,

621
00:42:51,360 --> 00:42:55,360
look for it. If you choose
an adventure thing on the unreactive x dot

622
00:42:55,480 --> 00:43:01,119
io where you can you literally just
follow this this this tree. I want

623
00:43:01,199 --> 00:43:07,280
to something that creates that. You
know, you're you're blowing my mind right

624
00:43:07,320 --> 00:43:13,760
now. They removed it in a
new one, but I think it's back

625
00:43:13,800 --> 00:43:16,360
now and a new one. So
yeah, it's like a decision tree operator

626
00:43:16,440 --> 00:43:22,639
decision tree. Yeah, like I
want to do you need to do Unie.

627
00:43:22,960 --> 00:43:25,960
It's it's it's really cool. There's
also this great place called like stackle

628
00:43:27,079 --> 00:43:30,400
flow. Never I don't know if
anyone has used it. Yeah, well

629
00:43:30,440 --> 00:43:32,719
that's that's where I learned. Yeah, that's where I figured. Yeah.

630
00:43:32,960 --> 00:43:36,880
It's like I type in what I'm
trying to do and someone says, you

631
00:43:36,880 --> 00:43:39,800
know, just use this, and
I'm like, didn't say you're doing it

632
00:43:39,840 --> 00:43:45,639
wrong? Really amazing. Don't tell
anybody about it. By the way,

633
00:43:45,159 --> 00:43:52,199
it's your competitive advantage. I need
to have a career. Well, are

634
00:43:52,239 --> 00:44:00,559
there any other forms or reactive or
before we do picks on that you want

635
00:44:00,599 --> 00:44:05,000
to give a shout out to shout
out, I would say, I've heard

636
00:44:05,000 --> 00:44:08,039
of this thing that Brown did.
I think it's called formally or something like

637
00:44:08,079 --> 00:44:12,719
that. There's supposed to be like
a library on top of reactive forms that

638
00:44:12,719 --> 00:44:15,360
makes it easy for you to do
template stuff. But reactive form's way,

639
00:44:15,440 --> 00:44:19,840
but would you just like make it
it easy to compose. I've heard of

640
00:44:19,920 --> 00:44:22,639
that. Never really used that because
we really can't, like we have to

641
00:44:22,800 --> 00:44:27,199
have full control over everything. That's
that's one thing I think people can look

642
00:44:27,239 --> 00:44:30,800
at as well feel free to.
I've extensively given talks about reactive forms and

643
00:44:30,880 --> 00:44:36,000
you can go my slices dot com, slash sandi usif everywhere. Just google

644
00:44:36,000 --> 00:44:39,840
sandi USIF and google reactive forms.
You see host a number of talks that

645
00:44:39,920 --> 00:44:44,119
come up, and the slides are
all there. I also think I would

646
00:44:44,159 --> 00:44:49,400
really recommend that anybody listening maybe we
should come together and see how we can

647
00:44:49,599 --> 00:44:52,880
contribute more to the Reactive Forms repo. Maybe it needs a little bit of

648
00:44:52,920 --> 00:44:57,519
love. I've never really contributed on
a large scale to an open source project.

649
00:44:57,519 --> 00:45:00,320
I have like angler, so maybe
that this would be a good challenge

650
00:45:00,320 --> 00:45:04,360
for me myself to go in there. But I think it will be really

651
00:45:04,360 --> 00:45:07,800
really good useful. So let's create
the features now I'm missing that we want.

652
00:45:07,079 --> 00:45:09,679
I think that'll be really amazing as
well. You can open up a

653
00:45:09,679 --> 00:45:19,400
pull request to deprecate the template based
for literally just remove it from the repo.

654
00:45:19,800 --> 00:45:25,760
I fixed it for you. Well, what about Brooks or Chris picks

655
00:45:25,800 --> 00:45:30,719
for today other than the operators aforementioned? Yah ahead, Yeah, Well I'm

656
00:45:30,719 --> 00:45:37,559
going to pick skip while because it's
what a lovely all right, operator,

657
00:45:38,320 --> 00:45:45,400
Yeah, I've recently been. I
finished The Mandalorian on Disney Plus and it

658
00:45:45,519 --> 00:45:50,360
was quite fabulous, and then I
thought I would try A friend of mine

659
00:45:50,519 --> 00:45:53,599
was just banging on about how I
should watch Star Wars Rebels, which is

660
00:45:53,599 --> 00:45:58,639
one of the animated series, and
I was like, okay, So I

661
00:45:58,880 --> 00:46:01,679
decided to start watching the Clone War
was animated series instead. I don't know,

662
00:46:01,800 --> 00:46:07,679
just a spiiting maybe, but I'd
never bother with it because it looked

663
00:46:07,719 --> 00:46:10,000
awful. But it turns out I
really like it. It's really good.

664
00:46:10,159 --> 00:46:15,920
How There's one thing that baffled me
initially is that you're not supposed to watch

665
00:46:15,920 --> 00:46:17,760
it in order, and I didn't
know why. Apparently, in the first

666
00:46:17,760 --> 00:46:25,079
three seasons they they just jump all
over the chronology all over the place,

667
00:46:25,280 --> 00:46:30,719
and so in fact, on Star
Wars dot Com they have published the order

668
00:46:30,760 --> 00:46:32,360
that you should watch, and so
the first episode you should watch if you've

669
00:46:32,400 --> 00:46:37,360
never seen it before is season two, episode sixteen. I personally think that's

670
00:46:37,519 --> 00:46:42,000
absolutely mental, but as it turned
out, I did that. I watched

671
00:46:42,000 --> 00:46:44,239
a few of them. Now,
like the second one you watch is like

672
00:46:44,320 --> 00:46:49,239
season one, episode sixteen, and
it follows on directly from the one that

673
00:46:49,719 --> 00:46:52,920
you just watched, which was in
the next season. It's insane, and

674
00:46:52,159 --> 00:46:55,480
so I'm going to pick the Clone
Wars. But also I'm going to put

675
00:46:55,480 --> 00:47:01,800
in a link here for the correct
chronology cool viewing order so that you too

676
00:47:02,320 --> 00:47:06,320
can watch it. That's a lot
of work. It kind of is.

677
00:47:06,360 --> 00:47:09,000
Well, they drop it, like
I'm halfway through season three. Supposedly they

678
00:47:09,079 --> 00:47:14,559
just go to just proper episode viewing
order. But yeah, it's like,

679
00:47:14,599 --> 00:47:16,000
I want to watch what was cool? I have to get out my list

680
00:47:16,079 --> 00:47:17,840
right, which is the last one
I watched? And what one am I

681
00:47:17,880 --> 00:47:21,199
going to watch next? But I
feel like it's gonna be worth It's gonna

682
00:47:21,199 --> 00:47:24,119
be a worthwhile investment of my time
and energy. I think cool cool,

683
00:47:24,199 --> 00:47:29,719
Yeah, I have I have one
pick today. It's wearing crocs with socks

684
00:47:29,920 --> 00:47:34,039
because we're all in quarantine so no
one can no one can see what I'm

685
00:47:34,079 --> 00:47:38,000
doing, so I really enjoy the
late cushy feeling and the warmth of my

686
00:47:38,119 --> 00:47:43,320
socks. It's it's very I can't
understand how crops are even a thing,

687
00:47:43,719 --> 00:47:47,400
Like they should just be making me
so happy. They should launched into the

688
00:47:47,440 --> 00:47:51,280
sun. As long as no one, as long as no one sees me,

689
00:47:51,559 --> 00:47:55,079
I think it's fine. Some some
some friends about turned up my house

690
00:47:55,079 --> 00:47:58,880
one day when when when you could
actually go to other people's houses, and

691
00:47:59,039 --> 00:48:02,480
like both of that kids were just
wearing his new pairs of crooks, and

692
00:48:02,519 --> 00:48:06,480
I just like took one look,
said, why do you hate your children?

693
00:48:07,360 --> 00:48:12,480
They're comfy and kids with kids,
you don't have to, you know,

694
00:48:12,599 --> 00:48:17,519
tie the shoelaces and everything. Right, that's true? Yeah too much.

695
00:48:19,920 --> 00:48:23,199
Let me see Amazon dot com.
I think vell Crow on an adult

696
00:48:23,320 --> 00:48:30,559
shoe would be even more scoffed at
than a croc sock shoe situation. Maybe

697
00:48:30,719 --> 00:48:36,639
I can't argue with that, but
I would like bel Crow shoes because I

698
00:48:36,639 --> 00:48:39,360
hate tying my shoes. My gosh, this makes me so happy. I

699
00:48:39,400 --> 00:48:44,000
tie him once and then wait until
you know, and then shove. I'm

700
00:48:44,079 --> 00:48:46,440
surprised you even bother. I mean, just you know, what's the well

701
00:48:46,480 --> 00:48:50,480
then people people pointed out to you
all the time, and that's just noy.

702
00:48:50,679 --> 00:48:52,920
That's that's why you tie him.
So scenario, I's like, haha,

703
00:48:53,000 --> 00:48:57,840
shoes untied their slick and you're like, yeah, thanks, Yeah,

704
00:48:57,960 --> 00:49:00,679
I wait one of day I get
any shoes, take the shoelaces out,

705
00:49:01,159 --> 00:49:06,480
Just get some like duct tape and
just wrap it around, round and roundo

706
00:49:06,480 --> 00:49:10,079
and round until you get the perfect
comfort. I've gotten. I've gotten the

707
00:49:10,119 --> 00:49:15,280
elastic shoelaces like that you pull,
you know, and then you never have

708
00:49:15,360 --> 00:49:17,079
to time. When I was on
the rowing team, we used to take

709
00:49:17,119 --> 00:49:22,920
our nikes and like not the end
of the lace so and then cut it.

710
00:49:22,000 --> 00:49:27,199
So basically you just slip it on
and off, but it's still last.

711
00:49:27,519 --> 00:49:30,880
So that's what I still do to
tend shoes. So I've actually gotten

712
00:49:30,920 --> 00:49:35,880
out of tying as an adult.
I love that. Pick Brooks, thank

713
00:49:35,880 --> 00:49:38,440
you for that. I definitely want
to give a shout out to Deborah Carrata.

714
00:49:38,519 --> 00:49:45,679
She has an RXGS in Angular course
on plural site and it's just quick,

715
00:49:45,800 --> 00:49:51,159
like three four hour course for going
through our XGS and then also another

716
00:49:51,280 --> 00:49:54,360
site if you're like, oh,
Plural site's kind of expensive or what have

717
00:49:54,440 --> 00:49:58,679
you? You to me is my
second go to, and they have a

718
00:49:58,719 --> 00:50:00,760
course on our XGS as well,
and I think right now there's like a

719
00:50:00,800 --> 00:50:05,400
flash sale going on for like eleven
bucks to get the course, so definitely

720
00:50:05,440 --> 00:50:08,199
check those out if you were listening
today and feeling a bit lacking in the

721
00:50:08,719 --> 00:50:15,480
understanding department. But yeah, Sonny, tell us any other picks that you

722
00:50:15,599 --> 00:50:21,960
have and where people can find you
online. So I'm easy. You just

723
00:50:22,000 --> 00:50:23,039
searched that the use of S A, N, I, y U,

724
00:50:23,119 --> 00:50:29,119
SUF, Google or anywhere that's my
usual name. Everywhere you can find anybody

725
00:50:29,159 --> 00:50:31,559
that looks as handsome as this,
and it just happens not to be me.

726
00:50:32,079 --> 00:50:36,800
You let me know to let on
the flip side, I'm also working

727
00:50:36,880 --> 00:50:42,000
on a beginner course to program actually, so as you know, I have

728
00:50:42,159 --> 00:50:45,280
courses on Linda and LinkedIn dot com. When you I've been lucky enough that

729
00:50:45,320 --> 00:50:50,760
I have like what fifty around twelve
thirteen thousand, you know, followers,

730
00:50:50,800 --> 00:50:52,159
and you know there's a message that
you can No, I want to learn

731
00:50:52,159 --> 00:50:54,679
how to code. I want to
start coded. You know, how do

732
00:50:54,719 --> 00:50:58,599
I learn how the code? Should
I be learning ANGI or React? I'm

733
00:50:58,639 --> 00:51:01,159
like, no, you should be
learning how you should be learning JavaScript first?

734
00:51:01,599 --> 00:51:05,440
Like, so I see a lot
of people learning like they want to

735
00:51:05,519 --> 00:51:07,159
learn how to code. But you
know, I always say, we have

736
00:51:07,199 --> 00:51:10,960
a lot of programmers that are plumbers
but not engineers. A plumber could come

737
00:51:12,039 --> 00:51:15,280
fix your five, and then engineer
will know that you should buy this type

738
00:51:15,280 --> 00:51:17,480
of pie. You should hang up
at this pie so that this problem doesn't

739
00:51:17,519 --> 00:51:22,400
occur. And I'm not trying to
like shit on anybody or sorry, excuse

740
00:51:22,440 --> 00:51:23,679
my friends, but I'm not trying
to like, you know, be bad

741
00:51:23,719 --> 00:51:28,079
to anybody. But it's just that's
just the reality. So and the reason

742
00:51:28,119 --> 00:51:31,079
for that is people don't learn the
conceptuals properly. And I used to be.

743
00:51:31,360 --> 00:51:36,280
I've always said that my biggest cigarette
was jumping into frameworks too soon,

744
00:51:36,800 --> 00:51:39,639
Like I didn't give javascripts long enough
to actually get those concepts down. So

745
00:51:39,800 --> 00:51:43,719
even still to this day, sometimes
I'm like, JavaScript or is that this

746
00:51:43,880 --> 00:51:46,719
framework? Like which one does that
belong to? So I totally agree with

747
00:51:46,719 --> 00:51:49,559
you and back you up on that. I'm sunny. I love that.

748
00:51:49,599 --> 00:51:52,920
So you said you have courses,
So I'm working on one now. I'm

749
00:51:52,960 --> 00:51:57,679
really and I'm hoping maybe by end
of July and June, sorry that it

750
00:51:57,760 --> 00:52:00,199
might be out. I've just started. But it's going to be very very

751
00:52:00,280 --> 00:52:06,719
like heavily JavaScript based, but conceptuals
like where we're going to be using real

752
00:52:06,760 --> 00:52:10,679
world examples to explain what a variable
is you know whatever, I cannot wait.

753
00:52:10,719 --> 00:52:13,519
So you're going to tweet about it
when it comes out, right,

754
00:52:13,519 --> 00:52:15,320
because I'm going to be there.
I'm going to open up a commune soon

755
00:52:15,440 --> 00:52:20,400
page somewhere soon sometime soon to just
watch on my Twitter. But it's going

756
00:52:20,440 --> 00:52:24,119
to be free as well, absolutely
free, unlike other courses that it's just

757
00:52:24,159 --> 00:52:28,800
maybe YouTube only. I'm going to
take the time to bite size it so

758
00:52:28,840 --> 00:52:32,880
that you can actually get little excerpts
on like platforms like Instagram, platforms like

759
00:52:32,880 --> 00:52:37,599
Twitter two minute excerpt that would maybe
nudge you potentially to go watch it on

760
00:52:37,920 --> 00:52:42,239
the actual web page and everything that
it's going to be one hundred percent free

761
00:52:42,280 --> 00:52:45,760
because I get that message so much
and I think it's not much something about

762
00:52:45,800 --> 00:52:47,280
it. So and it's going to
be like no other I hope, and

763
00:52:47,360 --> 00:52:52,280
so it stay tuned. Cool,
awesome. It's the first announcement of that,

764
00:52:52,360 --> 00:52:55,320
So now I really have to finish
it. You're like, oh,

765
00:52:55,400 --> 00:53:00,480
what date did I just set?
That's really really cool. Well, thank

766
00:53:00,519 --> 00:53:04,239
you so much for coming on today. Man, this was a really cool

767
00:53:04,280 --> 00:53:07,800
topic and I love chatting with you. It's a really really neat influence in

768
00:53:07,840 --> 00:53:10,679
our community. So thank you for
just always supporting people. I see you

769
00:53:10,719 --> 00:53:14,920
out there all the time, lifting
people up in the Angular community and just

770
00:53:14,920 --> 00:53:16,719
want to thank you for that.
Hi, my pleasure man. You know,

771
00:53:16,760 --> 00:53:20,079
the Angler Comedian has given me so
much. Is only right for me

772
00:53:20,119 --> 00:53:22,719
to give as little as I can
or as much as I can as well,

773
00:53:22,840 --> 00:53:24,920
So thank you. Pleasures are mine. Awesome, awesome, Well,

774
00:53:24,920 --> 00:53:27,920
I think that's a wrap. We'll
see you all next time.
