WEBVTT
1
00:00:05.080 --> 00:00:08.759
Hello, everybody, Welcome to another thrilling episode of JavaScript Jabber.
2
00:00:08.800 --> 00:00:10.759
I am Steve Edwards, the host with the face for
3
00:00:10.919 --> 00:00:13.240
radio and the voice for being of mine. But I'm
4
00:00:13.279 --> 00:00:16.719
still your host. I'm flying solo today on the panel.
5
00:00:16.800 --> 00:00:20.000
Dan is on vacation. Chuck has this name thing called work,
6
00:00:20.399 --> 00:00:22.320
you know that gets in the way of the podcast,
7
00:00:22.440 --> 00:00:26.600
And so you're suck with me today. But a very
8
00:00:26.640 --> 00:00:29.879
special gift, mister Anton stoychef, how are you doing? Anton?
9
00:00:30.199 --> 00:00:33.079
Pretty good? It pretty good? Thank you good?
10
00:00:33.159 --> 00:00:35.079
It's uh oh yeah. I forgot to give weather update.
11
00:00:35.640 --> 00:00:37.880
The great here in Portland. The summer has been awesome
12
00:00:37.960 --> 00:00:40.640
up until this week, and starting yesterday the rain came in,
13
00:00:40.759 --> 00:00:44.600
so it sucks. I miss my sunshine. And Dan always
14
00:00:44.600 --> 00:00:46.359
gives his update about how it's hot and dry and
15
00:00:46.359 --> 00:00:47.960
Tel Aviv, and I'm so jealous.
16
00:00:48.359 --> 00:00:51.679
I have these kind of updates very much often. I
17
00:00:51.719 --> 00:00:54.200
work with Esa ellis in there constantly. I was a
18
00:00:54.280 --> 00:00:56.840
nice day at the beach. It was a fantastic day today.
19
00:00:56.840 --> 00:01:00.399
The water was perfect and it was a freezing kind.
20
00:01:00.240 --> 00:01:07.200
Of over here right right, So before we get started,
21
00:01:07.239 --> 00:01:09.799
why don't you just give us the background on who
22
00:01:09.840 --> 00:01:12.480
you are, what you do where you work, why people
23
00:01:12.519 --> 00:01:13.760
should give you money, etcetera.
24
00:01:14.280 --> 00:01:19.680
Absolutely, so again thank you for introducing me, Amanton. I
25
00:01:19.719 --> 00:01:23.599
am currently working at Joppo as a core platform team
26
00:01:23.879 --> 00:01:27.040
in front time Infrastructure officially name right, so it's a
27
00:01:27.120 --> 00:01:30.719
team serving the whole company and other developers within it.
28
00:01:31.480 --> 00:01:34.359
I've been doing this kind of thing front time JavaScript
29
00:01:34.760 --> 00:01:36.879
whatever you want to call it, like JavaScript on a
30
00:01:37.000 --> 00:01:40.959
spectors let's call it. Even touched in the good old
31
00:01:41.040 --> 00:01:44.439
days a PHP kind of a templating world, the websites
32
00:01:44.519 --> 00:01:48.040
and web press and ages ago boy, yes, like I
33
00:01:48.079 --> 00:01:51.000
don't know, twenty years ago or something like this. I'm
34
00:01:51.040 --> 00:01:55.200
not sure. So from is support until today kind of
35
00:01:55.239 --> 00:01:59.640
the world. That's me And I've naturally had like the
36
00:01:59.680 --> 00:02:03.519
design or interest into the nitty gritty stuff front end,
37
00:02:03.840 --> 00:02:07.319
How do we get there? How does the production work?
38
00:02:07.400 --> 00:02:09.919
Like what do we do to make it super fast?
39
00:02:09.919 --> 00:02:12.319
But how does that piece work? How do CD ends work?
40
00:02:12.639 --> 00:02:15.520
And I kind of naturally ended up doing this kind
41
00:02:15.520 --> 00:02:20.400
of thing, which is built optimizations, tooling, optimizing the tools,
42
00:02:20.400 --> 00:02:23.800
making sure they work, and making sure upgrades work. How
43
00:02:23.800 --> 00:02:26.520
do we release? How do we upgrade? And this is
44
00:02:26.560 --> 00:02:28.800
the sort of thing that the team does. Of course,
45
00:02:28.840 --> 00:02:32.759
alongside core stuff like design system. I think most companies
46
00:02:32.800 --> 00:02:37.039
have that, like a core team, Like most largish companies
47
00:02:37.080 --> 00:02:39.319
have that, like a core team that kind of serves
48
00:02:39.360 --> 00:02:41.759
the rest of the company and tries to make the
49
00:02:41.800 --> 00:02:46.000
developer experience either better, faster, whatever you want to call it.
50
00:02:47.639 --> 00:02:49.240
That well, I guess that depends on the size of
51
00:02:49.240 --> 00:02:49.800
the company.
52
00:02:50.080 --> 00:02:51.080
Sure, sure, sure sure.
53
00:02:52.319 --> 00:02:55.039
My previous place, I was on developer team, and I
54
00:02:55.080 --> 00:02:57.800
was also doing a lot of the core stuff and
55
00:02:58.000 --> 00:03:00.879
you know, tools and infrastructure to you sort of the
56
00:03:00.960 --> 00:03:04.159
many hats type of things. So I suppose when you
57
00:03:04.159 --> 00:03:05.479
get to a larger company and you can have a
58
00:03:05.520 --> 00:03:09.039
separate team just for that versus you know, the developers itself,
59
00:03:09.080 --> 00:03:10.000
and that would be nice.
60
00:03:10.360 --> 00:03:12.919
This is like a natural revolution. I think in previous company,
61
00:03:12.919 --> 00:03:15.960
I was like, ah, but who who is responssible for that? Okay,
62
00:03:16.039 --> 00:03:18.199
I will be the responsible person for that. So it
63
00:03:18.360 --> 00:03:22.199
naturally evolved finally finding a place that has attention to
64
00:03:22.240 --> 00:03:25.439
detail enough to like and kind of treasures and have
65
00:03:25.680 --> 00:03:29.240
maybe legacy enough to pay attention to, like, Okay, we
66
00:03:29.360 --> 00:03:32.479
need that team to kind of improve the situation. That's
67
00:03:32.520 --> 00:03:34.960
usually what I think what happens like or from the
68
00:03:35.000 --> 00:03:37.759
beginning somewhere. They already experienced that in a previous place,
69
00:03:38.159 --> 00:03:39.960
so they set it up from the core from the
70
00:03:40.000 --> 00:03:40.319
get go.
71
00:03:42.360 --> 00:03:44.800
Yeah, so let's go back real quick. So you mentioned PHP.
72
00:03:44.960 --> 00:03:49.439
I came a bit very similar to you. Oh, he
73
00:03:49.680 --> 00:03:51.159
started with PHP and I still do a lot of
74
00:03:51.159 --> 00:03:55.080
PHP with Laravelle okay, which I love to work with
75
00:03:55.159 --> 00:03:56.199
La Belle and you and a nurse.
76
00:03:56.280 --> 00:03:58.280
By the way, I was one of the first few
77
00:03:58.319 --> 00:04:00.680
people like a lot of version. I don't know how much,
78
00:04:00.719 --> 00:04:04.439
like zero points something. It was, Yeah, it was. I
79
00:04:04.439 --> 00:04:08.199
think it grew explosively, like I did not expect lave
80
00:04:08.400 --> 00:04:10.479
to become such a I remember the days of zend
81
00:04:10.560 --> 00:04:15.080
framework and yes and the such I don't know, like, well, Ei, there's.
82
00:04:15.000 --> 00:04:20.560
A let's see. I remember nuke PHP okay, kke php,
83
00:04:20.720 --> 00:04:25.360
which is still around PHP nuke pH what that was?
84
00:04:25.519 --> 00:04:27.600
I did some of my first websites. I just didn't
85
00:04:27.600 --> 00:04:29.759
plane PHP.
86
00:04:29.639 --> 00:04:36.120
No SAM SAM framework, no templating, just like combining HTMLA
87
00:04:36.720 --> 00:04:37.560
oh god.
88
00:04:37.680 --> 00:04:40.279
Well then you're talking about the templating. That just brings
89
00:04:40.319 --> 00:04:44.600
back nightmares because I was at a few years ago,
90
00:04:44.800 --> 00:04:46.560
the last the last couple of years that I was
91
00:04:46.560 --> 00:04:48.319
in the droupile world. So I lived in the droupile
92
00:04:48.360 --> 00:04:51.040
world for you know, from the That was what first
93
00:04:51.040 --> 00:04:53.079
got me in well developments druple because I got tired
94
00:04:53.079 --> 00:04:54.759
of writing my own thing like many people, and so
95
00:04:54.800 --> 00:04:56.720
I found the CMS and I lived in that world
96
00:04:56.720 --> 00:05:02.879
professionally up until probably about twenty ninety. But I was
97
00:05:02.920 --> 00:05:09.439
at a very huge, large multinational corporation and we were
98
00:05:09.480 --> 00:05:15.439
converting an old website based on Microsoft Server two thousand
99
00:05:15.519 --> 00:05:19.639
and classic ASP, not SP don that Classic ASP to
100
00:05:19.800 --> 00:05:24.959
Druple seven with the patch and solar and some other things.
101
00:05:25.480 --> 00:05:28.319
But they had decided, because of the whole fear about
102
00:05:28.439 --> 00:05:30.560
SEO and jobascript frameworks back in the day, to stick
103
00:05:30.600 --> 00:05:33.519
with jupo on the front end and the built in
104
00:05:33.560 --> 00:05:36.879
PHP template at the time, and I got tasked with
105
00:05:38.360 --> 00:05:42.480
caching and I still have nightmares about that to this day.
106
00:05:42.560 --> 00:05:48.319
About cashing with PHP templating, I mean, cashing.
107
00:05:48.160 --> 00:05:50.720
On its own, even if you don't combine it with
108
00:05:50.759 --> 00:05:54.199
like a CMS, is a mess because it only takes
109
00:05:54.240 --> 00:05:58.279
one person to just forget something or like not to
110
00:05:58.399 --> 00:06:01.639
have like guardrails and do something wrong and then you
111
00:06:01.639 --> 00:06:03.560
get the productionich right.
112
00:06:03.879 --> 00:06:06.199
Well, you know they say that the two hardest things
113
00:06:06.279 --> 00:06:10.079
in computer programming are naming things cash and validation off
114
00:06:10.120 --> 00:06:14.319
by one by one errors, you know. So so yeah,
115
00:06:14.360 --> 00:06:16.439
I can. I can botch that anyway I can. And
116
00:06:16.480 --> 00:06:18.839
then you talk about it six and I can remember,
117
00:06:19.680 --> 00:06:25.000
you know, designers would literally charge extra because they had
118
00:06:25.040 --> 00:06:28.600
to accommodate for I E. Six abnormalities in their CSS.
119
00:06:28.839 --> 00:06:29.279
Oh yeah.
120
00:06:29.879 --> 00:06:32.120
And then when it finally died, it was at a
121
00:06:32.199 --> 00:06:36.720
Drupal con in New Orleans in like twenty thirteen twenty fourteen,
122
00:06:36.839 --> 00:06:39.600
literally had a parade celebrating the death of eighty six
123
00:06:39.639 --> 00:06:43.120
and micro Microsoft finally said, Okay, we're not supporting it anymore.
124
00:06:43.519 --> 00:06:45.720
But the next thing was I E. Eleven. Like that was
125
00:06:45.759 --> 00:06:48.079
like a you know, like there was a phases of
126
00:06:48.120 --> 00:06:51.160
I E. That people were like dreadful about.
127
00:06:51.360 --> 00:06:53.680
Yeah, until you got to edgyum, you know, or you
128
00:06:53.720 --> 00:06:57.319
know that's whatever you call the when they finally changed engines.
129
00:06:57.519 --> 00:06:58.959
Yeah, chromium based eight.
130
00:06:59.519 --> 00:07:02.959
Yeah. So yeah, yeah, it sounds like we've been through
131
00:07:02.959 --> 00:07:05.279
some of the same same wars.
132
00:07:05.360 --> 00:07:08.360
I think it's kind of like edge based edge based,
133
00:07:08.800 --> 00:07:11.759
So once you start web development early on, you can't
134
00:07:11.759 --> 00:07:15.160
even inevitably going through these trenches, which I find to
135
00:07:15.199 --> 00:07:18.279
be super helpful, Like I love to have gone through this.
136
00:07:18.439 --> 00:07:21.240
I like, I don't think of them like, oh, wasted
137
00:07:21.279 --> 00:07:23.680
my life or something like this. I think I've gained
138
00:07:24.279 --> 00:07:29.279
super useful knowledge even for today's work, where like asking AI, like,
139
00:07:29.319 --> 00:07:31.600
oh can you do this for me? Yes? Thanks?
140
00:07:32.319 --> 00:07:35.439
Right, Remember the days of figuring it out?
141
00:07:36.800 --> 00:07:39.279
I mean they're not gone. I can I can spend
142
00:07:39.360 --> 00:07:42.759
like two days talking about my day to day configuring
143
00:07:43.079 --> 00:07:46.560
CD and stuff and like going through documentation, asking KI
144
00:07:46.639 --> 00:07:49.240
together with me and not being able to figure out stuff.
145
00:07:49.279 --> 00:07:53.079
So I mean it's not gone, It's still there, right.
146
00:07:53.160 --> 00:07:55.800
I had one of my favorite interviews I did on
147
00:07:55.839 --> 00:07:59.079
another podcast, Views on Views with Taylor well Blaara Bell,
148
00:08:00.120 --> 00:08:04.480
and he was asking us about our thoughts on where
149
00:08:05.040 --> 00:08:07.959
Larravelle should go in terms of just focusing on PHP
150
00:08:08.120 --> 00:08:10.560
back end or focusing on the front end framework. And
151
00:08:11.319 --> 00:08:14.079
we talked about the pendulum switch, where you know, when
152
00:08:14.120 --> 00:08:16.240
you and I started, you learned from the back end.
153
00:08:16.240 --> 00:08:18.000
You started with a lampstack and you had to know
154
00:08:18.240 --> 00:08:20.160
the back end and stuff, and then you learn the
155
00:08:20.240 --> 00:08:23.040
jobscript in front of that, and then you've got to
156
00:08:23.040 --> 00:08:25.079
today where a lot of people get into well web
157
00:08:25.120 --> 00:08:27.439
development from the front end from the job script frameworks
158
00:08:27.439 --> 00:08:32.840
you know, Angular, use Felt, React React predominantly just because
159
00:08:32.840 --> 00:08:35.480
it's so dominant anymore. And then they don't know the
160
00:08:35.519 --> 00:08:37.279
back end. So now they got to learn the back end,
161
00:08:37.320 --> 00:08:39.720
and how do you know, accommodate for that? So it's
162
00:08:39.759 --> 00:08:42.960
real it's been an interesting pendulum watching the pendulums when
163
00:08:43.200 --> 00:08:44.240
back and forth. For sure.
164
00:08:45.879 --> 00:08:48.159
Yeah, I mean I'm just thinking ancessary at the moment
165
00:08:48.240 --> 00:08:51.200
because this is like my daily driver the last few months.
166
00:08:51.200 --> 00:08:55.759
But anyway, yeah, yes, sorry, okay, So let's get into
167
00:08:55.759 --> 00:08:57.840
what we're here to talk about. Then, So you worked
168
00:08:57.840 --> 00:09:01.080
for the companies, how do you say? Yeah?
169
00:09:01.600 --> 00:09:04.679
Yeah, yeah, it's like Israeli a US company you PO,
170
00:09:05.039 --> 00:09:06.919
so that they're kind of big in the e commerce,
171
00:09:07.600 --> 00:09:08.200
right y O.
172
00:09:08.320 --> 00:09:11.240
T p O. In case you're you're you're looking for
173
00:09:11.399 --> 00:09:12.080
dot com?
174
00:09:12.200 --> 00:09:18.320
Yeah cool, yes, in there we open source something a
175
00:09:18.320 --> 00:09:21.320
few months ago and it is something we use actually
176
00:09:21.360 --> 00:09:28.360
internally to manage let's say the migrain of upgrading or
177
00:09:28.399 --> 00:09:33.720
maintaining tool link working and let's say up to date. Uh.
178
00:09:34.159 --> 00:09:37.759
And of course have quality quality gates some people call
179
00:09:37.799 --> 00:09:40.960
them code checks. Usually you can see them on things
180
00:09:41.000 --> 00:09:45.159
like GitHub on your prs and basically guarding you and
181
00:09:45.279 --> 00:09:48.320
helping you by the way, especially in the AI world
182
00:09:48.399 --> 00:09:51.519
where someone needs to put the brakes on on some
183
00:09:51.639 --> 00:09:54.799
of the code or let's get generated. So it's kind
184
00:09:54.799 --> 00:09:58.360
of a double important to have some code checks. Of course,
185
00:09:58.399 --> 00:10:01.960
you can wing it aka vibe and just see what's up.
186
00:10:02.039 --> 00:10:05.000
And then I don't know, I ask another AI to
187
00:10:05.039 --> 00:10:08.759
maybe refractory, Sure, but I.
188
00:10:08.720 --> 00:10:10.559
Think refactor ais are you?
189
00:10:11.000 --> 00:10:12.679
I think so? I think maybe there is a future
190
00:10:12.679 --> 00:10:16.320
where we don't care about quality. We just use the
191
00:10:16.360 --> 00:10:19.879
model as of today, and then think about two years
192
00:10:19.919 --> 00:10:22.039
in the future, the model will be better, so they
193
00:10:22.080 --> 00:10:24.320
will generate something better and we ask them to just
194
00:10:24.360 --> 00:10:26.919
improve the code base. You know, there is a world maybe.
195
00:10:27.600 --> 00:10:29.080
Well. The problem with that, though, is the AI is
196
00:10:29.120 --> 00:10:30.919
training itself on the old stuff.
197
00:10:31.399 --> 00:10:35.240
Yes, yes, yes, yes, on itself maybe. Yeah. So we
198
00:10:35.879 --> 00:10:39.600
wanted to kind of enforce this and do this in
199
00:10:39.639 --> 00:10:42.399
a company that has been around for more than ten years.
200
00:10:42.799 --> 00:10:46.240
And I think it's natural if you have projects for
201
00:10:46.279 --> 00:10:48.000
more than ten years or even five years, that you
202
00:10:48.200 --> 00:10:51.799
kind of accumulate legacy. And I maybe in this podcast
203
00:10:51.799 --> 00:10:54.399
you talked about it, and maybe I've read it somewhere,
204
00:10:54.440 --> 00:10:57.519
but legacy is not naturally a bad thing. Legacy means
205
00:10:57.559 --> 00:11:03.000
you have something working right, true, but this thing that
206
00:11:03.120 --> 00:11:07.159
is working is no longer performance, is no longer maintainable.
207
00:11:07.840 --> 00:11:10.279
The tools that you use can no longer work with it.
208
00:11:10.720 --> 00:11:12.960
If you want to upgrade one tool, you're kind of
209
00:11:13.000 --> 00:11:16.519
stuck in this Nightmarrey scenario where you're like, oh, I
210
00:11:16.600 --> 00:11:19.519
need to upgrade my e is lint. It's not connected
211
00:11:19.559 --> 00:11:21.960
to my code. I want upgrade it, but the new
212
00:11:22.039 --> 00:11:24.919
version requires a new version of no JS. Oh okay,
213
00:11:25.120 --> 00:11:27.639
So I need to upgrade no JS. Oh okay. Then
214
00:11:27.639 --> 00:11:30.080
I need to pay all my other packages because they
215
00:11:30.240 --> 00:11:34.120
also need they need to be compatible with a new version.
216
00:11:34.279 --> 00:11:38.440
So there's a vicious cycle of upgrades, basically because everything
217
00:11:38.519 --> 00:11:41.279
kind of depends on each other and they're all grouped
218
00:11:41.320 --> 00:11:43.879
into one thing. Even though if you think about it,
219
00:11:44.320 --> 00:11:47.159
most of the things that are not really connected to
220
00:11:47.200 --> 00:11:50.840
each other, like es lint doesn't use your built stuff
221
00:11:51.039 --> 00:11:55.559
like things like es lint, like code checks, yeah, unit testing,
222
00:11:55.919 --> 00:11:59.080
it doesn't use your actual built unless you were talking
223
00:11:59.120 --> 00:12:02.519
about VAT and v test, which kind of shares the
224
00:12:02.519 --> 00:12:06.480
same build mechanism. But let's let's say we're talking about
225
00:12:06.519 --> 00:12:10.879
web pack or turbo pack, uh, and just they do
226
00:12:11.159 --> 00:12:14.320
their own thing, like unit tests are built differently than
227
00:12:14.360 --> 00:12:17.200
the web back, so they actually live in total isolation,
228
00:12:17.399 --> 00:12:21.200
like into two different universes where just do this its
229
00:12:21.200 --> 00:12:23.919
own thing with your source code, and then web back
230
00:12:24.039 --> 00:12:26.639
or whatever tool you choose do their thing with your
231
00:12:26.679 --> 00:12:30.279
source code. So in theory they are absolutely isolated. But
232
00:12:30.559 --> 00:12:33.559
for historic reasons, we kind of put them in the
233
00:12:33.600 --> 00:12:37.440
same package, put them in the same bag of dependencies, like, oh,
234
00:12:37.519 --> 00:12:40.240
let's put web back, let's put just let's put the
235
00:12:40.320 --> 00:12:42.559
way Yeah, go ahead, Wait a minute.
236
00:12:42.679 --> 00:12:45.799
Those are two different things, though, I mean web Pack
237
00:12:45.840 --> 00:12:48.120
and just you're doing two different things, just as you're
238
00:12:48.240 --> 00:12:50.519
you know, you're unit testing, your code testing, right, Webpack
239
00:12:50.639 --> 00:12:52.480
is more concerned with the bundling.
240
00:12:52.080 --> 00:12:54.519
And absolutely and absolutely taking apart.
241
00:12:54.639 --> 00:12:57.440
So I guess I'm confused as to I mean, it's
242
00:12:57.440 --> 00:12:59.720
like you're complaining two different things there, I.
243
00:12:59.679 --> 00:13:03.480
Know, And I think this is where I haven't explained
244
00:13:03.480 --> 00:13:05.720
it probably well to have been more clear, but this
245
00:13:05.840 --> 00:13:08.039
is my point. There are absolutely two different things. They
246
00:13:08.080 --> 00:13:10.919
have two different purposes and they have like two different
247
00:13:11.039 --> 00:13:14.559
universes of building. I think we're on the same page here, right,
248
00:13:14.639 --> 00:13:17.320
Like web Pack doing is own thing and just but
249
00:13:17.519 --> 00:13:20.240
what do you usually do? You have one package jacent,
250
00:13:21.000 --> 00:13:23.279
and all of the gest related stuff and all of
251
00:13:23.279 --> 00:13:25.600
the web pack related stuff they live in the same
252
00:13:25.639 --> 00:13:29.840
package jacent, aka in the same bag of dependencies called
253
00:13:30.399 --> 00:13:34.039
the giant node modules, right like you you kind of
254
00:13:34.039 --> 00:13:37.879
combine them together. And there's a weird scenario where let's
255
00:13:37.879 --> 00:13:40.679
say you have you found a bug and it's a
256
00:13:40.759 --> 00:13:43.600
really nasty bug in jest. That just a scenario. It
257
00:13:43.600 --> 00:13:45.879
could be any other too, right, it could be slaint.
258
00:13:45.919 --> 00:13:49.879
It could be let's say, even an end to end
259
00:13:50.000 --> 00:13:52.720
testing tool. Right, but you found a problem and in
260
00:13:52.759 --> 00:13:55.799
one of great the two only like you don't want
261
00:13:55.799 --> 00:13:58.519
to deal right now. You have other priorities, right, you
262
00:13:58.600 --> 00:14:01.240
have to do a new future or do some actual
263
00:14:01.279 --> 00:14:04.039
product work. But you want to fix this bug. And
264
00:14:04.080 --> 00:14:07.279
the bug is fixed in the new version of jest. Okay,
265
00:14:07.639 --> 00:14:10.639
is how I get ingested. This is about ingest itself,
266
00:14:10.799 --> 00:14:13.759
ingest itself absolutely clarify. But you found it. Oh wait,
267
00:14:13.799 --> 00:14:16.279
in three versions in the future, this bug is no
268
00:14:16.360 --> 00:14:21.000
longer there. It's fixed. So your options here is like, Okay,
269
00:14:21.159 --> 00:14:24.159
I can maybe live with this bug and document it
270
00:14:24.279 --> 00:14:27.000
very well and just try to stay away from it
271
00:14:28.159 --> 00:14:33.080
or try to upgrade JEST. And this is where I'm
272
00:14:33.080 --> 00:14:35.000
trying to say, there is an actual problem for me.
273
00:14:35.120 --> 00:14:39.240
It might have. It's like a dependency management. If everything
274
00:14:39.320 --> 00:14:41.960
lives in the same bag and you want to upgrade EST,
275
00:14:42.840 --> 00:14:45.279
just we'll tell you. Wait, you want to upgrade from
276
00:14:45.759 --> 00:14:49.200
version I don't know five to version eight. Okay, but
277
00:14:49.279 --> 00:14:52.600
I need a new note dress. I need no Dress
278
00:14:52.840 --> 00:14:56.879
twenty seven, let's say twenty four. Okay, this is I
279
00:14:56.879 --> 00:15:01.919
think the LTS version twenty four. But then when back
280
00:15:01.919 --> 00:15:04.879
will tell you, hey, okay, you're graded JEST and no Jess,
281
00:15:05.720 --> 00:15:09.559
but I'm not working with this no Jazz version like sorry, no,
282
00:15:10.200 --> 00:15:12.519
or even worse, you build two links like let's say
283
00:15:13.000 --> 00:15:15.799
you're not a React world, you're Angular world or something else.
284
00:15:16.559 --> 00:15:19.519
Most of those even React nowadays with the React compiler
285
00:15:19.639 --> 00:15:22.399
or something was code. They actually have a thing that
286
00:15:22.600 --> 00:15:26.240
runs together with your build. An Angular whole thing is
287
00:15:26.320 --> 00:15:29.320
that they actually control the build. They have a compiler,
288
00:15:29.360 --> 00:15:33.879
Anglar compiler, right, So imagine this also tells you, hey,
289
00:15:34.000 --> 00:15:36.399
I also don't work with the new no Jess. Figure
290
00:15:36.440 --> 00:15:39.080
something out, figure something out. I am not going to
291
00:15:39.159 --> 00:15:42.759
work with this version. And then you end up okay,
292
00:15:42.840 --> 00:15:45.000
so I need to upgrade. Also, not only just I
293
00:15:45.120 --> 00:15:47.279
only wanted to jest. I only wanted to cread this
294
00:15:47.440 --> 00:15:50.240
thing because there was a bug. But now suddenly I
295
00:15:50.320 --> 00:15:53.159
need to upgrade the entire framework. And guess what, when
296
00:15:53.200 --> 00:15:55.600
you great the entire framework, you need to refractor all
297
00:15:55.639 --> 00:15:59.600
your code because there's probably breaking changes. Right, You're probably
298
00:15:59.639 --> 00:16:02.919
a grade two versions in the future. So now you
299
00:16:03.039 --> 00:16:05.000
end up in this situation where are you either Oh,
300
00:16:05.080 --> 00:16:08.159
I cannot upgrade. I'm stuck. I have to live with
301
00:16:08.279 --> 00:16:11.360
whatever I have today, or you have to upgrade everything,
302
00:16:11.960 --> 00:16:15.039
like you have to upgrade all your tools, all your
303
00:16:15.080 --> 00:16:18.320
framework related stuff, all your run time dependencies. Maybe maybe not,
304
00:16:18.840 --> 00:16:22.039
but let's let's say framework at least, right and refractor.
305
00:16:23.000 --> 00:16:25.200
So I'm not sure about you, but I find that
306
00:16:25.519 --> 00:16:28.440
very kind of a scary moment because this is what
307
00:16:28.720 --> 00:16:32.159
defines kind of the depth of a code base. You're
308
00:16:32.159 --> 00:16:35.159
you're kind of stuck and you cannot upgrade it. It's
309
00:16:35.200 --> 00:16:37.960
too much work to upgrade it, or it's it's kind
310
00:16:38.000 --> 00:16:41.080
of an equal to a rewrite, because you have to
311
00:16:41.159 --> 00:16:43.279
upgrade like ten versions in the future or five versions
312
00:16:43.320 --> 00:16:47.279
in the future. So the effort of upgrading is almost
313
00:16:47.360 --> 00:16:50.000
equal to the effect of like let's start something new,
314
00:16:50.200 --> 00:16:53.639
something small, as something performant, and let's gradually release it.
315
00:16:54.559 --> 00:16:57.679
Well, I guess it depends on the size of your project.
316
00:16:58.799 --> 00:17:00.519
I mean it's a lot of project. Yeah, you know,
317
00:17:00.879 --> 00:17:03.720
larger project that's not even a possibility. You know, you
318
00:17:03.799 --> 00:17:05.039
gotta do what you gotta do.
319
00:17:05.440 --> 00:17:05.680
Yeah.
320
00:17:05.839 --> 00:17:09.440
I ran it out with Lara Bell you know, on
321
00:17:09.519 --> 00:17:12.400
the back and just because I was tasked with upgrading
322
00:17:12.440 --> 00:17:14.759
from Larra Belt eleven to Laravelt twelve and my boss
323
00:17:14.920 --> 00:17:17.680
was like, day one, Larrabelle twelve is up, let's do it.
324
00:17:17.799 --> 00:17:20.920
I'm like, okay, I'm running into all kinds of dependency
325
00:17:20.920 --> 00:17:25.880
issues for the dependencies have not upgraded to, you know,
326
00:17:26.000 --> 00:17:28.240
to be able to handle Laaravelt twelve. And so you're
327
00:17:28.599 --> 00:17:32.640
either looking at patches or you're waiting or I'm nothing.
328
00:17:32.680 --> 00:17:35.640
By the way, I'm not sure if it's somebody's watching listen,
329
00:17:35.720 --> 00:17:38.200
but I'm heavily noting here because this is it.
330
00:17:38.839 --> 00:17:39.640
You can't upgrade.
331
00:17:39.680 --> 00:17:43.720
You're kind of in a moment of shit. Oh I'm sorry,
332
00:17:44.279 --> 00:17:47.759
but like I can't move. I'm stuck with whatever I have,
333
00:17:48.079 --> 00:17:50.920
so I need to make it work or start a
334
00:17:51.000 --> 00:17:53.119
new thing. But as you said, you can't start a
335
00:17:53.200 --> 00:17:57.240
new thing every time you get stuck, right, Okay, So
336
00:17:57.279 --> 00:18:00.759
I'm gonna offer an alternative to this world it were
337
00:18:00.759 --> 00:18:03.680
talked about the typical scenario where all of your bag
338
00:18:03.759 --> 00:18:06.440
of dependencies you can put in any language here by
339
00:18:06.480 --> 00:18:09.880
the way, like Laravel, like it's all the dependencies, Python
340
00:18:09.960 --> 00:18:13.400
with all the dependencies. But here the open source that
341
00:18:13.440 --> 00:18:17.119
I'm talking about breakproof dot depth, which is just a
342
00:18:17.200 --> 00:18:23.519
gidab repositor readirects there basically offer the following concept. Okay,
343
00:18:24.079 --> 00:18:27.440
in the JavaScript ward and the JavaScript world of dependencies, right,
344
00:18:28.319 --> 00:18:31.279
what we are used to is this bag of dependencies
345
00:18:31.400 --> 00:18:36.000
not modus. Okay, but what if we can isolate each
346
00:18:36.160 --> 00:18:40.319
tool with its own dependencies and its own node jazz version,
347
00:18:40.759 --> 00:18:45.200
separate from the everything else but still be able to
348
00:18:45.279 --> 00:18:50.720
work together. Okay. So let's say typescript or Jest has
349
00:18:50.799 --> 00:18:55.039
its own list of just plugins, just configuration, right, and
350
00:18:55.319 --> 00:18:58.839
specific note version, and I can only upgrade the note
351
00:18:58.920 --> 00:19:02.240
version for Jest, and I can only upgrade the Jest dependencies,
352
00:19:03.039 --> 00:19:05.319
and this does not affect the node version for any
353
00:19:05.359 --> 00:19:07.519
of me any of the other dependencies that are heavy
354
00:19:07.599 --> 00:19:11.640
my project no matter whatever they are. How does that sound?
355
00:19:14.039 --> 00:19:16.359
I can already I already have a few questions running
356
00:19:16.400 --> 00:19:19.000
through my head here about how you go that, But
357
00:19:19.559 --> 00:19:22.960
I'm hereous well, I mean, just obviously do you want
358
00:19:23.119 --> 00:19:26.000
does that mean you have multiple note versions running concurrently
359
00:19:26.119 --> 00:19:29.279
somehow or how do you you know? You're saying, Okay,
360
00:19:29.319 --> 00:19:31.920
I can upgrade this dependency from this version not to
361
00:19:32.000 --> 00:19:33.599
twenty four. Maybe this one still has to be in
362
00:19:33.680 --> 00:19:36.079
twenty two for instance. How you recofy that? But I'm
363
00:19:36.119 --> 00:19:37.079
assuming you'll get to that.
364
00:19:38.079 --> 00:19:40.839
Absolutely it did, But I think this is useful, Like
365
00:19:40.880 --> 00:19:43.279
if this is your first question, super vialent question, by
366
00:19:43.319 --> 00:19:45.359
the way, and there is an answer as you as
367
00:19:45.440 --> 00:19:49.880
you guessed, yes, this means multiple no jailed versions, right,
368
00:19:50.440 --> 00:19:53.640
and maybe immediately you have an interfere of like oh
369
00:19:53.720 --> 00:19:57.160
my god, like I have to maintain multiple versions of
370
00:19:57.319 --> 00:20:00.440
no jenis right, But maybe you can actually limit that,
371
00:20:00.599 --> 00:20:02.599
like don't you don't need to have all the versions
372
00:20:02.640 --> 00:20:06.119
of notices. You don't need to have like fourteen, sixteen, eighteen,
373
00:20:06.359 --> 00:20:08.160
twenty twenty two, twenty four. You can have like a
374
00:20:08.319 --> 00:20:12.000
white list you have like, okay, I support this twenty
375
00:20:12.279 --> 00:20:15.519
twenty eight. That's it, Like three white listed ones, right,
376
00:20:17.000 --> 00:20:21.039
And this is where we come into the repository. Why
377
00:20:21.119 --> 00:20:23.319
is this open source, like I reposed, this is just
378
00:20:23.359 --> 00:20:26.359
a template for repository. And something we mentioned before we
379
00:20:26.440 --> 00:20:31.759
started recording is mono ripples, right, And there are many
380
00:20:31.880 --> 00:20:34.559
tools for mono ripples as a whole. Like if you
381
00:20:35.240 --> 00:20:39.240
start like research for mono repols, everything will come up,
382
00:20:39.359 --> 00:20:43.759
like there's RUSH, there's NX, there's turbo ripple, I think,
383
00:20:44.400 --> 00:20:46.119
and all of them are kind of helping you with
384
00:20:46.240 --> 00:20:51.039
mono ripples. And we went through them with the team,
385
00:20:51.480 --> 00:20:53.640
and there was one that kind of popped up which
386
00:20:53.680 --> 00:20:58.880
is actually alternative to NPM, and it's called PMPM. It
387
00:20:59.200 --> 00:21:02.519
is popular, like, oh, this is I discovered VMPM. Let
388
00:21:02.599 --> 00:21:04.160
me tell you about it. No, I know, I know,
389
00:21:04.279 --> 00:21:08.519
it's kind of popular. It Actually many people don't realize
390
00:21:08.599 --> 00:21:11.440
or at least I found many developers I work with not.
391
00:21:11.559 --> 00:21:15.599
Actually I realized that other tools like NX and other
392
00:21:15.720 --> 00:21:18.319
tools like to go pack under the hood, they actually
393
00:21:18.400 --> 00:21:21.920
use PMPM or they advise you to use PMPM, so
394
00:21:22.079 --> 00:21:26.519
they're an abstraction on top of PMPM. So you don't
395
00:21:26.599 --> 00:21:29.559
have to only learn the tool if you like it
396
00:21:29.720 --> 00:21:31.960
or like NX or turble pack, but you also kind
397
00:21:32.000 --> 00:21:34.559
of need to know PMPM because underneath this is what
398
00:21:34.720 --> 00:21:37.000
it's working. Right, So if you get a problem or
399
00:21:37.039 --> 00:21:38.880
if you have a specific need, you kind of have
400
00:21:38.960 --> 00:21:39.279
to know it.
401
00:21:40.039 --> 00:21:42.559
Well, isn't that sort of like in order to view
402
00:21:42.839 --> 00:21:47.799
you really sort of need to understand JavaScript, have PHP right,
403
00:21:48.400 --> 00:21:50.400
So right, real quick, real quick, before we got too far,
404
00:21:50.599 --> 00:21:52.920
can I always like to define terms for those who
405
00:21:53.279 --> 00:21:55.759
might not know. Can we define what a modo repo
406
00:21:55.920 --> 00:21:59.359
is and give us an example of working mono repo.
407
00:22:00.480 --> 00:22:06.240
Absolutely, mono riple is a get other kind of repository.
408
00:22:06.279 --> 00:22:10.680
But I'm guessing nowadays git repository that is not holding
409
00:22:10.759 --> 00:22:14.559
only one project, but it actually have multiple projects in it,
410
00:22:15.119 --> 00:22:19.319
each isolated usually in its own directory, and each of
411
00:22:19.440 --> 00:22:23.359
them have their own set of dependencies defined. This is
412
00:22:24.039 --> 00:22:26.039
I would say, the definition of a mono repole. And
413
00:22:26.160 --> 00:22:28.519
you can work only in one of them, but they
414
00:22:28.559 --> 00:22:31.960
are in the same repository, so everything is kind of connected.
415
00:22:32.400 --> 00:22:34.200
One of the perks may be one of the main
416
00:22:34.319 --> 00:22:36.519
perks of the mono repo that you can use other
417
00:22:36.640 --> 00:22:42.400
packages within the repo together without going to the whole
418
00:22:42.440 --> 00:22:45.359
process of let me publish that, let me update the
419
00:22:45.480 --> 00:22:47.440
versions on all the other packages, et ceter So you
420
00:22:47.519 --> 00:22:49.680
can directly kind of depend on other packages in the
421
00:22:49.720 --> 00:22:52.640
same repository. That is mono ripole in my mind.
422
00:22:54.680 --> 00:22:58.640
Okay, okay, so if I so you could so far
423
00:22:58.720 --> 00:23:02.599
like a company you know, could have different applications, say
424
00:23:02.599 --> 00:23:06.519
they've got a view app versus angular app versus whatever.
425
00:23:06.920 --> 00:23:09.960
The developers can work in the same repo, but only
426
00:23:10.000 --> 00:23:13.480
on their projects and only impact. Yeah, I mean so when,
427
00:23:13.720 --> 00:23:15.680
so how does that work? So when you're creating a branch, right,
428
00:23:15.759 --> 00:23:18.519
let's say you create a feature branch for your particular project,
429
00:23:18.880 --> 00:23:22.359
you're creating a branch of the entire repo just working
430
00:23:22.480 --> 00:23:23.160
within your.
431
00:23:23.599 --> 00:23:26.599
Yes, you're creating the ripple is one. So you're creating
432
00:23:26.839 --> 00:23:29.640
branches every time on the entire repo. But you can
433
00:23:29.759 --> 00:23:33.960
focus on your think, only on your think. And this
434
00:23:34.119 --> 00:23:37.200
is where tools like PMPM work come in. Because naturally
435
00:23:37.400 --> 00:23:41.119
MPM doesn't have this understanding, or it didn't have. I'm
436
00:23:41.160 --> 00:23:43.000
not sure. I haven't followed up to the latest and
437
00:23:43.079 --> 00:23:45.759
latest MPM. I'm not sure what it offers, but it
438
00:23:45.960 --> 00:23:50.079
didn't historically have the concept of multiple things in the
439
00:23:50.160 --> 00:23:52.880
same ripple right, like you have to go there each
440
00:23:52.960 --> 00:23:55.839
individual kind of things. They cannot be connected like NPM
441
00:23:55.880 --> 00:23:59.720
doesn't have this concept of connected packages within the same repol,
442
00:24:00.079 --> 00:24:02.880
So you need other tools, and PMPM, I think is
443
00:24:02.960 --> 00:24:05.880
one of the few ones that are super successful. I
444
00:24:05.960 --> 00:24:08.799
think MPM has nowadays or for a few versions, something
445
00:24:08.880 --> 00:24:12.440
like workspaces, but I haven't fully explored that because PMPM
446
00:24:12.559 --> 00:24:15.759
is just so amazing at the things that it can
447
00:24:15.839 --> 00:24:20.279
do and performance compared to MPM that there's at least
448
00:24:20.359 --> 00:24:23.200
for some years that I've worked with PMPM, no point
449
00:24:23.359 --> 00:24:26.960
of kind of switching. So PMPM is a much I
450
00:24:27.000 --> 00:24:30.000
would say faster and leaner and very kind of focused
451
00:24:30.039 --> 00:24:33.000
to and can allow you to be super strict in
452
00:24:33.119 --> 00:24:36.279
things in a monopeople. When I say strict, we can
453
00:24:36.359 --> 00:24:40.200
go into very much the depths of dependency management. But
454
00:24:40.319 --> 00:24:43.799
maybe I can pause here and let you maybe direct
455
00:24:43.839 --> 00:24:46.400
me or point me to some questions or directions that
456
00:24:46.440 --> 00:24:47.559
are interesting kind of.
457
00:24:49.200 --> 00:24:51.519
I've always been curious what that first P stands for
458
00:24:51.680 --> 00:24:52.480
in pm PM.
459
00:24:53.279 --> 00:24:57.559
I think it's performance. I am not one hundred percent here,
460
00:24:58.680 --> 00:25:01.279
don't like put me on record, but I think it's performing.
461
00:25:02.160 --> 00:25:04.279
Yeah, I always have the important questions like that.
462
00:25:05.319 --> 00:25:08.559
So yeah, that's that's kind of your responsibility.
463
00:25:11.079 --> 00:25:13.519
So anyway, okay, so now we've established what a what
464
00:25:13.680 --> 00:25:16.680
a mono repo is, and what PM in pm PM is,
465
00:25:16.920 --> 00:25:20.839
so let's go forward. So what is it? What are
466
00:25:20.880 --> 00:25:22.359
you here to talk about? What is it that you're
467
00:25:22.440 --> 00:25:25.519
doing that is somehow enhancing this or what is this?
468
00:25:26.000 --> 00:25:30.759
Uh I'm sorry the break proof? Yes, do force in
469
00:25:30.839 --> 00:25:31.599
that environment?
470
00:25:32.160 --> 00:25:34.240
Amazing? Thank you, Thank you for that kind of question.
471
00:25:34.440 --> 00:25:37.519
By the way, I adore the level of ability that
472
00:25:37.599 --> 00:25:39.759
you can break down something and you can kind of
473
00:25:39.880 --> 00:25:42.759
keep the conversation get clear and not like go to
474
00:25:42.880 --> 00:25:45.039
bike shedding or something like this. So thank you.
475
00:25:45.160 --> 00:25:47.720
Oh yeah, yeah, I like to make it clear.
476
00:25:48.279 --> 00:25:51.559
So yeah, we establish some backgrounds on PMPM and monory pools,
477
00:25:51.640 --> 00:25:54.240
and I kind of try to outline a problem that
478
00:25:54.400 --> 00:25:57.880
I see in the typical way of like putting dependencies
479
00:25:58.559 --> 00:26:01.319
in one big list of things that we do. By
480
00:26:01.359 --> 00:26:03.640
the way, in mono repos is the same thing. You
481
00:26:03.720 --> 00:26:06.240
can still have many packages, and this is what usually happens.
482
00:26:06.440 --> 00:26:09.480
You have an application, let's say view. Let's use your example,
483
00:26:09.759 --> 00:26:12.400
and inside of you you have all of its dependencies
484
00:26:12.480 --> 00:26:18.039
and all of its tools, so it will contain just Yestlen, cypress, playwright,
485
00:26:18.160 --> 00:26:21.799
whatever you have, it will be there, right, Okay, So
486
00:26:22.000 --> 00:26:23.359
what is this breakthrough thing?
487
00:26:23.480 --> 00:26:23.599
Right?
488
00:26:24.720 --> 00:26:29.640
We wanted to try and escape this locking the thing
489
00:26:29.759 --> 00:26:31.640
that I kind of the concept that I offered. We
490
00:26:31.799 --> 00:26:35.400
wanted to be able to upgrade one tool, and we
491
00:26:35.519 --> 00:26:39.319
face so many situations, I mean so many is stuations
492
00:26:39.359 --> 00:26:41.000
where we wanted to just a break one tool like
493
00:26:41.319 --> 00:26:45.359
linked stage a little too. That helps us with running
494
00:26:45.519 --> 00:26:49.519
checks before get commited right or on get a pr
495
00:26:49.759 --> 00:26:50.720
We won't just oblive that.
496
00:26:52.039 --> 00:26:54.519
Yeah, I think we use that on my project. So yeah,
497
00:26:54.519 --> 00:26:55.400
I know what you're talking about.
498
00:26:55.759 --> 00:26:57.640
So we won't to agree that. But that required a
499
00:26:57.680 --> 00:26:59.400
new version of not just a new version. I'm like,
500
00:26:59.480 --> 00:27:01.920
oh no, we're stuck in the same thing, the same loop.
501
00:27:02.960 --> 00:27:05.160
So we we were looking for a tool and we
502
00:27:05.200 --> 00:27:09.720
actually talked with the maintainer of PMPM so don amazing guy.
503
00:27:10.200 --> 00:27:10.440
It was.
504
00:27:10.759 --> 00:27:16.319
It was an amazing call, and we kind of teased
505
00:27:16.400 --> 00:27:20.279
him with this concept like, hey, but what if what
506
00:27:20.440 --> 00:27:23.400
if we don't need Cyprus to be coupled with our
507
00:27:23.519 --> 00:27:25.400
other stuff. We don't need just to be coupled with
508
00:27:25.519 --> 00:27:29.000
our view stuff. Right, there are totally different concepts, like
509
00:27:29.759 --> 00:27:32.039
if you go back to our previous example web back
510
00:27:32.119 --> 00:27:36.480
and just they're totally different. Can I just be able
511
00:27:36.839 --> 00:27:39.759
to say I'm in a mono reple Package A is
512
00:27:39.839 --> 00:27:42.720
my application. This is why I run my viehw code
513
00:27:42.880 --> 00:27:47.359
or React whatever. Right. But I had package B, and
514
00:27:47.480 --> 00:27:51.920
this package B is all my JEST stuff. This is
515
00:27:52.079 --> 00:27:56.400
where all my GEST configuration lives, all my plugins for jests.
516
00:27:56.720 --> 00:27:58.440
And what I want to I want to be able
517
00:27:58.480 --> 00:28:02.319
to do is any application like package A or package C.
518
00:28:03.039 --> 00:28:06.039
If it's another application, as you suggested, maybe I have
519
00:28:06.119 --> 00:28:09.160
a view and an angler app, right, or let's say
520
00:28:09.160 --> 00:28:11.960
I view and a reactor. I want both of them
521
00:28:12.680 --> 00:28:15.079
to share my configuration. I don't want to redo it.
522
00:28:15.839 --> 00:28:17.480
I don't want to. I won't be able to just
523
00:28:17.680 --> 00:28:21.160
call jest, have some basic configuration that makes sense for
524
00:28:21.240 --> 00:28:24.559
our company or for this one repole, and just run
525
00:28:24.640 --> 00:28:27.960
it from package A and package C. So this package B,
526
00:28:28.319 --> 00:28:31.319
this magical JEST must be able to be isolated and
527
00:28:31.440 --> 00:28:34.960
must be callable from the other packages. Right, So package
528
00:28:35.079 --> 00:28:38.039
should be able to say, hey, I need GEST from
529
00:28:38.079 --> 00:28:41.680
package B, and package should do the same thing. Cool.
530
00:28:42.880 --> 00:28:45.559
Let's say in a classic Mono Repo. No matter whether
531
00:28:45.599 --> 00:28:49.279
I use PMPM, you can you can structure these packages.
532
00:28:49.759 --> 00:28:53.759
Now there's two questions, right, how do I call one
533
00:28:53.839 --> 00:28:55.799
package from the other package? Like how do I call
534
00:28:56.200 --> 00:29:00.359
JEST from package B in the AD from package to
535
00:29:00.480 --> 00:29:04.799
package whatever? Right, So I'm not sure how other tools
536
00:29:04.799 --> 00:29:06.920
do it, and I don't think it's so popular as
537
00:29:07.000 --> 00:29:10.039
a thing, but PMPM allows you to filter out to
538
00:29:10.200 --> 00:29:13.039
query with a command line. Basically, you open the terminal
539
00:29:13.279 --> 00:29:16.200
say PMPM and you can filter packages. So you can
540
00:29:16.240 --> 00:29:20.240
select one package and run a script from its package Jason,
541
00:29:20.720 --> 00:29:25.279
or run a dependency that it's installed in this package. Okay,
542
00:29:25.599 --> 00:29:29.279
So I can say PMPN filter my GEST package JEST,
543
00:29:30.119 --> 00:29:33.480
so that will run just from my package that has
544
00:29:33.559 --> 00:29:37.759
all my est stuff. Okay, So this means this allows
545
00:29:37.799 --> 00:29:42.880
basically to collest from these two other packages without installing JEST.
546
00:29:43.680 --> 00:29:46.319
So my package with my view application doesn't have just
547
00:29:46.440 --> 00:29:50.640
install nothing, doesn't even know about just, but it can
548
00:29:50.759 --> 00:29:55.160
codest that is instelled from the other package. Now, probably
549
00:29:55.200 --> 00:29:58.240
the question here is like, okay, okay, why are we
550
00:29:58.319 --> 00:30:01.799
complicating things making this separation? And now this is the
551
00:30:01.880 --> 00:30:06.039
key here. This is because because PMPM. After we talk
552
00:30:06.079 --> 00:30:09.279
with Zutan did one feature, which is I think it's
553
00:30:09.440 --> 00:30:12.039
for me. It changed the game in terms of a
554
00:30:12.119 --> 00:30:17.359
mono rip. They introduced the concept of runtime per package,
555
00:30:18.319 --> 00:30:20.359
and they in the latest versions, by the way, a
556
00:30:20.400 --> 00:30:24.920
few versions back ten something. I think it's now. They
557
00:30:25.039 --> 00:30:29.200
even allowed different than no Dress runtimes. So you can say,
558
00:30:29.359 --> 00:30:33.400
my package A will have no Jess fourteen. It's a
559
00:30:33.519 --> 00:30:37.720
legacy one, let's say Angler eleven. But my package B
560
00:30:38.440 --> 00:30:43.680
has all the all the latest React nineteen, like running
561
00:30:43.759 --> 00:30:46.279
some CLI that only runs on the newest no Dress.
562
00:30:46.680 --> 00:30:49.480
And I can even have like a concept experimental app
563
00:30:50.000 --> 00:30:53.359
that runs on bun or other runtime and still live
564
00:30:53.400 --> 00:30:56.039
in the same ripple, and I can still manage all
565
00:30:56.079 --> 00:31:02.400
of their dependencies through the same PMPMCLI. Right, So back
566
00:31:02.599 --> 00:31:05.240
back to the original example. I know, very lengthy, I'm
567
00:31:05.279 --> 00:31:08.319
going to pose in a minute, I promise. Back in
568
00:31:08.359 --> 00:31:10.799
the original example, I have my view application and I
569
00:31:10.920 --> 00:31:13.799
have my gest related stuff in a separate package right
570
00:31:14.000 --> 00:31:15.160
in the mono report.
571
00:31:15.839 --> 00:31:19.680
The MPM package. Is that a separate like a separate directory. Yes,
572
00:31:19.759 --> 00:31:20.440
separate directory.
573
00:31:20.559 --> 00:31:23.720
Sorry, yes, let's simplify think, yes, two directories. One is
574
00:31:23.799 --> 00:31:26.319
my view application with all of its dependencies, and one
575
00:31:26.440 --> 00:31:29.559
is my GEST stuff a separate directory with all of
576
00:31:29.599 --> 00:31:33.720
his GET related dependencies inployees. Right. So the NPM with
577
00:31:33.839 --> 00:31:36.559
this feature what allowed us is the GET related stuff
578
00:31:37.839 --> 00:31:41.400
to be running at note twenty four while your application
579
00:31:41.759 --> 00:31:45.400
can run a newer or older note like the application
580
00:31:45.599 --> 00:31:47.559
meaning the build of the application.
581
00:31:47.799 --> 00:31:47.920
Right.
582
00:31:48.720 --> 00:31:50.920
So this means that I can run GEST. I can
583
00:31:51.000 --> 00:31:53.759
say from my application. I can say, hey, can you
584
00:31:53.839 --> 00:31:56.240
codeest from the other package, And what this will do
585
00:31:57.079 --> 00:32:00.559
is calle the other NOTEJAS that is associated with the
586
00:32:00.680 --> 00:32:04.039
JEST from my application and can run on my source code.
587
00:32:04.559 --> 00:32:06.720
This way, I can use the specific note that I
588
00:32:06.960 --> 00:32:10.759
know it works with jests from my application, that I
589
00:32:10.920 --> 00:32:12.759
know that it works with a different note all the
590
00:32:12.799 --> 00:32:15.039
same note, but let's put it in a different note.
591
00:32:15.799 --> 00:32:18.759
This gives you the ability to absolutely freely a great jest.
592
00:32:19.480 --> 00:32:21.039
You can a great GEST and the only thing you
593
00:32:21.079 --> 00:32:23.039
need to do is make sure that the configuration doesn't
594
00:32:23.079 --> 00:32:24.920
break when you up great and that's it. You don't
595
00:32:24.960 --> 00:32:28.799
have to think about all the interconnected dependencies that it
596
00:32:28.960 --> 00:32:33.119
might bring in. You can have great in isolation. That is,
597
00:32:33.359 --> 00:32:38.519
let's say the largest change that this breakproof freepoint and
598
00:32:38.519 --> 00:32:42.079
template is promoting. It's not only that, and it's not
599
00:32:42.480 --> 00:32:45.440
like as you can see, it's not a major thing.
600
00:32:45.599 --> 00:32:48.960
Everything comes in from PMPM. There's a lot of other goodies,
601
00:32:49.039 --> 00:32:51.319
let's say. But I think this is the highlight, like
602
00:32:51.519 --> 00:32:53.759
being able to upgrade individually.
603
00:32:58.119 --> 00:33:02.079
I'm okay, So yeah, I got a lot of questions here.
604
00:33:02.720 --> 00:33:05.640
Being visual, it's hard to do this without actually looking
605
00:33:05.680 --> 00:33:06.119
at something.
606
00:33:06.200 --> 00:33:08.559
But so where.
607
00:33:10.200 --> 00:33:13.960
Do you so normally, you know, in any project, the
608
00:33:14.039 --> 00:33:17.240
way it's always worked is you have your node mantostrecture, right,
609
00:33:17.279 --> 00:33:21.160
which has all your different dependencies and their indpendencies and
610
00:33:21.240 --> 00:33:26.119
so on under your project route. So in your mono
611
00:33:26.200 --> 00:33:31.240
repost setup, then where do these separate versions of note
612
00:33:31.279 --> 00:33:32.279
actually get installed?
613
00:33:33.039 --> 00:33:33.240
Yes?
614
00:33:33.440 --> 00:33:35.200
Where is the physical locations of those?
615
00:33:35.319 --> 00:33:38.720
Fantastic? Okay, so you have two direct directories, right, I
616
00:33:38.839 --> 00:33:41.279
know it's a very visual thing. It's a podcasts people
617
00:33:41.359 --> 00:33:43.759
some some people listen. So you have the two directories
618
00:33:44.319 --> 00:33:48.400
and you can just accept them as two absolutely individual projects.
619
00:33:48.519 --> 00:33:51.599
They have inside of them the note modules for their
620
00:33:51.640 --> 00:33:54.480
own note modules. But your question was more like where
621
00:33:54.559 --> 00:33:57.960
is the note dress? And maybe maybe the other question
622
00:33:58.079 --> 00:34:01.680
is who stous the o JISS like, how do how
623
00:34:01.720 --> 00:34:04.079
does you get the nogs? I'm not sure if you
624
00:34:04.160 --> 00:34:07.599
have an innate understanding or maybe you already know the answer.
625
00:34:08.000 --> 00:34:11.639
But maybe people are used to have a manager for
626
00:34:11.760 --> 00:34:14.480
no JS versius like MBM very popular.
627
00:34:14.559 --> 00:34:16.119
One version manager.
628
00:34:16.400 --> 00:34:18.599
Yes, no version manager, it's a CLI too. I can
629
00:34:18.719 --> 00:34:21.639
say use this version, or I can set it up
630
00:34:21.679 --> 00:34:23.559
so that when I go to a certain project with
631
00:34:23.719 --> 00:34:27.199
automatically which is not okay. It can also install note
632
00:34:27.320 --> 00:34:31.519
versions can also uninstalled them like it manages no verse. Cool.
633
00:34:31.920 --> 00:34:34.960
But what happens in this PMPN world and now this
634
00:34:35.119 --> 00:34:39.639
is the other fantastic thing. PMPM is not a dependency
635
00:34:39.719 --> 00:34:43.760
that lives under note right. It is written in JavaScript,
636
00:34:44.440 --> 00:34:49.159
but is it's bundled as a standalone CLI so it
637
00:34:49.239 --> 00:34:52.480
can work without a specific like that you don't have
638
00:34:52.559 --> 00:34:54.960
to have NOTE to be able to run PMPM. This
639
00:34:55.079 --> 00:34:59.840
is a huge difference from npm MPM is always bundled
640
00:35:00.039 --> 00:35:04.079
with a specific version of no JFS right right, Okay, cool,
641
00:35:04.480 --> 00:35:07.239
So you have PMPM and it's a standalone thing. And
642
00:35:07.400 --> 00:35:12.159
the new feature is like addition to PMPM is that
643
00:35:12.239 --> 00:35:14.719
it can also manage no JAS versions, so it has
644
00:35:14.840 --> 00:35:19.880
like an MVM features, so it combines NPM and MVM
645
00:35:19.960 --> 00:35:24.119
together in one two. I'm saying combined because PMPM, in
646
00:35:24.239 --> 00:35:27.920
my mind, is a superset of MPM, which means it
647
00:35:28.039 --> 00:35:30.400
has all of the functionalities of MPM to be honest,
648
00:35:30.440 --> 00:35:34.760
even the same commands and underhood, basically it's kind of
649
00:35:34.800 --> 00:35:38.480
the same results, but also can manage no JAS versions.
650
00:35:39.039 --> 00:35:43.400
And having that that new feature that a PMPM introduced
651
00:35:43.719 --> 00:35:46.519
after we talked to Zutan that allowed each package to
652
00:35:46.599 --> 00:35:49.880
define it. PPM reads a specific property in your package
653
00:35:49.960 --> 00:35:52.880
jason file. You have two directories and each have package
654
00:35:52.920 --> 00:35:55.679
jason file right, and each of them can specify a
655
00:35:55.800 --> 00:36:00.800
property that I think is called runtime environment and PMPM
656
00:36:00.920 --> 00:36:04.760
knows about this property, reads it and checks if there
657
00:36:04.840 --> 00:36:08.239
is an installed NOGS with this version. If it doesn't have,
658
00:36:08.440 --> 00:36:10.840
it installs it for you automatically. You don't have to
659
00:36:10.880 --> 00:36:13.400
do anything, So even if you try to run something
660
00:36:13.440 --> 00:36:16.559
from a package that you don't have the OGS version four,
661
00:36:16.760 --> 00:36:19.800
it will install it for you. Of course you can
662
00:36:19.920 --> 00:36:22.039
pre install it, but it would do it for you
663
00:36:22.159 --> 00:36:25.320
if you haven't done this step. I hope that this
664
00:36:25.480 --> 00:36:27.519
gives a better idea like PMPM does it for you
665
00:36:27.599 --> 00:36:30.639
basically in a short answer, a PPM does it for you?
666
00:36:31.599 --> 00:36:35.159
Okay, but again, where so is it like you have
667
00:36:35.239 --> 00:36:38.079
a separate package for each version of no. Twenty two,
668
00:36:38.199 --> 00:36:41.119
twenty three, twenty four, you know, whatever versions you're using.
669
00:36:41.360 --> 00:36:42.360
It is kind of report.
670
00:36:43.320 --> 00:36:45.280
It is kind of the same as MVM. It has
671
00:36:45.360 --> 00:36:48.280
told them in your system, in your home directory, maybe
672
00:36:48.599 --> 00:36:50.599
if it stolls them somewhere. It just knows how to
673
00:36:50.760 --> 00:36:54.480
run them for each package. Basically, so if you have
674
00:36:54.599 --> 00:36:57.639
a package with just independencies, it knows that if you
675
00:36:57.679 --> 00:37:00.360
want to run stuff from there, it will use the
676
00:37:00.440 --> 00:37:04.239
installed no Jazz version with debt version. Sorry, the installted
677
00:37:04.239 --> 00:37:05.320
no jas with debt version.
678
00:37:07.079 --> 00:37:13.000
Okay, so I would So in your packages there are two.
679
00:37:13.960 --> 00:37:16.840
There's save and then there's saved dev. Right, so there's
680
00:37:16.880 --> 00:37:20.719
the tools that you need just why you're developing, and
681
00:37:20.840 --> 00:37:23.719
there's the tools that the packages that need to be
682
00:37:23.840 --> 00:37:28.280
installed for your application actually run. Right, So you could
683
00:37:28.320 --> 00:37:31.599
have so to use examples we're using just as a
684
00:37:31.639 --> 00:37:33.920
testing utaility, so you only need that at development type.
685
00:37:33.920 --> 00:37:35.599
So that would be a saved dev type property in
686
00:37:35.639 --> 00:37:39.039
your package that Jason absolutely say a CSS framework say
687
00:37:39.079 --> 00:37:41.559
tail wind, which is a real popular win, right, that's
688
00:37:41.639 --> 00:37:45.679
going to be a uh you've got to have that
689
00:37:45.920 --> 00:37:48.679
in your bundled job description in order for your application
690
00:37:48.760 --> 00:37:54.079
to work or at least to look decent. So can
691
00:37:54.199 --> 00:37:58.679
this handle can you have I'm trying to think how
692
00:37:58.719 --> 00:38:02.599
a word this? Could you have? You runtime packages that
693
00:38:02.719 --> 00:38:05.400
you need to actually run your application that aren't saved,
694
00:38:06.679 --> 00:38:12.039
that use different versions of Node? Is that a non issue?
695
00:38:12.480 --> 00:38:13.760
Give me a second too, kind of.
696
00:38:15.320 --> 00:38:18.239
Actually an issue? Because notice is your runtime from when
697
00:38:18.239 --> 00:38:18.840
you're developing?
698
00:38:19.280 --> 00:38:23.119
Yes, yes, if you're asking about runtime versus death time.
699
00:38:23.840 --> 00:38:24.000
Yeah.
700
00:38:24.039 --> 00:38:26.519
If if runtime is the browser, you don't you don't
701
00:38:26.800 --> 00:38:27.599
need to think about it.
702
00:38:28.480 --> 00:38:30.719
Okay, Yeah, never mind, I just realized that as that.
703
00:38:31.400 --> 00:38:33.719
And if you're talking about different tools, if you're talking
704
00:38:33.760 --> 00:38:37.920
about different tools, let's say just andy istlink, you can
705
00:38:38.000 --> 00:38:41.559
expand on the example and have a package for island.
706
00:38:42.480 --> 00:38:44.559
So the package with islint comes with its own no
707
00:38:44.719 --> 00:38:47.679
Jet version and all of it's plugins, right because it
708
00:38:47.840 --> 00:38:50.280
drags in it drags in a lot of plugins and
709
00:38:50.360 --> 00:38:53.880
they have their own dependencies, right, So maybe these dependencies
710
00:38:54.280 --> 00:38:56.920
are like a mismatch with your own dependencies if you
711
00:38:57.039 --> 00:38:58.039
store them at the same place.
712
00:39:01.079 --> 00:39:02.679
Okay, Yeah, so I think I get to just so
713
00:39:02.719 --> 00:39:05.079
it's basically installing the different versions of no JAS on
714
00:39:05.159 --> 00:39:07.559
your system and then just referencing them from the packages
715
00:39:07.760 --> 00:39:09.360
as you need, but being.
716
00:39:09.239 --> 00:39:12.239
Able to kind of use all the tools from one
717
00:39:12.320 --> 00:39:14.920
package that doesn't have them installed, so they don't they
718
00:39:15.000 --> 00:39:18.400
don't interfere with your dependencies, and they don't interfere with
719
00:39:18.480 --> 00:39:21.199
your no Jazz version. They have their own thing.
720
00:39:22.559 --> 00:39:26.079
So now the other you touched on something here briefly
721
00:39:26.159 --> 00:39:29.360
that I wanted to ask about, and that's other run times.
722
00:39:29.639 --> 00:39:32.159
So you got Bun, You've got Dno, You've got other things.
723
00:39:32.199 --> 00:39:35.360
You don't necessarily have to use no JS as your
724
00:39:35.519 --> 00:39:38.519
as your run time. I think was it Phoenix? Was
725
00:39:38.519 --> 00:39:40.159
that another one that was supposed to be and then
726
00:39:40.239 --> 00:39:41.719
sort of diet on the vine.
727
00:39:41.920 --> 00:39:44.920
You're you're now reaching my ability to like to know.
728
00:39:45.159 --> 00:39:47.920
But Dino, I know, Bun, I know, No, just that Phoenix,
729
00:39:48.199 --> 00:39:48.920
I'm not sure.
730
00:39:49.079 --> 00:39:51.440
Anyway that yeah, I forget that one. I didn't know
731
00:39:51.559 --> 00:39:54.639
much about it anyway. The point is, does all of this,
732
00:39:54.800 --> 00:39:59.119
the PNPM and this report that you had, does that
733
00:39:59.239 --> 00:40:01.840
only worked in no j or can you support Bernardino
734
00:40:02.320 --> 00:40:03.440
or other run times as well.
735
00:40:03.679 --> 00:40:06.679
Fantastic question. The latest one of the latest versions of
736
00:40:06.760 --> 00:40:09.639
PMPM allowed this new thing. They started with this concept
737
00:40:09.679 --> 00:40:12.119
after we talked Zotan. We talked about it, and they
738
00:40:12.159 --> 00:40:14.840
introduced no Jess only right, so you can have no
739
00:40:15.360 --> 00:40:18.519
eleven and twenty. But I think in the recent versions
740
00:40:19.079 --> 00:40:22.199
they change that. So they introduced the ability to choose
741
00:40:22.400 --> 00:40:26.400
Dino for one environment. No, so one package, one directory.
742
00:40:26.880 --> 00:40:29.440
This will run with Dino. So all your scripts, all
743
00:40:29.480 --> 00:40:33.039
your stout dependencies, we will run through Dino. DINU will
744
00:40:33.119 --> 00:40:35.840
run them basically. Right, So you specified Dino and a
745
00:40:35.960 --> 00:40:39.880
version and another directory in another package. Jason, you specify
746
00:40:40.000 --> 00:40:44.079
no jess aversion I can, I can hear, can not
747
00:40:44.239 --> 00:40:47.039
commit to. How many run times does it support. I
748
00:40:47.159 --> 00:40:49.280
am not sure. I'm not sure how many of them
749
00:40:49.320 --> 00:40:52.199
they support, but I am sure I saw Dino, sure sure,
750
00:40:52.239 --> 00:40:54.559
and I think I saw done. And I think these
751
00:40:54.599 --> 00:40:57.480
are the kind of I hope I don't offend anyone,
752
00:40:57.519 --> 00:41:01.400
but these are the major let's say, talk talking discussion points,
753
00:41:01.440 --> 00:41:04.119
et cetera kind of is run times. I'm sure there's others.
754
00:41:04.400 --> 00:41:07.320
There's probably edge run times that I don't know if
755
00:41:07.360 --> 00:41:09.320
they have, Like a you can install them, Like I know,
756
00:41:09.440 --> 00:41:12.199
cloud for has their own thing, my edge workers have
757
00:41:12.280 --> 00:41:15.000
their own thing. Versailles has a run time, but I'm
758
00:41:15.039 --> 00:41:19.119
not sure if it's just no jaiz. So many jobscript runtimes,
759
00:41:19.159 --> 00:41:21.159
by the way, I'm not sure if they're all installable.
760
00:41:22.719 --> 00:41:26.119
God of reminds me. I saw post on hacker News
761
00:41:26.840 --> 00:41:32.519
probably in the last month, and it was a history
762
00:41:32.559 --> 00:41:36.599
of JavaScript run times. Oh and the guy said it
763
00:41:36.760 --> 00:41:40.360
took probably like a year to just to write this article.
764
00:41:40.360 --> 00:41:44.079
Because I was like, oh, yeah, there's a few. Holy cow,
765
00:41:44.559 --> 00:41:46.639
it was crazy how far he back. I mean, just
766
00:41:46.840 --> 00:41:51.840
link after link after link, and I don't know if
767
00:41:51.880 --> 00:41:53.880
this is the one. I'll have to find it maybe,
768
00:41:53.920 --> 00:41:55.719
But I was like, holy cow, there's been a lot
769
00:41:55.800 --> 00:41:59.760
of a lot of jobscript run times. Yeah. Here it
770
00:41:59.800 --> 00:42:02.199
is the many, many, many JavaScript run times of the
771
00:42:02.320 --> 00:42:05.480
last decade. And they'll do this as a pick anyway.
772
00:42:05.559 --> 00:42:07.559
So there's a lot, but we're just focusing on on
773
00:42:07.760 --> 00:42:12.880
these three kinds right now. Kind of yeah, yeah, okay,
774
00:42:13.079 --> 00:42:16.519
So you have this young po breakproof based mono repo
775
00:42:16.920 --> 00:42:22.920
m this is it's on GitHub Breakproof, dash base, dash
776
00:42:23.000 --> 00:42:29.599
Mono repo under Poe Ltd. So how would this be implemented,
777
00:42:29.760 --> 00:42:31.800
or how is this something where you'd have to fire
778
00:42:31.880 --> 00:42:34.639
this up and build it, you know, from everything from
779
00:42:34.639 --> 00:42:36.760
the beginning, or can you implement it into say an
780
00:42:36.800 --> 00:42:39.280
existing modern repo, or how would you use this?
781
00:42:39.880 --> 00:42:44.000
Okay? Also also fantastic question. I mean I think I
782
00:42:44.039 --> 00:42:46.639
should just pick your questions and put them as a list.
783
00:42:46.719 --> 00:42:52.079
How I start talking about this? Okay? So even by
784
00:42:52.119 --> 00:42:55.800
its name, I hope they'd give some clue about it.
785
00:42:56.280 --> 00:43:02.320
So it says base mon and go break break Yeah
786
00:43:02.719 --> 00:43:06.119
it is, I mean, I mean breakthrough. Okay, Okay, Okay,
787
00:43:06.519 --> 00:43:10.360
Given given your status of dead jokes owner and king,
788
00:43:10.800 --> 00:43:13.960
I think you're you're kind of picking on the important
789
00:43:14.000 --> 00:43:16.679
thing is Yes, breakproof is the key is the king keyword,
790
00:43:16.840 --> 00:43:19.800
and it is because of specifically that it doesn't allow
791
00:43:19.840 --> 00:43:22.880
you to break one package just because you have great another. Right,
792
00:43:23.840 --> 00:43:25.960
That's that's where it all started from. This is where
793
00:43:26.000 --> 00:43:28.480
it started from. But base Mono reple it kind of
794
00:43:28.519 --> 00:43:31.719
gives the clue of how it's supposed to be intended
795
00:43:32.079 --> 00:43:35.360
to be used. Right, So the giftab has this concept
796
00:43:35.400 --> 00:43:38.440
of template repositories. Not sure if you've seen it, but
797
00:43:38.559 --> 00:43:41.079
if you enter a template repository, It basically has a
798
00:43:41.119 --> 00:43:43.480
button say create from this template.
799
00:43:44.000 --> 00:43:46.519
That makes sense, I mean that's just kindard template type.
800
00:43:46.800 --> 00:43:46.960
Yeah.
801
00:43:47.199 --> 00:43:47.400
Sure.
802
00:43:47.840 --> 00:43:49.639
The one thing why is this not a template? It
803
00:43:49.719 --> 00:43:53.199
basically fits perfectly perfectly the case of a template repository.
804
00:43:53.480 --> 00:43:56.239
But what happens that it's not super known is that
805
00:43:56.320 --> 00:44:00.079
when you press great template repository, it blanks out the
806
00:44:00.239 --> 00:44:03.199
entire history of the ripo. So it basically commits all
807
00:44:03.239 --> 00:44:05.440
the files of the ripple as a new REPO with
808
00:44:05.599 --> 00:44:09.760
no history. Okay, so you have a blank new slate
809
00:44:10.400 --> 00:44:13.079
and you don't have all the previous changes, et cetera.
810
00:44:13.239 --> 00:44:14.760
Okay, well, that can be good or bad.
811
00:44:14.800 --> 00:44:19.039
I suppose exactly exactly. It could be good let's say
812
00:44:19.360 --> 00:44:21.480
size of the repole. You don't have to care about
813
00:44:21.480 --> 00:44:25.159
this stuff, right, But one of the let's say not
814
00:44:25.320 --> 00:44:28.440
so great stuff is that if you fork it instead
815
00:44:28.480 --> 00:44:31.360
of that, if you create your own base on the history,
816
00:44:32.119 --> 00:44:34.840
it's kind of easy to pull changes, right Like if
817
00:44:34.880 --> 00:44:38.199
you let's say you have a library and I want
818
00:44:38.239 --> 00:44:40.440
to do a PR with some feature or a book fix,
819
00:44:41.280 --> 00:44:43.880
usually what I do is fork it, do some changes
820
00:44:43.920 --> 00:44:46.159
in my own branch, and create a PR to your
821
00:44:46.239 --> 00:44:50.360
own original repository. Right. And I can do that very
822
00:44:50.400 --> 00:44:53.960
easily because GIT knows about the history is their share.
823
00:44:54.159 --> 00:44:57.440
My fork has all of the history of your original repository,
824
00:44:57.880 --> 00:45:02.360
right and vice versa. If you update your original repository,
825
00:45:02.559 --> 00:45:04.480
I can pull in all the changes.
826
00:45:05.920 --> 00:45:10.000
Right. So we picked you're talking about working the whole repel,
827
00:45:10.119 --> 00:45:13.039
not just a branch within a right, you fork the
828
00:45:13.199 --> 00:45:13.719
entire ripple.
829
00:45:13.960 --> 00:45:16.360
You fork the entire repole. Usually it's the main branch,
830
00:45:16.599 --> 00:45:19.920
like you kind of copy the main branch only. So
831
00:45:20.280 --> 00:45:23.079
what is the what what is the major difference? Okay?
832
00:45:23.800 --> 00:45:25.639
So this is where I need to mention a bit
833
00:45:25.800 --> 00:45:29.159
more maybe about what the repository is. But the whole
834
00:45:29.400 --> 00:45:33.119
intended uses you kind of clone it. You clone it
835
00:45:33.280 --> 00:45:37.559
to your own repository and you start from there. Why
836
00:45:38.079 --> 00:45:41.039
why why do you use this as a new repository? Okay?
837
00:45:41.480 --> 00:45:43.719
And and you asked, how do I get my projects
838
00:45:44.000 --> 00:45:46.519
in it? Can I just plug it in my own
839
00:45:46.559 --> 00:45:49.480
existing ripple? The answer here is no, you can't really
840
00:45:49.559 --> 00:45:52.320
plug it in yours. But what you can do is
841
00:45:52.400 --> 00:45:55.760
you important project from your existing ripple in here. We
842
00:45:55.960 --> 00:45:59.800
created some utilities like interactive CLI with like questions like
843
00:46:00.079 --> 00:46:02.480
where is your ripo? Where do you want it to be.
844
00:46:03.000 --> 00:46:06.039
So when you clone the brakeproof based monitor reple and
845
00:46:06.159 --> 00:46:08.679
you get like this copy of it, you can then
846
00:46:08.960 --> 00:46:12.679
import the projects from elsewhere, so you can import them
847
00:46:12.719 --> 00:46:16.280
from other monor reples or other just repoles, and you
848
00:46:16.400 --> 00:46:19.800
put them as a package inside of your copy of
849
00:46:19.880 --> 00:46:23.719
the breakproof monitor rep That's the intended use. And I
850
00:46:23.840 --> 00:46:26.840
guess there's very much announce here of why is this
851
00:46:27.039 --> 00:46:30.519
like this? And I should mention something, but I'm going
852
00:46:30.559 --> 00:46:33.360
to pose again here to let you pick the first
853
00:46:33.440 --> 00:46:34.760
questions if you already have.
854
00:46:35.000 --> 00:46:40.719
Some, well, if we're talking about getting your project into
855
00:46:41.880 --> 00:46:43.679
this repot, no, I don't have any questions, but I
856
00:46:43.760 --> 00:46:44.639
do have some after that.
857
00:46:45.119 --> 00:46:47.760
Okay, cool, So you have your own clone, right, you
858
00:46:47.880 --> 00:46:51.559
copy the repository with the ford it with the entire history.
859
00:46:52.199 --> 00:46:54.880
Next step you imported the project. You got it, So
860
00:46:55.039 --> 00:46:57.159
why do you have why do you need this step?
861
00:46:57.440 --> 00:47:00.519
Extra step and extra work of moving project?
862
00:47:00.960 --> 00:47:01.119
Right?
863
00:47:02.239 --> 00:47:04.679
So, so far we only talked about this PMP mobility
864
00:47:04.719 --> 00:47:09.840
of isolation. Okay, but what it gives you is this
865
00:47:10.000 --> 00:47:12.960
based moment ripple. Doesn't only have this concept, otherwise it
866
00:47:13.000 --> 00:47:14.599
wouldn't be a based moment ripple, right, it would be
867
00:47:14.719 --> 00:47:16.880
just a read me file. You can do that with
868
00:47:17.000 --> 00:47:21.199
PMPM do it yourself, good luck bye. What it comes
869
00:47:21.280 --> 00:47:28.280
in is with already some tools installed as isolated packages. Right,
870
00:47:28.800 --> 00:47:31.199
they're not installed for your package. You can create your
871
00:47:31.199 --> 00:47:33.880
own package with you, but there's already tools in it.
872
00:47:35.440 --> 00:47:37.800
There are most of them. They're in a directory code
873
00:47:37.840 --> 00:47:41.559
Infra as we just go back there. Yeah, if you
874
00:47:41.639 --> 00:47:45.239
go back to our original conversation, there's like categories of packages. Right,
875
00:47:45.400 --> 00:47:48.320
there's something about the built, there's something about code checks,
876
00:47:48.360 --> 00:47:50.559
there's something about testing. So this is a kind of
877
00:47:50.599 --> 00:47:53.519
a tooling that you usually have in an application. So
878
00:47:53.679 --> 00:47:56.679
this ripple comes with some of those packages that are
879
00:47:56.760 --> 00:47:59.599
isolated when their own dependence in their own packages, and
880
00:47:59.639 --> 00:48:03.360
they're all Jazz version already there. So what you are
881
00:48:03.440 --> 00:48:08.239
able to do is have your project already runs, linked,
882
00:48:08.400 --> 00:48:13.400
already run, just already configured with some base sensible configuration.
883
00:48:14.039 --> 00:48:18.159
It's not opinionated and you can change it, but it's
884
00:48:18.239 --> 00:48:21.199
centralized and it's already working. So this concept that we
885
00:48:21.280 --> 00:48:24.880
introduced in the beginning, it's a starter. It's a starter
886
00:48:25.039 --> 00:48:27.960
that you can use, so they are already working. A
887
00:48:28.079 --> 00:48:32.559
COO part is usually as we talked about scale of companies, right,
888
00:48:32.639 --> 00:48:35.639
and scale of projects. When you have time projects, you
889
00:48:35.840 --> 00:48:38.800
kind of want to reuse and not repeat every single
890
00:48:38.880 --> 00:48:42.559
time and have one project with slightly different test configuration
891
00:48:43.440 --> 00:48:45.960
from the other, because you end up with this bug
892
00:48:46.039 --> 00:48:50.599
chasing where the result and the causation usually is like ah,
893
00:48:50.880 --> 00:48:53.400
it was fixed, but not in the other package, but
894
00:48:53.480 --> 00:48:55.280
in the other one. Right, So you want to have
895
00:48:55.400 --> 00:48:59.079
something centralized as a base sensible configuration, and the repository
896
00:48:59.159 --> 00:49:02.760
comes with sensible configuration for just based, sensible conforation for yes,
897
00:49:02.840 --> 00:49:05.480
lim and different kind of tools that are not very
898
00:49:05.639 --> 00:49:10.880
known but kind of useful, like finding unused dependencies, finding
899
00:49:11.000 --> 00:49:13.559
dependencies that are not in stout but you kind of
900
00:49:13.719 --> 00:49:17.679
use them. All these kind of code checks. They have
901
00:49:17.800 --> 00:49:20.559
their own package. They're all no jazz and all based
902
00:49:20.599 --> 00:49:25.960
configuration that your own package can just reference. Right. And
903
00:49:26.079 --> 00:49:28.800
of course, if you have your view application, let's we
904
00:49:28.920 --> 00:49:31.960
use the example and you want to extend you want
905
00:49:31.960 --> 00:49:34.079
to change some isline plug in, Sure you can do
906
00:49:34.159 --> 00:49:36.920
that because it only it only provides you with a
907
00:49:37.000 --> 00:49:40.920
base config. It just extends the base config and you
908
00:49:41.119 --> 00:49:43.920
just apply it with more configuration. You overwrite something, you
909
00:49:44.280 --> 00:49:47.679
disable a plugin enable a new one. This is just
910
00:49:47.800 --> 00:49:51.400
a base for you to play with and already isolated. Yes, Limp,
911
00:49:52.760 --> 00:49:55.920
and I want to just mention one more thing. What
912
00:49:56.159 --> 00:49:59.480
is the coolest part for me personally? After this isolation?
913
00:49:59.519 --> 00:50:02.800
We talked about artists. You have your clone, you have
914
00:50:02.920 --> 00:50:08.000
your copy. Right in several months, you say, wait, a
915
00:50:08.119 --> 00:50:10.639
new version of ISLNT. I'm not sure if you dealt
916
00:50:10.679 --> 00:50:14.119
with upgrading Yearlint eight to yearly nine. But it wasn't
917
00:50:14.159 --> 00:50:17.280
a pleasant upgrade. I can tell you that it was
918
00:50:17.360 --> 00:50:17.960
not pleasant.
919
00:50:18.599 --> 00:50:21.760
Speaking personal experience, I mean, yeah, I.
920
00:50:21.800 --> 00:50:24.880
Mean Islant is amazing. I love Islint. I'm super thankful
921
00:50:24.960 --> 00:50:28.440
to I think, Josh. I mean I'm hoping. I'm hoping.
922
00:50:28.519 --> 00:50:31.599
I'm not getting this wrong. I love that and we
923
00:50:31.760 --> 00:50:34.920
use it extensively, but that grade was hard. So imagine
924
00:50:34.960 --> 00:50:40.800
if you have your clone and the base breakproof repository,
925
00:50:40.880 --> 00:50:43.400
keep on changing, right, and at some point the base
926
00:50:43.800 --> 00:50:48.800
repository upgraded. Ye is lint in itself and you want
927
00:50:48.840 --> 00:50:52.320
also upgrade. What you can do instead of you upgrading
928
00:50:52.360 --> 00:50:55.239
it yourself in your clone is just pull the changes
929
00:50:55.599 --> 00:50:59.760
from the base without fearing that it will break anything.
930
00:51:00.519 --> 00:51:04.079
Because it's isolated, it doesn't affect your package. It only
931
00:51:04.199 --> 00:51:07.760
upgrades is link. It only upgrades no JS maybe for
932
00:51:07.880 --> 00:51:11.519
the is link, but it's very isolated. So now one
933
00:51:11.599 --> 00:51:16.679
of a sudden, suddenly just doing git pull from breakproof
934
00:51:16.800 --> 00:51:21.599
or whatever. Right, your get clone second origin, let's pull it.
935
00:51:22.159 --> 00:51:25.159
You now suddenly have upgraded islink and that's it. You
936
00:51:25.239 --> 00:51:30.400
continue there without a major like, oh, let's figure out
937
00:51:30.440 --> 00:51:33.719
configuration now, et cetera, et cetera, et cetera. So you
938
00:51:33.800 --> 00:51:36.599
suddenly have a newer version, like even major version of island.
939
00:51:36.760 --> 00:51:39.800
We just want get poll. Okay, I'm gonna post here
940
00:51:43.360 --> 00:51:50.159
if it makes sense. If it doesn't, I guess my
941
00:51:50.280 --> 00:51:50.679
thought is.
942
00:51:51.119 --> 00:51:53.480
You know what I'm trying to get my head around
943
00:51:53.639 --> 00:51:56.719
is you know you've got this when you pulled in
944
00:51:56.840 --> 00:51:59.960
your project. So going back to the example that we've
945
00:52:00.079 --> 00:52:04.480
been using, you know, it's just and or having different
946
00:52:04.559 --> 00:52:11.440
packages that ah that use different versions of node. You know, say,
947
00:52:13.440 --> 00:52:15.239
so where does that happen? At what point? Is that
948
00:52:15.360 --> 00:52:17.679
something you have to do manually where you split out
949
00:52:17.760 --> 00:52:20.840
your just to a separate directory in the mono repo.
950
00:52:22.039 --> 00:52:25.039
Yes, and this is already split in the base. However,
951
00:52:25.519 --> 00:52:27.920
you can have other tools. You can have other tools
952
00:52:27.960 --> 00:52:32.719
if you have a CLI twol called Steve right, or
953
00:52:32.760 --> 00:52:37.079
you have a I know, I think if that it
954
00:52:37.159 --> 00:52:42.039
doesn't exist, go book it trademark right here. So if
955
00:52:42.079 --> 00:52:43.559
you if you want to, if you want to create
956
00:52:43.599 --> 00:52:46.199
a tool like this, yes, you have to create your
957
00:52:46.239 --> 00:52:48.719
own package. You have to define what the run time
958
00:52:48.880 --> 00:52:52.960
to run. And basically all other packages can call stiff
959
00:52:53.639 --> 00:52:55.960
from its own package, which will be run with the
960
00:52:56.000 --> 00:53:00.639
specified run time. But for some tool which are kind
961
00:53:00.679 --> 00:53:04.639
of popular, let's put it in the web world, right.
962
00:53:05.159 --> 00:53:07.519
It doesn't have to be front end, but it's majorly
963
00:53:07.719 --> 00:53:10.360
This repository is kind of focused on the front ed
964
00:53:10.480 --> 00:53:14.079
side of the JavaScript rate, but it can be use alful,
965
00:53:14.119 --> 00:53:18.360
not just so it comes with some popular packages. I
966
00:53:18.360 --> 00:53:20.920
wouldn't say that all of them are favorable. I know,
967
00:53:21.039 --> 00:53:23.880
for example, Cypress is kind of going out of favor
968
00:53:24.000 --> 00:53:27.639
for years now, and some of them are because simply
969
00:53:27.760 --> 00:53:31.079
we have legacy and as a company we need to
970
00:53:31.159 --> 00:53:34.440
kind of pay attention. Once we started using a big
971
00:53:34.599 --> 00:53:37.960
thing like Cypress to do our integration and to intest,
972
00:53:38.480 --> 00:53:41.199
we kind of want to keep going to a certain point.
973
00:53:42.039 --> 00:53:44.920
So we have a package for Cypress for Jest for years,
974
00:53:45.000 --> 00:53:48.119
lind for even little things like DPDM that I mentioned
975
00:53:48.159 --> 00:53:52.239
that lesser known code checks for also build tools like
976
00:53:52.400 --> 00:53:56.800
web pack and other interesting cult checks by the way,
977
00:53:57.480 --> 00:53:59.920
and bi tools I mentioned. I think I mentioned likes
978
00:54:00.039 --> 00:54:03.400
con fixed as well. It's a it's another big topic,
979
00:54:03.519 --> 00:54:07.519
but there it's coming already there. So back to your question.
980
00:54:08.280 --> 00:54:11.280
You don't have to create separate packages for the things
981
00:54:11.280 --> 00:54:13.480
that exist, but for any other new tool that you
982
00:54:13.559 --> 00:54:15.360
want to introduce, you can create one.
983
00:54:18.199 --> 00:54:21.320
Okay, yeah, I think I'm gonna have to play with
984
00:54:21.400 --> 00:54:23.079
that at some point just to get my head around,
985
00:54:24.320 --> 00:54:26.599
head around and how it works. I certainly get the
986
00:54:26.679 --> 00:54:31.000
concept and it makes a lot of sense because yeah,
987
00:54:31.159 --> 00:54:35.480
I can speak from personal experience on version upgrades and
988
00:54:35.519 --> 00:54:38.440
version conflicts between different packages that they all depend on.
989
00:54:38.599 --> 00:54:45.800
So and now I want to maybe, let's say, for
990
00:54:46.320 --> 00:54:51.239
see one possible question that we might get when I
991
00:54:51.440 --> 00:54:56.760
mentioned this, right, we mentioned these effortless upgrades. You just
992
00:54:56.880 --> 00:55:00.360
pull in the latest changes from breakthrough freeball because it's
993
00:55:00.400 --> 00:55:03.599
a separate trip which keeps evolving. Credit your loan is
994
00:55:04.199 --> 00:55:06.880
from the time that you cloned it from or like
995
00:55:07.000 --> 00:55:09.519
copying now you can then upgrade and you get all
996
00:55:09.559 --> 00:55:14.159
the latest just yes, link typescripts or like the other tools. Now,
997
00:55:14.280 --> 00:55:17.519
maybe a question you have is like Buttanton, the new
998
00:55:17.599 --> 00:55:20.519
year is lint have a new algorithm and new rules
999
00:55:21.039 --> 00:55:25.320
and new maybe strictness. Right, maybe you even change the conflict,
1000
00:55:25.559 --> 00:55:28.679
the base conflict right the time extending in my application?
1001
00:55:30.239 --> 00:55:32.679
What does that mean that my entire application now will
1002
00:55:32.719 --> 00:55:36.920
like shout at me with red squiggles everywhere, right, Like,
1003
00:55:37.559 --> 00:55:40.239
I mean you only mentioned what is upgrading is lint
1004
00:55:40.280 --> 00:55:43.159
as its own thing, but what happens to my application
1005
00:55:43.239 --> 00:55:46.400
and my rules? And you'll be right to ask that
1006
00:55:46.800 --> 00:55:50.559
because if I didn't have an answer for that, this
1007
00:55:50.719 --> 00:55:53.559
is exactly what would have. Like you upgrade ye is
1008
00:55:53.639 --> 00:55:56.320
lint and all the conflict and suddenly in your editor
1009
00:55:56.559 --> 00:55:58.880
everything will be read. You'll not be able to commit,
1010
00:55:59.239 --> 00:56:01.320
your prs will just light up with like all the
1011
00:56:01.480 --> 00:56:03.880
errors that are coming in. And this is I think
1012
00:56:03.960 --> 00:56:07.800
where the interaction with Dan happened on Blue Sky. He
1013
00:56:08.239 --> 00:56:12.239
was talking about having a project with JavaScript or like
1014
00:56:12.360 --> 00:56:16.000
an older version of typescript and wanting to go to
1015
00:56:16.159 --> 00:56:20.559
newer version or more stricter or even just introduce typescript okay,
1016
00:56:21.199 --> 00:56:23.440
And this is kind of the same scenario, like changing
1017
00:56:23.960 --> 00:56:27.679
the islin conflict because if something in the code checks
1018
00:56:27.719 --> 00:56:30.239
become different and all of a sudden, all your code
1019
00:56:30.639 --> 00:56:34.480
screams that you and says like it's red. So how
1020
00:56:34.519 --> 00:56:36.440
do you jump over this hurdle? How do you go
1021
00:56:36.639 --> 00:56:40.480
from previously it was working, now with a little change,
1022
00:56:41.280 --> 00:56:45.400
it's now suddenly not working. And Don actually talked two
1023
00:56:45.480 --> 00:56:48.159
times on this podcast from the two years that I've
1024
00:56:48.199 --> 00:56:51.719
listened to prolifically about this topic, and you mentioned several
1025
00:56:51.800 --> 00:56:53.760
times like, oh man, this is a nightmare, and yes,
1026
00:56:54.280 --> 00:56:57.239
it is a nightmare because you don't have many options.
1027
00:56:57.320 --> 00:57:00.400
You have like okay, maybe only introduced for the type
1028
00:57:00.440 --> 00:57:03.159
script files and we don't check the JavaScript files, or
1029
00:57:03.199 --> 00:57:06.039
we only introduce a few checks but not all the
1030
00:57:06.159 --> 00:57:08.679
checks that we want, right because in the ideal world,
1031
00:57:08.800 --> 00:57:10.960
we have like a list of checks that we all
1032
00:57:11.039 --> 00:57:13.320
agree on that are good and this is how we
1033
00:57:13.360 --> 00:57:16.400
should be and we turn them on. But in this
1034
00:57:16.440 --> 00:57:21.000
scenario everything goes read. Okay, So what am I talking about?
1035
00:57:21.199 --> 00:57:24.039
What is the solution? It was proposed to me. It
1036
00:57:24.159 --> 00:57:27.639
wasn't original, as I said, even this repository, it's kind
1037
00:57:27.679 --> 00:57:31.440
of all going around t MPM with some more stuff
1038
00:57:31.559 --> 00:57:35.199
just around it. Right, So It was proposed to me
1039
00:57:35.239 --> 00:57:37.159
in a previous company I work with. It was the
1040
00:57:37.280 --> 00:57:41.119
idea of having an old project running with the strictest
1041
00:57:41.199 --> 00:57:45.159
possible CONFIIC for isling whatever you like, all the plugs
1042
00:57:45.199 --> 00:57:50.079
that you want, however, running a snapshot of all the
1043
00:57:50.320 --> 00:57:55.280
errors aka remembering in my file called anton dot ts.
1044
00:57:55.880 --> 00:57:59.679
I have five errors of this type, I have seven
1045
00:57:59.800 --> 00:58:04.559
error of this different type. I have twenty errors of undefined.
1046
00:58:04.639 --> 00:58:08.440
I have twenty more for console look that I don't
1047
00:58:08.480 --> 00:58:11.360
want to have in my file, right, and remembering that
1048
00:58:11.760 --> 00:58:13.920
for each file that you have in the repository, and
1049
00:58:14.119 --> 00:58:17.159
just having this kind of a mini registry. Imagine it
1050
00:58:17.280 --> 00:58:21.119
like adjacent file of like key value, found name, type
1051
00:58:21.159 --> 00:58:24.199
of error, how many found name, type of error how many?
1052
00:58:24.800 --> 00:58:29.239
And this is an invaluable resource in when upgrading and
1053
00:58:29.639 --> 00:58:34.079
going stricter, going to a better roule. Why because it
1054
00:58:34.280 --> 00:58:36.639
lets you see the problems. It lets all of your
1055
00:58:36.679 --> 00:58:40.480
developers see aha. Edit, my editor is saying this is
1056
00:58:40.559 --> 00:58:43.119
a problem, so I can focus on it, or I
1057
00:58:43.159 --> 00:58:46.639
can at least understand there's a better way. While your
1058
00:58:46.880 --> 00:58:50.079
CI checks at the point of upgrade, at the point
1059
00:58:50.119 --> 00:58:54.840
you make it stricter, still pass Why because you run yes, Lind,
1060
00:58:55.440 --> 00:59:00.320
but you also tell Eslin, hey ignore all of these
1061
00:59:00.480 --> 00:59:03.400
number of errors in these files. So if you have
1062
00:59:03.639 --> 00:59:09.840
five undefined like let's say errors in this file, then
1063
00:59:10.159 --> 00:59:13.639
you do a change. If there are still five or
1064
00:59:13.760 --> 00:59:17.840
less less than five, it's okay. If there's more than five,
1065
00:59:18.480 --> 00:59:21.320
then you scream and you fail the commit and you
1066
00:59:21.400 --> 00:59:24.320
fail the PR. So it's an approach that lets you
1067
00:59:24.440 --> 00:59:28.239
gradually kind of increase the checks but still remember the
1068
00:59:28.320 --> 00:59:31.960
status quore like not forcing you to change all of
1069
00:59:32.039 --> 00:59:35.280
your code today. So I think this is where the
1070
00:59:37.280 --> 00:59:41.320
let's say the breakproof part comes in. It allows you
1071
00:59:41.440 --> 00:59:45.119
to keep going on. It gives you the errors, it
1072
00:59:45.239 --> 00:59:48.079
tells you what they are, It lets you upgrade. All
1073
00:59:48.159 --> 00:59:50.760
of the tools live in isolation, but it lets you
1074
00:59:50.880 --> 00:59:54.039
keep going on. Of course, you can plant tech that
1075
00:59:54.199 --> 00:59:56.639
you have to plant right when to do it, but
1076
00:59:56.760 --> 00:59:59.480
it doesn't force you to do it now, and still
1077
01:00:00.079 --> 01:00:03.760
lets you use newer stuff because newer stuff don't don't
1078
01:00:03.840 --> 01:00:06.800
come only with stick the stuff. They also come with improvements,
1079
01:00:07.159 --> 01:00:10.920
maybe performance, maybe like a different kind of built, maybe
1080
01:00:11.000 --> 01:00:13.320
a new feature that you've waited so much in typescript
1081
01:00:13.800 --> 01:00:17.159
four point eight. I know that's your opinion. Specifically on
1082
01:00:17.239 --> 01:00:20.119
This is not about typescript. But let's say yes Lin
1083
01:00:20.480 --> 01:00:23.079
or you change from Yeslin to another too. You want
1084
01:00:23.079 --> 01:00:25.760
to remember the new set of errors. You don't want
1085
01:00:25.800 --> 01:00:29.039
to fix them. Now, Okay, a lot of talking. I'm
1086
01:00:29.039 --> 01:00:33.280
gonna pause again, but that's that's how we handle the flawless.
1087
01:00:33.400 --> 01:00:37.280
Let's say the interrupted upgrade. You get the new version,
1088
01:00:37.679 --> 01:00:43.840
you snapshot if there's any problems, and you keep going, gotcha.
1089
01:00:44.440 --> 01:00:49.840
Okay, yeah, that makes sense again, something I probably want
1090
01:00:49.840 --> 01:00:52.199
to play with a little more before it can ask
1091
01:00:52.280 --> 01:00:55.360
any good questions before we wrap up. I will know
1092
01:00:55.519 --> 01:00:57.599
one thing in here. I'm just looking at the directory
1093
01:00:57.719 --> 01:01:02.559
structure and I noticed you have charactors for configured for GitHub,
1094
01:01:03.039 --> 01:01:07.079
for idea, which is basically all the jet Brains tools,
1095
01:01:07.320 --> 01:01:11.960
and then vias code as well. These are the standard
1096
01:01:12.960 --> 01:01:15.199
What kind of settings are you keeping? There's any number
1097
01:01:15.199 --> 01:01:16.639
of settings you can put in there, So what kind
1098
01:01:16.639 --> 01:01:17.960
of stuff do you have in those directors?
1099
01:01:19.639 --> 01:01:21.840
I love the questions. I mean, I told it probably
1100
01:01:21.960 --> 01:01:24.840
many times, but this is an excellent question because many
1101
01:01:24.960 --> 01:01:28.760
of the more ripple tools that I mentioned there, they exist, right,
1102
01:01:30.199 --> 01:01:33.599
They help you manage it, and they give you tools
1103
01:01:33.679 --> 01:01:38.199
to and like descriptions somewhere online documentation of how to
1104
01:01:38.320 --> 01:01:42.559
configure your development environment, like how to configure intelligence, how
1105
01:01:42.639 --> 01:01:47.400
to configure VIAS code to better best work with this report.
1106
01:01:47.960 --> 01:01:51.280
But in the company, we're okay. We wanted this to
1107
01:01:51.360 --> 01:01:54.320
be seamless, like we don't want to ask developers to
1108
01:01:54.360 --> 01:01:57.760
readocumentation and each of them follow each steps. Maybe someone
1109
01:01:57.840 --> 01:02:00.440
didn't read one step they contact us us, Hey, this
1110
01:02:00.599 --> 01:02:03.719
doesn't work, right, Okay, I see you know then you
1111
01:02:03.840 --> 01:02:07.119
know that you know the drill. So we added some
1112
01:02:07.280 --> 01:02:11.320
based configuration that we know. And because we know this
1113
01:02:11.519 --> 01:02:14.280
repository setup, we know how it's managed, right, we know
1114
01:02:14.360 --> 01:02:17.440
all the tools, we know how to run the tools,
1115
01:02:18.159 --> 01:02:20.159
and we know how to kind of configure your editor.
1116
01:02:21.079 --> 01:02:24.360
So we went and went with a base configuration for
1117
01:02:24.440 --> 01:02:28.360
your editor, plus a CLI that you can run to
1118
01:02:28.559 --> 01:02:31.239
kind of onboard. You It's like if you run pmp
1119
01:02:31.559 --> 01:02:33.559
te us a command I don't remember, Behart, but if
1120
01:02:33.599 --> 01:02:36.400
you ru in command let's say PMPM breakproof on board
1121
01:02:36.920 --> 01:02:39.519
and to ask you what is your editor? There we
1122
01:02:39.639 --> 01:02:42.960
go and you'll structure. I will now set up the
1123
01:02:43.079 --> 01:02:46.320
base settings for this repot. So it's best for the
1124
01:02:46.440 --> 01:02:50.880
initial introduction, so to configure let's say yeslint in your VSCO,
1125
01:02:51.039 --> 01:02:53.760
you configure eslint running for jet brain, so you don't
1126
01:02:53.800 --> 01:02:56.480
have to forget. I've seen it so many times. You
1127
01:02:56.559 --> 01:02:59.239
get a new project, you open it up, islin doesn't work,
1128
01:02:59.400 --> 01:03:01.400
or a diferent version of Yeslin. By the way, it's
1129
01:03:01.440 --> 01:03:05.400
possible to run like this is total possibility, even vs code.
1130
01:03:05.480 --> 01:03:07.440
I'm not sure how many people know. It comes with
1131
01:03:07.559 --> 01:03:10.639
a built in versions for these kind of tools like typescript,
1132
01:03:10.960 --> 01:03:13.920
and by default it will run them, not your version,
1133
01:03:14.760 --> 01:03:18.000
so you get different kind of verse in your editor
1134
01:03:18.280 --> 01:03:20.480
that the ones that you get when you built, which
1135
01:03:20.519 --> 01:03:25.079
is super confusing. So yes, thank you for the question.
1136
01:03:25.280 --> 01:03:28.159
This is what these repositories are. And there's one for
1137
01:03:28.280 --> 01:03:31.599
gifthooks basically, which is the things that will run automatically
1138
01:03:31.679 --> 01:03:35.519
for you on pre comitt Because why because it comes
1139
01:03:35.559 --> 01:03:39.079
in with some like structure and conventions that you can follow.
1140
01:03:40.280 --> 01:03:43.920
Like all of it is nothing like separate packages and
1141
01:03:44.199 --> 01:03:47.400
additional abstractions. It's just a convention for your own package.
1142
01:03:48.119 --> 01:03:51.199
For example, as long as you have a pre commit
1143
01:03:51.320 --> 01:03:54.480
script maybe or I think it was called linked pre commit.
1144
01:03:54.840 --> 01:03:58.119
As long as you have this script in your packageation
1145
01:03:58.519 --> 01:04:01.760
it will specifically run it before you commit. You don't
1146
01:04:01.800 --> 01:04:05.079
need do any additional configuration, and it's all possible because
1147
01:04:05.119 --> 01:04:08.920
it knows it's managed with PMPM. Okay, I'm gonna post here.
1148
01:04:08.960 --> 01:04:09.079
I know.
1149
01:04:09.159 --> 01:04:10.119
Were kind of wrapping up, so.
1150
01:04:10.320 --> 01:04:16.400
Yeah, yeah, or if my case, you you just skip
1151
01:04:16.519 --> 01:04:18.559
the pre commit hook sometimes just to get a committed
1152
01:04:24.880 --> 01:04:29.199
We won't talk about that. Uh yeah. So we sort
1153
01:04:29.199 --> 01:04:30.800
of hit a time limit here, so we need to
1154
01:04:30.840 --> 01:04:35.639
start wrapping up. So before we get to picks, was
1155
01:04:35.679 --> 01:04:38.679
there anything two questions? One, was there anything that you
1156
01:04:38.760 --> 01:04:42.639
wanted to cover that we didn't cover about this repel?
1157
01:04:43.800 --> 01:04:46.719
Yes, I'm not a fast talk or maybe i am,
1158
01:04:46.840 --> 01:04:50.440
but I'm I'm not able to be super concise. Maybe
1159
01:04:50.480 --> 01:04:52.159
the one thing that we didn't cover, like we can
1160
01:04:52.239 --> 01:04:55.280
go into more details, I don't know later on is
1161
01:04:55.320 --> 01:04:59.199
the fact that because the repository is so integrated, as
1162
01:04:59.239 --> 01:05:02.719
you see right, editors packages that are already there, right,
1163
01:05:03.440 --> 01:05:06.559
it comes in with understanding of the structure of the repository.
1164
01:05:07.719 --> 01:05:12.400
So it comes in with already working CI, already knowing
1165
01:05:12.639 --> 01:05:15.559
what to run on your pr, already knowing how to
1166
01:05:15.719 --> 01:05:19.199
publish your package to MPM registry. All of the things
1167
01:05:19.320 --> 01:05:22.679
are there and they work very well with the repository
1168
01:05:22.719 --> 01:05:27.679
because they understand it. So it's not only a management
1169
01:05:27.719 --> 01:05:31.360
for dependencies and project it's also for you to eliminate
1170
01:05:31.440 --> 01:05:33.519
the step of like, oh I need to set up
1171
01:05:33.559 --> 01:05:37.159
now jobs for end to end testing, for publishing, for deploying,
1172
01:05:37.679 --> 01:05:41.400
for checks. All of it is there, configured with like
1173
01:05:41.760 --> 01:05:44.159
concurrency and everything that you need. But yeah, that's my
1174
01:05:44.239 --> 01:05:47.280
short answer. Yes, I did have something I didn't cover.
1175
01:05:48.480 --> 01:05:52.599
So okay, all right, well thank you. This is uh
1176
01:05:54.000 --> 01:05:54.719
my brain hurts.
1177
01:05:55.599 --> 01:05:56.840
I'm sorry.
1178
01:05:57.519 --> 01:06:00.519
Sorry, that's quite a right. Yeah, there's a there's a
1179
01:06:01.079 --> 01:06:03.320
classic are if youamiliar with the fire side, there's a
1180
01:06:03.440 --> 01:06:06.400
real famous cartoon here. I'm not in a state. Oh
1181
01:06:06.559 --> 01:06:10.519
it's awesome. I look it up online. There's this guy.
1182
01:06:10.679 --> 01:06:14.039
There're just you know, one panel cartoons, and there's a
1183
01:06:14.119 --> 01:06:17.960
famous one where he shows a kid in class raising
1184
01:06:18.119 --> 01:06:20.440
his hands. Excuse me? Can I leave class? My brain
1185
01:06:20.559 --> 01:06:24.159
is full? So that's right. Look that up that I'll
1186
01:06:24.199 --> 01:06:25.320
make that as a pick. I don't know where to
1187
01:06:25.360 --> 01:06:29.559
find it online, but it's awesome, all right. And then
1188
01:06:29.920 --> 01:06:33.079
if people want to follow you and give you money,
1189
01:06:33.119 --> 01:06:36.079
your read more about this stuff? Where are the best
1190
01:06:36.119 --> 01:06:37.039
places to do that.
1191
01:06:37.639 --> 01:06:41.719
Okay, I'll start with the project it's breakproof dev. It
1192
01:06:41.800 --> 01:06:46.039
will just redirect you to the repo Breakproof Death. Otherwise,
1193
01:06:46.079 --> 01:06:49.920
for me personally, I use blue Sky. Not extremely active,
1194
01:06:49.960 --> 01:06:54.320
but I'm there. I respond to messages. That's my kind
1195
01:06:54.360 --> 01:06:58.760
of a small area of social online life, sometimes LinkedIn,
1196
01:06:59.079 --> 01:06:59.840
sometimes linking.
1197
01:07:00.480 --> 01:07:02.719
Well, that's it, and what are you on blue Sky?
1198
01:07:03.800 --> 01:07:10.559
I'm Dev So it's my family name Dev. Yes drinks.
1199
01:07:10.960 --> 01:07:15.079
Alrighty, Well, with that, we will shift the picks Pixar,
1200
01:07:15.280 --> 01:07:17.920
the part of the program where we get to talk
1201
01:07:17.920 --> 01:07:22.360
about anything. We want to talk about, anything from games
1202
01:07:22.360 --> 01:07:26.880
to books, to food, to movies, to social issues, you
1203
01:07:27.000 --> 01:07:29.840
name it. I'm going to stick in the tech realm
1204
01:07:30.119 --> 01:07:35.639
and reference blog posts that I mentioned earlier called the
1205
01:07:35.719 --> 01:07:38.840
many many many JavaScript run times of the last decade.
1206
01:07:38.920 --> 01:07:44.480
It's on buttondown dot com whatever underscore Jamie, and it
1207
01:07:44.639 --> 01:07:48.360
is amazing just all of the drun times that are
1208
01:07:48.360 --> 01:07:52.480
out there that he talks about, whether it's TVs, UH
1209
01:07:53.159 --> 01:07:57.559
operating systems and native apps and micro controllers and edge
1210
01:07:57.599 --> 01:08:01.119
computing and so on. And at the end he gives
1211
01:08:01.119 --> 01:08:04.119
a little summary. He says this was published in June
1212
01:08:04.280 --> 01:08:06.079
of this year. I think it was June twenty seventh
1213
01:08:06.119 --> 01:08:09.119
to twenty five. And at the end he gives a
1214
01:08:09.119 --> 01:08:11.920
little summary. He says he started he started working on
1215
01:08:12.039 --> 01:08:16.560
this in April of twenty twenty four and stretch the
1216
01:08:16.600 --> 01:08:18.920
limits of button down. I guess that's the platform here
1217
01:08:19.079 --> 01:08:22.000
edit history at over five two hundred and sixty revisions
1218
01:08:22.920 --> 01:08:26.880
whoa before by August of that month. So yeah, even
1219
01:08:26.920 --> 01:08:29.880
then he still doesn't think it's finished. But yeah, it's
1220
01:08:29.880 --> 01:08:33.239
a great interesting if you're into this type of stuff.
1221
01:08:33.279 --> 01:08:37.479
It's a great blog post. And then with that we'll
1222
01:08:37.560 --> 01:08:40.199
switch to the dad jokes of the week, which are
1223
01:08:40.880 --> 01:08:43.119
the high point of any of these episodes, as any
1224
01:08:43.319 --> 01:08:46.720
fan will tell you. So we'll start out. My wife
1225
01:08:46.840 --> 01:08:48.159
was mad at me because I woke her up at
1226
01:08:48.239 --> 01:08:51.600
three o'clock am, but I just wanted to tell her
1227
01:08:51.680 --> 01:08:53.279
that she forgot to take her sleeping pills.
1228
01:08:55.720 --> 01:08:55.960
Thanks you.
1229
01:08:57.640 --> 01:09:00.560
I think everybody knows the movie Jaws. You know about
1230
01:09:00.840 --> 01:09:05.359
the shark? Did you know that if you watch it backwards,
1231
01:09:06.000 --> 01:09:08.479
it's actually a heartwarming story about a shark who gives
1232
01:09:08.600 --> 01:09:15.000
arms and legs to people who need them. And then
1233
01:09:15.079 --> 01:09:17.760
recently I saw a story about a man who's suing
1234
01:09:19.000 --> 01:09:22.800
company that makes a product called smart water for not
1235
01:09:23.039 --> 01:09:25.319
making him smart. I'm not sure what he was thinking,
1236
01:09:25.520 --> 01:09:28.479
but along those lines, I would like to formally announce
1237
01:09:28.600 --> 01:09:34.640
my lawsuit against thin mits because they really don't make
1238
01:09:34.680 --> 01:09:38.479
it thin. So those are my picks god jokes of
1239
01:09:38.520 --> 01:09:39.960
the week. What do you have for a santon?
1240
01:09:40.720 --> 01:09:44.279
I am trying to find the translation for it in English.
1241
01:09:44.520 --> 01:09:47.960
Give me a sack, but I both like it's a
1242
01:09:48.039 --> 01:09:52.640
kitchen thing. It's a kitchen thing, and I amazed my
1243
01:09:52.720 --> 01:09:57.640
father with it. Give me a second, give me a second,
1244
01:09:57.720 --> 01:10:01.079
ah a second? Oh yeah, and.
1245
01:10:01.039 --> 01:10:02.520
I'm gonna yeah, pretty famous.
1246
01:10:03.359 --> 01:10:06.119
What is that the time limit? Oh no, no, pom
1247
01:10:06.239 --> 01:10:12.600
gran pomegranate, pomegranate, pomogrand Okay, I'm sorry, I mean pronunciation ship.
1248
01:10:12.720 --> 01:10:16.399
I know, so pommegrant is kind of a famously messy
1249
01:10:17.239 --> 01:10:21.159
to open it and clean it, and I love it. Yeah,
1250
01:10:21.199 --> 01:10:24.000
it's true. It's the fruit. It's like a red fruit.
1251
01:10:24.119 --> 01:10:27.600
It's prolific in let's say, Grease, which is like a
1252
01:10:27.640 --> 01:10:30.880
neighboring country here in Bulgaria. Uh and it is also
1253
01:10:31.119 --> 01:10:33.920
part of the south parts is there and my dad,
1254
01:10:34.000 --> 01:10:37.640
as a person coming from there, I loves this loves this.
1255
01:10:37.880 --> 01:10:39.680
I mean when I was growing up, it was just
1256
01:10:40.039 --> 01:10:43.920
pomegranate and pomegran pomegranate, like any any time it's is
1257
01:10:44.000 --> 01:10:46.880
the season, and of course it's like a special type
1258
01:10:46.920 --> 01:10:49.920
of like opening it and getting the seeds out, et cetera.
1259
01:10:50.199 --> 01:10:52.760
And I recently, I just I don't know, brows online
1260
01:10:52.960 --> 01:10:57.000
is kind of a shopping, anti depressing, running away from
1261
01:10:57.039 --> 01:11:01.000
reality moment. So I ended up at the kitchen tool
1262
01:11:01.399 --> 01:11:04.640
that you kind of put the pomegranate on, and it
1263
01:11:04.760 --> 01:11:07.760
comes with a little hammer, like it's super good. Comes
1264
01:11:07.800 --> 01:11:10.920
with a little hammer, and it removes the mess from
1265
01:11:11.000 --> 01:11:13.960
getting the seeds out, and it keeps the pieces that
1266
01:11:14.119 --> 01:11:16.800
host the seeds out of the seeds. It's amazing. Like
1267
01:11:16.960 --> 01:11:19.560
I know, maybe I'm not doing a good service and
1268
01:11:19.600 --> 01:11:24.000
a job describing it. It's a pomegranate cleaning tool or whatever.
1269
01:11:24.319 --> 01:11:27.800
And I love it. Only the fact that it amazed
1270
01:11:27.840 --> 01:11:30.760
my dad when I showed how this works was worth
1271
01:11:31.319 --> 01:11:35.079
so highly highly recommend that anyway. And it's called what
1272
01:11:35.920 --> 01:11:39.479
I pomegranate too, Like there's no real name, there's no
1273
01:11:39.600 --> 01:11:41.800
product name, to be honest, Like I think it was
1274
01:11:41.920 --> 01:11:45.720
like yeah, like I couldn't find like a brand that
1275
01:11:45.840 --> 01:11:49.640
sells it. It was like a random websites to be honest.
1276
01:11:50.840 --> 01:11:53.159
All of them have like a different brand names, so
1277
01:11:53.199 --> 01:11:55.680
I'm not sure there's like a one origin brand that
1278
01:11:55.960 --> 01:11:56.439
created this.
1279
01:11:58.359 --> 01:12:02.640
Yeah. Amazon's got a few pomegranate tool Yeah, yeah, I
1280
01:12:02.720 --> 01:12:05.960
mean yes, Oh, I think I see this, Okay, Yeah?
1281
01:12:06.479 --> 01:12:07.520
Is it like you think?
1282
01:12:07.960 --> 01:12:11.079
What I'm seeing has like a bowl and then a piece.
1283
01:12:10.840 --> 01:12:14.119
Of it's a little metal bowl. Yes, it's almost like
1284
01:12:14.159 --> 01:12:16.680
a sie. If there's like a little bowl that is
1285
01:12:17.039 --> 01:12:19.760
exactly the size of a pomegranate, it looks like this
1286
01:12:20.199 --> 01:12:23.039
lemon squeezers. There's no squeezing kin. Yes, but you put
1287
01:12:23.439 --> 01:12:26.640
the bommegranate on it and use the little hammer. It's
1288
01:12:26.760 --> 01:12:29.479
just ridiculous. It's just ridiculous when you think about it,
1289
01:12:29.600 --> 01:12:32.199
like being in the kitchen having a little wooden hammer
1290
01:12:32.520 --> 01:12:34.960
with it and just knocking out the seats. I mean,
1291
01:12:35.199 --> 01:12:37.520
I love all all of it and how it functions,
1292
01:12:37.600 --> 01:12:41.079
the efficiency of it, and by kind of the my
1293
01:12:41.239 --> 01:12:44.479
wife coming in and just looking at me hammering away
1294
01:12:44.640 --> 01:12:46.800
at the pomegrap I love all of it.
1295
01:12:48.239 --> 01:12:51.960
Yeah. Yeah. Pomegran Appeeler twenty twenty four. There's a few
1296
01:12:52.000 --> 01:12:54.319
different options amazing.
1297
01:12:54.359 --> 01:12:57.119
I know, ridicular spick that could have picked so much
1298
01:12:57.359 --> 01:12:57.840
other stuff.
1299
01:12:58.039 --> 01:13:01.399
Yeah, the life hack type, those are the best ones
1300
01:13:01.640 --> 01:13:05.359
that helped solve the little problems. Cool for sure. All right,
1301
01:13:05.760 --> 01:13:08.000
well we're going to wrap up. Thank you Anton for
1302
01:13:08.159 --> 01:13:10.159
coming on telling us about your project. I know there
1303
01:13:10.199 --> 01:13:12.760
are many people out there that use mono repos and
1304
01:13:13.199 --> 01:13:15.000
as I sort of mentioned off there, we have a
1305
01:13:15.560 --> 01:13:18.000
project that we're looking to move forward open sourcing in
1306
01:13:18.039 --> 01:13:21.439
a mono repot type of structure. So so that will
1307
01:13:21.520 --> 01:13:23.760
be uh definitely a tool to look at.
1308
01:13:24.439 --> 01:13:26.239
Thank you for having me, Thank you for having me.
1309
01:13:26.279 --> 01:13:30.079
My pleasure, pleasure, pleasure. All right, thanks everybody for listening,
1310
01:13:30.199 --> 01:13:32.439
and we'll talk to you next time on JavaScript ever.
1
00:00:05.080 --> 00:00:08.759
Hello, everybody, Welcome to another thrilling episode of JavaScript Jabber.
2
00:00:08.800 --> 00:00:10.759
I am Steve Edwards, the host with the face for
3
00:00:10.919 --> 00:00:13.240
radio and the voice for being of mine. But I'm
4
00:00:13.279 --> 00:00:16.719
still your host. I'm flying solo today on the panel.
5
00:00:16.800 --> 00:00:20.000
Dan is on vacation. Chuck has this name thing called work,
6
00:00:20.399 --> 00:00:22.320
you know that gets in the way of the podcast,
7
00:00:22.440 --> 00:00:26.600
And so you're suck with me today. But a very
8
00:00:26.640 --> 00:00:29.879
special gift, mister Anton stoychef, how are you doing? Anton?
9
00:00:30.199 --> 00:00:33.079
Pretty good? It pretty good? Thank you good?
10
00:00:33.159 --> 00:00:35.079
It's uh oh yeah. I forgot to give weather update.
11
00:00:35.640 --> 00:00:37.880
The great here in Portland. The summer has been awesome
12
00:00:37.960 --> 00:00:40.640
up until this week, and starting yesterday the rain came in,
13
00:00:40.759 --> 00:00:44.600
so it sucks. I miss my sunshine. And Dan always
14
00:00:44.600 --> 00:00:46.359
gives his update about how it's hot and dry and
15
00:00:46.359 --> 00:00:47.960
Tel Aviv, and I'm so jealous.
16
00:00:48.359 --> 00:00:51.679
I have these kind of updates very much often. I
17
00:00:51.719 --> 00:00:54.200
work with Esa ellis in there constantly. I was a
18
00:00:54.280 --> 00:00:56.840
nice day at the beach. It was a fantastic day today.
19
00:00:56.840 --> 00:01:00.399
The water was perfect and it was a freezing kind.
20
00:01:00.240 --> 00:01:07.200
Of over here right right, So before we get started,
21
00:01:07.239 --> 00:01:09.799
why don't you just give us the background on who
22
00:01:09.840 --> 00:01:12.480
you are, what you do where you work, why people
23
00:01:12.519 --> 00:01:13.760
should give you money, etcetera.
24
00:01:14.280 --> 00:01:19.680
Absolutely, so again thank you for introducing me, Amanton. I
25
00:01:19.719 --> 00:01:23.599
am currently working at Joppo as a core platform team
26
00:01:23.879 --> 00:01:27.040
in front time Infrastructure officially name right, so it's a
27
00:01:27.120 --> 00:01:30.719
team serving the whole company and other developers within it.
28
00:01:31.480 --> 00:01:34.359
I've been doing this kind of thing front time JavaScript
29
00:01:34.760 --> 00:01:36.879
whatever you want to call it, like JavaScript on a
30
00:01:37.000 --> 00:01:40.959
spectors let's call it. Even touched in the good old
31
00:01:41.040 --> 00:01:44.439
days a PHP kind of a templating world, the websites
32
00:01:44.519 --> 00:01:48.040
and web press and ages ago boy, yes, like I
33
00:01:48.079 --> 00:01:51.000
don't know, twenty years ago or something like this. I'm
34
00:01:51.040 --> 00:01:55.200
not sure. So from is support until today kind of
35
00:01:55.239 --> 00:01:59.640
the world. That's me And I've naturally had like the
36
00:01:59.680 --> 00:02:03.519
design or interest into the nitty gritty stuff front end,
37
00:02:03.840 --> 00:02:07.319
How do we get there? How does the production work?
38
00:02:07.400 --> 00:02:09.919
Like what do we do to make it super fast?
39
00:02:09.919 --> 00:02:12.319
But how does that piece work? How do CD ends work?
40
00:02:12.639 --> 00:02:15.520
And I kind of naturally ended up doing this kind
41
00:02:15.520 --> 00:02:20.400
of thing, which is built optimizations, tooling, optimizing the tools,
42
00:02:20.400 --> 00:02:23.800
making sure they work, and making sure upgrades work. How
43
00:02:23.800 --> 00:02:26.520
do we release? How do we upgrade? And this is
44
00:02:26.560 --> 00:02:28.800
the sort of thing that the team does. Of course,
45
00:02:28.840 --> 00:02:32.759
alongside core stuff like design system. I think most companies
46
00:02:32.800 --> 00:02:37.039
have that, like a core team, Like most largish companies
47
00:02:37.080 --> 00:02:39.319
have that, like a core team that kind of serves
48
00:02:39.360 --> 00:02:41.759
the rest of the company and tries to make the
49
00:02:41.800 --> 00:02:46.000
developer experience either better, faster, whatever you want to call it.
50
00:02:47.639 --> 00:02:49.240
That well, I guess that depends on the size of
51
00:02:49.240 --> 00:02:49.800
the company.
52
00:02:50.080 --> 00:02:51.080
Sure, sure, sure sure.
53
00:02:52.319 --> 00:02:55.039
My previous place, I was on developer team, and I
54
00:02:55.080 --> 00:02:57.800
was also doing a lot of the core stuff and
55
00:02:58.000 --> 00:03:00.879
you know, tools and infrastructure to you sort of the
56
00:03:00.960 --> 00:03:04.159
many hats type of things. So I suppose when you
57
00:03:04.159 --> 00:03:05.479
get to a larger company and you can have a
58
00:03:05.520 --> 00:03:09.039
separate team just for that versus you know, the developers itself,
59
00:03:09.080 --> 00:03:10.000
and that would be nice.
60
00:03:10.360 --> 00:03:12.919
This is like a natural revolution. I think in previous company,
61
00:03:12.919 --> 00:03:15.960
I was like, ah, but who who is responssible for that? Okay,
62
00:03:16.039 --> 00:03:18.199
I will be the responsible person for that. So it
63
00:03:18.360 --> 00:03:22.199
naturally evolved finally finding a place that has attention to
64
00:03:22.240 --> 00:03:25.439
detail enough to like and kind of treasures and have
65
00:03:25.680 --> 00:03:29.240
maybe legacy enough to pay attention to, like, Okay, we
66
00:03:29.360 --> 00:03:32.479
need that team to kind of improve the situation. That's
67
00:03:32.520 --> 00:03:34.960
usually what I think what happens like or from the
68
00:03:35.000 --> 00:03:37.759
beginning somewhere. They already experienced that in a previous place,
69
00:03:38.159 --> 00:03:39.960
so they set it up from the core from the
70
00:03:40.000 --> 00:03:40.319
get go.
71
00:03:42.360 --> 00:03:44.800
Yeah, so let's go back real quick. So you mentioned PHP.
72
00:03:44.960 --> 00:03:49.439
I came a bit very similar to you. Oh, he
73
00:03:49.680 --> 00:03:51.159
started with PHP and I still do a lot of
74
00:03:51.159 --> 00:03:55.080
PHP with Laravelle okay, which I love to work with
75
00:03:55.159 --> 00:03:56.199
La Belle and you and a nurse.
76
00:03:56.280 --> 00:03:58.280
By the way, I was one of the first few
77
00:03:58.319 --> 00:04:00.680
people like a lot of version. I don't know how much,
78
00:04:00.719 --> 00:04:04.439
like zero points something. It was, Yeah, it was. I
79
00:04:04.439 --> 00:04:08.199
think it grew explosively, like I did not expect lave
80
00:04:08.400 --> 00:04:10.479
to become such a I remember the days of zend
81
00:04:10.560 --> 00:04:15.080
framework and yes and the such I don't know, like, well, Ei, there's.
82
00:04:15.000 --> 00:04:20.560
A let's see. I remember nuke PHP okay, kke php,
83
00:04:20.720 --> 00:04:25.360
which is still around PHP nuke pH what that was?
84
00:04:25.519 --> 00:04:27.600
I did some of my first websites. I just didn't
85
00:04:27.600 --> 00:04:29.759
plane PHP.
86
00:04:29.639 --> 00:04:36.120
No SAM SAM framework, no templating, just like combining HTMLA
87
00:04:36.720 --> 00:04:37.560
oh god.
88
00:04:37.680 --> 00:04:40.279
Well then you're talking about the templating. That just brings
89
00:04:40.319 --> 00:04:44.600
back nightmares because I was at a few years ago,
90
00:04:44.800 --> 00:04:46.560
the last the last couple of years that I was
91
00:04:46.560 --> 00:04:48.319
in the droupile world. So I lived in the droupile
92
00:04:48.360 --> 00:04:51.040
world for you know, from the That was what first
93
00:04:51.040 --> 00:04:53.079
got me in well developments druple because I got tired
94
00:04:53.079 --> 00:04:54.759
of writing my own thing like many people, and so
95
00:04:54.800 --> 00:04:56.720
I found the CMS and I lived in that world
96
00:04:56.720 --> 00:05:02.879
professionally up until probably about twenty ninety. But I was
97
00:05:02.920 --> 00:05:09.439
at a very huge, large multinational corporation and we were
98
00:05:09.480 --> 00:05:15.439
converting an old website based on Microsoft Server two thousand
99
00:05:15.519 --> 00:05:19.639
and classic ASP, not SP don that Classic ASP to
100
00:05:19.800 --> 00:05:24.959
Druple seven with the patch and solar and some other things.
101
00:05:25.480 --> 00:05:28.319
But they had decided, because of the whole fear about
102
00:05:28.439 --> 00:05:30.560
SEO and jobascript frameworks back in the day, to stick
103
00:05:30.600 --> 00:05:33.519
with jupo on the front end and the built in
104
00:05:33.560 --> 00:05:36.879
PHP template at the time, and I got tasked with
105
00:05:38.360 --> 00:05:42.480
caching and I still have nightmares about that to this day.
106
00:05:42.560 --> 00:05:48.319
About cashing with PHP templating, I mean, cashing.
107
00:05:48.160 --> 00:05:50.720
On its own, even if you don't combine it with
108
00:05:50.759 --> 00:05:54.199
like a CMS, is a mess because it only takes
109
00:05:54.240 --> 00:05:58.279
one person to just forget something or like not to
110
00:05:58.399 --> 00:06:01.639
have like guardrails and do something wrong and then you
111
00:06:01.639 --> 00:06:03.560
get the productionich right.
112
00:06:03.879 --> 00:06:06.199
Well, you know they say that the two hardest things
113
00:06:06.279 --> 00:06:10.079
in computer programming are naming things cash and validation off
114
00:06:10.120 --> 00:06:14.319
by one by one errors, you know. So so yeah,
115
00:06:14.360 --> 00:06:16.439
I can. I can botch that anyway I can. And
116
00:06:16.480 --> 00:06:18.839
then you talk about it six and I can remember,
117
00:06:19.680 --> 00:06:25.000
you know, designers would literally charge extra because they had
118
00:06:25.040 --> 00:06:28.600
to accommodate for I E. Six abnormalities in their CSS.
119
00:06:28.839 --> 00:06:29.279
Oh yeah.
120
00:06:29.879 --> 00:06:32.120
And then when it finally died, it was at a
121
00:06:32.199 --> 00:06:36.720
Drupal con in New Orleans in like twenty thirteen twenty fourteen,
122
00:06:36.839 --> 00:06:39.600
literally had a parade celebrating the death of eighty six
123
00:06:39.639 --> 00:06:43.120
and micro Microsoft finally said, Okay, we're not supporting it anymore.
124
00:06:43.519 --> 00:06:45.720
But the next thing was I E. Eleven. Like that was
125
00:06:45.759 --> 00:06:48.079
like a you know, like there was a phases of
126
00:06:48.120 --> 00:06:51.160
I E. That people were like dreadful about.
127
00:06:51.360 --> 00:06:53.680
Yeah, until you got to edgyum, you know, or you
128
00:06:53.720 --> 00:06:57.319
know that's whatever you call the when they finally changed engines.
129
00:06:57.519 --> 00:06:58.959
Yeah, chromium based eight.
130
00:06:59.519 --> 00:07:02.959
Yeah. So yeah, yeah, it sounds like we've been through
131
00:07:02.959 --> 00:07:05.279
some of the same same wars.
132
00:07:05.360 --> 00:07:08.360
I think it's kind of like edge based edge based,
133
00:07:08.800 --> 00:07:11.759
So once you start web development early on, you can't
134
00:07:11.759 --> 00:07:15.160
even inevitably going through these trenches, which I find to
135
00:07:15.199 --> 00:07:18.279
be super helpful, Like I love to have gone through this.
136
00:07:18.439 --> 00:07:21.240
I like, I don't think of them like, oh, wasted
137
00:07:21.279 --> 00:07:23.680
my life or something like this. I think I've gained
138
00:07:24.279 --> 00:07:29.279
super useful knowledge even for today's work, where like asking AI, like,
139
00:07:29.319 --> 00:07:31.600
oh can you do this for me? Yes? Thanks?
140
00:07:32.319 --> 00:07:35.439
Right, Remember the days of figuring it out?
141
00:07:36.800 --> 00:07:39.279
I mean they're not gone. I can I can spend
142
00:07:39.360 --> 00:07:42.759
like two days talking about my day to day configuring
143
00:07:43.079 --> 00:07:46.560
CD and stuff and like going through documentation, asking KI
144
00:07:46.639 --> 00:07:49.240
together with me and not being able to figure out stuff.
145
00:07:49.279 --> 00:07:53.079
So I mean it's not gone, It's still there, right.
146
00:07:53.160 --> 00:07:55.800
I had one of my favorite interviews I did on
147
00:07:55.839 --> 00:07:59.079
another podcast, Views on Views with Taylor well Blaara Bell,
148
00:08:00.120 --> 00:08:04.480
and he was asking us about our thoughts on where
149
00:08:05.040 --> 00:08:07.959
Larravelle should go in terms of just focusing on PHP
150
00:08:08.120 --> 00:08:10.560
back end or focusing on the front end framework. And
151
00:08:11.319 --> 00:08:14.079
we talked about the pendulum switch, where you know, when
152
00:08:14.120 --> 00:08:16.240
you and I started, you learned from the back end.
153
00:08:16.240 --> 00:08:18.000
You started with a lampstack and you had to know
154
00:08:18.240 --> 00:08:20.160
the back end and stuff, and then you learn the
155
00:08:20.240 --> 00:08:23.040
jobscript in front of that, and then you've got to
156
00:08:23.040 --> 00:08:25.079
today where a lot of people get into well web
157
00:08:25.120 --> 00:08:27.439
development from the front end from the job script frameworks
158
00:08:27.439 --> 00:08:32.840
you know, Angular, use Felt, React React predominantly just because
159
00:08:32.840 --> 00:08:35.480
it's so dominant anymore. And then they don't know the
160
00:08:35.519 --> 00:08:37.279
back end. So now they got to learn the back end,
161
00:08:37.320 --> 00:08:39.720
and how do you know, accommodate for that? So it's
162
00:08:39.759 --> 00:08:42.960
real it's been an interesting pendulum watching the pendulums when
163
00:08:43.200 --> 00:08:44.240
back and forth. For sure.
164
00:08:45.879 --> 00:08:48.159
Yeah, I mean I'm just thinking ancessary at the moment
165
00:08:48.240 --> 00:08:51.200
because this is like my daily driver the last few months.
166
00:08:51.200 --> 00:08:55.759
But anyway, yeah, yes, sorry, okay, So let's get into
167
00:08:55.759 --> 00:08:57.840
what we're here to talk about. Then, So you worked
168
00:08:57.840 --> 00:09:01.080
for the companies, how do you say? Yeah?
169
00:09:01.600 --> 00:09:04.679
Yeah, yeah, it's like Israeli a US company you PO,
170
00:09:05.039 --> 00:09:06.919
so that they're kind of big in the e commerce,
171
00:09:07.600 --> 00:09:08.200
right y O.
172
00:09:08.320 --> 00:09:11.240
T p O. In case you're you're you're looking for
173
00:09:11.399 --> 00:09:12.080
dot com?
174
00:09:12.200 --> 00:09:18.320
Yeah cool, yes, in there we open source something a
175
00:09:18.320 --> 00:09:21.320
few months ago and it is something we use actually
176
00:09:21.360 --> 00:09:28.360
internally to manage let's say the migrain of upgrading or
177
00:09:28.399 --> 00:09:33.720
maintaining tool link working and let's say up to date. Uh.
178
00:09:34.159 --> 00:09:37.759
And of course have quality quality gates some people call
179
00:09:37.799 --> 00:09:40.960
them code checks. Usually you can see them on things
180
00:09:41.000 --> 00:09:45.159
like GitHub on your prs and basically guarding you and
181
00:09:45.279 --> 00:09:48.320
helping you by the way, especially in the AI world
182
00:09:48.399 --> 00:09:51.519
where someone needs to put the brakes on on some
183
00:09:51.639 --> 00:09:54.799
of the code or let's get generated. So it's kind
184
00:09:54.799 --> 00:09:58.360
of a double important to have some code checks. Of course,
185
00:09:58.399 --> 00:10:01.960
you can wing it aka vibe and just see what's up.
186
00:10:02.039 --> 00:10:05.000
And then I don't know, I ask another AI to
187
00:10:05.039 --> 00:10:08.759
maybe refractory, Sure, but I.
188
00:10:08.720 --> 00:10:10.559
Think refactor ais are you?
189
00:10:11.000 --> 00:10:12.679
I think so? I think maybe there is a future
190
00:10:12.679 --> 00:10:16.320
where we don't care about quality. We just use the
191
00:10:16.360 --> 00:10:19.879
model as of today, and then think about two years
192
00:10:19.919 --> 00:10:22.039
in the future, the model will be better, so they
193
00:10:22.080 --> 00:10:24.320
will generate something better and we ask them to just
194
00:10:24.360 --> 00:10:26.919
improve the code base. You know, there is a world maybe.
195
00:10:27.600 --> 00:10:29.080
Well. The problem with that, though, is the AI is
196
00:10:29.120 --> 00:10:30.919
training itself on the old stuff.
197
00:10:31.399 --> 00:10:35.240
Yes, yes, yes, yes, on itself maybe. Yeah. So we
198
00:10:35.879 --> 00:10:39.600
wanted to kind of enforce this and do this in
199
00:10:39.639 --> 00:10:42.399
a company that has been around for more than ten years.
200
00:10:42.799 --> 00:10:46.240
And I think it's natural if you have projects for
201
00:10:46.279 --> 00:10:48.000
more than ten years or even five years, that you
202
00:10:48.200 --> 00:10:51.799
kind of accumulate legacy. And I maybe in this podcast
203
00:10:51.799 --> 00:10:54.399
you talked about it, and maybe I've read it somewhere,
204
00:10:54.440 --> 00:10:57.519
but legacy is not naturally a bad thing. Legacy means
205
00:10:57.559 --> 00:11:03.000
you have something working right, true, but this thing that
206
00:11:03.120 --> 00:11:07.159
is working is no longer performance, is no longer maintainable.
207
00:11:07.840 --> 00:11:10.279
The tools that you use can no longer work with it.
208
00:11:10.720 --> 00:11:12.960
If you want to upgrade one tool, you're kind of
209
00:11:13.000 --> 00:11:16.519
stuck in this Nightmarrey scenario where you're like, oh, I
210
00:11:16.600 --> 00:11:19.519
need to upgrade my e is lint. It's not connected
211
00:11:19.559 --> 00:11:21.960
to my code. I want upgrade it, but the new
212
00:11:22.039 --> 00:11:24.919
version requires a new version of no JS. Oh okay,
213
00:11:25.120 --> 00:11:27.639
So I need to upgrade no JS. Oh okay. Then
214
00:11:27.639 --> 00:11:30.080
I need to pay all my other packages because they
215
00:11:30.240 --> 00:11:34.120
also need they need to be compatible with a new version.
216
00:11:34.279 --> 00:11:38.440
So there's a vicious cycle of upgrades, basically because everything
217
00:11:38.519 --> 00:11:41.279
kind of depends on each other and they're all grouped
218
00:11:41.320 --> 00:11:43.879
into one thing. Even though if you think about it,
219
00:11:44.320 --> 00:11:47.159
most of the things that are not really connected to
220
00:11:47.200 --> 00:11:50.840
each other, like es lint doesn't use your built stuff
221
00:11:51.039 --> 00:11:55.559
like things like es lint, like code checks, yeah, unit testing,
222
00:11:55.919 --> 00:11:59.080
it doesn't use your actual built unless you were talking
223
00:11:59.120 --> 00:12:02.519
about VAT and v test, which kind of shares the
224
00:12:02.519 --> 00:12:06.480
same build mechanism. But let's let's say we're talking about
225
00:12:06.519 --> 00:12:10.879
web pack or turbo pack, uh, and just they do
226
00:12:11.159 --> 00:12:14.320
their own thing, like unit tests are built differently than
227
00:12:14.360 --> 00:12:17.200
the web back, so they actually live in total isolation,
228
00:12:17.399 --> 00:12:21.200
like into two different universes where just do this its
229
00:12:21.200 --> 00:12:23.919
own thing with your source code, and then web back
230
00:12:24.039 --> 00:12:26.639
or whatever tool you choose do their thing with your
231
00:12:26.679 --> 00:12:30.279
source code. So in theory they are absolutely isolated. But
232
00:12:30.559 --> 00:12:33.559
for historic reasons, we kind of put them in the
233
00:12:33.600 --> 00:12:37.440
same package, put them in the same bag of dependencies, like, oh,
234
00:12:37.519 --> 00:12:40.240
let's put web back, let's put just let's put the
235
00:12:40.320 --> 00:12:42.559
way Yeah, go ahead, Wait a minute.
236
00:12:42.679 --> 00:12:45.799
Those are two different things, though, I mean web Pack
237
00:12:45.840 --> 00:12:48.120
and just you're doing two different things, just as you're
238
00:12:48.240 --> 00:12:50.519
you know, you're unit testing, your code testing, right, Webpack
239
00:12:50.639 --> 00:12:52.480
is more concerned with the bundling.
240
00:12:52.080 --> 00:12:54.519
And absolutely and absolutely taking apart.
241
00:12:54.639 --> 00:12:57.440
So I guess I'm confused as to I mean, it's
242
00:12:57.440 --> 00:12:59.720
like you're complaining two different things there, I.
243
00:12:59.679 --> 00:13:03.480
Know, And I think this is where I haven't explained
244
00:13:03.480 --> 00:13:05.720
it probably well to have been more clear, but this
245
00:13:05.840 --> 00:13:08.039
is my point. There are absolutely two different things. They
246
00:13:08.080 --> 00:13:10.919
have two different purposes and they have like two different
247
00:13:11.039 --> 00:13:14.559
universes of building. I think we're on the same page here, right,
248
00:13:14.639 --> 00:13:17.320
Like web Pack doing is own thing and just but
249
00:13:17.519 --> 00:13:20.240
what do you usually do? You have one package jacent,
250
00:13:21.000 --> 00:13:23.279
and all of the gest related stuff and all of
251
00:13:23.279 --> 00:13:25.600
the web pack related stuff they live in the same
252
00:13:25.639 --> 00:13:29.840
package jacent, aka in the same bag of dependencies called
253
00:13:30.399 --> 00:13:34.039
the giant node modules, right like you you kind of
254
00:13:34.039 --> 00:13:37.879
combine them together. And there's a weird scenario where let's
255
00:13:37.879 --> 00:13:40.679
say you have you found a bug and it's a
256
00:13:40.759 --> 00:13:43.600
really nasty bug in jest. That just a scenario. It
257
00:13:43.600 --> 00:13:45.879
could be any other too, right, it could be slaint.
258
00:13:45.919 --> 00:13:49.879
It could be let's say, even an end to end
259
00:13:50.000 --> 00:13:52.720
testing tool. Right, but you found a problem and in
260
00:13:52.759 --> 00:13:55.799
one of great the two only like you don't want
261
00:13:55.799 --> 00:13:58.519
to deal right now. You have other priorities, right, you
262
00:13:58.600 --> 00:14:01.240
have to do a new future or do some actual
263
00:14:01.279 --> 00:14:04.039
product work. But you want to fix this bug. And
264
00:14:04.080 --> 00:14:07.279
the bug is fixed in the new version of jest. Okay,
265
00:14:07.639 --> 00:14:10.639
is how I get ingested. This is about ingest itself,
266
00:14:10.799 --> 00:14:13.759
ingest itself absolutely clarify. But you found it. Oh wait,
267
00:14:13.799 --> 00:14:16.279
in three versions in the future, this bug is no
268
00:14:16.360 --> 00:14:21.000
longer there. It's fixed. So your options here is like, Okay,
269
00:14:21.159 --> 00:14:24.159
I can maybe live with this bug and document it
270
00:14:24.279 --> 00:14:27.000
very well and just try to stay away from it
271
00:14:28.159 --> 00:14:33.080
or try to upgrade JEST. And this is where I'm
272
00:14:33.080 --> 00:14:35.000
trying to say, there is an actual problem for me.
273
00:14:35.120 --> 00:14:39.240
It might have. It's like a dependency management. If everything
274
00:14:39.320 --> 00:14:41.960
lives in the same bag and you want to upgrade EST,
275
00:14:42.840 --> 00:14:45.279
just we'll tell you. Wait, you want to upgrade from
276
00:14:45.759 --> 00:14:49.200
version I don't know five to version eight. Okay, but
277
00:14:49.279 --> 00:14:52.600
I need a new note dress. I need no Dress
278
00:14:52.840 --> 00:14:56.879
twenty seven, let's say twenty four. Okay, this is I
279
00:14:56.879 --> 00:15:01.919
think the LTS version twenty four. But then when back
280
00:15:01.919 --> 00:15:04.879
will tell you, hey, okay, you're graded JEST and no Jess,
281
00:15:05.720 --> 00:15:09.559
but I'm not working with this no Jazz version like sorry, no,
282
00:15:10.200 --> 00:15:12.519
or even worse, you build two links like let's say
283
00:15:13.000 --> 00:15:15.799
you're not a React world, you're Angular world or something else.
284
00:15:16.559 --> 00:15:19.519
Most of those even React nowadays with the React compiler
285
00:15:19.639 --> 00:15:22.399
or something was code. They actually have a thing that
286
00:15:22.600 --> 00:15:26.240
runs together with your build. An Angular whole thing is
287
00:15:26.320 --> 00:15:29.320
that they actually control the build. They have a compiler,
288
00:15:29.360 --> 00:15:33.879
Anglar compiler, right, So imagine this also tells you, hey,
289
00:15:34.000 --> 00:15:36.399
I also don't work with the new no Jess. Figure
290
00:15:36.440 --> 00:15:39.080
something out, figure something out. I am not going to
291
00:15:39.159 --> 00:15:42.759
work with this version. And then you end up okay,
292
00:15:42.840 --> 00:15:45.000
so I need to upgrade. Also, not only just I
293
00:15:45.120 --> 00:15:47.279
only wanted to jest. I only wanted to cread this
294
00:15:47.440 --> 00:15:50.240
thing because there was a bug. But now suddenly I
295
00:15:50.320 --> 00:15:53.159
need to upgrade the entire framework. And guess what, when
296
00:15:53.200 --> 00:15:55.600
you great the entire framework, you need to refractor all
297
00:15:55.639 --> 00:15:59.600
your code because there's probably breaking changes. Right, You're probably
298
00:15:59.639 --> 00:16:02.919
a grade two versions in the future. So now you
299
00:16:03.039 --> 00:16:05.000
end up in this situation where are you either Oh,
300
00:16:05.080 --> 00:16:08.159
I cannot upgrade. I'm stuck. I have to live with
301
00:16:08.279 --> 00:16:11.360
whatever I have today, or you have to upgrade everything,
302
00:16:11.960 --> 00:16:15.039
like you have to upgrade all your tools, all your
303
00:16:15.080 --> 00:16:18.320
framework related stuff, all your run time dependencies. Maybe maybe not,
304
00:16:18.840 --> 00:16:22.039
but let's let's say framework at least, right and refractor.
305
00:16:23.000 --> 00:16:25.200
So I'm not sure about you, but I find that
306
00:16:25.519 --> 00:16:28.440
very kind of a scary moment because this is what
307
00:16:28.720 --> 00:16:32.159
defines kind of the depth of a code base. You're
308
00:16:32.159 --> 00:16:35.159
you're kind of stuck and you cannot upgrade it. It's
309
00:16:35.200 --> 00:16:37.960
too much work to upgrade it, or it's it's kind
310
00:16:38.000 --> 00:16:41.080
of an equal to a rewrite, because you have to
311
00:16:41.159 --> 00:16:43.279
upgrade like ten versions in the future or five versions
312
00:16:43.320 --> 00:16:47.279
in the future. So the effort of upgrading is almost
313
00:16:47.360 --> 00:16:50.000
equal to the effect of like let's start something new,
314
00:16:50.200 --> 00:16:53.639
something small, as something performant, and let's gradually release it.
315
00:16:54.559 --> 00:16:57.679
Well, I guess it depends on the size of your project.
316
00:16:58.799 --> 00:17:00.519
I mean it's a lot of project. Yeah, you know,
317
00:17:00.879 --> 00:17:03.720
larger project that's not even a possibility. You know, you
318
00:17:03.799 --> 00:17:05.039
gotta do what you gotta do.
319
00:17:05.440 --> 00:17:05.680
Yeah.
320
00:17:05.839 --> 00:17:09.440
I ran it out with Lara Bell you know, on
321
00:17:09.519 --> 00:17:12.400
the back and just because I was tasked with upgrading
322
00:17:12.440 --> 00:17:14.759
from Larra Belt eleven to Laravelt twelve and my boss
323
00:17:14.920 --> 00:17:17.680
was like, day one, Larrabelle twelve is up, let's do it.
324
00:17:17.799 --> 00:17:20.920
I'm like, okay, I'm running into all kinds of dependency
325
00:17:20.920 --> 00:17:25.880
issues for the dependencies have not upgraded to, you know,
326
00:17:26.000 --> 00:17:28.240
to be able to handle Laaravelt twelve. And so you're
327
00:17:28.599 --> 00:17:32.640
either looking at patches or you're waiting or I'm nothing.
328
00:17:32.680 --> 00:17:35.640
By the way, I'm not sure if it's somebody's watching listen,
329
00:17:35.720 --> 00:17:38.200
but I'm heavily noting here because this is it.
330
00:17:38.839 --> 00:17:39.640
You can't upgrade.
331
00:17:39.680 --> 00:17:43.720
You're kind of in a moment of shit. Oh I'm sorry,
332
00:17:44.279 --> 00:17:47.759
but like I can't move. I'm stuck with whatever I have,
333
00:17:48.079 --> 00:17:50.920
so I need to make it work or start a
334
00:17:51.000 --> 00:17:53.119
new thing. But as you said, you can't start a
335
00:17:53.200 --> 00:17:57.240
new thing every time you get stuck, right, Okay, So
336
00:17:57.279 --> 00:18:00.759
I'm gonna offer an alternative to this world it were
337
00:18:00.759 --> 00:18:03.680
talked about the typical scenario where all of your bag
338
00:18:03.759 --> 00:18:06.440
of dependencies you can put in any language here by
339
00:18:06.480 --> 00:18:09.880
the way, like Laravel, like it's all the dependencies, Python
340
00:18:09.960 --> 00:18:13.400
with all the dependencies. But here the open source that
341
00:18:13.440 --> 00:18:17.119
I'm talking about breakproof dot depth, which is just a
342
00:18:17.200 --> 00:18:23.519
gidab repositor readirects there basically offer the following concept. Okay,
343
00:18:24.079 --> 00:18:27.440
in the JavaScript ward and the JavaScript world of dependencies, right,
344
00:18:28.319 --> 00:18:31.279
what we are used to is this bag of dependencies
345
00:18:31.400 --> 00:18:36.000
not modus. Okay, but what if we can isolate each
346
00:18:36.160 --> 00:18:40.319
tool with its own dependencies and its own node jazz version,
347
00:18:40.759 --> 00:18:45.200
separate from the everything else but still be able to
348
00:18:45.279 --> 00:18:50.720
work together. Okay. So let's say typescript or Jest has
349
00:18:50.799 --> 00:18:55.039
its own list of just plugins, just configuration, right, and
350
00:18:55.319 --> 00:18:58.839
specific note version, and I can only upgrade the note
351
00:18:58.920 --> 00:19:02.240
version for Jest, and I can only upgrade the Jest dependencies,
352
00:19:03.039 --> 00:19:05.319
and this does not affect the node version for any
353
00:19:05.359 --> 00:19:07.519
of me any of the other dependencies that are heavy
354
00:19:07.599 --> 00:19:11.640
my project no matter whatever they are. How does that sound?
355
00:19:14.039 --> 00:19:16.359
I can already I already have a few questions running
356
00:19:16.400 --> 00:19:19.000
through my head here about how you go that, But
357
00:19:19.559 --> 00:19:22.960
I'm hereous well, I mean, just obviously do you want
358
00:19:23.119 --> 00:19:26.000
does that mean you have multiple note versions running concurrently
359
00:19:26.119 --> 00:19:29.279
somehow or how do you you know? You're saying, Okay,
360
00:19:29.319 --> 00:19:31.920
I can upgrade this dependency from this version not to
361
00:19:32.000 --> 00:19:33.599
twenty four. Maybe this one still has to be in
362
00:19:33.680 --> 00:19:36.079
twenty two for instance. How you recofy that? But I'm
363
00:19:36.119 --> 00:19:37.079
assuming you'll get to that.
364
00:19:38.079 --> 00:19:40.839
Absolutely it did, But I think this is useful, Like
365
00:19:40.880 --> 00:19:43.279
if this is your first question, super vialent question, by
366
00:19:43.319 --> 00:19:45.359
the way, and there is an answer as you as
367
00:19:45.440 --> 00:19:49.880
you guessed, yes, this means multiple no jailed versions, right,
368
00:19:50.440 --> 00:19:53.640
and maybe immediately you have an interfere of like oh
369
00:19:53.720 --> 00:19:57.160
my god, like I have to maintain multiple versions of
370
00:19:57.319 --> 00:20:00.440
no jenis right, But maybe you can actually limit that,
371
00:20:00.599 --> 00:20:02.599
like don't you don't need to have all the versions
372
00:20:02.640 --> 00:20:06.119
of notices. You don't need to have like fourteen, sixteen, eighteen,
373
00:20:06.359 --> 00:20:08.160
twenty twenty two, twenty four. You can have like a
374
00:20:08.319 --> 00:20:12.000
white list you have like, okay, I support this twenty
375
00:20:12.279 --> 00:20:15.519
twenty eight. That's it, Like three white listed ones, right,
376
00:20:17.000 --> 00:20:21.039
And this is where we come into the repository. Why
377
00:20:21.119 --> 00:20:23.319
is this open source, like I reposed, this is just
378
00:20:23.359 --> 00:20:26.359
a template for repository. And something we mentioned before we
379
00:20:26.440 --> 00:20:31.759
started recording is mono ripples, right, And there are many
380
00:20:31.880 --> 00:20:34.559
tools for mono ripples as a whole. Like if you
381
00:20:35.240 --> 00:20:39.240
start like research for mono repols, everything will come up,
382
00:20:39.359 --> 00:20:43.759
like there's RUSH, there's NX, there's turbo ripple, I think,
383
00:20:44.400 --> 00:20:46.119
and all of them are kind of helping you with
384
00:20:46.240 --> 00:20:51.039
mono ripples. And we went through them with the team,
385
00:20:51.480 --> 00:20:53.640
and there was one that kind of popped up which
386
00:20:53.680 --> 00:20:58.880
is actually alternative to NPM, and it's called PMPM. It
387
00:20:59.200 --> 00:21:02.519
is popular, like, oh, this is I discovered VMPM. Let
388
00:21:02.599 --> 00:21:04.160
me tell you about it. No, I know, I know,
389
00:21:04.279 --> 00:21:08.519
it's kind of popular. It Actually many people don't realize
390
00:21:08.599 --> 00:21:11.440
or at least I found many developers I work with not.
391
00:21:11.559 --> 00:21:15.599
Actually I realized that other tools like NX and other
392
00:21:15.720 --> 00:21:18.319
tools like to go pack under the hood, they actually
393
00:21:18.400 --> 00:21:21.920
use PMPM or they advise you to use PMPM, so
394
00:21:22.079 --> 00:21:26.519
they're an abstraction on top of PMPM. So you don't
395
00:21:26.599 --> 00:21:29.559
have to only learn the tool if you like it
396
00:21:29.720 --> 00:21:31.960
or like NX or turble pack, but you also kind
397
00:21:32.000 --> 00:21:34.559
of need to know PMPM because underneath this is what
398
00:21:34.720 --> 00:21:37.000
it's working. Right, So if you get a problem or
399
00:21:37.039 --> 00:21:38.880
if you have a specific need, you kind of have
400
00:21:38.960 --> 00:21:39.279
to know it.
401
00:21:40.039 --> 00:21:42.559
Well, isn't that sort of like in order to view
402
00:21:42.839 --> 00:21:47.799
you really sort of need to understand JavaScript, have PHP right,
403
00:21:48.400 --> 00:21:50.400
So right, real quick, real quick, before we got too far,
404
00:21:50.599 --> 00:21:52.920
can I always like to define terms for those who
405
00:21:53.279 --> 00:21:55.759
might not know. Can we define what a modo repo
406
00:21:55.920 --> 00:21:59.359
is and give us an example of working mono repo.
407
00:22:00.480 --> 00:22:06.240
Absolutely, mono riple is a get other kind of repository.
408
00:22:06.279 --> 00:22:10.680
But I'm guessing nowadays git repository that is not holding
409
00:22:10.759 --> 00:22:14.559
only one project, but it actually have multiple projects in it,
410
00:22:15.119 --> 00:22:19.319
each isolated usually in its own directory, and each of
411
00:22:19.440 --> 00:22:23.359
them have their own set of dependencies defined. This is
412
00:22:24.039 --> 00:22:26.039
I would say, the definition of a mono repole. And
413
00:22:26.160 --> 00:22:28.519
you can work only in one of them, but they
414
00:22:28.559 --> 00:22:31.960
are in the same repository, so everything is kind of connected.
415
00:22:32.400 --> 00:22:34.200
One of the perks may be one of the main
416
00:22:34.319 --> 00:22:36.519
perks of the mono repo that you can use other
417
00:22:36.640 --> 00:22:42.400
packages within the repo together without going to the whole
418
00:22:42.440 --> 00:22:45.359
process of let me publish that, let me update the
419
00:22:45.480 --> 00:22:47.440
versions on all the other packages, et ceter So you
420
00:22:47.519 --> 00:22:49.680
can directly kind of depend on other packages in the
421
00:22:49.720 --> 00:22:52.640
same repository. That is mono ripole in my mind.
422
00:22:54.680 --> 00:22:58.640
Okay, okay, so if I so you could so far
423
00:22:58.720 --> 00:23:02.599
like a company you know, could have different applications, say
424
00:23:02.599 --> 00:23:06.519
they've got a view app versus angular app versus whatever.
425
00:23:06.920 --> 00:23:09.960
The developers can work in the same repo, but only
426
00:23:10.000 --> 00:23:13.480
on their projects and only impact. Yeah, I mean so when,
427
00:23:13.720 --> 00:23:15.680
so how does that work? So when you're creating a branch, right,
428
00:23:15.759 --> 00:23:18.519
let's say you create a feature branch for your particular project,
429
00:23:18.880 --> 00:23:22.359
you're creating a branch of the entire repo just working
430
00:23:22.480 --> 00:23:23.160
within your.
431
00:23:23.599 --> 00:23:26.599
Yes, you're creating the ripple is one. So you're creating
432
00:23:26.839 --> 00:23:29.640
branches every time on the entire repo. But you can
433
00:23:29.759 --> 00:23:33.960
focus on your think, only on your think. And this
434
00:23:34.119 --> 00:23:37.200
is where tools like PMPM work come in. Because naturally
435
00:23:37.400 --> 00:23:41.119
MPM doesn't have this understanding, or it didn't have. I'm
436
00:23:41.160 --> 00:23:43.000
not sure. I haven't followed up to the latest and
437
00:23:43.079 --> 00:23:45.759
latest MPM. I'm not sure what it offers, but it
438
00:23:45.960 --> 00:23:50.079
didn't historically have the concept of multiple things in the
439
00:23:50.160 --> 00:23:52.880
same ripple right, like you have to go there each
440
00:23:52.960 --> 00:23:55.839
individual kind of things. They cannot be connected like NPM
441
00:23:55.880 --> 00:23:59.720
doesn't have this concept of connected packages within the same repol,
442
00:24:00.079 --> 00:24:02.880
So you need other tools, and PMPM, I think is
443
00:24:02.960 --> 00:24:05.880
one of the few ones that are super successful. I
444
00:24:05.960 --> 00:24:08.799
think MPM has nowadays or for a few versions, something
445
00:24:08.880 --> 00:24:12.440
like workspaces, but I haven't fully explored that because PMPM
446
00:24:12.559 --> 00:24:15.759
is just so amazing at the things that it can
447
00:24:15.839 --> 00:24:20.279
do and performance compared to MPM that there's at least
448
00:24:20.359 --> 00:24:23.200
for some years that I've worked with PMPM, no point
449
00:24:23.359 --> 00:24:26.960
of kind of switching. So PMPM is a much I
450
00:24:27.000 --> 00:24:30.000
would say faster and leaner and very kind of focused
451
00:24:30.039 --> 00:24:33.000
to and can allow you to be super strict in
452
00:24:33.119 --> 00:24:36.279
things in a monopeople. When I say strict, we can
453
00:24:36.359 --> 00:24:40.200
go into very much the depths of dependency management. But
454
00:24:40.319 --> 00:24:43.799
maybe I can pause here and let you maybe direct
455
00:24:43.839 --> 00:24:46.400
me or point me to some questions or directions that
456
00:24:46.440 --> 00:24:47.559
are interesting kind of.
457
00:24:49.200 --> 00:24:51.519
I've always been curious what that first P stands for
458
00:24:51.680 --> 00:24:52.480
in pm PM.
459
00:24:53.279 --> 00:24:57.559
I think it's performance. I am not one hundred percent here,
460
00:24:58.680 --> 00:25:01.279
don't like put me on record, but I think it's performing.
461
00:25:02.160 --> 00:25:04.279
Yeah, I always have the important questions like that.
462
00:25:05.319 --> 00:25:08.559
So yeah, that's that's kind of your responsibility.
463
00:25:11.079 --> 00:25:13.519
So anyway, okay, so now we've established what a what
464
00:25:13.680 --> 00:25:16.680
a mono repo is, and what PM in pm PM is,
465
00:25:16.920 --> 00:25:20.839
so let's go forward. So what is it? What are
466
00:25:20.880 --> 00:25:22.359
you here to talk about? What is it that you're
467
00:25:22.440 --> 00:25:25.519
doing that is somehow enhancing this or what is this?
468
00:25:26.000 --> 00:25:30.759
Uh I'm sorry the break proof? Yes, do force in
469
00:25:30.839 --> 00:25:31.599
that environment?
470
00:25:32.160 --> 00:25:34.240
Amazing? Thank you, Thank you for that kind of question.
471
00:25:34.440 --> 00:25:37.519
By the way, I adore the level of ability that
472
00:25:37.599 --> 00:25:39.759
you can break down something and you can kind of
473
00:25:39.880 --> 00:25:42.759
keep the conversation get clear and not like go to
474
00:25:42.880 --> 00:25:45.039
bike shedding or something like this. So thank you.
475
00:25:45.160 --> 00:25:47.720
Oh yeah, yeah, I like to make it clear.
476
00:25:48.279 --> 00:25:51.559
So yeah, we establish some backgrounds on PMPM and monory pools,
477
00:25:51.640 --> 00:25:54.240
and I kind of try to outline a problem that
478
00:25:54.400 --> 00:25:57.880
I see in the typical way of like putting dependencies
479
00:25:58.559 --> 00:26:01.319
in one big list of things that we do. By
480
00:26:01.359 --> 00:26:03.640
the way, in mono repos is the same thing. You
481
00:26:03.720 --> 00:26:06.240
can still have many packages, and this is what usually happens.
482
00:26:06.440 --> 00:26:09.480
You have an application, let's say view. Let's use your example,
483
00:26:09.759 --> 00:26:12.400
and inside of you you have all of its dependencies
484
00:26:12.480 --> 00:26:18.039
and all of its tools, so it will contain just Yestlen, cypress, playwright,
485
00:26:18.160 --> 00:26:21.799
whatever you have, it will be there, right, Okay, So
486
00:26:22.000 --> 00:26:23.359
what is this breakthrough thing?
487
00:26:23.480 --> 00:26:23.599
Right?
488
00:26:24.720 --> 00:26:29.640
We wanted to try and escape this locking the thing
489
00:26:29.759 --> 00:26:31.640
that I kind of the concept that I offered. We
490
00:26:31.799 --> 00:26:35.400
wanted to be able to upgrade one tool, and we
491
00:26:35.519 --> 00:26:39.319
face so many situations, I mean so many is stuations
492
00:26:39.359 --> 00:26:41.000
where we wanted to just a break one tool like
493
00:26:41.319 --> 00:26:45.359
linked stage a little too. That helps us with running
494
00:26:45.519 --> 00:26:49.519
checks before get commited right or on get a pr
495
00:26:49.759 --> 00:26:50.720
We won't just oblive that.
496
00:26:52.039 --> 00:26:54.519
Yeah, I think we use that on my project. So yeah,
497
00:26:54.519 --> 00:26:55.400
I know what you're talking about.
498
00:26:55.759 --> 00:26:57.640
So we won't to agree that. But that required a
499
00:26:57.680 --> 00:26:59.400
new version of not just a new version. I'm like,
500
00:26:59.480 --> 00:27:01.920
oh no, we're stuck in the same thing, the same loop.
501
00:27:02.960 --> 00:27:05.160
So we we were looking for a tool and we
502
00:27:05.200 --> 00:27:09.720
actually talked with the maintainer of PMPM so don amazing guy.
503
00:27:10.200 --> 00:27:10.440
It was.
504
00:27:10.759 --> 00:27:16.319
It was an amazing call, and we kind of teased
505
00:27:16.400 --> 00:27:20.279
him with this concept like, hey, but what if what
506
00:27:20.440 --> 00:27:23.400
if we don't need Cyprus to be coupled with our
507
00:27:23.519 --> 00:27:25.400
other stuff. We don't need just to be coupled with
508
00:27:25.519 --> 00:27:29.000
our view stuff. Right, there are totally different concepts, like
509
00:27:29.759 --> 00:27:32.039
if you go back to our previous example web back
510
00:27:32.119 --> 00:27:36.480
and just they're totally different. Can I just be able
511
00:27:36.839 --> 00:27:39.759
to say I'm in a mono reple Package A is
512
00:27:39.839 --> 00:27:42.720
my application. This is why I run my viehw code
513
00:27:42.880 --> 00:27:47.359
or React whatever. Right. But I had package B, and
514
00:27:47.480 --> 00:27:51.920
this package B is all my JEST stuff. This is
515
00:27:52.079 --> 00:27:56.400
where all my GEST configuration lives, all my plugins for jests.
516
00:27:56.720 --> 00:27:58.440
And what I want to I want to be able
517
00:27:58.480 --> 00:28:02.319
to do is any application like package A or package C.
518
00:28:03.039 --> 00:28:06.039
If it's another application, as you suggested, maybe I have
519
00:28:06.119 --> 00:28:09.160
a view and an angler app, right, or let's say
520
00:28:09.160 --> 00:28:11.960
I view and a reactor. I want both of them
521
00:28:12.680 --> 00:28:15.079
to share my configuration. I don't want to redo it.
522
00:28:15.839 --> 00:28:17.480
I don't want to. I won't be able to just
523
00:28:17.680 --> 00:28:21.160
call jest, have some basic configuration that makes sense for
524
00:28:21.240 --> 00:28:24.559
our company or for this one repole, and just run
525
00:28:24.640 --> 00:28:27.960
it from package A and package C. So this package B,
526
00:28:28.319 --> 00:28:31.319
this magical JEST must be able to be isolated and
527
00:28:31.440 --> 00:28:34.960
must be callable from the other packages. Right, So package
528
00:28:35.079 --> 00:28:38.039
should be able to say, hey, I need GEST from
529
00:28:38.079 --> 00:28:41.680
package B, and package should do the same thing. Cool.
530
00:28:42.880 --> 00:28:45.559
Let's say in a classic Mono Repo. No matter whether
531
00:28:45.599 --> 00:28:49.279
I use PMPM, you can you can structure these packages.
532
00:28:49.759 --> 00:28:53.759
Now there's two questions, right, how do I call one
533
00:28:53.839 --> 00:28:55.799
package from the other package? Like how do I call
534
00:28:56.200 --> 00:29:00.359
JEST from package B in the AD from package to
535
00:29:00.480 --> 00:29:04.799
package whatever? Right, So I'm not sure how other tools
536
00:29:04.799 --> 00:29:06.920
do it, and I don't think it's so popular as
537
00:29:07.000 --> 00:29:10.039
a thing, but PMPM allows you to filter out to
538
00:29:10.200 --> 00:29:13.039
query with a command line. Basically, you open the terminal
539
00:29:13.279 --> 00:29:16.200
say PMPM and you can filter packages. So you can
540
00:29:16.240 --> 00:29:20.240
select one package and run a script from its package Jason,
541
00:29:20.720 --> 00:29:25.279
or run a dependency that it's installed in this package. Okay,
542
00:29:25.599 --> 00:29:29.279
So I can say PMPN filter my GEST package JEST,
543
00:29:30.119 --> 00:29:33.480
so that will run just from my package that has
544
00:29:33.559 --> 00:29:37.759
all my est stuff. Okay, So this means this allows
545
00:29:37.799 --> 00:29:42.880
basically to collest from these two other packages without installing JEST.
546
00:29:43.680 --> 00:29:46.319
So my package with my view application doesn't have just
547
00:29:46.440 --> 00:29:50.640
install nothing, doesn't even know about just, but it can
548
00:29:50.759 --> 00:29:55.160
codest that is instelled from the other package. Now, probably
549
00:29:55.200 --> 00:29:58.240
the question here is like, okay, okay, why are we
550
00:29:58.319 --> 00:30:01.799
complicating things making this separation? And now this is the
551
00:30:01.880 --> 00:30:06.039
key here. This is because because PMPM. After we talk
552
00:30:06.079 --> 00:30:09.279
with Zutan did one feature, which is I think it's
553
00:30:09.440 --> 00:30:12.039
for me. It changed the game in terms of a
554
00:30:12.119 --> 00:30:17.359
mono rip. They introduced the concept of runtime per package,
555
00:30:18.319 --> 00:30:20.359
and they in the latest versions, by the way, a
556
00:30:20.400 --> 00:30:24.920
few versions back ten something. I think it's now. They
557
00:30:25.039 --> 00:30:29.200
even allowed different than no Dress runtimes. So you can say,
558
00:30:29.359 --> 00:30:33.400
my package A will have no Jess fourteen. It's a
559
00:30:33.519 --> 00:30:37.720
legacy one, let's say Angler eleven. But my package B
560
00:30:38.440 --> 00:30:43.680
has all the all the latest React nineteen, like running
561
00:30:43.759 --> 00:30:46.279
some CLI that only runs on the newest no Dress.
562
00:30:46.680 --> 00:30:49.480
And I can even have like a concept experimental app
563
00:30:50.000 --> 00:30:53.359
that runs on bun or other runtime and still live
564
00:30:53.400 --> 00:30:56.039
in the same ripple, and I can still manage all
565
00:30:56.079 --> 00:31:02.400
of their dependencies through the same PMPMCLI. Right, So back
566
00:31:02.599 --> 00:31:05.240
back to the original example. I know, very lengthy, I'm
567
00:31:05.279 --> 00:31:08.319
going to pose in a minute, I promise. Back in
568
00:31:08.359 --> 00:31:10.799
the original example, I have my view application and I
569
00:31:10.920 --> 00:31:13.799
have my gest related stuff in a separate package right
570
00:31:14.000 --> 00:31:15.160
in the mono report.
571
00:31:15.839 --> 00:31:19.680
The MPM package. Is that a separate like a separate directory. Yes,
572
00:31:19.759 --> 00:31:20.440
separate directory.
573
00:31:20.559 --> 00:31:23.720
Sorry, yes, let's simplify think, yes, two directories. One is
574
00:31:23.799 --> 00:31:26.319
my view application with all of its dependencies, and one
575
00:31:26.440 --> 00:31:29.559
is my GEST stuff a separate directory with all of
576
00:31:29.599 --> 00:31:33.720
his GET related dependencies inployees. Right. So the NPM with
577
00:31:33.839 --> 00:31:36.559
this feature what allowed us is the GET related stuff
578
00:31:37.839 --> 00:31:41.400
to be running at note twenty four while your application
579
00:31:41.759 --> 00:31:45.400
can run a newer or older note like the application
580
00:31:45.599 --> 00:31:47.559
meaning the build of the application.
581
00:31:47.799 --> 00:31:47.920
Right.
582
00:31:48.720 --> 00:31:50.920
So this means that I can run GEST. I can
583
00:31:51.000 --> 00:31:53.759
say from my application. I can say, hey, can you
584
00:31:53.839 --> 00:31:56.240
codeest from the other package, And what this will do
585
00:31:57.079 --> 00:32:00.559
is calle the other NOTEJAS that is associated with the
586
00:32:00.680 --> 00:32:04.039
JEST from my application and can run on my source code.
587
00:32:04.559 --> 00:32:06.720
This way, I can use the specific note that I
588
00:32:06.960 --> 00:32:10.759
know it works with jests from my application, that I
589
00:32:10.920 --> 00:32:12.759
know that it works with a different note all the
590
00:32:12.799 --> 00:32:15.039
same note, but let's put it in a different note.
591
00:32:15.799 --> 00:32:18.759
This gives you the ability to absolutely freely a great jest.
592
00:32:19.480 --> 00:32:21.039
You can a great GEST and the only thing you
593
00:32:21.079 --> 00:32:23.039
need to do is make sure that the configuration doesn't
594
00:32:23.079 --> 00:32:24.920
break when you up great and that's it. You don't
595
00:32:24.960 --> 00:32:28.799
have to think about all the interconnected dependencies that it
596
00:32:28.960 --> 00:32:33.119
might bring in. You can have great in isolation. That is,
597
00:32:33.359 --> 00:32:38.519
let's say the largest change that this breakproof freepoint and
598
00:32:38.519 --> 00:32:42.079
template is promoting. It's not only that, and it's not
599
00:32:42.480 --> 00:32:45.440
like as you can see, it's not a major thing.
600
00:32:45.599 --> 00:32:48.960
Everything comes in from PMPM. There's a lot of other goodies,
601
00:32:49.039 --> 00:32:51.319
let's say. But I think this is the highlight, like
602
00:32:51.519 --> 00:32:53.759
being able to upgrade individually.
603
00:32:58.119 --> 00:33:02.079
I'm okay, So yeah, I got a lot of questions here.
604
00:33:02.720 --> 00:33:05.640
Being visual, it's hard to do this without actually looking
605
00:33:05.680 --> 00:33:06.119
at something.
606
00:33:06.200 --> 00:33:08.559
But so where.
607
00:33:10.200 --> 00:33:13.960
Do you so normally, you know, in any project, the
608
00:33:14.039 --> 00:33:17.240
way it's always worked is you have your node mantostrecture, right,
609
00:33:17.279 --> 00:33:21.160
which has all your different dependencies and their indpendencies and
610
00:33:21.240 --> 00:33:26.119
so on under your project route. So in your mono
611
00:33:26.200 --> 00:33:31.240
repost setup, then where do these separate versions of note
612
00:33:31.279 --> 00:33:32.279
actually get installed?
613
00:33:33.039 --> 00:33:33.240
Yes?
614
00:33:33.440 --> 00:33:35.200
Where is the physical locations of those?
615
00:33:35.319 --> 00:33:38.720
Fantastic? Okay, so you have two direct directories, right, I
616
00:33:38.839 --> 00:33:41.279
know it's a very visual thing. It's a podcasts people
617
00:33:41.359 --> 00:33:43.759
some some people listen. So you have the two directories
618
00:33:44.319 --> 00:33:48.400
and you can just accept them as two absolutely individual projects.
619
00:33:48.519 --> 00:33:51.599
They have inside of them the note modules for their
620
00:33:51.640 --> 00:33:54.480
own note modules. But your question was more like where
621
00:33:54.559 --> 00:33:57.960
is the note dress? And maybe maybe the other question
622
00:33:58.079 --> 00:34:01.680
is who stous the o JISS like, how do how
623
00:34:01.720 --> 00:34:04.079
does you get the nogs? I'm not sure if you
624
00:34:04.160 --> 00:34:07.599
have an innate understanding or maybe you already know the answer.
625
00:34:08.000 --> 00:34:11.639
But maybe people are used to have a manager for
626
00:34:11.760 --> 00:34:14.480
no JS versius like MBM very popular.
627
00:34:14.559 --> 00:34:16.119
One version manager.
628
00:34:16.400 --> 00:34:18.599
Yes, no version manager, it's a CLI too. I can
629
00:34:18.719 --> 00:34:21.639
say use this version, or I can set it up
630
00:34:21.679 --> 00:34:23.559
so that when I go to a certain project with
631
00:34:23.719 --> 00:34:27.199
automatically which is not okay. It can also install note
632
00:34:27.320 --> 00:34:31.519
versions can also uninstalled them like it manages no verse. Cool.
633
00:34:31.920 --> 00:34:34.960
But what happens in this PMPN world and now this
634
00:34:35.119 --> 00:34:39.639
is the other fantastic thing. PMPM is not a dependency
635
00:34:39.719 --> 00:34:43.760
that lives under note right. It is written in JavaScript,
636
00:34:44.440 --> 00:34:49.159
but is it's bundled as a standalone CLI so it
637
00:34:49.239 --> 00:34:52.480
can work without a specific like that you don't have
638
00:34:52.559 --> 00:34:54.960
to have NOTE to be able to run PMPM. This
639
00:34:55.079 --> 00:34:59.840
is a huge difference from npm MPM is always bundled
640
00:35:00.039 --> 00:35:04.079
with a specific version of no JFS right right, Okay, cool,
641
00:35:04.480 --> 00:35:07.239
So you have PMPM and it's a standalone thing. And
642
00:35:07.400 --> 00:35:12.159
the new feature is like addition to PMPM is that
643
00:35:12.239 --> 00:35:14.719
it can also manage no JAS versions, so it has
644
00:35:14.840 --> 00:35:19.880
like an MVM features, so it combines NPM and MVM
645
00:35:19.960 --> 00:35:24.119
together in one two. I'm saying combined because PMPM, in
646
00:35:24.239 --> 00:35:27.920
my mind, is a superset of MPM, which means it
647
00:35:28.039 --> 00:35:30.400
has all of the functionalities of MPM to be honest,
648
00:35:30.440 --> 00:35:34.760
even the same commands and underhood, basically it's kind of
649
00:35:34.800 --> 00:35:38.480
the same results, but also can manage no JAS versions.
650
00:35:39.039 --> 00:35:43.400
And having that that new feature that a PMPM introduced
651
00:35:43.719 --> 00:35:46.519
after we talked to Zutan that allowed each package to
652
00:35:46.599 --> 00:35:49.880
define it. PPM reads a specific property in your package
653
00:35:49.960 --> 00:35:52.880
jason file. You have two directories and each have package
654
00:35:52.920 --> 00:35:55.679
jason file right, and each of them can specify a
655
00:35:55.800 --> 00:36:00.800
property that I think is called runtime environment and PMPM
656
00:36:00.920 --> 00:36:04.760
knows about this property, reads it and checks if there
657
00:36:04.840 --> 00:36:08.239
is an installed NOGS with this version. If it doesn't have,
658
00:36:08.440 --> 00:36:10.840
it installs it for you automatically. You don't have to
659
00:36:10.880 --> 00:36:13.400
do anything, So even if you try to run something
660
00:36:13.440 --> 00:36:16.559
from a package that you don't have the OGS version four,
661
00:36:16.760 --> 00:36:19.800
it will install it for you. Of course you can
662
00:36:19.920 --> 00:36:22.039
pre install it, but it would do it for you
663
00:36:22.159 --> 00:36:25.320
if you haven't done this step. I hope that this
664
00:36:25.480 --> 00:36:27.519
gives a better idea like PMPM does it for you
665
00:36:27.599 --> 00:36:30.639
basically in a short answer, a PPM does it for you?
666
00:36:31.599 --> 00:36:35.159
Okay, but again, where so is it like you have
667
00:36:35.239 --> 00:36:38.079
a separate package for each version of no. Twenty two,
668
00:36:38.199 --> 00:36:41.119
twenty three, twenty four, you know, whatever versions you're using.
669
00:36:41.360 --> 00:36:42.360
It is kind of report.
670
00:36:43.320 --> 00:36:45.280
It is kind of the same as MVM. It has
671
00:36:45.360 --> 00:36:48.280
told them in your system, in your home directory, maybe
672
00:36:48.599 --> 00:36:50.599
if it stolls them somewhere. It just knows how to
673
00:36:50.760 --> 00:36:54.480
run them for each package. Basically, so if you have
674
00:36:54.599 --> 00:36:57.639
a package with just independencies, it knows that if you
675
00:36:57.679 --> 00:37:00.360
want to run stuff from there, it will use the
676
00:37:00.440 --> 00:37:04.239
installed no Jazz version with debt version. Sorry, the installted
677
00:37:04.239 --> 00:37:05.320
no jas with debt version.
678
00:37:07.079 --> 00:37:13.000
Okay, so I would So in your packages there are two.
679
00:37:13.960 --> 00:37:16.840
There's save and then there's saved dev. Right, so there's
680
00:37:16.880 --> 00:37:20.719
the tools that you need just why you're developing, and
681
00:37:20.840 --> 00:37:23.719
there's the tools that the packages that need to be
682
00:37:23.840 --> 00:37:28.280
installed for your application actually run. Right, So you could
683
00:37:28.320 --> 00:37:31.599
have so to use examples we're using just as a
684
00:37:31.639 --> 00:37:33.920
testing utaility, so you only need that at development type.
685
00:37:33.920 --> 00:37:35.599
So that would be a saved dev type property in
686
00:37:35.639 --> 00:37:39.039
your package that Jason absolutely say a CSS framework say
687
00:37:39.079 --> 00:37:41.559
tail wind, which is a real popular win, right, that's
688
00:37:41.639 --> 00:37:45.679
going to be a uh you've got to have that
689
00:37:45.920 --> 00:37:48.679
in your bundled job description in order for your application
690
00:37:48.760 --> 00:37:54.079
to work or at least to look decent. So can
691
00:37:54.199 --> 00:37:58.679
this handle can you have I'm trying to think how
692
00:37:58.719 --> 00:38:02.599
a word this? Could you have? You runtime packages that
693
00:38:02.719 --> 00:38:05.400
you need to actually run your application that aren't saved,
694
00:38:06.679 --> 00:38:12.039
that use different versions of Node? Is that a non issue?
695
00:38:12.480 --> 00:38:13.760
Give me a second too, kind of.
696
00:38:15.320 --> 00:38:18.239
Actually an issue? Because notice is your runtime from when
697
00:38:18.239 --> 00:38:18.840
you're developing?
698
00:38:19.280 --> 00:38:23.119
Yes, yes, if you're asking about runtime versus death time.
699
00:38:23.840 --> 00:38:24.000
Yeah.
700
00:38:24.039 --> 00:38:26.519
If if runtime is the browser, you don't you don't
701
00:38:26.800 --> 00:38:27.599
need to think about it.
702
00:38:28.480 --> 00:38:30.719
Okay, Yeah, never mind, I just realized that as that.
703
00:38:31.400 --> 00:38:33.719
And if you're talking about different tools, if you're talking
704
00:38:33.760 --> 00:38:37.920
about different tools, let's say just andy istlink, you can
705
00:38:38.000 --> 00:38:41.559
expand on the example and have a package for island.
706
00:38:42.480 --> 00:38:44.559
So the package with islint comes with its own no
707
00:38:44.719 --> 00:38:47.679
Jet version and all of it's plugins, right because it
708
00:38:47.840 --> 00:38:50.280
drags in it drags in a lot of plugins and
709
00:38:50.360 --> 00:38:53.880
they have their own dependencies, right, So maybe these dependencies
710
00:38:54.280 --> 00:38:56.920
are like a mismatch with your own dependencies if you
711
00:38:57.039 --> 00:38:58.039
store them at the same place.
712
00:39:01.079 --> 00:39:02.679
Okay, Yeah, so I think I get to just so
713
00:39:02.719 --> 00:39:05.079
it's basically installing the different versions of no JAS on
714
00:39:05.159 --> 00:39:07.559
your system and then just referencing them from the packages
715
00:39:07.760 --> 00:39:09.360
as you need, but being.
716
00:39:09.239 --> 00:39:12.239
Able to kind of use all the tools from one
717
00:39:12.320 --> 00:39:14.920
package that doesn't have them installed, so they don't they
718
00:39:15.000 --> 00:39:18.400
don't interfere with your dependencies, and they don't interfere with
719
00:39:18.480 --> 00:39:21.199
your no Jazz version. They have their own thing.
720
00:39:22.559 --> 00:39:26.079
So now the other you touched on something here briefly
721
00:39:26.159 --> 00:39:29.360
that I wanted to ask about, and that's other run times.
722
00:39:29.639 --> 00:39:32.159
So you got Bun, You've got Dno, You've got other things.
723
00:39:32.199 --> 00:39:35.360
You don't necessarily have to use no JS as your
724
00:39:35.519 --> 00:39:38.519
as your run time. I think was it Phoenix? Was
725
00:39:38.519 --> 00:39:40.159
that another one that was supposed to be and then
726
00:39:40.239 --> 00:39:41.719
sort of diet on the vine.
727
00:39:41.920 --> 00:39:44.920
You're you're now reaching my ability to like to know.
728
00:39:45.159 --> 00:39:47.920
But Dino, I know, Bun, I know, No, just that Phoenix,
729
00:39:48.199 --> 00:39:48.920
I'm not sure.
730
00:39:49.079 --> 00:39:51.440
Anyway that yeah, I forget that one. I didn't know
731
00:39:51.559 --> 00:39:54.639
much about it anyway. The point is, does all of this,
732
00:39:54.800 --> 00:39:59.119
the PNPM and this report that you had, does that
733
00:39:59.239 --> 00:40:01.840
only worked in no j or can you support Bernardino
734
00:40:02.320 --> 00:40:03.440
or other run times as well.
735
00:40:03.679 --> 00:40:06.679
Fantastic question. The latest one of the latest versions of
736
00:40:06.760 --> 00:40:09.639
PMPM allowed this new thing. They started with this concept
737
00:40:09.679 --> 00:40:12.119
after we talked Zotan. We talked about it, and they
738
00:40:12.159 --> 00:40:14.840
introduced no Jess only right, so you can have no
739
00:40:15.360 --> 00:40:18.519
eleven and twenty. But I think in the recent versions
740
00:40:19.079 --> 00:40:22.199
they change that. So they introduced the ability to choose
741
00:40:22.400 --> 00:40:26.400
Dino for one environment. No, so one package, one directory.
742
00:40:26.880 --> 00:40:29.440
This will run with Dino. So all your scripts, all
743
00:40:29.480 --> 00:40:33.039
your stout dependencies, we will run through Dino. DINU will
744
00:40:33.119 --> 00:40:35.840
run them basically. Right, So you specified Dino and a
745
00:40:35.960 --> 00:40:39.880
version and another directory in another package. Jason, you specify
746
00:40:40.000 --> 00:40:44.079
no jess aversion I can, I can hear, can not
747
00:40:44.239 --> 00:40:47.039
commit to. How many run times does it support. I
748
00:40:47.159 --> 00:40:49.280
am not sure. I'm not sure how many of them
749
00:40:49.320 --> 00:40:52.199
they support, but I am sure I saw Dino, sure sure,
750
00:40:52.239 --> 00:40:54.559
and I think I saw done. And I think these
751
00:40:54.599 --> 00:40:57.480
are the kind of I hope I don't offend anyone,
752
00:40:57.519 --> 00:41:01.400
but these are the major let's say, talk talking discussion points,
753
00:41:01.440 --> 00:41:04.119
et cetera kind of is run times. I'm sure there's others.
754
00:41:04.400 --> 00:41:07.320
There's probably edge run times that I don't know if
755
00:41:07.360 --> 00:41:09.320
they have, Like a you can install them, Like I know,
756
00:41:09.440 --> 00:41:12.199
cloud for has their own thing, my edge workers have
757
00:41:12.280 --> 00:41:15.000
their own thing. Versailles has a run time, but I'm
758
00:41:15.039 --> 00:41:19.119
not sure if it's just no jaiz. So many jobscript runtimes,
759
00:41:19.159 --> 00:41:21.159
by the way, I'm not sure if they're all installable.
760
00:41:22.719 --> 00:41:26.119
God of reminds me. I saw post on hacker News
761
00:41:26.840 --> 00:41:32.519
probably in the last month, and it was a history
762
00:41:32.559 --> 00:41:36.599
of JavaScript run times. Oh and the guy said it
763
00:41:36.760 --> 00:41:40.360
took probably like a year to just to write this article.
764
00:41:40.360 --> 00:41:44.079
Because I was like, oh, yeah, there's a few. Holy cow,
765
00:41:44.559 --> 00:41:46.639
it was crazy how far he back. I mean, just
766
00:41:46.840 --> 00:41:51.840
link after link after link, and I don't know if
767
00:41:51.880 --> 00:41:53.880
this is the one. I'll have to find it maybe,
768
00:41:53.920 --> 00:41:55.719
But I was like, holy cow, there's been a lot
769
00:41:55.800 --> 00:41:59.760
of a lot of jobscript run times. Yeah. Here it
770
00:41:59.800 --> 00:42:02.199
is the many, many, many JavaScript run times of the
771
00:42:02.320 --> 00:42:05.480
last decade. And they'll do this as a pick anyway.
772
00:42:05.559 --> 00:42:07.559
So there's a lot, but we're just focusing on on
773
00:42:07.760 --> 00:42:12.880
these three kinds right now. Kind of yeah, yeah, okay,
774
00:42:13.079 --> 00:42:16.519
So you have this young po breakproof based mono repo
775
00:42:16.920 --> 00:42:22.920
m this is it's on GitHub Breakproof, dash base, dash
776
00:42:23.000 --> 00:42:29.599
Mono repo under Poe Ltd. So how would this be implemented,
777
00:42:29.760 --> 00:42:31.800
or how is this something where you'd have to fire
778
00:42:31.880 --> 00:42:34.639
this up and build it, you know, from everything from
779
00:42:34.639 --> 00:42:36.760
the beginning, or can you implement it into say an
780
00:42:36.800 --> 00:42:39.280
existing modern repo, or how would you use this?
781
00:42:39.880 --> 00:42:44.000
Okay? Also also fantastic question. I mean I think I
782
00:42:44.039 --> 00:42:46.639
should just pick your questions and put them as a list.
783
00:42:46.719 --> 00:42:52.079
How I start talking about this? Okay? So even by
784
00:42:52.119 --> 00:42:55.800
its name, I hope they'd give some clue about it.
785
00:42:56.280 --> 00:43:02.320
So it says base mon and go break break Yeah
786
00:43:02.719 --> 00:43:06.119
it is, I mean, I mean breakthrough. Okay, Okay, Okay,
787
00:43:06.519 --> 00:43:10.360
Given given your status of dead jokes owner and king,
788
00:43:10.800 --> 00:43:13.960
I think you're you're kind of picking on the important
789
00:43:14.000 --> 00:43:16.679
thing is Yes, breakproof is the key is the king keyword,
790
00:43:16.840 --> 00:43:19.800
and it is because of specifically that it doesn't allow
791
00:43:19.840 --> 00:43:22.880
you to break one package just because you have great another. Right,
792
00:43:23.840 --> 00:43:25.960
That's that's where it all started from. This is where
793
00:43:26.000 --> 00:43:28.480
it started from. But base Mono reple it kind of
794
00:43:28.519 --> 00:43:31.719
gives the clue of how it's supposed to be intended
795
00:43:32.079 --> 00:43:35.360
to be used. Right, So the giftab has this concept
796
00:43:35.400 --> 00:43:38.440
of template repositories. Not sure if you've seen it, but
797
00:43:38.559 --> 00:43:41.079
if you enter a template repository, It basically has a
798
00:43:41.119 --> 00:43:43.480
button say create from this template.
799
00:43:44.000 --> 00:43:46.519
That makes sense, I mean that's just kindard template type.
800
00:43:46.800 --> 00:43:46.960
Yeah.
801
00:43:47.199 --> 00:43:47.400
Sure.
802
00:43:47.840 --> 00:43:49.639
The one thing why is this not a template? It
803
00:43:49.719 --> 00:43:53.199
basically fits perfectly perfectly the case of a template repository.
804
00:43:53.480 --> 00:43:56.239
But what happens that it's not super known is that
805
00:43:56.320 --> 00:44:00.079
when you press great template repository, it blanks out the
806
00:44:00.239 --> 00:44:03.199
entire history of the ripo. So it basically commits all
807
00:44:03.239 --> 00:44:05.440
the files of the ripple as a new REPO with
808
00:44:05.599 --> 00:44:09.760
no history. Okay, so you have a blank new slate
809
00:44:10.400 --> 00:44:13.079
and you don't have all the previous changes, et cetera.
810
00:44:13.239 --> 00:44:14.760
Okay, well, that can be good or bad.
811
00:44:14.800 --> 00:44:19.039
I suppose exactly exactly. It could be good let's say
812
00:44:19.360 --> 00:44:21.480
size of the repole. You don't have to care about
813
00:44:21.480 --> 00:44:25.159
this stuff, right, But one of the let's say not
814
00:44:25.320 --> 00:44:28.440
so great stuff is that if you fork it instead
815
00:44:28.480 --> 00:44:31.360
of that, if you create your own base on the history,
816
00:44:32.119 --> 00:44:34.840
it's kind of easy to pull changes, right Like if
817
00:44:34.880 --> 00:44:38.199
you let's say you have a library and I want
818
00:44:38.239 --> 00:44:40.440
to do a PR with some feature or a book fix,
819
00:44:41.280 --> 00:44:43.880
usually what I do is fork it, do some changes
820
00:44:43.920 --> 00:44:46.159
in my own branch, and create a PR to your
821
00:44:46.239 --> 00:44:50.360
own original repository. Right. And I can do that very
822
00:44:50.400 --> 00:44:53.960
easily because GIT knows about the history is their share.
823
00:44:54.159 --> 00:44:57.440
My fork has all of the history of your original repository,
824
00:44:57.880 --> 00:45:02.360
right and vice versa. If you update your original repository,
825
00:45:02.559 --> 00:45:04.480
I can pull in all the changes.
826
00:45:05.920 --> 00:45:10.000
Right. So we picked you're talking about working the whole repel,
827
00:45:10.119 --> 00:45:13.039
not just a branch within a right, you fork the
828
00:45:13.199 --> 00:45:13.719
entire ripple.
829
00:45:13.960 --> 00:45:16.360
You fork the entire repole. Usually it's the main branch,
830
00:45:16.599 --> 00:45:19.920
like you kind of copy the main branch only. So
831
00:45:20.280 --> 00:45:23.079
what is the what what is the major difference? Okay?
832
00:45:23.800 --> 00:45:25.639
So this is where I need to mention a bit
833
00:45:25.800 --> 00:45:29.159
more maybe about what the repository is. But the whole
834
00:45:29.400 --> 00:45:33.119
intended uses you kind of clone it. You clone it
835
00:45:33.280 --> 00:45:37.559
to your own repository and you start from there. Why
836
00:45:38.079 --> 00:45:41.039
why why do you use this as a new repository? Okay?
837
00:45:41.480 --> 00:45:43.719
And and you asked, how do I get my projects
838
00:45:44.000 --> 00:45:46.519
in it? Can I just plug it in my own
839
00:45:46.559 --> 00:45:49.480
existing ripple? The answer here is no, you can't really
840
00:45:49.559 --> 00:45:52.320
plug it in yours. But what you can do is
841
00:45:52.400 --> 00:45:55.760
you important project from your existing ripple in here. We
842
00:45:55.960 --> 00:45:59.800
created some utilities like interactive CLI with like questions like
843
00:46:00.079 --> 00:46:02.480
where is your ripo? Where do you want it to be.
844
00:46:03.000 --> 00:46:06.039
So when you clone the brakeproof based monitor reple and
845
00:46:06.159 --> 00:46:08.679
you get like this copy of it, you can then
846
00:46:08.960 --> 00:46:12.679
import the projects from elsewhere, so you can import them
847
00:46:12.719 --> 00:46:16.280
from other monor reples or other just repoles, and you
848
00:46:16.400 --> 00:46:19.800
put them as a package inside of your copy of
849
00:46:19.880 --> 00:46:23.719
the breakproof monitor rep That's the intended use. And I
850
00:46:23.840 --> 00:46:26.840
guess there's very much announce here of why is this
851
00:46:27.039 --> 00:46:30.519
like this? And I should mention something, but I'm going
852
00:46:30.559 --> 00:46:33.360
to pose again here to let you pick the first
853
00:46:33.440 --> 00:46:34.760
questions if you already have.
854
00:46:35.000 --> 00:46:40.719
Some, well, if we're talking about getting your project into
855
00:46:41.880 --> 00:46:43.679
this repot, no, I don't have any questions, but I
856
00:46:43.760 --> 00:46:44.639
do have some after that.
857
00:46:45.119 --> 00:46:47.760
Okay, cool, So you have your own clone, right, you
858
00:46:47.880 --> 00:46:51.559
copy the repository with the ford it with the entire history.
859
00:46:52.199 --> 00:46:54.880
Next step you imported the project. You got it, So
860
00:46:55.039 --> 00:46:57.159
why do you have why do you need this step?
861
00:46:57.440 --> 00:47:00.519
Extra step and extra work of moving project?
862
00:47:00.960 --> 00:47:01.119
Right?
863
00:47:02.239 --> 00:47:04.679
So, so far we only talked about this PMP mobility
864
00:47:04.719 --> 00:47:09.840
of isolation. Okay, but what it gives you is this
865
00:47:10.000 --> 00:47:12.960
based moment ripple. Doesn't only have this concept, otherwise it
866
00:47:13.000 --> 00:47:14.599
wouldn't be a based moment ripple, right, it would be
867
00:47:14.719 --> 00:47:16.880
just a read me file. You can do that with
868
00:47:17.000 --> 00:47:21.199
PMPM do it yourself, good luck bye. What it comes
869
00:47:21.280 --> 00:47:28.280
in is with already some tools installed as isolated packages. Right,
870
00:47:28.800 --> 00:47:31.199
they're not installed for your package. You can create your
871
00:47:31.199 --> 00:47:33.880
own package with you, but there's already tools in it.
872
00:47:35.440 --> 00:47:37.800
There are most of them. They're in a directory code
873
00:47:37.840 --> 00:47:41.559
Infra as we just go back there. Yeah, if you
874
00:47:41.639 --> 00:47:45.239
go back to our original conversation, there's like categories of packages. Right,
875
00:47:45.400 --> 00:47:48.320
there's something about the built, there's something about code checks,
876
00:47:48.360 --> 00:47:50.559
there's something about testing. So this is a kind of
877
00:47:50.599 --> 00:47:53.519
a tooling that you usually have in an application. So
878
00:47:53.679 --> 00:47:56.679
this ripple comes with some of those packages that are
879
00:47:56.760 --> 00:47:59.599
isolated when their own dependence in their own packages, and
880
00:47:59.639 --> 00:48:03.360
they're all Jazz version already there. So what you are
881
00:48:03.440 --> 00:48:08.239
able to do is have your project already runs, linked,
882
00:48:08.400 --> 00:48:13.400
already run, just already configured with some base sensible configuration.
883
00:48:14.039 --> 00:48:18.159
It's not opinionated and you can change it, but it's
884
00:48:18.239 --> 00:48:21.199
centralized and it's already working. So this concept that we
885
00:48:21.280 --> 00:48:24.880
introduced in the beginning, it's a starter. It's a starter
886
00:48:25.039 --> 00:48:27.960
that you can use, so they are already working. A
887
00:48:28.079 --> 00:48:32.559
COO part is usually as we talked about scale of companies, right,
888
00:48:32.639 --> 00:48:35.639
and scale of projects. When you have time projects, you
889
00:48:35.840 --> 00:48:38.800
kind of want to reuse and not repeat every single
890
00:48:38.880 --> 00:48:42.559
time and have one project with slightly different test configuration
891
00:48:43.440 --> 00:48:45.960
from the other, because you end up with this bug
892
00:48:46.039 --> 00:48:50.599
chasing where the result and the causation usually is like ah,
893
00:48:50.880 --> 00:48:53.400
it was fixed, but not in the other package, but
894
00:48:53.480 --> 00:48:55.280
in the other one. Right, So you want to have
895
00:48:55.400 --> 00:48:59.079
something centralized as a base sensible configuration, and the repository
896
00:48:59.159 --> 00:49:02.760
comes with sensible configuration for just based, sensible conforation for yes,
897
00:49:02.840 --> 00:49:05.480
lim and different kind of tools that are not very
898
00:49:05.639 --> 00:49:10.880
known but kind of useful, like finding unused dependencies, finding
899
00:49:11.000 --> 00:49:13.559
dependencies that are not in stout but you kind of
900
00:49:13.719 --> 00:49:17.679
use them. All these kind of code checks. They have
901
00:49:17.800 --> 00:49:20.559
their own package. They're all no jazz and all based
902
00:49:20.599 --> 00:49:25.960
configuration that your own package can just reference. Right. And
903
00:49:26.079 --> 00:49:28.800
of course, if you have your view application, let's we
904
00:49:28.920 --> 00:49:31.960
use the example and you want to extend you want
905
00:49:31.960 --> 00:49:34.079
to change some isline plug in, Sure you can do
906
00:49:34.159 --> 00:49:36.920
that because it only it only provides you with a
907
00:49:37.000 --> 00:49:40.920
base config. It just extends the base config and you
908
00:49:41.119 --> 00:49:43.920
just apply it with more configuration. You overwrite something, you
909
00:49:44.280 --> 00:49:47.679
disable a plugin enable a new one. This is just
910
00:49:47.800 --> 00:49:51.400
a base for you to play with and already isolated. Yes, Limp,
911
00:49:52.760 --> 00:49:55.920
and I want to just mention one more thing. What
912
00:49:56.159 --> 00:49:59.480
is the coolest part for me personally? After this isolation?
913
00:49:59.519 --> 00:50:02.800
We talked about artists. You have your clone, you have
914
00:50:02.920 --> 00:50:08.000
your copy. Right in several months, you say, wait, a
915
00:50:08.119 --> 00:50:10.639
new version of ISLNT. I'm not sure if you dealt
916
00:50:10.679 --> 00:50:14.119
with upgrading Yearlint eight to yearly nine. But it wasn't
917
00:50:14.159 --> 00:50:17.280
a pleasant upgrade. I can tell you that it was
918
00:50:17.360 --> 00:50:17.960
not pleasant.
919
00:50:18.599 --> 00:50:21.760
Speaking personal experience, I mean, yeah, I.
920
00:50:21.800 --> 00:50:24.880
Mean Islant is amazing. I love Islint. I'm super thankful
921
00:50:24.960 --> 00:50:28.440
to I think, Josh. I mean I'm hoping. I'm hoping.
922
00:50:28.519 --> 00:50:31.599
I'm not getting this wrong. I love that and we
923
00:50:31.760 --> 00:50:34.920
use it extensively, but that grade was hard. So imagine
924
00:50:34.960 --> 00:50:40.800
if you have your clone and the base breakproof repository,
925
00:50:40.880 --> 00:50:43.400
keep on changing, right, and at some point the base
926
00:50:43.800 --> 00:50:48.800
repository upgraded. Ye is lint in itself and you want
927
00:50:48.840 --> 00:50:52.320
also upgrade. What you can do instead of you upgrading
928
00:50:52.360 --> 00:50:55.239
it yourself in your clone is just pull the changes
929
00:50:55.599 --> 00:50:59.760
from the base without fearing that it will break anything.
930
00:51:00.519 --> 00:51:04.079
Because it's isolated, it doesn't affect your package. It only
931
00:51:04.199 --> 00:51:07.760
upgrades is link. It only upgrades no JS maybe for
932
00:51:07.880 --> 00:51:11.519
the is link, but it's very isolated. So now one
933
00:51:11.599 --> 00:51:16.679
of a sudden, suddenly just doing git pull from breakproof
934
00:51:16.800 --> 00:51:21.599
or whatever. Right, your get clone second origin, let's pull it.
935
00:51:22.159 --> 00:51:25.159
You now suddenly have upgraded islink and that's it. You
936
00:51:25.239 --> 00:51:30.400
continue there without a major like, oh, let's figure out
937
00:51:30.440 --> 00:51:33.719
configuration now, et cetera, et cetera, et cetera. So you
938
00:51:33.800 --> 00:51:36.599
suddenly have a newer version, like even major version of island.
939
00:51:36.760 --> 00:51:39.800
We just want get poll. Okay, I'm gonna post here
940
00:51:43.360 --> 00:51:50.159
if it makes sense. If it doesn't, I guess my
941
00:51:50.280 --> 00:51:50.679
thought is.
942
00:51:51.119 --> 00:51:53.480
You know what I'm trying to get my head around
943
00:51:53.639 --> 00:51:56.719
is you know you've got this when you pulled in
944
00:51:56.840 --> 00:51:59.960
your project. So going back to the example that we've
945
00:52:00.079 --> 00:52:04.480
been using, you know, it's just and or having different
946
00:52:04.559 --> 00:52:11.440
packages that ah that use different versions of node. You know, say,
947
00:52:13.440 --> 00:52:15.239
so where does that happen? At what point? Is that
948
00:52:15.360 --> 00:52:17.679
something you have to do manually where you split out
949
00:52:17.760 --> 00:52:20.840
your just to a separate directory in the mono repo.
950
00:52:22.039 --> 00:52:25.039
Yes, and this is already split in the base. However,
951
00:52:25.519 --> 00:52:27.920
you can have other tools. You can have other tools
952
00:52:27.960 --> 00:52:32.719
if you have a CLI twol called Steve right, or
953
00:52:32.760 --> 00:52:37.079
you have a I know, I think if that it
954
00:52:37.159 --> 00:52:42.039
doesn't exist, go book it trademark right here. So if
955
00:52:42.079 --> 00:52:43.559
you if you want to, if you want to create
956
00:52:43.599 --> 00:52:46.199
a tool like this, yes, you have to create your
957
00:52:46.239 --> 00:52:48.719
own package. You have to define what the run time
958
00:52:48.880 --> 00:52:52.960
to run. And basically all other packages can call stiff
959
00:52:53.639 --> 00:52:55.960
from its own package, which will be run with the
960
00:52:56.000 --> 00:53:00.639
specified run time. But for some tool which are kind
961
00:53:00.679 --> 00:53:04.639
of popular, let's put it in the web world, right.
962
00:53:05.159 --> 00:53:07.519
It doesn't have to be front end, but it's majorly
963
00:53:07.719 --> 00:53:10.360
This repository is kind of focused on the front ed
964
00:53:10.480 --> 00:53:14.079
side of the JavaScript rate, but it can be use alful,
965
00:53:14.119 --> 00:53:18.360
not just so it comes with some popular packages. I
966
00:53:18.360 --> 00:53:20.920
wouldn't say that all of them are favorable. I know,
967
00:53:21.039 --> 00:53:23.880
for example, Cypress is kind of going out of favor
968
00:53:24.000 --> 00:53:27.639
for years now, and some of them are because simply
969
00:53:27.760 --> 00:53:31.079
we have legacy and as a company we need to
970
00:53:31.159 --> 00:53:34.440
kind of pay attention. Once we started using a big
971
00:53:34.599 --> 00:53:37.960
thing like Cypress to do our integration and to intest,
972
00:53:38.480 --> 00:53:41.199
we kind of want to keep going to a certain point.
973
00:53:42.039 --> 00:53:44.920
So we have a package for Cypress for Jest for years,
974
00:53:45.000 --> 00:53:48.119
lind for even little things like DPDM that I mentioned
975
00:53:48.159 --> 00:53:52.239
that lesser known code checks for also build tools like
976
00:53:52.400 --> 00:53:56.800
web pack and other interesting cult checks by the way,
977
00:53:57.480 --> 00:53:59.920
and bi tools I mentioned. I think I mentioned likes
978
00:54:00.039 --> 00:54:03.400
con fixed as well. It's a it's another big topic,
979
00:54:03.519 --> 00:54:07.519
but there it's coming already there. So back to your question.
980
00:54:08.280 --> 00:54:11.280
You don't have to create separate packages for the things
981
00:54:11.280 --> 00:54:13.480
that exist, but for any other new tool that you
982
00:54:13.559 --> 00:54:15.360
want to introduce, you can create one.
983
00:54:18.199 --> 00:54:21.320
Okay, yeah, I think I'm gonna have to play with
984
00:54:21.400 --> 00:54:23.079
that at some point just to get my head around,
985
00:54:24.320 --> 00:54:26.599
head around and how it works. I certainly get the
986
00:54:26.679 --> 00:54:31.000
concept and it makes a lot of sense because yeah,
987
00:54:31.159 --> 00:54:35.480
I can speak from personal experience on version upgrades and
988
00:54:35.519 --> 00:54:38.440
version conflicts between different packages that they all depend on.
989
00:54:38.599 --> 00:54:45.800
So and now I want to maybe, let's say, for
990
00:54:46.320 --> 00:54:51.239
see one possible question that we might get when I
991
00:54:51.440 --> 00:54:56.760
mentioned this, right, we mentioned these effortless upgrades. You just
992
00:54:56.880 --> 00:55:00.360
pull in the latest changes from breakthrough freeball because it's
993
00:55:00.400 --> 00:55:03.599
a separate trip which keeps evolving. Credit your loan is
994
00:55:04.199 --> 00:55:06.880
from the time that you cloned it from or like
995
00:55:07.000 --> 00:55:09.519
copying now you can then upgrade and you get all
996
00:55:09.559 --> 00:55:14.159
the latest just yes, link typescripts or like the other tools. Now,
997
00:55:14.280 --> 00:55:17.519
maybe a question you have is like Buttanton, the new
998
00:55:17.599 --> 00:55:20.519
year is lint have a new algorithm and new rules
999
00:55:21.039 --> 00:55:25.320
and new maybe strictness. Right, maybe you even change the conflict,
1000
00:55:25.559 --> 00:55:28.679
the base conflict right the time extending in my application?
1001
00:55:30.239 --> 00:55:32.679
What does that mean that my entire application now will
1002
00:55:32.719 --> 00:55:36.920
like shout at me with red squiggles everywhere, right, Like,
1003
00:55:37.559 --> 00:55:40.239
I mean you only mentioned what is upgrading is lint
1004
00:55:40.280 --> 00:55:43.159
as its own thing, but what happens to my application
1005
00:55:43.239 --> 00:55:46.400
and my rules? And you'll be right to ask that
1006
00:55:46.800 --> 00:55:50.559
because if I didn't have an answer for that, this
1007
00:55:50.719 --> 00:55:53.559
is exactly what would have. Like you upgrade ye is
1008
00:55:53.639 --> 00:55:56.320
lint and all the conflict and suddenly in your editor
1009
00:55:56.559 --> 00:55:58.880
everything will be read. You'll not be able to commit,
1010
00:55:59.239 --> 00:56:01.320
your prs will just light up with like all the
1011
00:56:01.480 --> 00:56:03.880
errors that are coming in. And this is I think
1012
00:56:03.960 --> 00:56:07.800
where the interaction with Dan happened on Blue Sky. He
1013
00:56:08.239 --> 00:56:12.239
was talking about having a project with JavaScript or like
1014
00:56:12.360 --> 00:56:16.000
an older version of typescript and wanting to go to
1015
00:56:16.159 --> 00:56:20.559
newer version or more stricter or even just introduce typescript okay,
1016
00:56:21.199 --> 00:56:23.440
And this is kind of the same scenario, like changing
1017
00:56:23.960 --> 00:56:27.679
the islin conflict because if something in the code checks
1018
00:56:27.719 --> 00:56:30.239
become different and all of a sudden, all your code
1019
00:56:30.639 --> 00:56:34.480
screams that you and says like it's red. So how
1020
00:56:34.519 --> 00:56:36.440
do you jump over this hurdle? How do you go
1021
00:56:36.639 --> 00:56:40.480
from previously it was working, now with a little change,
1022
00:56:41.280 --> 00:56:45.400
it's now suddenly not working. And Don actually talked two
1023
00:56:45.480 --> 00:56:48.159
times on this podcast from the two years that I've
1024
00:56:48.199 --> 00:56:51.719
listened to prolifically about this topic, and you mentioned several
1025
00:56:51.800 --> 00:56:53.760
times like, oh man, this is a nightmare, and yes,
1026
00:56:54.280 --> 00:56:57.239
it is a nightmare because you don't have many options.
1027
00:56:57.320 --> 00:57:00.400
You have like okay, maybe only introduced for the type
1028
00:57:00.440 --> 00:57:03.159
script files and we don't check the JavaScript files, or
1029
00:57:03.199 --> 00:57:06.039
we only introduce a few checks but not all the
1030
00:57:06.159 --> 00:57:08.679
checks that we want, right because in the ideal world,
1031
00:57:08.800 --> 00:57:10.960
we have like a list of checks that we all
1032
00:57:11.039 --> 00:57:13.320
agree on that are good and this is how we
1033
00:57:13.360 --> 00:57:16.400
should be and we turn them on. But in this
1034
00:57:16.440 --> 00:57:21.000
scenario everything goes read. Okay, So what am I talking about?
1035
00:57:21.199 --> 00:57:24.039
What is the solution? It was proposed to me. It
1036
00:57:24.159 --> 00:57:27.639
wasn't original, as I said, even this repository, it's kind
1037
00:57:27.679 --> 00:57:31.440
of all going around t MPM with some more stuff
1038
00:57:31.559 --> 00:57:35.199
just around it. Right, So It was proposed to me
1039
00:57:35.239 --> 00:57:37.159
in a previous company I work with. It was the
1040
00:57:37.280 --> 00:57:41.119
idea of having an old project running with the strictest
1041
00:57:41.199 --> 00:57:45.159
possible CONFIIC for isling whatever you like, all the plugs
1042
00:57:45.199 --> 00:57:50.079
that you want, however, running a snapshot of all the
1043
00:57:50.320 --> 00:57:55.280
errors aka remembering in my file called anton dot ts.
1044
00:57:55.880 --> 00:57:59.679
I have five errors of this type, I have seven
1045
00:57:59.800 --> 00:58:04.559
error of this different type. I have twenty errors of undefined.
1046
00:58:04.639 --> 00:58:08.440
I have twenty more for console look that I don't
1047
00:58:08.480 --> 00:58:11.360
want to have in my file, right, and remembering that
1048
00:58:11.760 --> 00:58:13.920
for each file that you have in the repository, and
1049
00:58:14.119 --> 00:58:17.159
just having this kind of a mini registry. Imagine it
1050
00:58:17.280 --> 00:58:21.119
like adjacent file of like key value, found name, type
1051
00:58:21.159 --> 00:58:24.199
of error, how many found name, type of error how many?
1052
00:58:24.800 --> 00:58:29.239
And this is an invaluable resource in when upgrading and
1053
00:58:29.639 --> 00:58:34.079
going stricter, going to a better roule. Why because it
1054
00:58:34.280 --> 00:58:36.639
lets you see the problems. It lets all of your
1055
00:58:36.679 --> 00:58:40.480
developers see aha. Edit, my editor is saying this is
1056
00:58:40.559 --> 00:58:43.119
a problem, so I can focus on it, or I
1057
00:58:43.159 --> 00:58:46.639
can at least understand there's a better way. While your
1058
00:58:46.880 --> 00:58:50.079
CI checks at the point of upgrade, at the point
1059
00:58:50.119 --> 00:58:54.840
you make it stricter, still pass Why because you run yes, Lind,
1060
00:58:55.440 --> 00:59:00.320
but you also tell Eslin, hey ignore all of these
1061
00:59:00.480 --> 00:59:03.400
number of errors in these files. So if you have
1062
00:59:03.639 --> 00:59:09.840
five undefined like let's say errors in this file, then
1063
00:59:10.159 --> 00:59:13.639
you do a change. If there are still five or
1064
00:59:13.760 --> 00:59:17.840
less less than five, it's okay. If there's more than five,
1065
00:59:18.480 --> 00:59:21.320
then you scream and you fail the commit and you
1066
00:59:21.400 --> 00:59:24.320
fail the PR. So it's an approach that lets you
1067
00:59:24.440 --> 00:59:28.239
gradually kind of increase the checks but still remember the
1068
00:59:28.320 --> 00:59:31.960
status quore like not forcing you to change all of
1069
00:59:32.039 --> 00:59:35.280
your code today. So I think this is where the
1070
00:59:37.280 --> 00:59:41.320
let's say the breakproof part comes in. It allows you
1071
00:59:41.440 --> 00:59:45.119
to keep going on. It gives you the errors, it
1072
00:59:45.239 --> 00:59:48.079
tells you what they are, It lets you upgrade. All
1073
00:59:48.159 --> 00:59:50.760
of the tools live in isolation, but it lets you
1074
00:59:50.880 --> 00:59:54.039
keep going on. Of course, you can plant tech that
1075
00:59:54.199 --> 00:59:56.639
you have to plant right when to do it, but
1076
00:59:56.760 --> 00:59:59.480
it doesn't force you to do it now, and still
1077
01:00:00.079 --> 01:00:03.760
lets you use newer stuff because newer stuff don't don't
1078
01:00:03.840 --> 01:00:06.800
come only with stick the stuff. They also come with improvements,
1079
01:00:07.159 --> 01:00:10.920
maybe performance, maybe like a different kind of built, maybe
1080
01:00:11.000 --> 01:00:13.320
a new feature that you've waited so much in typescript
1081
01:00:13.800 --> 01:00:17.159
four point eight. I know that's your opinion. Specifically on
1082
01:00:17.239 --> 01:00:20.119
This is not about typescript. But let's say yes Lin
1083
01:00:20.480 --> 01:00:23.079
or you change from Yeslin to another too. You want
1084
01:00:23.079 --> 01:00:25.760
to remember the new set of errors. You don't want
1085
01:00:25.800 --> 01:00:29.039
to fix them. Now, Okay, a lot of talking. I'm
1086
01:00:29.039 --> 01:00:33.280
gonna pause again, but that's that's how we handle the flawless.
1087
01:00:33.400 --> 01:00:37.280
Let's say the interrupted upgrade. You get the new version,
1088
01:00:37.679 --> 01:00:43.840
you snapshot if there's any problems, and you keep going, gotcha.
1089
01:00:44.440 --> 01:00:49.840
Okay, yeah, that makes sense again, something I probably want
1090
01:00:49.840 --> 01:00:52.199
to play with a little more before it can ask
1091
01:00:52.280 --> 01:00:55.360
any good questions before we wrap up. I will know
1092
01:00:55.519 --> 01:00:57.599
one thing in here. I'm just looking at the directory
1093
01:00:57.719 --> 01:01:02.559
structure and I noticed you have charactors for configured for GitHub,
1094
01:01:03.039 --> 01:01:07.079
for idea, which is basically all the jet Brains tools,
1095
01:01:07.320 --> 01:01:11.960
and then vias code as well. These are the standard
1096
01:01:12.960 --> 01:01:15.199
What kind of settings are you keeping? There's any number
1097
01:01:15.199 --> 01:01:16.639
of settings you can put in there, So what kind
1098
01:01:16.639 --> 01:01:17.960
of stuff do you have in those directors?
1099
01:01:19.639 --> 01:01:21.840
I love the questions. I mean, I told it probably
1100
01:01:21.960 --> 01:01:24.840
many times, but this is an excellent question because many
1101
01:01:24.960 --> 01:01:28.760
of the more ripple tools that I mentioned there, they exist, right,
1102
01:01:30.199 --> 01:01:33.599
They help you manage it, and they give you tools
1103
01:01:33.679 --> 01:01:38.199
to and like descriptions somewhere online documentation of how to
1104
01:01:38.320 --> 01:01:42.559
configure your development environment, like how to configure intelligence, how
1105
01:01:42.639 --> 01:01:47.400
to configure VIAS code to better best work with this report.
1106
01:01:47.960 --> 01:01:51.280
But in the company, we're okay. We wanted this to
1107
01:01:51.360 --> 01:01:54.320
be seamless, like we don't want to ask developers to
1108
01:01:54.360 --> 01:01:57.760
readocumentation and each of them follow each steps. Maybe someone
1109
01:01:57.840 --> 01:02:00.440
didn't read one step they contact us us, Hey, this
1110
01:02:00.599 --> 01:02:03.719
doesn't work, right, Okay, I see you know then you
1111
01:02:03.840 --> 01:02:07.119
know that you know the drill. So we added some
1112
01:02:07.280 --> 01:02:11.320
based configuration that we know. And because we know this
1113
01:02:11.519 --> 01:02:14.280
repository setup, we know how it's managed, right, we know
1114
01:02:14.360 --> 01:02:17.440
all the tools, we know how to run the tools,
1115
01:02:18.159 --> 01:02:20.159
and we know how to kind of configure your editor.
1116
01:02:21.079 --> 01:02:24.360
So we went and went with a base configuration for
1117
01:02:24.440 --> 01:02:28.360
your editor, plus a CLI that you can run to
1118
01:02:28.559 --> 01:02:31.239
kind of onboard. You It's like if you run pmp
1119
01:02:31.559 --> 01:02:33.559
te us a command I don't remember, Behart, but if
1120
01:02:33.599 --> 01:02:36.400
you ru in command let's say PMPM breakproof on board
1121
01:02:36.920 --> 01:02:39.519
and to ask you what is your editor? There we
1122
01:02:39.639 --> 01:02:42.960
go and you'll structure. I will now set up the
1123
01:02:43.079 --> 01:02:46.320
base settings for this repot. So it's best for the
1124
01:02:46.440 --> 01:02:50.880
initial introduction, so to configure let's say yeslint in your VSCO,
1125
01:02:51.039 --> 01:02:53.760
you configure eslint running for jet brain, so you don't
1126
01:02:53.800 --> 01:02:56.480
have to forget. I've seen it so many times. You
1127
01:02:56.559 --> 01:02:59.239
get a new project, you open it up, islin doesn't work,
1128
01:02:59.400 --> 01:03:01.400
or a diferent version of Yeslin. By the way, it's
1129
01:03:01.440 --> 01:03:05.400
possible to run like this is total possibility, even vs code.
1130
01:03:05.480 --> 01:03:07.440
I'm not sure how many people know. It comes with
1131
01:03:07.559 --> 01:03:10.639
a built in versions for these kind of tools like typescript,
1132
01:03:10.960 --> 01:03:13.920
and by default it will run them, not your version,
1133
01:03:14.760 --> 01:03:18.000
so you get different kind of verse in your editor
1134
01:03:18.280 --> 01:03:20.480
that the ones that you get when you built, which
1135
01:03:20.519 --> 01:03:25.079
is super confusing. So yes, thank you for the question.
1136
01:03:25.280 --> 01:03:28.159
This is what these repositories are. And there's one for
1137
01:03:28.280 --> 01:03:31.599
gifthooks basically, which is the things that will run automatically
1138
01:03:31.679 --> 01:03:35.519
for you on pre comitt Because why because it comes
1139
01:03:35.559 --> 01:03:39.079
in with some like structure and conventions that you can follow.
1140
01:03:40.280 --> 01:03:43.920
Like all of it is nothing like separate packages and
1141
01:03:44.199 --> 01:03:47.400
additional abstractions. It's just a convention for your own package.
1142
01:03:48.119 --> 01:03:51.199
For example, as long as you have a pre commit
1143
01:03:51.320 --> 01:03:54.480
script maybe or I think it was called linked pre commit.
1144
01:03:54.840 --> 01:03:58.119
As long as you have this script in your packageation
1145
01:03:58.519 --> 01:04:01.760
it will specifically run it before you commit. You don't
1146
01:04:01.800 --> 01:04:05.079
need do any additional configuration, and it's all possible because
1147
01:04:05.119 --> 01:04:08.920
it knows it's managed with PMPM. Okay, I'm gonna post here.
1148
01:04:08.960 --> 01:04:09.079
I know.
1149
01:04:09.159 --> 01:04:10.119
Were kind of wrapping up, so.
1150
01:04:10.320 --> 01:04:16.400
Yeah, yeah, or if my case, you you just skip
1151
01:04:16.519 --> 01:04:18.559
the pre commit hook sometimes just to get a committed
1152
01:04:24.880 --> 01:04:29.199
We won't talk about that. Uh yeah. So we sort
1153
01:04:29.199 --> 01:04:30.800
of hit a time limit here, so we need to
1154
01:04:30.840 --> 01:04:35.639
start wrapping up. So before we get to picks, was
1155
01:04:35.679 --> 01:04:38.679
there anything two questions? One, was there anything that you
1156
01:04:38.760 --> 01:04:42.639
wanted to cover that we didn't cover about this repel?
1157
01:04:43.800 --> 01:04:46.719
Yes, I'm not a fast talk or maybe i am,
1158
01:04:46.840 --> 01:04:50.440
but I'm I'm not able to be super concise. Maybe
1159
01:04:50.480 --> 01:04:52.159
the one thing that we didn't cover, like we can
1160
01:04:52.239 --> 01:04:55.280
go into more details, I don't know later on is
1161
01:04:55.320 --> 01:04:59.199
the fact that because the repository is so integrated, as
1162
01:04:59.239 --> 01:05:02.719
you see right, editors packages that are already there, right,
1163
01:05:03.440 --> 01:05:06.559
it comes in with understanding of the structure of the repository.
1164
01:05:07.719 --> 01:05:12.400
So it comes in with already working CI, already knowing
1165
01:05:12.639 --> 01:05:15.559
what to run on your pr, already knowing how to
1166
01:05:15.719 --> 01:05:19.199
publish your package to MPM registry. All of the things
1167
01:05:19.320 --> 01:05:22.679
are there and they work very well with the repository
1168
01:05:22.719 --> 01:05:27.679
because they understand it. So it's not only a management
1169
01:05:27.719 --> 01:05:31.360
for dependencies and project it's also for you to eliminate
1170
01:05:31.440 --> 01:05:33.519
the step of like, oh I need to set up
1171
01:05:33.559 --> 01:05:37.159
now jobs for end to end testing, for publishing, for deploying,
1172
01:05:37.679 --> 01:05:41.400
for checks. All of it is there, configured with like
1173
01:05:41.760 --> 01:05:44.159
concurrency and everything that you need. But yeah, that's my
1174
01:05:44.239 --> 01:05:47.280
short answer. Yes, I did have something I didn't cover.
1175
01:05:48.480 --> 01:05:52.599
So okay, all right, well thank you. This is uh
1176
01:05:54.000 --> 01:05:54.719
my brain hurts.
1177
01:05:55.599 --> 01:05:56.840
I'm sorry.
1178
01:05:57.519 --> 01:06:00.519
Sorry, that's quite a right. Yeah, there's a there's a
1179
01:06:01.079 --> 01:06:03.320
classic are if youamiliar with the fire side, there's a
1180
01:06:03.440 --> 01:06:06.400
real famous cartoon here. I'm not in a state. Oh
1181
01:06:06.559 --> 01:06:10.519
it's awesome. I look it up online. There's this guy.
1182
01:06:10.679 --> 01:06:14.039
There're just you know, one panel cartoons, and there's a
1183
01:06:14.119 --> 01:06:17.960
famous one where he shows a kid in class raising
1184
01:06:18.119 --> 01:06:20.440
his hands. Excuse me? Can I leave class? My brain
1185
01:06:20.559 --> 01:06:24.159
is full? So that's right. Look that up that I'll
1186
01:06:24.199 --> 01:06:25.320
make that as a pick. I don't know where to
1187
01:06:25.360 --> 01:06:29.559
find it online, but it's awesome, all right. And then
1188
01:06:29.920 --> 01:06:33.079
if people want to follow you and give you money,
1189
01:06:33.119 --> 01:06:36.079
your read more about this stuff? Where are the best
1190
01:06:36.119 --> 01:06:37.039
places to do that.
1191
01:06:37.639 --> 01:06:41.719
Okay, I'll start with the project it's breakproof dev. It
1192
01:06:41.800 --> 01:06:46.039
will just redirect you to the repo Breakproof Death. Otherwise,
1193
01:06:46.079 --> 01:06:49.920
for me personally, I use blue Sky. Not extremely active,
1194
01:06:49.960 --> 01:06:54.320
but I'm there. I respond to messages. That's my kind
1195
01:06:54.360 --> 01:06:58.760
of a small area of social online life, sometimes LinkedIn,
1196
01:06:59.079 --> 01:06:59.840
sometimes linking.
1197
01:07:00.480 --> 01:07:02.719
Well, that's it, and what are you on blue Sky?
1198
01:07:03.800 --> 01:07:10.559
I'm Dev So it's my family name Dev. Yes drinks.
1199
01:07:10.960 --> 01:07:15.079
Alrighty, Well, with that, we will shift the picks Pixar,
1200
01:07:15.280 --> 01:07:17.920
the part of the program where we get to talk
1201
01:07:17.920 --> 01:07:22.360
about anything. We want to talk about, anything from games
1202
01:07:22.360 --> 01:07:26.880
to books, to food, to movies, to social issues, you
1203
01:07:27.000 --> 01:07:29.840
name it. I'm going to stick in the tech realm
1204
01:07:30.119 --> 01:07:35.639
and reference blog posts that I mentioned earlier called the
1205
01:07:35.719 --> 01:07:38.840
many many many JavaScript run times of the last decade.
1206
01:07:38.920 --> 01:07:44.480
It's on buttondown dot com whatever underscore Jamie, and it
1207
01:07:44.639 --> 01:07:48.360
is amazing just all of the drun times that are
1208
01:07:48.360 --> 01:07:52.480
out there that he talks about, whether it's TVs, UH
1209
01:07:53.159 --> 01:07:57.559
operating systems and native apps and micro controllers and edge
1210
01:07:57.599 --> 01:08:01.119
computing and so on. And at the end he gives
1211
01:08:01.119 --> 01:08:04.119
a little summary. He says this was published in June
1212
01:08:04.280 --> 01:08:06.079
of this year. I think it was June twenty seventh
1213
01:08:06.119 --> 01:08:09.119
to twenty five. And at the end he gives a
1214
01:08:09.119 --> 01:08:11.920
little summary. He says he started he started working on
1215
01:08:12.039 --> 01:08:16.560
this in April of twenty twenty four and stretch the
1216
01:08:16.600 --> 01:08:18.920
limits of button down. I guess that's the platform here
1217
01:08:19.079 --> 01:08:22.000
edit history at over five two hundred and sixty revisions
1218
01:08:22.920 --> 01:08:26.880
whoa before by August of that month. So yeah, even
1219
01:08:26.920 --> 01:08:29.880
then he still doesn't think it's finished. But yeah, it's
1220
01:08:29.880 --> 01:08:33.239
a great interesting if you're into this type of stuff.
1221
01:08:33.279 --> 01:08:37.479
It's a great blog post. And then with that we'll
1222
01:08:37.560 --> 01:08:40.199
switch to the dad jokes of the week, which are
1223
01:08:40.880 --> 01:08:43.119
the high point of any of these episodes, as any
1224
01:08:43.319 --> 01:08:46.720
fan will tell you. So we'll start out. My wife
1225
01:08:46.840 --> 01:08:48.159
was mad at me because I woke her up at
1226
01:08:48.239 --> 01:08:51.600
three o'clock am, but I just wanted to tell her
1227
01:08:51.680 --> 01:08:53.279
that she forgot to take her sleeping pills.
1228
01:08:55.720 --> 01:08:55.960
Thanks you.
1229
01:08:57.640 --> 01:09:00.560
I think everybody knows the movie Jaws. You know about
1230
01:09:00.840 --> 01:09:05.359
the shark? Did you know that if you watch it backwards,
1231
01:09:06.000 --> 01:09:08.479
it's actually a heartwarming story about a shark who gives
1232
01:09:08.600 --> 01:09:15.000
arms and legs to people who need them. And then
1233
01:09:15.079 --> 01:09:17.760
recently I saw a story about a man who's suing
1234
01:09:19.000 --> 01:09:22.800
company that makes a product called smart water for not
1235
01:09:23.039 --> 01:09:25.319
making him smart. I'm not sure what he was thinking,
1236
01:09:25.520 --> 01:09:28.479
but along those lines, I would like to formally announce
1237
01:09:28.600 --> 01:09:34.640
my lawsuit against thin mits because they really don't make
1238
01:09:34.680 --> 01:09:38.479
it thin. So those are my picks god jokes of
1239
01:09:38.520 --> 01:09:39.960
the week. What do you have for a santon?
1240
01:09:40.720 --> 01:09:44.279
I am trying to find the translation for it in English.
1241
01:09:44.520 --> 01:09:47.960
Give me a sack, but I both like it's a
1242
01:09:48.039 --> 01:09:52.640
kitchen thing. It's a kitchen thing, and I amazed my
1243
01:09:52.720 --> 01:09:57.640
father with it. Give me a second, give me a second,
1244
01:09:57.720 --> 01:10:01.079
ah a second? Oh yeah, and.
1245
01:10:01.039 --> 01:10:02.520
I'm gonna yeah, pretty famous.
1246
01:10:03.359 --> 01:10:06.119
What is that the time limit? Oh no, no, pom
1247
01:10:06.239 --> 01:10:12.600
gran pomegranate, pomegranate, pomogrand Okay, I'm sorry, I mean pronunciation ship.
1248
01:10:12.720 --> 01:10:16.399
I know, so pommegrant is kind of a famously messy
1249
01:10:17.239 --> 01:10:21.159
to open it and clean it, and I love it. Yeah,
1250
01:10:21.199 --> 01:10:24.000
it's true. It's the fruit. It's like a red fruit.
1251
01:10:24.119 --> 01:10:27.600
It's prolific in let's say, Grease, which is like a
1252
01:10:27.640 --> 01:10:30.880
neighboring country here in Bulgaria. Uh and it is also
1253
01:10:31.119 --> 01:10:33.920
part of the south parts is there and my dad,
1254
01:10:34.000 --> 01:10:37.640
as a person coming from there, I loves this loves this.
1255
01:10:37.880 --> 01:10:39.680
I mean when I was growing up, it was just
1256
01:10:40.039 --> 01:10:43.920
pomegranate and pomegran pomegranate, like any any time it's is
1257
01:10:44.000 --> 01:10:46.880
the season, and of course it's like a special type
1258
01:10:46.920 --> 01:10:49.920
of like opening it and getting the seeds out, et cetera.
1259
01:10:50.199 --> 01:10:52.760
And I recently, I just I don't know, brows online
1260
01:10:52.960 --> 01:10:57.000
is kind of a shopping, anti depressing, running away from
1261
01:10:57.039 --> 01:11:01.000
reality moment. So I ended up at the kitchen tool
1262
01:11:01.399 --> 01:11:04.640
that you kind of put the pomegranate on, and it
1263
01:11:04.760 --> 01:11:07.760
comes with a little hammer, like it's super good. Comes
1264
01:11:07.800 --> 01:11:10.920
with a little hammer, and it removes the mess from
1265
01:11:11.000 --> 01:11:13.960
getting the seeds out, and it keeps the pieces that
1266
01:11:14.119 --> 01:11:16.800
host the seeds out of the seeds. It's amazing. Like
1267
01:11:16.960 --> 01:11:19.560
I know, maybe I'm not doing a good service and
1268
01:11:19.600 --> 01:11:24.000
a job describing it. It's a pomegranate cleaning tool or whatever.
1269
01:11:24.319 --> 01:11:27.800
And I love it. Only the fact that it amazed
1270
01:11:27.840 --> 01:11:30.760
my dad when I showed how this works was worth
1271
01:11:31.319 --> 01:11:35.079
so highly highly recommend that anyway. And it's called what
1272
01:11:35.920 --> 01:11:39.479
I pomegranate too, Like there's no real name, there's no
1273
01:11:39.600 --> 01:11:41.800
product name, to be honest, Like I think it was
1274
01:11:41.920 --> 01:11:45.720
like yeah, like I couldn't find like a brand that
1275
01:11:45.840 --> 01:11:49.640
sells it. It was like a random websites to be honest.
1276
01:11:50.840 --> 01:11:53.159
All of them have like a different brand names, so
1277
01:11:53.199 --> 01:11:55.680
I'm not sure there's like a one origin brand that
1278
01:11:55.960 --> 01:11:56.439
created this.
1279
01:11:58.359 --> 01:12:02.640
Yeah. Amazon's got a few pomegranate tool Yeah, yeah, I
1280
01:12:02.720 --> 01:12:05.960
mean yes, Oh, I think I see this, Okay, Yeah?
1281
01:12:06.479 --> 01:12:07.520
Is it like you think?
1282
01:12:07.960 --> 01:12:11.079
What I'm seeing has like a bowl and then a piece.
1283
01:12:10.840 --> 01:12:14.119
Of it's a little metal bowl. Yes, it's almost like
1284
01:12:14.159 --> 01:12:16.680
a sie. If there's like a little bowl that is
1285
01:12:17.039 --> 01:12:19.760
exactly the size of a pomegranate, it looks like this
1286
01:12:20.199 --> 01:12:23.039
lemon squeezers. There's no squeezing kin. Yes, but you put
1287
01:12:23.439 --> 01:12:26.640
the bommegranate on it and use the little hammer. It's
1288
01:12:26.760 --> 01:12:29.479
just ridiculous. It's just ridiculous when you think about it,
1289
01:12:29.600 --> 01:12:32.199
like being in the kitchen having a little wooden hammer
1290
01:12:32.520 --> 01:12:34.960
with it and just knocking out the seats. I mean,
1291
01:12:35.199 --> 01:12:37.520
I love all all of it and how it functions,
1292
01:12:37.600 --> 01:12:41.079
the efficiency of it, and by kind of the my
1293
01:12:41.239 --> 01:12:44.479
wife coming in and just looking at me hammering away
1294
01:12:44.640 --> 01:12:46.800
at the pomegrap I love all of it.
1295
01:12:48.239 --> 01:12:51.960
Yeah. Yeah. Pomegran Appeeler twenty twenty four. There's a few
1296
01:12:52.000 --> 01:12:54.319
different options amazing.
1297
01:12:54.359 --> 01:12:57.119
I know, ridicular spick that could have picked so much
1298
01:12:57.359 --> 01:12:57.840
other stuff.
1299
01:12:58.039 --> 01:13:01.399
Yeah, the life hack type, those are the best ones
1300
01:13:01.640 --> 01:13:05.359
that helped solve the little problems. Cool for sure. All right,
1301
01:13:05.760 --> 01:13:08.000
well we're going to wrap up. Thank you Anton for
1302
01:13:08.159 --> 01:13:10.159
coming on telling us about your project. I know there
1303
01:13:10.199 --> 01:13:12.760
are many people out there that use mono repos and
1304
01:13:13.199 --> 01:13:15.000
as I sort of mentioned off there, we have a
1305
01:13:15.560 --> 01:13:18.000
project that we're looking to move forward open sourcing in
1306
01:13:18.039 --> 01:13:21.439
a mono repot type of structure. So so that will
1307
01:13:21.520 --> 01:13:23.760
be uh definitely a tool to look at.
1308
01:13:24.439 --> 01:13:26.239
Thank you for having me, Thank you for having me.
1309
01:13:26.279 --> 01:13:30.079
My pleasure, pleasure, pleasure. All right, thanks everybody for listening,
1310
01:13:30.199 --> 01:13:32.439
and we'll talk to you next time on JavaScript ever.