WEBVTT

NOTE
This file was generated by Descript 

00:00:00.000 --> 00:00:00.359
2-vcarl: Hello.

00:00:00.359 --> 00:00:04.230
Thank you for joining us for the
November edition of this month in React.

00:00:04.230 --> 00:00:08.700
As we recap what's going on in the
React, react native and web ecosystems

00:00:09.030 --> 00:00:11.160
We're coming to you live from
Reactive Flux, the place for

00:00:11.160 --> 00:00:12.960
professional developers using React.

00:00:13.200 --> 00:00:14.610
and I am Carl.

00:00:14.610 --> 00:00:17.610
I'm a staff product developer and
freelance community leader here at

00:00:17.610 --> 00:00:20.730
Reactive Flux, where I do community
programs like these events and build tools

00:00:20.730 --> 00:00:22.140
to help keep the community operating.

00:00:22.353 --> 00:00:23.253
1-acemarke: Hi, I am Mark.

00:00:23.253 --> 00:00:28.233
My day job is working at replay and
doing various time travel debugging

00:00:28.293 --> 00:00:31.250
and information architecture things.

00:00:31.580 --> 00:00:33.770
Outside of that, I, I work on docs.

00:00:33.770 --> 00:00:37.580
I complain about the React docs
and I collect links and I go

00:00:37.580 --> 00:00:38.900
rewrite libraries like emer.

00:00:39.488 --> 00:00:41.288
2-vcarl: mo unfortunately could not join.

00:00:41.288 --> 00:00:43.058
He had a, fire drill happen.

00:00:43.360 --> 00:00:47.020
Metaphorical fire drill happened at
work like an hour before we started,

00:00:47.600 --> 00:00:51.830
but generally we have Mo who is
head of MO at Theto and is very

00:00:51.830 --> 00:00:53.595
active , in the React native community.

00:00:53.675 --> 00:00:56.195
Kind of sad that he had to skip
out this month because he just

00:00:56.195 --> 00:01:00.095
did react Native London, and I
was hoping to hear how that went.

00:01:00.755 --> 00:01:04.145
But yeah, let's get straight
into it with some new releases.

00:01:04.835 --> 00:01:07.445
First off, we've got better off 1.4.

00:01:07.945 --> 00:01:09.385
I actually use Better off now.

00:01:09.415 --> 00:01:09.745
Woo.

00:01:09.795 --> 00:01:13.665
I have been excited about it for a while
because I don't like authentication.

00:01:13.665 --> 00:01:16.455
Libraries generally, like stuff
like Passport or what, you

00:01:16.455 --> 00:01:20.475
know, even clerk or the SaaS
businesses, just like none of them.

00:01:20.525 --> 00:01:24.255
I didn't like them very much, so, was
very pleased to see an open source

00:01:24.255 --> 00:01:28.725
library that looked to cover  many
of the bases that I want and can

00:01:28.725 --> 00:01:31.305
confirm after using it that it does.

00:01:31.305 --> 00:01:34.965
So I'm excited to see better off
1.4, which is the first release

00:01:34.965 --> 00:01:37.995
since I believe July when it did 1.3.

00:01:38.485 --> 00:01:40.525
A couple of quick highlights from it.

00:01:40.525 --> 00:01:45.295
It's got stateless off, so you can
do sessions without a database just

00:01:45.295 --> 00:01:47.335
by not giving it one, which is nice.

00:01:47.735 --> 00:01:52.025
It's also got SCIM provisioning
for identities in multi-domain

00:01:52.025 --> 00:01:54.215
scenarios, which is cool.

00:01:54.715 --> 00:01:57.865
Also some other little details
like database joins and

00:01:57.985 --> 00:01:59.755
custom state for OAuth flows.

00:01:59.755 --> 00:02:04.319
But yeah, just auth is a shockingly deep
subject when you actually start dealing

00:02:04.319 --> 00:02:06.569
with the nitty gritty weirdnesses of it.

00:02:07.049 --> 00:02:11.708
And I have generally found most open
source projects trying to support

00:02:11.708 --> 00:02:15.488
authentication to be, to leave
something to be desired and better

00:02:15.488 --> 00:02:19.478
off leaves the least to be desired
of the projects I've tried, so.

00:02:19.718 --> 00:02:20.108
Love it.

00:02:20.468 --> 00:02:20.978
New version

00:02:21.405 --> 00:02:24.000
1-acemarke: I have thus far managed
to stay away from dealing with

00:02:24.000 --> 00:02:27.930
oath at all in my career, and I
would like to keep it that way.

00:02:28.500 --> 00:02:29.850
2-vcarl: Yeah, that's not a bad call.

00:02:29.880 --> 00:02:32.910
Since I haven't been able to avoid
it, I went a little bit deep on

00:02:32.910 --> 00:02:34.830
it and I don't hate that either.

00:02:35.250 --> 00:02:36.150
It's interesting.

00:02:36.150 --> 00:02:37.230
It's fascinating actually.

00:02:37.230 --> 00:02:37.530
I don't know.

00:02:37.530 --> 00:02:41.160
One of the vague startup ideas in
the back of my brain is related

00:02:41.160 --> 00:02:45.120
to authentication and identity
management, which could be cool.

00:02:45.150 --> 00:02:48.406
I don't know, maybe I'll do
something with that eventually, I

00:02:48.406 --> 00:02:50.386
want you to unveil your mag opus

00:02:51.061 --> 00:02:51.991
1-acemarke: happily.

00:02:52.021 --> 00:02:57.011
So I talked about this a bit last
time, but Redux Toolkit relies on

00:02:57.011 --> 00:02:59.201
emer for immutable state updates.

00:02:59.261 --> 00:03:01.001
It always has since day one.

00:03:01.001 --> 00:03:04.215
And we've gotten various complaints over
the years that, you know, emer is kind of

00:03:04.215 --> 00:03:08.865
slow, but we've always said that we prefer
the fact that it eliminates accidental

00:03:08.865 --> 00:03:11.025
mutations, makes reducers easier to write.

00:03:11.505 --> 00:03:13.995
Of course, we want Redux
Toolkit to be fast, but we

00:03:13.995 --> 00:03:15.495
also want things to be correct.

00:03:15.943 --> 00:03:17.383
End users do not have bugs.

00:03:17.953 --> 00:03:22.723
So I'd done a little bit of perf
investigation into Imer like a year ago.

00:03:22.843 --> 00:03:26.803
Saw that it had gotten slower, filed
an issue, it was kind of left there.

00:03:27.493 --> 00:03:32.443
And at the start of September, I myself
dug in and started trying to see if

00:03:32.443 --> 00:03:34.813
I could optimize I ER's performance.

00:03:34.813 --> 00:03:39.493
And I spent well over a hundred
hours collectively across September

00:03:39.493 --> 00:03:43.963
and October, deep diving into Immers
code base, comparing it to other

00:03:43.963 --> 00:03:46.523
libraries understanding how it worked.

00:03:47.060 --> 00:03:51.620
And trained to do a bunch of performance
optimizations and so ended up filing

00:03:51.620 --> 00:03:57.040
a few different prs Imer 10.2, shipped
last month with some small tweaks, and

00:03:57.460 --> 00:04:02.470
Michelle West Rate just merged a big
architectural change and released it as

00:04:02.500 --> 00:04:04.870
Imer version 11 just a couple days ago.

00:04:05.410 --> 00:04:09.760
And then I was able to put out RTK
two point 11, which picks that up.

00:04:09.850 --> 00:04:13.240
So free performance wins
for Redux toolkit and nier.

00:04:13.635 --> 00:04:14.270
2-vcarl: Heck yeah.

00:04:14.330 --> 00:04:16.880
That was what was the average speed up?

00:04:16.966 --> 00:04:21.736
1-acemarke: the current builds average
about 20 to 25% across all the different

00:04:21.736 --> 00:04:24.186
benchmarks varying by scenario.

00:04:24.546 --> 00:04:29.526
And then there's another outstanding
PR, which adds an optional array

00:04:29.526 --> 00:04:34.656
methods override plugin, which
drastically speeds up array methods.

00:04:35.251 --> 00:04:35.521
2-vcarl: Heck yeah.

00:04:35.671 --> 00:04:36.241
That's awesome.

00:04:36.301 --> 00:04:41.701
We love a core performance improvement
and I, I wanna shout out the ecosystem

00:04:41.701 --> 00:04:43.501
performance, you know, I don't know,

00:04:43.561 --> 00:04:45.451
1-acemarke: E 18 E folks are awesome.

00:04:45.481 --> 00:04:51.091
They have been doing a ton of work to
clean up large dependency trees and slim

00:04:51.091 --> 00:04:55.846
down packages and remove dependencies
across a wide variety of tools

00:04:56.686 --> 00:04:56.986
2-vcarl: Yep.

00:04:57.196 --> 00:05:01.636
a stat that I believe we'll talk
about later, I saw in general

00:05:01.636 --> 00:05:03.206
ecosystem commentary yeah.

00:05:03.206 --> 00:05:06.536
I guess in the NPM supply chain attack
that we'll talk about later, a a a

00:05:06.536 --> 00:05:09.716
stat that came out of a blog post from
that was that the average JavaScript

00:05:09.716 --> 00:05:14.576
project pulls in 683, I believe
in was it transitive dependencies?

00:05:14.636 --> 00:05:15.686
Just like, yeah.

00:05:15.716 --> 00:05:16.226
It's a lot.

00:05:16.286 --> 00:05:16.796
So

00:05:17.036 --> 00:05:17.696
when you've got that,

00:05:17.696 --> 00:05:21.056
many dependencies, performance
of the ecosystem is challenging.

00:05:21.086 --> 00:05:21.296
Yeah.

00:05:21.593 --> 00:05:22.643
1-acemarke: that doesn't surprise me.

00:05:22.673 --> 00:05:28.223
I know that React app the last I saw it
defaulted to about 1500 dependencies,

00:05:28.223 --> 00:05:30.353
largely because of Webpac, et cetera.

00:05:30.733 --> 00:05:35.053
Vet's obviously a lot fewer, but
still that's, that's not great,

00:05:35.053 --> 00:05:36.943
just for a whole variety of reasons.

00:05:37.491 --> 00:05:39.141
2-vcarl: I guess teaser for y'all.

00:05:39.191 --> 00:05:43.091
Later towards the end of the episode
we're gonna talk about web ecosystem

00:05:43.091 --> 00:05:47.231
and there's been some blog posts talking
about like AI and how it defaults to

00:05:47.231 --> 00:05:51.521
building react instead of using the
web platform and, how do we promote

00:05:51.521 --> 00:05:53.231
the web overreact, things like that.

00:05:53.271 --> 00:05:55.941
Which I don't know, it just feels that
we just started bleeding into that

00:05:55.941 --> 00:06:00.171
topic and so we will get much more
deeply into that later in the episode.

00:06:00.728 --> 00:06:01.538
1-acemarke: Next release.

00:06:01.598 --> 00:06:03.458
So, storybook 10 came out.

00:06:03.808 --> 00:06:05.608
Few different big points there.

00:06:05.698 --> 00:06:08.848
One of the biggest is that it's
now ESM only, they've removed

00:06:08.848 --> 00:06:10.768
all the, the common JS artifacts.

00:06:11.078 --> 00:06:14.918
So they've shrunk the install size
and they've also drastically shrunk

00:06:14.978 --> 00:06:17.138
the dependency chains as well.

00:06:17.508 --> 00:06:20.968
As well as some improvements
to things like the mocking and

00:06:20.968 --> 00:06:22.408
some of the storybook formats.

00:06:22.847 --> 00:06:26.387
And then one other release of note,
the remix folks are continuing to

00:06:26.387 --> 00:06:30.377
work on , remix V three after the
initial demo and announcements.

00:06:30.377 --> 00:06:32.927
And they're trying to build it,
as I understand it, with a lot

00:06:32.927 --> 00:06:34.427
of smaller reusable packages.

00:06:34.794 --> 00:06:41.004
And they just put out the first 0.1
alpha of their event interaction package,

00:06:41.034 --> 00:06:46.374
which is providing an abstraction
for being able to compose events and

00:06:46.374 --> 00:06:48.294
listeners and behaviors together.

00:06:48.784 --> 00:06:49.594
Looks interesting.

00:06:49.654 --> 00:06:54.244
I'm not gonna claim I understand
like exactly the benefits this comes,

00:06:54.694 --> 00:06:59.524
but nice to see the progress there
and I suspect that a lot of folks

00:06:59.524 --> 00:07:00.664
are gonna get some use outta this.

00:07:01.004 --> 00:07:04.244
2-vcarl: Yeah, I'm reading the
syntax here and it looks like

00:07:04.304 --> 00:07:09.284
a different way of adding event
listeners to dom nodes, which, sure.

00:07:09.314 --> 00:07:09.644
I don't know.

00:07:10.064 --> 00:07:11.174
There's weird quirks.

00:07:11.604 --> 00:07:15.444
And certainly the remix team and, you
know, Michael Jackson and Ryan Florence

00:07:15.444 --> 00:07:20.029
specifically have shown, have demonstrated
a great willingness to jump into.

00:07:20.779 --> 00:07:26.269
What many people consider solved problems
to reexamine from first principles.

00:07:26.329 --> 00:07:29.929
So I dunno, they, they've done that,
they've done that repeatedly with their

00:07:29.929 --> 00:07:34.889
own solved problems of data loading
in routing the interaction between

00:07:34.889 --> 00:07:37.899
data loading and routing I feel like
that's one of the bigger complaints

00:07:37.899 --> 00:07:40.959
about React router is that they
keep reexamining that same question.

00:07:40.959 --> 00:07:42.039
So, I don't know.

00:07:42.069 --> 00:07:45.436
It's interesting that they do
have interesting things to say

00:07:45.436 --> 00:07:48.622
when I've seen them reexamine,
quote unquote solved problems.

00:07:48.622 --> 00:07:50.123
So, I'll, I'm curious.

00:07:50.123 --> 00:07:51.503
This looks a little strange.

00:07:51.503 --> 00:07:55.283
It looks pretty divorced from the
DOM structure, so if you just like on

00:07:55.283 --> 00:08:01.935
input element and then add a bunch of
listeners for it, that's curious anyway.

00:08:02.115 --> 00:08:02.475
Yeah.

00:08:02.625 --> 00:08:04.605
O one release, we'll see
what they come out with.

00:08:05.440 --> 00:08:05.740
Okay.

00:08:05.740 --> 00:08:07.750
That's all the new releases we got so far.

00:08:07.800 --> 00:08:09.030
Let's go into some main content.

00:08:09.430 --> 00:08:13.893
First off we want to talk a bit about,
yeah, mark, you are on a, an ecosystem

00:08:13.893 --> 00:08:15.633
panel at React Summit this month.

00:08:16.120 --> 00:08:16.786
1-acemarke: So, Let's see.

00:08:16.786 --> 00:08:18.526
Addie has money, was moderating.

00:08:18.656 --> 00:08:23.076
We had Seth, Webster from the React
team, react Foundation shun person,

00:08:23.076 --> 00:08:26.306
Amy Ner Nicholas Gallagher, and myself.

00:08:26.816 --> 00:08:28.496
A lot of the discussion was.

00:08:29.015 --> 00:08:34.775
Us asking Seth Webster questions
about, so this React Foundation thing,

00:08:34.835 --> 00:08:37.014
like how is this actually gonna work?

00:08:37.044 --> 00:08:41.634
What does this actually mean for the React
team and the project and the ecosystem?

00:08:41.988 --> 00:08:44.028
there is a video for the panel.

00:08:44.028 --> 00:08:45.528
It's not unlocked yet.

00:08:45.578 --> 00:08:49.028
I have access to it because
I speak at GI Nation events.

00:08:49.348 --> 00:08:52.498
But the video should unlock
within a couple weeks, I think.

00:08:52.798 --> 00:08:57.118
a few different points that Seth made
during the panel itself, and then

00:08:57.118 --> 00:09:01.168
I had a chance to have a follow-up
discussion with him afterwards.

00:09:01.708 --> 00:09:06.135
And there's a few different very
interesting pieces of news about

00:09:06.165 --> 00:09:09.405
how the foundation's going to
work and what their plans are.

00:09:10.277 --> 00:09:13.412
he talked a bit about some
of the, the funding process.

00:09:13.502 --> 00:09:17.432
So, you know, large companies pay, you
know, a good chunk of money to be members.

00:09:17.432 --> 00:09:21.165
The, the existing board member
companies have already paid up

00:09:21.165 --> 00:09:22.455
for like three to five years.

00:09:22.755 --> 00:09:26.337
And it sounds like he'd actually been
working on putting the foundation

00:09:26.337 --> 00:09:28.347
together for over four years.

00:09:28.347 --> 00:09:31.536
Like this was a very long
term kind of a process.

00:09:32.016 --> 00:09:35.286
And they're hoping to do a number
of different things with the money.

00:09:35.686 --> 00:09:38.741
They want to, hire some
additional engineers.

00:09:38.771 --> 00:09:41.981
And he even said some of
that would be spent on having

00:09:41.981 --> 00:09:45.011
engineers triage the issues.

00:09:45.131 --> 00:09:48.521
And if you've ever looked at the
React repo, you know, that's a thing

00:09:48.521 --> 00:09:51.071
that they do not do very often.

00:09:51.371 --> 00:09:53.441
So even something like that sounds good.

00:09:53.881 --> 00:09:57.991
They want to hire some more people to work
on the actual docs and they're hoping to

00:09:57.991 --> 00:10:01.141
give money out to communities in some way.

00:10:01.351 --> 00:10:02.641
Don't know details on that,

00:10:03.201 --> 00:10:03.931
2-vcarl: Tell me more.

00:10:04.155 --> 00:10:04.725
1-acemarke: exactly.

00:10:05.225 --> 00:10:06.125
Another data point.

00:10:06.215 --> 00:10:11.605
So a lot of the plans have to
do with the development process

00:10:11.665 --> 00:10:14.095
of re the React project itself.

00:10:14.770 --> 00:10:17.080
And transparency around that.

00:10:17.450 --> 00:10:20.430
Apparently they were even hoping to
launch the foundation like a year and

00:10:20.430 --> 00:10:26.078
a half ago, and then they realized that
like our own in day-to-day development

00:10:26.078 --> 00:10:28.538
processes aren't ready for that.

00:10:28.838 --> 00:10:35.078
We need to dog food the processes
ourselves first so that we're more

00:10:35.078 --> 00:10:37.118
ready when the foundation goes live.

00:10:37.505 --> 00:10:41.655
And so some of that was you know,
actually having docs and plans as

00:10:41.655 --> 00:10:46.545
new features are being developed or
treating things and kind of like a, you

00:10:46.545 --> 00:10:50.625
know, TC 39 staged process approach.

00:10:51.105 --> 00:10:53.950
But one of the biggest things that
Seth told me directly was that.

00:10:54.515 --> 00:10:58.055
Up until now, the React team has had,
you know, their, like their weekly status

00:10:58.055 --> 00:11:00.815
meetings, and those are purely internal.

00:11:01.165 --> 00:11:05.575
First off it was just all the React
team working at Meta and then it

00:11:05.575 --> 00:11:07.945
was, you know, meta plus Versal.

00:11:08.245 --> 00:11:12.835
But those meetings have always been
internal, private, and non-visible.

00:11:13.072 --> 00:11:19.282
And Seth said that they eventually want
to literally open up the weekly React team

00:11:19.282 --> 00:11:24.532
planning meetings to the public even as
like a, like a Zoom call with no password.

00:11:25.072 --> 00:11:29.032
And that eventually, like designated
community reps would even be able to

00:11:29.032 --> 00:11:31.612
actively participate in those discussions.

00:11:32.142 --> 00:11:37.932
So that's a radical change in
the development of React itself.

00:11:38.392 --> 00:11:42.747
He also said that they're planning
to, resurrect or like completely

00:11:42.747 --> 00:11:47.307
redo the RFC process, which frankly
was kind of dead from the beginning.

00:11:47.307 --> 00:11:51.297
It was where random people from the
community posted ideas that got ignored

00:11:51.627 --> 00:11:53.637
and the React team posted, finished.

00:11:53.907 --> 00:11:57.237
things that they planned to ship and
then people argued over the naming

00:11:57.237 --> 00:11:58.467
and the React team ignored that.

00:11:58.644 --> 00:12:02.724
So like historically, the RFC
process was pretty much irrelevant

00:12:02.814 --> 00:12:04.704
to actual React development.

00:12:05.197 --> 00:12:10.687
Now they're talking about making it
like a real meaningful discussion

00:12:10.687 --> 00:12:12.787
and part of the planning process.

00:12:13.357 --> 00:12:16.357
Now, again, like do I know how
this is gonna work out in practice?

00:12:16.417 --> 00:12:16.957
No.

00:12:17.226 --> 00:12:22.926
But I can see the amount of effort and
the intent behind the foundation and

00:12:22.926 --> 00:12:24.966
the plans that they're talking about.

00:12:25.446 --> 00:12:30.911
And even if it doesn't end up going
exactly as they or we would hope, I

00:12:30.911 --> 00:12:35.591
see good faith and good intentions
behind all the work that they're

00:12:35.591 --> 00:12:37.391
trying to do around the process here.

00:12:37.841 --> 00:12:40.361
So I'm actually very,
very excited about this.

00:12:40.808 --> 00:12:41.828
2-vcarl: Yeah, that's interesting.

00:12:41.888 --> 00:12:44.127
Oh got a lot of thoughts
rattling around my head.

00:12:44.157 --> 00:12:47.937
'cause that's a lot of stuff that I've
looked at trying to contribute towards

00:12:47.937 --> 00:12:50.157
the solution of but yeah, I don't know.

00:12:50.157 --> 00:12:53.089
It's, I fundamentally, I feel like
the problem they're dealing with

00:12:53.089 --> 00:12:55.879
is that a lot of people care about.

00:12:56.197 --> 00:12:59.977
The outcome, the output, what
they make and what React is.

00:13:00.157 --> 00:13:04.117
And not a lot of people actually have
like the context and the background

00:13:04.147 --> 00:13:09.647
to like meaningfully contribute to the
advancement of that goal., you know,

00:13:09.647 --> 00:13:13.350
to respond to what you just said about
like their motivations and their,

00:13:13.681 --> 00:13:17.998
what they want to do, I don't think
that's ever really been the problem.

00:13:17.998 --> 00:13:23.937
They've always had good intent and I
even think a pretty clear eye picture of

00:13:23.937 --> 00:13:27.837
what the problems are, but I think the
problems are really thorny and complex

00:13:27.897 --> 00:13:30.447
and the solutions to them are non-obvious.

00:13:30.447 --> 00:13:36.135
And even when you have a good
solution idea, executing it in

00:13:36.135 --> 00:13:38.475
a way that is effective and.

00:13:38.888 --> 00:13:42.698
That operates on the, kind of like
timescales that React is around four.

00:13:42.788 --> 00:13:43.688
It's just really challenging.

00:13:43.688 --> 00:13:48.278
Like it's, you know, anyone can spin
up a process and run it twice and you

00:13:48.278 --> 00:13:52.567
know, maybe that, like you do, you call
for comments and you run a community

00:13:52.567 --> 00:13:54.487
discussion and round tables and whatever.

00:13:54.877 --> 00:14:01.067
But like that plays out over the timescale
of like weeks and months and React

00:14:01.637 --> 00:14:06.542
seems to plan on the order of years
and is now, has existed for a decade.

00:14:06.542 --> 00:14:10.922
So, you know, with like there's
possibility for its scope to expand from

00:14:10.922 --> 00:14:14.882
thinking in terms of years to thinking
in terms of, I don't wanna say decades,

00:14:14.882 --> 00:14:16.532
but that's the next unit of time.

00:14:16.532 --> 00:14:17.672
That's the next order of magnitude.

00:14:18.104 --> 00:14:19.514
I hope they can achieve their goals.

00:14:19.514 --> 00:14:23.294
I am looking forward to seeing
some more roadmap, transparency.

00:14:23.758 --> 00:14:24.988
Of some sort actually.

00:14:24.988 --> 00:14:28.198
That'll be really great for us, for
you and I. That'll would be great.

00:14:28.618 --> 00:14:31.918
That'll be a great source of signal
that we can then pick apart and

00:14:31.918 --> 00:14:38.608
analyze to surely, to much to their
chagrin by way of drawing attention

00:14:38.788 --> 00:14:41.395
to things that are high context text.

00:14:41.789 --> 00:14:44.234
1-acemarke: As opposed to like
stalking the open PRS list.

00:14:44.589 --> 00:14:44.799
2-vcarl: Yeah.

00:14:44.799 --> 00:14:45.249
Right.

00:14:45.453 --> 00:14:45.873
Cool.

00:14:45.903 --> 00:14:46.383
Nice.

00:14:46.563 --> 00:14:46.983
Love that.

00:14:47.245 --> 00:14:49.893
1-acemarke: So on that note Another
item that I've personally been

00:14:49.893 --> 00:14:55.593
involved in is the work on the
upcoming React Concurrent Stores, API.

00:14:56.143 --> 00:15:02.073
So when React 18 came out the React team
included the Uyc external store hook

00:15:02.283 --> 00:15:07.173
as the official built-in way for third
party libraries like Redux, Zein, Jo Tai,

00:15:07.173 --> 00:15:09.933
whatever else to integrate into React.

00:15:10.145 --> 00:15:14.138
take an external state update, turn it
into a React re-render, and it worked.

00:15:14.198 --> 00:15:18.818
But it also had a very intentional
design limitation that if you do an

00:15:18.818 --> 00:15:23.078
update in the middle of a paused React
render, you know, something transition

00:15:23.078 --> 00:15:27.908
like, then it bails out of that and just
does a complete top to bottom render.

00:15:27.968 --> 00:15:31.328
So you're kind of throwing away
some of the benefits of React,

00:15:31.328 --> 00:15:32.738
being able to pause itself.

00:15:33.248 --> 00:15:36.158
And that was because they, they
really didn't have a better idea

00:15:36.308 --> 00:15:38.258
for how to do that kind of interop.

00:15:39.023 --> 00:15:44.453
So this concurrent store's API is
supposed to be essentially a new

00:15:44.663 --> 00:15:49.913
equivalent to use sync external store,
but concurrent transition compatible.

00:15:50.272 --> 00:15:55.162
And Jordan Eldridge, who's on the
relay team, has been working on

00:15:55.192 --> 00:15:58.312
the design and initial prototype
IMP implementation for this.

00:15:58.744 --> 00:16:02.344
And so he put out a polyfil package that.

00:16:03.154 --> 00:16:06.454
Roughly implements the prototype
as a standalone library.

00:16:07.084 --> 00:16:11.404
And then I've been talking with him
about, you know, here's what Redux

00:16:11.404 --> 00:16:12.904
would probably need to make this work.

00:16:12.904 --> 00:16:14.824
Here's our, our requirements for this.

00:16:15.304 --> 00:16:19.114
And so I was able to then take his
proof of concept package and put

00:16:19.114 --> 00:16:23.644
up a draft PR for React Redux that
just swapped out our use selector

00:16:23.644 --> 00:16:26.254
implementation to use that instead.

00:16:26.584 --> 00:16:30.604
And it basically worked, I mean, just
the one test file found a couple edge

00:16:30.604 --> 00:16:34.924
cases, but like most of our tests
passed, we're not doing anything

00:16:34.924 --> 00:16:36.994
transition related in our tests.

00:16:37.504 --> 00:16:40.984
But it's good to know that like your
baseline standard behavior works.

00:16:41.374 --> 00:16:44.734
And this also turned up several more
things we'll have to figure out, like.

00:16:45.649 --> 00:16:50.319
Quality checks and how do you
handle selectors throwing errors?

00:16:50.319 --> 00:16:55.389
And we're talking about when can react
safely, call selectors, can it delay it

00:16:55.389 --> 00:16:57.189
due to batching and things like that.

00:16:57.491 --> 00:17:01.241
So also very excited to see the
progress being made on this.

00:17:01.241 --> 00:17:05.321
A PIA lot of people have asked
for external state transition

00:17:05.321 --> 00:17:09.191
compatibility, and so this is going
to be a big deal for the ecosystem.

00:17:09.808 --> 00:17:10.348
2-vcarl: Interesting.

00:17:10.408 --> 00:17:10.918
Cool.

00:17:11.227 --> 00:17:13.477
I'm just trying to put this in a
little bit of context for myself.

00:17:13.477 --> 00:17:19.747
So this is a, an exploration of an API
for a concurrent store that they've

00:17:19.747 --> 00:17:22.417
indicated intent to ship eventually.

00:17:23.227 --> 00:17:23.407
1-acemarke: Mm-hmm.

00:17:23.492 --> 00:17:23.782
Yeah.

00:17:24.011 --> 00:17:29.399
so basically a, a new equivalent
of use syn external store, but

00:17:29.549 --> 00:17:31.889
minus the sync restriction.

00:17:32.465 --> 00:17:32.945
2-vcarl: Got it.

00:17:33.010 --> 00:17:33.725
Okay, cool.

00:17:33.725 --> 00:17:34.265
Interesting.

00:17:34.602 --> 00:17:35.802
you called it a polyfill.

00:17:35.802 --> 00:17:40.542
And I see in the blog post it's
labeled a pony fill, which I had to

00:17:40.542 --> 00:17:42.132
refresh my memory on the distinction.

00:17:42.132 --> 00:17:47.622
A polyfill fills in a gap in the
platform transparently, and a pony fill

00:17:48.192 --> 00:17:51.942
offers the same functionality, but as a
standalone module that you have to import.

00:17:52.364 --> 00:17:52.964
There you go.

00:17:53.024 --> 00:17:53.474
Now you know.

00:17:53.775 --> 00:17:55.700
1-acemarke: So one more item
kind of related to that.

00:17:55.850 --> 00:18:00.170
At React Con Freaky Hanin announced
a new Async React working group to

00:18:00.170 --> 00:18:04.190
provide support to the, you know, the
community and the ecosystem on, you

00:18:04.190 --> 00:18:07.610
know, improving the React docs around
async behavior, helping libraries

00:18:07.610 --> 00:18:09.170
get set up to use these methods.

00:18:09.620 --> 00:18:14.300
And so Matt Brophy from the React Router
team had a good discussion with Ricky

00:18:14.660 --> 00:18:18.760
about how they're trying to handle,
using transitions in React router.

00:18:19.180 --> 00:18:23.710
So there was a, a good technical
discussion about the nuances of behavior.

00:18:24.160 --> 00:18:29.440
And then the React router team also
put out a pre-release version or

00:18:29.440 --> 00:18:34.870
unstable option to enable some of
the transition behavior as well.

00:18:35.158 --> 00:18:39.298
So starting to see some adoption
and this ties into the React team

00:18:39.298 --> 00:18:44.428
wanting to see libraries pick up
these behaviors like transitions and

00:18:44.428 --> 00:18:46.618
action props and, and build them in.

00:18:46.942 --> 00:18:51.742
I will say that I had a couple discussions
at JS Nation React Summit were some

00:18:51.742 --> 00:18:57.502
people were questioning whether making
the entire ecosystem change semantics

00:18:57.502 --> 00:19:02.692
and behaviors and add props to make
the React team happy was gonna be a

00:19:02.692 --> 00:19:04.782
good idea or feasible, but we'll see.

00:19:05.083 --> 00:19:05.373
2-vcarl: Yeah.

00:19:05.528 --> 00:19:06.098
Interesting.

00:19:06.435 --> 00:19:10.545
I see a bit of why they, why
the core team desires that.

00:19:10.935 --> 00:19:14.037
Transitions are definitely like,
my understanding of the core

00:19:14.037 --> 00:19:17.907
team's incentives and what they
care about is ability to use the

00:19:17.907 --> 00:19:20.067
platform and things like that.

00:19:20.494 --> 00:19:24.874
So given that like transitions are
a part of the platform and they are

00:19:24.964 --> 00:19:29.465
interested in allowing people to take
advantage of platform improvements, I

00:19:29.465 --> 00:19:35.642
understand why they would message, in
order to use this, the entire ecosystem

00:19:35.642 --> 00:19:39.932
must make this change to the patterns
they use for compatibility reasons.

00:19:40.369 --> 00:19:43.185
But that is very, I don't
know, that's a big challenge.

00:19:43.625 --> 00:19:46.835
it's hurting a lot of cats
who don't necessarily.

00:19:47.020 --> 00:19:50.446
Aren't even necessarily aware that
there's an attempt to herd being made.

00:19:50.853 --> 00:19:53.433
1-acemarke: if you watch Ricky's
talk from React con, you know, he,

00:19:53.433 --> 00:19:57.423
he demoed switching from like a bunch
of manual use effects and loading

00:19:57.423 --> 00:19:59.613
states to suspense and transitions.

00:19:59.833 --> 00:20:02.893
And then he pointed out, and so now
you have a much better experience,

00:20:02.923 --> 00:20:05.533
but you also had to do, you know,
call start transition and all

00:20:05.533 --> 00:20:07.183
your click handlers and so on.

00:20:07.463 --> 00:20:09.443
, there's even some painful nuances there.

00:20:09.743 --> 00:20:13.943
Because start transition
is based on setting a flag

00:20:13.943 --> 00:20:16.163
internally for the current event.

00:20:16.163 --> 00:20:17.003
Loop tick.

00:20:17.753 --> 00:20:20.483
If you have a callback that has an await.

00:20:20.885 --> 00:20:25.119
You leave the event loop tick, and
if you then want to do another state

00:20:25.119 --> 00:20:30.369
update after the await, you have to call
start transition a second nested time.

00:20:30.899 --> 00:20:35.369
And Ryan Cardo actually pointed out
to me that like Ricky has repeatedly

00:20:35.369 --> 00:20:37.229
messed this up in his own demos.

00:20:37.499 --> 00:20:41.219
It's a very foot gun
prone behavior pattern.

00:20:41.814 --> 00:20:47.369
And so the combination of like you
currently have to call, start transition

00:20:47.369 --> 00:20:52.709
yourself, plus trying to get the patterns
right is a good argument for let's

00:20:52.709 --> 00:20:54.599
just build this into all the libraries.

00:20:54.839 --> 00:20:57.479
But that takes time and
effort and coordination.

00:20:58.000 --> 00:20:58.330
2-vcarl: Yeah.

00:20:58.360 --> 00:20:58.660
Right.

00:20:58.660 --> 00:21:04.290
Like that was one of my big takeaways from
Ricky's talk was, oh, this looks hard.

00:21:04.640 --> 00:21:07.848
Which is not the best takeaway if
you're trying to convince the whole

00:21:07.848 --> 00:21:09.828
ecosystem to move on to something.

00:21:10.361 --> 00:21:12.371
1-acemarke: there is a
lot of complexity in.

00:21:12.677 --> 00:21:17.951
Mental model of React and the kinds of
apps we're trying to build, and both

00:21:17.951 --> 00:21:21.731
the fact that you now need to keep
track of additional API methods that

00:21:21.731 --> 00:21:25.781
you have to call and the semantics
and when you're supposed to use them,

00:21:25.781 --> 00:21:30.641
and the fact that your, your state is
now kind of in multiple Schrodinger

00:21:30.821 --> 00:21:33.764
box, multiple versions at once.

00:21:34.094 --> 00:21:36.824
It's, it's definitely a lot
of additional mental overhead.

00:21:37.529 --> 00:21:38.909
2-vcarl: Yeah, right.

00:21:38.909 --> 00:21:42.110
I'm just looking at in this GitHub
thread that you linked, Ricky

00:21:42.110 --> 00:21:44.330
says, you know, oh, I think there
may have been some confusion.

00:21:44.330 --> 00:21:47.990
Here's how you do it for navigations,
and it's, you know, function, navigate

00:21:47.990 --> 00:21:52.880
to A URL that has start transition,
which, you know, wraps set router

00:21:52.880 --> 00:21:57.530
state, which then wrap, you know,
it's argument is a function that.

00:21:57.775 --> 00:22:00.015
I guess returns, A-A-U-R-L.

00:22:00.045 --> 00:22:03.945
It's a thunk for set router
state in start transition.

00:22:03.945 --> 00:22:04.845
In navigate.

00:22:04.845 --> 00:22:06.135
I don't know, they're like,
that's just complicated.

00:22:06.165 --> 00:22:08.415
Like what, why are we wrapping
this with so many different

00:22:08.415 --> 00:22:09.645
functions just to navigate?

00:22:10.042 --> 00:22:11.441
That's uncomfortable.

00:22:11.531 --> 00:22:15.191
It feels like the wrong API in some
way, you know, like it an API should

00:22:15.671 --> 00:22:20.721
obscure complexity and this does not
obscure the complexity so Interesting.

00:22:20.781 --> 00:22:24.171
I, I want to be able to take
advantage of transitions in apps.

00:22:24.201 --> 00:22:28.256
'cause that's super great if you
can just like, easily convey that

00:22:28.406 --> 00:22:32.756
you are here and you're about to go
here instead of just going there.

00:22:32.936 --> 00:22:36.266
Like, you get a lot of really powerful
things that you can do for user

00:22:36.266 --> 00:22:40.614
experience and, you know, whatever,
all sorts of stuff if you communicate

00:22:40.884 --> 00:22:44.873
the transition instead of just
updating the current state of your app.

00:22:45.453 --> 00:22:47.553
But yeah, I don't, I,
I'm not sold on this.

00:22:47.913 --> 00:22:49.833
I'm not sold on what I'm seeing so far.

00:22:50.495 --> 00:22:50.785
1-acemarke: Okay.

00:22:51.460 --> 00:22:52.600
Moving on to the.

00:22:53.275 --> 00:22:54.715
Next related chunk of topic.

00:22:55.085 --> 00:22:59.735
The Tans stack folks have a bunch
of updates that they've put out

00:22:59.735 --> 00:23:02.875
both blog posts and versions.

00:23:03.505 --> 00:23:10.675
So Tanner put out an article on the
State of Tans stack as an organization in

00:23:10.675 --> 00:23:14.815
his own work as a full-time open source
maintainer for the last couple years.

00:23:15.295 --> 00:23:17.665
Also, again heard, you know,
heard some of this from, from him

00:23:17.665 --> 00:23:20.718
directly at  react Summit loosely.

00:23:20.718 --> 00:23:25.960
He himself has been full-time supported
open source for the last couple years

00:23:25.990 --> 00:23:27.820
sponsorships to the TN stack org.

00:23:28.340 --> 00:23:32.240
Hand stack libraries are, you know,
as we all know, very, very widely

00:23:32.240 --> 00:23:36.080
adopted and Certainly query is the
standard fritz thing at this point.

00:23:36.430 --> 00:23:41.470
Router and is picking up a lot, lot
of popularity start is almost 1.0.

00:23:42.070 --> 00:23:46.660
And he's hoping to be able to start
to bring in some part-time or even

00:23:46.660 --> 00:23:52.030
full-time people to hand stack
the company in the near future.

00:23:52.370 --> 00:23:58.820
Essentially other current maintainers
for various hand stack libraries who

00:23:58.820 --> 00:24:02.060
would then be able to potentially switch
to doing that as their actual job.

00:24:02.415 --> 00:24:06.886
So essentially he's been fortunate
enough to have this workout for him and

00:24:06.886 --> 00:24:10.936
he's hoping to share that ability with
other people working on the projects.

00:24:11.722 --> 00:24:16.806
2-vcarl: I see says monthly
sponsorships for 12 core contributors

00:24:17.122 --> 00:24:19.822
and short term contracts for
another three to five people.

00:24:19.822 --> 00:24:22.222
I guess it's not clear what
monthly sponsorships means.

00:24:22.342 --> 00:24:26.148
I, my assu, my assumption there
would be like their, maybe not full

00:24:26.148 --> 00:24:29.538
time, but getting like sign, you
know, significant compensation, but

00:24:29.538 --> 00:24:31.518
that may not necessarily be true.

00:24:31.929 --> 00:24:34.483
1-acemarke: I don't know numbers, but
I think at the moment the others are

00:24:34.483 --> 00:24:39.103
doing open source and they're full-time
and getting some, some stipends, and

00:24:39.239 --> 00:24:43.255
in the next couple years he's looking
at actually hiring some of them.

00:24:43.780 --> 00:24:44.140
2-vcarl: Cool.

00:24:44.286 --> 00:24:44.796
Love that.

00:24:44.856 --> 00:24:45.906
That's super hard.

00:24:46.076 --> 00:24:49.586
Building revenue so that you can
actually support other humans

00:24:49.586 --> 00:24:50.786
is actually really challenging.

00:24:51.569 --> 00:24:54.599
I really like this blog post about,
you know, tan Stack for two years.

00:24:54.844 --> 00:24:55.594
like this line.

00:24:55.594 --> 00:24:57.244
You know, building a full
stack framework is hard.

00:24:57.244 --> 00:24:58.534
I knew that from watching
other teams do it.

00:24:58.564 --> 00:24:59.824
Most of them had something I didn't.

00:25:00.094 --> 00:25:04.671
Capital Next Gatsby Redwood Remix all had
funding companies or acquisition paths.

00:25:05.171 --> 00:25:08.471
And that, that definitely is something
that feels very different about Tan Stack.

00:25:08.471 --> 00:25:12.725
It feels very much like
he couldn't not do this.

00:25:12.755 --> 00:25:15.818
Like he just, has spent several years
working in this problem space and

00:25:15.818 --> 00:25:20.288
solving his own problems with the
freedom to publish them so that other

00:25:20.288 --> 00:25:22.268
people can take advantage of his work.

00:25:22.418 --> 00:25:28.088
And then got to a point where it just made
sense to invest more effort and take those

00:25:28.088 --> 00:25:29.708
a little bit further than they could go.

00:25:29.967 --> 00:25:33.567
Absent that level of
dedication I, which I, I love.

00:25:33.567 --> 00:25:38.067
That's just like, that's, I don't know,
finding that kind of work to do for

00:25:38.067 --> 00:25:40.857
yourself is what I've been looking for.

00:25:40.947 --> 00:25:43.516
And it's really hard to find,
and I love that Tanner Wesley

00:25:43.516 --> 00:25:44.716
has apparently found it.

00:25:45.072 --> 00:25:48.732
And also having 16 partners
doing sponsorships is also great.

00:25:48.732 --> 00:25:52.272
Like that, that, that may not be
capital, but that's, that's great.

00:25:52.452 --> 00:25:52.962
That's nice.

00:25:53.346 --> 00:25:56.796
having tried to find sponsors myself,
like getting 16, it's like, oh shit.

00:25:56.796 --> 00:25:57.276
Good job.

00:25:57.546 --> 00:25:58.026
That's awesome.

00:25:58.814 --> 00:26:03.114
1-acemarke: So it tens Stack DB is a new
work in progress package largely being

00:26:03.114 --> 00:26:06.834
worked on by Kyle Matthews, formerly
of Gatsby, currently of electric SQL.

00:26:07.174 --> 00:26:11.584
That is meant to be kind of
like a half a sync engine layer

00:26:11.914 --> 00:26:13.954
on top of another data source.

00:26:14.284 --> 00:26:18.726
And so like one of the common usage
patterns for that would be you

00:26:18.726 --> 00:26:24.005
wrap it on top of your 10 stack
query, you know, API definitions.

00:26:24.425 --> 00:26:26.825
And so maybe you've got
some endpoints for fetching,

00:26:27.235 --> 00:26:28.915
post comments users, et cetera.

00:26:29.215 --> 00:26:34.285
But then it presents like a sync engine
like interface on top of that, and

00:26:34.285 --> 00:26:38.035
it's got a bunch of data flow analysis
baked in so that it can do things like

00:26:38.095 --> 00:26:42.655
partial fetches or only re fetching,
you know, certain pieces of data.

00:26:42.935 --> 00:26:43.832
joining.

00:26:44.308 --> 00:26:48.598
Essentially presenting like a normalized
facade layer over the individual

00:26:48.598 --> 00:26:53.008
endpoints so that they act like
they're unified almost as a, like a

00:26:53.008 --> 00:26:56.278
replacement for a GraphQL style API.

00:26:56.696 --> 00:26:59.426
And so they've been working on
this and it has integrations with

00:26:59.426 --> 00:27:02.696
Tan Stack Query and then Electric
SQL and a few other data packages.

00:27:03.086 --> 00:27:06.566
And Tanner pointed out to
me at React Limit that.

00:27:06.869 --> 00:27:11.999
It really just needs an adapter layer to
be able to connect to another library and

00:27:11.999 --> 00:27:14.339
I could totally build one for RTK query.

00:27:14.549 --> 00:27:17.219
And so I was actually briefly
playing with that on the flight home.

00:27:17.269 --> 00:27:18.619
Haven't had a chance to push it further,

00:27:18.979 --> 00:27:22.639
but I'm actually, I'm actually very
excited to play with that more myself

00:27:22.879 --> 00:27:29.329
because like 10 stack query, we made the
decision to make RTK query non normalized.

00:27:29.329 --> 00:27:31.339
It just caches the
response from the server.

00:27:31.969 --> 00:27:37.759
And so if this essentially let us
make a normalized layer on top of

00:27:37.759 --> 00:27:41.719
our own library without us having
to make any further API changes.

00:27:42.199 --> 00:27:43.274
That's very interesting to me.

00:27:43.984 --> 00:27:46.744
2-vcarl: I'm also thinking about,
you know, this is from Kyle Matthews

00:27:46.744 --> 00:27:52.984
who did Gatsby, which, you know,
notoriously exposed a GraphQL,

00:27:53.074 --> 00:27:56.374
you know, layer on top of whatever
data sources you wanted to give it.

00:27:56.704 --> 00:28:00.304
So just, I'm thinking about how
how much of Kyle Matthew's work

00:28:00.304 --> 00:28:02.785
could be described as providing

00:28:03.295 --> 00:28:07.174
query abstractions over
arbitrary data layers with data

00:28:07.489 --> 00:28:07.789
1-acemarke: Yeah.

00:28:08.309 --> 00:28:08.849
that's a good point.

00:28:08.849 --> 00:28:11.729
I, I had, I hadn't even drawn that
connection that this is actually

00:28:11.999 --> 00:28:13.319
very related to his prior work.

00:28:14.028 --> 00:28:16.658
2-vcarl: if you describe this at a
certain level of abstraction, this

00:28:16.658 --> 00:28:22.058
sounds just like GraphQL, relay Gatsby,
a bunch of other stuff, but I do see

00:28:22.058 --> 00:28:25.208
the niche that it occupies and how
it's distinct from those projects.

00:28:25.508 --> 00:28:29.438
it's kind of like GraphQL except
instead of the network boundary,

00:28:29.438 --> 00:28:34.598
it's like the component to data
store boundary on your client app.

00:28:35.078 --> 00:28:38.791
Which that's useful if you can, like
what you just said about how you

00:28:38.791 --> 00:28:43.752
don't normalize in RTK query I've
landed on that as being generally a

00:28:43.752 --> 00:28:49.402
good architectural decision to make
in applications because like if you

00:28:49.402 --> 00:28:51.202
start doing data transformations.

00:28:51.369 --> 00:28:55.442
You know, bespoke data transformations
per endpoint, then it becomes really

00:28:55.442 --> 00:28:56.762
hard to change those endpoints.

00:28:56.827 --> 00:29:00.782
If, if you're changing the underlying
data, then you've gotta change

00:29:00.782 --> 00:29:02.882
all the code at the same time.

00:29:03.305 --> 00:29:08.225
Whereas if you just take whatever
the API gives you and then write like

00:29:08.225 --> 00:29:13.985
a transformer on top of that, then
it's just you, you add a layer of

00:29:13.985 --> 00:29:17.915
abstraction for yourself that gives
you a little bit more flexibility

00:29:17.915 --> 00:29:20.405
around timing of some types of changes.

00:29:20.745 --> 00:29:22.185
So yeah, I dunno that's, it's interesting.

00:29:22.185 --> 00:29:23.415
This is an interesting project.

00:29:23.737 --> 00:29:27.158
I dunno, something about it feels like
I don't quite know where I would take

00:29:27.158 --> 00:29:31.898
advantage of it for myself, but I could
see the right app with the right kind

00:29:31.898 --> 00:29:36.188
of team operating it, finding this and
being like, this is exactly what we need.

00:29:36.188 --> 00:29:41.421
This solves multiple challenging,
thorny problems that we have

00:29:41.421 --> 00:29:42.651
or, so, yeah, I don't know.

00:29:42.651 --> 00:29:43.131
It's interesting.

00:29:43.641 --> 00:29:47.061
1-acemarke: my own personal to-do
list is massive at this point.

00:29:47.061 --> 00:29:49.821
Both like redux and even just
like personal life stuff.

00:29:49.881 --> 00:29:53.871
But I, I absolutely want to go back and,
and play with my own RTK query integration

00:29:53.871 --> 00:29:55.761
prototype for that in the near future.

00:29:56.095 --> 00:29:56.335
2-vcarl: Yeah.

00:29:56.335 --> 00:29:59.005
I generally love the idea of sync engines.

00:29:59.303 --> 00:30:04.444
one of my core beliefs about writing
code is that many more applications

00:30:04.444 --> 00:30:09.591
that we use have no technical
necessity to be online only.

00:30:09.651 --> 00:30:12.801
Like there are a lot of things like,
for example, my favorite canonical

00:30:12.801 --> 00:30:14.451
example of this is like Gmail.

00:30:14.451 --> 00:30:18.441
If you're using the Gmail app, it
doesn't actually care if you're online

00:30:18.441 --> 00:30:21.831
because it is doing synchronization
of your emails in the background.

00:30:22.113 --> 00:30:25.203
And so you can just interact with it
normally while you're fully offline

00:30:25.203 --> 00:30:28.893
and later it will do all the things
like synchronize the read states or

00:30:28.893 --> 00:30:31.863
like, you know, which emails you've
archived and deleted and yada, yada

00:30:31.863 --> 00:30:33.693
yada, completely transparently.

00:30:33.693 --> 00:30:37.501
Like, I have never thought about,
oh, I should wait to do this

00:30:37.501 --> 00:30:40.381
later when I'm online, so I don't
cause weird problems for myself.

00:30:40.651 --> 00:30:44.761
And I do think about that all the fucking
time in various other apps that I use.

00:30:44.761 --> 00:30:47.797
So like there, that's something
that we used to do that we no

00:30:47.797 --> 00:30:49.237
longer do because it's hard.

00:30:49.539 --> 00:30:54.009
I love seeing more effort and
energy being expended into making

00:30:54.009 --> 00:30:57.166
it easier to do offline things.

00:30:57.256 --> 00:30:58.696
And sync engines are a big part of that.

00:30:58.964 --> 00:31:03.764
And so abstractions over sync
engines are also a part of that.

00:31:03.794 --> 00:31:04.124
Great.

00:31:04.592 --> 00:31:06.997
1-acemarke: the Tans stack router
folks also put out a really good

00:31:06.997 --> 00:31:10.477
blog post talking about how they did
some massive optimization on route

00:31:10.477 --> 00:31:13.987
matching, including using a somewhat
lesser known data structure called

00:31:13.987 --> 00:31:16.477
I think it's pronounced a try, TRIE.

00:31:16.791 --> 00:31:19.616
I love, I, I love seeing
optimization breakdowns.

00:31:19.766 --> 00:31:21.056
So good article there.

00:31:21.298 --> 00:31:25.405
And then I. Since we've done plenty
of, you know, stuff being teased on

00:31:25.405 --> 00:31:29.275
Twitter discussion in the past with
Remix and everything else Tanner has

00:31:29.275 --> 00:31:35.035
been teasing that they are working
on RSC support for Tant Stack Start.

00:31:35.755 --> 00:31:41.434
And I can say that he showed me a demo
and it's unconventional, it is not

00:31:41.434 --> 00:31:46.924
what you would expect after having
used next, and yet it totally makes

00:31:46.924 --> 00:31:49.804
sense in its own way once you see it.

00:31:50.204 --> 00:31:53.534
So as I understand it, , they've made
real progress on implementing it.

00:31:53.584 --> 00:31:57.304
, they figured out the design
and now it's push it forward

00:31:57.394 --> 00:31:59.464
and make it actually a thing.

00:31:59.654 --> 00:32:04.701
I have no idea how soon this will be
revealed, but I think once this comes out,

00:32:04.791 --> 00:32:11.661
it will be a very interesting, challenging
take on our understanding of server

00:32:11.661 --> 00:32:13.161
components and how they, how to use them.

00:32:13.601 --> 00:32:16.481
2-vcarl: I would certainly say
that the way next has done it does

00:32:16.481 --> 00:32:19.931
not seem to be like the end all,
be all of great implementation.

00:32:19.931 --> 00:32:23.291
So if they have found a new
way to approach it, hell yeah.

00:32:23.547 --> 00:32:24.027
Here for it.

00:32:24.504 --> 00:32:24.984
That's awesome.

00:32:25.267 --> 00:32:27.367
1-acemarke: So there, there's
your, vague tweet for the month.

00:32:27.551 --> 00:32:27.971
2-vcarl: Yeah.

00:32:28.061 --> 00:32:28.601
Right.

00:32:28.867 --> 00:32:30.397
let's talk a little more broadly.

00:32:30.457 --> 00:32:33.097
Let's talk about the state
of the web ecosystem.

00:32:33.607 --> 00:32:38.307
I guess like to intro our subtopics
under state of the web ecosystem.

00:32:38.624 --> 00:32:41.174
I wanna talk a bit about
like the CloudFlare outage,

00:32:41.400 --> 00:32:43.636
the NPM ongoing attacks.

00:32:43.636 --> 00:32:47.176
Like this is not a new attack, this
is the, a continuation of the previous

00:32:47.322 --> 00:32:49.212
attacks plural, that we've discussed.

00:32:49.722 --> 00:32:54.882
As well as, Alex Russell had a decent
blog post, I say decent because I

00:32:54.882 --> 00:32:56.862
don't know, it's, it qualified, decent.

00:32:56.922 --> 00:32:59.712
It, it's well written, it's well
argued, but I don't necessarily

00:32:59.712 --> 00:33:00.852
agree with his conclusions.

00:33:01.122 --> 00:33:06.240
And also there, there's some
conversation about reacts place in the

00:33:06.270 --> 00:33:09.600
ecosystem and AI and things like that.

00:33:09.600 --> 00:33:14.014
So that's the shape of this state of
the web ecosystem chat that I want to

00:33:14.044 --> 00:33:16.504
start or that I want to have, I guess.

00:33:16.814 --> 00:33:18.164
Yeah, let's start at CloudFlare.

00:33:18.254 --> 00:33:24.144
They had an outage on the, earlier this
month, about a week ago 18th of November.

00:33:24.194 --> 00:33:27.284
They say in their outage postmortem
that it was triggered by a change to

00:33:27.284 --> 00:33:31.364
the permission system of one of the
databases, which caused it to output

00:33:31.394 --> 00:33:35.954
entries ba Basically, it produced two
large of a file that then got distributed

00:33:35.954 --> 00:33:41.494
out and the size of that larger file
getting distributed, caused performance

00:33:41.494 --> 00:33:43.804
load that took down the network,

00:33:44.227 --> 00:33:46.477
1-acemarke: check me on this,
another factor on it was they,

00:33:46.657 --> 00:33:51.697
one of the services was written
in Rust and it had an expectation

00:33:51.697 --> 00:33:53.947
that the file would only be so big.

00:33:54.337 --> 00:33:57.460
And there was, I think there was
a rust line of code that basically

00:33:57.460 --> 00:33:59.590
said if it doesn't fit, panic.

00:34:00.149 --> 00:34:06.839
Yeah, that when a bad file with like
, they had 60 features, a limit of 200

00:34:06.839 --> 00:34:10.299
and a line of code that basically
said if it gets over 200, throw

00:34:10.349 --> 00:34:11.759
throw an error, kill the service.

00:34:12.399 --> 00:34:13.149
2-vcarl: That'll do it.

00:34:13.359 --> 00:34:13.989
Yeah.

00:34:14.259 --> 00:34:17.319
Each module ran on the proxy
service has a number of limits to

00:34:17.499 --> 00:34:19.419
avoid unbounded memory consumption.

00:34:19.855 --> 00:34:23.875
somewhat questioned the wisdom of that
because,  the reason you would have

00:34:23.995 --> 00:34:28.555
limits on memory consumption in place
would be to avoid outage and downtime.

00:34:28.555 --> 00:34:34.245
And so if your resolution to, the outcome
of your limit, if memory usage gets too

00:34:34.245 --> 00:34:37.365
high, is to crash, that is functionally.

00:34:37.755 --> 00:34:39.975
Very similar to an out of memory error.

00:34:40.472 --> 00:34:43.528
Maybe it's, I guess it's easier
to debug, I guess you can, out

00:34:43.528 --> 00:34:46.558
of memory errors cause Crazy,
unpredictable failures, I guess.

00:34:46.558 --> 00:34:50.588
So at least this is a predictable failure
that strongly indicates where the , the

00:34:50.588 --> 00:34:52.148
excessive memory use is coming from.

00:34:52.608 --> 00:34:54.618
But yeah, it it was pretty serious.

00:34:55.038 --> 00:34:57.408
I actually didn't notice,
which I'm glad about.

00:34:57.438 --> 00:35:01.158
It's nice to not be so online
that you don't immediately notice

00:35:01.158 --> 00:35:03.255
every, I don't know every outage.

00:35:03.638 --> 00:35:08.165
But yeah, you know, as people are
discussing how React takes over,

00:35:08.315 --> 00:35:12.245
you know, is now the default for web
development, this kind of, I think this

00:35:12.245 --> 00:35:15.665
was a, a a good demonstration of the
place in the ecosystem that CloudFlare

00:35:15.665 --> 00:35:20.195
occupies and how many different services
truly rely on its stable operations.

00:35:20.555 --> 00:35:20.645
Yeah.

00:35:21.307 --> 00:35:25.283
1-acemarke: Trying to make the trade-offs
between, the web is decentralized.

00:35:25.283 --> 00:35:28.193
Anyone can run their own thing
versus, Hey, look, , there's

00:35:28.193 --> 00:35:30.383
benefits to having centralization.

00:35:30.713 --> 00:35:34.973
Let's all put our GitHub, or let's, let's
all put our git repositories on the same

00:35:34.973 --> 00:35:39.053
service so we can, you know, log in and
share them and comment back and forth.

00:35:39.343 --> 00:35:40.363
Let's put all our

00:35:40.537 --> 00:35:42.907
social media comments on the same service.

00:35:42.907 --> 00:35:44.887
We can have commentary back and forth.

00:35:45.117 --> 00:35:50.637
Let's all use this widely spread CDN and
DDoS protection service that also has a

00:35:50.637 --> 00:35:52.527
bunch of really cool backend services.

00:35:53.097 --> 00:35:57.788
And then when one of those big services
goes down, it ends up having, or everybody

00:35:57.788 --> 00:36:00.308
put everything in A-W-A-W-S East one.

00:36:00.657 --> 00:36:00.957
2-vcarl: Yeah.

00:36:01.017 --> 00:36:01.407
right.

00:36:01.752 --> 00:36:05.637
1-acemarke: Or, or, or even like
we, we put it in AWS East two,

00:36:05.667 --> 00:36:10.437
but AWS themselves relied on AWS
East one and then it goes down.

00:36:10.824 --> 00:36:14.694
we keep running into these big
dependencies that end up having massive

00:36:14.694 --> 00:36:15.844
effects on the internet when they go down.

00:36:16.445 --> 00:36:18.785
2-vcarl: This feels like a good
transition point to a link that

00:36:18.785 --> 00:36:20.165
we had slightly later down.

00:36:20.485 --> 00:36:24.115
Tom McRight, who is not a name
I recognize, put on a blog

00:36:24.115 --> 00:36:27.845
post called What If People
Don't Want To Create Things and.

00:36:28.191 --> 00:36:29.391
that feels like what you're talking about.

00:36:29.391 --> 00:36:34.102
Like the ideals of the web
is decentralized, you know,

00:36:34.207 --> 00:36:35.287
1-acemarke: their own domain.

00:36:35.412 --> 00:36:35.832
2-vcarl: right?

00:36:35.892 --> 00:36:40.637
Sharing knowledge, sharing skills,
sharing tools, and I love that.

00:36:40.637 --> 00:36:41.447
I agree with that.

00:36:41.447 --> 00:36:43.367
I aspire to those ideals.

00:36:43.637 --> 00:36:47.259
But it's also true that like, we
kind of just want stuff to work.

00:36:47.553 --> 00:36:50.853
we want it to just kind of be stable
and, you know, it's not stable,

00:36:51.123 --> 00:36:56.013
decentralized things that have a
smattering of volunteers maintaining it.

00:36:56.383 --> 00:36:57.703
That's kind of the distinction.

00:36:57.733 --> 00:37:02.214
Like that's kind of the trade off is
like over time decentralized things

00:37:02.214 --> 00:37:09.184
with enthusiastic maintainers and,
open source over time that stabilizes

00:37:09.184 --> 00:37:14.404
and grows and becomes great in a way
that proprietary code can't, because,

00:37:14.404 --> 00:37:15.484
you know, you can't inspect it.

00:37:15.484 --> 00:37:17.224
You can't say like, I'm
encountering this bug.

00:37:17.224 --> 00:37:18.304
Let me go look at the code.

00:37:18.544 --> 00:37:20.164
Oh, here's where it's coming from.

00:37:20.164 --> 00:37:24.994
Let me tell them about it and give them
a reproduction and contribute to a fix.

00:37:25.144 --> 00:37:30.583
Like, if I encounter a problem like
that in, any of these many proprietary

00:37:30.793 --> 00:37:34.464
tools that I use, then there's
just no path for me to do that.

00:37:34.464 --> 00:37:39.672
So, but on the other hand, they
have the capital and the employees

00:37:39.672 --> 00:37:43.212
to have people proactively looking
for that, where it's their job.

00:37:43.663 --> 00:37:44.413
that's the tension.

00:37:44.563 --> 00:37:49.273
I tend to believe over a long
enough time scale that distributed,

00:37:49.273 --> 00:37:55.793
decentralized things like the web
will be better than anything that's

00:37:55.793 --> 00:37:57.803
like proprietary developed, but.

00:37:57.955 --> 00:38:00.025
It has to work well enough
to get the attention.

00:38:00.425 --> 00:38:04.235
And you know, in this attention economy
we're in, it's very hard to get people who

00:38:04.235 --> 00:38:08.945
have enough bandwidth of their attention
to say, I have found this problem.

00:38:08.945 --> 00:38:12.095
Let me chase it down to its
logical conclusion and contribute

00:38:12.095 --> 00:38:15.365
to a fix being actually shipped
for me and people like me.

00:38:15.983 --> 00:38:18.473
1-acemarke: aren't gonna go off
on this, but I could even see some

00:38:18.473 --> 00:38:22.583
tangential connections with things
like open source as a concept,

00:38:22.613 --> 00:38:24.413
open source maintainer, burnout.

00:38:24.783 --> 00:38:29.103
Like most people, like using an app or
a library or even even developers using

00:38:29.103 --> 00:38:33.063
a library, like in the end, do they
actually care that it's open source?

00:38:33.453 --> 00:38:37.533
No, they just want to download the thing
and have it work, whether it's Libre

00:38:37.533 --> 00:38:43.653
office or you know, a paint, you know,
paint program or better off or whatever.

00:38:44.173 --> 00:38:47.173
And the fact that the
code's open doesn't matter.

00:38:47.173 --> 00:38:51.692
It's like I, as the consumer of this
thing at this level just want it to work.

00:38:51.932 --> 00:38:55.952
And if it doesn't, I ask the person
who builds it, just make it work.

00:38:56.447 --> 00:38:59.451
2-vcarl: Right, I'll call out
a couple of quotes from here.

00:38:59.581 --> 00:39:03.471
Beautiful data, visualizations are
free to make, but the supply of people

00:39:03.471 --> 00:39:06.531
who really love and know D three is a
lot lower than I expected it would be.

00:39:07.051 --> 00:39:09.661
I love home-cooked apps and
malleable software, but I have

00:39:09.661 --> 00:39:12.121
a gnawing feeling that I'm in a
bubble when I think about them.

00:39:12.151 --> 00:39:15.361
Most people's lives are split into
the things that they affect and create

00:39:15.361 --> 00:39:17.581
and the things that already exist
and wanna tune out and automate.

00:39:17.911 --> 00:39:19.685
I think that's a, I
think that's insightful.

00:39:19.685 --> 00:39:23.650
I think that speaks to a deep,
I don't know, tension in this.

00:39:23.650 --> 00:39:28.958
Like, yes, AI lets you do a much
larger range in a much shorter

00:39:28.958 --> 00:39:31.358
time span than used to be feasible.

00:39:31.838 --> 00:39:34.076
But do people want to do that?

00:39:34.136 --> 00:39:34.466
I don't know.

00:39:34.466 --> 00:39:37.046
Given the, given a range of infinite
possibilities, how do you pick

00:39:37.046 --> 00:39:41.154
which one that you are going to do
and then give it the attention so

00:39:41.154 --> 00:39:45.054
that it actually produces something
that other people can benefit from?

00:39:45.348 --> 00:39:48.318
How do you find the things that you
want to build on top of, you know.

00:39:49.016 --> 00:39:52.556
Well, I guess I'll transition from that,
from that comment to this other post.

00:39:52.826 --> 00:39:56.366
When everyone's a developer, how do
we promote the web platform overreact?

00:39:56.466 --> 00:40:00.153
It's in reference to this Alex Russell
Post that I'll, I'll, I'll share after.

00:40:00.424 --> 00:40:03.676
But I guess it's talking about, it's
talking about that like when people

00:40:03.676 --> 00:40:06.406
can make their own software, when
they can just use plain English to

00:40:06.406 --> 00:40:13.316
ask AI to generate code that in one
form or another, solves the problem.

00:40:13.316 --> 00:40:15.416
They stated, you know, maybe not
the way they intended, maybe not

00:40:15.416 --> 00:40:18.597
the way they wanted, but it, it's
doing its best just like all of us.

00:40:18.755 --> 00:40:20.975
It's talking about how if you just
ask it to make something, it's

00:40:20.975 --> 00:40:25.234
probably gonna use React, because
that's what, by volume of text, by

00:40:25.234 --> 00:40:26.674
volume of code that it's trained on.

00:40:26.674 --> 00:40:27.394
That's what.

00:40:27.556 --> 00:40:30.376
That's the mode, that's
the most common example.

00:40:30.801 --> 00:40:34.191
I guess like this is
framed as a, an AI problem.

00:40:34.191 --> 00:40:35.901
Like why does AI do this?

00:40:36.231 --> 00:40:39.942
But this is actually the same problem
that I've observed well before AI

00:40:39.942 --> 00:40:44.096
came out, you know, 2022 or when
everyone chat GPT really started.

00:40:44.380 --> 00:40:47.290
I have observed all of these
problems that it's talking about

00:40:47.290 --> 00:40:48.580
over the life of my career.

00:40:48.580 --> 00:40:52.180
Like, you know, especially I
feel like, you know, there's a

00:40:52.180 --> 00:40:57.010
certain golden age of tech between
2018 and, I dunno, 2021 or so.

00:40:57.790 --> 00:40:59.706
And that was absolutely the case.

00:40:59.706 --> 00:41:03.246
Like I would, you know, join a new
workplace because I did that a lot.

00:41:03.246 --> 00:41:05.556
I worked at a lot of different
companies and I'd look at the

00:41:05.556 --> 00:41:06.846
practices people were using.

00:41:06.846 --> 00:41:08.826
It's like, why did you use React for this?

00:41:08.826 --> 00:41:13.056
Like there's, here's a platform
feature that solves this more easily.

00:41:13.671 --> 00:41:14.751
And with less code.

00:41:14.751 --> 00:41:17.061
And a lot of the time people
just didn't know it existed.

00:41:17.061 --> 00:41:18.711
Like it's that attention problem.

00:41:18.711 --> 00:41:20.781
How do you know what you
should build on top of?

00:41:21.361 --> 00:41:21.661
don't know.

00:41:21.661 --> 00:41:26.266
It's, the solutions here that people are
talking about is like, what can we, the

00:41:26.266 --> 00:41:30.856
web community do to promote web platform
features overreact code and it proposes

00:41:30.856 --> 00:41:36.096
teach vibe coders to explicitly prompt
for web native solutions get the LLMs to

00:41:36.096 --> 00:41:41.486
ingest more web platform code, spotlight
teams and projects that ship modern web

00:41:41.486 --> 00:41:43.466
experiences without heavy frameworks.

00:41:43.856 --> 00:41:48.002
I mean, like, that's, to me all of
those, essentially just like how do

00:41:48.002 --> 00:41:50.012
you make the web platform more popular?

00:41:50.318 --> 00:41:53.357
to me, AI fundamentally
spits out an average.

00:41:53.387 --> 00:41:57.917
It spits out like you ask it to do
something and it will give you a deeply

00:41:57.917 --> 00:42:03.497
profoundly average result for, you
know, if you ask a thousand people,

00:42:03.497 --> 00:42:08.616
that question here is approximately
what the mass of those people would say.

00:42:08.825 --> 00:42:15.182
And it's true that if you asked a
thousand developers to do something

00:42:15.212 --> 00:42:20.042
on the web, the most common output
would probably be a kind of shitty

00:42:20.042 --> 00:42:24.182
implementation with React that overused
things like use state news effect because

00:42:24.182 --> 00:42:26.192
that's what developers did and do.

00:42:26.582 --> 00:42:29.342
So, I don't know, it's like a lot
of these questions that we ask

00:42:29.342 --> 00:42:34.446
ourselves about AI and code, I feel
like distill down to the same kinds

00:42:34.446 --> 00:42:36.546
of questions we were asking before.

00:42:36.861 --> 00:42:39.260
But like now, there's a boogeyman of ai.

00:42:39.260 --> 00:42:43.820
Like this is ai, this is this, this is
code, this is a product people have built.

00:42:44.025 --> 00:42:48.675
And so it is now a very convenient
boogeyman, but it, it's a distillation of

00:42:48.945 --> 00:42:53.775
the thoughts of a vast number of people
as codified by what they published and

00:42:53.775 --> 00:42:55.575
what was ingested for the training set.

00:42:56.032 --> 00:43:00.189
1-acemarke: I just tossed in a link to
the obligatory XKCD from like a decade

00:43:00.189 --> 00:43:06.129
ago, which is the, the one of the points
out that sometimes your, your map or

00:43:06.129 --> 00:43:11.199
your heat map of users is actually
just a heat map of the population.

00:43:11.199 --> 00:43:13.119
It's a one-to-one correspondence.

00:43:13.633 --> 00:43:13.933
2-vcarl: Yeah.

00:43:13.948 --> 00:43:17.488
1-acemarke: So I think that that is
partly what we see with like react usage.

00:43:17.518 --> 00:43:20.218
You know, there, there's a
lot of people who use React.

00:43:20.278 --> 00:43:25.522
There's a lot of people who use React
badly and therefore like, the spread of

00:43:25.642 --> 00:43:32.482
types of usage of React, the quality of
usage of React kind of maps to the quality

00:43:32.482 --> 00:43:34.732
of programmer skills and backgrounds.

00:43:35.128 --> 00:43:37.178
Like, not necessarily an excuse.

00:43:37.448 --> 00:43:41.138
And that's not to say that like
everything about using React is, is

00:43:41.138 --> 00:43:46.028
good by itself, but just that when
you have a full cross spectrum of the

00:43:46.028 --> 00:43:50.948
population using a thing, you're going
to have the full cross spectrum of the

00:43:50.948 --> 00:43:54.428
population using it in good and bad ways.

00:43:54.998 --> 00:43:56.648
And so in the same way when it like.

00:43:57.348 --> 00:44:01.518
, when it comes to, you know, people
building apps, re React got popular.

00:44:01.968 --> 00:44:05.298
Where LLMs came out and saw
that was re react was popular.

00:44:05.328 --> 00:44:08.718
So LLMs repeat what
they were trained to do.

00:44:09.168 --> 00:44:12.318
And plus it's also, you know, like
not just popular, but it's especially

00:44:12.318 --> 00:44:15.318
popular within Silicon Valley,
within all the companies making

00:44:15.318 --> 00:44:16.998
the AI builder tools, et cetera.

00:44:17.298 --> 00:44:20.298
So in a lot of cases, they're
prompting them to just use React

00:44:20.298 --> 00:44:23.208
because they assume it's the
default that you would use anyway.

00:44:23.730 --> 00:44:28.622
2-vcarl: I wanna shout out a term that I
love path dependence, which is like, where

00:44:28.622 --> 00:44:33.242
you're at right now is the outcome of a
series of choices that were made in the

00:44:33.242 --> 00:44:40.647
past, and those past choices constrain
what paths are available moving forward.

00:44:40.947 --> 00:44:45.582
That's path dependence, where you came
from, effects where you can go and.

00:44:46.090 --> 00:44:49.240
So I guess like to me that
this is a complaint about

00:44:49.240 --> 00:44:51.400
the path dependence of React.

00:44:51.430 --> 00:44:56.960
Like, because React got popular now
React is, , we've worn that rut and so

00:44:56.960 --> 00:45:00.980
now it's hard to get out of that rut,
even if there is a better alternative.

00:45:01.640 --> 00:45:05.567
And so I would say like the solution
there isn't like, I don't know,

00:45:05.867 --> 00:45:08.177
tell people they're bad at things.

00:45:08.267 --> 00:45:13.127
The solution is to like make better
resources so that a different path

00:45:13.457 --> 00:45:15.707
becomes the easiest one to take.

00:45:15.797 --> 00:45:21.290
And mass, you know, writ large when you
know, it's, one thing to convince 15

00:45:21.290 --> 00:45:27.230
people that this is the best solution
and it's correct and it's another to make

00:45:27.230 --> 00:45:31.466
the argument clearly enough, strongly
enough, and consistently enough over a

00:45:31.466 --> 00:45:36.506
long enough span of time that it affects
the behavior of millions of people.

00:45:37.496 --> 00:45:38.216
So.

00:45:38.357 --> 00:45:42.707
You know, how do we promote the web
platform overreact, like do a better

00:45:42.707 --> 00:45:44.387
job promoting the web platform?

00:45:44.447 --> 00:45:51.148
'cause there are, thousands of
people who are writing resources

00:45:51.208 --> 00:45:55.138
for React because that's where
money and attention and time is.

00:45:55.288 --> 00:46:00.688
So if you want to do better than that, you
have to make a resource that is better.

00:46:01.138 --> 00:46:01.618
I don't know that.

00:46:02.008 --> 00:46:02.428
There you go.

00:46:03.153 --> 00:46:03.373
1-acemarke: Yeah.

00:46:03.654 --> 00:46:03.804
Yeah.

00:46:03.804 --> 00:46:06.984
So the, the, the other, there was
a related article from last month

00:46:06.984 --> 00:46:10.974
entitled Dead Framework Theory, which
was specifically addressing like

00:46:10.979 --> 00:46:15.474
the, the LLM training data aspect of
this and how it, how it becomes a,

00:46:15.474 --> 00:46:17.184
sort of a self perpetuating cycle.

00:46:17.544 --> 00:46:21.924
And also pointing out that like if you
have a, a new library or a new tool or

00:46:21.924 --> 00:46:26.688
a new web platform feature that is just
now baseline, newly available, there's

00:46:26.688 --> 00:46:31.248
a lag in common LLMs knowing about that.

00:46:31.444 --> 00:46:35.164
So it's sort of like that,
defaults win kind of an issue.

00:46:35.408 --> 00:46:39.592
2-vcarl: Yeah, and I'll say, yes, defaults
win, but That doesn't mean that it's

00:46:39.592 --> 00:46:44.505
impossible for an, you know, to, to
approach the problem in a way to mitigate

00:46:44.505 --> 00:46:48.495
that kind of, you know, home field
advantage that tools like React have.

00:46:48.679 --> 00:46:51.979
I've shouted out a number of times in
a bunch of different contexts because

00:46:51.979 --> 00:46:55.429
they do a good job, but I love effect,
one of the things they do really

00:46:55.429 --> 00:46:59.119
well is documentation, and one of the
things they do really well in their

00:46:59.119 --> 00:47:01.789
documentation is making it legible for ai.

00:47:02.099 --> 00:47:06.059
I recently over the summer built
a Greenfield project with Effect,

00:47:06.059 --> 00:47:08.519
and I did it extensively with ai.

00:47:08.924 --> 00:47:12.254
, a mixture of having it right and then
having it educate me and then rewriting

00:47:12.254 --> 00:47:16.934
it and then having AI rewrite what I
did, you know, just get there over time.

00:47:17.252 --> 00:47:21.632
But I was able to do that despite it being
a new library that's even at odds with the

00:47:21.632 --> 00:47:23.582
kind of patterns that AI wants to write.

00:47:23.582 --> 00:47:28.168
It's a functional type, it's a
functional programming typed standard

00:47:28.168 --> 00:47:31.468
library essentially, which is not
at all what AI wants to write.

00:47:31.468 --> 00:47:33.718
AI wants to write object oriented classes.

00:47:33.959 --> 00:47:36.689
And despite that, I was able to
make it, figure it out and learn it

00:47:36.689 --> 00:47:39.719
and do a good job, good enough job
that I got something I was proud of.

00:47:39.929 --> 00:47:41.219
You know, not just vibe coded.

00:47:41.219 --> 00:47:42.749
I was proud of it.

00:47:42.749 --> 00:47:46.349
I told people in my life, this is the
best code base I've ever worked on.

00:47:46.645 --> 00:47:50.425
And it's a large part of that
was because of how they affect.

00:47:50.716 --> 00:47:53.416
As a, you know, organization and
library approach, their style

00:47:53.416 --> 00:47:57.526
of documentation, they made it
legible for these automated tools.

00:47:57.526 --> 00:48:02.296
So I guess like if you wanna promote
the web platform over incumbents,

00:48:02.296 --> 00:48:07.066
like react, then like figure out how
people are writing code, figure out

00:48:07.066 --> 00:48:13.366
how people are consuming documentation,
consuming new knowledge do a good job.

00:48:13.880 --> 00:48:16.940
1-acemarke: I'll note though, that you,
you are the one who decided you were

00:48:16.940 --> 00:48:21.230
going to use effect and told the LOM
this is what I'm going to build with.

00:48:21.606 --> 00:48:22.056
2-vcarl: It's true.

00:48:22.146 --> 00:48:22.596
Yeah.

00:48:22.852 --> 00:48:26.632
1-acemarke: the last wink on this
particular topic Alex Russell who used

00:48:26.632 --> 00:48:32.092
to be at Google now has been, Microsoft
has been very vocally beating the drum

00:48:32.272 --> 00:48:38.962
that most client side js is bad, that JS
bundles keep growing, that most people

00:48:38.962 --> 00:48:44.062
are using, you know, older Android
devices on mobile with very weak CPUs, and

00:48:44.062 --> 00:48:49.162
therefore Js load times are worse versus,
you know, developers using an iPhone or,

00:48:49.167 --> 00:48:50.932
or a Power or a Fast Mac or something.

00:48:51.412 --> 00:48:56.992
And he just put up the latest article in
his ongoing series you know, documenting,

00:48:57.213 --> 00:49:03.333
sta like average bundle sizes, average
network speeds, average CPU uses.

00:49:03.760 --> 00:49:07.030
I have a lot of respect for him
Technically his stats are correct.

00:49:07.060 --> 00:49:08.650
His points are right.

00:49:09.250 --> 00:49:15.340
I have questions about his delivery and
tone in how he accuses people of doing

00:49:15.340 --> 00:49:19.393
the wrong thing, but it's also very true
that a lot of people should be paying

00:49:19.393 --> 00:49:24.043
more attention to him and actually
trying to shrink down bundles instead.

00:49:24.717 --> 00:49:25.377
2-vcarl: That's interesting.

00:49:25.437 --> 00:49:29.577
I a thought I've had, I haven't
validated this thought against, you know,

00:49:29.577 --> 00:49:32.176
ground truth, but been hearing about.

00:49:32.776 --> 00:49:35.086
Bundle size as a problem.

00:49:35.356 --> 00:49:39.496
Essentially what he's talking about
here, like we ship too much JavaScript

00:49:39.526 --> 00:49:45.856
for the compute capabilities of
commonly used devices like that as a

00:49:45.856 --> 00:49:49.691
thesis has been something I've been
hearing about for a very long time.

00:49:50.191 --> 00:49:55.445
Much of my career even, and I'm not
sure that the bundle size problem

00:49:55.445 --> 00:50:00.515
has gotten that much worse over
the last, I'll say eight years,

00:50:00.575 --> 00:50:02.135
you know, call it, since 2017.

00:50:02.815 --> 00:50:07.288
And he shows a chart of compute speeds and
basically shows like, yes, top of the line

00:50:07.288 --> 00:50:12.778
devices have gotten five times faster,
low end devices that 75% of the world

00:50:12.778 --> 00:50:15.088
uses have not gotten measurably faster.

00:50:15.462 --> 00:50:17.629
And that's true.

00:50:17.945 --> 00:50:18.485
Can't argue it.

00:50:18.485 --> 00:50:19.715
His stats are correct, like he said.

00:50:20.235 --> 00:50:24.118
But also like, I'm not sure the
problem is getting measurably worse.

00:50:24.178 --> 00:50:29.878
The optimizations of how we can
split code and, you know, what the

00:50:29.928 --> 00:50:34.488
JIT and the execution environment is
doing to make it work more quickly.

00:50:34.848 --> 00:50:36.738
Those have gotten better over time.

00:50:37.288 --> 00:50:41.428
And it's also true that like, so if
he's looking at the, basically like

00:50:41.428 --> 00:50:48.854
every processor, anyone with a device
is using, and that is the correct stat

00:50:48.854 --> 00:50:54.824
to consult if you are building something
that everyone in the world will access.

00:50:55.484 --> 00:50:56.954
But that's not true for most startups.

00:50:57.014 --> 00:51:01.034
Like if you're building a startup
that targets like some industry,

00:51:01.034 --> 00:51:02.654
that American businesses.

00:51:02.920 --> 00:51:07.090
Is target's a problem that American
businesses need solved, then like it

00:51:07.090 --> 00:51:13.680
doesn't really matter what the MO mobile
performance in, you know, different PO

00:51:13.830 --> 00:51:17.670
outside of that target industry, I guess
are, then it's like, like what you said

00:51:17.670 --> 00:51:22.590
about his like tone and delivery, I think
a, to me when I read this, a core part

00:51:22.590 --> 00:51:27.543
of what that I think he's overlooking
is that not everyone is trying to ship

00:51:27.543 --> 00:51:33.333
something that 100% of the people in the
world can access smoothly and quickly.

00:51:33.573 --> 00:51:34.785
Like, and that's fine.

00:51:34.785 --> 00:51:37.515
Like, you know, not everything needs
to target everybody in the world.

00:51:37.863 --> 00:51:40.113
So, I don't know, I, I guess
that that's one of my takeaways.

00:51:40.143 --> 00:51:42.543
That's one thing that I
think is missing from this.

00:51:42.603 --> 00:51:46.533
Otherwise, very technically
complete blog post,

00:51:47.000 --> 00:51:51.500
1-acemarke: I think it's also true that an
awful lot of app teams out there ought to

00:51:51.500 --> 00:51:57.800
be spending time thinking about even just
basic bundle sized stuff, and they aren't

00:51:58.410 --> 00:52:02.370
2-vcarl: I do wanna talk about
the NPM hack that is ongoing

00:52:02.460 --> 00:52:05.010
shy haud, the sand worm.

00:52:05.411 --> 00:52:09.729
I want to call out as far as I
know, I keto.dev has been like

00:52:09.759 --> 00:52:11.619
the security researchers who have.

00:52:12.033 --> 00:52:16.413
Announced this, like uncovered it
and then analyzed it and shared it.

00:52:16.813 --> 00:52:21.313
They had a really good analysis of
the evolution of the code, of the

00:52:21.313 --> 00:52:23.893
attack of this worm from September.

00:52:24.323 --> 00:52:28.313
And I, noted in that when I was
rereading it after this, you know,

00:52:28.313 --> 00:52:33.605
new, new attack they had shouted
out that it appeared that they still

00:52:33.605 --> 00:52:35.465
had more credentials in reserve.

00:52:35.555 --> 00:52:39.028
Like they had cracked more credentials
than they had actually used.

00:52:39.538 --> 00:52:43.538
And sure enough, this, you know,
round two attack in their analysis

00:52:43.538 --> 00:52:47.636
of of it this time around, they note
that it was timed just before MP's

00:52:47.636 --> 00:52:49.346
deadline for revoking old tokens.

00:52:49.346 --> 00:52:52.466
So like very clearly they had a lot
of tokens that they had compromised

00:52:52.466 --> 00:52:55.650
previously that they were now taking
advantage of before they, before

00:52:55.650 --> 00:52:57.990
they lost access to it, before
those tokens were no longer valid.

00:52:58.398 --> 00:53:01.548
And I guess to reiterate, we've talked
about, we talked about this attack before.

00:53:01.678 --> 00:53:05.676
I would say this is, this represents
the current cutting edge of malware.

00:53:05.916 --> 00:53:11.754
It is using all sorts of fascinating root
execution, like privilege escalation.

00:53:11.754 --> 00:53:16.651
I saw discussion of it, starting a docker
container, mounting your file system

00:53:16.681 --> 00:53:20.687
to that privileged environment and now
suddenly it has privileged access to

00:53:20.687 --> 00:53:24.466
all sorts of files that it couldn't have
if it was just running in your shell.

00:53:24.801 --> 00:53:26.271
Stuff like that, that's
pretty fascinating.

00:53:26.271 --> 00:53:30.406
And other things, like if you have
a claw installed, it will prompt

00:53:30.466 --> 00:53:34.396
Claude to say, Hey, look around
this file system for secrets.

00:53:34.756 --> 00:53:37.663
Like that is very cutting
edge malware to me.

00:53:37.663 --> 00:53:39.723
It's it's not just writing its own code.

00:53:39.873 --> 00:53:42.783
It's not just a worm that is
trawling your file system.

00:53:42.783 --> 00:53:47.230
It is taking advantage of other tools
that you take advantage of to attack you.

00:53:47.492 --> 00:53:49.410
So that's, yeah, that's not great.

00:53:49.730 --> 00:53:51.920
1-acemarke: I mean like
big picture, it's almost.

00:53:52.294 --> 00:53:57.274
It's almost surprising how many widespread
pieces of malware have been very dumb

00:53:57.574 --> 00:54:02.494
and weren't as nearly destructive
or smart as they could have been.

00:54:02.944 --> 00:54:07.354
And like think of how much damage we've
had collectively as an industry over years

00:54:07.354 --> 00:54:10.954
with only a lot of those dumb malware.

00:54:11.226 --> 00:54:15.516
And now we're starting to see some
people write more intelligent malware.

00:54:15.778 --> 00:54:16.138
2-vcarl: Yep.

00:54:16.288 --> 00:54:16.558
Yeah.

00:54:16.588 --> 00:54:19.078
'cause a month ago, two months
ago, whenever it was, there was

00:54:19.078 --> 00:54:23.737
a different NPM hack that managed
to get into the debug package,

00:54:24.097 --> 00:54:26.197
which is massively widely used.

00:54:26.699 --> 00:54:30.989
And I assumed that it was the same
attackers as this attack because it's,

00:54:30.989 --> 00:54:32.999
it it resembled it in a couple of ways.

00:54:33.339 --> 00:54:34.749
Except that it was dumb.

00:54:34.899 --> 00:54:36.849
It was so poorly executed.

00:54:36.849 --> 00:54:43.085
Like they got close to unprecedented
access to the NPM ecosystem.

00:54:43.085 --> 00:54:47.255
Like this is one of the first times
that, that previous attack, the debug

00:54:47.255 --> 00:54:51.382
attack, was one of the first times that
I saw, here's this compromised version.

00:54:51.442 --> 00:54:53.122
Let me check my file system.

00:54:53.422 --> 00:54:53.812
Oh, yep.

00:54:53.842 --> 00:54:54.472
There it is.

00:54:54.562 --> 00:54:55.312
I've got this.

00:54:55.952 --> 00:54:58.652
So yeah, they just straight
up fumbled the bag there.

00:54:58.702 --> 00:55:03.412
my theory here, having paid attention
to this, it seems like there's some.

00:55:04.717 --> 00:55:10.424
Hacker group that may have compromised
set up a, a phishing tool set, you

00:55:10.424 --> 00:55:16.034
know, set up tools for other malicious
actors to run phishing attacks.

00:55:16.244 --> 00:55:21.222
And it feels like two different hacker
groups took advantage of those tools

00:55:21.222 --> 00:55:25.872
to target NPM maintainers, and only
one of them is actually technically

00:55:25.872 --> 00:55:29.922
competent enough to take full
advantage of the access that they got.

00:55:29.952 --> 00:55:30.582
So, yeah.

00:55:31.048 --> 00:55:32.938
I believe we've shared
these resources before.

00:55:32.998 --> 00:55:37.361
And GitHub put out our plan for
a more secure NPM supply chain.

00:55:37.491 --> 00:55:38.571
So they're still working on that.

00:55:38.571 --> 00:55:38.991
Clearly.

00:55:39.291 --> 00:55:42.711
They also just released an NPM
security update earlier this

00:55:42.711 --> 00:55:44.481
month in November, November 5th.

00:55:44.799 --> 00:55:47.019
Mark, you want to just read through
any of these lightning rounds

00:55:47.019 --> 00:55:48.099
that you wanna call attention to

00:55:48.099 --> 00:55:48.399
1-acemarke: okay.

00:55:48.499 --> 00:55:52.669
TS six and TS seven are hopefully
gonna be coming out early next year.

00:55:52.669 --> 00:55:57.139
TS six is still the current
TypeScript code base, but with some

00:55:57.139 --> 00:55:59.239
changes to defaults and deprecation.

00:55:59.539 --> 00:56:03.289
And then TS seven would be
the native implementation in

00:56:03.289 --> 00:56:04.339
go that they're working on.

00:56:04.339 --> 00:56:08.179
So a couple different updates
on , the release plans there.

00:56:08.269 --> 00:56:10.189
That's going to be very, very exciting.

00:56:10.189 --> 00:56:12.889
I am excited to have TypeScript
compiler 10 times faster.

00:56:13.439 --> 00:56:18.979
Also there were some more the latest
TC 39 proposals meeting as usual

00:56:18.979 --> 00:56:21.889
advanced a number of different
proposals to different stages.

00:56:22.149 --> 00:56:23.859
A couple of things that look interesting.

00:56:23.859 --> 00:56:27.369
There's a promise dot all keyed,
which is essentially promise

00:56:27.369 --> 00:56:28.929
dot all but for an object.

00:56:29.212 --> 00:56:34.552
And then I am excited, irrationally
excited about object, keys length, which

00:56:34.552 --> 00:56:39.022
is literally just to get the size of
the number of keys in an object instead

00:56:39.022 --> 00:56:41.032
of object keys, parentheses, length.

00:56:42.450 --> 00:56:44.040
2-vcarl: Chrome and a
couple of other browsers.

00:56:44.040 --> 00:56:46.830
Want to remove XSLT from the web platform.

00:56:47.200 --> 00:56:52.243
XSLT is a what domain specific
library for transforming X and

00:56:53.262 --> 00:56:55.422
1-acemarke: transformations
within a browser.

00:56:55.422 --> 00:57:00.222
So you, you send out an XML document from
the server and then you have a purely

00:57:00.222 --> 00:57:04.607
client side declarative transformation
that like converts it into HTML.

00:57:04.940 --> 00:57:05.630
2-vcarl: It exists.

00:57:05.660 --> 00:57:07.700
I had no idea that it
was a browser feature.

00:57:07.700 --> 00:57:10.700
I've known of it as a tool that
exists, but I had no idea it

00:57:10.700 --> 00:57:11.840
was baked into the browser.

00:57:12.350 --> 00:57:15.050
And they're looking to remove
it and I'm okay with that.

00:57:15.380 --> 00:57:19.460
But certain people who I
guess use it for one thing or

00:57:19.460 --> 00:57:22.370
another have been running a
campaign to say, no, please don't.

00:57:22.590 --> 00:57:23.850
What about RSS feeds?

00:57:24.068 --> 00:57:24.338
But yeah.

00:57:24.806 --> 00:57:27.581
1-acemarke: Going along a bit with
the whole use the platform thing.

00:57:27.767 --> 00:57:31.487
more people should be putting
some of their state in the URL

00:57:31.637 --> 00:57:35.807
and there was a very good article
on using the URL as state.

00:57:36.141 --> 00:57:39.801
And then along with that, another,
video from recent React Summit that's

00:57:39.801 --> 00:57:42.381
probably paywall at the moment, but
I think he's done a couple previous

00:57:42.381 --> 00:57:43.791
versions of this at different conferences.

00:57:44.071 --> 00:57:49.651
David Korshe has a talk on goodbye use
state, similar to his goodbye use effect.

00:57:49.961 --> 00:57:50.951
It's hilarious.

00:57:50.951 --> 00:57:54.131
It's funny, and it also points
out why you shouldn't be using

00:57:54.161 --> 00:57:56.141
actual used state all that much.

00:57:56.544 --> 00:58:00.024
2-vcarl: Aiden by who did
Millions js put out an interesting

00:58:00.024 --> 00:58:01.674
new tool called React Grab.

00:58:01.944 --> 00:58:06.204
Basically letting you, you know, you,
is trying to solve the problem of

00:58:06.204 --> 00:58:09.919
when you tell AI like, Hey, make this
thing different, and then it goes.

00:58:10.704 --> 00:58:11.904
I don't know where that is.

00:58:12.020 --> 00:58:14.330
here's your browser, but I don't
know where that is in the code base.

00:58:14.390 --> 00:58:16.850
And so this is a tool that helps map.

00:58:17.059 --> 00:58:20.639
similar to how you can use dev tools
to highlight an element this is

00:58:20.639 --> 00:58:24.629
taking that kind of behavior where you
highlight an element in your browser

00:58:24.989 --> 00:58:29.129
and it connects back to the actual
source code that produced that element.

00:58:29.589 --> 00:58:34.499
As a means of giving AI a head
start on finding what code to

00:58:34.499 --> 00:58:36.019
use which seems super cool.

00:58:36.069 --> 00:58:41.949
I question the wisdom of the recommended
get started thing, which is just

00:58:41.949 --> 00:58:43.899
to add a script tag to Unpackage.

00:58:44.209 --> 00:58:44.599
I don't know.

00:58:44.689 --> 00:58:49.399
Seems, seems slightly sketch, but also for
also seems really easy to to get started.

00:58:49.746 --> 00:58:52.521
1-acemarke: One thing that caught my
eye in terms of like, this is awesome

00:58:52.521 --> 00:58:53.541
and you should never, ever do this.

00:58:53.841 --> 00:58:58.641
Was implementing a node module
loader that imports from BitTorrent.

00:58:58.975 --> 00:58:59.905
okay, great.

00:58:59.905 --> 00:59:02.060
That's possible, apparently.

00:59:02.490 --> 00:59:03.180
2-vcarl: Love that.

00:59:03.180 --> 00:59:04.530
I do love BitTorrent.

00:59:04.530 --> 00:59:05.460
You know, as we were talking about

00:59:05.460 --> 00:59:09.433
decentralized technology a little bit
earlier, like, man, what a, highly

00:59:09.433 --> 00:59:11.653
resilient, decentralized technology.

00:59:12.023 --> 00:59:15.233
But yeah, well, hey, you know, maybe if
we're gonna, if we're gonna encourage

00:59:15.233 --> 00:59:19.023
people to do decentralized technology
building on the shoulders of giants

00:59:19.023 --> 00:59:23.013
like it, man, if you want it to
like, never stop working, ever Sure.

00:59:23.013 --> 00:59:25.803
Import your code from BitTorrent,
probably, it's not gonna work very

00:59:25.803 --> 00:59:31.337
quickly, but given the right underlying
cedars that would, that may never go down.

00:59:31.607 --> 00:59:32.207
Pretty interesting.

00:59:32.757 --> 00:59:37.257
1-acemarke: Earlier I mentioned Ryan Cardo
streaming and talking about async signals.

00:59:37.257 --> 00:59:41.757
Here's the six hour livestream video
if you want to watch that and or

00:59:41.757 --> 00:59:43.497
throw it into a summarizer somewhere.

00:59:43.843 --> 00:59:48.283
2-vcarl: I'll shout out the details
of building nodes the node type

00:59:48.283 --> 00:59:49.993
script type stripping support.

00:59:50.363 --> 00:59:53.513
Just 'cause I, man, I do love a
technical writeup and that is,

00:59:53.851 --> 00:59:56.071
that was a massive feature release.

00:59:56.164 --> 01:00:00.454
Just like the ability to use node
to run TypeScript code without doing

01:00:00.814 --> 01:00:03.334
a compilation step was pretty cool.

01:00:03.754 --> 01:00:07.324
And so here to here to signal boost.

01:00:07.585 --> 01:00:08.815
A post from the author of it.

01:00:09.136 --> 01:00:10.186
1-acemarke: And one more.

01:00:10.186 --> 01:00:13.736
Since we spent much time talking
about the, the web platform the author

01:00:13.736 --> 01:00:17.936
of the Motion Animation Framework
put up a really good post comparing

01:00:17.966 --> 01:00:21.686
all the different ways you can do
animations on the web and talking about

01:00:21.686 --> 01:00:22.611
some of the performance trade-offs.

01:00:23.123 --> 01:00:23.783
2-vcarl: Super good.

01:00:23.934 --> 01:00:25.922
Cool into some conference news.

01:00:26.222 --> 01:00:27.902
We don't really have much
'cause it's the end of

01:00:27.902 --> 01:00:31.230
the year and all of the upcoming
conference things don't show

01:00:31.230 --> 01:00:33.030
anything for like January or February

01:00:33.359 --> 01:00:35.729
1-acemarke: well, we don't have much
of a list here, but I can say that

01:00:35.729 --> 01:00:40.079
I've actually been doing my own,
trying to prepare CFPs for next year,

01:00:40.079 --> 01:00:43.632
and it ended up making a database
of conferences and like my own

01:00:43.632 --> 01:00:45.617
personal list is like dozens of them.

01:00:45.617 --> 01:00:48.287
And I can tell you there several
conferences have submission

01:00:48.287 --> 01:00:50.379
deadlines like by November 30th.

01:00:50.803 --> 01:00:52.693
Suffice would say there's a lot
more conferences out there that

01:00:53.143 --> 01:00:56.503
knew existed until I spent several
evenings researching them and trying

01:00:56.503 --> 01:00:57.553
to put this database together.

01:00:57.994 --> 01:01:00.154
2-vcarl: I've tried to do that
consistently over the past three

01:01:00.154 --> 01:01:03.934
years for this podcast and holy
shit, there are so many conferences.

01:01:03.964 --> 01:01:05.524
It is absolutely bananas.

01:01:05.524 --> 01:01:08.044
Some of them are even
fraudulent, so it's like you,

01:01:08.044 --> 01:01:09.454
you actually gotta reschool them.

01:01:10.144 --> 01:01:11.224
So, yeah, it's a lot.

01:01:11.284 --> 01:01:11.824
But okay.

01:01:11.824 --> 01:01:14.394
All that to say I am aware of React.

01:01:14.394 --> 01:01:18.424
Paris has a CFP currently
open that's gonna be in March.

01:01:18.424 --> 01:01:21.664
So if you're looking to talk,
then they've got a CFP open.

01:01:21.694 --> 01:01:22.504
You can do that.

01:01:22.954 --> 01:01:28.174
JS World also likewise has a CFP
that closes at the end of December.

01:01:28.605 --> 01:01:32.277
Thank you everyone who has managed
to stick around for this, you know,

01:01:32.427 --> 01:01:34.437
hour and 15 minute recording session.

01:01:34.597 --> 01:01:37.782
1-acemarke: Funny, we said we didn't have
a lot of main content for today and go

01:01:37.782 --> 01:01:39.522
figure, we had a lot to say about stuff.

01:01:39.663 --> 01:01:39.843
2-vcarl: yeah.

01:01:39.843 --> 01:01:40.233
Right.

01:01:40.293 --> 01:01:43.173
I give us a, give us a blank
slate and we will fill it.

01:01:43.898 --> 01:01:44.228
howdy.

01:01:44.743 --> 01:01:45.011
joining us.

01:01:45.446 --> 01:01:46.976
1-acemarke: the discussion
has been useful.

01:01:47.244 --> 01:01:49.524
2-vcarl: that is my hope
I, if not useful, at least.

01:01:49.524 --> 01:01:50.124
Interesting.

01:01:50.514 --> 01:01:50.994
Cool.

01:01:51.324 --> 01:01:52.614
Thank you for joining us.

01:01:52.704 --> 01:01:56.574
We normally, I say we'll be back on the
last Wednesday of the month, but the

01:01:56.574 --> 01:01:58.854
last Wednesday of next month I think is,

01:01:59.012 --> 01:01:59.942
1-acemarke: December 31st,

01:02:00.239 --> 01:02:02.704
2-vcarl: So I don't know, we're probably
not gonna do it on the last Wednesday

01:02:02.704 --> 01:02:04.414
of next month, but we'll be back

01:02:04.851 --> 01:02:07.131
1-acemarke: somewhere about
that timeframe, approximately.

01:02:07.161 --> 01:02:09.231
2-vcarl: ish before the end of this year.

01:02:09.631 --> 01:02:09.991
Yeah.

01:02:10.231 --> 01:02:13.261
And then we'll, we'll be back in your
podcast feed just as soon as we can.

01:02:13.261 --> 01:02:17.415
In general generally, I say we gather
sources from all sorts of news feeds

01:02:17.415 --> 01:02:22.019
and whatever, but mark, you've done
a good job of being my source lately.

01:02:22.019 --> 01:02:26.309
So mostly we get news from tech news and
reads, or at least that's where I get it.

01:02:26.309 --> 01:02:27.299
I don't know where Mark gets it.

01:02:27.799 --> 01:02:30.889
1-acemarke: all of the above
newsletters, plus like Hacker

01:02:30.889 --> 01:02:34.647
News and Twitter and all the other
social media feeds, I obsess over.

01:02:34.975 --> 01:02:37.735
2-vcarl: But yeah, we do subscribe
to this week in React Bite that

01:02:37.735 --> 01:02:40.075
Dev React status next JS weekly.

01:02:40.405 --> 01:02:43.765
Mark and I are both
subreddit mods of React js.

01:02:44.255 --> 01:02:48.005
But yeah, if you see anything that
seems useful that you might want us to

01:02:48.005 --> 01:02:51.884
discuss drop it in the Tech News and
Reads channel I'll at least read it.

01:02:51.914 --> 01:02:52.634
I may not

01:02:52.634 --> 01:02:53.594
bring it in, but yeah.

01:02:53.739 --> 01:02:56.519
if this is a show that you get value
from and wanna support best way to

01:02:56.519 --> 01:03:00.301
do so is by telling people about
it and submitting a review that'll

01:03:00.301 --> 01:03:02.821
help us get discovered and whatever.

01:03:03.198 --> 01:03:03.648
Cheers.

01:03:03.738 --> 01:03:04.338
Thanks so much.

01:03:04.550 --> 01:03:05.390
1-acemarke: Happy Thanksgiving.

01:03:05.704 --> 01:03:06.964
2-vcarl: Yes, happy Thanksgiving.