1
00:00:06,519 --> 00:00:09,720
Speaker 1: Hey everybody, and welcome back to another episode of Adventures

2
00:00:09,759 --> 00:00:12,919
in Angular. This week, on our panel we have Richard

3
00:00:12,919 --> 00:00:17,719
c Tole, Howdy Howdy, Subert Nishra. Hello, I'm Charles Maxwood

4
00:00:17,719 --> 00:00:19,440
from devchat dot TV. I'm just going to do a

5
00:00:19,480 --> 00:00:22,320
quick shout out. Got a new thing going podcast bootcamp

6
00:00:22,359 --> 00:00:24,359
dot I go check it out. We have a special

7
00:00:24,399 --> 00:00:26,280
guest this week, and that's Philip. Philip, do you want

8
00:00:26,280 --> 00:00:27,800
to tell us who you are, why you're famous?

9
00:00:27,960 --> 00:00:31,800
Speaker 2: Hey, guys, So I'm Philip and I'm from Stuttgart and jun. Yeah,

10
00:00:31,920 --> 00:00:36,320
I'm I'm so off engineer since three years, since twenty eighteen,

11
00:00:36,759 --> 00:00:43,200
and yeah, I'm really passionated about front and technologies like HTMLCSS, JAVASCRIK,

12
00:00:43,280 --> 00:00:47,200
Angula and yeah, much more things like that. And yeah,

13
00:00:47,200 --> 00:00:49,759
I'm really excited to be in your podcast today.

14
00:00:50,079 --> 00:00:52,920
Speaker 1: Awesome, Well, we're happy to have you. You wrote an

15
00:00:53,000 --> 00:00:56,000
article that we found on the internet. We'll put a

16
00:00:56,000 --> 00:00:57,960
link to it in the show notes, but it talked

17
00:00:57,960 --> 00:01:01,679
about having central error handling an Angular and I love

18
00:01:01,759 --> 00:01:04,599
the subtitles. Learn how to automatically I should I should

19
00:01:04,599 --> 00:01:07,760
pull out my announcer works. Learn how to automatically catch

20
00:01:07,799 --> 00:01:11,120
all errors? You know, web application written in Angular and

21
00:01:11,200 --> 00:01:14,120
process them accordingly. Do you want to just give us

22
00:01:14,120 --> 00:01:16,599
the rundown real quick on kind of the ten thousand

23
00:01:16,599 --> 00:01:19,200
foot view what is generally about, and then we can

24
00:01:19,239 --> 00:01:22,159
dive in and talk about how you've put this together

25
00:01:22,239 --> 00:01:24,879
and what the advantages of disadvantages are.

26
00:01:25,120 --> 00:01:28,079
Speaker 2: Yeah. Sure. So it was when I worked at a

27
00:01:28,120 --> 00:01:32,239
project from my company from where we created a new

28
00:01:32,560 --> 00:01:36,480
Angular application from scratch. And most of the times you

29
00:01:37,560 --> 00:01:42,599
have some aHVP requests to some seconds, and you have

30
00:01:42,760 --> 00:01:46,680
some kind of things which are running into application which

31
00:01:46,760 --> 00:01:50,640
might cause some errors. And then I just was did

32
00:01:50,680 --> 00:01:55,560
some research about how yeah, could be a solution to

33
00:01:55,959 --> 00:01:58,840
handle errors at a central point so that you're not

34
00:01:59,079 --> 00:02:02,680
so that's not necessary to handle each error at a

35
00:02:02,719 --> 00:02:07,239
separate place. And this is when I had the idea

36
00:02:07,400 --> 00:02:12,599
to Yeah, I use Angular intersectors or central components to

37
00:02:13,199 --> 00:02:16,360
display the error mes just in a consistent way for

38
00:02:16,439 --> 00:02:20,120
the user. So, and a big advantage of this is

39
00:02:20,120 --> 00:02:24,360
that when somehow an error occurs in your application, it's

40
00:02:24,800 --> 00:02:28,120
made sure that all errors are catched by this error

41
00:02:28,120 --> 00:02:31,240
handling concept, and so you, as a developer, you do

42
00:02:31,240 --> 00:02:34,759
not need to think about handling each error in the

43
00:02:34,800 --> 00:02:38,680
application so you just write your features and the central

44
00:02:38,840 --> 00:02:41,639
error handling is doing the rest for you. That was

45
00:02:41,680 --> 00:02:45,360
the initial idea of that.

46
00:02:46,439 --> 00:02:50,840
Speaker 3: Or any other like like I got someone defined or something.

47
00:02:50,960 --> 00:02:53,800
Speaker 2: So it's the latter one. So you get all errors

48
00:02:53,840 --> 00:02:58,120
that are thrown in your front end application. And yeah,

49
00:02:58,439 --> 00:03:01,199
and this also includes the HTTP errors.

50
00:03:01,360 --> 00:03:03,520
Speaker 1: Yeah, I want something that says quit screwing up my

51
00:03:03,639 --> 00:03:06,759
app to the user. Right, what do you do?

52
00:03:08,120 --> 00:03:11,719
Speaker 2: Yes? So, sometimes you're not sure when an error could occur.

53
00:03:11,960 --> 00:03:15,319
So maybe you are including a body library and you

54
00:03:15,360 --> 00:03:18,280
do not know the code so good, or you have

55
00:03:18,360 --> 00:03:21,639
something like micro fundans and you have a lot of

56
00:03:22,360 --> 00:03:25,439
lots of small parts that you cannot control all the time.

57
00:03:25,800 --> 00:03:29,560
And then sometimes an error occurs somewhere where you didn't

58
00:03:29,599 --> 00:03:33,919
expected it, and then you, yeah, you're sure that your

59
00:03:34,360 --> 00:03:38,400
global error handler class will catch this error and then

60
00:03:38,520 --> 00:03:42,319
will show a consistent error message dialogue to the user.

61
00:03:43,000 --> 00:03:45,159
Speaker 1: But I just want to clarify real quick. So we're

62
00:03:45,199 --> 00:03:49,879
talking about the user focused experience, not the developer focused experience.

63
00:03:50,280 --> 00:03:54,479
Speaker 2: Yes, so right now, it's mainly the user focused experience.

64
00:03:55,159 --> 00:03:59,520
So if you have an application which is meant to

65
00:04:01,280 --> 00:04:04,560
or to show consistent error messages to the user, and

66
00:04:04,599 --> 00:04:07,560
to make sure that it's one hundred percent of your

67
00:04:08,080 --> 00:04:12,560
error cases, this error message will be shown. Then this

68
00:04:12,639 --> 00:04:16,720
is a good concept to show a consistent error message

69
00:04:16,800 --> 00:04:19,279
as far saddle as a dialogue which will be shown

70
00:04:19,480 --> 00:04:21,399
or an alert something like that.

71
00:04:21,680 --> 00:04:22,279
Speaker 1: Gotcha.

72
00:04:22,399 --> 00:04:26,079
Speaker 4: This is a very actually very interesting topic for me

73
00:04:26,199 --> 00:04:28,240
as well. And I like the way you approach it

74
00:04:28,319 --> 00:04:31,879
in your article. And I guess you know, at this

75
00:04:32,040 --> 00:04:34,959
early stage in the conversation, maybe you can just give

76
00:04:35,040 --> 00:04:37,879
us like a bit side view of how you would

77
00:04:38,319 --> 00:04:43,680
approach this. I'm talking from an application architecture perspective as

78
00:04:43,680 --> 00:04:46,839
well as the file structure. How would you go about

79
00:04:47,120 --> 00:04:50,399
start thinking about this concept and how would you put

80
00:04:50,439 --> 00:04:52,639
it together in your Angler application? Yeah?

81
00:04:52,680 --> 00:04:57,000
Speaker 2: Sure, so in your Angler application you usually have some

82
00:04:57,079 --> 00:05:02,040
structures with modules. You have multiple modules which are containing

83
00:05:02,519 --> 00:05:07,000
multiple components, and the components are responsible for the user interface.

84
00:05:07,800 --> 00:05:12,879
And yeah, for each module, you can define multiple services

85
00:05:12,920 --> 00:05:15,920
and your logic. And next to these modules, to these

86
00:05:15,959 --> 00:05:19,600
feature modules that represent some kind of features of your application,

87
00:05:20,160 --> 00:05:24,079
you have some shared module or one one shared module

88
00:05:24,399 --> 00:05:27,279
and one core module. Usually the shared module is a

89
00:05:27,319 --> 00:05:32,879
module that contains repeatable components or pipes or services something

90
00:05:32,920 --> 00:05:36,160
like that, and your core module is meant to be

91
00:05:36,360 --> 00:05:41,040
there to initialize basic or the main parts of the application.

92
00:05:41,319 --> 00:05:44,079
And as a basic part of your application, I see

93
00:05:44,079 --> 00:05:48,439
the global error handling. So in this core module, which yeah,

94
00:05:48,480 --> 00:05:51,240
as I said, which will be next to your feature modules,

95
00:05:51,680 --> 00:05:56,800
you can initialize for example this h error interceptor or

96
00:05:56,920 --> 00:06:00,879
an error handler class that in the sets all of

97
00:06:00,920 --> 00:06:04,839
your errors in your application. And for example error handsler

98
00:06:04,920 --> 00:06:09,480
class could inject an error handless service and the service

99
00:06:09,759 --> 00:06:15,839
could handle the whole interaction with what your application will

100
00:06:15,879 --> 00:06:19,839
be is doing with the aerosol just joining some aero

101
00:06:20,000 --> 00:06:23,959
dialogue or logging into the console or sending back some

102
00:06:24,160 --> 00:06:26,560
logs to the server and something like this.

103
00:06:27,439 --> 00:06:30,079
Speaker 4: Yeah, I think, yeah, you mentioned something pretty interesting. I

104
00:06:30,079 --> 00:06:34,519
mean when you mentioned initialization, immediately had taken aback and

105
00:06:34,560 --> 00:06:39,360
I'm thinking about the different life cycle hooks for Angular.

106
00:06:40,240 --> 00:06:43,160
So when you talk about initialization, what would be the

107
00:06:43,199 --> 00:06:45,920
best place or best time to do that in the

108
00:06:45,959 --> 00:06:48,639
life cycle hooks. Is that we're talking about the engine

109
00:06:48,680 --> 00:06:50,800
on in it for the app component, or we're talking

110
00:06:50,800 --> 00:06:55,480
about the initializer, so just before the app actually boots.

111
00:06:55,240 --> 00:06:59,639
Speaker 2: Up, Yes, I think so, basically you have to check

112
00:06:59,720 --> 00:07:03,680
that this core module will be included into the app module.

113
00:07:03,759 --> 00:07:06,759
So the app module is your root module of the

114
00:07:06,759 --> 00:07:10,439
whole application, and the core module will be imported into

115
00:07:10,519 --> 00:07:14,199
the app module. And to make sure that the life

116
00:07:14,199 --> 00:07:18,079
cycle is also included or respected with this error handling,

117
00:07:18,399 --> 00:07:22,040
I also showed in my article that you have to

118
00:07:22,040 --> 00:07:25,439
make sure that you are waiting for the zone to

119
00:07:25,480 --> 00:07:29,160
be defined or to be initialized, and then for some

120
00:07:29,240 --> 00:07:32,240
of the error message will be shown in a dialogue

121
00:07:32,319 --> 00:07:35,959
if its obcuous, and for some during the one idiot

122
00:07:35,959 --> 00:07:39,920
methods or after you in it life cycle books, it's

123
00:07:40,000 --> 00:07:44,079
also necessary to show the error messages properly.

124
00:07:44,600 --> 00:07:47,279
Speaker 4: Yeah, because I'm thinking of more of a scenario where

125
00:07:47,600 --> 00:07:51,519
you know, like you want to do some initialization logic way,

126
00:07:52,079 --> 00:07:55,600
depending on exactly what you're doing and your use case,

127
00:07:55,680 --> 00:07:58,040
you might want to do it in an initializer, which

128
00:07:58,120 --> 00:08:02,120
is what happened, which is gets triggered shortly before the

129
00:08:03,079 --> 00:08:06,959
gets footstrapped. So I'm just wondering what if an error

130
00:08:06,959 --> 00:08:11,480
ocared within that during that phase. What do you think

131
00:08:11,519 --> 00:08:13,560
the way that you structured it or the way you've

132
00:08:13,600 --> 00:08:16,079
explained it in your article, do you think that would

133
00:08:16,079 --> 00:08:18,160
be handled in that scenario as well?

134
00:08:18,600 --> 00:08:21,800
Speaker 2: I'm not sure, so I think it is handled right

135
00:08:21,839 --> 00:08:25,480
now like this. It wasn't initially even my idea, but

136
00:08:25,639 --> 00:08:29,240
I wrote the article I think a year ago, and

137
00:08:29,319 --> 00:08:33,720
some weeks or months later some a guy created a

138
00:08:33,720 --> 00:08:37,759
purrikfest at my example repository and told me that it

139
00:08:37,840 --> 00:08:41,159
will be necessary to inject the anchi zone into my

140
00:08:41,200 --> 00:08:46,559
global error handler to open an error dialogue with the

141
00:08:46,679 --> 00:08:50,639
within the callback of the anchie zone and the zone

142
00:08:50,759 --> 00:08:55,039
yeah when when it runs, it will probably open the

143
00:08:55,399 --> 00:08:59,360
aero dialogue if also if the application is initializing.

144
00:08:59,240 --> 00:09:01,279
Speaker 4: Mm hmm yeah.

145
00:09:01,440 --> 00:09:05,440
Speaker 3: Usually what I'm what I'm thinking is harding, Richard ask,

146
00:09:06,120 --> 00:09:11,559
maybe I'm just guessing it that normally you will inject

147
00:09:11,600 --> 00:09:14,360
your component and usually you will get errors from your

148
00:09:14,360 --> 00:09:18,320
component accessing a service or or getting the data to

149
00:09:18,639 --> 00:09:23,399
back to the component, and as you're handling the inside

150
00:09:23,440 --> 00:09:26,240
a service and that extending error handled. So I think

151
00:09:26,600 --> 00:09:30,159
it should catch all the at least temporary irrelated error

152
00:09:30,440 --> 00:09:32,000
or the data related.

153
00:09:31,679 --> 00:09:34,759
Speaker 4: Error because they load. They will load after the service

154
00:09:35,639 --> 00:09:36,120
is loaded.

155
00:09:36,360 --> 00:09:38,440
Speaker 1: But do you have a good way to test this.

156
00:09:38,600 --> 00:09:39,720
I'm curious to.

157
00:09:39,600 --> 00:09:43,759
Speaker 2: Test errors when they are flown while initializing.

158
00:09:43,200 --> 00:09:46,279
Speaker 1: The h yeah, or and the solution that you kind

159
00:09:46,279 --> 00:09:47,759
of pulled together with this in general.

160
00:09:48,000 --> 00:09:50,919
Speaker 2: Yeah, so you can in general test the solution as

161
00:09:50,960 --> 00:09:55,279
I showed in my example application. So for example, you

162
00:09:55,279 --> 00:09:58,840
could just frow some errors in your application with the

163
00:09:59,720 --> 00:10:03,399
big flow error or throw a new error syntypes of

164
00:10:03,720 --> 00:10:08,399
typescript or JavaScript, and then you can check if the

165
00:10:08,639 --> 00:10:11,440
error is catched by your global error handler. Or you

166
00:10:11,440 --> 00:10:15,679
could also try to send weak first to the back

167
00:10:15,799 --> 00:10:18,759
end or to some to some mocked back end which

168
00:10:18,799 --> 00:10:23,399
will return some malicious errow code or status code like

169
00:10:23,840 --> 00:10:28,039
four hundred four or something or five hundred and one.

170
00:10:28,399 --> 00:10:31,399
So these typical error codes from the back end, and

171
00:10:31,919 --> 00:10:35,840
you can check if your error handler's working. And yeah,

172
00:10:35,919 --> 00:10:39,919
for these cases, the error handler should should catch the errors.

173
00:10:40,159 --> 00:10:43,080
Speaker 4: Yeah. There was another thing that I also picked up

174
00:10:43,399 --> 00:10:46,039
from the article, which is well written, by the way,

175
00:10:46,080 --> 00:10:48,480
so congrats on that. I should have mentioned that earlier on.

176
00:10:49,159 --> 00:10:53,159
But you mentioned that in Angular Vision ten it was

177
00:10:53,200 --> 00:10:57,879
not possible using instance of operator within the global error

178
00:10:57,960 --> 00:11:01,279
handler to distinguish if it is an HDP ERA or not.

179
00:11:01,720 --> 00:11:04,519
Is this still a limitation in the latest angle division.

180
00:11:04,559 --> 00:11:07,960
Speaker 2: I'm not not quite sure because I haven't tried it

181
00:11:08,480 --> 00:11:12,200
until then. If it's working, but I think, yeah, the

182
00:11:12,240 --> 00:11:18,120
problem is inside of the the error hander class. So yeah,

183
00:11:18,240 --> 00:11:20,639
so the yeah, the instance of operator was was an

184
00:11:20,720 --> 00:11:25,080
issue to check if the error is an HDP error

185
00:11:25,159 --> 00:11:28,000
or not. So yeah, this somehow was was a problem,

186
00:11:28,480 --> 00:11:32,120
which is why I used the error interceptor or this

187
00:11:32,320 --> 00:11:36,919
HDP in acceptor to handle specifically the HDP errors. But

188
00:11:37,159 --> 00:11:40,039
I think, yeah, right now we are also working on

189
00:11:40,080 --> 00:11:44,159
an Angular application where we catch these error errors within

190
00:11:44,519 --> 00:11:49,279
also within the error handler class, and so I think

191
00:11:49,320 --> 00:11:52,879
it's not not necessary anymore that you have to put

192
00:11:52,919 --> 00:11:56,120
this go into the separate HDP in accept door.

193
00:11:56,440 --> 00:11:59,759
Speaker 4: Yeah maybe for listeners, maybe it will be beneficial just

194
00:11:59,799 --> 00:12:02,799
to explain what was the issue with that instance of

195
00:12:03,240 --> 00:12:06,759
and then also how you were able to wake around that.

196
00:12:07,240 --> 00:12:13,440
Speaker 2: So the issue was that the global just just check

197
00:12:13,519 --> 00:12:16,679
me the name. So the global error hinter class handles

198
00:12:16,759 --> 00:12:20,960
all errors which are thrown in your application, and somehow

199
00:12:21,000 --> 00:12:24,399
you need to separate errors which are coming from your

200
00:12:24,399 --> 00:12:27,720
back end and some errors which are thrown by your

201
00:12:27,759 --> 00:12:31,840
front end applications. Like example, if you the user pits

202
00:12:31,840 --> 00:12:33,960
the wrong button at the wrong time with a wrong

203
00:12:34,000 --> 00:12:37,759
input message and the frontend cannot pass it somehow, or

204
00:12:38,399 --> 00:12:42,440
he types in a wrong character and then somehow it

205
00:12:42,559 --> 00:12:46,440
crashed the front end without any back end into without

206
00:12:46,480 --> 00:12:50,600
any back end action. Then you have some local fronend

207
00:12:50,720 --> 00:12:55,200
errors and you want to separate them between the HGP errors.

208
00:12:55,799 --> 00:12:58,919
The other kind of errors is when you send request

209
00:12:59,000 --> 00:13:02,120
to the back end and back end response is four

210
00:13:02,159 --> 00:13:06,480
hundred or five hundred status code for example, and somehow

211
00:13:06,799 --> 00:13:11,080
you want to separate these error messages because from the

212
00:13:11,120 --> 00:13:13,279
back end it can be that the back end will

213
00:13:14,039 --> 00:13:19,399
return some semantic information inside the error messages which comes

214
00:13:19,440 --> 00:13:22,799
back from the back end. So for example, database is

215
00:13:22,879 --> 00:13:26,639
not available from the back end, or the user already exists,

216
00:13:26,799 --> 00:13:30,080
or the username is not valid, something like that. So

217
00:13:30,200 --> 00:13:34,279
for example, for validation use cases and the other error

218
00:13:34,320 --> 00:13:36,840
messages which are only in the front end, they are

219
00:13:36,960 --> 00:13:41,480
sometimes more cryptical. It would also be that it's it's

220
00:13:41,639 --> 00:13:45,840
just a bukos that developers for got something to implement

221
00:13:46,360 --> 00:13:48,240
and the user will find it out. So it's the

222
00:13:48,240 --> 00:13:51,600
worst case, but it's in them sometimes. And yeah, when

223
00:13:51,639 --> 00:13:54,320
you handle these errors, yeah, you just want to show

224
00:13:54,399 --> 00:13:58,840
some default error messages, so like oops, just something went wrong,

225
00:13:59,440 --> 00:14:03,000
just to indicate the user that indicated a bug which

226
00:14:03,240 --> 00:14:07,759
was not initially planned that the user will reach it. Yeah,

227
00:14:08,120 --> 00:14:11,879
and this is this is the Yeah, the reason why

228
00:14:12,039 --> 00:14:16,159
I separated these two types of errors, So one error

229
00:14:16,159 --> 00:14:19,440
coming from the back end and one raising directly at

230
00:14:19,440 --> 00:14:23,639
the fundant. And yeah, your question was why we had

231
00:14:23,639 --> 00:14:27,440
a botblem with this instance of the things that you

232
00:14:27,480 --> 00:14:31,279
have somehow to Yet the the global error handler class

233
00:14:31,519 --> 00:14:34,720
does not directly know what kind of error was thrown,

234
00:14:35,240 --> 00:14:38,120
so it just checks, okay, there's an error, and somehow

235
00:14:38,120 --> 00:14:43,080
you have to check which which error it is. And therefore, yeah,

236
00:14:43,200 --> 00:14:46,480
I checked if you could verify it with this instance

237
00:14:46,480 --> 00:14:52,080
of operator give this error object, this instance of HDP

238
00:14:52,679 --> 00:14:55,919
know the class name. I think HP responds or so.

239
00:14:56,360 --> 00:14:59,679
And yeah, at the time I wrote this article, it's

240
00:15:00,159 --> 00:15:04,039
was probably working to check if it's an HDP error

241
00:15:04,120 --> 00:15:06,600
or if it's a local error. And this is why

242
00:15:06,679 --> 00:15:11,440
I excluded the detection of HDP rs into the HDP

243
00:15:11,679 --> 00:15:12,759
interceptor class.

244
00:15:13,200 --> 00:15:16,759
Speaker 4: Yeah, because there you you're able to observe every pre

245
00:15:16,879 --> 00:15:20,399
flight request, right, so we and response exactly.

246
00:15:21,600 --> 00:15:25,480
Speaker 2: Yeah, incept way you can check the outgoing requests and

247
00:15:25,559 --> 00:15:29,799
the incoming responses from the back end and you can, yeah,

248
00:15:30,000 --> 00:15:34,200
just simply check the status code and the response messages.

249
00:15:34,240 --> 00:15:36,759
If it's an error or not, and then you could

250
00:15:36,840 --> 00:15:39,600
show some proper error messages to the user.

251
00:15:39,759 --> 00:15:41,919
Speaker 4: Yeah, that's right. I'm sorry, guys. It's not like I'm

252
00:15:41,919 --> 00:15:46,279
plugging the questioning. Yeah, it's It's something that I've dealt

253
00:15:46,360 --> 00:15:49,559
with a lot in the past, so I'm very very curious.

254
00:15:50,320 --> 00:15:51,000
Speaker 1: Good questions.

255
00:15:51,480 --> 00:15:53,600
Speaker 4: Yeah, just one as a follow up with regards to

256
00:15:54,279 --> 00:15:57,159
these error messages. I don't know you mentioned a use

257
00:15:57,240 --> 00:16:02,759
case which basically brought about this article. The I'm thinking

258
00:16:02,799 --> 00:16:06,320
about the error messages themselves, right. I know the back

259
00:16:06,399 --> 00:16:08,639
end guys will probably hate me for this, but I

260
00:16:08,679 --> 00:16:10,360
don't know what's up with them. They're all like this.

261
00:16:11,000 --> 00:16:16,399
They always send some cryptic messages to the front Endy

262
00:16:16,720 --> 00:16:23,039
I sent that, you know what I mean exactly. So, like,

263
00:16:23,480 --> 00:16:26,000
I think one of the solutions was to, yeah, to

264
00:16:26,159 --> 00:16:28,879
do some sort of a mapping so that when you

265
00:16:28,919 --> 00:16:31,360
get this scryptive message, you just give it into some

266
00:16:31,720 --> 00:16:34,679
friendly message that you can display in the in the UI.

267
00:16:35,200 --> 00:16:37,879
Speaker 1: And how you're going to transpile the error messages is

268
00:16:37,960 --> 00:16:40,720
that we were saying into something that the user can

269
00:16:40,840 --> 00:16:42,360
understand exactly.

270
00:16:42,519 --> 00:16:46,159
Speaker 2: So sometimes the language of the developers it's not the

271
00:16:46,240 --> 00:16:50,320
same language as Yeah, the front and developers speak or

272
00:16:50,960 --> 00:16:53,639
to users to see it or want to want.

273
00:16:53,480 --> 00:16:56,440
Speaker 1: To see Yeah, well, and that that actually speaks to

274
00:16:56,679 --> 00:16:58,799
the point that I was trying to make initially, right,

275
00:16:59,039 --> 00:17:02,879
was just developed experience or user experience, because we run

276
00:17:02,919 --> 00:17:05,359
into that, right, we work pretty closely with the business team.

277
00:17:06,039 --> 00:17:09,000
And yeah, the stuff we put in the logs, right,

278
00:17:09,559 --> 00:17:11,279
So we go to DevOps and we say we need

279
00:17:11,359 --> 00:17:13,640
this log so we can see what happened. That's the

280
00:17:13,720 --> 00:17:16,559
cryptic type of message that Richard's talking about. But the

281
00:17:16,640 --> 00:17:20,480
message that they get is basically an explanation of Hey,

282
00:17:20,799 --> 00:17:22,680
here's what happened, and here's what you need to tell

283
00:17:22,759 --> 00:17:23,559
us so we can fix it.

284
00:17:23,759 --> 00:17:26,200
Speaker 2: Yeah, and I think it's from from both sides. So

285
00:17:27,000 --> 00:17:29,680
at the one hand, you can show the user of

286
00:17:29,759 --> 00:17:32,359
proper round messages, but on the other hand, you can

287
00:17:32,480 --> 00:17:35,680
also improve your log messages that you will lock to

288
00:17:35,759 --> 00:17:38,759
the develop a console in your browser, or you could

289
00:17:38,799 --> 00:17:42,319
also write an adopted service that sends lot messages back

290
00:17:42,359 --> 00:17:45,039
to the back end. So each time or every time

291
00:17:45,119 --> 00:17:48,200
an errow queus, you could also send some rown messages

292
00:17:48,279 --> 00:17:51,400
back to the back end for Metrix or to lock

293
00:17:51,440 --> 00:17:53,279
them in a log file at the back end and

294
00:17:53,400 --> 00:17:57,119
so yeah, so I think from the user perspective, but

295
00:17:57,240 --> 00:17:58,920
also from the developer's perspective.

296
00:17:59,319 --> 00:18:02,720
Speaker 1: Yeah, absolutely, I'm curious, Richard, what does your message transpiler

297
00:18:02,799 --> 00:18:04,559
look like? I mean, is it just a service that

298
00:18:04,720 --> 00:18:05,599
just has a key in it?

299
00:18:05,960 --> 00:18:10,920
Speaker 4: It was very very primitive, very very primitive, but like

300
00:18:11,279 --> 00:18:13,640
it was, it got to a point where we're like, okay,

301
00:18:13,759 --> 00:18:15,599
if in the front end guys didn't even understand what

302
00:18:15,640 --> 00:18:18,000
the hell these guys are trying to say. So, okay, guys,

303
00:18:18,200 --> 00:18:20,880
we need to find some middle ground so that we

304
00:18:21,000 --> 00:18:24,319
can all speak the same language or at least convey

305
00:18:24,440 --> 00:18:28,799
the same language, same thing to the end users. But

306
00:18:28,839 --> 00:18:32,279
I'll tell you one story about the one friendly error

307
00:18:32,319 --> 00:18:35,759
message that I saw was more not really quite an

308
00:18:35,839 --> 00:18:38,680
error message. But you I'm not sure if you've heard

309
00:18:38,680 --> 00:18:43,200
about this. So during the beginning of the vaccination drive

310
00:18:43,440 --> 00:18:47,960
here and German in other countries, some people in social media,

311
00:18:48,160 --> 00:18:52,319
like Telegram I think particularly, they started developing these bots

312
00:18:52,759 --> 00:18:57,119
that would go into this website where they offer appointments

313
00:18:57,519 --> 00:19:01,160
for vaccination, and the bots will time and again hit

314
00:19:01,200 --> 00:19:04,319
the API and try to as soon as there's an

315
00:19:04,359 --> 00:19:08,240
opening for vaccination, then it will basically allege these and

316
00:19:08,279 --> 00:19:10,720
then they can book it. And I guess it got

317
00:19:10,759 --> 00:19:14,319
to a point where the developers of the sites realized

318
00:19:14,319 --> 00:19:17,079
it's like, okay, we're being hammered. API is just like

319
00:19:17,680 --> 00:19:22,319
going crazy. And then you open the console you would

320
00:19:22,319 --> 00:19:25,880
see they were like, okay, dear, but programmer, please respect

321
00:19:25,960 --> 00:19:32,359
our API limits something. So, yeah, that was just some

322
00:19:32,759 --> 00:19:37,160
frinny story that I just remember. Now, that's that's awesome.

323
00:19:37,880 --> 00:19:40,960
Speaker 1: I love that. Yeah, by the way you were, you

324
00:19:41,000 --> 00:19:44,319
were saying that, Yeah, the messages were stuff that front

325
00:19:44,359 --> 00:19:46,799
end developers or users wouldn't understand. Well, if it's been

326
00:19:46,839 --> 00:19:49,400
two weeks to back end developers don't remember.

327
00:19:49,119 --> 00:19:49,759
Speaker 2: What I mean either.

328
00:19:51,559 --> 00:19:53,559
Speaker 1: We all know this right because we all write code.

329
00:19:53,559 --> 00:19:56,200
It's like it's like, oh, I've been onto these other

330
00:19:56,319 --> 00:19:59,359
three problems for the last two weeks. And what was

331
00:19:59,440 --> 00:20:02,599
that again? Yeah, you don't look in the code where

332
00:20:02,640 --> 00:20:05,359
it raises it to see Oh this stuffs around it.

333
00:20:05,440 --> 00:20:06,160
That's what it means.

334
00:20:06,440 --> 00:20:10,200
Speaker 2: Yeah, he uses some code and then he can see it.

335
00:20:10,680 --> 00:20:11,200
Speaker 1: Oh there we go.

336
00:20:11,519 --> 00:20:14,759
Speaker 3: Yeah, I remember like that, I have I have I

337
00:20:14,839 --> 00:20:19,279
haven't sent some some keys in the in the object

338
00:20:19,319 --> 00:20:24,359
and I got the whole query backs has accept.

339
00:20:24,119 --> 00:20:29,440
Speaker 4: The really gosh, that sounds funny. The Yeah, there was

340
00:20:29,519 --> 00:20:33,000
also another one that actually popped up as you were talking, Charles,

341
00:20:33,200 --> 00:20:37,920
which is with regards to the possible use cases for

342
00:20:38,279 --> 00:20:42,400
you know, centralizing your error handling in your application, like

343
00:20:42,680 --> 00:20:45,640
would you recommend I'm thinking of someone who's just studying

344
00:20:45,680 --> 00:20:49,480
out or building a small application, so not that metrological

345
00:20:49,559 --> 00:20:52,799
or anything like that, like is this, would this been necessary?

346
00:20:52,799 --> 00:20:56,200
Would you recommend that they centralize their handling of errors

347
00:20:56,400 --> 00:20:59,119
or is it mostly beneficial to large applications.

348
00:20:59,319 --> 00:21:04,519
Speaker 2: That's in my it's better for large applications. So where

349
00:21:04,880 --> 00:21:10,559
you have multiple components, multiple modules, and yeah, even multiple

350
00:21:10,599 --> 00:21:14,400
developers or even multiple teams working working on the same

351
00:21:14,440 --> 00:21:18,079
application in the same repository, and they all have to

352
00:21:18,119 --> 00:21:21,319
handle in some errors. And for example, in my current project,

353
00:21:21,599 --> 00:21:25,359
we have yeah, i think three separate teams working on

354
00:21:25,440 --> 00:21:29,680
the same front end, and we are also working from

355
00:21:29,759 --> 00:21:34,119
Germany and also from Poland on the same application. And

356
00:21:34,319 --> 00:21:37,519
somehow you have to make sure that, yeah, your error

357
00:21:37,559 --> 00:21:41,400
handling is consistent and you show the usable consistent messages

358
00:21:42,079 --> 00:21:45,480
then and knots that each component or each module has

359
00:21:45,519 --> 00:21:49,400
its own error handling. And I think that it's the

360
00:21:49,519 --> 00:21:53,480
best to have. It's in large business applications, yeah, way,

361
00:21:53,559 --> 00:21:56,559
where you have multiple developers. So if if you are

362
00:21:56,640 --> 00:22:00,839
working on a very small application which has just one

363
00:22:00,920 --> 00:22:05,240
what youule and not much logic and just one or

364
00:22:05,319 --> 00:22:08,519
two reaf ust to to some pecnd or so, then

365
00:22:08,559 --> 00:22:11,200
it's not necessary because it's some overhead.

366
00:22:11,640 --> 00:22:13,960
Speaker 1: So I'm gonna ask, then at what point do you

367
00:22:14,039 --> 00:22:17,000
start looking at putting it in? Because what I found

368
00:22:17,160 --> 00:22:20,839
is that the it's just a small application, it only

369
00:22:21,000 --> 00:22:24,319
does this one thing. It never stays there, right, it

370
00:22:24,440 --> 00:22:27,519
doesn't park there and go, oh, yeah, I'm just occupying

371
00:22:27,559 --> 00:22:29,799
space here right, Oh we need this other thing. Okay,

372
00:22:29,839 --> 00:22:31,799
we're going to add this other module in. You go,

373
00:22:32,279 --> 00:22:35,200
do you start looking at this at two modules? Three modules?

374
00:22:35,319 --> 00:22:37,960
I mean two teams, three teams? Where's kind of the

375
00:22:38,000 --> 00:22:41,039
sweet spot where? Because and I'll just back up a

376
00:22:41,079 --> 00:22:44,799
little bit, things like testing or accessibility or some of

377
00:22:44,880 --> 00:22:48,000
these other ideas that kind of permeate the entire application.

378
00:22:48,480 --> 00:22:49,960
If you go in and try and do them later

379
00:22:50,000 --> 00:22:53,039
when the application's big, it's really painful. And so I'm

380
00:22:53,079 --> 00:22:55,240
imagining that this is also one of those things that

381
00:22:55,559 --> 00:22:59,160
it's much easier to implement early. But yeah, you don't

382
00:22:59,160 --> 00:23:01,559
want to come in with a power tool if you

383
00:23:01,640 --> 00:23:04,720
can just tap out your problem in a couple of steps.

384
00:23:05,119 --> 00:23:07,200
So yeah, what's the right answer here?

385
00:23:07,720 --> 00:23:10,559
Speaker 2: It's a great question. So yeah, I don't know if

386
00:23:10,559 --> 00:23:14,359
if there's a hard limits for this kind of depends

387
00:23:14,400 --> 00:23:18,400
on on the application loose cases itself. So for what

388
00:23:18,839 --> 00:23:22,480
this application is meant for, and I think it's not

389
00:23:22,640 --> 00:23:25,200
not a big deal to have it also for for

390
00:23:25,359 --> 00:23:28,640
smaller applications if you might think it will be bigger.

391
00:23:29,000 --> 00:23:31,960
So yeah, it's it's it's a good question. So I'm

392
00:23:32,000 --> 00:23:36,799
also yeah, not that experience. So I've now three years

393
00:23:36,839 --> 00:23:40,319
of experience, so I've ye met some applications.

394
00:23:40,559 --> 00:23:41,359
Speaker 4: Yes, but so.

395
00:23:42,920 --> 00:23:45,640
Speaker 2: Do a generic answer for this? I think? So it

396
00:23:46,160 --> 00:23:48,680
depends on the application itself.

397
00:23:48,759 --> 00:23:50,240
Speaker 4: I think it always.

398
00:23:52,920 --> 00:23:55,400
Speaker 1: Oh I was, I was a consultant for six years,

399
00:23:55,480 --> 00:23:56,519
that I get it.

400
00:23:57,799 --> 00:23:59,759
Speaker 3: So one thing I can say that like if you

401
00:24:00,119 --> 00:24:02,359
if you don't want to write a lot of catcher

402
00:24:02,480 --> 00:24:04,839
or in needs typical, this is good.

403
00:24:05,160 --> 00:24:09,240
Speaker 1: Yeah yeah, what so my rule of on implementing any

404
00:24:09,440 --> 00:24:12,519
kind of broad system like this is that you want

405
00:24:12,599 --> 00:24:14,720
to implement it right before you're going to start feeling

406
00:24:14,720 --> 00:24:17,440
the pain for it. And so it sounds like what

407
00:24:17,880 --> 00:24:20,079
from what you said. You know, once you have a

408
00:24:20,160 --> 00:24:22,720
couple of teams in this and you're getting up to

409
00:24:22,839 --> 00:24:25,119
three maybe four modules, you know where you can't just

410
00:24:25,200 --> 00:24:27,680
keep track of it all in your head. You really

411
00:24:27,759 --> 00:24:30,200
ought to start thinking about this, right. And so when

412
00:24:30,240 --> 00:24:32,960
you're starting to lose track of how is the error

413
00:24:33,039 --> 00:24:36,880
handling happening across these modules, and hey, we've got this

414
00:24:37,039 --> 00:24:39,200
other team over here that may be doing something a

415
00:24:39,240 --> 00:24:41,960
little bit different, that's when you're standardize and that's where

416
00:24:42,000 --> 00:24:44,000
I pick this up. But yeah, it is. It's going

417
00:24:44,039 --> 00:24:46,440
to depend because you might have some module that does

418
00:24:46,559 --> 00:24:49,640
like two really simple things and so it almost doesn't

419
00:24:49,720 --> 00:24:51,960
count towards your complexity, right.

420
00:24:52,119 --> 00:24:55,480
Speaker 2: Yeah, and also think like that. And it was great

421
00:24:55,799 --> 00:24:58,640
when we started developing on a mic whole fund and

422
00:24:58,680 --> 00:25:02,759
application with ang Law and we are just so we

423
00:25:02,880 --> 00:25:07,319
had two separate angular applications with their own logic and

424
00:25:07,359 --> 00:25:11,839
everything else. So there were two monoliths, and after half

425
00:25:11,880 --> 00:25:16,079
a year we started to create some micro funds out

426
00:25:16,079 --> 00:25:19,920
of them and to have some shell or some container

427
00:25:20,000 --> 00:25:23,599
logic in a shell application and in the shell application,

428
00:25:23,799 --> 00:25:28,799
so which which caused microfonds. We had this error handling

429
00:25:28,839 --> 00:25:32,960
concepts implement and it was great to just inject some

430
00:25:33,039 --> 00:25:37,160
microfonance into the application and even if a microfond froze

431
00:25:37,160 --> 00:25:40,160
an error, that global error handling catch this error and

432
00:25:40,559 --> 00:25:44,000
showed the global error message and it was it was

433
00:25:44,039 --> 00:25:47,200
a great experience to see that was also working for

434
00:25:47,319 --> 00:25:51,559
the micro fundans in Angular. So I think one of

435
00:25:51,640 --> 00:25:54,039
the use cases if you want to really make sure

436
00:25:54,359 --> 00:25:59,200
that all errors are handled correctly, and then it's you

437
00:25:59,279 --> 00:26:03,559
can use it for a re application unless many how

438
00:26:03,640 --> 00:26:07,319
many modules you have or how many developers are working

439
00:26:07,400 --> 00:26:09,559
on it. So I think it's not not a bad

440
00:26:09,640 --> 00:26:13,400
way to design nearly all of your applications.

441
00:26:14,640 --> 00:26:17,079
Speaker 4: I tend to agree with that. I think, I mean,

442
00:26:17,119 --> 00:26:20,839
I've been working on a small project, and I say

443
00:26:20,920 --> 00:26:25,920
small inverted commas, the very classic example that Chucks just mentioned. Now,

444
00:26:26,039 --> 00:26:28,519
it also started like yeah, we're going to have a

445
00:26:28,559 --> 00:26:31,559
couple of components, a couple of pages, services and so forth.

446
00:26:32,119 --> 00:26:36,160
But over the years it has actually grown a bit. Yeah,

447
00:26:36,319 --> 00:26:38,319
so it's and I'm thinking now when I'm looking back,

448
00:26:38,359 --> 00:26:41,160
I'm like, actually, I could have actually made use of

449
00:26:41,240 --> 00:26:44,920
it back then when I started developing it. But the

450
00:26:45,920 --> 00:26:49,000
nice thing is that you know, it's angular because it's

451
00:26:49,119 --> 00:26:52,039
not that hard to implement it even after the fact,

452
00:26:52,440 --> 00:26:55,480
as long as obviously you're following the correct patterns and

453
00:26:55,920 --> 00:27:00,319
the best practices and implementing the global era handler class

454
00:27:00,519 --> 00:27:03,319
interface in this case, that it will guide you into

455
00:27:03,440 --> 00:27:05,000
doing it in a correct manner.

456
00:27:05,200 --> 00:27:07,799
Speaker 2: And maybe it's also the wrong question to ask when

457
00:27:07,880 --> 00:27:10,680
to use it, so maybe you should ask so when

458
00:27:10,799 --> 00:27:15,720
not to use it. And so I think you should

459
00:27:15,799 --> 00:27:19,880
not use it if your application requires some really individual

460
00:27:20,000 --> 00:27:23,480
error handling. So if the customer asks you to have

461
00:27:23,640 --> 00:27:26,799
some individual error handling, so if the error messages or

462
00:27:26,880 --> 00:27:30,920
error dialogues should be completely different in the modules or

463
00:27:31,000 --> 00:27:34,559
your components, then it's maybe not the best use case

464
00:27:34,599 --> 00:27:39,200
for that, because yeah, you sell a little bit flexibility

465
00:27:39,319 --> 00:27:43,440
for this, and yeah, so you'll lose the flexibility. And

466
00:27:44,000 --> 00:27:47,039
it doesn't matter if the if the error handling should

467
00:27:47,079 --> 00:27:50,680
be consistent in your whole application, but there might be

468
00:27:51,119 --> 00:27:54,319
probably use cases that are different.

469
00:27:55,640 --> 00:27:58,319
Speaker 3: If you're getting always a different error, then I think

470
00:27:58,599 --> 00:28:03,480
we can use that recharts to transfiler and can make

471
00:28:03,960 --> 00:28:08,160
these messages. At a funny side, like I wondered, like

472
00:28:08,279 --> 00:28:12,440
this all we are able to do because angular implemented

473
00:28:12,480 --> 00:28:16,119
all these patterns what we are having, like you can

474
00:28:16,480 --> 00:28:20,279
use like a provide like STTP interceptor and they can

475
00:28:20,920 --> 00:28:24,599
use it in another class. To those all of the

476
00:28:24,759 --> 00:28:28,720
oriented concepts makes it happen. It's some are like if

477
00:28:28,920 --> 00:28:32,559
someone is just starting out, it may look pretty easy, Okay,

478
00:28:32,680 --> 00:28:35,680
I'm just using using a class. But how it helps

479
00:28:35,839 --> 00:28:39,759
later and how it helps maintaining the application for a

480
00:28:39,839 --> 00:28:44,359
big application. Obviously, if you're following all the patents and everything,

481
00:28:44,680 --> 00:28:48,359
the solid principle, I think very few people may have used.

482
00:28:49,240 --> 00:28:52,200
Everybody should use solid in the front end as well,

483
00:28:52,319 --> 00:28:55,480
but at we haven't seen. It's a big topic in

484
00:28:55,599 --> 00:28:58,599
the application in the big framework or big application point

485
00:28:58,640 --> 00:29:02,400
of view. But this kind the patterns are the best practices.

486
00:29:02,720 --> 00:29:06,200
We're going to help us later or at least it

487
00:29:06,240 --> 00:29:10,559
will reduce our code. How mutual type and for error

488
00:29:10,640 --> 00:29:13,480
handling or for token intextion supporhich.

489
00:29:13,640 --> 00:29:16,599
Speaker 4: I guess one of the key questions, very very important

490
00:29:16,720 --> 00:29:19,240
question is and for those that do not know, Philip

491
00:29:19,440 --> 00:29:24,440
is is very prominent in the open source world, and

492
00:29:24,960 --> 00:29:28,160
is this we're talking before we started the recording, but

493
00:29:28,279 --> 00:29:33,160
this one vs code extension called material icon. It's and

494
00:29:33,240 --> 00:29:37,359
I checked out the code the repository and the question

495
00:29:37,519 --> 00:29:40,880
is do you use error handling or do you say

496
00:29:40,880 --> 00:29:44,240
if you centralized the error handling for that project, you

497
00:29:44,319 --> 00:29:44,599
mean for.

498
00:29:44,640 --> 00:29:47,759
Speaker 2: The material I can feel, yes, yes, or the material

499
00:29:47,799 --> 00:29:51,160
I can fee is a completely different use case. I

500
00:29:51,240 --> 00:29:55,759
think it's really stick to the extension a PI, which

501
00:29:55,799 --> 00:29:59,119
is STUDI code, so which is code provides a specific

502
00:29:59,559 --> 00:30:03,480
a PI with some interfaces which you can use to yeah,

503
00:30:03,519 --> 00:30:08,160
to customize the features of rest the code. And in

504
00:30:08,279 --> 00:30:12,039
my case these are yeah, to inject some some icons

505
00:30:12,200 --> 00:30:15,000
into the into a VUS code to need to show

506
00:30:15,039 --> 00:30:21,440
them probably, and yeah, so the error handling basically looks Yeah,

507
00:30:21,519 --> 00:30:25,240
it's a trycatch chain, so there's a there's a top

508
00:30:25,359 --> 00:30:29,319
level try catch that catches globally the error messages from

509
00:30:29,519 --> 00:30:33,359
from the lower parts of the application. So it's yeah,

510
00:30:33,720 --> 00:30:37,440
it's a little bit difference to this concept which was

511
00:30:37,519 --> 00:30:40,559
described in my article here. But yeah, somehow there's also

512
00:30:40,599 --> 00:30:43,279
a global error handling in this extension too.

513
00:30:43,640 --> 00:30:46,400
Speaker 1: Yeah, we should just use global trycatches for everything. I

514
00:30:46,599 --> 00:30:52,079
like that trycatch around the whole app. Yeah, so broke Man.

515
00:30:52,400 --> 00:30:56,039
Speaker 2: Yeah, so I mean the code for the material ICO

516
00:30:56,079 --> 00:30:59,759
theme is kind of only supportive, So just the support

517
00:31:00,079 --> 00:31:06,559
some some features, like to adjust the capacity or saturation

518
00:31:06,680 --> 00:31:10,240
of some icons. It's it's not not the main part

519
00:31:10,319 --> 00:31:13,319
of this extension, you know. It's just to support some

520
00:31:14,160 --> 00:31:17,480
additional features, and some or or most of people might

521
00:31:17,559 --> 00:31:21,200
say they are not even necessarily these features. It's most

522
00:31:21,480 --> 00:31:25,559
mostly about the icons and that the icons are shiny

523
00:31:25,680 --> 00:31:26,640
and look good.

524
00:31:28,519 --> 00:31:32,799
Speaker 4: Yeah, you can attest to that, because as of this morning,

525
00:31:33,039 --> 00:31:36,880
I'm a proud user of the material icon theme. Thank

526
00:31:36,880 --> 00:31:37,519
you very much.

527
00:31:39,720 --> 00:31:40,279
Speaker 2: You're welcome.

528
00:31:41,839 --> 00:31:45,119
Speaker 1: If you went over Richard, I mean, that's nirvana right there.

529
00:31:45,519 --> 00:31:48,400
Speaker 2: You could also try to try to produce some errors

530
00:31:48,440 --> 00:31:52,319
in his extension and then you can see the arrantling.

531
00:31:52,799 --> 00:31:58,480
Speaker 4: I will try to break it. Yeah, accept it.

532
00:31:59,640 --> 00:32:03,279
Speaker 2: Yeah, but there's also then the error handling of your cootua,

533
00:32:03,599 --> 00:32:07,839
which will show you some error messages which will catch

534
00:32:08,000 --> 00:32:10,200
my extension errors. Yeah.

535
00:32:10,720 --> 00:32:13,160
Speaker 4: Yeah, I guess. I mean you're working within this bubble,

536
00:32:13,359 --> 00:32:18,119
this ecosystem that's Visual Circle provides for you the APIs

537
00:32:18,559 --> 00:32:20,720
so yeah, I guess there is some sort of mechanism

538
00:32:20,839 --> 00:32:23,880
that basically builds on top of that. But yeah, for

539
00:32:24,000 --> 00:32:26,279
the sake of the for the topic that we're talking

540
00:32:26,279 --> 00:32:29,920
about in the Angular framework, it's a slightly different concept.

541
00:32:30,240 --> 00:32:32,880
Speaker 1: Yeah, I did have another question, and this is kind

542
00:32:32,880 --> 00:32:36,160
of tangentially related, but it's more like team practice. So

543
00:32:36,319 --> 00:32:38,920
one thing that I run into with the app that

544
00:32:39,000 --> 00:32:40,920
I work on in the full time job is that

545
00:32:41,279 --> 00:32:45,680
we don't always communicate well, hey, we have this thing,

546
00:32:45,799 --> 00:32:48,599
you should use it, right, And so what will happen

547
00:32:48,759 --> 00:32:50,519
is is because there are two teams that work on

548
00:32:50,599 --> 00:32:52,680
our app, and so the other team will go in

549
00:32:52,839 --> 00:32:55,799
and they'll actually, oh, we need to surface and you know,

550
00:32:55,880 --> 00:32:58,000
when an error comes up, we need to surface the error.

551
00:32:58,359 --> 00:33:02,039
And so then what happened is we've already built that.

552
00:33:02,279 --> 00:33:04,799
Then they wind up kind of reinventing the wheel, and

553
00:33:04,880 --> 00:33:08,119
now we have two systems, right, and so you know,

554
00:33:08,240 --> 00:33:11,400
after they've spent three days engineering it, right and we

555
00:33:11,519 --> 00:33:15,119
get the code view for it, we're going, guys, this

556
00:33:15,319 --> 00:33:18,519
was already in there, right. So I guess what I'm

557
00:33:18,559 --> 00:33:22,160
asking is how do you communicate within the organization to

558
00:33:22,200 --> 00:33:24,240
make sure that everybody knows that, hey, we've got a

559
00:33:24,319 --> 00:33:24,960
framework for this.

560
00:33:25,640 --> 00:33:28,680
Speaker 2: That's a good question, though in my opinion, a good

561
00:33:28,799 --> 00:33:35,200
organization or good communication is similarly important as a good

562
00:33:35,279 --> 00:33:38,839
code structure or good architecture though, because it makes the

563
00:33:38,960 --> 00:33:43,599
project successful, and it makes it successfully also for the

564
00:33:43,680 --> 00:33:47,960
customer too, And so I can also only speak for

565
00:33:48,480 --> 00:33:50,799
my company or or the project set that we are

566
00:33:51,279 --> 00:33:57,720
working on, and it's yeah, it's about communication making knowledge

567
00:33:57,759 --> 00:34:01,319
transfer sessions where we look into our code. We are

568
00:34:01,440 --> 00:34:06,559
doing programming most of the time, and so yeah, and

569
00:34:06,960 --> 00:34:11,079
we have to spread the knowledge to our colleagues. And

570
00:34:11,840 --> 00:34:15,719
but I think it's also it's nowhere, it's it's perfect,

571
00:34:15,800 --> 00:34:19,000
so it can happen here that that some also some

572
00:34:19,280 --> 00:34:23,000
some new colleagues might come into the project and yeah,

573
00:34:23,159 --> 00:34:27,079
do not know everything, so no one expects that, Yeah,

574
00:34:27,119 --> 00:34:29,760
someone is knowing everything, So it can happen there that

575
00:34:29,960 --> 00:34:32,280
that are reinventing the wheel.

576
00:34:32,480 --> 00:34:35,079
Speaker 4: But also can help here.

577
00:34:35,320 --> 00:34:38,760
Speaker 2: Yeah, I think good documentation can help. We are also

578
00:34:38,840 --> 00:34:43,639
writing design documents for each feature, so where we specify

579
00:34:44,800 --> 00:34:49,719
how our features and modules are structured and architectured. And

580
00:34:50,639 --> 00:34:54,039
so it's it's a good base to get the knowledge

581
00:34:54,440 --> 00:34:59,119
to everyone. And I think too gets Yeah, I think

582
00:34:59,199 --> 00:35:01,880
I think the the error handling, which is described in

583
00:35:01,960 --> 00:35:06,559
my article the same as how you could show loading spinners, Yeah,

584
00:35:06,880 --> 00:35:10,400
produces a little bit the complexity and it makes it

585
00:35:10,519 --> 00:35:14,000
easier for new developers or if they know, okay, every

586
00:35:14,079 --> 00:35:16,400
request to my back end, it shows a loading spinner.

587
00:35:16,719 --> 00:35:19,280
I do not have to think about it, and I

588
00:35:19,360 --> 00:35:21,440
do not have to unit test it or care about

589
00:35:21,440 --> 00:35:26,079
It's just there and it's handled somewhere globally. And you're

590
00:35:26,119 --> 00:35:31,039
more complexity, you can move away from feature components or

591
00:35:31,039 --> 00:35:35,679
feature modules. The better it is to make it easy

592
00:35:35,760 --> 00:35:40,079
for new developers or your team to not reinvent the wheel.

593
00:35:40,360 --> 00:35:43,159
Speaker 1: Yeah, yeah, you mentioned documentation, which I didn't want anyone

594
00:35:43,239 --> 00:35:45,760
to say because the company I work for, users Confluence,

595
00:35:45,800 --> 00:35:50,920
would Yeah, it makes sense, right, you put that information

596
00:35:51,000 --> 00:35:53,679
in a central place. And then the other problem that

597
00:35:53,760 --> 00:35:56,559
you have to solve is making sure that everybody checks

598
00:35:56,639 --> 00:35:59,679
there before they go and reinvent, because I know that

599
00:35:59,800 --> 00:36:01,800
my team rarely looks at it, and I know that

600
00:36:01,880 --> 00:36:04,920
the other team never looks at it. So that's the

601
00:36:05,000 --> 00:36:07,119
other piece of it, right, So you have to develop

602
00:36:07,199 --> 00:36:10,719
that practice. Hey, here's here's where the info is.

603
00:36:10,920 --> 00:36:13,599
Speaker 2: And I think I think one of the best ways

604
00:36:13,960 --> 00:36:16,599
for that is pair programming. So for me, so I

605
00:36:16,679 --> 00:36:21,000
think if two guys are working on a feature or

606
00:36:21,039 --> 00:36:24,920
implementing something, and there's yeah, one who is not so

607
00:36:25,119 --> 00:36:27,679
experienced and the other one who is more experienced, and

608
00:36:28,239 --> 00:36:32,079
they can can share the knowledge the best. And yeah,

609
00:36:32,079 --> 00:36:37,599
and everyone can enhance the other colleagues. And I think

610
00:36:37,719 --> 00:36:40,480
if I think it's great if you're working together and

611
00:36:40,639 --> 00:36:45,320
not not everyone separated, So I think it's also works

612
00:36:45,400 --> 00:36:48,280
works for my company or for my project. We are

613
00:36:48,760 --> 00:36:51,400
we're also working from home, so everyone is separated. We're

614
00:36:51,440 --> 00:36:55,280
working from different locations, but we're trying to make calls

615
00:36:55,719 --> 00:36:59,320
frequently to sink ours and to share our ideas and

616
00:36:59,599 --> 00:37:03,880
our non and share our issues where we are working

617
00:37:03,960 --> 00:37:07,599
on and so we are try our best to avoid

618
00:37:07,840 --> 00:37:12,239
these issues so that that someone gets lost and doesn't

619
00:37:12,280 --> 00:37:13,679
know how our things work.

620
00:37:14,119 --> 00:37:17,320
Speaker 4: Yeah, that's true, like almost like each and every time

621
00:37:17,480 --> 00:37:21,079
where I've sat down and work with someone so pay

622
00:37:21,159 --> 00:37:25,840
programming with someone with a feature debugging session. You know,

623
00:37:26,000 --> 00:37:28,679
if you were to contrast that to doing it on

624
00:37:28,760 --> 00:37:32,239
your own. In my own experience, it has always been

625
00:37:32,760 --> 00:37:35,599
the solution that we that we come up with well

626
00:37:35,679 --> 00:37:40,039
pro pay programming is far much more solid, more structured,

627
00:37:40,119 --> 00:37:43,000
more well thought out than had you approach it by yourself.

628
00:37:43,480 --> 00:37:45,440
So yeah, I totally agree with that.

629
00:37:45,599 --> 00:37:48,360
Speaker 3: Here, Yeah, so I can see here you have an

630
00:37:48,800 --> 00:37:52,360
extension called Angula Component extractor and.

631
00:37:54,239 --> 00:37:57,280
Speaker 4: To the clip, it looks pretty cool. Can you please

632
00:37:57,400 --> 00:37:58,760
explain if you regard that.

633
00:38:00,039 --> 00:38:04,159
Speaker 2: I think it was some months ago when I scrolled

634
00:38:04,320 --> 00:38:07,559
through my Twitter feed and then I saw a feature

635
00:38:07,679 --> 00:38:12,679
from a web storm and they showed that they yeah,

636
00:38:12,719 --> 00:38:15,519
they showed in a gift animation that they just selected

637
00:38:15,599 --> 00:38:19,880
some HTML template code with their mouths and yeah, I

638
00:38:19,960 --> 00:38:23,239
think it was a right click and said, okay, reflector,

639
00:38:23,280 --> 00:38:28,199
it's another Angular component, and it automatically happened after that,

640
00:38:28,960 --> 00:38:32,119
and it was excited, and I thought, Okay, why isn't

641
00:38:32,159 --> 00:38:35,719
this available for the study code, and would be a

642
00:38:35,760 --> 00:38:39,199
great feature to just if you want to reflector a

643
00:38:39,360 --> 00:38:44,559
large angular component which which was god too big, and

644
00:38:44,719 --> 00:38:48,119
you want to separate it in it into multiple new

645
00:38:48,199 --> 00:38:52,239
components of most likely dumb components, then it would be

646
00:38:52,280 --> 00:38:56,199
great to just select the code and press one or

647
00:38:56,280 --> 00:38:58,679
two buttons and then it will be extracted in a

648
00:38:58,760 --> 00:39:02,760
separated its componentmatically. And this was the yeah, the idea

649
00:39:03,320 --> 00:39:06,599
when I asked a colleague and a friend of mine,

650
00:39:06,679 --> 00:39:11,719
so lecofocal and we implemented this studio code extension together.

651
00:39:12,079 --> 00:39:15,920
And so it also makes it possible in reals code

652
00:39:16,000 --> 00:39:21,760
to select some temperate code and after that runs automatically

653
00:39:22,239 --> 00:39:28,039
your Angular Cli to to generate a component. And yeah,

654
00:39:28,119 --> 00:39:31,239
right now it's it's really yeah, it's it's still in

655
00:39:31,320 --> 00:39:36,079
a preview stage. So we are had some brainstorming about

656
00:39:36,519 --> 00:39:39,800
what kind of features we could support. So you usually

657
00:39:40,440 --> 00:39:42,960
do not have some htma A texts that should be

658
00:39:43,039 --> 00:39:48,800
extracted into another component, but also input or output events.

659
00:39:49,679 --> 00:39:52,159
You have some type information that you want to extract,

660
00:39:52,679 --> 00:39:55,239
You have some maybe types street code that should be

661
00:39:55,360 --> 00:39:56,199
extracted too.

662
00:39:56,800 --> 00:39:57,400
Speaker 4: And so on.

663
00:39:57,639 --> 00:40:02,400
Speaker 2: So we have lots of still lots of ideas, and yeah,

664
00:40:02,599 --> 00:40:05,119
we are we would be happy for for feedback and

665
00:40:05,880 --> 00:40:08,519
if people will will try it out and and say

666
00:40:08,559 --> 00:40:12,199
it's nice and want to yeah, give us the feedback

667
00:40:12,239 --> 00:40:18,280
that we should focus on specific features or where we

668
00:40:18,360 --> 00:40:22,199
should yeah go further and yeah yeah.

669
00:40:22,480 --> 00:40:25,440
Speaker 4: So basically what I'm hearing is you want to learn

670
00:40:25,480 --> 00:40:26,400
how to do magic?

671
00:40:26,719 --> 00:40:30,920
Speaker 1: Yes, yeah, I believe in miracles.

672
00:40:32,960 --> 00:40:38,639
Speaker 2: Also, yeah, we also experienced why we are way were

673
00:40:38,760 --> 00:40:42,480
thinking about it, so some features would be kind of magic,

674
00:40:42,679 --> 00:40:45,760
So to expect lots of code and yeah, you know

675
00:40:46,360 --> 00:40:50,519
the code is somehow really yeah, nested and connected to

676
00:40:50,719 --> 00:40:54,360
the parts of your application and to just separate it

677
00:40:54,519 --> 00:40:58,920
into a separate component. It's a tricky thing.

678
00:40:59,239 --> 00:41:03,000
Speaker 4: Yeah, and I can already imagine a use case or wait,

679
00:41:03,239 --> 00:41:06,960
this could come in pretty handy. So you remember all

680
00:41:07,000 --> 00:41:09,760
that spaghetti code that you wrote, Charles so many years.

681
00:41:09,559 --> 00:41:12,000
Speaker 1: Ago, I mean in a corn I've never done that.

682
00:41:13,079 --> 00:41:15,639
Speaker 4: Yeah, I mean you can just dive into some of

683
00:41:15,719 --> 00:41:18,559
your old project projects and yeah, you can just like

684
00:41:19,079 --> 00:41:23,079
highlight a couple of head lines and have Phillips Magic

685
00:41:23,320 --> 00:41:25,800
extract all that code into some nice little components.

686
00:41:26,559 --> 00:41:29,800
Speaker 1: Nice. Oh that's at least I'll do that on my

687
00:41:29,920 --> 00:41:30,800
coworkers stuff.

688
00:41:31,159 --> 00:41:32,920
Speaker 4: Yeah, it's pretty cool.

689
00:41:33,679 --> 00:41:39,519
Speaker 2: So right now it's working for basic components. It's working

690
00:41:39,559 --> 00:41:43,639
for components to have some some some variables, and we

691
00:41:43,760 --> 00:41:48,119
can generate an input y. Yeah, I think that's working

692
00:41:48,239 --> 00:41:51,079
right now. You can add an input elements, so the

693
00:41:51,159 --> 00:41:55,159
input is automatically added to the the child component, which

694
00:41:55,199 --> 00:41:59,599
is then generated and the parent components. Yeah, so where

695
00:41:59,679 --> 00:42:03,760
you selected your code is using this input to inject

696
00:42:03,880 --> 00:42:06,159
the variable into the childe component.

697
00:42:06,519 --> 00:42:09,079
Speaker 4: That's pretty cool. So the new component will be created

698
00:42:09,159 --> 00:42:11,199
in the same same directory.

699
00:42:10,880 --> 00:42:10,960
Speaker 1: Or.

700
00:42:12,800 --> 00:42:17,440
Speaker 2: It's generated in the same directory, but it has I

701
00:42:17,480 --> 00:42:19,880
think it I think it has separate it has its

702
00:42:19,920 --> 00:42:24,480
own directory name, so it's it's the same command which

703
00:42:24,920 --> 00:42:28,079
would be executed, which is executed by the Anglo sal I.

704
00:42:28,679 --> 00:42:31,440
So if you would run in the current directory your

705
00:42:31,480 --> 00:42:34,880
anglocal I to generate a new component, that's the same

706
00:42:34,960 --> 00:42:36,280
with what happens under the hood.

707
00:42:36,920 --> 00:42:40,880
Speaker 4: Are you using schematics under the hood for generating the files.

708
00:42:41,119 --> 00:42:44,760
Speaker 2: Yes, we are using anglosil I to generate the files.

709
00:42:45,360 --> 00:42:50,320
So it's just a running a note note command to

710
00:42:51,159 --> 00:42:53,920
call the Anglo cel i on on the autunnel, and

711
00:42:54,039 --> 00:42:59,400
then it's it's you inject requires parameters to the cel

712
00:42:59,480 --> 00:43:03,239
I command and then it generates the component with the CELI.

713
00:43:03,400 --> 00:43:07,599
So the extension expects that the Angler CELI is installed

714
00:43:08,320 --> 00:43:11,920
in your project or otherwise it fallbacks to the MPX

715
00:43:12,480 --> 00:43:15,960
and run CLI from via MPX.

716
00:43:16,360 --> 00:43:19,880
Speaker 4: Yeah, okay, makes sense, so pretty cool. I will definitely

717
00:43:20,079 --> 00:43:20,719
see it out.

718
00:43:21,079 --> 00:43:24,079
Speaker 2: Yeah, yeah, you can try out, and we're happy for feedback.

719
00:43:24,119 --> 00:43:27,960
And you know, you can also always great issues and

720
00:43:28,880 --> 00:43:31,320
can also take a look into our code you find

721
00:43:31,639 --> 00:43:33,159
find bugs or spagetti.

722
00:43:35,119 --> 00:43:38,079
Speaker 1: Yeah, that's only chance. It's okay, that's right, I always

723
00:43:38,159 --> 00:43:41,880
create issues. I mean, I will let you know if

724
00:43:41,920 --> 00:43:42,519
there's a problem.

725
00:43:43,280 --> 00:43:47,159
Speaker 2: Yeah, sure, so I think it's also always great if

726
00:43:47,280 --> 00:43:52,000
people are contributing to open source report stories. I can

727
00:43:52,079 --> 00:43:55,840
see that pretty much for my can extension. So it's

728
00:43:56,239 --> 00:43:59,360
kind of popular, and lots of people are having great

729
00:43:59,400 --> 00:44:04,800
ideas and great suggestions for new icons. You cannot even

730
00:44:04,840 --> 00:44:09,920
imagine what kind of programming languages require an icon for

731
00:44:10,320 --> 00:44:14,199
this extension, and it's great. Yeah, so I got to

732
00:44:14,320 --> 00:44:20,079
know so many programming languages. Fruit is icon. I haven't

733
00:44:20,119 --> 00:44:24,000
even heard before about these languages. So there's just a

734
00:44:24,039 --> 00:44:30,679
programming language which is called Coconut. It's great. So I

735
00:44:30,760 --> 00:44:33,559
love it, and people are really to it and having

736
00:44:33,679 --> 00:44:36,960
these ideas and say, hey, you need that. And sometimes

737
00:44:37,039 --> 00:44:42,760
also people people are creating rekfasts with cool icons, not

738
00:44:42,880 --> 00:44:47,559
even icons, sometimes also code and language translations. And the

739
00:44:47,760 --> 00:44:51,760
project is you have gone only so popular because of

740
00:44:51,920 --> 00:44:54,880
lots of contributions and lots of ideas from the people.

741
00:44:55,840 --> 00:44:58,800
Speaker 4: And Philip is actually being very modest when you say

742
00:44:58,840 --> 00:45:06,119
it's popular, he's he means eight point seven six million

743
00:45:07,360 --> 00:45:11,280
downloads on Vesco, so it is huge. It is a

744
00:45:11,360 --> 00:45:14,159
huge success and and I love it. I've tried it

745
00:45:14,280 --> 00:45:17,159
this morning, and I think it's pretty cool. It seems

746
00:45:17,400 --> 00:45:20,760
very basic and simple, but it works and it's pretty Yeah,

747
00:45:20,920 --> 00:45:21,840
thank you awesome.

748
00:45:21,920 --> 00:45:24,519
Speaker 1: All right, well I'm gonna push us more toward picks

749
00:45:24,559 --> 00:45:27,079
here just because I have a call coming up. But

750
00:45:27,480 --> 00:45:30,039
before we do that, Philip, if people want to follow

751
00:45:30,119 --> 00:45:33,400
you on Twitter, GitHub are usually the ones that people

752
00:45:33,440 --> 00:45:36,159
push to. LinkedIn seems to be picking up steam. But yeah,

753
00:45:36,440 --> 00:45:38,039
if people want to find you on any of those

754
00:45:38,039 --> 00:45:38,639
where they find you.

755
00:45:38,920 --> 00:45:42,960
Speaker 2: And so for me, it's Twitter and getthub, so you can.

756
00:45:43,360 --> 00:45:47,119
So on Twitter you can follow me. I regularly post

757
00:45:47,199 --> 00:45:50,719
some some new new projects or updates on my projects,

758
00:45:50,840 --> 00:45:54,239
and we tweet some of some cool other ideas from

759
00:45:54,280 --> 00:45:57,920
other guys from Twitter. So it's it's it's a great

760
00:45:58,000 --> 00:46:02,239
place to follow my intro as regarding programming. And you

761
00:46:02,360 --> 00:46:05,559
can also follow me on on git up, which is

762
00:46:05,639 --> 00:46:08,519
not a social network, but yeah you can. You can

763
00:46:08,599 --> 00:46:11,159
follow me and check on which project I'm currently working.

764
00:46:11,440 --> 00:46:14,039
And by the way, that there's a cool side story.

765
00:46:14,719 --> 00:46:19,519
So during my studies, some friends wanted to contact me

766
00:46:20,239 --> 00:46:23,239
via WhatsApp and it did reach me because my my

767
00:46:23,400 --> 00:46:26,480
my smartphone was was somewhere on the table on mute

768
00:46:26,960 --> 00:46:30,119
and then they wrote a commit on gitup where they

769
00:46:30,159 --> 00:46:33,880
wrote a Philip, can you please please unswer us on WhatsApp?

770
00:46:34,280 --> 00:46:37,639
And then actually I read this message on this commit

771
00:46:37,719 --> 00:46:41,360
message earlier than on my WhatsApp, so it was kind of.

772
00:46:41,519 --> 00:46:44,400
Speaker 4: Yeah, wow, that is so cool.

773
00:46:45,400 --> 00:46:47,000
Speaker 1: Yeah, that's that's awesome.

774
00:46:48,119 --> 00:46:50,519
Speaker 2: So if you want to really contact me, just just

775
00:46:51,199 --> 00:46:54,440
a bicast and and write some commit messages and then

776
00:46:55,079 --> 00:46:56,679
then I have your attention.

777
00:46:57,280 --> 00:47:03,840
Speaker 4: They pick up your damn phone. That's pretty cool, but

778
00:47:04,039 --> 00:47:04,440
that's what.

779
00:47:06,039 --> 00:47:09,880
Speaker 1: Yeah, Yeah, the damn phone is what what you have

780
00:47:10,159 --> 00:47:13,360
after you've had your smartphone for a while of it

781
00:47:13,519 --> 00:47:18,719
absolutely damn phone. Awesome. Let's go ahead and do some pics, Richard,

782
00:47:18,760 --> 00:47:19,800
Do you have some picks for us?

783
00:47:20,239 --> 00:47:23,800
Speaker 4: Actually I had forgotten about this section of a segment

784
00:47:23,880 --> 00:47:26,840
of the podcast, to be honest. Let me think.

785
00:47:27,320 --> 00:47:27,639
Speaker 2: You know what.

786
00:47:28,159 --> 00:47:31,320
Speaker 4: What is still very fresh and brings a pig smile

787
00:47:31,400 --> 00:47:35,440
on my face right now is the material Icon by

788
00:47:35,639 --> 00:47:37,559
Philip Keith. You might have heard it with this guy.

789
00:47:38,559 --> 00:47:42,760
So yeah, I'm gonna pick that up as one of Yeah,

790
00:47:42,920 --> 00:47:45,559
one of the picks. That something that is still piccutating

791
00:47:45,559 --> 00:47:48,239
in my mind right now, so I'll definitely pick that.

792
00:47:48,519 --> 00:47:50,440
Speaker 1: Awesome, super what are your picks?

793
00:47:50,599 --> 00:47:53,840
Speaker 3: That's so big for this week will be a book again.

794
00:47:53,960 --> 00:47:59,480
So it's a start with why so everyone, Yeah, so

795
00:48:00,400 --> 00:48:04,199
have edady. It will give some meaning at least.

796
00:48:04,480 --> 00:48:07,679
Speaker 1: Yep. Terrific book, especially if you're in any kind of

797
00:48:07,760 --> 00:48:12,519
leadership you're trying to influence your organization things like that, right,

798
00:48:13,199 --> 00:48:14,960
so if you're trying to influence them to write an

799
00:48:15,079 --> 00:48:19,880
error handler in your app. Anyway, it's a terrific book.

800
00:48:19,920 --> 00:48:22,280
I like his stuff. Anything else, I kind of cut

801
00:48:22,320 --> 00:48:25,880
you off there, Yeah, no, no, I think this is done. Okay,

802
00:48:26,400 --> 00:48:28,079
so I'm going to throw out a few picks. I

803
00:48:28,159 --> 00:48:30,000
just want to remind everybody go to dev chat on

804
00:48:30,119 --> 00:48:32,199
TV slash level up if you want to be on

805
00:48:32,280 --> 00:48:34,039
one of the Q and A calls. It's ten minutes

806
00:48:34,079 --> 00:48:36,119
of training and then we just answer questions so we

807
00:48:36,239 --> 00:48:38,320
run out of the time. The other one that I'm

808
00:48:38,320 --> 00:48:39,880
gonna throw out there I mentioned the start of the

809
00:48:39,920 --> 00:48:42,800
show is podcast boot camp. It's four weeks we'll get

810
00:48:42,800 --> 00:48:45,840
your podcast launched. Make you sound terrific, and yeah, all

811
00:48:45,840 --> 00:48:48,320
the details aret podcast boot camp dot io. And then

812
00:48:48,679 --> 00:48:51,159
a few things that are not my stuff that I'm

813
00:48:51,239 --> 00:48:53,760
gonna throw out. Our first, my wife and I started

814
00:48:53,800 --> 00:48:57,760
watching this show, and it's it's free on the online,

815
00:48:57,800 --> 00:48:59,480
so you can just just go look it up and

816
00:49:00,039 --> 00:49:03,400
you can find it. It's called The Chosen and it

817
00:49:03,719 --> 00:49:07,639
is basically a it's kind of a depiction of the

818
00:49:07,719 --> 00:49:11,079
life of Jesus Christ. But it's so most of those

819
00:49:11,199 --> 00:49:13,800
they just kind of showed the Bible stories, right, it's

820
00:49:13,880 --> 00:49:15,960
just like this and then this and this. But what

821
00:49:16,280 --> 00:49:18,159
these folks have done is they've kind of created this

822
00:49:18,360 --> 00:49:21,960
ongoing narrative, and so they created backstories for some of

823
00:49:22,039 --> 00:49:25,559
the apostles and some of the other people that you

824
00:49:25,639 --> 00:49:28,320
read about in the Bible, some of the people for

825
00:49:28,440 --> 00:49:32,119
whom Jesus perform miracles, and then you kind of get

826
00:49:32,199 --> 00:49:35,760
this more fleshed out story and so it's it's really

827
00:49:35,840 --> 00:49:38,559
been interesting. So obviously some of it is fictional, right,

828
00:49:39,320 --> 00:49:42,480
but anyway, it's been a really, really enjoyable way to

829
00:49:42,559 --> 00:49:44,920
kind of connect with the things that we believe here.

830
00:49:45,239 --> 00:49:47,719
So I'm going to pick that because it's just been terrific.

831
00:49:48,280 --> 00:49:51,320
And then completely unrelated, we signed up for a service

832
00:49:51,360 --> 00:49:53,400
at the same time that we signed that we started

833
00:49:53,440 --> 00:49:56,800
watching this, and the service that we signed up for

834
00:49:57,119 --> 00:49:59,559
actually owns the production company that made The Chosen and

835
00:49:59,599 --> 00:50:01,760
we found that out later. But the service is called

836
00:50:01,840 --> 00:50:05,079
did Angel, and effectively what they do is you can

837
00:50:05,199 --> 00:50:09,400
watch shows on Netflix, Amazon Prime, a couple of the

838
00:50:09,440 --> 00:50:13,360
other streaming services. I think Kulu is on there. And

839
00:50:13,840 --> 00:50:16,039
what it does is you can tell it to filter

840
00:50:16,119 --> 00:50:19,519
out certain content, right, So if you want to watch

841
00:50:19,559 --> 00:50:21,719
a show with your kids and you don't want them

842
00:50:21,760 --> 00:50:24,400
to see certain kinds of content, can tell it no

843
00:50:24,679 --> 00:50:28,840
sex or no none of these words or things like that, right,

844
00:50:29,360 --> 00:50:32,360
and it has filters for that. Now somebody has to

845
00:50:32,400 --> 00:50:35,559
go through and actually say the filters apply to these

846
00:50:35,639 --> 00:50:37,880
time codes. Right. So it doesn't have everything on all

847
00:50:37,920 --> 00:50:40,760
those platforms, but it has most of the popular stuff.

848
00:50:41,280 --> 00:50:43,119
And it's been pretty nice because there have been some

849
00:50:43,280 --> 00:50:45,320
shows that I want to watch that I know have

850
00:50:45,440 --> 00:50:47,599
parts that I don't want to watch, like me personally

851
00:50:47,719 --> 00:50:50,280
as an adult, right, and so I just say, hey,

852
00:50:50,440 --> 00:50:52,840
you know what, I don't need to see nudity, I

853
00:50:52,920 --> 00:50:55,159
don't need to hear the F bomb, right, and it

854
00:50:55,320 --> 00:50:57,360
just cleans it up. And it's been really, really nice.

855
00:50:57,519 --> 00:51:00,039
So I'm going to pick that as well, Philip, what

856
00:51:00,119 --> 00:51:00,519
are you pick?

857
00:51:00,880 --> 00:51:04,280
Speaker 2: I think my pig is actually get up code spaces,

858
00:51:04,679 --> 00:51:09,000
So I think it was published the last week or

859
00:51:09,800 --> 00:51:12,519
within the last two weeks. And get up code Spaces

860
00:51:12,719 --> 00:51:16,320
is weist code for web with which you can open

861
00:51:17,000 --> 00:51:20,920
ye git up repositories simply by simply by pressing the

862
00:51:21,000 --> 00:51:24,920
dot button of your keyboard and then you can start

863
00:51:26,000 --> 00:51:31,800
editing code of some repositories. And yeah, navigating through repositories

864
00:51:31,840 --> 00:51:35,400
on guitub with the wes code Web edition. And I

865
00:51:35,480 --> 00:51:39,400
think it's it's really great. Unfortunately, the I can think

866
00:51:40,079 --> 00:51:43,400
is not the capital right now of this, but there

867
00:51:43,440 --> 00:51:46,199
will be an update. I think maybe this evening on

868
00:51:47,079 --> 00:51:52,320
lately tomorrow, so yeah, I will will start to publish

869
00:51:52,360 --> 00:51:55,360
a new version on Edge so that it's also available

870
00:51:55,840 --> 00:51:59,199
for get up code Spaces. And I think that's one

871
00:51:59,199 --> 00:52:02,840
of one of the great things that secured within the

872
00:52:02,920 --> 00:52:04,599
last one or two weeks for me.

873
00:52:04,840 --> 00:52:07,159
Speaker 4: Oh yes, I need to chime in there because I

874
00:52:07,280 --> 00:52:12,360
actually retweeted that tweet from your feed and I tried

875
00:52:12,400 --> 00:52:12,679
it out.

876
00:52:13,280 --> 00:52:14,400
Speaker 1: It is so cool.

877
00:52:14,480 --> 00:52:16,760
Speaker 4: If you thought that was what I mentioned it on

878
00:52:16,960 --> 00:52:20,840
was magic, this is like mind blowing. It's just insane,

879
00:52:21,440 --> 00:52:23,519
very very cool feature from from get up. I think

880
00:52:23,559 --> 00:52:26,079
it's I think it's pretty it's gonna take off it's

881
00:52:26,079 --> 00:52:28,440
gonna pick up very well, I think, yeah, very cool.

882
00:52:28,920 --> 00:52:31,840
It'd be nice to see material icon't theme there as well,

883
00:52:32,719 --> 00:52:37,480
So yeah, it will come up listening.

884
00:52:38,239 --> 00:52:40,880
Speaker 1: Awesome. I just found out too that, and I'd heard

885
00:52:40,920 --> 00:52:43,320
rumors of this, but The Chosen has actually filmed about

886
00:52:43,519 --> 00:52:47,159
forty five minutes from here, Utah. I don't know why

887
00:52:47,199 --> 00:52:49,159
they well, I do know why they picked that location,

888
00:52:49,400 --> 00:52:51,320
and it's kind of an interesting story. I'm just gonna

889
00:52:51,320 --> 00:52:53,639
throw it in real quick because it's fun. But so

890
00:52:54,000 --> 00:52:56,760
the Church, the Church of Jesus Christ, the Latter day

891
00:52:56,800 --> 00:52:59,800
Saints LBS Church, Mormons big presence here. I remember the

892
00:53:00,519 --> 00:53:02,960
but they did a bunch of Bible videos a few

893
00:53:03,039 --> 00:53:05,599
years ago, and they basically built a whole bunch of

894
00:53:05,960 --> 00:53:12,280
like replica sets of Jerusalem scenes and stuff. And they

895
00:53:12,360 --> 00:53:15,400
allow other organizations to come in and film the same

896
00:53:15,519 --> 00:53:17,239
kind of content. Right, if you need kind of that

897
00:53:17,400 --> 00:53:21,239
ancient looking, you know, old time Jerusalem kind kind of

898
00:53:21,280 --> 00:53:24,760
look to your film, you can come film there. So anyway,

899
00:53:25,119 --> 00:53:28,280
apparently they let them come film The Chosen there as well.

900
00:53:28,800 --> 00:53:29,280
Speaker 4: Interesting.

901
00:53:29,840 --> 00:53:32,760
Speaker 1: Yeah, love this stuff. It's fun. It's always fun to

902
00:53:32,800 --> 00:53:37,719
find it like semi personal connection to some and so yeah, Anyway, well,

903
00:53:37,719 --> 00:53:39,679
thanks for coming Philip. This was a lot of fun

904
00:53:39,840 --> 00:53:42,480
and hopefully we inspired some folks to, yeah, kind of

905
00:53:42,519 --> 00:53:45,280
consolidate and simplify some of this stuff, because yeah, if

906
00:53:45,320 --> 00:53:46,920
you're doing a piecemeal, it's kind of a pain in

907
00:53:46,960 --> 00:53:49,199
the neck. But if you can get it all together

908
00:53:49,239 --> 00:53:51,360
in one place, then it's, oh, I'm just going to

909
00:53:51,800 --> 00:53:54,519
lock into these components in these services and I'm done.

910
00:53:54,920 --> 00:53:58,320
Speaker 2: Yeah. Absolutely so. Also, thanks for having me and I

911
00:53:58,440 --> 00:54:01,039
had some great questions and was great to be part

912
00:54:01,079 --> 00:54:01,760
of your podcast.

913
00:54:01,960 --> 00:54:05,960
Speaker 1: Yeah. Well, we're going to wrap up here until next time, Maxim, Bye,

914
00:54:06,000 --> 00:54:06,880
bye bye.

