WEBVTT

1
00:00:05.360 --> 00:00:08.800
<v Speaker 1>Hey, Welcome to React around Them the podcast really keep

2
00:00:08.839 --> 00:00:12.519
<v Speaker 1>you updated on all things reacting label. This show is

3
00:00:12.560 --> 00:00:15.759
<v Speaker 1>sponsored by ray Gun and produced by Top and Devs

4
00:00:15.880 --> 00:00:18.800
<v Speaker 1>and Void. Top and Devs is very create Top and

5
00:00:18.839 --> 00:00:21.239
<v Speaker 1>deves to get top and pay and recognition. We're working

6
00:00:21.280 --> 00:00:25.800
<v Speaker 1>on interesting problems and making meaningful community contributions. And Void

7
00:00:26.440 --> 00:00:30.559
<v Speaker 1>is a company that provides the most client friendly business

8
00:00:30.640 --> 00:00:36.479
<v Speaker 1>model for software outsourcing. With Onvoid, clients can higher design

9
00:00:36.560 --> 00:00:40.679
<v Speaker 1>and software development services and only pay once the task

10
00:00:40.799 --> 00:00:42.799
<v Speaker 1>is delivered and improved.

11
00:00:43.640 --> 00:00:45.840
<v Speaker 2>In today's episode, we will.

12
00:00:45.719 --> 00:00:49.759
<v Speaker 1>Talk about React Medium image Zoom, which is a library

13
00:00:49.840 --> 00:00:53.039
<v Speaker 1>that allows you to create the same effect that Medium

14
00:00:53.159 --> 00:00:57.399
<v Speaker 1>pass with their images, that allows you to basically click

15
00:00:57.439 --> 00:00:59.840
<v Speaker 1>on an image and it zooms up and takes up

16
00:00:59.840 --> 00:01:06.000
<v Speaker 1>your entire screen in a battery nice animation, smooth animation,

17
00:01:06.280 --> 00:01:08.599
<v Speaker 1>and then you can just go back to your navigation

18
00:01:08.719 --> 00:01:13.159
<v Speaker 1>afterwards and put damage back where it once was. So

19
00:01:13.239 --> 00:01:16.079
<v Speaker 1>if you like that effect that Medium has and you

20
00:01:16.159 --> 00:01:18.239
<v Speaker 1>want to have it on your website or on your

21
00:01:18.280 --> 00:01:21.799
<v Speaker 1>rap application, today we're going to be talking about this

22
00:01:22.120 --> 00:01:25.760
<v Speaker 1>library and some other things related to the creator of

23
00:01:25.840 --> 00:01:29.280
<v Speaker 1>this library, So let me introduce him. But first, my

24
00:01:29.359 --> 00:01:32.319
<v Speaker 1>name is Lucas Paganini, your host in the podcast, and

25
00:01:33.560 --> 00:01:37.719
<v Speaker 1>joining me in today's episode is also the host Peter Ossa.

26
00:01:39.439 --> 00:01:43.959
<v Speaker 1>Hi everyone, now our very special guest that I was

27
00:01:44.040 --> 00:01:49.079
<v Speaker 1>just mentioning the creator of this library, Robert Pierce, which

28
00:01:49.680 --> 00:01:53.760
<v Speaker 1>is a software engineer working professionally for over thirteen years.

29
00:01:53.840 --> 00:01:57.599
<v Speaker 1>We'll focus on JavaScript and typescript, but also interested in

30
00:01:57.599 --> 00:02:03.159
<v Speaker 1>some other cool things such Haskell, Rust and of course,

31
00:02:03.480 --> 00:02:07.519
<v Speaker 1>as all good developers are really nice, interesting functional programming.

32
00:02:08.120 --> 00:02:11.400
<v Speaker 1>He was also a teacher at a few coding book

33
00:02:11.400 --> 00:02:15.439
<v Speaker 1>camps and also spoke at meettubs conferences and has been

34
00:02:15.599 --> 00:02:20.400
<v Speaker 1>using reacts since twenty thirteen. He also contributes a lot

35
00:02:20.479 --> 00:02:22.639
<v Speaker 1>to open source, so if you enjoy this library, make

36
00:02:22.680 --> 00:02:26.639
<v Speaker 1>sure to check out his GitHub sponsor page and help

37
00:02:26.719 --> 00:02:29.520
<v Speaker 1>him out so we can keep this awesome project up

38
00:02:29.520 --> 00:02:32.120
<v Speaker 1>and running. Robert, thank you so much for being on

39
00:02:32.159 --> 00:02:32.520
<v Speaker 1>the show.

40
00:02:34.280 --> 00:02:36.280
<v Speaker 2>Thanks for having me, Lucas.

41
00:02:36.919 --> 00:02:41.680
<v Speaker 1>Awesome Robert. Let's just get to it, man. I try

42
00:02:41.719 --> 00:02:44.919
<v Speaker 1>to give a really quick pitch about the library, but

43
00:02:46.080 --> 00:02:48.639
<v Speaker 1>do you want to extend it a bit further? Are

44
00:02:48.680 --> 00:02:52.319
<v Speaker 1>there any specific details about the library that I think

45
00:02:52.360 --> 00:02:55.680
<v Speaker 1>it's relevant for our audience to be aware of before

46
00:02:55.719 --> 00:02:59.479
<v Speaker 1>we dive into how you built it and how it works.

47
00:03:01.479 --> 00:03:04.960
<v Speaker 2>Yeah, I think it's it's important to you know, talk

48
00:03:05.000 --> 00:03:08.719
<v Speaker 2>about how a project that is, I guess eight years

49
00:03:08.719 --> 00:03:11.639
<v Speaker 2>old now, you know, can drift a little bit. And

50
00:03:11.680 --> 00:03:13.960
<v Speaker 2>so it started out trying to be a clone of

51
00:03:14.000 --> 00:03:16.520
<v Speaker 2>what Medium was doing. And then as time went on

52
00:03:16.680 --> 00:03:19.639
<v Speaker 2>and based on you know, what we could do in

53
00:03:19.639 --> 00:03:23.039
<v Speaker 2>the browser, all the different things we have access to now,

54
00:03:23.199 --> 00:03:28.120
<v Speaker 2>like you know, picture elements, and you know, all the

55
00:03:28.120 --> 00:03:32.319
<v Speaker 2>different scenarios people might have with wanting to zoom divs

56
00:03:32.319 --> 00:03:36.960
<v Speaker 2>with background images or you know objects fit and pain cover,

57
00:03:37.479 --> 00:03:41.520
<v Speaker 2>object position, all these different possibilities. You know, where the

58
00:03:41.520 --> 00:03:44.159
<v Speaker 2>project is now is you know, it's drifted a little

59
00:03:44.159 --> 00:03:46.800
<v Speaker 2>bit from how the exact one on Medium feels, but

60
00:03:47.879 --> 00:03:50.800
<v Speaker 2>I think it still maintains the essence. Awesome. Yeah, that

61
00:03:50.840 --> 00:03:51.599
<v Speaker 2>doesn't make sense.

62
00:03:51.680 --> 00:03:55.719
<v Speaker 1>And and that's a long time, like eighty years maintaining that.

63
00:03:56.400 --> 00:04:00.479
<v Speaker 1>First off, congrats for maintaining, because a lot of open

64
00:04:00.520 --> 00:04:03.719
<v Speaker 1>source projects they just get abandoned in a way shorter

65
00:04:03.840 --> 00:04:08.439
<v Speaker 1>period of time. I do want to know, what do

66
00:04:08.479 --> 00:04:12.560
<v Speaker 1>you think was the success of this project being maintained

67
00:04:12.560 --> 00:04:15.479
<v Speaker 1>for so long? Were you able to find other maintainers?

68
00:04:15.520 --> 00:04:18.319
<v Speaker 1>Are you the solo meting journey, Like, what advice could

69
00:04:18.319 --> 00:04:23.439
<v Speaker 1>you give to other people thinking of maintaining or creating

70
00:04:23.879 --> 00:04:25.160
<v Speaker 1>open source projects.

71
00:04:25.399 --> 00:04:29.199
<v Speaker 2>That's a great question. So a bit of it so

72
00:04:29.199 --> 00:04:32.279
<v Speaker 2>that it's too it's twofold. For me, I think it's

73
00:04:32.319 --> 00:04:36.160
<v Speaker 2>partially the people who help contribute to it, which can

74
00:04:36.240 --> 00:04:39.120
<v Speaker 2>take the form of just people using it and raising issues.

75
00:04:39.639 --> 00:04:42.360
<v Speaker 2>I can take the form of people wanting to solve

76
00:04:42.399 --> 00:04:44.920
<v Speaker 2>some of the issues, as well as some people who

77
00:04:45.000 --> 00:04:47.879
<v Speaker 2>just have ideas that they think could could help and

78
00:04:47.959 --> 00:04:50.199
<v Speaker 2>they are willing to talk that through with you. So

79
00:04:50.279 --> 00:04:53.680
<v Speaker 2>that's one aspect of it. And the other aspect for

80
00:04:53.800 --> 00:04:57.360
<v Speaker 2>me was, Hey, this hobby project that I thought was

81
00:04:57.399 --> 00:04:59.959
<v Speaker 2>cool and that I kind of wanted for my own thing.

82
00:05:00.000 --> 00:05:04.759
<v Speaker 2>Things started to become popular and then it not being

83
00:05:05.720 --> 00:05:09.399
<v Speaker 2>you know, perfect or really exactly what I needed all

84
00:05:09.439 --> 00:05:11.399
<v Speaker 2>the time, or maybe I didn't like some of the code,

85
00:05:11.480 --> 00:05:16.800
<v Speaker 2>or I got more educated, I got more skilled at

86
00:05:16.879 --> 00:05:20.160
<v Speaker 2>react or a JavaScript or was something. It started to

87
00:05:20.160 --> 00:05:23.839
<v Speaker 2>be something that I knew people were going to look at,

88
00:05:24.920 --> 00:05:26.600
<v Speaker 2>and so I wanted it. I wanted to be proud

89
00:05:26.639 --> 00:05:29.439
<v Speaker 2>of it, and so that's something that kept me coming

90
00:05:29.480 --> 00:05:31.439
<v Speaker 2>back is like, this is a kind of like a

91
00:05:31.560 --> 00:05:34.480
<v Speaker 2>like a people have like dot file gardens or like

92
00:05:34.560 --> 00:05:39.040
<v Speaker 2>code gardens. This was my like react code garden that

93
00:05:39.120 --> 00:05:41.759
<v Speaker 2>I is something that I could keep tending to and

94
00:05:41.839 --> 00:05:45.519
<v Speaker 2>as I grew in skill, I could then apply that

95
00:05:45.560 --> 00:05:50.279
<v Speaker 2>skill to the product. So yeah, I think having a

96
00:05:50.560 --> 00:05:53.000
<v Speaker 2>supportive community of people that use it and want it

97
00:05:53.040 --> 00:05:56.480
<v Speaker 2>to get better. Plus you know, knowing that this is

98
00:05:56.519 --> 00:05:58.839
<v Speaker 2>something that you're putting out into the world and wanting

99
00:05:58.879 --> 00:06:02.879
<v Speaker 2>that to reflect you know, your skill and your attention

100
00:06:02.920 --> 00:06:05.920
<v Speaker 2>to detail. I think those things made this project what

101
00:06:06.040 --> 00:06:09.000
<v Speaker 2>it is today. I like that. I like that very much.

102
00:06:09.120 --> 00:06:13.319
<v Speaker 1>Like think about it as a place where you can

103
00:06:14.160 --> 00:06:17.560
<v Speaker 1>output your growth as a developer and kind of like

104
00:06:17.759 --> 00:06:22.480
<v Speaker 1>look back onto it and keep rebuilding it, just literally

105
00:06:22.759 --> 00:06:26.360
<v Speaker 1>rewriting it as you gain more and more knowledge and

106
00:06:26.439 --> 00:06:28.959
<v Speaker 1>you feel that you are able to do a better job.

107
00:06:29.720 --> 00:06:30.959
<v Speaker 2>I like that interesting.

108
00:06:32.199 --> 00:06:38.279
<v Speaker 1>And but with regards to other contributors, were you able

109
00:06:38.319 --> 00:06:42.759
<v Speaker 1>to like create this net and how is that or

110
00:06:43.199 --> 00:06:44.800
<v Speaker 1>or is it actually mainly you.

111
00:06:45.040 --> 00:06:49.959
<v Speaker 2>The main contributor. It's definitely mainly me, And I think

112
00:06:49.959 --> 00:06:53.079
<v Speaker 2>that's something. So something that's important to remember over time

113
00:06:53.160 --> 00:06:56.959
<v Speaker 2>is that, like when people get involved with open source projects,

114
00:06:57.360 --> 00:06:59.519
<v Speaker 2>it might be. I mean, it might be on a

115
00:06:59.720 --> 00:07:03.160
<v Speaker 2>one off basis, or you know, at best, it's probably

116
00:07:03.199 --> 00:07:05.800
<v Speaker 2>on a temporary basis. You know, asking people to show

117
00:07:05.879 --> 00:07:09.360
<v Speaker 2>up for something that they don't get paid for is

118
00:07:09.399 --> 00:07:12.639
<v Speaker 2>a is a big ask, and it gets harder and

119
00:07:12.680 --> 00:07:15.839
<v Speaker 2>harder as people you know, you know, change jobs. Maybe

120
00:07:15.879 --> 00:07:19.000
<v Speaker 2>they had an easier they have more time, more free

121
00:07:19.000 --> 00:07:21.800
<v Speaker 2>time with their job before, maybe the new job is

122
00:07:21.879 --> 00:07:25.560
<v Speaker 2>more demanding, maybe their life scenarios change, or maybe they

123
00:07:25.639 --> 00:07:30.160
<v Speaker 2>just you know, they're not interested in contributing anymore. And

124
00:07:30.199 --> 00:07:33.160
<v Speaker 2>so I've had a handful of people that have been

125
00:07:33.879 --> 00:07:37.920
<v Speaker 2>over the over the years during different time periods we're

126
00:07:38.160 --> 00:07:42.319
<v Speaker 2>super helpful with they're you know, testing things out, coming

127
00:07:42.399 --> 00:07:46.839
<v Speaker 2>up with ideas, contributing some code. But eventually that would

128
00:07:46.920 --> 00:07:50.279
<v Speaker 2>kind of is allowed. But in a way that's okay,

129
00:07:50.800 --> 00:07:52.879
<v Speaker 2>where it's like, okay, you know, we we got through

130
00:07:52.920 --> 00:07:56.680
<v Speaker 2>this thing. I really appreciate your time. Thank you so much.

131
00:07:56.839 --> 00:07:59.160
<v Speaker 2>You know, you're a contributor. You're in the read me

132
00:07:59.279 --> 00:08:02.560
<v Speaker 2>and they all contributs section, and every now and then

133
00:08:02.600 --> 00:08:06.920
<v Speaker 2>I might try to ping them on, you know, an

134
00:08:06.920 --> 00:08:09.000
<v Speaker 2>issue or pull request and say, you know, hey, have

135
00:08:09.040 --> 00:08:14.279
<v Speaker 2>you experienced this as well? But you know, these things

136
00:08:14.920 --> 00:08:17.839
<v Speaker 2>can be a little bit temporary, and so that's what

137
00:08:17.839 --> 00:08:20.160
<v Speaker 2>I've tried to do, is like, if someone's asking a question,

138
00:08:20.600 --> 00:08:23.319
<v Speaker 2>try to respond as immediately as I can. If I

139
00:08:23.319 --> 00:08:25.160
<v Speaker 2>can't fix the issue for a long time, which is

140
00:08:25.199 --> 00:08:27.480
<v Speaker 2>sometimes the case, you know, I'll try to check back

141
00:08:27.480 --> 00:08:29.839
<v Speaker 2>in periodically and say, hey, I haven't forgotten about this.

142
00:08:29.959 --> 00:08:33.679
<v Speaker 2>I haven't forgotten about you. The person who's right, you know,

143
00:08:34.279 --> 00:08:37.440
<v Speaker 2>putting yourself out there to raise an issue online, and

144
00:08:37.480 --> 00:08:38.919
<v Speaker 2>so I'm trying to do that. I try to be

145
00:08:39.039 --> 00:08:42.559
<v Speaker 2>kind to everyone, but it doesn't mean I can always

146
00:08:42.559 --> 00:08:45.200
<v Speaker 2>solve the issue quickly, but I can respond quickly, and

147
00:08:45.240 --> 00:08:47.519
<v Speaker 2>that I think that keeps people coming back. And I

148
00:08:47.559 --> 00:08:53.519
<v Speaker 2>think open source projects that are clear with where the

149
00:08:53.559 --> 00:08:55.679
<v Speaker 2>project is and where it's going, like is it active,

150
00:08:56.600 --> 00:08:58.879
<v Speaker 2>is it? Is this something you're not going to fix?

151
00:09:00.039 --> 00:09:01.960
<v Speaker 2>Can you just respond to them and just say, hey,

152
00:09:02.039 --> 00:09:04.519
<v Speaker 2>I don't have time for this right now. Stuff like

153
00:09:04.559 --> 00:09:08.120
<v Speaker 2>that will I think be useful in maintaining some sort

154
00:09:08.159 --> 00:09:11.279
<v Speaker 2>of community, even if that community isn't involved very often.

155
00:09:12.039 --> 00:09:14.360
<v Speaker 1>Yeah, that does make sense, like thinking about the people

156
00:09:14.360 --> 00:09:17.600
<v Speaker 1>there are submitting issues and just using it as contributors

157
00:09:17.639 --> 00:09:21.960
<v Speaker 1>as well. And in a way that that is very true,

158
00:09:22.000 --> 00:09:24.840
<v Speaker 1>Like they're giving feedback on what they seem is missing,

159
00:09:24.879 --> 00:09:28.080
<v Speaker 1>So in a way they're definitely contributing as well and

160
00:09:28.320 --> 00:09:32.000
<v Speaker 1>helping you make better decisions for the future of the product.

161
00:09:32.519 --> 00:09:33.240
<v Speaker 2>That's nice.

162
00:09:33.639 --> 00:09:38.120
<v Speaker 1>Okay, I would like to get into the intricacies of

163
00:09:38.200 --> 00:09:42.320
<v Speaker 1>how the code actually works. But before, Peter, do you

164
00:09:42.360 --> 00:09:45.039
<v Speaker 1>have any anything you want to say?

165
00:09:45.519 --> 00:09:45.799
<v Speaker 2>Question?

166
00:09:46.279 --> 00:09:46.480
<v Speaker 1>Yeah?

167
00:09:46.600 --> 00:09:49.360
<v Speaker 3>Well, I think I have one question on its on

168
00:09:50.000 --> 00:09:56.559
<v Speaker 3>the basis of like maintain also like maintaining the open

169
00:09:56.639 --> 00:10:00.279
<v Speaker 3>source project right too, or that maybe you're kind though

170
00:10:00.759 --> 00:10:04.960
<v Speaker 3>primarily the meaningful enough for that, or like you have

171
00:10:05.120 --> 00:10:09.679
<v Speaker 3>like you have into the prog that maybe, for example,

172
00:10:10.440 --> 00:10:13.200
<v Speaker 3>if you are most available kind of like assign it to.

173
00:10:13.240 --> 00:10:19.480
<v Speaker 2>So so like Yeah, I couldn't quite make out the

174
00:10:19.480 --> 00:10:22.159
<v Speaker 2>full question, so I'll try to repeat it. Was it

175
00:10:22.200 --> 00:10:27.360
<v Speaker 2>about if I'm too busy and assigning issues to other people? Yeah? Yeah, yeah,

176
00:10:27.399 --> 00:10:27.799
<v Speaker 2>yeah yeah.

177
00:10:27.840 --> 00:10:30.679
<v Speaker 3>Do you have like your system that helps you maybe

178
00:10:31.000 --> 00:10:35.240
<v Speaker 3>if you're kind of engaged, maybe you can't actually work

179
00:10:35.279 --> 00:10:38.360
<v Speaker 3>on that issue and connacally signed with so on like

180
00:10:38.919 --> 00:10:39.320
<v Speaker 3>you have that.

181
00:10:40.159 --> 00:10:44.799
<v Speaker 2>Yeah, I've not had too much luck with that. One

182
00:10:44.840 --> 00:10:48.320
<v Speaker 2>thing I've tried before was during hactober Fest, but I

183
00:10:48.320 --> 00:10:50.360
<v Speaker 2>think was it. I think it's Digital Ocean puts that

184
00:10:50.399 --> 00:10:55.679
<v Speaker 2>on in October or yeah, in October. And I've you know,

185
00:10:55.759 --> 00:10:58.919
<v Speaker 2>labeled some issues as hactober Fest before, and I think

186
00:10:58.960 --> 00:11:01.360
<v Speaker 2>it was a few years ago. I had one or

187
00:11:01.360 --> 00:11:04.320
<v Speaker 2>two issues get picked up, and I tried to write

188
00:11:04.320 --> 00:11:09.080
<v Speaker 2>the issues as to make it as clear and plain

189
00:11:09.120 --> 00:11:11.720
<v Speaker 2>as I could about what the issue is, where I

190
00:11:11.720 --> 00:11:15.440
<v Speaker 2>think the problem or the solution may be in the code,

191
00:11:16.120 --> 00:11:18.559
<v Speaker 2>what the expected outcome would be, And a few of

192
00:11:18.600 --> 00:11:21.159
<v Speaker 2>those have been picked up, but right now, I mean

193
00:11:21.200 --> 00:11:24.360
<v Speaker 2>it's mostly just me. I don't really have anyone to

194
00:11:24.360 --> 00:11:28.039
<v Speaker 2>turn to. Even some people I still work with that

195
00:11:28.120 --> 00:11:31.240
<v Speaker 2>have contributed to the project, you know, they've got other

196
00:11:31.279 --> 00:11:35.120
<v Speaker 2>things going on. So if an issue comes up, it's me.

197
00:11:35.799 --> 00:11:39.120
<v Speaker 2>I can I can ask people. You know. What I

198
00:11:39.159 --> 00:11:41.639
<v Speaker 2>do in the issues is if there's something that comes up,

199
00:11:42.480 --> 00:11:44.840
<v Speaker 2>you know, I will ask them to please provide some

200
00:11:44.879 --> 00:11:49.720
<v Speaker 2>sort of reproduce reproduction case, whether that's in code, sandbox

201
00:11:50.039 --> 00:11:53.480
<v Speaker 2>or a project that they create, and if they don't

202
00:11:53.480 --> 00:11:55.679
<v Speaker 2>do it, someone else might show up and do that

203
00:11:55.720 --> 00:11:57.759
<v Speaker 2>for them, which is really nice. And then I can

204
00:11:57.799 --> 00:12:00.519
<v Speaker 2>interact and go back and forth with them or they

205
00:12:00.559 --> 00:12:04.440
<v Speaker 2>can sort of figure out, you know, the best way

206
00:12:04.480 --> 00:12:07.039
<v Speaker 2>is to set the issue up themselves in the issue,

207
00:12:07.200 --> 00:12:09.960
<v Speaker 2>and then that really helps me save a lot of

208
00:12:10.039 --> 00:12:14.159
<v Speaker 2>time and you know, dive in, find out what the

209
00:12:14.200 --> 00:12:16.799
<v Speaker 2>problem is and say, oh, okay, all right, let's let's

210
00:12:16.840 --> 00:12:22.639
<v Speaker 2>get it there. I'm fixing. Nice. Okay, let's oh sorry, sorry, Peter,

211
00:12:23.039 --> 00:12:25.240
<v Speaker 2>go ahead. Yeah, yeah, that's nice.

212
00:12:25.279 --> 00:12:28.279
<v Speaker 3>Actually, I think it's actually very common that we do

213
00:12:28.639 --> 00:12:31.279
<v Speaker 3>like taking all this make sure that it's kind of

214
00:12:31.320 --> 00:12:35.559
<v Speaker 3>community because and I it's actually kind of a very

215
00:12:35.639 --> 00:12:38.000
<v Speaker 3>large amounts of working end to kind of you know,

216
00:12:39.080 --> 00:12:40.039
<v Speaker 3>under the issues.

217
00:12:40.159 --> 00:12:43.399
<v Speaker 2>I'm also kind of intact with the people placing the issues.

218
00:12:43.440 --> 00:12:47.200
<v Speaker 3>So this is actually very as a I think probably

219
00:12:47.519 --> 00:12:50.879
<v Speaker 3>you can actually even if you don't mind, maybe on

220
00:12:51.000 --> 00:12:54.200
<v Speaker 3>the shoe maybe we can actually ask from assist and

221
00:12:54.320 --> 00:12:56.200
<v Speaker 3>like people who come much of it to maintain a work.

222
00:12:56.279 --> 00:12:59.879
<v Speaker 3>I don't make it's fun because I know that the

223
00:13:00.639 --> 00:13:03.679
<v Speaker 3>kind of cool if maybe you have like like maybe.

224
00:13:05.360 --> 00:13:07.399
<v Speaker 2>To maintaining as well.

225
00:13:07.519 --> 00:13:10.519
<v Speaker 3>That yeah, to put home beyond your kind.

226
00:13:10.360 --> 00:13:15.399
<v Speaker 1>Of yeah, yeah, for sure. Okay, let's get a bit

227
00:13:15.440 --> 00:13:18.679
<v Speaker 1>into the intricacies of the code, because I think there

228
00:13:18.679 --> 00:13:21.159
<v Speaker 1>are multiple different ways in which you could have coded that,

229
00:13:21.279 --> 00:13:25.519
<v Speaker 1>especially now with view transitions, which are recently we're lending

230
00:13:25.519 --> 00:13:28.120
<v Speaker 1>on Chrome. But I'm not sure if there already stable

231
00:13:28.360 --> 00:13:32.039
<v Speaker 1>in all the browsers as well. But I'm sure that

232
00:13:32.120 --> 00:13:34.120
<v Speaker 1>you didn't use that because the library exists for a

233
00:13:34.200 --> 00:13:36.639
<v Speaker 1>very long time. I also don't even know if now

234
00:13:36.639 --> 00:13:39.440
<v Speaker 1>that this exists, if it would be a better way

235
00:13:39.480 --> 00:13:42.480
<v Speaker 1>to do this, or if it's better suited for other

236
00:13:42.639 --> 00:13:45.639
<v Speaker 1>use cases. But yeah, I'd like to let's just go

237
00:13:45.799 --> 00:13:47.960
<v Speaker 1>through how this is right now, and then we can

238
00:13:48.039 --> 00:13:52.000
<v Speaker 1>even talk about if you if you have an urge,

239
00:13:52.279 --> 00:13:55.840
<v Speaker 1>like an itch to refactor it even further now to

240
00:13:56.120 --> 00:13:57.360
<v Speaker 1>adhere to modern.

241
00:13:57.039 --> 00:13:58.399
<v Speaker 2>Technologies and stuff like that.

242
00:13:58.440 --> 00:13:59.799
<v Speaker 1>But right now, how does it work?

243
00:14:00.000 --> 00:14:03.200
<v Speaker 2>All right? So this this is gonna be some nitty

244
00:14:03.240 --> 00:14:05.639
<v Speaker 2>gritty stuff. I'll start at the top. I'll start with like,

245
00:14:05.879 --> 00:14:08.799
<v Speaker 2>what is actually happening. I do want to get to

246
00:14:09.240 --> 00:14:10.720
<v Speaker 2>where the project eventually will go.

247
00:14:10.799 --> 00:14:12.360
<v Speaker 4>But I think we'll say that for a minute. I

248
00:14:12.440 --> 00:14:16.240
<v Speaker 4>think it's cool it involves web components, and we'll see.

249
00:14:16.720 --> 00:14:22.840
<v Speaker 4>So the way that this works is based on the

250
00:14:22.879 --> 00:14:25.399
<v Speaker 4>need of what it needs to do. So what it

251
00:14:25.440 --> 00:14:28.240
<v Speaker 4>needs to do is if you're gonna if you're gonna

252
00:14:28.279 --> 00:14:32.320
<v Speaker 4>put something on the screen that is clickable, So like

253
00:14:32.320 --> 00:14:34.159
<v Speaker 4>if someone can click on it or tap on it,

254
00:14:34.720 --> 00:14:38.840
<v Speaker 4>then it needs to also be accessible to a keyboard

255
00:14:39.000 --> 00:14:42.919
<v Speaker 4>or other assistive device that can you know, focus through

256
00:14:42.919 --> 00:14:45.720
<v Speaker 4>a page. Okay, so we need to be able to

257
00:14:45.759 --> 00:14:46.919
<v Speaker 4>focus on it with a keyboard.

258
00:14:46.960 --> 00:14:51.000
<v Speaker 2>We need to be able to set that up to

259
00:14:51.080 --> 00:14:56.399
<v Speaker 2>be also screen reader accessible. And people have said to

260
00:14:56.440 --> 00:14:59.000
<v Speaker 2>me in the past, they're like, well, why why are

261
00:14:59.039 --> 00:15:00.879
<v Speaker 2>you doing all of this with modal Why are you

262
00:15:00.919 --> 00:15:04.080
<v Speaker 2>doing all this stuff with keyboard? Like blind people with

263
00:15:04.159 --> 00:15:09.120
<v Speaker 2>blindness don't Why would they want to enhance a you know,

264
00:15:09.159 --> 00:15:10.840
<v Speaker 2>an image, Why would they want to make it bigger

265
00:15:10.840 --> 00:15:15.480
<v Speaker 2>on the screen. And when I hear that, I politely

266
00:15:15.519 --> 00:15:19.720
<v Speaker 2>inform people that's you know, it's not just people that

267
00:15:19.759 --> 00:15:22.960
<v Speaker 2>are blind that use keyboards and screen readers, people with

268
00:15:23.000 --> 00:15:27.360
<v Speaker 2>low visual acuity that could be cognitive, people with cognitive disabilities.

269
00:15:27.639 --> 00:15:31.960
<v Speaker 2>There's many, many, many reasons why people might use other

270
00:15:32.080 --> 00:15:36.039
<v Speaker 2>things than just a mouse. So the simplest, absolute simplest

271
00:15:36.039 --> 00:15:39.720
<v Speaker 2>thing you could do is, okay, I click on that,

272
00:15:40.120 --> 00:15:44.039
<v Speaker 2>and I you know, just transform that image that's on

273
00:15:44.080 --> 00:15:46.120
<v Speaker 2>the screen right there and make it take up the

274
00:15:46.159 --> 00:15:52.399
<v Speaker 2>whole screen. But you know, that's modal behavior. And so

275
00:15:52.440 --> 00:15:54.320
<v Speaker 2>if someone we're trying to do this with a keyboard,

276
00:15:54.879 --> 00:15:56.639
<v Speaker 2>or they were using with the screen reader and they

277
00:15:56.799 --> 00:16:01.279
<v Speaker 2>were blind, you know, they might of that image still

278
00:16:01.399 --> 00:16:03.679
<v Speaker 2>up taking up the whole screen, but they might be

279
00:16:03.759 --> 00:16:07.720
<v Speaker 2>trying to navigate through everything that's behind it. So that's

280
00:16:07.759 --> 00:16:13.120
<v Speaker 2>why it uses a modal. Modals have very a modal dialogue.

281
00:16:13.559 --> 00:16:16.360
<v Speaker 2>You know, those are very specific rules where none of

282
00:16:16.399 --> 00:16:21.519
<v Speaker 2>the content, none of the you know, input controls, anything

283
00:16:21.639 --> 00:16:25.879
<v Speaker 2>behind that modal should not be available to a keyboard,

284
00:16:25.919 --> 00:16:29.679
<v Speaker 2>screen reader, any assistant device. So okay, that means we

285
00:16:29.720 --> 00:16:33.000
<v Speaker 2>need to be in a model now, so what do

286
00:16:33.039 --> 00:16:35.279
<v Speaker 2>we need to do to get there. We've got an

287
00:16:35.279 --> 00:16:38.120
<v Speaker 2>image and we want to make it seem like where

288
00:16:38.440 --> 00:16:41.480
<v Speaker 2>we're taking that image and we're zooming it up to

289
00:16:41.679 --> 00:16:45.679
<v Speaker 2>the you know, the viewport screen size. Well, how do

290
00:16:45.679 --> 00:16:47.159
<v Speaker 2>we do that with a modal, because a modal is

291
00:16:47.159 --> 00:16:52.679
<v Speaker 2>a separate element. What we do is take that original

292
00:16:52.679 --> 00:16:56.559
<v Speaker 2>image and I'll get a little more deep into this

293
00:16:56.600 --> 00:17:01.000
<v Speaker 2>in a second, but we take that image, we open

294
00:17:01.000 --> 00:17:06.079
<v Speaker 2>a modal dialogue with that image inside the modal dialogue,

295
00:17:06.079 --> 00:17:09.119
<v Speaker 2>so it's two different images. Now with the same source,

296
00:17:10.079 --> 00:17:11.880
<v Speaker 2>you put it on top of where it is on

297
00:17:11.920 --> 00:17:18.400
<v Speaker 2>the page, and then you scale it to the viewport. Now,

298
00:17:18.440 --> 00:17:20.599
<v Speaker 2>there's some problems that you run into with this if

299
00:17:20.640 --> 00:17:23.599
<v Speaker 2>you if you just try to you know, there's a

300
00:17:23.680 --> 00:17:26.119
<v Speaker 2>little bit of math to figure out. Okay, well, it's

301
00:17:26.160 --> 00:17:28.680
<v Speaker 2>the within the height looks at what are the dimensions

302
00:17:28.680 --> 00:17:30.680
<v Speaker 2>of the image? Do I need to scale it more

303
00:17:31.240 --> 00:17:35.000
<v Speaker 2>you know x, or more x or more y. But

304
00:17:35.640 --> 00:17:42.079
<v Speaker 2>the problems get compounded by Safari and specifically iOS Safari.

305
00:17:42.599 --> 00:17:46.279
<v Speaker 2>Both macros and iOS do this, but it's worse on iOS.

306
00:17:46.839 --> 00:17:49.920
<v Speaker 2>If you start with an image that's small and you

307
00:17:50.000 --> 00:17:56.039
<v Speaker 2>try to transform it above you know, transform scale you know,

308
00:17:56.160 --> 00:18:01.920
<v Speaker 2>two three, four. Safari only have the image quality that

309
00:18:02.000 --> 00:18:04.680
<v Speaker 2>was originally rendered. So even if you haven't a bigger

310
00:18:04.680 --> 00:18:07.279
<v Speaker 2>image or a really really big image, if you render it

311
00:18:07.359 --> 00:18:11.720
<v Speaker 2>really small, that's the best quality you're gonna get. So

312
00:18:11.799 --> 00:18:15.440
<v Speaker 2>it scales up. Sorry, when you scale it up, you

313
00:18:15.519 --> 00:18:18.720
<v Speaker 2>lose the quality. So it's a big problem if you're

314
00:18:18.720 --> 00:18:21.640
<v Speaker 2>trying to have something that you know enhances the image

315
00:18:21.680 --> 00:18:26.359
<v Speaker 2>makes it bigger. So instead, what you have to do

316
00:18:25.920 --> 00:18:30.559
<v Speaker 2>to do all this is figure out in reverse how

317
00:18:30.559 --> 00:18:33.359
<v Speaker 2>big it's going to get. When you're doing the zooming

318
00:18:33.359 --> 00:18:35.559
<v Speaker 2>and you put the dialogue on top of the image,

319
00:18:36.160 --> 00:18:39.359
<v Speaker 2>you scale the image down so between zero and one,

320
00:18:41.200 --> 00:18:45.000
<v Speaker 2>and then as the animation goes, you eventually scale to

321
00:18:45.079 --> 00:18:48.119
<v Speaker 2>a scale of one, and that scale of one is

322
00:18:49.039 --> 00:18:52.559
<v Speaker 2>whatever is the biggest the image can get in the viewport.

323
00:18:53.240 --> 00:18:55.440
<v Speaker 2>You also have to take into account what the maximum

324
00:18:55.440 --> 00:18:58.200
<v Speaker 2>size of the image and make sure you don't scale

325
00:18:58.279 --> 00:19:01.960
<v Speaker 2>beyond the maximum side of the image and make them blurry.

326
00:19:02.799 --> 00:19:04.759
<v Speaker 2>So the image is eight hundred by eight hundred, but

327
00:19:04.799 --> 00:19:07.920
<v Speaker 2>you're on a really big screen, the only one to

328
00:19:08.000 --> 00:19:10.440
<v Speaker 2>zoom to that amount. So there's a lot of little

329
00:19:10.440 --> 00:19:13.720
<v Speaker 2>things that go into it. But to wrap that initial

330
00:19:13.759 --> 00:19:17.319
<v Speaker 2>bit back up, there's a dialogue that's invisible that gets

331
00:19:17.319 --> 00:19:20.839
<v Speaker 2>put on the screen, and the image that we're zooming

332
00:19:20.960 --> 00:19:23.960
<v Speaker 2>is put on top of the image that's underneath the dialogue,

333
00:19:24.359 --> 00:19:26.680
<v Speaker 2>and then we scale it up to the viewport. And

334
00:19:26.720 --> 00:19:29.160
<v Speaker 2>when you click on it again or press escape to

335
00:19:29.200 --> 00:19:33.400
<v Speaker 2>get out of this modal experience, it does the opposite

336
00:19:33.559 --> 00:19:34.359
<v Speaker 2>and puts it back down.

337
00:19:35.000 --> 00:19:39.599
<v Speaker 1>I like the trouble shooting, like you explaining the problem

338
00:19:39.640 --> 00:19:40.599
<v Speaker 1>and how you tackle it.

339
00:19:42.000 --> 00:19:44.599
<v Speaker 2>A few questions. So first let's.

340
00:19:44.440 --> 00:19:50.359
<v Speaker 1>Say that the image is very tall, so it's the

341
00:19:50.480 --> 00:19:56.119
<v Speaker 1>height is very big. Do you always make it fit

342
00:19:56.759 --> 00:20:01.480
<v Speaker 1>the viewboard or would you allow it to be scrollable

343
00:20:01.680 --> 00:20:04.279
<v Speaker 1>once you once you zoom in, it always fits.

344
00:20:04.400 --> 00:20:07.440
<v Speaker 2>It always fits the viewport, whatever that is. And so

345
00:20:09.599 --> 00:20:12.400
<v Speaker 2>you know, whether that's a feature, I mean, that's what

346
00:20:12.799 --> 00:20:15.200
<v Speaker 2>I made it to, but I mean whether that works

347
00:20:15.200 --> 00:20:18.079
<v Speaker 2>for everyone or not is kind of up to them,

348
00:20:18.119 --> 00:20:22.519
<v Speaker 2>but it is. It is a way to see one image,

349
00:20:23.640 --> 00:20:25.519
<v Speaker 2>you know, that might be bigger than your viewport actually

350
00:20:25.559 --> 00:20:29.319
<v Speaker 2>in the viewport, but you know, it's it just depends

351
00:20:29.359 --> 00:20:34.000
<v Speaker 2>on what your use case is with that. And you know,

352
00:20:34.160 --> 00:20:36.440
<v Speaker 2>there's a you know, there's a there's a use case

353
00:20:36.440 --> 00:20:38.559
<v Speaker 2>where you scroll down and maybe you scroll past an

354
00:20:38.559 --> 00:20:41.000
<v Speaker 2>image because it's you know, taller than your viewport and

355
00:20:41.000 --> 00:20:42.680
<v Speaker 2>you've got a little bit of it in the window.

356
00:20:42.799 --> 00:20:45.400
<v Speaker 2>You click on that, it comes down and it may actually,

357
00:20:45.480 --> 00:20:48.039
<v Speaker 2>you know, if it's taller and wider, it may just

358
00:20:48.559 --> 00:20:50.920
<v Speaker 2>shrink it so it fits into the viewport. But that's

359
00:20:50.960 --> 00:20:53.160
<v Speaker 2>what it does, okay, okay.

360
00:20:55.160 --> 00:20:59.319
<v Speaker 1>And the the thing that is actually being skilled up

361
00:20:59.599 --> 00:21:02.640
<v Speaker 1>or down is just the image itself. Because the model,

362
00:21:02.680 --> 00:21:07.400
<v Speaker 1>as you said, you you fix its dimensions because you

363
00:21:07.599 --> 00:21:10.759
<v Speaker 1>can't think her the dimensions of the model. Uh it

364
00:21:11.079 --> 00:21:13.559
<v Speaker 1>like you can, but then you would run into problems

365
00:21:13.680 --> 00:21:18.480
<v Speaker 1>in a future situations. So you just fix the the

366
00:21:18.519 --> 00:21:21.000
<v Speaker 1>dimensions of the model to be the entire view board,

367
00:21:21.400 --> 00:21:24.960
<v Speaker 1>and then you just scal up the image that you

368
00:21:25.039 --> 00:21:27.559
<v Speaker 1>duplicated and created inside the model.

369
00:21:27.960 --> 00:21:32.759
<v Speaker 2>That's right. It also allows for when for pinching to

370
00:21:32.920 --> 00:21:36.119
<v Speaker 2>zoom and panning around, so you've got to write this

371
00:21:36.920 --> 00:21:41.160
<v Speaker 2>code for all that, because there's also code for you know,

372
00:21:41.640 --> 00:21:47.039
<v Speaker 2>gesture like swiping as well as mouse wheel. And in

373
00:21:47.079 --> 00:21:51.000
<v Speaker 2>the past, what I allowed for was when you would swipe,

374
00:21:51.400 --> 00:21:55.839
<v Speaker 2>it would just scroll the page and you know, put

375
00:21:55.880 --> 00:21:58.960
<v Speaker 2>the put the thing back, put the image back where

376
00:21:58.960 --> 00:22:02.880
<v Speaker 2>it went to before. But that was a very difficult

377
00:22:02.880 --> 00:22:06.440
<v Speaker 2>thing to achieve with the modal, with you know, the

378
00:22:06.480 --> 00:22:10.279
<v Speaker 2>animation all this stuff. So what I've got now is

379
00:22:10.319 --> 00:22:12.839
<v Speaker 2>the way that I think most models are supposed to work,

380
00:22:13.400 --> 00:22:16.160
<v Speaker 2>where you disabled the body, the scroll on the body,

381
00:22:17.359 --> 00:22:20.440
<v Speaker 2>and then if someone does a scrolling action, so if

382
00:22:20.440 --> 00:22:26.519
<v Speaker 2>it's like a mouse wheel or gesture or something, it

383
00:22:26.559 --> 00:22:32.279
<v Speaker 2>doesn't actually scroll anything, but it will make the the

384
00:22:32.359 --> 00:22:36.440
<v Speaker 2>image on zoom that's the word I use on zoom.

385
00:22:36.720 --> 00:22:38.799
<v Speaker 2>And then you can keep going about your business. On

386
00:22:38.799 --> 00:22:40.000
<v Speaker 2>the page, you.

387
00:22:40.039 --> 00:22:43.319
<v Speaker 1>Mentioned a few accessibility concerns and you mentioned like the

388
00:22:43.359 --> 00:22:50.880
<v Speaker 1>ability to close on ask et cetera. How did you

389
00:22:51.000 --> 00:22:55.480
<v Speaker 1>use the how did you create the model itself?

390
00:22:55.640 --> 00:22:56.400
<v Speaker 2>The model element?

391
00:22:56.519 --> 00:23:01.400
<v Speaker 1>Because we now have a dialogue element on HMO, I say, now,

392
00:23:01.480 --> 00:23:04.400
<v Speaker 1>it's been there for a very long time, but I

393
00:23:04.519 --> 00:23:08.359
<v Speaker 1>find that very few people actually use it, and a

394
00:23:08.400 --> 00:23:11.359
<v Speaker 1>lot of people just create a div and put it

395
00:23:11.400 --> 00:23:15.079
<v Speaker 1>on the as a child of the topmost element, sometimes

396
00:23:15.079 --> 00:23:18.880
<v Speaker 1>the body itself, and then they position it whatsoever. Basically

397
00:23:18.880 --> 00:23:21.960
<v Speaker 1>create a portal, right, and then you have to write

398
00:23:21.960 --> 00:23:25.119
<v Speaker 1>all those accessibility stuff yourself from scratch.

399
00:23:25.400 --> 00:23:26.519
<v Speaker 2>How is your approach?

400
00:23:26.640 --> 00:23:30.759
<v Speaker 1>Did you use the div and created all the accessibility

401
00:23:30.759 --> 00:23:34.920
<v Speaker 1>features from that or did you use a dialogue element?

402
00:23:35.839 --> 00:23:42.400
<v Speaker 2>So my initial creation used I mean, going back to

403
00:23:43.640 --> 00:23:47.440
<v Speaker 2>twenty sixteen, I wouldn't looked at the first handful of

404
00:23:47.480 --> 00:23:50.519
<v Speaker 2>commits and I was doing a full React on dot

405
00:23:50.599 --> 00:23:54.160
<v Speaker 2>render into you know, because now we have React do

406
00:23:54.279 --> 00:23:58.559
<v Speaker 2>create portal, but create portal is essentially just saying, hey, document,

407
00:23:58.599 --> 00:24:01.720
<v Speaker 2>create element div, add that dive to the body and

408
00:24:01.759 --> 00:24:05.599
<v Speaker 2>put something inside of it. So that's what I was doing.

409
00:24:05.599 --> 00:24:09.400
<v Speaker 2>But I was doing a React or sorry, React dot render.

410
00:24:09.559 --> 00:24:13.400
<v Speaker 2>This might even be this was probably before React. It

411
00:24:13.480 --> 00:24:16.079
<v Speaker 2>was just really like React dot render or React on

412
00:24:16.119 --> 00:24:18.359
<v Speaker 2>that render the ad equivalences. It was rendering a whole

413
00:24:18.440 --> 00:24:23.480
<v Speaker 2>new like React what do you call that React tree

414
00:24:24.079 --> 00:24:29.200
<v Speaker 2>in essence, like an whole new React instance. And you know,

415
00:24:29.480 --> 00:24:32.480
<v Speaker 2>over time I was I was using a div, and

416
00:24:32.519 --> 00:24:35.359
<v Speaker 2>as I got more skilled and accessibility, I said, oh, okay,

417
00:24:35.720 --> 00:24:37.559
<v Speaker 2>there's a bunch of rules here. We've got to figure

418
00:24:37.599 --> 00:24:40.519
<v Speaker 2>this out. Because if you were just using a div,

419
00:24:41.240 --> 00:24:44.599
<v Speaker 2>even if you use like you know, ari emodal true

420
00:24:44.920 --> 00:24:49.319
<v Speaker 2>and roll equals dialogue on a dive, the browser is

421
00:24:49.359 --> 00:24:54.160
<v Speaker 2>not gonna disable all of the content in the background.

422
00:24:54.200 --> 00:24:56.599
<v Speaker 2>It's not going to hide it. So you could theoretically,

423
00:24:57.160 --> 00:24:59.319
<v Speaker 2>you know, keep pressing tab and go down the screen,

424
00:24:59.519 --> 00:25:01.759
<v Speaker 2>or you could use screen reader and read the content

425
00:25:01.799 --> 00:25:07.200
<v Speaker 2>behind that, and so okay, so you've got to well,

426
00:25:07.240 --> 00:25:10.079
<v Speaker 2>back then, what you had to do was conditionally go

427
00:25:10.359 --> 00:25:15.720
<v Speaker 2>and put aria hidden on everything and tab index negative

428
00:25:15.759 --> 00:25:18.720
<v Speaker 2>one on everything else, or create what's called a tab

429
00:25:18.799 --> 00:25:22.279
<v Speaker 2>trap so that you could never tab outside of the model.

430
00:25:22.519 --> 00:25:26.359
<v Speaker 2>Maybe it would wrap around, Well, there's not really there's

431
00:25:26.400 --> 00:25:30.119
<v Speaker 2>not really anything to wrap around in this component. But anyway,

432
00:25:30.160 --> 00:25:31.720
<v Speaker 2>that was a very big headache and I didn't do

433
00:25:31.799 --> 00:25:35.880
<v Speaker 2>it right for a while. Eventually, when dialogue, when the

434
00:25:35.880 --> 00:25:41.880
<v Speaker 2>dialogue elements became, you know, baseline generally available, I refactored

435
00:25:41.880 --> 00:25:44.240
<v Speaker 2>to use that. But that comes with its own problems

436
00:25:44.279 --> 00:25:48.920
<v Speaker 2>as well. So the dialogue element comes with like a

437
00:25:48.960 --> 00:25:54.480
<v Speaker 2>placeholder overlay. It comes with its own overlay style. I

438
00:25:54.519 --> 00:25:57.000
<v Speaker 2>don't know if it's different for browser, but it comes

439
00:25:57.000 --> 00:26:02.160
<v Speaker 2>with some default browser style street So I didn't want

440
00:26:02.200 --> 00:26:05.160
<v Speaker 2>that because I wanted to animate in my background. I

441
00:26:05.160 --> 00:26:06.920
<v Speaker 2>didn't want it to be instant, so I wanted to

442
00:26:06.960 --> 00:26:10.759
<v Speaker 2>animate in the background. I also found at the time,

443
00:26:10.799 --> 00:26:13.599
<v Speaker 2>I think it's been it's improved a bit. If you

444
00:26:13.680 --> 00:26:19.359
<v Speaker 2>didn't have role equals dialogue on the dialogue element, then

445
00:26:19.880 --> 00:26:24.920
<v Speaker 2>not every browser screen reader combination would work quite like

446
00:26:25.000 --> 00:26:28.200
<v Speaker 2>you wanted it to. Same thing with having arimodal true

447
00:26:28.200 --> 00:26:30.680
<v Speaker 2>on there, but I mean you would need the rimodal

448
00:26:30.720 --> 00:26:34.680
<v Speaker 2>true anyway. But the roll equals dialogue was something that

449
00:26:35.960 --> 00:26:38.920
<v Speaker 2>needed to be added. So so I'm getting into the

450
00:26:38.960 --> 00:26:41.960
<v Speaker 2>weeds here, but I am using the dialogue element now

451
00:26:42.599 --> 00:26:45.119
<v Speaker 2>and I'm using a little bit of the of its

452
00:26:45.160 --> 00:26:49.960
<v Speaker 2>internal on close. And also I think it's called it

453
00:26:50.000 --> 00:26:55.319
<v Speaker 2>open modal or show modal, I think is what the

454
00:26:55.319 --> 00:26:58.279
<v Speaker 2>the native API is for that. But yeah, I'm using

455
00:26:58.279 --> 00:27:02.119
<v Speaker 2>a dialogue now and that you get all that stuff

456
00:27:02.119 --> 00:27:03.960
<v Speaker 2>that I just talked about being a problem. You get

457
00:27:04.359 --> 00:27:07.880
<v Speaker 2>almost all of that for free, which is great. You

458
00:27:07.920 --> 00:27:13.640
<v Speaker 2>know with the back to the native style sheet overlay

459
00:27:13.680 --> 00:27:17.079
<v Speaker 2>background color, but that is very simple. Like in the

460
00:27:17.119 --> 00:27:20.680
<v Speaker 2>CSS for the project, I just disable that and I

461
00:27:20.759 --> 00:27:24.240
<v Speaker 2>do my own sort of rendering in the component and

462
00:27:24.319 --> 00:27:26.640
<v Speaker 2>state in the component to let me know when I

463
00:27:26.680 --> 00:27:31.160
<v Speaker 2>should be animating something in and not transitioning something like

464
00:27:31.200 --> 00:27:33.839
<v Speaker 2>the background in. So you can have like a white background,

465
00:27:33.920 --> 00:27:35.839
<v Speaker 2>you can have a black background any color you want,

466
00:27:37.200 --> 00:27:40.880
<v Speaker 2>and then that should animate in and that's all customizable

467
00:27:41.079 --> 00:27:44.599
<v Speaker 2>if you want to change the CSS. Okay, a lot

468
00:27:44.599 --> 00:27:45.400
<v Speaker 2>of that is just.

469
00:27:47.880 --> 00:27:50.960
<v Speaker 1>We guess it doesn't depend a lot on React. So

470
00:27:51.519 --> 00:27:56.319
<v Speaker 1>I wonder why didn't you separate it, or maybe already did.

471
00:27:56.480 --> 00:28:01.319
<v Speaker 1>Why didn't in't you separated the core native functionalities in

472
00:28:01.359 --> 00:28:04.200
<v Speaker 1>a native lib and then you just use that in

473
00:28:04.279 --> 00:28:06.759
<v Speaker 1>the React lib because then you can also allow other

474
00:28:06.839 --> 00:28:08.759
<v Speaker 1>frameworks to do it as well.

475
00:28:08.920 --> 00:28:13.160
<v Speaker 2>So I spent a lot of time in maybe twenty

476
00:28:14.160 --> 00:28:18.160
<v Speaker 2>twenty nineteen trying to do that. So I renamed the

477
00:28:18.200 --> 00:28:22.880
<v Speaker 2>project from React Medium image Zone to just you know,

478
00:28:23.000 --> 00:28:27.039
<v Speaker 2>get hub, Slack, our peers, image zoom, and I had

479
00:28:27.079 --> 00:28:30.160
<v Speaker 2>a branch in there where I was, you know, doing

480
00:28:30.200 --> 00:28:32.640
<v Speaker 2>it as a mono rico, so I was. My plan

481
00:28:32.759 --> 00:28:38.440
<v Speaker 2>was to have a core Vanilla das library and then

482
00:28:38.640 --> 00:28:41.680
<v Speaker 2>have React and get some of my friends that know

483
00:28:41.880 --> 00:28:46.359
<v Speaker 2>view and you know, Angular and whatever to create rappers

484
00:28:46.400 --> 00:28:48.559
<v Speaker 2>for it, so then you could have packages for each one.

485
00:28:49.440 --> 00:28:51.599
<v Speaker 2>And now we've got the core functionality, which is all

486
00:28:52.440 --> 00:28:57.440
<v Speaker 2>native stuff all sorted out, and then you've got wrappers

487
00:28:57.480 --> 00:29:03.480
<v Speaker 2>for each each framework, each environment, whatever people need. That

488
00:29:03.680 --> 00:29:05.759
<v Speaker 2>was a great plan and I started doing that and

489
00:29:05.799 --> 00:29:11.000
<v Speaker 2>I thought I'd settled on an API, but it kind

490
00:29:11.000 --> 00:29:13.160
<v Speaker 2>of fizzled out. I worked on it for a couple

491
00:29:13.160 --> 00:29:16.039
<v Speaker 2>of weeks while on vacation, which was probably not how

492
00:29:16.039 --> 00:29:19.079
<v Speaker 2>I should have spent my vacation, but it you know,

493
00:29:19.880 --> 00:29:22.599
<v Speaker 2>maybe this was early twenty twenty. I forget it might

494
00:29:22.680 --> 00:29:24.559
<v Speaker 2>have been. It might have been the beginning of covid,

495
00:29:25.160 --> 00:29:29.720
<v Speaker 2>but you know that I worked on that, found an API,

496
00:29:29.880 --> 00:29:32.839
<v Speaker 2>but then I ran into issues. The code was getting

497
00:29:32.920 --> 00:29:37.039
<v Speaker 2>kind of ugly and it fell to the side, and

498
00:29:37.079 --> 00:29:39.079
<v Speaker 2>I left it for a while. I came back and

499
00:29:39.119 --> 00:29:41.440
<v Speaker 2>looked at it, and I just I wasn't satisfied. So

500
00:29:41.480 --> 00:29:42.240
<v Speaker 2>I ring in with the.

501
00:29:42.200 --> 00:29:45.519
<v Speaker 5>Project, back to React Medium Image Zoom, and what I

502
00:29:45.559 --> 00:29:49.200
<v Speaker 5>wanted to do was fix a few things, add a

503
00:29:49.240 --> 00:29:53.720
<v Speaker 5>few features, and then see where the project was and

504
00:29:54.240 --> 00:29:56.039
<v Speaker 5>if it.

505
00:29:55.279 --> 00:29:58.920
<v Speaker 2>Made sense and if I had the time. Then started

506
00:29:58.920 --> 00:30:01.480
<v Speaker 2>thinking about something else, and I started to realize that

507
00:30:01.559 --> 00:30:06.680
<v Speaker 2>I maybe just pure vanilla JS wasn't the way I

508
00:30:06.720 --> 00:30:09.039
<v Speaker 2>wanted to go, and so I kind of held off

509
00:30:09.039 --> 00:30:11.559
<v Speaker 2>on that. And I'll come back to that in just

510
00:30:11.559 --> 00:30:15.039
<v Speaker 2>a second. So what I did is I started working.

511
00:30:15.599 --> 00:30:18.839
<v Speaker 2>At the time, it was version four, and what version

512
00:30:18.839 --> 00:30:21.160
<v Speaker 2>four did is very different than what it does right now.

513
00:30:21.680 --> 00:30:23.880
<v Speaker 2>So what it does right now was kind of like

514
00:30:24.000 --> 00:30:26.839
<v Speaker 2>is builds on top of version three. But version four

515
00:30:27.799 --> 00:30:30.599
<v Speaker 2>I had this moment where I thought, wouldn't it be

516
00:30:30.680 --> 00:30:36.480
<v Speaker 2>cool if whatever someone puts inside of the Zoom components

517
00:30:36.759 --> 00:30:40.839
<v Speaker 2>we just zoomed that. It doesn't matter what it is, anything, texts,

518
00:30:42.079 --> 00:30:47.519
<v Speaker 2>you know, gives that have shapes, whatever it is. Take

519
00:30:47.839 --> 00:30:53.519
<v Speaker 2>the bounding box of that, what of that stuff that

520
00:30:53.559 --> 00:30:55.720
<v Speaker 2>is inside the zoom component, you know, a child of

521
00:30:55.720 --> 00:30:58.359
<v Speaker 2>the zoom component and just zoom that up to the top.

522
00:30:58.680 --> 00:31:01.720
<v Speaker 2>My problem, My problem with that was, well, how do

523
00:31:01.759 --> 00:31:04.400
<v Speaker 2>you have a button? Oh gosh? And so what I

524
00:31:04.440 --> 00:31:07.039
<v Speaker 2>did is I put a button that covered the entire

525
00:31:07.079 --> 00:31:11.039
<v Speaker 2>image so that when you click on it, you're clicking

526
00:31:11.039 --> 00:31:14.319
<v Speaker 2>on a button. But then there was there was. I

527
00:31:14.799 --> 00:31:16.359
<v Speaker 2>just had a bunch of issues that I ran into,

528
00:31:16.400 --> 00:31:20.200
<v Speaker 2>and I wanted to directify these for this version five thing.

529
00:31:20.240 --> 00:31:23.559
<v Speaker 2>And I wanted to also do something that I don't

530
00:31:23.559 --> 00:31:27.759
<v Speaker 2>know if anyone else has done, which is support every

531
00:31:27.880 --> 00:31:34.519
<v Speaker 2>type of support every type of image that you can

532
00:31:34.559 --> 00:31:38.240
<v Speaker 2>think of, which is, like I said before, images with

533
00:31:39.240 --> 00:31:46.200
<v Speaker 2>object fit, object position loading equals lazy doing. Uh was

534
00:31:46.240 --> 00:31:50.160
<v Speaker 2>it a ACNC loading for it as well? You know

535
00:31:50.240 --> 00:31:53.240
<v Speaker 2>divz that have a background image, background size, background position,

536
00:31:54.000 --> 00:31:57.160
<v Speaker 2>you know, making sure that any picture with whatever the

537
00:31:57.240 --> 00:32:02.599
<v Speaker 2>source is, figures, SPGs, you name it. I wanted all

538
00:32:02.680 --> 00:32:05.720
<v Speaker 2>of these things to work because I wanted this for

539
00:32:05.839 --> 00:32:08.920
<v Speaker 2>myself and I've seen other people asking about that in

540
00:32:08.920 --> 00:32:13.759
<v Speaker 2>the past. So instead of just doing the vanilla thing,

541
00:32:14.519 --> 00:32:19.400
<v Speaker 2>I readd this over a long period of time. In

542
00:32:19.559 --> 00:32:23.200
<v Speaker 2>version five, I spent many nights. Unfortunately, you know, my

543
00:32:23.240 --> 00:32:25.559
<v Speaker 2>wife will My wife said she'll listen to this, even

544
00:32:25.599 --> 00:32:30.240
<v Speaker 2>though she doesn't care about programming. But I spent many nights,

545
00:32:30.279 --> 00:32:32.759
<v Speaker 2>you know, after she went to bed on the couch,

546
00:32:32.960 --> 00:32:36.079
<v Speaker 2>losing sleep, getting way less than I should, trying to

547
00:32:36.079 --> 00:32:40.480
<v Speaker 2>figure out the math behind Okay, if I haven't image element,

548
00:32:41.720 --> 00:32:46.119
<v Speaker 2>but I've got object fit contained, and the image is

549
00:32:46.200 --> 00:32:51.240
<v Speaker 2>technically it looks like it's scaled down, and you know,

550
00:32:51.599 --> 00:32:52.759
<v Speaker 2>like if you were to look at it in the

551
00:32:52.759 --> 00:32:56.680
<v Speaker 2>Web Inspector, you would see, you know, like a blue

552
00:32:57.319 --> 00:33:00.839
<v Speaker 2>box around the entire image element, but the actual thing

553
00:33:00.920 --> 00:33:04.920
<v Speaker 2>you see is smaller within that. So I spent a

554
00:33:04.920 --> 00:33:07.519
<v Speaker 2>lot of time trying to figure out the exact math

555
00:33:07.720 --> 00:33:12.519
<v Speaker 2>that browsers use to scale that down based on a

556
00:33:12.559 --> 00:33:15.200
<v Speaker 2>lot of different things, based on the image, the native

557
00:33:15.359 --> 00:33:17.200
<v Speaker 2>sort of that was the natural width and height of

558
00:33:17.240 --> 00:33:20.200
<v Speaker 2>the image. How much space does it have to work with?

559
00:33:21.200 --> 00:33:24.400
<v Speaker 2>What is the object position? You know, object position can

560
00:33:24.400 --> 00:33:27.559
<v Speaker 2>be pixels, it can be twenty five percent, seventy five percent,

561
00:33:28.119 --> 00:33:32.359
<v Speaker 2>you name it. There's all these different scenarios. How do

562
00:33:32.440 --> 00:33:35.279
<v Speaker 2>we put an image on top of that? In the

563
00:33:35.279 --> 00:33:37.440
<v Speaker 2>moddle to scale that up and make it look like

564
00:33:37.480 --> 00:33:40.960
<v Speaker 2>it's one seamless experience where you just click and it

565
00:33:41.000 --> 00:33:43.559
<v Speaker 2>gets big and click again and it gets small. So

566
00:33:44.359 --> 00:33:45.960
<v Speaker 2>spent a lot of time on that, and that's where

567
00:33:45.960 --> 00:33:48.960
<v Speaker 2>I got to dispersion five. And now that things have

568
00:33:49.079 --> 00:33:52.440
<v Speaker 2>kind of slowed down, I've got most of the features

569
00:33:52.599 --> 00:33:55.759
<v Speaker 2>that I need. Some still some bugs here and there,

570
00:33:57.119 --> 00:33:59.599
<v Speaker 2>but most of the features that I need. That's where

571
00:33:59.599 --> 00:34:03.960
<v Speaker 2>I think is it good spot to start to stop

572
00:34:04.000 --> 00:34:07.440
<v Speaker 2>and say, do I have the time to think about

573
00:34:07.559 --> 00:34:11.000
<v Speaker 2>making this maybe into the web component? So yeah, I'm

574
00:34:11.000 --> 00:34:14.519
<v Speaker 2>not there yet, but I have two young you know,

575
00:34:14.599 --> 00:34:17.400
<v Speaker 2>two young daughters, and so I don't really have that time.

576
00:34:17.639 --> 00:34:21.280
<v Speaker 2>And I have many other interests as well, for open

577
00:34:21.320 --> 00:34:23.639
<v Speaker 2>source things and little tools that I want to exist.

578
00:34:23.760 --> 00:34:25.000
<v Speaker 2>But that's where I am now.

579
00:34:25.440 --> 00:34:27.159
<v Speaker 1>Yeah, that does make a lot of sense. I was

580
00:34:27.199 --> 00:34:32.000
<v Speaker 1>actually asking it because I was personally interested because I

581
00:34:32.079 --> 00:34:35.920
<v Speaker 1>use Angular a lot, and I really liked the library

582
00:34:35.920 --> 00:34:37.320
<v Speaker 1>that you create them, and I think it's a it's

583
00:34:37.360 --> 00:34:38.079
<v Speaker 1>a great project.

584
00:34:38.960 --> 00:34:40.239
<v Speaker 2>It's like that.

585
00:34:40.280 --> 00:34:42.760
<v Speaker 1>Thing that you can easily reuse.

586
00:34:42.320 --> 00:34:45.119
<v Speaker 2>For other projects whatever, whatever.

587
00:34:45.000 --> 00:34:47.599
<v Speaker 1>You have a place where you are showing images.

588
00:34:47.960 --> 00:34:50.400
<v Speaker 2>I think most blocks could benefit from it.

589
00:34:50.760 --> 00:34:55.599
<v Speaker 1>Honestly, they all could and should have this functionality. It's

590
00:34:55.679 --> 00:34:59.960
<v Speaker 1>a really nice functionality. So I would love being a

591
00:35:00.079 --> 00:35:02.159
<v Speaker 1>which you use this in other projects that are not

592
00:35:02.280 --> 00:35:07.039
<v Speaker 1>React based, Yeah, I completely understand your your context, and honestly,

593
00:35:07.119 --> 00:35:09.800
<v Speaker 1>just the fact that this exists in React, there's already

594
00:35:09.800 --> 00:35:13.039
<v Speaker 1>a blessing on its own, so nothing to complain on that.

595
00:35:14.159 --> 00:35:17.559
<v Speaker 1>Crazy to see to understand the complexity of it, right,

596
00:35:17.599 --> 00:35:19.880
<v Speaker 1>because once you look at it, you think, okay, like

597
00:35:20.079 --> 00:35:22.639
<v Speaker 1>I would be able to do it real quick, like

598
00:35:22.880 --> 00:35:26.199
<v Speaker 1>a day's work, but then you see, oh no, there

599
00:35:26.199 --> 00:35:32.000
<v Speaker 1>are so many details, like, oh my god, really hard

600
00:35:32.000 --> 00:35:35.960
<v Speaker 1>to do that, really well. I also noticed, on the

601
00:35:36.480 --> 00:35:40.480
<v Speaker 1>at least on the first storybook example, that the image

602
00:35:40.519 --> 00:35:45.119
<v Speaker 1>already starts with the WIT fully expanded, And do you

603
00:35:45.559 --> 00:35:48.280
<v Speaker 1>have a way to customize that so that it actually

604
00:35:48.320 --> 00:35:51.719
<v Speaker 1>starts with the WIT that is being shown and then

605
00:35:51.760 --> 00:35:54.000
<v Speaker 1>it expands from it, you know, like if you have

606
00:35:54.039 --> 00:35:57.599
<v Speaker 1>an example where you're just showing a little window of it,

607
00:35:57.880 --> 00:36:00.119
<v Speaker 1>then it starts with that, and as it grows, that

608
00:36:00.199 --> 00:36:02.440
<v Speaker 1>expends the rest of the image, and once it closes,

609
00:36:02.480 --> 00:36:03.639
<v Speaker 1>it closes the same way.

610
00:36:04.400 --> 00:36:09.800
<v Speaker 2>Yeah, kind of, And it's it's not one hundred percent seamless.

611
00:36:10.400 --> 00:36:13.800
<v Speaker 2>But so in the examples, there's a div image gallery

612
00:36:14.119 --> 00:36:18.760
<v Speaker 2>where you can change the aspect ratio And this is

613
00:36:18.800 --> 00:36:21.480
<v Speaker 2>on the storybook examples, and so you can change an

614
00:36:21.480 --> 00:36:25.400
<v Speaker 2>athlete ratio from sixteen nine to four x three and

615
00:36:25.480 --> 00:36:30.880
<v Speaker 2>that changes the shape of the you know, of the

616
00:36:31.239 --> 00:36:34.639
<v Speaker 2>div that the image is a background image of. And

617
00:36:35.679 --> 00:36:40.239
<v Speaker 2>what the way that it works is it figures out, okay,

618
00:36:40.280 --> 00:36:42.960
<v Speaker 2>is it background size cover, is it background size contained?

619
00:36:43.119 --> 00:36:48.320
<v Speaker 2>You name it? And then when it does the like

620
00:36:48.400 --> 00:36:52.519
<v Speaker 2>consuming for a background uh background cover, Well, what it'll

621
00:36:52.519 --> 00:36:55.880
<v Speaker 2>try to do is say, okay, is the image itself

622
00:36:56.840 --> 00:37:00.679
<v Speaker 2>bigger than its container? If so, when we put that,

623
00:37:01.519 --> 00:37:04.320
<v Speaker 2>when we put that, imagine a model on top, try

624
00:37:04.360 --> 00:37:06.880
<v Speaker 2>to take that into account to represent exactly what the

625
00:37:06.960 --> 00:37:09.559
<v Speaker 2>image in OA. So I don't have a way right

626
00:37:09.559 --> 00:37:15.840
<v Speaker 2>now of unfurling like a flag unfurls, unfurling the edges

627
00:37:16.639 --> 00:37:18.840
<v Speaker 2>as it zooms to get bigger. What it does right

628
00:37:18.880 --> 00:37:22.159
<v Speaker 2>now is it puts the image on top of where

629
00:37:22.159 --> 00:37:28.159
<v Speaker 2>that one is at the original sorry, with the original

630
00:37:29.039 --> 00:37:32.480
<v Speaker 2>images like full dimensions. So let's say you've got a

631
00:37:32.639 --> 00:37:37.039
<v Speaker 2>really really really tall image, but it's in a square

632
00:37:37.480 --> 00:37:42.719
<v Speaker 2>and with background size cover, it will mean sorry, you

633
00:37:42.760 --> 00:37:47.519
<v Speaker 2>might hear children in the background. Now, you know, instead

634
00:37:47.519 --> 00:37:54.840
<v Speaker 2>of just zooming that, instead of just zooming that you know,

635
00:37:54.960 --> 00:37:57.440
<v Speaker 2>displayed box that's on the screen, which is what I

636
00:37:57.480 --> 00:38:00.519
<v Speaker 2>did in version four. What it does it will zoom

637
00:38:00.599 --> 00:38:02.840
<v Speaker 2>the original image and make it try to make it

638
00:38:02.840 --> 00:38:05.199
<v Speaker 2>look seamless. But what it does is it will if

639
00:38:05.239 --> 00:38:07.880
<v Speaker 2>you've got that little box, it'll put the image on

640
00:38:07.960 --> 00:38:10.400
<v Speaker 2>top of that box and then zoom it. If I

641
00:38:10.400 --> 00:38:13.800
<v Speaker 2>had a way to sort of like I said, unfuril

642
00:38:14.199 --> 00:38:17.920
<v Speaker 2>or like slowly reveal part of the image, then like

643
00:38:18.039 --> 00:38:21.960
<v Speaker 2>I would, I would totally accept contributions for that to

644
00:38:22.039 --> 00:38:25.280
<v Speaker 2>make it seem like it's just growing out from the box.

645
00:38:25.320 --> 00:38:29.360
<v Speaker 2>That would be great. Alas I don't have the I

646
00:38:29.360 --> 00:38:31.559
<v Speaker 2>don't have a good idea for how to do that.

647
00:38:33.760 --> 00:38:43.920
<v Speaker 1>Reliably, gotcha, Yeah it does. It's way more complex when

648
00:38:44.000 --> 00:38:48.800
<v Speaker 1>you when you say it all out with all the details.

649
00:38:50.280 --> 00:38:54.199
<v Speaker 2>Yeah, okay, oh yeah. Many nights were lost to to

650
00:38:54.480 --> 00:38:57.320
<v Speaker 2>just going cross I trying to figure out, you know,

651
00:38:57.559 --> 00:39:00.920
<v Speaker 2>the the right calculation to make this MAW sense for

652
00:39:01.199 --> 00:39:06.039
<v Speaker 2>every use case possible, which by the way, not everyone

653
00:39:06.119 --> 00:39:08.559
<v Speaker 2>has that use case. And so another thing that would

654
00:39:08.599 --> 00:39:11.199
<v Speaker 2>be good long term for this project is like right now,

655
00:39:11.760 --> 00:39:16.159
<v Speaker 2>I think bundled and menified in jesip it's like four

656
00:39:16.199 --> 00:39:19.519
<v Speaker 2>point eighty nine kilabytes. But that's to me is still

657
00:39:19.519 --> 00:39:24.880
<v Speaker 2>too large. I would prefer to potentially have, well, I

658
00:39:24.880 --> 00:39:27.320
<v Speaker 2>guess that's that's the whole package. That's the whole package.

659
00:39:27.599 --> 00:39:33.039
<v Speaker 2>I would prefer to have different components that include increasing

660
00:39:33.079 --> 00:39:36.599
<v Speaker 2>amounts of complexity, so that when you know you only

661
00:39:36.599 --> 00:39:39.679
<v Speaker 2>have one base case, that's maybe I have a regular image,

662
00:39:40.159 --> 00:39:43.320
<v Speaker 2>nothing special. I only want the code for that, so

663
00:39:43.360 --> 00:39:48.079
<v Speaker 2>that tree shaking would eventually tree shake away everything that's

664
00:39:48.159 --> 00:39:50.639
<v Speaker 2>that's not being used, so that you get the bare minimum,

665
00:39:51.760 --> 00:39:54.599
<v Speaker 2>the bare minimum stuff that you need right now, the

666
00:39:55.280 --> 00:40:00.400
<v Speaker 2>logic for figuring out all of the magic that goes

667
00:40:00.440 --> 00:40:02.960
<v Speaker 2>into you know, like I said, the objects fit the

668
00:40:02.960 --> 00:40:07.079
<v Speaker 2>background images. All of that is mixed in with the

669
00:40:07.199 --> 00:40:10.800
<v Speaker 2>other code to try to figure out, Okay, what kind

670
00:40:10.840 --> 00:40:13.159
<v Speaker 2>of image is it, how big do I make it

671
00:40:13.199 --> 00:40:16.000
<v Speaker 2>on the screen, what other styles so I need to apply?

672
00:40:16.079 --> 00:40:18.199
<v Speaker 2>What kind of transformal kind of scale? All of that

673
00:40:18.280 --> 00:40:21.239
<v Speaker 2>is new together. I think it'd be really need eventually

674
00:40:21.320 --> 00:40:26.920
<v Speaker 2>to separate all that so that people's actual bundle size

675
00:40:26.920 --> 00:40:29.719
<v Speaker 2>and impact would just be less. I wouldn't. I wouldn't

676
00:40:29.760 --> 00:40:32.599
<v Speaker 2>do those as like separate packages. I feel like that's

677
00:40:32.639 --> 00:40:36.440
<v Speaker 2>a bit much, But if I could tree shake out everything,

678
00:40:36.519 --> 00:40:37.280
<v Speaker 2>that would be awesome.

679
00:40:38.000 --> 00:40:45.000
<v Speaker 1>Gotcha, gotcha? Okay, all right, dude, I'm really enjoying this

680
00:40:45.079 --> 00:40:48.159
<v Speaker 1>conversation honestly, Like I am very curious about this, and

681
00:40:48.199 --> 00:40:52.159
<v Speaker 1>I'm liking the intricacies of how you got to But

682
00:40:52.639 --> 00:40:57.400
<v Speaker 1>I realize that we have been talking for more than

683
00:40:57.440 --> 00:41:03.559
<v Speaker 1>forty minutes already, so I apologize the audience. I think

684
00:41:04.320 --> 00:41:07.159
<v Speaker 1>you should maybe start wrapping up. Is there anything that

685
00:41:07.199 --> 00:41:10.280
<v Speaker 1>you'd like to say before we start wrapping.

686
00:41:10.039 --> 00:41:12.679
<v Speaker 2>Up in general about the about the project?

687
00:41:13.360 --> 00:41:15.440
<v Speaker 1>Yeah, it could be about the project, like anything maybe

688
00:41:15.440 --> 00:41:17.559
<v Speaker 1>that I didn't ask or we didn't cover, but that

689
00:41:17.599 --> 00:41:20.760
<v Speaker 1>you feel is interesting enough they should be mentioned. Uh.

690
00:41:20.840 --> 00:41:23.079
<v Speaker 2>I did just remember that I didn't answer your question

691
00:41:23.199 --> 00:41:27.679
<v Speaker 2>about the transitions and stuff. I could answer that real quickly.

692
00:41:29.199 --> 00:41:32.800
<v Speaker 2>I don't know how that would work accessibility wise. That's

693
00:41:32.840 --> 00:41:37.599
<v Speaker 2>my only concern. I would love, for, like any for

694
00:41:37.679 --> 00:41:40.800
<v Speaker 2>anything I make, for there to be some sort of

695
00:41:40.920 --> 00:41:43.679
<v Speaker 2>native way to do that so that so that my

696
00:41:43.679 --> 00:41:46.159
<v Speaker 2>project doesn't have to exist anymore. I think that that's

697
00:41:46.159 --> 00:41:49.039
<v Speaker 2>not the end goal for some of my all of

698
00:41:49.039 --> 00:41:51.320
<v Speaker 2>my works, is I want it to be made so

699
00:41:51.360 --> 00:41:55.480
<v Speaker 2>that it's not needed anymore, because you know, maintaining something

700
00:41:56.599 --> 00:41:59.599
<v Speaker 2>and it takes effort, it takes time. You know, it's

701
00:41:59.639 --> 00:42:03.800
<v Speaker 2>an it's extra and extra dependency that someone has to

702
00:42:04.480 --> 00:42:07.559
<v Speaker 2>maintain themselves and say, oh did Robert break something? Oh

703
00:42:07.559 --> 00:42:09.280
<v Speaker 2>do I actually want this upgrade? You know, it's a

704
00:42:09.320 --> 00:42:13.280
<v Speaker 2>lot of work overall. So if the if the browsers

705
00:42:13.280 --> 00:42:15.519
<v Speaker 2>could come up with something, I doubt they I thought

706
00:42:15.519 --> 00:42:17.360
<v Speaker 2>they would for this, But if they had something that

707
00:42:17.400 --> 00:42:21.079
<v Speaker 2>would be great, if few transitions could solve this easily,

708
00:42:21.239 --> 00:42:25.000
<v Speaker 2>I would happily, happily, you know, deprecate this and say

709
00:42:25.000 --> 00:42:27.800
<v Speaker 2>it's in maintenance mode, but we're not. I don't know

710
00:42:27.800 --> 00:42:30.519
<v Speaker 2>if it's very yet. Okay, yeah, that doesn't make sense.

711
00:42:31.199 --> 00:42:34.199
<v Speaker 1>I think that's a that's a good end go. When

712
00:42:34.199 --> 00:42:39.679
<v Speaker 1>you're creating something that you want to be flexible engineeric enough,

713
00:42:40.559 --> 00:42:43.360
<v Speaker 1>it's going to be tough for browsers to actually implement

714
00:42:43.440 --> 00:42:45.760
<v Speaker 1>it with the love of customization. That's like it's a

715
00:42:45.840 --> 00:42:50.559
<v Speaker 1>very specific feature, but who knows. They have implemented a

716
00:42:50.599 --> 00:42:52.800
<v Speaker 1>few niche stuff in the past that.

717
00:42:53.400 --> 00:42:57.239
<v Speaker 2>Maybe it turns out. Yeah, man, okay, awesome.

718
00:42:57.360 --> 00:43:01.239
<v Speaker 1>And Peter, do you have any questions, notes, anything else

719
00:43:01.280 --> 00:43:02.920
<v Speaker 1>you want to say before start wrapping?

720
00:43:03.000 --> 00:43:03.119
<v Speaker 2>Up.

721
00:43:03.559 --> 00:43:07.320
<v Speaker 3>Yeah, so I think my question of the work components

722
00:43:07.400 --> 00:43:11.920
<v Speaker 3>side too. I think I probably wanted to get an

723
00:43:11.920 --> 00:43:15.239
<v Speaker 3>idea of why you actually use a web component, the

724
00:43:15.280 --> 00:43:17.760
<v Speaker 3>aspect of it's maybe just for you as maybe for

725
00:43:17.880 --> 00:43:20.159
<v Speaker 3>people in the wonder worlds components.

726
00:43:20.960 --> 00:43:25.880
<v Speaker 2>How did that? Yeah, I think so. The reason I

727
00:43:25.920 --> 00:43:27.719
<v Speaker 2>want to go with I think I want to go

728
00:43:27.760 --> 00:43:31.719
<v Speaker 2>with a web component is I I hold this you know,

729
00:43:31.800 --> 00:43:36.119
<v Speaker 2>potentially spicy idea close to my heart. That is, the

730
00:43:36.159 --> 00:43:39.920
<v Speaker 2>further away you get from a core technology, the harder

731
00:43:40.000 --> 00:43:44.960
<v Speaker 2>something is to maintain. And with a web component, what

732
00:43:45.079 --> 00:43:47.559
<v Speaker 2>I see there is something that is you know, native

733
00:43:47.840 --> 00:43:51.400
<v Speaker 2>to the web. You know, it's it's it's gotten a

734
00:43:51.440 --> 00:43:54.079
<v Speaker 2>lot more support in the last couple of years. I

735
00:43:54.079 --> 00:43:56.960
<v Speaker 2>think that if you think about web components not in

736
00:43:57.000 --> 00:43:58.960
<v Speaker 2>the same way as you do a React component, where

737
00:43:58.960 --> 00:44:02.280
<v Speaker 2>you've got you know, the tree of components that have

738
00:44:02.360 --> 00:44:04.599
<v Speaker 2>render cycles and everything, but if you think of them

739
00:44:04.639 --> 00:44:09.280
<v Speaker 2>as a decorator, something that you know, really enables progressive enhancement,

740
00:44:10.239 --> 00:44:13.719
<v Speaker 2>then I think this is something that fits perfectly there

741
00:44:13.960 --> 00:44:17.519
<v Speaker 2>where I've got an image, if I'm rendering something, rendering something,

742
00:44:17.760 --> 00:44:20.079
<v Speaker 2>you know, on the server, I don't need all this

743
00:44:20.239 --> 00:44:23.480
<v Speaker 2>extra stuff. I don't need all this extra stuff around

744
00:44:23.599 --> 00:44:26.599
<v Speaker 2>but you know, clicking and zooming and all that. It's

745
00:44:26.639 --> 00:44:30.920
<v Speaker 2>just an image. And if someone's got JavaScript disabled, which

746
00:44:31.079 --> 00:44:33.320
<v Speaker 2>like I do for by default on every site I

747
00:44:33.360 --> 00:44:35.960
<v Speaker 2>go to, I enable it if the site doesn't work.

748
00:44:36.400 --> 00:44:39.599
<v Speaker 2>But for people that have JavaScript disabled, like, they shouldn't

749
00:44:39.599 --> 00:44:43.639
<v Speaker 2>be you know, impacted negatively. So they should be able

750
00:44:43.679 --> 00:44:47.760
<v Speaker 2>to use my imageym library or form or whatever you know,

751
00:44:47.840 --> 00:44:50.360
<v Speaker 2>without extra passle. And so if I use this, if

752
00:44:50.360 --> 00:44:52.679
<v Speaker 2>I make this into a web component, it can be

753
00:44:52.760 --> 00:44:55.920
<v Speaker 2>something that you know, people fetch however they want through

754
00:44:56.000 --> 00:45:00.239
<v Speaker 2>m PM, through a CDN whatever, And if they up

755
00:45:00.280 --> 00:45:03.800
<v Speaker 2>their image in this web component, then they'll get that

756
00:45:04.000 --> 00:45:08.159
<v Speaker 2>extra decoration, that extra functionality, but it's something that's not

757
00:45:08.320 --> 00:45:11.679
<v Speaker 2>critical to how their do. Like, I don't want to

758
00:45:11.679 --> 00:45:15.519
<v Speaker 2>make it, make a change and block somebody's you know,

759
00:45:15.679 --> 00:45:19.440
<v Speaker 2>next build, or give them warnings or errors because you know,

760
00:45:19.440 --> 00:45:23.800
<v Speaker 2>I included a document or a window reference, you know,

761
00:45:23.840 --> 00:45:26.079
<v Speaker 2>that kind of thing. So I'd rather just be able

762
00:45:26.079 --> 00:45:29.119
<v Speaker 2>to be applied to any framework anywhere. That's why I'm

763
00:45:29.119 --> 00:45:32.119
<v Speaker 2>thinking about component. Yeah, I think it would.

764
00:45:31.960 --> 00:45:37.199
<v Speaker 1>Be nice to have them, all right, men, So let's

765
00:45:37.280 --> 00:45:39.440
<v Speaker 1>do a quick round of promos and then we can

766
00:45:40.039 --> 00:45:43.880
<v Speaker 1>wrap it up. So you are a very humble person

767
00:45:44.000 --> 00:45:46.280
<v Speaker 1>given all the work that you have put in out like,

768
00:45:47.079 --> 00:45:52.719
<v Speaker 1>but I do think that maybe there could be something

769
00:45:52.760 --> 00:45:54.800
<v Speaker 1>that we can promote from from what you're doing, at

770
00:45:54.880 --> 00:45:57.639
<v Speaker 1>least your website. I think you have some really valuable

771
00:45:57.639 --> 00:46:01.119
<v Speaker 1>content there. But yeah, is there anything that you'd like

772
00:46:01.159 --> 00:46:03.599
<v Speaker 1>to promote to the audience, Maybe some material for an

773
00:46:03.599 --> 00:46:06.119
<v Speaker 1>empty go look at on their own time.

774
00:46:06.639 --> 00:46:10.320
<v Speaker 2>Yeah. Sure, So I've got to my website. The short

775
00:46:10.480 --> 00:46:15.159
<v Speaker 2>ur l for it. It's just RWP dot I m and

776
00:46:15.519 --> 00:46:19.079
<v Speaker 2>or Robert W. Pierce dot com. And you know, I

777
00:46:19.079 --> 00:46:22.119
<v Speaker 2>I've got a number of a number of blog posts

778
00:46:22.119 --> 00:46:26.239
<v Speaker 2>on there, from you know, Haskell to functional programming and

779
00:46:26.320 --> 00:46:32.119
<v Speaker 2>JavaScript with Randa and you know, rewriting things like you know,

780
00:46:32.239 --> 00:46:35.280
<v Speaker 2>like map functions and you know, like like a rate

781
00:46:35.320 --> 00:46:37.559
<v Speaker 2>up prototype dot map and then going just off the

782
00:46:37.639 --> 00:46:40.559
<v Speaker 2>rails with that. But most of the content I've written

783
00:46:40.599 --> 00:46:42.880
<v Speaker 2>on there is because it's something that I've explained or

784
00:46:42.920 --> 00:46:47.400
<v Speaker 2>had or worked too, you know, help level somebody else

785
00:46:47.760 --> 00:46:49.800
<v Speaker 2>up on. And I thought, oh this, maybe not just

786
00:46:49.800 --> 00:46:52.320
<v Speaker 2>write this down because I've explained this five times. So

787
00:46:52.480 --> 00:46:59.840
<v Speaker 2>if somebody listening to this has you know, React, typescript, JavaScript, Bash,

788
00:47:00.159 --> 00:47:04.199
<v Speaker 2>you know Haskell specifically Hackle, the static side generator, which

789
00:47:04.239 --> 00:47:07.159
<v Speaker 2>my side is built with. If people have any you know,

790
00:47:07.280 --> 00:47:08.599
<v Speaker 2>take a look at my side and say, well, I

791
00:47:09.079 --> 00:47:11.960
<v Speaker 2>would love to know more about X. I have no clue,

792
00:47:12.239 --> 00:47:16.000
<v Speaker 2>send me an email, you know, contact me somehow and

793
00:47:16.280 --> 00:47:19.000
<v Speaker 2>I will. I'll write something up and we can make

794
00:47:19.079 --> 00:47:21.920
<v Speaker 2>a blog post about it and you can read about

795
00:47:21.960 --> 00:47:23.719
<v Speaker 2>it and we can share it with the world. So

796
00:47:24.039 --> 00:47:28.440
<v Speaker 2>I'm I'm happy to share whatever I can and you know,

797
00:47:28.519 --> 00:47:30.719
<v Speaker 2>learn a few things along the way myself. Awesome.

798
00:47:30.920 --> 00:47:34.280
<v Speaker 1>Awesome, all right, yeah, and I do think there are

799
00:47:34.280 --> 00:47:37.760
<v Speaker 1>a lot of interesting content out there that you created

800
00:47:37.800 --> 00:47:42.199
<v Speaker 1>to would definitely recommend the audience to go check out

801
00:47:42.239 --> 00:47:46.280
<v Speaker 1>some of your other posts. Whereas for me, I'm just

802
00:47:46.320 --> 00:47:51.639
<v Speaker 1>gonna mention the two companies that produce the show. Again,

803
00:47:51.719 --> 00:47:54.960
<v Speaker 1>So if you're interested in all the subjects besides React,

804
00:47:55.000 --> 00:47:57.480
<v Speaker 1>Top and depths that has a lot of other podcasts

805
00:47:57.519 --> 00:48:00.320
<v Speaker 1>as well. I host myself a podcast about a are

806
00:48:00.599 --> 00:48:02.840
<v Speaker 1>but there are others as well, So definitely check out

807
00:48:03.639 --> 00:48:05.840
<v Speaker 1>top and depths if you want to explore some other

808
00:48:07.000 --> 00:48:11.760
<v Speaker 1>technology topics. And if you are a company or you

809
00:48:11.800 --> 00:48:15.440
<v Speaker 1>know someone that is looking for staff augmentation or outsourcing

810
00:48:15.519 --> 00:48:19.400
<v Speaker 1>particular project, would definitely recommend checking out on Void. Is

811
00:48:19.519 --> 00:48:23.679
<v Speaker 1>you and v O I d like on the opposite

812
00:48:23.960 --> 00:48:28.159
<v Speaker 1>Void dot com. They have this really interesting business model

813
00:48:28.199 --> 00:48:32.280
<v Speaker 1>that is very very client from client friendly, Like clients

814
00:48:32.280 --> 00:48:34.760
<v Speaker 1>don't have to pay by the hour, which tends to

815
00:48:34.800 --> 00:48:38.280
<v Speaker 1>be a huge problem for them because things usually go

816
00:48:38.519 --> 00:48:42.519
<v Speaker 1>over time and over budget and then they lose their predictability.

817
00:48:43.119 --> 00:48:45.360
<v Speaker 2>But yeah, do definitely check out.

818
00:48:45.159 --> 00:48:47.639
<v Speaker 1>On Void dot com if you're if you know someone

819
00:48:47.679 --> 00:48:51.480
<v Speaker 1>that has the problems with traditional agency models and it's

820
00:48:51.519 --> 00:48:53.079
<v Speaker 1>looking to explore something different.

821
00:48:53.639 --> 00:48:56.039
<v Speaker 2>So yeah, to me, it's going to be just that,

822
00:48:57.239 --> 00:48:57.960
<v Speaker 2>how about you, Peter?

823
00:48:58.519 --> 00:49:01.360
<v Speaker 3>Also for me more see more, I just want to

824
00:49:01.360 --> 00:49:05.920
<v Speaker 3>piece the course on what company since that was the

825
00:49:05.960 --> 00:49:07.880
<v Speaker 3>idea of behind the packy as we are.

826
00:49:08.440 --> 00:49:09.639
<v Speaker 2>I think my the.

827
00:49:09.639 --> 00:49:15.320
<v Speaker 3>Course is about the building and like like simple projectism,

828
00:49:15.440 --> 00:49:18.719
<v Speaker 3>it's loose leads, So yeah, I think it goes worre

829
00:49:18.800 --> 00:49:22.119
<v Speaker 3>checking out since yeah, I think work Companies was just

830
00:49:22.199 --> 00:49:25.719
<v Speaker 3>in this party. It's really really hopeful for the users

831
00:49:25.719 --> 00:49:28.639
<v Speaker 3>actually have an idea of what the components. I'll usually

832
00:49:28.679 --> 00:49:30.639
<v Speaker 3>help in developments.

833
00:49:30.760 --> 00:49:37.000
<v Speaker 1>Yeah, awesome, awesome, all right, Uh well, Robert, thank you

834
00:49:37.079 --> 00:49:41.559
<v Speaker 1>so much for taking the time to be here. We

835
00:49:43.519 --> 00:49:46.320
<v Speaker 1>I mean, I really appreciate you taking up the time

836
00:49:46.360 --> 00:49:47.400
<v Speaker 1>and the end of the day, you have a lot

837
00:49:47.440 --> 00:49:49.880
<v Speaker 1>of other contents, so I feel free to hit me

838
00:49:49.960 --> 00:49:53.079
<v Speaker 1>up whenever you want and we can schedule another one.

839
00:49:53.440 --> 00:49:55.400
<v Speaker 2>I will. I will look you up.

840
00:49:55.320 --> 00:49:57.840
<v Speaker 1>On LinkedIn and connect with you, so I feel free

841
00:49:57.920 --> 00:50:00.360
<v Speaker 1>to reach me out there if you want to hop again.

842
00:50:01.559 --> 00:50:04.519
<v Speaker 1>And yeah, man, really appreciate at the beginning you said

843
00:50:04.519 --> 00:50:06.760
<v Speaker 1>this was your first podcast. I gotta say you handle

844
00:50:06.840 --> 00:50:10.239
<v Speaker 1>it very well. I really like your genetics. I think

845
00:50:10.280 --> 00:50:13.119
<v Speaker 1>you you're a great at this man, So yeah, do

846
00:50:13.639 --> 00:50:14.639
<v Speaker 1>check out some others.

847
00:50:14.639 --> 00:50:16.519
<v Speaker 2>I think you have the you have a.

848
00:50:17.159 --> 00:50:22.320
<v Speaker 1>Way for this kind of of content and for the audience.

849
00:50:22.400 --> 00:50:24.960
<v Speaker 2>Thank you so much for sticking with us for so long.

850
00:50:25.159 --> 00:50:28.000
<v Speaker 2>This was definitely a long one. I hope you learned

851
00:50:28.119 --> 00:50:30.840
<v Speaker 2>a lot from it. I know I did. Thanks a lot.
