WEBVTT

1
00:00:05.280 --> 00:00:08.759
<v Speaker 1>Hey, folks, welcome back to another episode of JavaScript Jabber.

2
00:00:09.000 --> 00:00:11.199
<v Speaker 2>This week, on our panel, we have Dan Shapiir.

3
00:00:11.039 --> 00:00:13.800
<v Speaker 3>Hello from a very warm tut a Beef.

4
00:00:14.039 --> 00:00:17.280
<v Speaker 4>We also have Steve Edwards, Hello from the sunny and

5
00:00:17.280 --> 00:00:19.480
<v Speaker 4>clear Portland. And Dan, I must say that last week

6
00:00:19.519 --> 00:00:21.600
<v Speaker 4>I was down in Arizona at my parents, and I

7
00:00:21.640 --> 00:00:23.239
<v Speaker 4>think the weather is more like where you are.

8
00:00:24.519 --> 00:00:28.920
<v Speaker 3>Well, I assume Arizona is dryer. Oh yeah on the coast,

9
00:00:29.079 --> 00:00:30.000
<v Speaker 3>so yeah.

10
00:00:29.800 --> 00:00:32.520
<v Speaker 4>Yeah, oh, I say, yeah, it's very very dry there,

11
00:00:32.759 --> 00:00:34.079
<v Speaker 4>like one hundred degrees fahrenheit.

12
00:00:34.200 --> 00:00:34.439
<v Speaker 2>Yeah.

13
00:00:34.439 --> 00:00:36.679
<v Speaker 1>My son's on the mission in South Carolina and he

14
00:00:36.840 --> 00:00:39.880
<v Speaker 1>was talking about how it gets hot there and I'm

15
00:00:39.920 --> 00:00:40.880
<v Speaker 1>hot here and I'm like.

16
00:00:41.600 --> 00:00:44.200
<v Speaker 4>Yeah, and humid there. Yeah.

17
00:00:44.280 --> 00:00:46.840
<v Speaker 2>Yeah, when I lived in Italy that that was the case.

18
00:00:46.880 --> 00:00:48.880
<v Speaker 2>Too much more human there.

19
00:00:48.960 --> 00:00:51.640
<v Speaker 1>I'm Charles Maxwood from Top End Devs and this week

20
00:00:51.679 --> 00:00:53.799
<v Speaker 1>we have our friend Hadar here. Do you want to

21
00:00:53.799 --> 00:00:56.119
<v Speaker 1>introduce yourself or does Dan want to introduce you?

22
00:00:56.159 --> 00:00:56.520
<v Speaker 2>I don't know.

23
00:00:58.200 --> 00:01:00.560
<v Speaker 5>Yeah, I can go for it definitely. My name is

24
00:01:00.600 --> 00:01:03.920
<v Speaker 5>a Dargeva and I'm the cito and co founder of

25
00:01:04.239 --> 00:01:10.519
<v Speaker 5>Mao Dotev, a pretty small startup company. Yeah, currently at

26
00:01:10.680 --> 00:01:14.400
<v Speaker 5>Tel Aviv originally in the past year and a half

27
00:01:14.480 --> 00:01:17.799
<v Speaker 5>living in Thailand, currently visiting family and friends here in

28
00:01:17.799 --> 00:01:21.560
<v Speaker 5>Tel Aviv. Where have you been in Thailand in the islands,

29
00:01:21.719 --> 00:01:23.599
<v Speaker 5>Samoikopanghan took some.

30
00:01:23.519 --> 00:01:26.239
<v Speaker 4>Break, just spent two years. My daughter just spent two

31
00:01:26.280 --> 00:01:28.959
<v Speaker 4>years in Chang Mai. I went visited her there a

32
00:01:28.959 --> 00:01:30.719
<v Speaker 4>little while ago. But that's not farther north.

33
00:01:31.480 --> 00:01:33.159
<v Speaker 5>Mm hmm, yeah, yeah, yeah.

34
00:01:33.200 --> 00:01:35.879
<v Speaker 2>It sounds exotic, which means I want to travel there someday.

35
00:01:36.879 --> 00:01:41.439
<v Speaker 4>You should, you should, and you actually about heat and

36
00:01:41.519 --> 00:01:43.519
<v Speaker 4>humidity till you go there and got this time.

37
00:01:43.599 --> 00:01:48.079
<v Speaker 5>Yeah, but you know, it's really it's really nice when

38
00:01:48.159 --> 00:01:52.040
<v Speaker 5>you're combining like our kind of jobs with the tech industry,

39
00:01:52.159 --> 00:01:56.319
<v Speaker 5>doing what you know to do with these exotic places

40
00:01:56.480 --> 00:02:00.439
<v Speaker 5>and like a kind of not so developed countries. I

41
00:02:00.519 --> 00:02:02.519
<v Speaker 5>found it like a really nice.

42
00:02:02.319 --> 00:02:04.280
<v Speaker 3>Match digital nomad lifestyle.

43
00:02:04.359 --> 00:02:06.319
<v Speaker 2>Huh yeah, yeah, good, very cool.

44
00:02:06.719 --> 00:02:09.240
<v Speaker 1>So I don't know who wants to introduce the topic.

45
00:02:09.360 --> 00:02:11.240
<v Speaker 1>We kind of had some back and forth on the title,

46
00:02:11.360 --> 00:02:13.759
<v Speaker 1>So I'm gonna let somebody else do it because I

47
00:02:13.759 --> 00:02:14.759
<v Speaker 1>think I would screw it up.

48
00:02:16.719 --> 00:02:19.159
<v Speaker 3>Now you wanna you wanna set the stage? I think

49
00:02:19.199 --> 00:02:20.039
<v Speaker 3>that would be best.

50
00:02:20.960 --> 00:02:24.960
<v Speaker 5>Yeah, yeah, I think I think we can talk today

51
00:02:25.000 --> 00:02:28.879
<v Speaker 5>about like a mix and match of technologies in the

52
00:02:28.960 --> 00:02:32.159
<v Speaker 5>in the front end area, and with all what's going

53
00:02:32.199 --> 00:02:35.800
<v Speaker 5>on nowadays with the AI, with the multi frameworks, with

54
00:02:36.240 --> 00:02:38.599
<v Speaker 5>all the things that's going around with the vibe coding,

55
00:02:38.719 --> 00:02:41.080
<v Speaker 5>and you know, the builders of the world, and this

56
00:02:41.159 --> 00:02:43.439
<v Speaker 5>is also what they were doing in the company. So

57
00:02:43.719 --> 00:02:47.520
<v Speaker 5>I found it like interesting, So yeah, let's dig in.

58
00:02:47.639 --> 00:02:51.479
<v Speaker 3>Yeah, it's it's funny because as it happens, I'm literally

59
00:02:51.800 --> 00:02:55.360
<v Speaker 3>work dealing with that at the company that I'm working

60
00:02:55.400 --> 00:02:59.360
<v Speaker 3>at at Size Sense, where we have this like an

61
00:02:59.400 --> 00:03:05.439
<v Speaker 3>overarching framework or view that's like tabed view of shows

62
00:03:05.520 --> 00:03:08.479
<v Speaker 3>certain parts of the application. You know, we are a

63
00:03:08.520 --> 00:03:13.240
<v Speaker 3>business intelligence application, so you've got a modeling view where

64
00:03:13.400 --> 00:03:17.159
<v Speaker 3>you specify the data sources and the data sets that

65
00:03:17.199 --> 00:03:21.599
<v Speaker 3>you're working with, you connect to various external databases. That's

66
00:03:21.680 --> 00:03:24.879
<v Speaker 3>one view, and then you have an analytics view where

67
00:03:24.879 --> 00:03:27.719
<v Speaker 3>you build all sorts of dashboards and stuff like that,

68
00:03:28.159 --> 00:03:32.639
<v Speaker 3>and they're all implemented. It's like tabs in the main page,

69
00:03:33.240 --> 00:03:38.039
<v Speaker 3>but in reality what they are are distinct effectively Web applications,

70
00:03:38.240 --> 00:03:43.400
<v Speaker 3>and that main framework loads the when you enter a

71
00:03:43.400 --> 00:03:46.360
<v Speaker 3>specific view, it needs to load that view on demand,

72
00:03:47.400 --> 00:03:51.159
<v Speaker 3>and that view might be implemented in various different frameworks.

73
00:03:52.280 --> 00:03:57.360
<v Speaker 3>For example, the modeler is implemented in React, the analytics

74
00:03:57.400 --> 00:03:59.520
<v Speaker 3>one is kind of legacy, where in the process of

75
00:03:59.560 --> 00:04:04.039
<v Speaker 3>replacing it, the current one is still implemented in Angular,

76
00:04:04.680 --> 00:04:07.479
<v Speaker 3>and there are other views implemented in other things, and

77
00:04:07.759 --> 00:04:10.800
<v Speaker 3>even the customer can add their own custom views that

78
00:04:10.840 --> 00:04:14.120
<v Speaker 3>they can implement in whatever they want. So that seems

79
00:04:14.159 --> 00:04:16.839
<v Speaker 3>to be exactly the scenario that you're talking about.

80
00:04:17.360 --> 00:04:20.959
<v Speaker 5>So in that scenario that you're presenting, how you actually

81
00:04:21.000 --> 00:04:21.720
<v Speaker 5>implemented it.

82
00:04:21.959 --> 00:04:24.720
<v Speaker 3>Well, you know, one of the reasons that I'm currently

83
00:04:24.759 --> 00:04:27.240
<v Speaker 3>looking at it is that it was implemented in a

84
00:04:27.279 --> 00:04:31.079
<v Speaker 3>legacy sort of way several years ago. So it was

85
00:04:31.160 --> 00:04:37.480
<v Speaker 3>a hand built kind of framework, effectively built using native

86
00:04:37.800 --> 00:04:42.000
<v Speaker 3>JavaScript and dorm operations. They kind of based it on

87
00:04:42.199 --> 00:04:49.120
<v Speaker 3>the now defunct Google Closure library, but they mostly did

88
00:04:49.160 --> 00:04:54.160
<v Speaker 3>it by hand. And I'm looking at ways to modernize it,

89
00:04:54.240 --> 00:04:58.040
<v Speaker 3>and I'm thinking about effectively looking at the possibility of

90
00:04:58.079 --> 00:05:00.279
<v Speaker 3>reimplementing the whole thing and React. Yeah.

91
00:05:00.360 --> 00:05:03.480
<v Speaker 5>Yeah, So it sounds familiar like a lot of companies

92
00:05:03.680 --> 00:05:08.079
<v Speaker 5>facing these kind of issues, either creating like a manually

93
00:05:08.240 --> 00:05:12.160
<v Speaker 5>bridges like you mentioned like understanding, all right, our host

94
00:05:12.199 --> 00:05:15.480
<v Speaker 5>application is React or Angular, and now we need the

95
00:05:15.519 --> 00:05:18.439
<v Speaker 5>other one. So let's reach between them, which lead to,

96
00:05:19.000 --> 00:05:21.439
<v Speaker 5>first of all, a lot of time spending. Right, you

97
00:05:21.480 --> 00:05:25.279
<v Speaker 5>need to invest in creating those bridges versions specifically most

98
00:05:25.319 --> 00:05:30.879
<v Speaker 5>of the time. Right when React nineteen or twenty published,

99
00:05:30.920 --> 00:05:34.519
<v Speaker 5>you need to fix your API and do whatever things

100
00:05:34.920 --> 00:05:38.519
<v Speaker 5>or Another variant of implementation that I'm hearing a lot

101
00:05:39.560 --> 00:05:43.759
<v Speaker 5>is like loading kind of microphone and in iprams. Right,

102
00:05:44.399 --> 00:05:46.720
<v Speaker 5>this is another things that are going on for.

103
00:05:47.920 --> 00:05:51.839
<v Speaker 3>The problem with microft we're using. So one option is,

104
00:05:52.319 --> 00:05:55.040
<v Speaker 3>like you said, I frames, but that creates a really

105
00:05:55.160 --> 00:05:59.720
<v Speaker 3>rough separation. It's more much more difficult to pass data

106
00:05:59.800 --> 00:06:02.879
<v Speaker 3>back and forth. You don't just pass props into a

107
00:06:02.879 --> 00:06:07.360
<v Speaker 3>component for example, but it does, like you said, it

108
00:06:07.399 --> 00:06:12.160
<v Speaker 3>does create a much like more hard and clear separation

109
00:06:12.720 --> 00:06:16.680
<v Speaker 3>between the container the containing. Another option that used to

110
00:06:16.680 --> 00:06:19.519
<v Speaker 3>be talked about a lot. I'm hearing about it less

111
00:06:20.120 --> 00:06:24.360
<v Speaker 3>is web components that you wrap the internal thing in

112
00:06:24.399 --> 00:06:28.000
<v Speaker 3>a web component. You create a separation that way, but

113
00:06:28.120 --> 00:06:31.399
<v Speaker 3>they actually still live within the same frame, so it's

114
00:06:31.920 --> 00:06:34.920
<v Speaker 3>less of a segregation between the two. And you can

115
00:06:35.160 --> 00:06:38.600
<v Speaker 3>do all sorts of things with the module federation, I guess,

116
00:06:38.680 --> 00:06:42.480
<v Speaker 3>and even the built in import mechanism that you have

117
00:06:42.600 --> 00:06:46.639
<v Speaker 3>in modern browsers yea. And if you look and if

118
00:06:46.680 --> 00:06:50.800
<v Speaker 3>you look at advanced loaders like VAT and stuff like that,

119
00:06:50.879 --> 00:06:52.839
<v Speaker 3>they can do a lot of the heavy lifting for

120
00:06:52.879 --> 00:06:58.000
<v Speaker 3>you as well. So I just to finish the code

121
00:06:58.040 --> 00:07:00.800
<v Speaker 3>that the legacy code that I'm looking at. They actually

122
00:07:00.839 --> 00:07:03.360
<v Speaker 3>did this. They're kind of an old school way. They

123
00:07:03.399 --> 00:07:08.079
<v Speaker 3>didn't go with iframes. Instead, they kind of forced up

124
00:07:08.199 --> 00:07:11.160
<v Speaker 3>the scripts that you want to load to be placed

125
00:07:11.160 --> 00:07:14.519
<v Speaker 3>in a very hard coded sort of way in certain

126
00:07:14.600 --> 00:07:19.399
<v Speaker 3>folders and using certain names and that way. It basically

127
00:07:19.480 --> 00:07:23.480
<v Speaker 3>just creates script tags on the fly and loads it

128
00:07:23.519 --> 00:07:26.600
<v Speaker 3>this way. Yeah, Chuck, sorry for interrupting. No, it's fine.

129
00:07:27.279 --> 00:07:29.519
<v Speaker 1>The question that I have with this because it seems like,

130
00:07:29.800 --> 00:07:32.279
<v Speaker 1>you know, these are all solutions to Okay, we kind

131
00:07:32.319 --> 00:07:35.800
<v Speaker 1>of started in this way, you know, maybe using a

132
00:07:35.839 --> 00:07:39.000
<v Speaker 1>framework or inventing our own framework, and then wait, you know,

133
00:07:39.040 --> 00:07:41.120
<v Speaker 1>we realized that we might be able to be more

134
00:07:41.120 --> 00:07:43.879
<v Speaker 1>productive or get more of what we want or whatever

135
00:07:44.199 --> 00:07:47.600
<v Speaker 1>from another framework. And then you know, maybe you're segregating

136
00:07:47.639 --> 00:07:51.560
<v Speaker 1>between versions because there are reasons why you can't upgrade

137
00:07:51.759 --> 00:07:54.079
<v Speaker 1>the one piece to the other piece, to the same

138
00:07:54.199 --> 00:07:58.439
<v Speaker 1>version of whatever you're using Angular or React or whatever,

139
00:07:58.800 --> 00:08:01.040
<v Speaker 1>and then you know, maybe you start to migrate to

140
00:08:01.199 --> 00:08:03.439
<v Speaker 1>use another technology, and so I can kind of see

141
00:08:03.439 --> 00:08:05.839
<v Speaker 1>how you would wind up coupling this together. My question

142
00:08:06.000 --> 00:08:09.120
<v Speaker 1>is is that are there people that do this on

143
00:08:09.199 --> 00:08:13.120
<v Speaker 1>purpose without having all the historical stuff where they're saying,

144
00:08:13.480 --> 00:08:15.439
<v Speaker 1>you know what, we need a little bit of this

145
00:08:15.600 --> 00:08:17.800
<v Speaker 1>from React and a little bit of this from View

146
00:08:18.720 --> 00:08:20.199
<v Speaker 1>or a little bit of this from you know, one

147
00:08:20.240 --> 00:08:23.920
<v Speaker 1>of the other, maybe some of the smaller frameworks, and

148
00:08:24.000 --> 00:08:26.560
<v Speaker 1>so you know, they blend them on purpose to get

149
00:08:26.720 --> 00:08:30.199
<v Speaker 1>some mix of what they actually need. Or is it

150
00:08:30.240 --> 00:08:33.279
<v Speaker 1>almost exclusively the other thing, where it's we've got a

151
00:08:33.279 --> 00:08:35.200
<v Speaker 1>ton of legacy code and we don't have the time

152
00:08:35.200 --> 00:08:36.039
<v Speaker 1>to migrate at all.

153
00:08:36.200 --> 00:08:40.039
<v Speaker 5>So from my perspective, I think it's mainly the second thing.

154
00:08:40.240 --> 00:08:44.600
<v Speaker 5>It's a not must to be legacy. But even companies

155
00:08:44.600 --> 00:08:48.000
<v Speaker 5>that you know, both other companies are integrated with other

156
00:08:48.720 --> 00:08:55.879
<v Speaker 5>projects or companies that decided a I don't know, to implement,

157
00:08:56.120 --> 00:09:00.639
<v Speaker 5>like to move to a new new framework and the

158
00:09:00.759 --> 00:09:03.519
<v Speaker 5>kind of a legacy is not too old, but now

159
00:09:03.559 --> 00:09:08.039
<v Speaker 5>they want to share components and experiments and and yeah,

160
00:09:08.360 --> 00:09:10.919
<v Speaker 5>and UIs between those two.

161
00:09:11.000 --> 00:09:14.600
<v Speaker 3>The one exception that they can be sorry, just to

162
00:09:14.639 --> 00:09:17.360
<v Speaker 3>mention that it can even be different versions of the

163
00:09:17.399 --> 00:09:21.159
<v Speaker 3>same framework, like if you're life you're large enough organization.

164
00:09:21.480 --> 00:09:25.320
<v Speaker 3>One a group might already be on REACT I don't

165
00:09:25.360 --> 00:09:28.840
<v Speaker 3>know nineteen and another one is still stuck on React seventeen,

166
00:09:29.120 --> 00:09:32.000
<v Speaker 3>and it might be problematic to run them both in

167
00:09:32.080 --> 00:09:32.840
<v Speaker 3>the same page.

168
00:09:33.600 --> 00:09:35.039
<v Speaker 4>Yeah, I mean I can see the same thing in

169
00:09:35.039 --> 00:09:37.960
<v Speaker 4>the view world, where the transition from view to two

170
00:09:38.000 --> 00:09:41.679
<v Speaker 4>to V three is fairly substantial, even though you know

171
00:09:42.080 --> 00:09:45.879
<v Speaker 4>B three has backwards compatibility for the options API, but

172
00:09:46.679 --> 00:09:49.000
<v Speaker 4>you know they're if you were going to make an

173
00:09:49.080 --> 00:09:51.240
<v Speaker 4>upgrade like that, it would be a substantial thing. So

174
00:09:51.639 --> 00:09:55.159
<v Speaker 4>it's perfectly you're not out of the question, you know,

175
00:09:55.240 --> 00:09:58.799
<v Speaker 4>to think of you two versus Q three. You know

176
00:09:59.120 --> 00:10:00.120
<v Speaker 4>that ecosystem.

177
00:10:00.360 --> 00:10:03.320
<v Speaker 2>So is there ever a reason to do this on purpose?

178
00:10:03.519 --> 00:10:06.120
<v Speaker 5>So the one exception that I can say in the

179
00:10:06.480 --> 00:10:12.600
<v Speaker 5>area that we are now experimenting is that more people

180
00:10:12.720 --> 00:10:16.000
<v Speaker 5>or more machines start generating code. And I'm referring to

181
00:10:16.039 --> 00:10:19.519
<v Speaker 5>the AI, right, So let's say that now you have

182
00:10:19.559 --> 00:10:22.600
<v Speaker 5>a view view JAS application and you are fine with it.

183
00:10:22.679 --> 00:10:26.600
<v Speaker 5>Everything works great. But then you go to Gemini, for example,

184
00:10:26.960 --> 00:10:32.120
<v Speaker 5>and asking to generate some component. Gemini exclusively said I

185
00:10:32.159 --> 00:10:35.320
<v Speaker 5>cannot generate view components. I can do it in React

186
00:10:35.559 --> 00:10:38.519
<v Speaker 5>or in pure HTML. And now what you are doing

187
00:10:38.600 --> 00:10:42.360
<v Speaker 5>you are stuck. You either get the output as an inspiration.

188
00:10:42.600 --> 00:10:45.360
<v Speaker 5>All right, I generated something really quick, but now I

189
00:10:45.399 --> 00:10:48.720
<v Speaker 5>need to rewrite it in my framework, which is View.

190
00:10:49.159 --> 00:10:51.879
<v Speaker 5>And by the way, same go with Angular, Same go

191
00:10:52.000 --> 00:10:54.879
<v Speaker 5>with swelt right, which can be a great choice for

192
00:10:55.000 --> 00:10:59.399
<v Speaker 5>some companies in some projects, but now they I limit them.

193
00:10:59.720 --> 00:11:03.039
<v Speaker 5>So I think in this scenario you can in purpose

194
00:11:03.279 --> 00:11:04.440
<v Speaker 5>want to mix a match.

195
00:11:04.559 --> 00:11:06.200
<v Speaker 4>Wait a minute, so let me go back to you

196
00:11:06.279 --> 00:11:09.279
<v Speaker 4>saying that there's some AA models that can write code

197
00:11:09.320 --> 00:11:10.759
<v Speaker 4>in some frameworks but not the other.

198
00:11:11.480 --> 00:11:14.039
<v Speaker 1>Yeah, I was going to say. My experience with this

199
00:11:14.240 --> 00:11:17.360
<v Speaker 1>is not that it can't. It's that some of the

200
00:11:17.519 --> 00:11:22.000
<v Speaker 1>models do better with some languages or frameworks than others.

201
00:11:22.600 --> 00:11:25.440
<v Speaker 1>And so if you're trying to vibe code yourself something

202
00:11:25.600 --> 00:11:27.879
<v Speaker 1>and you want to do it in Angular instead of

203
00:11:27.919 --> 00:11:31.320
<v Speaker 1>React since it's been trained on so much more React,

204
00:11:31.399 --> 00:11:34.279
<v Speaker 1>since that's kind of the dominant framework, you may not

205
00:11:34.480 --> 00:11:38.320
<v Speaker 1>get great results from the Angular and it may take

206
00:11:38.480 --> 00:11:40.759
<v Speaker 1>more work in order to make it work. If you're

207
00:11:40.799 --> 00:11:44.159
<v Speaker 1>not familiar with ANGULAR, you may not recognize that it's

208
00:11:44.159 --> 00:11:47.480
<v Speaker 1>giving you garbage or giving you something that won't entirely work.

209
00:11:47.759 --> 00:11:49.399
<v Speaker 1>So I could see that being an issue too. But

210
00:11:49.559 --> 00:11:52.519
<v Speaker 1>that's my assumption is that, yeah, it's not going to

211
00:11:52.600 --> 00:11:54.440
<v Speaker 1>tell you I don't know Angular, It's just going to

212
00:11:54.440 --> 00:11:56.679
<v Speaker 1>give you something that isn't as refined.

213
00:11:57.440 --> 00:12:00.960
<v Speaker 3>I've yet to Gemini situation. I've had to think, got

214
00:12:00.960 --> 00:12:03.600
<v Speaker 3>to a situation where a model told me I don't

215
00:12:03.639 --> 00:12:07.639
<v Speaker 3>know right. Usually it doesn't. Here you go and it

216
00:12:07.639 --> 00:12:10.759
<v Speaker 3>gives me something totally wrong. Yeah, totally.

217
00:12:10.759 --> 00:12:13.080
<v Speaker 4>It'll make some things up. Yeah, it will make things up,

218
00:12:13.120 --> 00:12:15.399
<v Speaker 4>rather than admit that it doesn't. I saw a news story,

219
00:12:15.840 --> 00:12:18.240
<v Speaker 4>you know, along those lines. I saw a news story

220
00:12:18.559 --> 00:12:22.879
<v Speaker 4>but recently, where a judge had to punish an attorney

221
00:12:22.919 --> 00:12:25.360
<v Speaker 4>because he submitted a brief that was obviously written in

222
00:12:25.440 --> 00:12:28.799
<v Speaker 4>AI and it had submitted. Rather than say, there's no

223
00:12:28.879 --> 00:12:31.240
<v Speaker 4>cases here to back this up, it hit a generated

224
00:12:31.679 --> 00:12:34.639
<v Speaker 4>cases from the past that didn't exist. There's like it

225
00:12:34.759 --> 00:12:37.039
<v Speaker 4>was obvious that he just did this. Nay, I submitted.

226
00:12:37.039 --> 00:12:39.039
<v Speaker 4>It didn't even bother to do any research to make

227
00:12:39.080 --> 00:12:42.559
<v Speaker 4>sure that these cases that were referenced in supporting documents

228
00:12:42.679 --> 00:12:46.360
<v Speaker 4>even existed. Well, so you know, and it's like, so AI,

229
00:12:46.639 --> 00:12:49.960
<v Speaker 4>it seems like it's programmed to not be able to say, sorry,

230
00:12:50.000 --> 00:12:52.559
<v Speaker 4>I don't have anything here, but instead it makes something up.

231
00:12:52.559 --> 00:12:54.279
<v Speaker 4>And that's not the first story I've heard about that.

232
00:12:54.440 --> 00:12:57.399
<v Speaker 1>Well, you have to realize that the large language models,

233
00:12:57.440 --> 00:12:59.759
<v Speaker 1>they don't function by saying what do I know?

234
00:13:00.080 --> 00:13:00.200
<v Speaker 5>Then?

235
00:13:00.200 --> 00:13:01.120
<v Speaker 2>How do I tell you?

236
00:13:01.720 --> 00:13:04.799
<v Speaker 1>It functions by saying, you know, you gave me this prompt,

237
00:13:04.879 --> 00:13:06.639
<v Speaker 1>Here's what I think the first word is going to be.

238
00:13:06.840 --> 00:13:08.480
<v Speaker 1>Here's what I think the next word is going to be.

239
00:13:08.799 --> 00:13:11.159
<v Speaker 1>And it just keeps going, Okay, given that I wrote

240
00:13:11.159 --> 00:13:13.559
<v Speaker 1>the last paragraph, here's what I think the next word's

241
00:13:13.600 --> 00:13:15.399
<v Speaker 1>going to be. Right, And so it takes what it's

242
00:13:15.399 --> 00:13:18.720
<v Speaker 1>already written, and then what's the most recent thing that

243
00:13:18.759 --> 00:13:21.799
<v Speaker 1>it's written, and it just kind of continues to build

244
00:13:21.840 --> 00:13:24.879
<v Speaker 1>onto it. And so what it essentially did in that

245
00:13:24.960 --> 00:13:27.679
<v Speaker 1>case is it said, you know, it had been trained

246
00:13:27.720 --> 00:13:29.799
<v Speaker 1>on all this stuff, and so it just assumed the

247
00:13:29.799 --> 00:13:32.960
<v Speaker 1>next model or the next token in it is as

248
00:13:33.159 --> 00:13:36.279
<v Speaker 1>stated by this case, right, and so then it it

249
00:13:36.320 --> 00:13:38.799
<v Speaker 1>fills it in and so it gives you it makes

250
00:13:38.799 --> 00:13:42.480
<v Speaker 1>it up because it's just predicting that next token and

251
00:13:42.519 --> 00:13:45.000
<v Speaker 1>it's not giving you any real information because that's not

252
00:13:45.000 --> 00:13:45.600
<v Speaker 1>how it works.

253
00:13:46.000 --> 00:13:50.120
<v Speaker 3>And that also means that when you've got more examples

254
00:13:50.159 --> 00:13:55.759
<v Speaker 3>of certain frameworks, say React, right, fewer examples in another framework,

255
00:13:55.799 --> 00:13:56.360
<v Speaker 3>say I don't.

256
00:13:56.200 --> 00:13:59.559
<v Speaker 2>Want more better examples, yes.

257
00:14:00.240 --> 00:14:03.279
<v Speaker 3>Or swelled or something like that. Sometimes it works the opposite,

258
00:14:03.279 --> 00:14:06.679
<v Speaker 3>because sometimes you've got fewer examples, but all the examples

259
00:14:06.720 --> 00:14:10.360
<v Speaker 3>are really good. In that case that actually that's actually

260
00:14:10.440 --> 00:14:13.080
<v Speaker 3>a benefit. But in some cases there might not be

261
00:14:13.200 --> 00:14:15.799
<v Speaker 3>examples of the actual thing that you're trying to achieve,

262
00:14:16.240 --> 00:14:20.440
<v Speaker 3>and that might be a problem. It's sure I meant something.

263
00:14:20.840 --> 00:14:22.919
<v Speaker 5>I'm not sure I know to explain it. But the

264
00:14:22.960 --> 00:14:25.639
<v Speaker 5>scenario that I mentioned actually happened to us a lot

265
00:14:25.840 --> 00:14:29.919
<v Speaker 5>with specifically Gemini. Gemini refused to generate components that are

266
00:14:29.960 --> 00:14:33.159
<v Speaker 5>not React and check all the things that you said are, yeah,

267
00:14:33.399 --> 00:14:36.600
<v Speaker 5>we know them, like it's how the LLMS work. But

268
00:14:36.759 --> 00:14:40.639
<v Speaker 5>probably Google or I don't know, put some extra layer

269
00:14:40.679 --> 00:14:43.960
<v Speaker 5>on top of it in order to that happens to you, Yeah,

270
00:14:44.039 --> 00:14:46.000
<v Speaker 5>don't give you garbage or something like that.

271
00:14:46.000 --> 00:14:48.519
<v Speaker 4>That's interesting because I just use Gemini to rewrite and

272
00:14:48.600 --> 00:14:51.799
<v Speaker 4>view components or to create a you know, components with

273
00:14:51.840 --> 00:14:54.200
<v Speaker 4>a specific style. And you know, I said, here, this

274
00:14:54.240 --> 00:14:55.600
<v Speaker 4>is what I'm looking for, giving me this, and it

275
00:14:55.639 --> 00:14:57.919
<v Speaker 4>did and you know, to tweak it, modified and stuff

276
00:14:57.960 --> 00:14:59.519
<v Speaker 4>for my knees. But it's sped out.

277
00:14:59.600 --> 00:15:00.159
<v Speaker 3>You just I.

278
00:15:00.440 --> 00:15:07.159
<v Speaker 1>Think yesterday Angular So yeah, yeah.

279
00:15:06.879 --> 00:15:08.759
<v Speaker 5>So weird. But yeah, this is what happened to me

280
00:15:08.840 --> 00:15:14.080
<v Speaker 5>yesterday preparing for some meetup talking about you go to Gemini,

281
00:15:14.200 --> 00:15:18.200
<v Speaker 5>ask for pretty simple component like a video player, and

282
00:15:18.240 --> 00:15:20.840
<v Speaker 5>it's refused. He said, I can give it to you

283
00:15:20.919 --> 00:15:23.759
<v Speaker 5>in HTML or in React. I took a screenshot of

284
00:15:23.799 --> 00:15:25.720
<v Speaker 5>it and presented it in their meetup later.

285
00:15:26.399 --> 00:15:30.840
<v Speaker 4>Is that what's called framework discrimination? And maybe I'll give

286
00:15:30.879 --> 00:15:33.840
<v Speaker 4>that a delayed Sure, there we go.

287
00:15:35.360 --> 00:15:38.200
<v Speaker 3>We know that certain you know, in a different context,

288
00:15:38.240 --> 00:15:43.200
<v Speaker 3>certain models have certain political orientations that can be amusing anyway,

289
00:15:43.320 --> 00:15:47.000
<v Speaker 3>going back to tech, So we have a situation where

290
00:15:47.440 --> 00:15:51.559
<v Speaker 3>we have a certain component in a certain framework, let's say,

291
00:15:52.080 --> 00:15:55.240
<v Speaker 3>despite a lot of the you know, let's say the

292
00:15:55.279 --> 00:15:59.000
<v Speaker 3>rest even of the application being a different framework, maybe

293
00:15:59.039 --> 00:16:02.200
<v Speaker 3>because it's leg the code that we don't want to touch,

294
00:16:02.799 --> 00:16:07.000
<v Speaker 3>maybe because we it's two companies merged and one was

295
00:16:07.240 --> 00:16:10.399
<v Speaker 3>standardized on one framework and another on a different framework,

296
00:16:10.840 --> 00:16:14.240
<v Speaker 3>or maybe like you said, because I Vibe coded it

297
00:16:14.279 --> 00:16:17.039
<v Speaker 3>and that's what the LLM gave me. Whatever the reason

298
00:16:17.200 --> 00:16:21.519
<v Speaker 3>I've got, I need to connect code us that implement

299
00:16:21.679 --> 00:16:25.960
<v Speaker 3>a component implemented in one framework into an app web

300
00:16:25.960 --> 00:16:30.720
<v Speaker 3>application implemented in using a different framework. Okay, what do

301
00:16:30.799 --> 00:16:31.039
<v Speaker 3>I do?

302
00:16:31.240 --> 00:16:34.159
<v Speaker 5>So the things that we found the most effective is

303
00:16:34.480 --> 00:16:37.480
<v Speaker 5>again to mix and match, mix and match solutions, and

304
00:16:37.519 --> 00:16:41.080
<v Speaker 5>you mentioned most of them, like you maytion the IPRAM

305
00:16:41.360 --> 00:16:46.440
<v Speaker 5>which is limitation, which is the communication and the fact

306
00:16:46.519 --> 00:16:51.000
<v Speaker 5>that you cannot pass non serializable object there because you

307
00:16:51.039 --> 00:16:54.120
<v Speaker 5>need to use the post message API. And you mentioned

308
00:16:54.159 --> 00:16:58.559
<v Speaker 5>the web component right, which up until recently like here,

309
00:16:58.799 --> 00:17:02.440
<v Speaker 5>here andF or something like that, what's really really limited,

310
00:17:02.759 --> 00:17:06.200
<v Speaker 5>Like React didn't fully support it. View just supported it

311
00:17:06.599 --> 00:17:09.880
<v Speaker 5>fully even a half ago. By the way, Angela was

312
00:17:09.920 --> 00:17:13.400
<v Speaker 5>pretty good in it. But today with the release of

313
00:17:13.960 --> 00:17:19.200
<v Speaker 5>a React nineteen, all the three major frameworks are support

314
00:17:19.359 --> 00:17:24.039
<v Speaker 5>web component really well. Like you can really easy take

315
00:17:24.200 --> 00:17:27.799
<v Speaker 5>your existing component and wrap them most of the time

316
00:17:28.000 --> 00:17:32.799
<v Speaker 5>with the framework Helper View publish their own and Angular

317
00:17:33.880 --> 00:17:37.480
<v Speaker 5>theirs to wrap it as a web component. Then you

318
00:17:37.519 --> 00:17:40.799
<v Speaker 5>are eliminated a lot a lot, a lot of USSEL

319
00:17:41.079 --> 00:17:45.720
<v Speaker 5>because you are talking with pre bundled assets. We're taking

320
00:17:45.799 --> 00:17:49.319
<v Speaker 5>care of all the loading, all the styling, all the isolation.

321
00:17:50.039 --> 00:17:52.440
<v Speaker 5>You can define and we can deep dive into it

322
00:17:52.559 --> 00:17:56.799
<v Speaker 5>into the different modes. Right, we shadowed on without shadowed,

323
00:17:57.319 --> 00:17:59.880
<v Speaker 5>open shadow dome, closed shadow doome. But once you run

324
00:18:00.160 --> 00:18:03.359
<v Speaker 5>this component, you can pass props in and out. The

325
00:18:03.440 --> 00:18:07.880
<v Speaker 5>components still a reactive and can manage its own state.

326
00:18:08.039 --> 00:18:11.039
<v Speaker 5>And once you write a component as a pure component

327
00:18:11.240 --> 00:18:14.200
<v Speaker 5>and not mess with global object or global states, you

328
00:18:14.279 --> 00:18:16.119
<v Speaker 5>good to go and mix and match between them.

329
00:18:16.240 --> 00:18:20.079
<v Speaker 3>So you're suggesting, if I understand it correctly, to take

330
00:18:20.240 --> 00:18:22.880
<v Speaker 3>let's say an existing Let's say I want to embed

331
00:18:22.960 --> 00:18:28.279
<v Speaker 3>an Angular component inside of a React web application. What

332
00:18:28.319 --> 00:18:32.720
<v Speaker 3>you're suggesting is I take the Angular component, wrap it

333
00:18:32.839 --> 00:18:38.559
<v Speaker 3>inside a web component, and then host that web component

334
00:18:38.640 --> 00:18:42.240
<v Speaker 3>within the React application. Is that what you're suggesting.

335
00:18:42.359 --> 00:18:45.440
<v Speaker 5>I'm saying it's a good way to start. Like, first

336
00:18:45.480 --> 00:18:49.759
<v Speaker 5>of all, let's take your scenario. Angular support like wrapping

337
00:18:49.799 --> 00:18:54.960
<v Speaker 5>it for you. You shouldn't do much Angular just expose

338
00:18:55.000 --> 00:18:58.400
<v Speaker 5>a helper function called a web component. Then just give

339
00:18:58.440 --> 00:19:02.880
<v Speaker 5>it your component existing Angular component with a string attached

340
00:19:02.880 --> 00:19:05.799
<v Speaker 5>to it. To define the new tag name, bundle this

341
00:19:06.559 --> 00:19:10.559
<v Speaker 5>application into a JavaScript. Once you load it, the component

342
00:19:10.599 --> 00:19:14.640
<v Speaker 5>will appear every time that this custom tag will append

343
00:19:14.640 --> 00:19:17.200
<v Speaker 5>to the dome. It's not a bullet proof solution, and

344
00:19:17.240 --> 00:19:21.200
<v Speaker 5>we can deep dive into the limitations and edge cases,

345
00:19:21.240 --> 00:19:23.400
<v Speaker 5>but it's a good way to start.

346
00:19:23.599 --> 00:19:25.799
<v Speaker 1>I was going to ask what are the trade offs,

347
00:19:25.839 --> 00:19:28.200
<v Speaker 1>because yeah, it sounds like you get some isolation and

348
00:19:28.400 --> 00:19:29.200
<v Speaker 1>nice stuff out of it.

349
00:19:31.039 --> 00:19:32.079
<v Speaker 2>Yeah, so what.

350
00:19:34.799 --> 00:19:37.319
<v Speaker 5>So the downsuns that out of the box, you're not

351
00:19:37.480 --> 00:19:41.480
<v Speaker 5>getting any model sharing, right because if you wrap some

352
00:19:41.680 --> 00:19:45.039
<v Speaker 5>component with the Angular so it came, it's coming with

353
00:19:45.079 --> 00:19:48.279
<v Speaker 5>the Angular. So the bundle includes the framework that it

354
00:19:48.319 --> 00:19:52.359
<v Speaker 5>depends on. If you're loading only one bundle, it's maybe okay.

355
00:19:52.440 --> 00:19:55.359
<v Speaker 5>But if you're trying to build like a robust system

356
00:19:55.480 --> 00:19:58.880
<v Speaker 5>with a lot of sources for components, you may ended

357
00:19:58.960 --> 00:20:02.359
<v Speaker 5>up by loading on seoul Are multiple times or loading

358
00:20:02.480 --> 00:20:05.839
<v Speaker 5>React multiple times. Right, So this is one thing that

359
00:20:06.000 --> 00:20:09.759
<v Speaker 5>is not coming out of the box. Second thing that

360
00:20:10.079 --> 00:20:14.079
<v Speaker 5>pop into my mind is that you need to dip

361
00:20:14.119 --> 00:20:17.559
<v Speaker 5>a bit into in order to pass like complicated props,

362
00:20:17.599 --> 00:20:22.559
<v Speaker 5>which is not strings because web components is domb elements

363
00:20:22.720 --> 00:20:26.400
<v Speaker 5>dom and HTML is string based, so if you are

364
00:20:26.880 --> 00:20:30.559
<v Speaker 5>passing string let's say name, last name, phone number, you okay,

365
00:20:30.640 --> 00:20:33.279
<v Speaker 5>you just define it and pass it in the HTML.

366
00:20:33.440 --> 00:20:37.440
<v Speaker 5>Once you want to pass functions, objects, call backs, things

367
00:20:37.480 --> 00:20:40.079
<v Speaker 5>like that, you need to start and understand how the

368
00:20:40.119 --> 00:20:43.599
<v Speaker 5>mechanisms work behind the scenes. But again it's a gaps

369
00:20:43.640 --> 00:20:48.480
<v Speaker 5>that those frameworks closed and covered in the past few months.

370
00:20:48.519 --> 00:20:52.000
<v Speaker 3>To be fair, you can pass like you said before,

371
00:20:52.119 --> 00:20:57.480
<v Speaker 3>you can pass serializable objects by serializing the object into

372
00:20:57.519 --> 00:21:01.400
<v Speaker 3>a JSON string. But yes, it certainly does limit you

373
00:21:01.480 --> 00:21:04.279
<v Speaker 3>in what you're able to pass back and forth. If

374
00:21:04.319 --> 00:21:06.680
<v Speaker 3>you want to pass some sort of a callback, which

375
00:21:06.759 --> 00:21:10.720
<v Speaker 3>often you do because you usually want that particular application

376
00:21:10.880 --> 00:21:14.920
<v Speaker 3>to somehow impact its container, that becomes tricky.

377
00:21:15.079 --> 00:21:18.559
<v Speaker 5>Yeah, first of all, totally right. When you're trying to

378
00:21:18.599 --> 00:21:21.519
<v Speaker 5>press functions, stringify will not help you. And on top

379
00:21:21.599 --> 00:21:24.160
<v Speaker 5>of that, with a large object you are not You

380
00:21:24.200 --> 00:21:27.720
<v Speaker 5>don't want to always serialize them as a string and

381
00:21:27.720 --> 00:21:31.279
<v Speaker 5>then de serialize them because you're going to harm the performance. Right,

382
00:21:31.359 --> 00:21:35.960
<v Speaker 5>you want to pass the real object. So again it's possible,

383
00:21:36.319 --> 00:21:38.720
<v Speaker 5>but it's something that you need to understand the mechanism

384
00:21:38.759 --> 00:21:41.079
<v Speaker 5>behind the scenes. Like it's a few lines of cod

385
00:21:41.240 --> 00:21:44.079
<v Speaker 5>but you need to understand it, how React did it,

386
00:21:44.119 --> 00:21:46.720
<v Speaker 5>how Angular did it, how View did it. And if

387
00:21:46.759 --> 00:21:49.759
<v Speaker 5>you want it to be seamless, like I'm in React

388
00:21:49.839 --> 00:21:53.200
<v Speaker 5>hosting Angular components and I just want to pest props

389
00:21:53.440 --> 00:21:56.519
<v Speaker 5>in my J six, you need to understand like the

390
00:21:56.599 --> 00:21:58.480
<v Speaker 5>mechanism behind the top.

391
00:21:58.799 --> 00:22:00.599
<v Speaker 3>Then so go Chuck.

392
00:22:00.920 --> 00:22:02.519
<v Speaker 1>I was just going to say, you know, so let's

393
00:22:02.519 --> 00:22:04.920
<v Speaker 1>say that I do this right. And so I start

394
00:22:04.960 --> 00:22:08.079
<v Speaker 1>setting this up and I start sprinkling some Angular in

395
00:22:08.160 --> 00:22:12.640
<v Speaker 1>my React or you know whatever, and I start seeing, okay,

396
00:22:12.680 --> 00:22:15.640
<v Speaker 1>you know, it loads the Angular six times because I've

397
00:22:15.640 --> 00:22:18.319
<v Speaker 1>got six components in here, or I start seeing some

398
00:22:18.359 --> 00:22:21.519
<v Speaker 1>of these other trade offs start to rear their heads.

399
00:22:21.720 --> 00:22:23.759
<v Speaker 1>How do I start to mitigate that so that it's

400
00:22:23.799 --> 00:22:26.160
<v Speaker 1>not so heavy on my application?

401
00:22:27.119 --> 00:22:27.519
<v Speaker 5>Mm hmm.

402
00:22:27.680 --> 00:22:27.960
<v Speaker 3>Yeah.

403
00:22:28.599 --> 00:22:33.079
<v Speaker 5>So you can start really simple and just define that

404
00:22:33.160 --> 00:22:37.519
<v Speaker 5>your host applications support an API to load Angular and

405
00:22:37.559 --> 00:22:40.279
<v Speaker 5>then on the bundles will depends on it, so they

406
00:22:40.279 --> 00:22:44.039
<v Speaker 5>will they will arrive without Angular, without the framework asking

407
00:22:44.079 --> 00:22:48.039
<v Speaker 5>the application to provide it. Once this is one one option,

408
00:22:48.279 --> 00:22:50.839
<v Speaker 5>then you are keeping yourself the freedom that the ot

409
00:22:50.839 --> 00:22:55.400
<v Speaker 5>application control everything. If you want to be more robust

410
00:22:55.720 --> 00:22:58.839
<v Speaker 5>and agile e quid it, you can put in a

411
00:22:58.960 --> 00:23:02.720
<v Speaker 5>solutions like federation right, which will do it for you

412
00:23:03.039 --> 00:23:06.319
<v Speaker 5>and wrap things for you. Again, not a bulletproof solution

413
00:23:06.640 --> 00:23:10.759
<v Speaker 5>because Model Federation, even in the last versions, depends on

414
00:23:11.000 --> 00:23:14.079
<v Speaker 5>some kind of notion what's going on at the bill time.

415
00:23:14.640 --> 00:23:22.319
<v Speaker 3>So episodes in the past about model Federation, but I

416
00:23:22.359 --> 00:23:25.880
<v Speaker 3>think it's definitely worthwhile. It's been a while, so I

417
00:23:25.920 --> 00:23:30.240
<v Speaker 3>think it's definitely worthwhile to explain, to give at least

418
00:23:30.240 --> 00:23:33.640
<v Speaker 3>a brief explanation of what model Federation is and how

419
00:23:33.680 --> 00:23:34.240
<v Speaker 3>it works.

420
00:23:35.000 --> 00:23:39.519
<v Speaker 5>You want me to go ahead or yeah, go for it? Cool? Yeah,

421
00:23:39.599 --> 00:23:42.160
<v Speaker 5>So model Federation is a set of tools. It's a

422
00:23:42.200 --> 00:23:46.759
<v Speaker 5>library set of tools that helping us as developers get

423
00:23:46.759 --> 00:23:50.640
<v Speaker 5>into our build as a bill step. They supported they

424
00:23:50.680 --> 00:23:53.599
<v Speaker 5>started with the webpack. I think that now they also

425
00:23:53.599 --> 00:23:58.200
<v Speaker 5>supported the fit and they bring us set of tools

426
00:23:58.359 --> 00:24:03.039
<v Speaker 5>to identify and federate models that may be shared or

427
00:24:03.119 --> 00:24:09.759
<v Speaker 5>lazy load, identify them as like this, like that, and

428
00:24:09.799 --> 00:24:14.079
<v Speaker 5>then extract them into common bundles, which, just like chuck ask,

429
00:24:14.319 --> 00:24:16.920
<v Speaker 5>can then be loaded only once. But again it's come

430
00:24:17.000 --> 00:24:20.160
<v Speaker 5>with limitations because in order to do so at bill time,

431
00:24:20.559 --> 00:24:22.720
<v Speaker 5>you need to know what's going on at bill time.

432
00:24:23.240 --> 00:24:26.319
<v Speaker 5>So now if I want to mix and match components,

433
00:24:26.599 --> 00:24:29.400
<v Speaker 5>I maybe need to organize them in one mono report,

434
00:24:29.680 --> 00:24:30.759
<v Speaker 5>which really limits me.

435
00:24:30.960 --> 00:24:35.759
<v Speaker 3>Right, So, just to clarify, going back to model federation,

436
00:24:36.640 --> 00:24:39.359
<v Speaker 3>perm my understanding and feel free to correct me if

437
00:24:39.400 --> 00:24:43.759
<v Speaker 3>I'm wrong. Model federation is basically taking the concept of

438
00:24:43.839 --> 00:24:49.000
<v Speaker 3>dynamically loaded modules and enhancing them with the sort of

439
00:24:49.079 --> 00:24:54.160
<v Speaker 3>a global lookup table, as it were, to ensure that

440
00:24:54.799 --> 00:24:58.839
<v Speaker 3>when I load a particular module, I only loaded the

441
00:24:58.920 --> 00:25:04.079
<v Speaker 3>one time, and I I shared across all the code

442
00:25:04.160 --> 00:25:08.359
<v Speaker 3>or components that actually need it, rather than having each

443
00:25:08.400 --> 00:25:11.960
<v Speaker 3>and every one of them load the module independently. So

444
00:25:12.000 --> 00:25:15.519
<v Speaker 3>basically the module is loaded only once and then I

445
00:25:15.720 --> 00:25:19.799
<v Speaker 3>just get the reference to the already loaded module, rather

446
00:25:20.079 --> 00:25:24.039
<v Speaker 3>than each time loading it again and again and at

447
00:25:24.039 --> 00:25:27.519
<v Speaker 3>the very least rerunning the initialization code and stuff like that.

448
00:25:32.440 --> 00:25:35.920
<v Speaker 3>The other thing is that it's kind of supported by

449
00:25:36.640 --> 00:25:41.279
<v Speaker 3>the bundler that I'm using, maybe with a plugin or

450
00:25:41.319 --> 00:25:44.680
<v Speaker 3>extension or something, so that I don't have to think

451
00:25:44.680 --> 00:25:47.960
<v Speaker 3>about it. It's kind of done automatically for me, that

452
00:25:48.000 --> 00:25:54.240
<v Speaker 3>it identifies this distributed reuse and hooks up everything automatically

453
00:25:54.279 --> 00:25:58.079
<v Speaker 3>for me, that my code just assumes that it's a

454
00:25:58.160 --> 00:26:01.680
<v Speaker 3>regular package that I'm us using and there's nothing special

455
00:26:01.720 --> 00:26:06.119
<v Speaker 3>about it. Is that more or less and accurate description

456
00:26:06.200 --> 00:26:08.119
<v Speaker 3>from your perspective? Yeah?

457
00:26:08.640 --> 00:26:13.039
<v Speaker 5>I think that by default they are not identified as globally.

458
00:26:13.240 --> 00:26:16.119
<v Speaker 5>As you mentioned, it's an option that it's really easy

459
00:26:16.200 --> 00:26:19.359
<v Speaker 5>to plug in. It's not a default behavior, but yeah,

460
00:26:19.400 --> 00:26:23.519
<v Speaker 5>it's definitely part of your billstep running on your application

461
00:26:23.799 --> 00:26:28.480
<v Speaker 5>while it's being bundling and replacing the imports, and instead

462
00:26:28.519 --> 00:26:32.000
<v Speaker 5>of putting them inside your bundle, let you the ability

463
00:26:32.000 --> 00:26:34.359
<v Speaker 5>to load them from remote right.

464
00:26:34.480 --> 00:26:39.079
<v Speaker 3>Okay, So you're saying that one option is to use

465
00:26:39.200 --> 00:26:44.559
<v Speaker 3>model Federation in order to avoid the reloading of common

466
00:26:44.640 --> 00:26:49.440
<v Speaker 3>resources and in this way make management easier because it

467
00:26:49.519 --> 00:26:52.240
<v Speaker 3>also finds the resources for me. I don't have to

468
00:26:52.279 --> 00:26:57.680
<v Speaker 3>worry about putting the resources with special names and special places.

469
00:26:57.720 --> 00:27:00.920
<v Speaker 3>It does all the wiring for automatically.

470
00:27:01.119 --> 00:27:03.440
<v Speaker 5>Yeah. Yeah, yeah, And in the case that you are

471
00:27:03.480 --> 00:27:08.000
<v Speaker 5>going to load a lot of bundles that may share dependencies,

472
00:27:08.119 --> 00:27:13.319
<v Speaker 5>it can bring you benefits. Yeah, definitely. Again, not so

473
00:27:13.440 --> 00:27:16.480
<v Speaker 5>easy to get to get those results because you need

474
00:27:16.559 --> 00:27:19.599
<v Speaker 5>to know in advance at build time what's going on,

475
00:27:19.799 --> 00:27:23.920
<v Speaker 5>or to manage a lot of building hints for that

476
00:27:24.200 --> 00:27:28.640
<v Speaker 5>if those cod chunks are not sitting together, you can

477
00:27:28.640 --> 00:27:31.759
<v Speaker 5>still achieve it, but you're going to end up messing

478
00:27:31.880 --> 00:27:36.759
<v Speaker 5>a lot with configuration and hinting Jason's telling the model

479
00:27:36.759 --> 00:27:39.480
<v Speaker 5>Federation that assuming that, assuming this.

480
00:27:41.079 --> 00:27:45.680
<v Speaker 3>Okay, and model Federation is usually something that I get, well,

481
00:27:45.720 --> 00:27:48.160
<v Speaker 3>not totally for free, but I get it from the

482
00:27:48.400 --> 00:27:49.559
<v Speaker 3>bundle that I'm using.

483
00:27:49.759 --> 00:27:53.599
<v Speaker 5>Yeah, but in my perspective, it's far from free. It's

484
00:27:53.720 --> 00:27:56.880
<v Speaker 5>really hard to integrate with like it's working, and it's

485
00:27:56.920 --> 00:28:01.279
<v Speaker 5>working very well, but it's not easy to integrate. Developers

486
00:28:01.279 --> 00:28:06.480
<v Speaker 5>that I'm talking to struggling a lot with putting model

487
00:28:06.519 --> 00:28:10.680
<v Speaker 5>Federation into their project and use it efficiently. So I

488
00:28:10.720 --> 00:28:13.599
<v Speaker 5>think there are several several reasons for that, but I

489
00:28:13.640 --> 00:28:16.359
<v Speaker 5>think that the deep understanding of what's going on on

490
00:28:16.440 --> 00:28:19.359
<v Speaker 5>your bundler in order to use model Federation is something

491
00:28:19.400 --> 00:28:22.920
<v Speaker 5>that most of the development developers nowadays are not in

492
00:28:23.000 --> 00:28:25.880
<v Speaker 5>this time in right, you are creating the project, you're

493
00:28:25.920 --> 00:28:29.079
<v Speaker 5>putting the infrastructure. Maybe it's not even you that did it,

494
00:28:29.440 --> 00:28:32.759
<v Speaker 5>and it's happened months ago, and then you need to

495
00:28:33.480 --> 00:28:37.480
<v Speaker 5>do something, but you already have I don't know, tailwind

496
00:28:37.640 --> 00:28:40.240
<v Speaker 5>plug in there, and you have CSS models and you

497
00:28:40.240 --> 00:28:42.480
<v Speaker 5>have a bunch of things there and you need to

498
00:28:42.599 --> 00:28:46.039
<v Speaker 5>come and reopen the infrastructure and understand the build step

499
00:28:46.160 --> 00:28:50.400
<v Speaker 5>and the bunding steps. And as I mentioned, maybe you

500
00:28:50.480 --> 00:28:53.119
<v Speaker 5>need to now reorganize your code into a big mono

501
00:28:53.200 --> 00:28:56.519
<v Speaker 5>repo and share dependency between them. And maybe you don't

502
00:28:56.559 --> 00:29:00.720
<v Speaker 5>even understand how mono repos works. So developers that I'm

503
00:29:00.759 --> 00:29:04.559
<v Speaker 5>talking to understand the benefits of model federation. I personally

504
00:29:04.599 --> 00:29:07.559
<v Speaker 5>I think it's a great tool, right, but it's hard

505
00:29:07.920 --> 00:29:12.000
<v Speaker 5>to adopt. It's not something that you know, you're just

506
00:29:12.079 --> 00:29:14.680
<v Speaker 5>taken out of the shelf putting in your project and

507
00:29:14.720 --> 00:29:15.200
<v Speaker 5>its walks.

508
00:29:15.359 --> 00:29:17.519
<v Speaker 1>So I guess the question that I have is, as

509
00:29:17.559 --> 00:29:21.279
<v Speaker 1>we kind of go through how to do this, are

510
00:29:21.279 --> 00:29:27.599
<v Speaker 1>we going to be talking more about Okay, well, you know, first,

511
00:29:27.640 --> 00:29:30.160
<v Speaker 1>you know, you take the step to you know, wrap

512
00:29:30.200 --> 00:29:32.359
<v Speaker 1>your stuff in web components, and then you solve this

513
00:29:32.440 --> 00:29:35.119
<v Speaker 1>problem with model federation. Then you solve this other thing

514
00:29:35.160 --> 00:29:37.880
<v Speaker 1>that might come up with some other tool technique or thing,

515
00:29:38.519 --> 00:29:42.960
<v Speaker 1>or is there another better way that I guess you know,

516
00:29:43.240 --> 00:29:45.720
<v Speaker 1>you said your first step is to you know, separate

517
00:29:45.759 --> 00:29:48.920
<v Speaker 1>things out into the components, But you know, is there

518
00:29:49.000 --> 00:29:50.400
<v Speaker 1>like an alternative strategy?

519
00:29:50.400 --> 00:29:52.160
<v Speaker 2>That we're eventually going to bring forward.

520
00:29:52.200 --> 00:29:54.880
<v Speaker 1>It's where it's Hey, if you run into this or

521
00:29:54.880 --> 00:29:57.400
<v Speaker 1>you get past this, then maybe you consider just doing

522
00:29:57.440 --> 00:29:59.759
<v Speaker 1>this other thing altogether as opposed to this. So I

523
00:29:59.759 --> 00:30:02.160
<v Speaker 1>guess my question is are we going to just keep

524
00:30:02.160 --> 00:30:04.920
<v Speaker 1>fixing the strategy we're on or is there an alternative

525
00:30:04.960 --> 00:30:06.480
<v Speaker 1>that we're going to eventually explore.

526
00:30:07.440 --> 00:30:10.559
<v Speaker 5>Yeah, so a great question, and I think, as I mentioned,

527
00:30:10.599 --> 00:30:14.039
<v Speaker 5>there is several solutions. None of them are the golden one,

528
00:30:14.599 --> 00:30:18.119
<v Speaker 5>but we found the mix and match the best approach.

529
00:30:18.319 --> 00:30:21.519
<v Speaker 5>So web component is one really really.

530
00:30:22.839 --> 00:30:23.519
<v Speaker 2>Robust one.

531
00:30:23.839 --> 00:30:27.640
<v Speaker 5>Once you get into the right tooling around it. We

532
00:30:27.680 --> 00:30:30.200
<v Speaker 5>can deep dive into the problem if we wish, and

533
00:30:30.240 --> 00:30:33.440
<v Speaker 5>talk about more things there. But I can also talk

534
00:30:33.480 --> 00:30:36.759
<v Speaker 5>about another approach that we are play with which work

535
00:30:36.880 --> 00:30:40.039
<v Speaker 5>really nice and solving what done just mentioned before with

536
00:30:40.119 --> 00:30:45.720
<v Speaker 5>the iprams. So don't talk about loading like a kind

537
00:30:45.799 --> 00:30:49.000
<v Speaker 5>of microphone and or sub parts of the page in

538
00:30:49.039 --> 00:30:53.000
<v Speaker 5>an ipram, which give us a really good day isolation. Right,

539
00:30:53.160 --> 00:30:56.640
<v Speaker 5>we shouldn't deal with global objects with sssss with everything,

540
00:30:57.240 --> 00:30:59.680
<v Speaker 5>but then we're limited to the objects that we can

541
00:30:59.720 --> 00:31:02.599
<v Speaker 5>pass between the sides. Right, due to the API of

542
00:31:02.720 --> 00:31:05.599
<v Speaker 5>post messages and course, O region and all of these.

543
00:31:05.720 --> 00:31:09.759
<v Speaker 5>But think about what if we can generate iframes in

544
00:31:09.920 --> 00:31:14.759
<v Speaker 5>our domain dynamically, right without selver involvement. If you can

545
00:31:14.799 --> 00:31:18.279
<v Speaker 5>have something on the client side that can generate iframes

546
00:31:18.519 --> 00:31:22.079
<v Speaker 5>or what I call local frames, which actually be an

547
00:31:22.119 --> 00:31:26.799
<v Speaker 5>IFRAME on our domain with the uipart that we wish

548
00:31:26.799 --> 00:31:30.319
<v Speaker 5>to isolate, right, So we're going to get the benefits

549
00:31:30.359 --> 00:31:34.519
<v Speaker 5>of iframe, all the isolation, right, but without the limitation

550
00:31:35.240 --> 00:31:38.119
<v Speaker 5>of not being able to pass data in and out

551
00:31:38.240 --> 00:31:42.200
<v Speaker 5>because iframes in the same domain can be interactive both

552
00:31:42.240 --> 00:31:44.880
<v Speaker 5>ways without serializing the objects.

553
00:31:45.000 --> 00:31:49.319
<v Speaker 3>Yeah, I think it's worth explaining the distinction. When you've

554
00:31:49.319 --> 00:31:52.160
<v Speaker 3>got a page of hosting an I frame, that I

555
00:31:52.359 --> 00:31:55.200
<v Speaker 3>frame can be a page from the same domain, and

556
00:31:55.279 --> 00:31:57.440
<v Speaker 3>obviously it can be a page from a different domain.

557
00:31:57.519 --> 00:32:01.240
<v Speaker 3>It's totally valid and legal and in fact something that

558
00:32:01.279 --> 00:32:05.400
<v Speaker 3>happens a lot now when page is from it. When

559
00:32:05.400 --> 00:32:08.640
<v Speaker 3>the I frame is from a different domain, the containing

560
00:32:09.359 --> 00:32:13.400
<v Speaker 3>window object cannot look into that EE frame, and the

561
00:32:13.519 --> 00:32:17.000
<v Speaker 3>code in the eye frame cannot look out, and the

562
00:32:17.039 --> 00:32:19.519
<v Speaker 3>only way in which they can send message back and

563
00:32:19.559 --> 00:32:23.559
<v Speaker 3>forth is via the mechanism you mentioned before, that which

564
00:32:23.599 --> 00:32:27.359
<v Speaker 3>is post message, which is in an asynchronous mechanism. It's

565
00:32:27.480 --> 00:32:32.799
<v Speaker 3>kind of similar to events two dominvance, but it's asynchronous

566
00:32:32.880 --> 00:32:37.039
<v Speaker 3>versus synchronous, and you can you're limited to what you

567
00:32:37.160 --> 00:32:44.039
<v Speaker 3>can send as a post parameter, which is essentially string

568
00:32:44.200 --> 00:32:47.920
<v Speaker 3>serializable object or an air or in a byte array

569
00:32:48.400 --> 00:32:52.799
<v Speaker 3>can also be a byte array, but that means that

570
00:32:52.880 --> 00:32:57.440
<v Speaker 3>if you want to pass an object in or out,

571
00:32:57.680 --> 00:33:02.240
<v Speaker 3>you kind of need to first serialize it either into

572
00:33:02.240 --> 00:33:05.559
<v Speaker 3>a string or into some sort of area of bytes,

573
00:33:06.440 --> 00:33:12.200
<v Speaker 3>then send those and then de serialize the data and

574
00:33:12.400 --> 00:33:14.599
<v Speaker 3>deal with it. It's kind of similar to how you

575
00:33:14.640 --> 00:33:19.119
<v Speaker 3>send stuff back and forth between what's it called webworkers.

576
00:33:19.240 --> 00:33:23.480
<v Speaker 3>If you send stuff into webworker, it's essentially the same restriction,

577
00:33:23.599 --> 00:33:26.559
<v Speaker 3>the same sort of exact same sort of mechanism. On

578
00:33:26.599 --> 00:33:29.839
<v Speaker 3>the other hand, if the I frame is from the

579
00:33:29.960 --> 00:33:36.000
<v Speaker 3>same domain, then you can look into that I frame

580
00:33:36.039 --> 00:33:39.640
<v Speaker 3>from the outside and also from within you can look out,

581
00:33:39.720 --> 00:33:41.720
<v Speaker 3>so you can, let's say, from within, you can look

582
00:33:41.759 --> 00:33:46.920
<v Speaker 3>at the window dot parent, go get to the parent

583
00:33:47.200 --> 00:33:52.200
<v Speaker 3>domaint domain and basically call functions directly and pass whatever

584
00:33:52.240 --> 00:33:55.519
<v Speaker 3>you want. Now, it does create all sorts of interesting

585
00:33:55.599 --> 00:33:59.759
<v Speaker 3>things like arrays are not necessarily always identified as arrays.

586
00:34:00.119 --> 00:34:04.960
<v Speaker 3>This funny stuff like that. But but generally speaking, you

587
00:34:05.000 --> 00:34:09.840
<v Speaker 3>can pass JavaScript objects back and forth without a problem.

588
00:34:10.039 --> 00:34:13.000
<v Speaker 5>So this right the way, yep.

589
00:34:13.559 --> 00:34:16.840
<v Speaker 3>And it's synchronous, which is also important. Yeah.

590
00:34:17.880 --> 00:34:19.360
<v Speaker 2>One question I have with this is you said you

591
00:34:19.400 --> 00:34:20.760
<v Speaker 2>could do it without involving the server.

592
00:34:20.960 --> 00:34:26.840
<v Speaker 3>So yeah, client, it's totally client side. It's it's it's code.

593
00:34:26.920 --> 00:34:31.440
<v Speaker 3>It's one JavaScript function calling another JavaScript function. It's like

594
00:34:32.039 --> 00:34:34.079
<v Speaker 3>JavaScript functions within the same page.

595
00:34:35.000 --> 00:34:38.159
<v Speaker 5>No, I think Chris is carrious. How you load an

596
00:34:38.199 --> 00:34:44.960
<v Speaker 5>eye fram child? Sorry without selver involvement, And yeah, this

597
00:34:45.119 --> 00:34:48.440
<v Speaker 5>is an interesting technique, but it's possible to actually if

598
00:34:48.480 --> 00:34:53.159
<v Speaker 5>you already holding or have access to a document content.

599
00:34:53.719 --> 00:34:56.800
<v Speaker 5>Let's simplify it to an HTML page. If you have

600
00:34:56.880 --> 00:35:00.000
<v Speaker 5>the string on your hand, you can on client side

601
00:35:00.079 --> 00:35:03.360
<v Speaker 5>create the frame and inject it to it right without

602
00:35:03.400 --> 00:35:06.480
<v Speaker 5>selver involvement. Ie, frames that you will create on the

603
00:35:06.519 --> 00:35:10.920
<v Speaker 5>client side automatically will be treated as self domain the

604
00:35:11.039 --> 00:35:14.400
<v Speaker 5>same domain. Yeah. Yeah, it's a technique that we used

605
00:35:14.440 --> 00:35:14.840
<v Speaker 5>to use.

606
00:35:15.320 --> 00:35:17.239
<v Speaker 3>Yeah, it's a technique we used to use a lot

607
00:35:17.320 --> 00:35:20.159
<v Speaker 3>in the old days when when the dome was not

608
00:35:20.400 --> 00:35:23.599
<v Speaker 3>as dynamic and you had all sorts of restrictions and

609
00:35:23.679 --> 00:35:27.519
<v Speaker 3>what you could do inside inside the page. The way

610
00:35:27.599 --> 00:35:30.360
<v Speaker 3>to kind of get around it was to create eye

611
00:35:30.440 --> 00:35:35.320
<v Speaker 3>frames and put whatever you wanted into them. So it's

612
00:35:35.400 --> 00:35:37.119
<v Speaker 3>a reuse of an old technique.

613
00:35:37.199 --> 00:35:40.679
<v Speaker 1>Yeah, so I can kind of see that, you know. Yeah,

614
00:35:40.719 --> 00:35:42.760
<v Speaker 1>the web component approach is kind of a quick and

615
00:35:42.760 --> 00:35:48.639
<v Speaker 1>nerdy thing. It's definitely simpler than this other technique. So, yeah,

616
00:35:48.679 --> 00:35:50.639
<v Speaker 1>is there a library that does this or is there

617
00:35:50.679 --> 00:35:53.239
<v Speaker 1>some other Do I kind of go and invent it?

618
00:35:53.519 --> 00:35:54.480
<v Speaker 2>How do I do that?

619
00:35:54.639 --> 00:35:54.880
<v Speaker 3>Yeah?

620
00:35:54.960 --> 00:35:58.239
<v Speaker 5>So, as I mentioned, we're dealing with those issues a

621
00:35:58.239 --> 00:36:02.480
<v Speaker 5>lot in my op our company, and we're providing tools

622
00:36:02.719 --> 00:36:06.920
<v Speaker 5>also for that. We're suggesting different solutions for different needs

623
00:36:06.960 --> 00:36:09.880
<v Speaker 5>and for I firm a treatment. Yeah, we have all

624
00:36:09.960 --> 00:36:13.800
<v Speaker 5>those kind of tools. We solve the communication issue as

625
00:36:13.960 --> 00:36:16.559
<v Speaker 5>we can paest data in and out with the same

626
00:36:16.599 --> 00:36:20.599
<v Speaker 5>domain or with different domain. We're taking care of executing

627
00:36:20.679 --> 00:36:24.880
<v Speaker 5>functions and automatically serialize the response and requests for you.

628
00:36:25.119 --> 00:36:29.239
<v Speaker 5>We also created a mechanism to create a component kind

629
00:36:29.280 --> 00:36:33.360
<v Speaker 5>of API by under the wood, render local frames and

630
00:36:33.880 --> 00:36:38.000
<v Speaker 5>register for things inside them. And I can mention maybe

631
00:36:38.000 --> 00:36:41.519
<v Speaker 5>it's interesting in which use cases we see it's relevant

632
00:36:42.000 --> 00:36:44.280
<v Speaker 5>to use, and I agree with that. This all kind

633
00:36:44.320 --> 00:36:48.280
<v Speaker 5>of all technique. I think that taking an HTML and

634
00:36:48.400 --> 00:36:51.239
<v Speaker 5>just wrap it in a frame and then communicate with

635
00:36:51.320 --> 00:36:55.119
<v Speaker 5>it can be really relevant when you want to take

636
00:36:55.280 --> 00:36:59.119
<v Speaker 5>like the now pretty messy generated code that all those

637
00:36:59.239 --> 00:37:02.840
<v Speaker 5>Vibe coding two can give you, right, all those gemin

638
00:37:02.920 --> 00:37:06.679
<v Speaker 5>igpt a cloude and just in a matter of seconds

639
00:37:06.719 --> 00:37:10.400
<v Speaker 5>turn them into components which you can first of all

640
00:37:10.440 --> 00:37:14.840
<v Speaker 5>communicate in a safe way, right, but also you can

641
00:37:15.159 --> 00:37:19.320
<v Speaker 5>be trusted that whatever day I did on the global object,

642
00:37:19.400 --> 00:37:22.679
<v Speaker 5>on the window object, on whatever will not affect your application,

643
00:37:23.000 --> 00:37:25.440
<v Speaker 5>right because you wrap it inside an eye frame.

644
00:37:25.679 --> 00:37:30.679
<v Speaker 3>Yep. So main advantage when I compare this technique. So

645
00:37:30.880 --> 00:37:34.559
<v Speaker 3>we mentioned before the technique of using just web components

646
00:37:35.400 --> 00:37:39.400
<v Speaker 3>with the shadow down for example, for in enhance, if

647
00:37:39.440 --> 00:37:43.559
<v Speaker 3>we need enhand segregation between the component content and the

648
00:37:43.639 --> 00:37:49.320
<v Speaker 3>external web application. So what's the advantage of using this

649
00:37:49.480 --> 00:37:53.199
<v Speaker 3>sort of self created eye frame over using a web component.

650
00:37:53.719 --> 00:37:58.440
<v Speaker 3>Is it the fact that you've got more significant segregation

651
00:37:58.679 --> 00:38:03.159
<v Speaker 3>between the code or other additional advantages as well.

652
00:38:03.920 --> 00:38:07.840
<v Speaker 5>Yes, so web components, even in the usage of closed

653
00:38:07.840 --> 00:38:12.760
<v Speaker 5>shadow dome, are actually encapsulating mainly the dome and the CSS.

654
00:38:13.079 --> 00:38:16.159
<v Speaker 5>The JavaScript is still running on the same realm and

655
00:38:16.239 --> 00:38:21.039
<v Speaker 5>can still access global objects. Right, So if for example,

656
00:38:21.119 --> 00:38:24.679
<v Speaker 5>I went to I don't know any outsource coder, it

657
00:38:24.760 --> 00:38:27.360
<v Speaker 5>can be a developer that's not working in my company,

658
00:38:27.480 --> 00:38:30.599
<v Speaker 5>and it can also be a I tool and I don't

659
00:38:30.639 --> 00:38:34.079
<v Speaker 5>know he took the window door title and changed it.

660
00:38:34.480 --> 00:38:36.320
<v Speaker 5>Even if I wrap it in a web component, it

661
00:38:36.360 --> 00:38:39.440
<v Speaker 5>will actually gonna change my document title, and once I

662
00:38:39.480 --> 00:38:42.480
<v Speaker 5>wrap it in an ifram, it will be limited to

663
00:38:42.519 --> 00:38:43.800
<v Speaker 5>the iframe that I give him.

664
00:38:43.960 --> 00:38:47.119
<v Speaker 3>Right, they can stay well. Obviously, if they do window

665
00:38:47.199 --> 00:38:52.079
<v Speaker 3>door title, they'll update the iframes title, which effectively nobody sees,

666
00:38:52.480 --> 00:38:57.719
<v Speaker 3>and that doesn't create any problem. But if they are malicious,

667
00:38:58.039 --> 00:39:01.760
<v Speaker 3>then they can do window dot parent title and get

668
00:39:01.599 --> 00:39:05.559
<v Speaker 3>at the actual title. So it's less about it seems

669
00:39:05.559 --> 00:39:10.360
<v Speaker 3>to be less about malicious code and more about avoiding

670
00:39:11.000 --> 00:39:16.000
<v Speaker 3>accidental functional leaks or am I missing the point? No?

671
00:39:16.000 --> 00:39:19.239
<v Speaker 5>No, you're You're totally getting the point, And this is

672
00:39:19.280 --> 00:39:24.000
<v Speaker 5>why it's not so sympi between the two. Yeah, yeah,

673
00:39:24.199 --> 00:39:26.599
<v Speaker 5>I can tell you that in our solution, of course,

674
00:39:26.639 --> 00:39:31.159
<v Speaker 5>we tackle this issue, and the object and the access

675
00:39:31.199 --> 00:39:35.239
<v Speaker 5>that we are allowing to execute inside these local frames

676
00:39:35.800 --> 00:39:40.400
<v Speaker 5>is limited, limited to what the user configurates in our dashboard.

677
00:39:40.679 --> 00:39:42.119
<v Speaker 5>So yeah, you're definitely right.

678
00:39:42.159 --> 00:39:45.599
<v Speaker 3>And again, so you create this kind of separation that

679
00:39:45.880 --> 00:39:48.199
<v Speaker 3>might not necessarily automatically exist.

680
00:39:48.400 --> 00:39:52.039
<v Speaker 5>Yeah, yeah, again, there is no one under.

681
00:39:52.599 --> 00:39:56.280
<v Speaker 3>In something could do something like override the window dot

682
00:39:56.400 --> 00:39:59.239
<v Speaker 3>parent I guess, or something along these lines.

683
00:39:58.960 --> 00:40:03.000
<v Speaker 5>Right, and allow to pass only what agreed before right,

684
00:40:03.280 --> 00:40:06.320
<v Speaker 5>only what agreed to be the contract of the component,

685
00:40:06.480 --> 00:40:09.519
<v Speaker 5>which later on wrapped nicely as props.

686
00:40:09.719 --> 00:40:09.960
<v Speaker 3>Right.

687
00:40:10.440 --> 00:40:13.360
<v Speaker 5>And then from the host perspective, I maybe know that

688
00:40:13.440 --> 00:40:16.079
<v Speaker 5>it's an iphrame if I'm the one that created the component,

689
00:40:16.199 --> 00:40:18.519
<v Speaker 5>or if I look into the dome. But in terms

690
00:40:18.559 --> 00:40:21.960
<v Speaker 5>of the way that I'm writing my JavaScript, it's really straightforward.

691
00:40:22.280 --> 00:40:25.280
<v Speaker 5>It's component dot load and then I'm getting you a component,

692
00:40:25.559 --> 00:40:29.079
<v Speaker 5>and I can pass props in and out right, And

693
00:40:29.159 --> 00:40:32.880
<v Speaker 5>even if the component inside tried to do something malicious,

694
00:40:33.079 --> 00:40:36.320
<v Speaker 5>again not one hundred percent, but in most of the

695
00:40:36.360 --> 00:40:40.280
<v Speaker 5>cases we can block it because we already mopped a

696
00:40:40.400 --> 00:40:44.360
<v Speaker 5>monkey patch the specific object that can lead to those issues.

697
00:40:44.480 --> 00:40:48.480
<v Speaker 1>Yeah, I'm imagining that they're probably a wide array of

698
00:40:48.840 --> 00:40:51.760
<v Speaker 1>reasons why you may or may not need the tooling

699
00:40:51.800 --> 00:40:54.480
<v Speaker 1>that you're offering from your company. I mean, if if

700
00:40:54.519 --> 00:40:57.679
<v Speaker 1>it's all internal, and you know, I can mostly just

701
00:40:57.800 --> 00:41:00.920
<v Speaker 1>use this technique with the developers work for me, and

702
00:41:01.519 --> 00:41:03.920
<v Speaker 1>you know there's a certain level of trust. Then you know,

703
00:41:03.960 --> 00:41:06.880
<v Speaker 1>maybe I don't need all of the isolation, and I

704
00:41:06.880 --> 00:41:08.760
<v Speaker 1>can kind of build the tools in that I need.

705
00:41:09.440 --> 00:41:12.119
<v Speaker 1>And then you know, if I go beyond that and

706
00:41:12.159 --> 00:41:14.800
<v Speaker 1>I feel like I do need some of these features,

707
00:41:14.800 --> 00:41:17.719
<v Speaker 1>that I could go and pay for a product, which

708
00:41:17.760 --> 00:41:20.719
<v Speaker 1>is something that I find with a lot of programming, right,

709
00:41:20.800 --> 00:41:22.760
<v Speaker 1>And so at some point it's like, okay, look, the

710
00:41:22.800 --> 00:41:25.480
<v Speaker 1>trade offs are just you know, it just makes sense

711
00:41:25.480 --> 00:41:28.840
<v Speaker 1>to pay for this. My question is, you know, so

712
00:41:28.880 --> 00:41:32.239
<v Speaker 1>as I if I started implementing this myself and I

713
00:41:32.280 --> 00:41:34.599
<v Speaker 1>start putting some of these features together, what's kind of

714
00:41:34.599 --> 00:41:39.320
<v Speaker 1>the bare bones reality of using this, Like what what

715
00:41:39.440 --> 00:41:41.119
<v Speaker 1>kinds of things am I going to have to build

716
00:41:41.159 --> 00:41:44.599
<v Speaker 1>into it to get it to work without necessarily having

717
00:41:44.599 --> 00:41:45.559
<v Speaker 1>to go to a paid tool.

718
00:41:45.719 --> 00:41:49.440
<v Speaker 5>And so I think we talked about some of those issues, right.

719
00:41:49.519 --> 00:41:52.920
<v Speaker 5>We touch some of it, those things with the web components,

720
00:41:52.960 --> 00:41:55.239
<v Speaker 5>so we touch some of it in the terms of

721
00:41:55.360 --> 00:41:58.880
<v Speaker 5>fact creating I frams local frames and I frams, And

722
00:41:58.920 --> 00:42:01.559
<v Speaker 5>I think it really depends on what you are willing

723
00:42:01.639 --> 00:42:04.880
<v Speaker 5>to build, right, like, you will face or not face

724
00:42:04.920 --> 00:42:10.559
<v Speaker 5>specific issues based on whatever you how advent event advent

725
00:42:11.360 --> 00:42:14.400
<v Speaker 5>is your need, right, right, Yeah.

726
00:42:14.239 --> 00:42:14.760
<v Speaker 3>I think I.

727
00:42:17.360 --> 00:42:20.840
<v Speaker 1>Was specifically curious about the local frames and just you know,

728
00:42:20.960 --> 00:42:23.320
<v Speaker 1>so if I if I decide to implement local frames,

729
00:42:24.000 --> 00:42:26.559
<v Speaker 1>you know, yeah, so I can mention.

730
00:42:28.800 --> 00:42:32.519
<v Speaker 5>I can mention yeah, yeah, so I can mention some

731
00:42:32.519 --> 00:42:37.119
<v Speaker 5>some like really really things that probably will need you

732
00:42:37.199 --> 00:42:41.519
<v Speaker 5>to solve. So, as Dune mentioned, once you're implementing an

733
00:42:41.599 --> 00:42:44.079
<v Speaker 5>eye frame that's sitting on the same domain, Yeah, you

734
00:42:44.119 --> 00:42:49.159
<v Speaker 5>can access the parent and can access the inner document object,

735
00:42:49.559 --> 00:42:52.039
<v Speaker 5>but you do not really want to write. You want

736
00:42:52.119 --> 00:42:56.199
<v Speaker 5>to work with props and ref and types and everything.

737
00:42:56.280 --> 00:42:56.480
<v Speaker 3>Right.

738
00:42:57.039 --> 00:42:59.559
<v Speaker 5>You probably want some kind of a life cycle of

739
00:42:59.639 --> 00:43:02.559
<v Speaker 5>a comp it, right, which may be different from the

740
00:43:02.599 --> 00:43:06.239
<v Speaker 5>life cycle of the document inside the web page you loads.

741
00:43:06.400 --> 00:43:09.079
<v Speaker 5>So you need to create some kind of an API

742
00:43:09.239 --> 00:43:13.400
<v Speaker 5>and a mechanism to make it for you.

743
00:43:13.480 --> 00:43:13.679
<v Speaker 3>Right.

744
00:43:13.760 --> 00:43:16.840
<v Speaker 5>You want to have like a kind of mounted on

745
00:43:16.960 --> 00:43:21.719
<v Speaker 5>mounted right, which is not necessarily the unloaded the document

746
00:43:21.800 --> 00:43:25.239
<v Speaker 5>unloaded right inside the component. Maybe there is more things

747
00:43:25.280 --> 00:43:30.760
<v Speaker 5>happenings there. Lazy load their states loading things. So you

748
00:43:30.880 --> 00:43:34.719
<v Speaker 5>want to be able to have on mount function, and

749
00:43:34.760 --> 00:43:37.280
<v Speaker 5>then you want to pass props and be able to

750
00:43:37.360 --> 00:43:40.360
<v Speaker 5>catch them on the other side and right and react

751
00:43:40.400 --> 00:43:45.679
<v Speaker 5>to them. Maybe you want to bind specific props input

752
00:43:45.719 --> 00:43:50.360
<v Speaker 5>props into elements on your screen. Right, So life cycle

753
00:43:50.400 --> 00:43:54.079
<v Speaker 5>events on mount on unmounted things like that is something

754
00:43:54.079 --> 00:43:57.960
<v Speaker 5>that you probably will implement by end if you will

755
00:43:58.000 --> 00:43:59.320
<v Speaker 5>not use a library.

756
00:43:59.440 --> 00:44:05.159
<v Speaker 3>Okay, Yeah, So basically what you're giving it is a

757
00:44:05.159 --> 00:44:09.960
<v Speaker 3>component like facade, the services that or the callbacks or

758
00:44:09.960 --> 00:44:13.239
<v Speaker 3>the life cycle that we expect to see when working

759
00:44:13.320 --> 00:44:18.360
<v Speaker 3>on a component, stuff like on mount on update or unmount,

760
00:44:18.639 --> 00:44:23.159
<v Speaker 3>stuff like that, which, like you said, don't necessarily easily

761
00:44:23.280 --> 00:44:27.599
<v Speaker 3>map into DOM events even if you're using an I

762
00:44:27.760 --> 00:44:28.360
<v Speaker 3>fray right.

763
00:44:28.880 --> 00:44:33.320
<v Speaker 5>M Yeah, this is one thing that I can just

764
00:44:34.000 --> 00:44:38.920
<v Speaker 5>you know, really straightforward. But I actually want to diep

765
00:44:38.920 --> 00:44:42.760
<v Speaker 5>a little bit into what you said about the trust

766
00:44:43.039 --> 00:44:45.519
<v Speaker 5>between the one that created the component and the one

767
00:44:45.559 --> 00:44:48.760
<v Speaker 5>that used the component, and I want to put on

768
00:44:48.800 --> 00:44:51.800
<v Speaker 5>the table something that I think is relevant for the Again,

769
00:44:51.960 --> 00:44:56.599
<v Speaker 5>THEI ERA which maybe the other side that creates the

770
00:44:56.639 --> 00:45:00.360
<v Speaker 5>component is not a developer, right, because you said if

771
00:45:00.360 --> 00:45:03.039
<v Speaker 5>we trust the developer or not trust the developer, which

772
00:45:03.079 --> 00:45:05.599
<v Speaker 5>is kind of a solved issue. We need to trust

773
00:45:05.599 --> 00:45:08.519
<v Speaker 5>the developers that we're taking code from. Right, we shouldn't

774
00:45:08.599 --> 00:45:12.000
<v Speaker 5>go around and around. But what if we want to

775
00:45:12.039 --> 00:45:16.719
<v Speaker 5>be able designers or product managers inside our organization, Let's

776
00:45:16.719 --> 00:45:20.679
<v Speaker 5>start by that to create components, right, so they're not

777
00:45:20.880 --> 00:45:24.239
<v Speaker 5>known how to code, right, the product manager will not

778
00:45:24.480 --> 00:45:28.679
<v Speaker 5>contribute React components for us, right, but it can Vibe

779
00:45:28.760 --> 00:45:33.000
<v Speaker 5>code something right. And while the Vibe code something, maybe

780
00:45:33.199 --> 00:45:36.679
<v Speaker 5>there is risk there. It can be performance risks, it

781
00:45:36.840 --> 00:45:40.639
<v Speaker 5>can be security risks, can be global states a risk

782
00:45:40.800 --> 00:45:45.079
<v Speaker 5>not necessarily malicious things, but maybe things that he made

783
00:45:45.119 --> 00:45:48.519
<v Speaker 5>by mistake. Maybe it's something that the tool leading lead

784
00:45:48.800 --> 00:45:51.840
<v Speaker 5>leading to do right, messing with I don't know, with

785
00:45:51.880 --> 00:45:58.079
<v Speaker 5>the global object, messing around with the mocking critical functions,

786
00:45:58.360 --> 00:46:02.760
<v Speaker 5>things like that. So the question of trust changing a

787
00:46:02.760 --> 00:46:06.760
<v Speaker 5>bit if we want to put more roles into the ones.

788
00:46:06.760 --> 00:46:11.360
<v Speaker 5>That creating components, which I found really really interesting, is

789
00:46:11.400 --> 00:46:15.760
<v Speaker 5>really something that's going to happen while they are becoming

790
00:46:15.800 --> 00:46:19.800
<v Speaker 5>more and more because product manager and designer already creating

791
00:46:20.360 --> 00:46:24.239
<v Speaker 5>mocking and things with Vibe coding. Right, a designer are

792
00:46:24.360 --> 00:46:28.679
<v Speaker 5>using a figma to code and start animating and playing

793
00:46:28.719 --> 00:46:33.159
<v Speaker 5>around with their designs. But maybe the gap between taking

794
00:46:33.199 --> 00:46:37.000
<v Speaker 5>this mock into production is not that big as we

795
00:46:37.039 --> 00:46:39.599
<v Speaker 5>see it if we put the right tools and write

796
00:46:40.360 --> 00:46:43.360
<v Speaker 5>checks on top of that. Right, because at the end

797
00:46:43.719 --> 00:46:47.199
<v Speaker 5>they generated valid HTML and valid JavaScript.

798
00:46:47.480 --> 00:46:54.280
<v Speaker 3>Right, you're saying the greater isolation is required because the

799
00:46:54.320 --> 00:46:58.280
<v Speaker 3>code that was VIBE coded by somebody who's not necessarily

800
00:46:58.360 --> 00:47:03.360
<v Speaker 3>a developer, runs in the exact same context and the

801
00:47:03.400 --> 00:47:08.960
<v Speaker 3>exact scope and the same permissions that the container code

802
00:47:09.000 --> 00:47:12.400
<v Speaker 3>is running in. That can create all sorts of not

803
00:47:12.559 --> 00:47:20.199
<v Speaker 3>even necessarily malicious security issues. It's more about potentially just collisions,

804
00:47:20.880 --> 00:47:24.679
<v Speaker 3>because that's it's a question of the quality of the

805
00:47:24.760 --> 00:47:25.639
<v Speaker 3>generated code.

806
00:47:25.880 --> 00:47:30.360
<v Speaker 5>Ye. And I'm suggesting this kind of model because we're

807
00:47:30.440 --> 00:47:33.719
<v Speaker 5>seeing how the I is progressing, and it's progressing very

808
00:47:33.840 --> 00:47:36.960
<v Speaker 5>very nice. But until we can you know, just put

809
00:47:37.000 --> 00:47:41.679
<v Speaker 5>cursor into our ide and it will do everything. I

810
00:47:41.719 --> 00:47:45.800
<v Speaker 5>think that we can already start using THEI output, not

811
00:47:46.079 --> 00:47:49.719
<v Speaker 5>just for mocking or prototyping. We can start and take

812
00:47:49.960 --> 00:47:52.760
<v Speaker 5>some of it output and use it in specific use

813
00:47:52.800 --> 00:47:53.719
<v Speaker 5>cases in production.

814
00:47:53.960 --> 00:47:57.719
<v Speaker 3>Okay, And for that, in your opinion, the optimal solution

815
00:47:58.039 --> 00:48:00.960
<v Speaker 3>are those self create to die frames.

816
00:48:01.119 --> 00:48:04.679
<v Speaker 5>No, so I already told like the mix and match

817
00:48:04.960 --> 00:48:07.519
<v Speaker 5>in most of the cases. In our case, we're analyzing

818
00:48:07.559 --> 00:48:10.679
<v Speaker 5>the component. Once we get a component from AI, we're

819
00:48:10.719 --> 00:48:14.239
<v Speaker 5>analyzing it and then if it can fit the web

820
00:48:14.320 --> 00:48:18.639
<v Speaker 5>component structure, we're preferring the web component, right, because web

821
00:48:18.679 --> 00:48:24.159
<v Speaker 5>component several side, the web component can get better performance

822
00:48:24.400 --> 00:48:28.360
<v Speaker 5>because they're running on the same realm. Web components can

823
00:48:29.000 --> 00:48:32.599
<v Speaker 5>extract and extend their visual scope out of the rectangle.

824
00:48:32.760 --> 00:48:32.920
<v Speaker 3>Right.

825
00:48:33.159 --> 00:48:36.199
<v Speaker 5>There's a lot of there are several benefits of using

826
00:48:36.239 --> 00:48:39.119
<v Speaker 5>web components. But we know, and I'm putting it on

827
00:48:39.159 --> 00:48:42.800
<v Speaker 5>the table, that not all the outputs from AI can

828
00:48:42.880 --> 00:48:47.440
<v Speaker 5>fit this specific model, and then we need to extend

829
00:48:47.440 --> 00:48:51.320
<v Speaker 5>the solution and also in some cases use local frames.

830
00:48:51.400 --> 00:48:55.320
<v Speaker 3>So can you give like one example of where your

831
00:48:55.360 --> 00:48:59.760
<v Speaker 3>analysis might look at the generated code and decide, hey,

832
00:49:00.159 --> 00:49:02.119
<v Speaker 3>not going to use a web component, I'm going to

833
00:49:02.199 --> 00:49:04.280
<v Speaker 3>use an I frame instead. Can you give you such

834
00:49:04.280 --> 00:49:04.880
<v Speaker 3>an example?

835
00:49:04.960 --> 00:49:06.880
<v Speaker 2>That's what I was going to ask, m M.

836
00:49:07.000 --> 00:49:08.480
<v Speaker 5>Yeah, I think, like.

837
00:49:11.039 --> 00:49:13.599
<v Speaker 1>So the easiest I'm imagining that you could also have

838
00:49:13.639 --> 00:49:16.800
<v Speaker 1>a confident developer do this in a lot of cases.

839
00:49:17.639 --> 00:49:17.880
<v Speaker 3>Yeah.

840
00:49:18.039 --> 00:49:21.960
<v Speaker 5>Yeah, So we're doing a bunch of checks and analysis there,

841
00:49:22.000 --> 00:49:25.400
<v Speaker 5>but the easiest one to describe and talk about is like,

842
00:49:25.559 --> 00:49:29.679
<v Speaker 5>first of all, We're looking for how much global object

843
00:49:29.719 --> 00:49:33.800
<v Speaker 5>interactions is inside a component, right, how much touches of

844
00:49:34.039 --> 00:49:37.400
<v Speaker 5>window document and things like that the component that the

845
00:49:37.440 --> 00:49:42.239
<v Speaker 5>code is actually doing. We're also looking for an HTML

846
00:49:42.760 --> 00:49:46.400
<v Speaker 5>tags which are not valid inside web components, for example

847
00:49:46.559 --> 00:49:50.159
<v Speaker 5>the HTML tag right, or the head tag. We're then

848
00:49:50.239 --> 00:49:53.320
<v Speaker 5>looking inside those tags and try to understand what's going

849
00:49:53.360 --> 00:49:56.360
<v Speaker 5>on there. If we had an empty head tag, maybe

850
00:49:56.360 --> 00:49:58.440
<v Speaker 5>we can just drop it and the component will act

851
00:49:58.480 --> 00:50:01.320
<v Speaker 5>the same. But if in the head tag there is

852
00:50:01.519 --> 00:50:06.000
<v Speaker 5>style loading, phones, loadings or things like that, maybe it

853
00:50:06.039 --> 00:50:09.320
<v Speaker 5>should be inside an IPRAM so the fonts will be

854
00:50:09.360 --> 00:50:10.199
<v Speaker 5>loaded correctly.

855
00:50:10.559 --> 00:50:10.800
<v Speaker 3>Right.

856
00:50:11.679 --> 00:50:14.920
<v Speaker 5>Another technique that we can do, again, not in run time,

857
00:50:15.039 --> 00:50:19.639
<v Speaker 5>but on analysis time, is render the component both in

858
00:50:19.719 --> 00:50:22.760
<v Speaker 5>IFRAM and in web component and look for the difference

859
00:50:23.039 --> 00:50:26.559
<v Speaker 5>and understand or right from the original inputs, what are

860
00:50:26.559 --> 00:50:28.880
<v Speaker 5>the outputs when we render it in a web component

861
00:50:28.920 --> 00:50:33.480
<v Speaker 5>and the browser already remove whatever is not supported, versus

862
00:50:33.519 --> 00:50:36.519
<v Speaker 5>an iframe which support everything. Right, And this is even

863
00:50:36.599 --> 00:50:39.559
<v Speaker 5>before we're asking AI to analyze the AI.

864
00:50:39.679 --> 00:50:39.840
<v Speaker 3>Right.

865
00:50:40.039 --> 00:50:42.679
<v Speaker 5>Of course, with this we can play for I don't

866
00:50:42.719 --> 00:50:47.400
<v Speaker 5>know months, right, asking the AI to analyze the output

867
00:50:47.400 --> 00:50:51.679
<v Speaker 5>of AI. But I'm just talking about analysis that we're

868
00:50:51.719 --> 00:50:53.599
<v Speaker 5>doing like traditional way.

869
00:50:53.760 --> 00:50:57.599
<v Speaker 3>Right, Yeah, I love a AI inception. To take us

870
00:50:58.039 --> 00:51:02.079
<v Speaker 3>off topic for a little bit. I recently created the

871
00:51:02.159 --> 00:51:06.679
<v Speaker 3>rule files for some projects for use with cursor, and

872
00:51:06.800 --> 00:51:11.880
<v Speaker 3>obviously the step before last is to tell cursor, hey,

873
00:51:11.960 --> 00:51:14.480
<v Speaker 3>look at the rule file, try to make it better.

874
00:51:15.800 --> 00:51:18.400
<v Speaker 3>It's the step before last, because the last step still

875
00:51:18.440 --> 00:51:21.119
<v Speaker 3>needs to be you going over the rule file and

876
00:51:21.159 --> 00:51:23.880
<v Speaker 3>making sure that it says whatever you wanted to say.

877
00:51:25.280 --> 00:51:30.079
<v Speaker 3>But yeah, there's definitely that inception thing of using AI

878
00:51:30.360 --> 00:51:34.599
<v Speaker 3>to analyze the output of AI. So I guess that's

879
00:51:34.639 --> 00:51:37.360
<v Speaker 3>definitely something that you can and should do as well.

880
00:51:37.920 --> 00:51:41.159
<v Speaker 3>Is that what you described is code that was perhaps

881
00:51:41.199 --> 00:51:44.679
<v Speaker 3>generated by I scan that using AI to make certain

882
00:51:44.719 --> 00:51:49.320
<v Speaker 3>decisions and maybe modifications because you know that it's going

883
00:51:49.360 --> 00:51:52.440
<v Speaker 3>to be using a somewhat different context, and maybe the

884
00:51:52.519 --> 00:51:57.280
<v Speaker 3>original creator explained to the AI that generated that code initially.

885
00:51:58.079 --> 00:52:01.000
<v Speaker 1>So we're kind of coming up on our time limit.

886
00:52:01.239 --> 00:52:03.119
<v Speaker 1>I just want to make sure that we're covering anything

887
00:52:03.280 --> 00:52:05.840
<v Speaker 1>else that needs to be said. If people try to

888
00:52:05.880 --> 00:52:07.960
<v Speaker 1>implement any of these strategies.

889
00:52:07.480 --> 00:52:11.079
<v Speaker 5>You know we can talk again. We're walking walking on

890
00:52:11.119 --> 00:52:13.159
<v Speaker 5>it for for more than a year. Of course, we

891
00:52:13.199 --> 00:52:16.840
<v Speaker 5>cannot cover everything. But I think if you want to

892
00:52:16.840 --> 00:52:19.639
<v Speaker 5>to the audience to take some things to keep in

893
00:52:19.679 --> 00:52:24.960
<v Speaker 5>mind from this talk is that don't be afraid to

894
00:52:25.400 --> 00:52:29.639
<v Speaker 5>mix and match. Don't be afraid to try right, especially

895
00:52:29.840 --> 00:52:32.719
<v Speaker 5>in the in the area that we are at. Rewrites

896
00:52:32.880 --> 00:52:36.400
<v Speaker 5>are something that becoming less and less acceptable, right, and

897
00:52:36.519 --> 00:52:41.280
<v Speaker 5>code start being generated really really quick, and so try

898
00:52:41.360 --> 00:52:42.199
<v Speaker 5>and use.

899
00:52:43.559 --> 00:52:48.599
<v Speaker 3>Just not so Yeah, here's the thing.

900
00:52:48.599 --> 00:52:49.880
<v Speaker 2>It's interesting watching his body.

901
00:52:50.920 --> 00:52:51.760
<v Speaker 5>Yeah.

902
00:52:52.320 --> 00:52:54.719
<v Speaker 3>No, but I have two issues with what you said.

903
00:52:54.840 --> 00:52:57.239
<v Speaker 3>First about the mix and match. Mix and match is

904
00:52:57.599 --> 00:53:02.000
<v Speaker 3>a great idea when you're productizing it. When you're creating

905
00:53:02.079 --> 00:53:06.039
<v Speaker 3>a specific solution, particularly for this problem, then you can

906
00:53:06.079 --> 00:53:09.320
<v Speaker 3>definitely invest the effort in achieving a best of breed

907
00:53:09.360 --> 00:53:14.800
<v Speaker 3>type solutions. But when you're building a homegrown solution, generally

908
00:53:14.880 --> 00:53:19.039
<v Speaker 3>you'll just go with what works. It's fairly rare that

909
00:53:19.119 --> 00:53:23.280
<v Speaker 3>I've seen people creating all sorts of sophisticated fallbacks for

910
00:53:23.400 --> 00:53:29.960
<v Speaker 3>homegrown solutions. So that's about that part. Other the other

911
00:53:30.000 --> 00:53:33.519
<v Speaker 3>reason that I was nodding is that I actually think

912
00:53:33.599 --> 00:53:37.480
<v Speaker 3>that in the age of AI, we're actually going to

913
00:53:37.519 --> 00:53:41.440
<v Speaker 3>be seeing a lot more refactoring that we have seen

914
00:53:41.440 --> 00:53:44.679
<v Speaker 3>in the past. It might be problematic refactoring, but it's

915
00:53:44.679 --> 00:53:49.599
<v Speaker 3>still refactoring nonetheless. For example, I have used AI to

916
00:53:49.840 --> 00:53:56.719
<v Speaker 3>refactor legacy class react components into functional components that use

917
00:53:56.760 --> 00:54:00.599
<v Speaker 3>hooks instead, and the AI seems to be pretty good

918
00:54:00.599 --> 00:54:04.159
<v Speaker 3>at that. It's you can even tell it like take

919
00:54:04.360 --> 00:54:07.960
<v Speaker 3>custom logic and move it into a custom hook, and

920
00:54:08.360 --> 00:54:12.920
<v Speaker 3>even break a very long component into smaller components that

921
00:54:13.039 --> 00:54:17.079
<v Speaker 3>are dedicated to particular tasks and stuff like that. So

922
00:54:17.639 --> 00:54:22.639
<v Speaker 3>I think that refactoring is actually getting easier than in

923
00:54:22.639 --> 00:54:26.599
<v Speaker 3>the past. Now you probably want to have a really

924
00:54:26.639 --> 00:54:30.639
<v Speaker 3>good suite of unit tests before you do that, because

925
00:54:30.760 --> 00:54:35.280
<v Speaker 3>the refactoring that the AI might do might be total junk.

926
00:54:36.199 --> 00:54:39.199
<v Speaker 3>But the great thing is that the AI can also

927
00:54:39.320 --> 00:54:42.480
<v Speaker 3>generate unit tests for you. So before you start, you

928
00:54:42.559 --> 00:54:46.719
<v Speaker 3>tell the AI, hey, look at this code, generate unit

929
00:54:46.760 --> 00:54:50.440
<v Speaker 3>tests for it. Obviously, make sure that the tests actually passed,

930
00:54:50.480 --> 00:54:55.760
<v Speaker 3>because I've seen situations where AI generate unit tests. Yeah,

931
00:54:55.760 --> 00:54:58.840
<v Speaker 3>it generates unit tests that don't actually pass. Sometimes it's

932
00:54:59.119 --> 00:55:02.159
<v Speaker 3>it's it can actually be smart enough to run the

933
00:55:02.320 --> 00:55:07.000
<v Speaker 3>unit tests, fix them while they are not passing, tell

934
00:55:07.039 --> 00:55:09.400
<v Speaker 3>you hey, they all passed, and now they're good. And

935
00:55:09.440 --> 00:55:12.079
<v Speaker 3>then you run it and you find that they don't

936
00:55:12.119 --> 00:55:15.079
<v Speaker 3>all pass, which I've definitely seen as well, so be

937
00:55:15.159 --> 00:55:18.320
<v Speaker 3>careful with that. But the process that I've seen about

938
00:55:18.360 --> 00:55:22.719
<v Speaker 3>refactoring is first generate unit tests if they don't exist,

939
00:55:22.960 --> 00:55:28.079
<v Speaker 3>make sure you've got good coverage, and then tell the AI, hey,

940
00:55:28.159 --> 00:55:31.119
<v Speaker 3>refactor my code. You'll probably need to do a lot

941
00:55:31.159 --> 00:55:35.360
<v Speaker 3>of manual refactoring afterwards as well, but a lot less

942
00:55:35.400 --> 00:55:38.639
<v Speaker 3>than you might have otherwise needed to do. So that's

943
00:55:38.679 --> 00:55:41.199
<v Speaker 3>what I'm saying that That's why I was nodding my

944
00:55:41.320 --> 00:55:44.440
<v Speaker 3>head when you were saying that we're maybe going to

945
00:55:44.480 --> 00:55:48.559
<v Speaker 3>be seeing less refactory because I don't necessarily think that

946
00:55:48.320 --> 00:55:49.239
<v Speaker 3>that's the case.

947
00:55:49.440 --> 00:55:51.760
<v Speaker 1>Yes, maybe I also want to just I want to

948
00:55:51.800 --> 00:55:54.920
<v Speaker 1>add that the models are pretty good about picking out

949
00:55:55.000 --> 00:55:58.920
<v Speaker 1>patterns and so, like Dan said, you know where you

950
00:55:59.000 --> 00:56:02.599
<v Speaker 1>go from a class based component to using hooks, you know,

951
00:56:02.719 --> 00:56:04.840
<v Speaker 1>it can pick those patterns out and then say this

952
00:56:04.880 --> 00:56:09.039
<v Speaker 1>is the logic I need to keep, and then and

953
00:56:09.079 --> 00:56:11.760
<v Speaker 1>then kind of rework the pattern around it. And yeah,

954
00:56:11.800 --> 00:56:14.119
<v Speaker 1>some of your more complicated stuff, it's going to kind

955
00:56:14.119 --> 00:56:16.719
<v Speaker 1>of gag on a little bit and give you something

956
00:56:16.760 --> 00:56:19.360
<v Speaker 1>that isn't quite right. Yeah, a lot of these tools

957
00:56:19.360 --> 00:56:21.239
<v Speaker 1>and the other thing is is that I still I

958
00:56:21.280 --> 00:56:23.599
<v Speaker 1>have yet to find an AI system that won't just

959
00:56:23.719 --> 00:56:27.000
<v Speaker 1>answer my question even if it's wrong or partly wrong.

960
00:56:27.599 --> 00:56:30.679
<v Speaker 1>And so if I if I want to stay in

961
00:56:30.880 --> 00:56:34.400
<v Speaker 1>view or stay in Angular, or stay and react, I

962
00:56:34.440 --> 00:56:36.880
<v Speaker 1>haven't seen any instance where that's been an issue at all.

963
00:56:38.599 --> 00:56:42.519
<v Speaker 3>Just to answer to to relate to what you just said, Chuck,

964
00:56:43.079 --> 00:56:48.039
<v Speaker 3>I treat models like a very junior developer that has

965
00:56:48.079 --> 00:56:50.559
<v Speaker 3>the confidence of a super senior developer.

966
00:56:50.880 --> 00:56:51.960
<v Speaker 2>That's so true.

967
00:56:52.440 --> 00:56:56.079
<v Speaker 3>Yeah, yeah, so but Hada, we were kind of of

968
00:56:56.440 --> 00:57:03.079
<v Speaker 3>hijack the conversation. So what's what's your TAKEA yes.

969
00:57:01.639 --> 00:57:08.320
<v Speaker 5>Solar job, No, No, it's okay. So I'm totally treating

970
00:57:08.360 --> 00:57:11.920
<v Speaker 5>AI and the models, as you said, done like a

971
00:57:12.039 --> 00:57:16.000
<v Speaker 5>junior developer with a confidence. And this is why I

972
00:57:16.159 --> 00:57:19.760
<v Speaker 5>personally and this is what I'm promoting, treating its output

973
00:57:20.239 --> 00:57:22.639
<v Speaker 5>as something that we need to suspect and we need

974
00:57:22.679 --> 00:57:25.920
<v Speaker 5>to isolate and we need to integrate in our products

975
00:57:25.960 --> 00:57:30.480
<v Speaker 5>like he's like, as someone that we are not trusting. Yeah,

976
00:57:30.639 --> 00:57:31.119
<v Speaker 5>trusted a.

977
00:57:32.880 --> 00:57:33.119
<v Speaker 3>Yeah.

978
00:57:33.239 --> 00:57:35.880
<v Speaker 5>And on top of that, and the reason that I'm

979
00:57:35.920 --> 00:57:39.920
<v Speaker 5>suggesting to load it dynamically is that because I'm treating

980
00:57:39.960 --> 00:57:42.920
<v Speaker 5>these components and this output as something that's gonna be

981
00:57:43.000 --> 00:57:46.400
<v Speaker 5>changed rapidly. Even if we got a component that now work,

982
00:57:47.000 --> 00:57:49.639
<v Speaker 5>probably it's gonna be changed again and again and again

983
00:57:50.480 --> 00:57:53.440
<v Speaker 5>due to product requirement or due to issue that we

984
00:57:53.480 --> 00:57:57.199
<v Speaker 5>will find later. Once we put it in dynamic loading,

985
00:57:57.239 --> 00:58:00.559
<v Speaker 5>it's become really easy. And this is why I'm suggesting

986
00:58:00.920 --> 00:58:04.159
<v Speaker 5>doing it outside of your project. It will be much

987
00:58:04.199 --> 00:58:08.719
<v Speaker 5>more quicker. The AI will have much smaller scope, so

988
00:58:08.800 --> 00:58:10.960
<v Speaker 5>the results will be better. And this is what I'm

989
00:58:10.960 --> 00:58:13.519
<v Speaker 5>suggesting that, this is my take on the current state,

990
00:58:13.679 --> 00:58:18.159
<v Speaker 5>instead of just taking Cursor into our project and I

991
00:58:18.159 --> 00:58:21.679
<v Speaker 5>don't know, vibe code with tons of prompts, just to

992
00:58:21.760 --> 00:58:26.480
<v Speaker 5>get a small change with our conventions and ways of working.

993
00:58:26.719 --> 00:58:30.480
<v Speaker 5>And keep in mind also another another small small thing

994
00:58:30.599 --> 00:58:35.440
<v Speaker 5>on that, remember that as better as Cursor become, it's

995
00:58:35.480 --> 00:58:38.400
<v Speaker 5>still going to help us as developers and not the

996
00:58:38.440 --> 00:58:42.119
<v Speaker 5>citizen developer that we talked about, right, the designer designer

997
00:58:42.199 --> 00:58:46.039
<v Speaker 5>will not install ide and put commits for us, and

998
00:58:46.119 --> 00:58:49.280
<v Speaker 5>it may be go to base forty four love a

999
00:58:49.320 --> 00:58:53.760
<v Speaker 5>Bell Gemini and generate components. And in myp we're seeing

1000
00:58:53.760 --> 00:58:55.480
<v Speaker 5>it in life with customers.

1001
00:58:55.639 --> 00:58:59.440
<v Speaker 3>Yeah, I really like what you're proposing and what you're

1002
00:58:59.480 --> 00:59:03.199
<v Speaker 3>saying the fact that we are much more likely to

1003
00:59:03.400 --> 00:59:09.360
<v Speaker 3>vibe code an actual standalone application than to vibe code

1004
00:59:09.840 --> 00:59:14.039
<v Speaker 3>a new component into an existing application, especially in existing

1005
00:59:14.119 --> 00:59:18.159
<v Speaker 3>legacy application. And if you can create a mechanism that

1006
00:59:18.800 --> 00:59:23.840
<v Speaker 3>allows us to safely vibe code components and then integrate

1007
00:59:23.920 --> 00:59:29.840
<v Speaker 3>them into an existing application without being afraid that you know,

1008
00:59:29.920 --> 00:59:33.880
<v Speaker 3>the whole thing will backfire and crash our entire thing,

1009
00:59:34.559 --> 00:59:38.360
<v Speaker 3>then that's certainly something that is valuable. And I think

1010
00:59:38.440 --> 00:59:42.000
<v Speaker 3>that I'm finally really getting your value proposition at it work.

1011
00:59:42.119 --> 00:59:45.920
<v Speaker 4>So, just out of curiosity, how is this different or

1012
00:59:46.079 --> 00:59:52.320
<v Speaker 4>is it different from something like Astro that allows you

1013
00:59:52.320 --> 00:59:55.400
<v Speaker 4>you know, it's a tool for statically you know, generating

1014
00:59:55.440 --> 00:59:58.719
<v Speaker 4>a site, but it has the quote unquote Islands architecture

1015
00:59:59.159 --> 01:00:03.159
<v Speaker 4>that allows you use a view component or an angular component,

1016
01:00:03.280 --> 01:00:05.559
<v Speaker 4>React component, orbelt or whatever it is. Just I mean,

1017
01:00:05.639 --> 01:00:09.199
<v Speaker 4>is there what's the comparison contrast between those two between

1018
01:00:09.239 --> 01:00:11.079
<v Speaker 4>what you're talking about and what Astro does.

1019
01:00:11.840 --> 01:00:17.519
<v Speaker 5>Yeah, so there is similar parad to paradrigms there, but

1020
01:00:17.599 --> 01:00:22.000
<v Speaker 5>there is a lot of difference. Astro doing everything not lazerloaded, right,

1021
01:00:22.559 --> 01:00:25.679
<v Speaker 5>Like you're putting all your code together, you wrap it,

1022
01:00:25.800 --> 01:00:28.960
<v Speaker 5>you bundle it to ship it and it's handling fermals. Again,

1023
01:00:29.519 --> 01:00:33.239
<v Speaker 5>it's not and it exists much before. It's not treating

1024
01:00:33.559 --> 01:00:37.679
<v Speaker 5>AI outputs or treating a component as something that not

1025
01:00:37.800 --> 01:00:41.079
<v Speaker 5>a developer can create. Right with my op with first

1026
01:00:41.119 --> 01:00:44.280
<v Speaker 5>of all putting the lazer loading and the dynamically on top.

1027
01:00:44.559 --> 01:00:49.639
<v Speaker 5>Everything is dynamically loading and run time loaded, resolve unloaded.

1028
01:00:49.960 --> 01:00:52.679
<v Speaker 5>We skip this part. We also support like segmentation and

1029
01:00:52.719 --> 01:00:55.360
<v Speaker 5>a bit test due to the fact that we're lazyloading everything,

1030
01:00:55.840 --> 01:01:00.960
<v Speaker 5>but we also support we're putting a really really efforts

1031
01:01:01.000 --> 01:01:05.159
<v Speaker 5>and look into taking components that's treating by non developers

1032
01:01:05.360 --> 01:01:07.960
<v Speaker 5>and turning into developers standard. Yeah.

1033
01:01:08.000 --> 01:01:10.880
<v Speaker 3>I think the key difference Steve, because I think your

1034
01:01:10.960 --> 01:01:15.239
<v Speaker 3>question is excellent because certainly an overlap, Like you said,

1035
01:01:15.360 --> 01:01:20.960
<v Speaker 3>with the ASTRO, you can easily load things dynamically. It's

1036
01:01:21.079 --> 01:01:23.760
<v Speaker 3>just a flag that you put on a component in ASTRO.

1037
01:01:24.199 --> 01:01:28.440
<v Speaker 3>You can mix and match different frameworks within the same page.

1038
01:01:28.519 --> 01:01:31.599
<v Speaker 3>That's all. That's all good. What you don't get though,

1039
01:01:31.880 --> 01:01:35.639
<v Speaker 3>is that level of isolation between the components on the

1040
01:01:35.679 --> 01:01:39.039
<v Speaker 3>client side. They all they all just run within the

1041
01:01:39.079 --> 01:01:43.119
<v Speaker 3>same page, within the same dumb context. There is no

1042
01:01:43.280 --> 01:01:49.000
<v Speaker 3>isolation and Consequently, if you've got you know, one one

1043
01:01:49.000 --> 01:01:52.280
<v Speaker 3>of those components being vibe coded and doing crazy stuff

1044
01:01:52.280 --> 01:01:55.639
<v Speaker 3>for the window object for some reason, or doing weird

1045
01:01:55.679 --> 01:02:00.000
<v Speaker 3>things with React that that might interfere with other React

1046
01:02:00.199 --> 01:02:04.400
<v Speaker 3>components on the same page, that's that's not something that

1047
01:02:04.400 --> 01:02:07.360
<v Speaker 3>that model can will necessarily save you.

1048
01:02:07.639 --> 01:02:10.320
<v Speaker 4>So where okay, So then if we're dynamically running and

1049
01:02:10.320 --> 01:02:13.400
<v Speaker 4>you're talking about lazy loading, always side note that term

1050
01:02:13.440 --> 01:02:15.400
<v Speaker 4>always cracks me up. I don't think it's really accurate.

1051
01:02:15.480 --> 01:02:17.960
<v Speaker 4>But it's more like efficiently loading if you ask me.

1052
01:02:18.639 --> 01:02:19.960
<v Speaker 4>But I'm guessing that my.

1053
01:02:20.000 --> 01:02:23.239
<v Speaker 3>Perce is I just to say that, you know, software

1054
01:02:23.280 --> 01:02:26.880
<v Speaker 3>development is that field that teaches you that procrastination is

1055
01:02:26.920 --> 01:02:27.840
<v Speaker 3>a virtue.

1056
01:02:28.199 --> 01:02:30.320
<v Speaker 4>Doing things at the last minute. Right, But I'm going

1057
01:02:30.400 --> 01:02:33.719
<v Speaker 4>to guess that where does SEO concerns come in here?

1058
01:02:34.119 --> 01:02:36.119
<v Speaker 4>Because the whole point of something like you know, static

1059
01:02:36.199 --> 01:02:38.639
<v Speaker 4>the generated astrotype stuff is that it's available for the

1060
01:02:38.679 --> 01:02:41.400
<v Speaker 4>bots when they come around. And I know that we've

1061
01:02:41.480 --> 01:02:44.639
<v Speaker 4>talked to Devrell's from Google Search here on this podcast

1062
01:02:44.639 --> 01:02:48.159
<v Speaker 4>where I've asked that specific question and they will say, well,

1063
01:02:48.360 --> 01:02:50.639
<v Speaker 4>you know, it's complex and we really can handle that.

1064
01:02:50.840 --> 01:02:53.960
<v Speaker 4>But that's always sort of the underlying issue for you know,

1065
01:02:54.000 --> 01:02:57.280
<v Speaker 4>if you want to be discovered on the web is

1066
01:02:57.280 --> 01:02:59.360
<v Speaker 4>is you know, the bot's got to be able to

1067
01:02:59.360 --> 01:03:01.599
<v Speaker 4>find your your content. So if you're doing it at

1068
01:03:01.599 --> 01:03:03.400
<v Speaker 4>the last minute, how does it impact that.

1069
01:03:03.719 --> 01:03:06.679
<v Speaker 5>Yeah, so it's a great question. I can answer it

1070
01:03:06.880 --> 01:03:11.159
<v Speaker 5>shortly that we support also running our dynamically loading record it.

1071
01:03:11.159 --> 01:03:15.039
<v Speaker 5>It's not lazy loading. We also support dynamically loading things

1072
01:03:15.119 --> 01:03:18.159
<v Speaker 5>on the server side. Right if your component is something

1073
01:03:18.199 --> 01:03:20.920
<v Speaker 5>that can be rendered on the server side, for example,

1074
01:03:21.079 --> 01:03:23.960
<v Speaker 5>React bundle or just a pure HTMN that you took

1075
01:03:24.000 --> 01:03:26.800
<v Speaker 5>from one of the models, so we can render it

1076
01:03:26.960 --> 01:03:30.280
<v Speaker 5>on the server side and put it as part of

1077
01:03:30.320 --> 01:03:34.559
<v Speaker 5>the document that we're sending. By the way, it's one

1078
01:03:34.599 --> 01:03:38.039
<v Speaker 5>of the last modifications and changes that made into web

1079
01:03:38.079 --> 01:03:42.559
<v Speaker 5>components that web components can now be streamed directly on

1080
01:03:42.639 --> 01:03:46.400
<v Speaker 5>the server and then hydrate it later. I think it's

1081
01:03:46.480 --> 01:03:47.920
<v Speaker 5>a year ago or something like that.

1082
01:03:47.960 --> 01:03:50.320
<v Speaker 1>All right, I'm going to start heading us toward wrapping

1083
01:03:50.400 --> 01:03:53.559
<v Speaker 1>up because we're we're at the end of our scheduled

1084
01:03:53.559 --> 01:03:56.360
<v Speaker 1>time and I want to be mindful of if anybody

1085
01:03:56.400 --> 01:03:57.599
<v Speaker 1>has anything else.

1086
01:03:57.440 --> 01:03:58.920
<v Speaker 4>That need to be which I do.

1087
01:04:00.559 --> 01:04:04.480
<v Speaker 1>Are really quickly. What is it that your company actually offers.

1088
01:04:04.480 --> 01:04:07.559
<v Speaker 1>Because I'm imagining somebody's listening to this and going, Okay,

1089
01:04:07.639 --> 01:04:10.320
<v Speaker 1>I understand what you guys are talking about. I don't

1090
01:04:10.360 --> 01:04:13.079
<v Speaker 1>want to figure all this crap out. So what do

1091
01:04:13.119 --> 01:04:15.719
<v Speaker 1>you give people if they come and use your solution?

1092
01:04:16.920 --> 01:04:17.159
<v Speaker 3>Yeah?

1093
01:04:17.280 --> 01:04:21.840
<v Speaker 5>So my dev is offering like open source, a free

1094
01:04:21.920 --> 01:04:26.280
<v Speaker 5>meta frameworks decay that can be integrated inside any framework

1095
01:04:26.400 --> 01:04:30.280
<v Speaker 5>react View, Angular or legacy Pere JavaScript, and we offer

1096
01:04:30.480 --> 01:04:34.360
<v Speaker 5>a saasas solution, a dashboard to manage all those components

1097
01:04:34.400 --> 01:04:38.000
<v Speaker 5>with visualization, with ability to manage a B test segmentation,

1098
01:04:38.159 --> 01:04:43.320
<v Speaker 5>gradual rollout and roll back. And then we actually monetize

1099
01:04:43.440 --> 01:04:44.559
<v Speaker 5>on the dashboard.

1100
01:04:44.679 --> 01:04:44.920
<v Speaker 3>Right.

1101
01:04:45.800 --> 01:04:50.000
<v Speaker 5>For companies that are looking to run inside a closed network,

1102
01:04:50.079 --> 01:04:53.559
<v Speaker 5>we are offering an on prem solution. Yeah, so this

1103
01:04:53.679 --> 01:04:56.880
<v Speaker 5>is kind of the thing. A dashboard that manage and

1104
01:04:57.079 --> 01:05:02.480
<v Speaker 5>orchestrate microfont and operation in twenty twenty five, right, and

1105
01:05:02.519 --> 01:05:05.239
<v Speaker 5>a set of SDKs dealing with all of that and

1106
01:05:05.320 --> 01:05:08.000
<v Speaker 5>solving the issues that we talked about and much more.

1107
01:05:08.119 --> 01:05:11.679
<v Speaker 2>Awesome. All right, Well that's myop dot dev.

1108
01:05:12.239 --> 01:05:14.480
<v Speaker 1>I just went and loaded the page and looked at it,

1109
01:05:14.519 --> 01:05:16.840
<v Speaker 1>and it looks pretty cool. I think there's a video, right,

1110
01:05:16.840 --> 01:05:18.840
<v Speaker 1>there at the front, So if you want more information,

1111
01:05:18.880 --> 01:05:20.639
<v Speaker 1>you can just click that. Let's go ahead and do

1112
01:05:20.639 --> 01:05:22.920
<v Speaker 1>our picks and then wrap up. Steve, you said you

1113
01:05:22.920 --> 01:05:24.599
<v Speaker 1>have something you got to get to, so why don't

1114
01:05:24.599 --> 01:05:25.440
<v Speaker 1>you go ahead and go first.

1115
01:05:25.519 --> 01:05:28.360
<v Speaker 4>Okay, let's talk got one serious pick before I get

1116
01:05:28.400 --> 01:05:31.079
<v Speaker 4>to the most important picks. We were talking about web

1117
01:05:31.119 --> 01:05:34.840
<v Speaker 4>components earlier, and I recently started last month. I started

1118
01:05:34.840 --> 01:05:38.000
<v Speaker 4>a new job doing some doing web development and view

1119
01:05:38.039 --> 01:05:41.559
<v Speaker 4>stuff at a new organization, but we do internet networking.

1120
01:05:41.559 --> 01:05:45.159
<v Speaker 4>It's really quite fascinating. But one of the things we're

1121
01:05:45.199 --> 01:05:48.440
<v Speaker 4>running into is what's typical in a lot of larger

1122
01:05:48.519 --> 01:05:51.320
<v Speaker 4>organizations is that you have web properties all over the

1123
01:05:51.360 --> 01:05:53.920
<v Speaker 4>place done by different people, and you have different look

1124
01:05:53.920 --> 01:05:55.599
<v Speaker 4>and feel. I mean, the only thing I come in

1125
01:05:55.599 --> 01:05:57.239
<v Speaker 4>the sound of them is the logo in the top

1126
01:05:57.360 --> 01:05:57.920
<v Speaker 4>left corner.

1127
01:05:58.119 --> 01:05:58.760
<v Speaker 3>You know different.

1128
01:05:59.159 --> 01:06:01.519
<v Speaker 4>You know, one department and hired a contractor to do this,

1129
01:06:01.639 --> 01:06:04.800
<v Speaker 4>and somebody did it themselves. And so my department, we've

1130
01:06:04.840 --> 01:06:09.000
<v Speaker 4>created this whole really great tool for our network engineers

1131
01:06:09.039 --> 01:06:11.519
<v Speaker 4>to manage on the network infrastructure. And we're looking to

1132
01:06:11.599 --> 01:06:14.079
<v Speaker 4>expand and so one of the things my boss really

1133
01:06:14.119 --> 01:06:17.880
<v Speaker 4>wants to do is to sort of build one system

1134
01:06:18.039 --> 01:06:19.679
<v Speaker 4>to borrow from a lord of the rings, one system

1135
01:06:19.719 --> 01:06:22.400
<v Speaker 4>to rule them all when design system and in the

1136
01:06:22.480 --> 01:06:25.519
<v Speaker 4>darkness behind them. And so some of our properties are

1137
01:06:25.559 --> 01:06:29.400
<v Speaker 4>like Grouple and WordPress and different tools, and so we

1138
01:06:29.440 --> 01:06:32.000
<v Speaker 4>want somethings generic. So we want to use web components.

1139
01:06:32.840 --> 01:06:35.199
<v Speaker 4>And so one of the things that we're doing is

1140
01:06:35.199 --> 01:06:37.360
<v Speaker 4>a new library. It's come out. I don't know how

1141
01:06:37.400 --> 01:06:40.400
<v Speaker 4>new it is. It's called web Awesome that's created by

1142
01:06:40.440 --> 01:06:44.119
<v Speaker 4>font Awesome. It used to be called Shoelace. So a

1143
01:06:44.159 --> 01:06:46.079
<v Speaker 4>couple of people from Shoelace came on and the fat

1144
01:06:46.119 --> 01:06:49.519
<v Speaker 4>Awesome organization created a web assome. They're basically web components

1145
01:06:49.519 --> 01:06:53.239
<v Speaker 4>that you can drop into any framework. And so the

1146
01:06:53.320 --> 01:06:55.519
<v Speaker 4>idea of being as something that's somewhat generic that we

1147
01:06:55.599 --> 01:06:58.199
<v Speaker 4>can use across other frameworks and stuff. And I just

1148
01:06:58.239 --> 01:07:00.920
<v Speaker 4>started playing with it. It's pretty cool. Uh, there's a

1149
01:07:00.920 --> 01:07:04.559
<v Speaker 4>pretty comprehensive set of components that are available. And then

1150
01:07:04.639 --> 01:07:07.320
<v Speaker 4>we already used tailwind for the CSS, and so you

1151
01:07:07.360 --> 01:07:09.559
<v Speaker 4>can just drop sale and classes on top of your

1152
01:07:09.599 --> 01:07:12.719
<v Speaker 4>web components, which you have them in your view components

1153
01:07:12.760 --> 01:07:15.239
<v Speaker 4>in our case. Uh, and uh, it's pretty cool.

1154
01:07:15.480 --> 01:07:15.679
<v Speaker 2>You know.

1155
01:07:15.760 --> 01:07:18.880
<v Speaker 4>It's it's it's something generics and their web components, so

1156
01:07:19.039 --> 01:07:21.119
<v Speaker 4>just started playing with it. But so far, so good.

1157
01:07:21.320 --> 01:07:22.960
<v Speaker 4>The post list. There's a couple of things that would

1158
01:07:22.960 --> 01:07:24.639
<v Speaker 4>be nice. I would have had like a data tables,

1159
01:07:24.679 --> 01:07:26.760
<v Speaker 4>you know, or even just a generic table component, but

1160
01:07:26.920 --> 01:07:30.360
<v Speaker 4>there's other tools we can incorporate that use that, so

1161
01:07:30.599 --> 01:07:31.920
<v Speaker 4>it's that web as done.

1162
01:07:33.480 --> 01:07:36.360
<v Speaker 3>There's first of all, obviously a g grid if you're

1163
01:07:36.360 --> 01:07:38.960
<v Speaker 3>looking for something really heavy duty.

1164
01:07:39.320 --> 01:07:41.360
<v Speaker 4>But yeah, that's heavy duty. We don't need it for that.

1165
01:07:41.400 --> 01:07:43.679
<v Speaker 4>We're looking at something else. There's another one we saw

1166
01:07:43.719 --> 01:07:46.880
<v Speaker 4>that's generic JavaScript that we're going to try to wrap

1167
01:07:46.920 --> 01:07:47.280
<v Speaker 4>around that.

1168
01:07:47.440 --> 01:07:50.840
<v Speaker 3>So there's also the ten stuck uh.

1169
01:07:53.159 --> 01:07:55.679
<v Speaker 4>Yeah, we've talked to before. We looked at that, and

1170
01:07:55.719 --> 01:07:57.760
<v Speaker 4>there's a view a view port of that, and there's

1171
01:07:57.800 --> 01:08:00.360
<v Speaker 4>also shad Cyn. There's a few things, but this is

1172
01:08:00.360 --> 01:08:02.719
<v Speaker 4>what we're going for right now. So it's pretty cool.

1173
01:08:03.920 --> 01:08:05.960
<v Speaker 3>Congratulations on the new job, Steve.

1174
01:08:06.599 --> 01:08:08.840
<v Speaker 4>Thanks. Yeah, I'm really slacked to get to travel quite

1175
01:08:08.840 --> 01:08:13.119
<v Speaker 4>a bit and do some new stuff. Network engineering is

1176
01:08:13.119 --> 01:08:17.479
<v Speaker 4>a whole new world, man. The lingo is something, let

1177
01:08:17.479 --> 01:08:21.560
<v Speaker 4>me tell you. So for the dad jokes of the week,

1178
01:08:22.239 --> 01:08:23.960
<v Speaker 4>oh shoot, I had them brought up and then I

1179
01:08:24.000 --> 01:08:26.720
<v Speaker 4>lost them for a second. So I found out that

1180
01:08:27.359 --> 01:08:32.680
<v Speaker 4>I was recently diagnosed that I have a fear of

1181
01:08:32.720 --> 01:08:35.840
<v Speaker 4>being trapped in a small room with Santa. You could

1182
01:08:35.880 --> 01:08:37.680
<v Speaker 4>say I have claustrophobia.

1183
01:08:37.800 --> 01:08:39.039
<v Speaker 3>Good joke, wrong season.

1184
01:08:39.920 --> 01:08:43.199
<v Speaker 4>Well, there's a lot of believe it or not, there's

1185
01:08:43.279 --> 01:08:46.880
<v Speaker 4>Christmas in July exactly. My organization, just a club that

1186
01:08:46.880 --> 01:08:49.479
<v Speaker 4>I belonged to, had Christmas in July on Sunday. We

1187
01:08:49.600 --> 01:08:51.760
<v Speaker 4>do this, and I've seen other stores that do Christmas

1188
01:08:51.840 --> 01:08:53.720
<v Speaker 4>in July stuff, you know, the half year away. So

1189
01:08:54.359 --> 01:08:55.560
<v Speaker 4>it's somewhere relevant.

1190
01:08:56.840 --> 01:08:57.039
<v Speaker 3>You know.

1191
01:08:57.079 --> 01:08:59.760
<v Speaker 4>I used to believe in spheres, you know those round

1192
01:08:59.760 --> 01:09:03.239
<v Speaker 4>things are. Then I realized they're pointless. And then finally,

1193
01:09:04.359 --> 01:09:07.960
<v Speaker 4>fun fact Australia is I was doing some economic research.

1194
01:09:08.039 --> 01:09:11.920
<v Speaker 4>Australia's biggest export is boomerangs. It's also their largest import.

1195
01:09:12.039 --> 01:09:16.279
<v Speaker 3>Yeah, so I've heard a variation on that about my

1196
01:09:16.439 --> 01:09:19.279
<v Speaker 3>son told me that his friend keeps on ordering boomerangs

1197
01:09:19.279 --> 01:09:22.800
<v Speaker 3>from Amazon and returning them.

1198
01:09:23.000 --> 01:09:24.079
<v Speaker 4>I'll give that a rim shot.

1199
01:09:24.159 --> 01:09:24.479
<v Speaker 3>Ice.

1200
01:09:25.159 --> 01:09:26.439
<v Speaker 2>All right, Dan, what are your picks?

1201
01:09:26.560 --> 01:09:30.199
<v Speaker 3>Okay, So one pick that I have. We're always on

1202
01:09:30.239 --> 01:09:33.439
<v Speaker 3>the lookout for good TV series, and the one that

1203
01:09:33.479 --> 01:09:37.640
<v Speaker 3>we found is called it's a an anthology actually on

1204
01:09:37.760 --> 01:09:44.359
<v Speaker 3>Netflix called Criminal. There's a Criminal UK, Criminal France, Criminal Spain,

1205
01:09:44.399 --> 01:09:47.600
<v Speaker 3>and Criminal Germany so and they're all in their native languages.

1206
01:09:48.159 --> 01:09:52.239
<v Speaker 3>It basically takes place in the entire episode takes place

1207
01:09:52.840 --> 01:09:56.640
<v Speaker 3>in police interrogation room. It's like this special unit that

1208
01:09:56.760 --> 01:10:01.640
<v Speaker 3>specializes in the interrogation and every episode is standalone. It's

1209
01:10:01.640 --> 01:10:05.039
<v Speaker 3>the same interrogators, but it's stand alone in the context

1210
01:10:05.079 --> 01:10:10.359
<v Speaker 3>that it's a different person being interrogated for totally distinct crime.

1211
01:10:11.680 --> 01:10:15.960
<v Speaker 3>And the acting is superb. We especially enjoyed the Criminal

1212
01:10:16.159 --> 01:10:22.000
<v Speaker 3>U very good storylines, amazing acting, and I generally highly

1213
01:10:22.039 --> 01:10:24.319
<v Speaker 3>recommend it, So that would be my first pick if

1214
01:10:24.359 --> 01:10:27.720
<v Speaker 3>you're looking for something to watch on TV. The other

1215
01:10:27.800 --> 01:10:31.199
<v Speaker 3>thing is I was recently, for some reason reminded of

1216
01:10:31.319 --> 01:10:37.920
<v Speaker 3>two excellent funny movies from the relatively early two one

1217
01:10:38.279 --> 01:10:41.920
<v Speaker 3>I'll go by dates. One is Tropic Thunder. To remember

1218
01:10:41.960 --> 01:10:45.039
<v Speaker 3>that one, the Ben Stiller movie with a whole cast

1219
01:10:45.119 --> 01:10:45.800
<v Speaker 3>of actors.

1220
01:10:46.880 --> 01:10:50.079
<v Speaker 4>It had Robert claiming, correct, it probably couldn't be made

1221
01:10:50.159 --> 01:10:54.880
<v Speaker 4>these days. Yes, Tom Cruise has a great guest spot

1222
01:10:54.920 --> 01:10:56.439
<v Speaker 4>in it that he's pretty famous for.

1223
01:10:57.119 --> 01:10:59.079
<v Speaker 3>You kind of spoiled it because a lot of people

1224
01:10:59.079 --> 01:11:03.880
<v Speaker 3>don't even Recogniz said it's him. Yeah, totally, just to

1225
01:11:03.880 --> 01:11:07.920
<v Speaker 3>give you context, but yes, it's totally politically incorrect. Just

1226
01:11:07.960 --> 01:11:11.199
<v Speaker 3>the fact that Robert Downey Junior plays the entire movie

1227
01:11:11.279 --> 01:11:12.000
<v Speaker 3>in blackface.

1228
01:11:13.159 --> 01:11:14.760
<v Speaker 4>Yes, he's playing a black character.

1229
01:11:15.439 --> 01:11:18.840
<v Speaker 3>Well, he's playing a white actor playing a black character,

1230
01:11:19.000 --> 01:11:24.079
<v Speaker 3>which is like funny an Australian white actor playing an

1231
01:11:24.119 --> 01:11:27.960
<v Speaker 3>American black person. But you know, he's a mathive actor,

1232
01:11:28.079 --> 01:11:31.279
<v Speaker 3>so he does it all the time, whether on camera off.

1233
01:11:31.319 --> 01:11:35.000
<v Speaker 3>It's really funny. I highly recommend that one. It's excellent.

1234
01:11:35.039 --> 01:11:37.760
<v Speaker 3>If you've not seen it, I highly recommend it. And

1235
01:11:37.880 --> 01:11:40.840
<v Speaker 3>the other one is the movie called The Other Guys

1236
01:11:41.039 --> 01:11:45.560
<v Speaker 3>from twenty ten, but Will Ferrell and Mark Wahlberg also,

1237
01:11:46.479 --> 01:11:50.000
<v Speaker 3>it's a very funny. It's my favorite Will Farrell movie

1238
01:11:50.000 --> 01:11:53.319
<v Speaker 3>by far. It's highly quotable. It can it's a bit

1239
01:11:53.399 --> 01:11:57.079
<v Speaker 3>raunchy in some parts, so you know, but I highly

1240
01:11:57.079 --> 01:12:00.359
<v Speaker 3>recommend it as well. Have you seen it, Chuck One

1241
01:12:00.560 --> 01:12:01.560
<v Speaker 3>The Other Guys.

1242
01:12:01.560 --> 01:12:02.359
<v Speaker 4>The Other Guys?

1243
01:12:02.840 --> 01:12:06.800
<v Speaker 3>Now, I highly recommend you watching both these movies.

1244
01:12:07.239 --> 01:12:09.680
<v Speaker 4>I see it on TV and replace a lot.

1245
01:12:09.920 --> 01:12:14.800
<v Speaker 3>So yeah, it's it's like there's this part where where

1246
01:12:14.840 --> 01:12:18.600
<v Speaker 3>they're they're there are two police officers and they're paired together,

1247
01:12:18.720 --> 01:12:22.720
<v Speaker 3>and initially they obviously can't stand each other well, especially

1248
01:12:23.119 --> 01:12:26.760
<v Speaker 3>the character played by Mark Wahlberg. So he goes off

1249
01:12:26.800 --> 01:12:28.680
<v Speaker 3>and then he comes back and said, I was back

1250
01:12:28.720 --> 01:12:33.279
<v Speaker 3>there about to what did he say bad about you

1251
01:12:33.560 --> 01:12:36.239
<v Speaker 3>to to the other people? But my dad didn't raise

1252
01:12:36.319 --> 01:12:38.000
<v Speaker 3>me this way, so I'm going to do it in

1253
01:12:38.000 --> 01:12:41.920
<v Speaker 3>front of your face. But it's it's just this great movie,

1254
01:12:42.000 --> 01:12:45.640
<v Speaker 3>highly quotable. Friends and I quoted to each other very often,

1255
01:12:45.720 --> 01:12:48.760
<v Speaker 3>and so I highly recommend these movies as well. And

1256
01:12:49.319 --> 01:12:50.720
<v Speaker 3>those would be my picks for today.

1257
01:12:50.760 --> 01:12:53.680
<v Speaker 1>All right, I'm gonna get going on my picks. Then

1258
01:12:54.359 --> 01:12:56.600
<v Speaker 1>I usually do a border card game. This time I'm

1259
01:12:56.640 --> 01:13:00.119
<v Speaker 1>gonna do Gnoming Around. It's a Grandpa back game and

1260
01:13:00.159 --> 01:13:03.479
<v Speaker 1>it's basically a variation on golf if you've played golf,

1261
01:13:04.279 --> 01:13:06.479
<v Speaker 1>and in fact, it's got a golf theme to it,

1262
01:13:06.520 --> 01:13:08.680
<v Speaker 1>but it's a got a gnome theme to it as well.

1263
01:13:08.880 --> 01:13:11.279
<v Speaker 1>Let me see if I get a link here for people,

1264
01:13:11.399 --> 01:13:15.319
<v Speaker 1>I'll just link to Grandpa Beck's games. Actually, So it's yeah,

1265
01:13:15.359 --> 01:13:19.279
<v Speaker 1>you basically flip card it's over and replace the cards

1266
01:13:19.279 --> 01:13:21.119
<v Speaker 1>in front of you in a three by three grid

1267
01:13:21.199 --> 01:13:23.439
<v Speaker 1>and you're trying to get the lowest score. So there

1268
01:13:23.439 --> 01:13:27.680
<v Speaker 1>are negative numbered cards, there are you know, plus numbered cards,

1269
01:13:27.720 --> 01:13:31.640
<v Speaker 1>and yeah, anyway, it's it's a fun one for sure.

1270
01:13:31.800 --> 01:13:34.079
<v Speaker 1>It's something that's simple enough that my kids can play it.

1271
01:13:34.119 --> 01:13:36.239
<v Speaker 1>I guess I better find the board game geek Weight,

1272
01:13:36.279 --> 01:13:37.479
<v Speaker 1>but I'm guessing it's.

1273
01:13:37.239 --> 01:13:42.560
<v Speaker 2>Somewhere just above one. Yeah, one point two.

1274
01:13:43.239 --> 01:13:45.560
<v Speaker 1>So you can play two to seven players, which is

1275
01:13:45.600 --> 01:13:47.039
<v Speaker 1>also great because you can play with a bunch of

1276
01:13:47.039 --> 01:13:49.600
<v Speaker 1>people and you can play it in like a half hour,

1277
01:13:49.760 --> 01:13:54.560
<v Speaker 1>fifteen minutes, half hour. So yeah, gnoming around Grandpa back game.

1278
01:13:54.880 --> 01:13:56.399
<v Speaker 1>There was another one that I played with my friends,

1279
01:13:56.439 --> 01:13:58.359
<v Speaker 1>but I can't remember what it's called. So I'll get

1280
01:13:58.359 --> 01:14:01.159
<v Speaker 1>that one next week. But yeah, as other picks go,

1281
01:14:01.560 --> 01:14:03.159
<v Speaker 1>one thing that I'm just going to pick, and it's

1282
01:14:03.199 --> 01:14:05.760
<v Speaker 1>more of an approach than anything else. I've just been

1283
01:14:05.800 --> 01:14:10.199
<v Speaker 1>completely buried with stuff going on in life these days,

1284
01:14:10.680 --> 01:14:13.279
<v Speaker 1>and so what I did is I actually sat down

1285
01:14:13.479 --> 01:14:15.760
<v Speaker 1>and I've been making a list of all the things

1286
01:14:15.800 --> 01:14:17.760
<v Speaker 1>that I need to do, and that way I can

1287
01:14:17.800 --> 01:14:19.800
<v Speaker 1>start to prioritize things and figure out when I'm going

1288
01:14:19.840 --> 01:14:21.000
<v Speaker 1>to get everything done.

1289
01:14:21.319 --> 01:14:23.000
<v Speaker 4>That's called the two do list. You should make an

1290
01:14:23.000 --> 01:14:24.680
<v Speaker 4>app for that, right.

1291
01:14:25.520 --> 01:14:25.720
<v Speaker 2>Yeah.

1292
01:14:25.760 --> 01:14:27.880
<v Speaker 1>The difference is is once I can see it all

1293
01:14:27.880 --> 01:14:30.119
<v Speaker 1>in front of me, then I can start making decisions. Okay,

1294
01:14:30.319 --> 01:14:32.000
<v Speaker 1>this needs to be done this week. You know, this

1295
01:14:32.039 --> 01:14:35.119
<v Speaker 1>can wait this whatever. So anyway, I'm gonna pick that.

1296
01:14:35.199 --> 01:14:38.279
<v Speaker 1>And then finally, tomorrow is a holiday in Utah, so

1297
01:14:38.319 --> 01:14:39.319
<v Speaker 1>I'm just going to shout it out.

1298
01:14:39.359 --> 01:14:40.439
<v Speaker 2>It's Pioneer Day.

1299
01:14:40.279 --> 01:14:44.800
<v Speaker 1>And Pioneer Day commemorates when the Latter Day Saint Pioneers

1300
01:14:45.439 --> 01:14:48.319
<v Speaker 1>entered the Salt Lake Valley. So you know, they come

1301
01:14:48.359 --> 01:14:52.479
<v Speaker 1>down out of Immigration Canyon. Brigham Young stands up. You know,

1302
01:14:52.520 --> 01:14:55.079
<v Speaker 1>he's sick in his wagon, but he stands up and

1303
01:14:55.479 --> 01:14:57.520
<v Speaker 1>looks out on the valley and says, this is the

1304
01:14:57.600 --> 01:15:00.319
<v Speaker 1>right place. So anyway, there's actually a this is the

1305
01:15:00.319 --> 01:15:02.960
<v Speaker 1>Place monument up there where he came into the valley and.

1306
01:15:03.279 --> 01:15:05.560
<v Speaker 2>A bunch of my ancestors did that. It's it's funny.

1307
01:15:05.600 --> 01:15:07.279
<v Speaker 1>On my dad's side, a bunch of them came over

1308
01:15:07.760 --> 01:15:09.920
<v Speaker 1>that way, and on my mom's side, you go back

1309
01:15:09.920 --> 01:15:11.880
<v Speaker 1>two or three generations and they all immigrated to the

1310
01:15:11.960 --> 01:15:16.640
<v Speaker 1>US after that. So anyway, but yeah, I'm excited for it.

1311
01:15:16.680 --> 01:15:20.119
<v Speaker 1>Probably lights some fireworks and it'll be fun. You're in Utah,

1312
01:15:20.359 --> 01:15:23.800
<v Speaker 1>So those are my picks? How are what are your picks?

1313
01:15:24.119 --> 01:15:28.600
<v Speaker 5>Actually, didn't prepare for that, so I'm not sure.

1314
01:15:28.720 --> 01:15:32.920
<v Speaker 1>Just anything you're enjoying these days, books, movies.

1315
01:15:33.000 --> 01:15:35.840
<v Speaker 5>Hard to say, hard to say, I don't know. Didn't

1316
01:15:35.840 --> 01:15:36.439
<v Speaker 5>prepare for that.

1317
01:15:37.279 --> 01:15:39.439
<v Speaker 2>All good, Yeah, no worries.

1318
01:15:39.840 --> 01:15:41.319
<v Speaker 4>We got plenty between the three of us.

1319
01:15:41.479 --> 01:15:43.680
<v Speaker 2>That's true for about two episodes. Maybe you can just

1320
01:15:43.680 --> 01:15:45.600
<v Speaker 2>give us this. Then, what's the best part of living

1321
01:15:45.600 --> 01:15:46.119
<v Speaker 2>in Thailand?

1322
01:15:46.199 --> 01:15:49.079
<v Speaker 5>So the best part in living in Thailand is the weather,

1323
01:15:49.199 --> 01:15:52.279
<v Speaker 5>the views, the childing atmosphere, and you can focus on

1324
01:15:52.319 --> 01:15:54.920
<v Speaker 5>what you want to do and get rid of all

1325
01:15:54.960 --> 01:15:57.359
<v Speaker 5>the things that you need to do that you are

1326
01:15:57.359 --> 01:15:59.319
<v Speaker 5>not willing to. And I said at the beginning of

1327
01:15:59.399 --> 01:16:03.199
<v Speaker 5>the dep for people like us that you know, keep

1328
01:16:03.279 --> 01:16:07.199
<v Speaker 5>doing what they are good at tech industry. I found

1329
01:16:07.199 --> 01:16:09.760
<v Speaker 5>this combination really really nice. That you are living in

1330
01:16:09.800 --> 01:16:13.600
<v Speaker 5>a place which is not that developed, but you have

1331
01:16:13.640 --> 01:16:16.000
<v Speaker 5>an Internet connection. You open your laptop and you know

1332
01:16:16.359 --> 01:16:20.239
<v Speaker 5>you're in the central of whatever civilization. You close them

1333
01:16:20.479 --> 01:16:23.279
<v Speaker 5>the laptop and you're in the middle of the nature.

1334
01:16:23.439 --> 01:16:23.840
<v Speaker 2>Yeah.

1335
01:16:24.199 --> 01:16:28.279
<v Speaker 1>So one other question I have, I'm imagining that you know,

1336
01:16:28.560 --> 01:16:32.359
<v Speaker 1>so I have kids, and you know, and so I'm thinking, gee,

1337
01:16:32.359 --> 01:16:33.279
<v Speaker 1>that sounds real nice.

1338
01:16:33.319 --> 01:16:35.560
<v Speaker 2>But is that even possible for someone in my situation.

1339
01:16:35.720 --> 01:16:38.520
<v Speaker 5>I don't know the ages, but I also have two

1340
01:16:38.600 --> 01:16:41.479
<v Speaker 5>kids one and a half and five enough, and it's

1341
01:16:41.520 --> 01:16:46.279
<v Speaker 5>working really nice. When they are at kindergarten, it's okay.

1342
01:16:46.600 --> 01:16:50.159
<v Speaker 5>Maybe later with schools, universities things like that, maybe less,

1343
01:16:51.359 --> 01:16:54.520
<v Speaker 5>but in my ages it fits us very well.

1344
01:16:54.720 --> 01:16:55.600
<v Speaker 2>Yeah, very cool.

1345
01:16:56.079 --> 01:16:56.800
<v Speaker 3>So chat my.

1346
01:16:57.680 --> 01:17:00.800
<v Speaker 4>You know, my daughter just spent two years over there teaching,

1347
01:17:00.840 --> 01:17:03.439
<v Speaker 4>and she was teaching at an international school in chang Mai,

1348
01:17:03.840 --> 01:17:06.680
<v Speaker 4>which is that farther north than where Adar was. But

1349
01:17:07.279 --> 01:17:10.279
<v Speaker 4>there are a number of schools like that, by international

1350
01:17:10.279 --> 01:17:13.119
<v Speaker 4>schools where they're teaching primary and English, and you'll get

1351
01:17:13.159 --> 01:17:16.000
<v Speaker 4>a lot of you know, American expats there for missions

1352
01:17:16.079 --> 01:17:19.039
<v Speaker 4>organizations or other NGOs or stuff like that who send

1353
01:17:19.039 --> 01:17:21.399
<v Speaker 4>their kids there. So when you're abroad, a lot of

1354
01:17:21.399 --> 01:17:24.239
<v Speaker 4>times they have schools like that where you can have

1355
01:17:24.399 --> 01:17:25.319
<v Speaker 4>your kids go to school.

1356
01:17:25.399 --> 01:17:28.119
<v Speaker 2>Cool, good deal, All right, Well let's go ahead and

1357
01:17:28.159 --> 01:17:28.760
<v Speaker 2>wrap this up.

1358
01:17:29.239 --> 01:17:31.600
<v Speaker 1>I guess one other question is where are you on

1359
01:17:31.640 --> 01:17:33.279
<v Speaker 1>the internet on social media and stuff?

1360
01:17:33.319 --> 01:17:36.039
<v Speaker 5>So you can find me at the Mayo? Do dev

1361
01:17:36.079 --> 01:17:40.079
<v Speaker 5>that you already mentioned at docs dot maob do dev.

1362
01:17:40.720 --> 01:17:43.600
<v Speaker 5>We start creating a blog post there, so we're writing

1363
01:17:43.600 --> 01:17:46.880
<v Speaker 5>a little bit, and of course LinkedIn. You can week

1364
01:17:46.960 --> 01:17:49.479
<v Speaker 5>me a LinkedIn, send me a message and we'll be

1365
01:17:49.560 --> 01:17:49.960
<v Speaker 5>in touch.

1366
01:17:50.039 --> 01:17:50.680
<v Speaker 3>All right, cool.

1367
01:17:51.399 --> 01:17:53.640
<v Speaker 1>Well, let's wrap this up till next time, folks max

1368
01:17:53.680 --> 01:17:54.600
<v Speaker 1>out adios.

1369
01:17:54.600 --> 01:17:55.479
<v Speaker 5>Thanks guys,
