Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Released Thursday, 6th March 2025
Good episode? Give it some love!
Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Beyond Aesthetics: What the Next Generation of Frameworks Should Offer - JsJ_670

Thursday, 6th March 2025
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:01

If you work in quality control

0:03

at a candy factory, you know

0:05

strict safety regulations come with the

0:07

job. It's why you partner with

0:10

Granger. Granger helps you find the

0:12

high quality and compliant products your

0:14

business needs to inspect, detect, and

0:16

help correct issues. And the sweetest

0:18

part is, everyone gets a product

0:21

that's as safe to eat as

0:23

it is delicious. Call 1-800 Granger,

0:25

click ranger.com or just stop by.

0:27

Granger, for the ones who get

0:29

it done. Hey,

0:35

welcome back to another

0:37

episode of JavaScript chamber

0:39

this week on our panel We

0:42

have Dan Shapiro from Tel

0:44

Aviv. I'm Charles Max Wood

0:46

from Top End Devs. Hello

0:48

from Lehigh Utah We also have

0:50

a special guest and that is

0:52

Jov Abrahami. I hope I got

0:54

I hope I got close. You

0:57

got it right Yeah I got

0:59

on when you guys were chatting

1:01

when I hopped on and I

1:03

was like, yeah, my Hebrew's atrocious

1:05

because I don't speak it. Yeah,

1:08

anyway. So your VP, did I

1:10

get that right? No, CTO of

1:12

Enterprise at Wix, right? I'm CTO

1:14

of Wix Enterprise, which is like

1:16

a, it's funny to say

1:19

it's like a small startup

1:21

of trying to take Wix,

1:23

which is mostly a consumer

1:26

product and designer product. and

1:28

adapt it to enterprise sales.

1:31

And it's exciting. Very cool.

1:33

So, uh... We actually had

1:36

you on before, just so

1:38

you know. Yeah. I was

1:40

going to say it. We

1:42

had you before. Yeah. We

1:44

had you on before about

1:47

two years ago, I think.

1:49

Yeah. That was exciting.

1:51

Was a very different

1:53

topic, I think. And

1:56

we had a very heated

1:58

debate there about... Yeah, clouds

2:00

and code ownership. Yeah, with

2:02

AJ, unfortunately, cannot join today.

2:04

Yeah, I'll put a link

2:06

into the, into the chats.

2:09

So if you're watching on

2:11

YouTube, you can pick it

2:13

up there and go listen

2:15

to that one too. So,

2:17

so besides your, I guess,

2:19

your title at Wix, what

2:21

else has changed last few

2:23

years? So, you know, the

2:25

first thing that the change

2:27

was that I used to

2:29

be. the end of a

2:32

weeks developer platform, a co-ed

2:34

of that and moved to

2:36

another position. I'm also working

2:38

on another initiative which part

2:40

of it is creating a

2:42

new web framework, which is

2:44

kind of why I'm very

2:46

interested in that topic of

2:48

web frameworks. And I think

2:50

those are two major things.

2:53

So when you talk about

2:55

Israel, there is another. big

2:57

thing that happened in the

2:59

last year and a half.

3:01

I think they will probably

3:03

leave that out of the

3:05

podcast. Yeah, the political situation

3:07

there is a little bit

3:09

brought in everything, but yeah,

3:11

the war. I keep hearing

3:14

about hostage just coming home,

3:16

which is a good thing.

3:18

So yeah, the last, the

3:20

last few weeks have been,

3:22

you know, kind of a

3:24

bright spot in this pretty,

3:26

dark tunnel that hostages that

3:28

have been held for coming

3:30

on 500 days are finally

3:32

being released basically year and

3:35

a half yeah yeah yeah

3:37

hopefully it will continue they

3:39

are being released you know

3:41

in small batches every few

3:43

every week and hopefully this

3:45

will continue anyway yeah let's

3:47

talk tech though yeah let's

3:49

talk tech though yeah let's

3:51

talk tech though yeah let's

3:53

talk tech though yeah let's

3:56

talk tech though yeah let's

3:58

talk tech So so framework

4:00

so you said you're building

4:02

your own framework which you

4:04

know I guess it's been

4:06

a week so we can.

4:08

use another one. Do you

4:10

want to just talk briefly

4:12

about that and what you're

4:14

pulling together? I don't know,

4:17

maybe Dan had a different

4:19

direction he wanted to take

4:21

this. No, it's fine. I

4:23

think, you know, what I'm

4:25

trying to solve is the

4:27

problem of designer and developer

4:29

collaboration. Oh, okay. So it's

4:31

trying to do a framework

4:33

that allows a designer. to

4:35

basically publish or deploy the

4:38

application. Okay. You know, think

4:40

about the designer changing the

4:42

application and deploying the application.

4:44

That's kind of what I'm

4:46

trying to solve. It's a

4:48

very, very big requirement. And

4:50

the funny thing is that

4:52

it actually turns. It

4:55

actually becomes evident in some

4:57

point that it is actually

4:59

the same requirement as allowing

5:01

you to consume third party

5:03

components in a safe way.

5:06

So think about using some

5:08

component of another company and

5:10

not being exposed to their

5:12

code in a way that

5:14

can create a risk to

5:17

your application. And in some,

5:19

in order to support designer

5:21

developer. collaboration, when you break

5:23

that requirement down into what

5:25

it means, you get that

5:28

other possibility as well. Again,

5:30

it's still work in progress,

5:32

it's very, very experimental, and

5:34

so I'm not going to

5:36

go and still the podcast

5:39

making announcements, go and look

5:41

and use my framework, that's

5:43

not the point. But this

5:45

is something of why I'm

5:47

very opinionated and why I'm

5:50

looked very deeply into different

5:52

frameworks. It's an interesting

5:54

thing that when JavaScript and

5:56

the dorm along with it

5:58

were created. They were created

6:00

specifically for designers or thinkers

6:03

The actual developers were supposed

6:05

to be using Java or

6:07

something like that And it's

6:09

interesting to see how the

6:11

developers have kind of co-opted

6:13

JavaScript, typescript, and with the

6:15

frameworks, the heavy duty frameworks

6:17

that we have today, they're

6:19

definitely here towards developers and

6:22

much less towards designers or

6:24

people like that. You know,

6:26

I'm thinking like, if I'm,

6:28

you know, somebody learning to

6:30

code and being thrown into

6:32

react, that's, it's easy to

6:34

drown, I think. I think,

6:36

it's even more than that.

6:38

Think. I'll take you in

6:41

two different directions. One, think

6:43

about the first and the

6:45

system 15 years ago. 15

6:47

years ago, a developer would

6:49

never deploy an application. That

6:51

would never happen. They would

6:53

build something up, then give

6:55

it over to the system,

6:57

they would do acceptance tests,

7:00

and then after testing, checking,

7:02

they would deploy the application

7:04

at some point. And then

7:06

with Devops, which changed the

7:08

way we worked, it moved

7:10

the way we worked. the

7:12

responsibility to deploy an application

7:14

from system to the developer

7:16

and it gave developers the

7:19

tools to make the application

7:21

work. And different tools than

7:23

the ones that System is.

7:25

And what I'm looking to

7:27

do now is to shift

7:29

it again from the developer

7:31

to the designer. Now just

7:33

think about it. A designer

7:35

that has no idea how

7:38

to code has no understanding

7:40

of creating and running an

7:42

application or stable application would

7:44

deploy your application. Would deploy

7:46

your application. That sounds scary.

7:48

But that's actually what happened

7:50

with system and developers 15

7:52

years ago. Now, it also

7:54

means that the tools that

7:57

the designers are using are

7:59

very different. They're not going

8:01

to write the HDML or

8:03

CSS. That's not how I

8:05

do all the work. If

8:07

you go and look at

8:09

what you're using, you know,

8:11

Photoshop, Figma, you know, there's

8:13

constable tools, it's not HTML

8:16

and CSS. So you need

8:18

to bridge a much larger

8:20

gap and then end over

8:22

the responsibility to them and

8:24

then offer the tools to

8:26

them so that they can

8:28

be effective and own the

8:30

application. That's what we have

8:32

AI for, no. Well, you

8:35

know, AI can do a

8:37

lot, but unfortunately up until

8:39

today, it didn't replace the

8:41

developer or the designer. We

8:43

still have a few years

8:45

for us, at least. You

8:47

know, when people ask me

8:49

if I'm worried about... AI

8:51

replacing development developers. I say,

8:54

well, you know, eventually AI

8:56

will replace everybody. So it's

8:58

just a question of time

9:00

when they'll get to you.

9:02

Nobody's safe. Anyway. Yeah. Yeah.

9:04

When people ask me the

9:06

question as, well, not yet.

9:08

I mean, some of the

9:10

tools are really nice, but

9:12

at the end of the

9:15

day, making the decisions that

9:17

I make, they just are

9:19

not there at all. I

9:22

think the easiest way to

9:24

understand that is if we'll

9:26

give an AI to fly

9:28

a jetliner, it would do

9:30

that very well, probably better

9:33

than any human pilot. It

9:35

would fly a plane in

9:37

a very correct way of

9:39

mountain. It would be very

9:41

correct and a very smooth

9:43

flight. But it's okay for

9:46

it to fly it into

9:48

a mountain. So

9:50

I think this kind of the

9:52

gap that we have with the

9:55

eye. You remind me I had

9:57

a friend who was an airline

9:59

pilot and he basically his job

10:02

to me once there's like 100

10:04

hours of boredom and five minutes

10:06

of pure terror. Yeah, we've had

10:09

autopilot for years and

10:11

it's been a tool that the

10:14

pilots have used for years

10:16

and it's worked great, you

10:18

know, we typically don't

10:20

see too many airline

10:23

catastrophes the last

10:26

week notwithstanding notwithstanding.

10:28

You know, but it's a different problem.

10:31

It's a different set of problems

10:33

than what we're talking about with

10:35

programming. Well, it's actually easier for

10:37

an AI to fly a plane

10:39

than to drive a car. But

10:41

you know, I would like to

10:43

pull us back to talk about

10:45

frameworks. And I would actually like

10:48

to start with something that I've

10:50

been thinking about a lot that

10:52

in fact, even had a kind

10:54

of a change of perspective about.

10:56

and I can talk about that

10:58

but I first would like to

11:00

hear you you of and that's

11:02

talking about what are in fact

11:04

framework what constitutes

11:06

a framework versus say you know

11:08

a library or a set of

11:11

tools or an application

11:13

or whatever. So you know

11:15

for me the definition is

11:18

actually pretty simple. Every

11:20

software Everything, any

11:22

kind of software in the

11:25

world can be split into

11:27

two kinds of interactions. There

11:29

is an interaction that is

11:31

going into your code, something

11:33

calling your code, and there

11:35

is an interaction where your code

11:38

is calling something else. You

11:40

have a choice. You can choose which

11:42

tool you are going to use to

11:44

call something else. You have a

11:46

choice. You can choose which tool you

11:48

are going to use to call something

11:50

else. to use a tool. There is

11:52

no way to call something else without

11:55

using a tool. Might be a system

11:57

library, might be a built-in library,

11:59

might... be some higher level

12:01

library like NPM or some

12:03

other package. But there is

12:06

always, you have the choice

12:08

almost everywhere of what you

12:10

use. That is where it

12:12

is a set of tools

12:14

that you can just choose

12:17

from. But when you are

12:19

being called, you don't have

12:21

the choice of who is

12:23

calling you. You are building

12:25

an application within some kind

12:28

of a container that runs

12:30

your code or some kind

12:32

of box. that calls your

12:34

code. This is what is

12:37

a framework. It is a

12:39

frame that is activating your

12:41

code on different entry points.

12:43

And then your code can

12:45

choose different things and give

12:48

and call some exit points,

12:50

some using some utilities and

12:52

some tools. So I had

12:54

the exact same outlook on

12:57

frameworks versus libraries, but then

12:59

my point of view shifted.

13:01

a little bit. And now

13:03

I think about it more

13:05

in the context of architecture.

13:08

When I think about when

13:10

you're dictating the architecture, it's

13:12

libraries. When the architecture is

13:14

kind of dictated to you,

13:17

that's a framework. But it's

13:19

kind of same same. Yeah,

13:23

there's a big overlap, but

13:25

it does shift the perspective

13:27

a bit. I think that

13:30

the best frameworks are the

13:32

frameworks that the architect that

13:34

they make the architecture of

13:37

the solution that you're going

13:39

to build more clearer. Let's

13:41

let's put it this way.

13:44

You know where the pieces

13:46

are supposed to slide in.

13:49

I think what you're talking here

13:51

is about something a little bit

13:54

different. When you talk about new

13:56

frameworks, there's a few. concepts that

13:58

have emerged over time to make

14:00

software to be easier to code

14:02

against. One is the ability to

14:04

make it easy to be tested

14:06

in a simple environment. Another one

14:09

is the concept of locality of

14:11

definition so that all of the

14:13

concerns are in one file and

14:15

not spread across multiple files. And

14:17

another thing that is a little

14:19

bit subtle is that the syntax.

14:22

is such that when you read

14:24

it, you can understand what it

14:26

does. People tend to call it

14:28

no magic, but I don't like

14:30

that definition because we as developers

14:32

consider everything smart that someone has

14:34

written as magic. So it's not,

14:37

I won't say that, I would

14:39

say that if it makes you

14:41

write in a syntax. that is

14:43

easy for the average developer that

14:45

is working with you to understand

14:47

what's going on, then it is

14:49

probably doing something good. The principle

14:52

of least surprise, basically. Yeah. So

14:54

it's no look. Yeah. So my

14:56

question with that is, so I

14:58

mean, folks that listen to the

15:00

show know that I do most

15:02

of my work in Ruby on

15:04

rails. And some of that. is

15:07

true, right? Some of it, you

15:09

read stuff, or you read the

15:11

code and is, you know, you

15:13

pretty intuitively know what it does.

15:15

But some of the stuff, you

15:17

pretty intuitively know what it does

15:19

because you've been doing rails for

15:22

20 years, right? And so you

15:24

look at it and you know

15:26

what the conventions are and you

15:28

follow it. So how much of

15:30

it's the other, right, with react

15:32

or view or any of these

15:34

other tools that might give you

15:37

that sense of, okay, I can

15:39

look at this code and know

15:41

what it, know what it, and

15:43

know what it is. Wow, it

15:45

clarifies that that's what's going on

15:47

here and how much of that

15:49

is I've been doing react for

15:52

long enough that I know what

15:54

that's what this code is. You

15:56

know the measure of o against

15:58

a very about that? When

16:00

you go into a new system and you're like, hey,

16:03

it's doing something really exciting. Then

16:06

you go into another and then you try to

16:08

make it do something and it doesn't work. Then

16:11

you figure, ah, it has to work

16:13

that way. That's not intuitive. That's

16:16

the measure. It's the measure of how much

16:18

times it's doing things in the way you expect

16:20

to be doing, versus how much

16:22

times it surprises you doing something

16:24

in a very unintuitive way. This

16:26

is kind of a measure for APIs

16:28

and developer tools to know

16:31

how good they are. Though

16:33

there are moments against the

16:35

U moments. Yeah, I would

16:37

like to add to that.

16:39

You know, at the end

16:41

of the day, I'm always

16:43

drawn back to the no

16:45

silver bullet article that talks

16:47

about essential versus what was

16:49

the other one, essential complexity

16:51

versus non -essential complexity. And,

16:55

you know, we are solving

16:57

complicated problems, at least

16:59

we strive to do. And

17:02

when you solve complicated problems,

17:04

even when there are

17:06

strong guidelines for what the

17:08

architecture should be like,

17:10

don't expect the solution to

17:13

be trivial. That's

17:15

point number one. And point number

17:17

two, you know, you try to

17:19

make a system idiot proof, but

17:21

then somebody goes along and invents

17:23

a better idiot. So people will

17:25

always find a way to surprise

17:28

you and work against the grain

17:30

of what the framework encourages. You

17:34

know, but I think, I

17:36

think Dan, sorry to cut

17:38

me over. No, go for

17:40

it. You need to look

17:42

at frameworks in three different aspects.

17:45

There is one which is the

17:47

functional aspect. Does

17:50

it do, is it doing what you

17:52

need it to be doing? And

17:55

are different frameworks

17:57

similar in terms of the

17:59

final... functional aspects of the framework, regardless

18:01

of the syntax. And then

18:04

there is a second question, which is

18:06

when you look at the

18:08

non -functionals, like performance, for

18:10

instance, are

18:12

they equal or do you

18:14

even care? Is the

18:16

difference significant? Now,

18:18

for example, is the fact

18:20

that Svelte is much more

18:22

efficient than React? Is

18:25

it something you really care about in your

18:27

specific case, your specific application? And

18:30

only after you're done with those two,

18:32

with the functional and non -functional, only

18:35

then you come to syntax. And

18:37

how now you are with the

18:39

developer? Yeah,

18:42

but look, when I think

18:44

about React, for example, for me,

18:46

the core of React are

18:48

few well -defined concepts. You know,

18:50

it's pretty unfortunate that a lot

18:52

of React developers may not

18:54

actually be familiar with these core

18:56

concepts. And the core concepts,

18:58

by the way, UI

19:03

as a function, regenerating

19:05

the entire UI from

19:07

the state whenever the

19:09

state changes and you

19:12

need directional data flow. Maybe I'm

19:14

missing one or another one, but

19:16

those are like the core concepts

19:18

for me when I'm thinking about

19:20

React. And then when I think

19:22

about, let's say, solid, it has

19:24

different core concepts, so if I'm

19:26

thinking about Svelte, it also has

19:28

different core concepts. So a big

19:30

part of ideally, of

19:32

choosing a framework, would

19:34

have been choosing the

19:36

framework whose architecture or

19:38

the architecture that it advocates

19:40

for building application best

19:42

suits your personal tastes. Now,

19:45

unfortunately, most of us

19:47

don't go through this process

19:49

because the framework choice is kind

19:51

of, Yeah, just to finish,

19:53

because in a lot of cases, the

19:55

framework choice is kind of dictated to us.

19:58

You're right. It's again,

20:01

it's assuming that the functional is

20:03

equal and assuming that the non

20:05

-functional is equal, then you come

20:07

to aesthetics. And what you're talking

20:09

about is still just aesthetics. And you

20:11

know, React, you brought the concept

20:13

of React. React is neither reactive, nor

20:16

functional, today. You

20:19

know, it

20:21

has done a lot. It

20:23

has done a huge

20:26

work moving us forward as

20:28

front -end developers. There is

20:30

a reason why it is the

20:32

number one firm of today in

20:34

the world. But it's

20:36

kind of not what it

20:38

aimed at doing. Context

20:41

is, you could

20:43

argue that props, context and

20:45

state are all different ways to

20:47

get data into the function and

20:50

two of them are not functional. Well,

20:55

you know, the DOM is

20:57

not functional, JavaScript is not

20:59

functional. And you're kind of

21:01

living within the framework itself

21:03

is living within the confines

21:05

of the environment that it's

21:08

built on. There, you

21:10

know, you could go with Elm, if

21:12

you know, if you really want to go

21:14

to the extreme, but that, you know,

21:16

there's a price to pay for that as

21:18

well, you know, let's say

21:20

ditching JavaScript in favor of

21:22

Elm or Reason or something

21:24

like that. No one

21:26

said that the aesthetics is simple.

21:28

Getting the aesthetics of a framework

21:31

in the right way is

21:33

super hard. And there

21:35

is reason why we have lots

21:37

of frameworks trying different directions and

21:39

different things. You know, there, you

21:41

look at what's happening today. There

21:44

is one major direction

21:46

going on today, which is

21:48

signals. Everyone except

21:50

React has signals today. There

21:53

might be some old frameworks that don't

21:55

have them, that they didn't adopt signals,

21:57

but almost everyone except React are using

21:59

signals. the main obstruction for state

22:02

management. And there is a

22:04

reason behind that. It's trying

22:06

signals on different places, different

22:09

frameworks, different syntaxes seems to

22:11

work. Trying signals in terms

22:13

of the non-functional performance, again,

22:16

seems to work. It seems

22:18

to be something that people

22:20

comprehend. By the way, signals

22:23

is not a trivial thing.

22:25

It takes time to understand

22:27

that once you do. it

22:30

becomes something that is very

22:32

robust to use. So again,

22:34

it's just aesthetics. Well, for

22:37

me it's more than a

22:39

static, actually, because it informs

22:41

the way that you deconstruct

22:44

or the problem and then

22:46

construct a solution. So, for

22:48

example, first of all, I'd

22:51

like to mention, by the

22:53

way, that when we had

22:55

the Joseavona and Satya from

22:58

Meta, to talk about the

23:00

react compiler, Joe said very

23:02

clearly that signals are not

23:05

in react's future. He basically

23:07

said, you know, if signals

23:09

become a part of the

23:12

JavaScript language, there's actually a

23:14

proposal for that, then we

23:16

will, and I'm speaking for

23:19

Joe, then we will support

23:21

it. But otherwise, no signals

23:23

for react, because that's not

23:26

their vision. for how front-end

23:28

applications should be built. Their

23:31

whole thing is about, you

23:33

know, reconciliation and stuff like

23:35

that. I talk with what

23:38

you're saying right now. You're

23:40

talking about opinions. Oh, of

23:42

course. Framework's our opinions. That's

23:45

kind of my point. Well,

23:47

I, to be honest, I

23:49

don't agree. I think that

23:52

this is kind of... This

23:54

is kind of a... This

23:56

is kind of a state

23:59

we arrived. by forgetting

24:01

the functional and unfunctional

24:04

requirements. And we're kind

24:07

of set at very basic

24:09

frameworks that are not really

24:11

that are just competing with

24:14

one another on aesthetics

24:16

and performance and that's

24:19

it. But there's a lot more

24:21

other stuff that you can

24:23

compete on. Such as? Let's talk

24:25

about web essentials. Web

24:28

essentials is a list of,

24:30

I think, probably 13, 14 items that

24:33

when you are doing, when you

24:35

are working as a web developer,

24:37

you need to take care of. And

24:39

there are things like creating

24:41

responsive design, being performance,

24:44

break points, multilingual,

24:46

AB testing. So AB testing

24:48

is actually not web

24:50

essential, but it's nice

24:53

to have. Accessibility regulation,

24:55

cookies regulation in the

24:58

EU. accessibility, the new

25:00

accessibility regulation in the EU

25:02

now, a GDPR, PIR, and there's more.

25:04

And all of those... Is there a list

25:06

somewhere that I could just publish? I

25:09

have it in my, I have it somewhere,

25:11

I can send it to you.

25:14

And basically all of that list

25:16

is anything you're doing, anything that

25:18

is customer facing on the internet,

25:21

you have to take care of all

25:23

of that list. If you're doing

25:25

an enterprise... behind the

25:27

login you need to take

25:29

care of most of it

25:32

and your SEO is

25:34

another one and all

25:36

of the cost a

25:38

lot of money why

25:40

aren't frameworks helping us with

25:43

all of that list of

25:45

stuff I think when

25:47

you start talking about

25:49

these things your Again,

25:51

and it's an interesting

25:53

distinction to make from

25:55

what I see. You're

25:57

starting to move from talking

25:59

about frameworks to talking about

26:01

meta frameworks from talking about react

26:03

to talking about the next js

26:06

we're talking about view to talking

26:08

about next and so on and

26:11

so forth at least that's been

26:13

my experience with these sort of

26:15

things most frameworks these days have

26:18

a much lower bar in the

26:20

in the functionality that they're trying

26:22

to provide they are more about

26:25

you know use us instead of

26:27

using just the dome But

26:30

keep in mind when you asked

26:32

about what is the definition of

26:35

a framework. The framework is not

26:37

defined as only something on the

26:39

client that interacts with the dome.

26:41

It is defined, as you said,

26:44

as something that imposes an architecture

26:46

on your application that guides you

26:48

into building better software. With that

26:50

definition, I would expect the framework.

26:53

to help me with all of

26:55

the web essentials as well, because

26:57

it's something I have to do.

26:59

It's something those are more constraints.

27:02

My application has to work with,

27:04

I would expect the architecture of

27:06

the framework to be such that

27:08

would take care of those concerns,

27:11

or at least help me to

27:13

take care of them. So I

27:15

have to ask then, because it

27:17

seems like, you know, if you

27:20

take this narrow definition of a

27:22

framework, you know, whether it's an

27:24

aesthetic way of putting together an

27:26

application or whether it gives you

27:29

the architecture, whether or not it

27:31

provides you with some of these

27:33

essentials, you know, that you would

27:35

expect it to, it seems like

27:38

that it, it seems like there

27:40

are various definitions and maybe various

27:42

expectations that people have of a

27:44

framework, right? Because I could expect

27:47

that, okay, for me, the framework

27:49

that I want, we'll do all

27:51

these things. For somebody else, it

27:53

may just say, hey. Here's how

27:56

you're going to structure your application.

27:58

Here's the understanding of here's where

28:00

the pieces go. Here are a

28:02

series of tools, libraries, toolkits, etc.

28:05

that make the API that I'm

28:07

building against that much more friendly.

28:09

Right? So there are all these

28:12

different pieces that people consider when

28:14

they have the framework. And it seems

28:16

like a lot of people are picking

28:18

it for different reasons, right? So some

28:20

people may be picking it because, hey,

28:22

I want a more aesthetically pleasing thing.

28:24

or I want to be more

28:27

efficient in my time use by

28:29

having the framework handle certain things

28:31

for me, or by fitting a

28:34

mental model that I can

28:36

sink my head into. And so,

28:38

you know, you're saying, well, it's

28:40

aesthetics, or, you know, it's aesthetics

28:42

and maybe some of these

28:44

other things, but how do you

28:47

really make that decision on

28:49

what people should consider a

28:51

framework? I think the role

28:53

of the framework is to help

28:55

us, to make us more efficient.

28:58

Right. And, because you know, I

29:00

could just use JQI and

29:02

that would work. I would encourage

29:04

applications. Yeah. And then

29:06

we decided to move to

29:08

react because it is more

29:11

efficient to write code in

29:13

react compared to JQI, both

29:15

in the first ramp up

29:17

and then in maintainability.

29:20

And then. When you're taking

29:22

just those two concerns, the

29:24

first ramp up and maintaining

29:26

ability, and you're also starting

29:29

to add things like

29:31

accessibility into the mix, and

29:33

you're asking, A, how much work do

29:35

I need to do in a react application

29:38

to make it accessible? Versus,

29:40

can I get a framework that

29:42

would help me to have lived

29:44

that burden and making me

29:46

more efficient there? And the same

29:49

can go for any of the other.

29:51

you know, with concerns.

29:53

My experience,

29:55

though, has been that

29:57

most people who use

29:59

use JavaScript frameworks for

30:02

the front end because

30:05

it pulls them kind

30:07

of away from the

30:10

actual semantic HDML and

30:13

up with mountains of

30:15

divs which is anything

30:18

but semantic and anything

30:21

but accessible and so

30:23

forth and that If

30:26

you want to get these

30:29

in the context of frameworks,

30:31

usually what you end up

30:33

is reaching for libraries that

30:35

are compatible with the framework

30:38

that you can use them

30:40

within the framework, or maybe

30:42

if the organization is large

30:44

enough, then it creates its

30:47

own design system or adopts

30:49

some external design system in

30:51

order to get everything you

30:53

described. Are these, should design

30:55

systems have been part of

30:58

the frameworks, the framework itself,

31:00

shouldn't they be blockable to

31:02

the framework? You know, I

31:04

think saying that the framework

31:07

allows the design system that

31:09

solves some of the concerns

31:11

is a way to support

31:13

concerns. Now, with accessibility, that

31:16

might work with multilingual or

31:18

with GDPR or cookies. you

31:20

might need something else. Design

31:22

system will not solve cookies

31:25

regulation for you. So I

31:27

think even though, you know,

31:29

react and all of the

31:31

frameworks allow design systems because,

31:34

hey, it just makes us

31:36

much more efficient to use

31:38

the design system components, it's

31:40

still not enough. So I

31:43

really think that frameworks will

31:45

need to take that into

31:47

account. We are in a

31:49

market that We're shifting in

31:51

light speed from an unregulated

31:54

market to a very very

31:56

regulated market and that means

31:58

that the price of creating

32:00

an application and

32:02

a website goes up very

32:05

fast because of those

32:07

regulations. And we don't know where

32:09

we're going to end up with.

32:11

And we didn't even start

32:14

talking about AI. What does

32:16

it mean for your framework

32:18

to make your application

32:20

AI ready by whatever going

32:22

to be the nominate AI

32:25

client application that could

32:27

going to be the next. you

32:29

know, big deal in the

32:31

internet beside Google and Facebook

32:34

and TikTok. By the

32:36

way, when you're saying AI

32:38

ready, are you talking about

32:41

using AI to generate your

32:43

code or about integrating AI

32:45

functionality into the actual end

32:48

product or both or something

32:50

else? I'm talking about something

32:52

else. It's clear to for

32:55

everyone that there is going to

32:57

be a... dominant AI

32:59

application over the internet.

33:01

Right now the internet is

33:04

about 100 billion dollars

33:06

market around search and about

33:08

another 100 billion dollars

33:11

market around social. You

33:13

can assume that it's going

33:15

to be another 100

33:17

billion dollars market around

33:19

advertising or discovery

33:21

or something like that

33:24

with AI. We don't know the application, we

33:26

don't know the provider, we don't know

33:28

when it's going to happen, but

33:30

it's probably going to happen something like

33:32

that. And then you want your business

33:35

to be listed there as well. You know, today

33:37

when you build a business or any

33:39

website, you have to be listed in

33:41

Google and in Social, you probably

33:44

want a mobile application as well,

33:46

because you want to cover all the

33:48

different fronts that you might get users

33:50

from. So what would be that next

33:52

front with the I? How will your

33:55

framework help you to

33:57

be there in the right way?

34:00

talking about having some

34:02

sort of presence within

34:04

an AI-driven interface, whatever

34:06

that might be, and

34:09

that's kind of similar

34:11

to how we currently

34:13

have, like you said,

34:15

let's say a page

34:18

on Facebook or something

34:20

or on Instagram or

34:22

something like that. Is

34:24

that what you're talking

34:27

about? Think about 2011.

34:29

Think about 2011. A

34:31

year before Facebook really

34:34

become dominant. If at

34:36

2011 I would say,

34:38

hey, websites, you need

34:40

to prepare yourself to

34:43

social. We don't know

34:45

what's going to be

34:47

the dominant social application,

34:49

but something is coming.

34:52

This is kind of

34:54

what I would sound

34:56

like. So we

34:59

know there's something coming.

35:01

We just don't know

35:03

what and who. And

35:05

again, maybe it's just

35:07

me or the terminology

35:09

that I'm familiar with

35:12

because of react and

35:14

things similar to it.

35:16

But react or view

35:18

or sveld or solid

35:20

have set their sights

35:22

much much lower than

35:25

that. As I said,

35:27

the things that you're

35:29

talking about are more

35:31

in the realm of

35:33

meta frameworks or even,

35:35

you know, meta meta

35:38

frameworks. I've heard the

35:40

term stacks sometimes used.

35:42

So for example, Ken

35:44

C. Dodds has his

35:46

epic stack, which involves

35:48

a certain, you know,

35:50

obviously... remix but also

35:53

and react but also

35:55

a particular authentication provider.

35:57

and a payment provider

35:59

and a database provider

36:01

and so on and

36:03

so forth and you

36:06

integrate all of these

36:08

things together hopefully more or

36:10

less seamlessly in order to

36:12

get a more holistic type

36:14

solution that might address the

36:16

requirements that you seem to

36:18

be talking about or at least

36:20

that's how it seems to me. But

36:22

I have to ask you a question.

36:24

When you look from JQI, up to

36:27

react. and up to angular.

36:29

Doesn't it seem the same? Now,

36:31

J-quarie is actually much

36:33

linear. It tries to do

36:36

much new, compared to react,

36:38

react is trying to so

36:40

much more compared to J-quarie.

36:42

J-quarie is just trying to

36:44

obstruct a little bit the

36:47

dumb APIs, that's all, and

36:49

it is a framework. And it is

36:51

another obstruction layer on top,

36:53

and angular is the same.

36:56

And then we're going to be

36:58

where we might add another obstruction

37:00

layer on top. You know, we're trying

37:02

to put labels on it, but

37:04

why are those labels important?

37:07

Well, I actually think that

37:09

labels are important. You know,

37:11

there's that statement that there

37:14

are two hard things in

37:16

computer science, cash invalidation, naming

37:19

things and off by one

37:21

errors. And so naming things

37:23

is actually pretty important. You

37:26

know, design patterns exist, are

37:28

basically ways of naming things

37:31

so that we have a

37:33

common vocabulary. So I do

37:35

think that having common

37:38

terminology is actually

37:40

important for us to

37:43

be able to converse

37:45

and exchange ideas and

37:47

concepts. I

37:50

can accept that. But I just,

37:52

but I think that even having

37:54

said that, a meta framework

37:56

is just another framework

37:58

that does more. Yeah. Again,

38:01

for me right now, again,

38:03

my opinion may certainly change,

38:05

but right, you know, you

38:07

seem to have a very

38:10

different definition. The definition that

38:12

I used to have for

38:14

framework versus meta framework was

38:17

basically that it straddles both

38:19

sides of the network divide.

38:22

That meta framework has a

38:24

service side aspect to it,

38:26

whereas a framework doesn't.

38:28

But your definition seems

38:31

again to be much

38:33

more holistic than mine.

38:36

But you know, but let's

38:38

work with your definition.

38:40

You know, I'm fine with that.

38:43

So when I'm saying that

38:45

frameworks may need to cope

38:47

with all of the web

38:49

essentials, it's a little

38:52

bit limiting, but you

38:54

know, I don't care. That's

38:56

fine. Now,

38:59

we can go to

39:01

more extreme things that

39:04

are happening with

39:06

frameworks. Again, metaphragmocks

39:10

might be. And I'm saying

39:13

two trends or two

39:15

lines that are kind

39:17

of intertwined together.

39:20

One is the

39:22

idea of gradual

39:24

rendering. When we

39:26

start seeing that a little

39:29

bit in frameworks, the

39:31

idea of gradual rendering

39:33

is that let's start shifting

39:36

rendering back as much as

39:38

we can. To the service, what

39:40

do you mean? To the server

39:42

side and to earlier timeline. Now

39:45

you already have frameworks

39:47

that are doing the normally

39:50

we would call that build

39:52

time rendering. or static

39:54

side generation, but actually

39:57

don't like this definition.

40:00

When you look at data,

40:02

you have data that changes

40:04

slowly, like blog posts and

40:06

products and I don't know,

40:08

there's many things that change

40:10

slowly. And then there are

40:12

things that change fast. And

40:14

then there are things that

40:16

change interactively when users clicks

40:18

on something and something changes

40:20

on the client. So interactive

40:22

things have state management and

40:25

run on the client. Fast

40:27

changing, you need to do

40:29

an SSO. Slowly changing you

40:31

can do an event of

40:33

something changed. Why can't I

40:35

combine all three of them

40:37

in one page in one

40:39

component? Now, you're starting to

40:41

see things like that happening.

40:43

The act several components lets

40:45

a developer to choose to

40:47

have one layer server rendered,

40:50

which is only server ended,

40:52

and then have another layer.

40:54

or another subcomponent that is

40:56

rendered on the server but

40:58

is also interactive on the

41:00

client. Quickly starting to do

41:02

stuff like that. Other firms

41:04

are starting to do stuff

41:06

like that. But I haven't

41:08

really seen that as being

41:10

a first class pattern in

41:12

any of the frameworks. I

41:14

would take it a step

41:17

further. It seems to me

41:19

that... and I'll be blunt.

41:21

It seems that framework makers

41:23

are solving a problem that

41:25

the market is not looking

41:27

for them to solve. I'm,

41:29

you know, I've spoken to

41:31

a lot of organizations in

41:33

this context who basically say,

41:35

you know, we want to

41:37

react on the front end

41:39

and something else doing restful

41:42

APIs on the back end.

41:44

and I don't and I

41:46

don't want to react on

41:48

my back end. And, and

41:50

next. and Vercel's

41:52

success notwithstanding,

41:54

the majority of

41:56

enterprise React

41:58

applications that I'm

42:00

seeing are

42:02

very much keeping

42:04

the framework

42:07

on the client

42:09

side only. You're

42:13

right. And yet, when

42:16

you go and keep in mind that

42:18

Vercel is building websites, in

42:20

a website you must have service at

42:22

rendering because of SEO, again, because

42:24

of web essentials. But

42:26

then even for the enterprises, they get

42:28

to a point where they say, hey,

42:31

but we have a performance problem or

42:33

we have a flickering or a text log

42:35

to load the page and

42:37

we need to do something

42:39

about that. Now, when

42:41

you run React on the server,

42:43

when React was not designed to

42:45

work on a server environment, what

42:48

Vercel were doing is actually very

42:50

smart, but they're trying to

42:52

take something that doesn't really fit in

42:54

that environment and make it work in that

42:56

environment. It wasn't designed for it. It

42:59

didn't quite happen if you actually

43:01

go and design a framework that would

43:03

work in such a way

43:05

and would support both the website

43:07

and enterprise use cases. Well,

43:11

I guess, Chuck, you're supposed

43:14

to say at this point that's

43:16

why we have Rails and

43:18

what's the name I've been refraining

43:20

from saying that this whole

43:22

time. Rails and what's the name

43:24

of the thing that you

43:26

use in Rails? Stimulus or the

43:28

other one. Turbo?

43:32

Turbo, stimulus, whatever. You've got a

43:34

whole bunch of terms. All wire? Wire,

43:37

I think that was the one. Rails

43:43

did a lot of really good

43:45

stuff and

43:48

it takes its kind of, when

43:50

you look at the, what I

43:52

would call the 1 .5 age

43:55

of the internet, which is basically

43:57

static, basically server -side rendering

43:59

everything. and a little bit of

44:01

JavaScript, a little bit of jQuery

44:03

on the client, your WordPress is

44:05

there, Shopify is there, Rails is

44:08

there, Rails is kind of the

44:10

best of the breed. But

44:13

it does suffer, and there

44:15

is a reason why we moved

44:17

to web 2 .0, which starts

44:19

with React and Angular, which

44:21

are client -first libraries, simply

44:24

because you want to be very

44:26

productive on the client and very interactive

44:28

on the client, and very fast

44:30

on the client. And then, you know,

44:32

when you start moving from front -end

44:34

libraries back to the back -end, why

44:37

would they use a different language

44:39

for the back -end and the

44:41

front -end? Why would they use React

44:43

on the front -end and Rails

44:45

on the back -end? It makes my

44:47

life much harder, and normally that

44:49

would be two different people. You

44:51

know Rails in a very good

44:54

way. For someone else that needs

44:56

to learn both React and Rails,

44:58

and how to connect them together,

45:00

that's harder than using Next .js.

45:02

And again, it's the principle the

45:04

quality. So...

45:06

Yeah, I thought you

45:08

were gonna go to

45:10

Express or something, and

45:12

I'm like... No, Express

45:15

it. If you're going

45:17

to React to Next,

45:19

I can see that.

45:21

Yeah, and I think

45:23

we're kind of converging

45:25

on is...

45:30

There's a term that I just

45:32

don't want to use, so instead

45:34

I'm going to say frameworks that

45:36

are designed both for the back -end

45:39

and the front -end as first -class

45:41

citizens, and when you... Okay. I'm

45:45

going to make a

45:47

conjecture. One

45:50

minute, I think

45:52

that what, or

45:54

at least what

45:57

I'll restate what

45:59

I seem to

46:01

be hearing you

46:04

say. You're... basically saying most

46:06

modern frameworks that we've seen started

46:08

there started out client side and

46:11

then evolved to work on on

46:13

the back end as well. So

46:15

next GS grew out of react

46:18

and it's effectively implementing a react

46:20

specification. Knox grew out of view

46:22

so on and so forth. What

46:25

you're saying is You know, we've

46:27

had no GS and whatnot on

46:29

the back end long enough so

46:32

that we can think about frameworks

46:34

evolving the other way around, starting

46:36

their life on the back end

46:39

and then evolving to support the

46:41

front end. Am I am I

46:43

getting the gist of what

46:45

you're saying? Almost. What I'm

46:48

saying is think about a

46:50

framework that is designed to work

46:52

on all three life cycles

46:54

of the web. and you have three

46:56

life cycles not two of them

46:58

you have one for slowly changing

47:00

data like product was updated

47:03

maybe once a day or once a

47:05

week you have a fast changing data

47:07

that you have to render for

47:09

a user directly on the server

47:11

like username or cookies and

47:14

then you have interactive data

47:16

or interactive interactions on

47:18

the client and state

47:20

management and state management

47:23

and It doesn't make any sense

47:25

that those are three different obstructions

47:27

that are done in three

47:29

different ways. Why can they do them

47:31

in one, why can they get a framework

47:34

that speaks in that language and

47:36

just does it all and not

47:38

force me to start messing up

47:40

different things and different concepts

47:42

to try and understand what goes

47:45

where. I

47:50

mean a lot of the things that

47:52

you're talking about are things that I

47:54

mean I kind of manage this stuff

47:56

so that it changes when it needs

47:58

to or gets you know You know, interaction

48:01

happens when it needs to.

48:03

I don't know that I

48:05

think of them as all

48:08

that different, right? They all

48:10

more or less use the

48:12

same mechanisms or am I

48:15

missing something? Well, let me

48:17

put it this way. What

48:20

I'm seeing a lot are

48:22

basically people dealing with this

48:24

problem by effectively ignoring it.

48:27

So for example, if they

48:29

build a wholly client side

48:31

render application and just make

48:34

calls... back to the to

48:36

end point to restful endpoints

48:38

whenever they need to get

48:41

more data so they don't

48:43

need to think about how

48:45

often the data changes so

48:48

they respond quickly to client

48:50

side interactions and then whenever

48:53

they need to get you

48:55

know data from the back

48:57

end they just call a

49:00

restful API and it comes

49:02

whichever way it comes. So

49:04

effectively they respond to both

49:07

types of interactions or all

49:09

three types of interaction in

49:11

essentially the same, the exact

49:14

same way by writing event

49:16

handlers in JavaScript that handle

49:18

events. These events might be

49:21

a mouse click or these

49:23

events might be some data

49:26

arriving over the network. It's

49:28

all the same. And I

49:30

agree with you of that.

49:33

I totally don't know how

49:35

many organizations are actually dealing

49:37

with it, basically saying, you

49:40

know, I'm rendering some stuff

49:42

on the server, I'm rendering

49:44

some stuff on both sides.

49:47

By the way, I totally

49:49

don't know how many organizations

49:51

are actually using... react server

49:54

components in production, certainly in

49:56

anger, let's say. It's an

49:59

interesting question. You know, as I said,

50:01

there's a growing, you know,

50:03

it seems that NextGS is

50:06

eating the React website market,

50:08

that the majority of new

50:10

React websites are being built

50:13

using NextGS, but I have

50:15

no idea how many of

50:18

them are actually using React

50:20

Server components, certainly how many

50:22

of them are actually using

50:25

React Server components correctly. That's

50:28

a totally different question.

50:30

It's an interesting one

50:32

and I don't know

50:34

how to get this

50:36

data. How do you

50:38

think a solution to

50:40

that might come along or

50:43

might look like that

50:45

actually solves that problem

50:47

with lower friction

50:50

and greater acceptance? You

50:52

can see what both

50:55

next and a... Well, forgot

50:57

the name. There's another framework. And

50:59

they're doing data loaders that, by

51:01

the name of the data loader

51:03

function, you know on which

51:05

environment to run it. You can look

51:07

at what Quicks is doing, where you

51:09

can, there is a different, a specific

51:12

API, which is very similar, but

51:14

specific API that says, hey, this

51:16

is something that runs on the server.

51:18

Or I think it indicates of Quick,

51:21

everything is by default running on

51:23

the server. and only being loaded

51:25

to the client if needed.

51:28

And the compiler is kind

51:30

of understanding what needs

51:32

to be downloaded to the client.

51:34

I think we need to figure

51:36

out the syntax. We don't have

51:39

it today. By the way, a

51:41

syntax, as far as I can

51:43

tell, seems to me the solution that

51:45

these meta frameworks, I'll use

51:48

that term, are adopting,

51:50

seems to be RPC-based. so

51:52

that when it's it's

51:55

it's called it's

51:57

functions that when

51:59

when they are executed

52:01

on the server, it's just

52:04

a function call. But

52:06

when they're executed on

52:08

the client, it becomes

52:11

serialized automatically over the

52:13

wire. So that's the

52:16

obstruction that I'm

52:18

seeing kind of being

52:20

adopted for addressing that

52:22

issue. Now even that has

52:25

different approaches associated with it.

52:27

So both, let's say we

52:30

had General Inslee talking about

52:32

what he's doing with the

52:35

10 stack start, and he's

52:37

also using RPC, but he's

52:39

doing it in a very

52:42

different way than the way

52:44

that NextGS is using. Even

52:47

though you might say that

52:49

in both cases, it is

52:51

kind of RPC. Anyway, I want

52:53

to take you even one

52:55

step more. You know, we

52:58

talked about design systems.

53:00

You're using components

53:02

from design systems.

53:05

Sometimes those components

53:07

have a large number of

53:09

configuration options. You know,

53:12

for instance, you might have

53:14

a gallery that might have

53:16

multiple layouts. And you

53:18

might be choosing one layout or

53:20

another. And if that choice is

53:23

static, it's basically a

53:25

constant. Or even if it is

53:27

a... a choice made by slowly

53:29

changing data. Why would you

53:32

download to the browser the

53:34

full component with all

53:36

of the different options?

53:38

Why not start looking

53:40

at the values of slowly

53:43

changing data, which

53:45

after defining what is

53:47

that the depth value,

53:49

it basically become constant

53:52

data after that first

53:54

phase of rendering? And then

53:56

let's start deleting all the

53:58

unnecessary code. So

54:01

all of the other layouts of

54:03

the gallery, they don't need to

54:05

be there. All of the other

54:08

style options, they don't need to

54:10

be there. It might have, you

54:12

might have, you know, different tabs

54:15

or different, you know, screens or

54:17

different options that you can just

54:19

delete and just remove. And it

54:22

might go all the way down

54:24

to your design system that they

54:26

might have lots of very complicated

54:29

components because they need to cope

54:31

with lots and complicated situations. a

54:33

drop-down with 50 different options of

54:36

how to open a drop-down, but

54:38

they only need one. So why

54:40

would you download the browser all

54:43

of the different options? So there

54:45

is also another potential here for

54:47

lots of very aggressive optimizations that,

54:50

to be honest, no one is

54:52

doing today. Well, I think Wikimedia,

54:54

as that you mentioned, is kind

54:57

of trying to do at least

54:59

some of the stuff. Basically, it's

55:01

using a compiler. to or bundle

55:04

or smart bundler or transpiler, call

55:06

it what you will, to decide

55:08

for you which codes needs to

55:11

exist where, effectively. And then, you

55:13

know, again, if we're talking about

55:15

stuff like, like, uh... the

55:19

hotwire that Chuck mentioned before,

55:21

you know, when we spoke

55:24

about, what's it called, HDMX,

55:26

it's basically saying, why do,

55:28

why send Jason over the

55:30

wire that I need to

55:32

have smart on the client's

55:34

side to be able to

55:37

process it according to, you

55:39

know, sophisticated logic and transform

55:41

it into HDML, when I

55:43

can just send the HDML.

55:45

And to an extent, again,

55:47

React Server components are kind

55:50

of going in that direction.

55:52

They're not actually sending HDML.

55:54

They're sending virtual DOM as

55:56

it is. were

55:58

over the wire,

56:02

but it's basically

56:04

the idea of

56:06

having a generic mechanism that

56:08

transforms it into UI rather

56:10

than having to download all the

56:12

custom logic. But

56:15

think about what's happening here.

56:17

You have lots of innovation

56:19

going on around, all around,

56:21

from meta frameworks around performance

56:24

and around making your application more

56:26

efficient. Quick is doing that,

56:28

Server Components is doing that, HTMX

56:31

is doing that, and kind

56:33

of all searching for what

56:35

would be the

56:37

right obstruction when

56:39

we want to build an application

56:41

or a website, I would say that. And

56:45

add to that all

56:47

of the web concerns and

56:49

you get like a

56:51

big area of activity

56:54

just around the existing frameworks

56:56

and the existing needs. So,

57:02

given everything that we've said

57:04

so far and giving everything

57:06

that you've explained, what

57:08

is the future of frameworks? So

57:12

I think

57:14

my bet, which

57:16

is, and again, I'm far

57:18

reaching, I think we

57:20

need to add two more requirements

57:22

into the mix. I think that if

57:24

the only reason to move from

57:26

React to another framework is aesthetics

57:29

and performance, it's not good

57:31

enough. That includes the

57:33

view and svelte and

57:35

quick and everything else, and

57:37

HTMX and so on. And that's

57:39

why no one would live in

57:41

React, to be honest, because

57:43

the need is not strong enough. But

57:46

I think there are two other requirements that

57:49

are very strong. One

57:51

is to be able to consume

57:53

third party components in a way

57:55

that you are both you

57:57

and the component are safe

57:59

from one. another.

58:01

And you know, just last

58:03

summer, we had an issue

58:05

where the VS code plugins

58:07

appeared to be very, there

58:09

was a published an article

58:11

that says that a research

58:13

group managed to put a

58:15

malicious VS code plugin with

58:18

hundreds of thousands of developers.

58:20

And then you have lots

58:22

of other cases like that.

58:24

And then you're downloading, you

58:26

know, all of the plugins

58:28

on this code are potentially

58:30

malicious. And then you have

58:32

a WordPress, which is known

58:34

to be, you know, all

58:36

of the plugins to be,

58:38

not all of them, but

58:40

a lot of them to

58:42

be real problematic. And then

58:44

you have lots of other

58:46

cases like that. And then

58:48

you're downloading free NPM across

58:50

your company, you know, all

58:52

around, talking about enterprises. you

58:54

have no idea what attack

58:56

vector are going on through

58:58

NPM and it is an

59:00

attack vector to get a

59:02

certain version of library to

59:04

be legit and then the

59:06

next one a minor version

59:08

to have a some vulnerability

59:10

or even some attack and

59:13

you just download it using

59:15

your code in your application

59:17

and you're exposed to it.

59:19

So what if I can

59:21

give you a framework? I'm

59:23

not saying that I can

59:25

give you that. But what

59:27

if the future framework would

59:29

protect you from that? automatically.

59:31

You know, that's one example.

59:33

But can a framework really

59:35

do that? Doesn't that need

59:37

to be solved at the

59:39

platform level? Or at least,

59:41

or at least have, you

59:43

know, for the platform to

59:45

provide building blocks that the

59:47

frameworks can then use to

59:49

provide a realistic solution to

59:51

stuff like that? I think

59:53

you're asking the wrong question.

59:55

The right question is... If

59:57

someone will make something like

59:59

that will be able to

1:00:01

create a framework that is such

1:00:04

a new requirement working within it

1:00:06

in some way and people are

1:00:08

innovative they'll find a way

1:00:10

for instance that that would be a

1:00:12

reason to move frameworks ending

1:00:14

two of the requirements that

1:00:17

they can put on the table

1:00:19

for frameworks to challenge that would

1:00:21

challenge our existing frameworks

1:00:23

is one the security

1:00:25

and the second one is designed

1:00:27

to code those are the two ones because

1:00:30

we both of either one

1:00:32

of those will challenge

1:00:35

everything we have today

1:00:37

in a significant

1:00:39

way. So it's

1:00:41

interesting because look so

1:00:44

for example the quick

1:00:46

gang made a bet

1:00:48

that that getting a

1:00:51

more performance solution would

1:00:53

get people to switch

1:00:56

and so far hasn't

1:00:58

really happened, certainly not

1:01:00

en masse. Whether or

1:01:03

not people will switch

1:01:05

for that, it's, you

1:01:07

know, maybe I have no

1:01:09

insight. But that's the

1:01:12

point. You know, when

1:01:14

the only thing

1:01:16

you're comparing

1:01:18

are non-functional,

1:01:20

it's very hard to

1:01:22

get someone to switch.

1:01:25

you have to be really, really

1:01:27

better and in a really pain

1:01:29

point. When you're starting to

1:01:31

move to eater, you know, functionals

1:01:34

and for a framework, allowing

1:01:36

designers to work in

1:01:38

a different way, that's a

1:01:40

functional thing. It changes the

1:01:42

old DNA of your framework.

1:01:44

Or when solving the big

1:01:46

problem like security, and

1:01:49

your security team is like,

1:01:51

hey, a dev team, you know, we can...

1:01:53

drop all of that a million dollar

1:01:55

deal of code scanning that we're doing

1:01:57

all the time to make sure we're all

1:02:00

of your NPM dependencies are working

1:02:02

and just use a secure

1:02:04

framework, then again, no one

1:02:06

knows what the future is

1:02:08

going to be. But my

1:02:11

bet is that a future

1:02:13

framework will not be just

1:02:15

about aesthetics and better performance.

1:02:17

There is going to be

1:02:19

some other need, some other

1:02:21

requirement or some other problem

1:02:24

that it solves on top

1:02:26

of... all of the existing

1:02:28

problems. It might be security,

1:02:30

might be designed to code,

1:02:32

might be something else. I

1:02:35

don't know. So I'll kind

1:02:37

of inverse your statement. What

1:02:39

you're saying is that there

1:02:41

are a couple of hard

1:02:43

problems that we need to

1:02:45

be solving that fall under

1:02:48

the umbrella term web essentials.

1:02:50

Current existing frameworks and even

1:02:52

meta frameworks are not. either

1:02:54

are not solving these problems

1:02:56

or are not sufficiently solving

1:02:58

these problems, something will come

1:03:01

along that will, and you

1:03:03

want to call that the

1:03:05

future framework. I would say

1:03:07

that with learning of the

1:03:09

aesthetics of our current frameworks,

1:03:11

that would probably be our

1:03:14

next big framework. I

1:03:19

would also very much, by the

1:03:21

way, like to have a link

1:03:23

to that list of web essentials,

1:03:25

by the way. I'll send it

1:03:27

for you. I think I edited

1:03:30

the react next presentation I did

1:03:32

last year. But I'll send it

1:03:34

to you. Okay. That'll be great.

1:03:36

I'll look at that presentation as

1:03:38

well. I think I did, but

1:03:41

I don't remember off the top

1:03:43

of my head right now. Yeah,

1:03:45

we're getting toward the end of

1:03:47

our scheduled time and I have

1:03:49

to go soon. So is there

1:03:52

some kind of overriding point that

1:03:54

you want to make or some

1:03:56

conclusion that you want to give

1:03:58

us? You all? I

1:04:01

think, I would say that there

1:04:03

is, we are at a

1:04:06

point where something is

1:04:08

going to happen with

1:04:10

web frameworks. You

1:04:12

know, when you look at

1:04:14

the, when you want to

1:04:17

predict the future, you

1:04:19

look at the history.

1:04:21

And, you know, our

1:04:23

web frameworks, you know,

1:04:25

age one was in 1995,

1:04:28

several rendering, age 1.

1:04:30

with J quarry quarry,

1:04:32

quarry, age two was with

1:04:34

angular react around 2010, and

1:04:37

then the metaphragm works and

1:04:39

the Edless CMS systems 2016,

1:04:41

that kind of the 2.5 age. And now

1:04:44

there's all kinds of

1:04:46

different innovations and ideas

1:04:48

floating around trying to

1:04:50

make something new. And at the same

1:04:52

time, we'll move in from a

1:04:55

non-regulated market to

1:04:57

highly regulated market. And

1:04:59

on the same time with AI coming

1:05:01

into the mix, and there is going

1:05:04

to be another something that is

1:05:06

going to challenge the internet

1:05:08

with AI. By the way, it's not going

1:05:10

to replace anything. It's just

1:05:12

going to be another distribution

1:05:15

channel based on AI that's going

1:05:17

to be a company in web and

1:05:19

mobile and social. So with all

1:05:21

of that together, something big is

1:05:24

going to happen with web

1:05:26

frameworks. What is it? I think that

1:05:28

is the big question. But I

1:05:30

can promise you is that it's not

1:05:32

anything like the frameworks we

1:05:34

have today. It's not going

1:05:36

to be just aesthetics and

1:05:39

a little bit better performance.

1:05:41

It's going to be something big.

1:05:43

All right, cool. Let's go ahead to

1:05:45

our picks. So one game that

1:05:47

my family's played a bit lately

1:05:50

is called the crew, mission deep

1:05:52

sea. Now I've picked the crew

1:05:54

before, that was the Quest for

1:05:56

Planet Nine. They're

1:05:58

effectively the

1:06:00

same, the difference is that with

1:06:02

the crew, the deep sea version,

1:06:05

what you wind up doing is

1:06:07

you still have the missions, right?

1:06:09

So it still gives you a

1:06:12

handicap of some kind. You can't,

1:06:14

you have to do things in

1:06:16

sort of order or, right, you

1:06:19

do so many missions. The difference

1:06:21

is that with the deep sea

1:06:23

mission, the missions you actually flip.

1:06:26

cards over just like you did

1:06:28

in the Quest for Planet 9,

1:06:30

but they can be anything from

1:06:33

you have to take two cards

1:06:35

of this color and two cards

1:06:37

of that color. Or you, I

1:06:40

mean, there are all kinds of

1:06:42

things. Whereas with the original version,

1:06:44

you flip it over and you'd

1:06:47

have to take that card and

1:06:49

then you had little tiles you'd

1:06:51

put on them. You have to

1:06:54

do this one first and this

1:06:56

one last. or you have to

1:06:58

do these three in order, or

1:07:01

you have to do this one

1:07:03

first, and the next two in

1:07:05

order after that, and then this

1:07:08

one has to be last, or

1:07:10

things like that. So, and it's

1:07:12

trick-taking. So, anyway, it's pretty simple

1:07:15

and straightforward as far as all

1:07:17

that goes. 2.04. So

1:07:19

it's right around casual gamer. You

1:07:22

could pick it up and have

1:07:24

fun with it. I like playing

1:07:26

these games with four people. You

1:07:28

can play three to five and

1:07:31

it's not bad at three or

1:07:33

five, but anyway, it's a fun

1:07:35

game. So I'm gonna pick that

1:07:37

for my pick. My wife and

1:07:39

I watched a movie this week

1:07:42

called Homestead. Let me get a

1:07:44

link for this and put it

1:07:46

in the... in the comments, but

1:07:48

we watched a movie called Homestead

1:07:51

and it's so essentially the premise

1:07:53

of the show if you go

1:07:55

watch the the trailer this is

1:07:57

about what you'll get from it.

1:08:00

There's a nuclear bomb

1:08:02

that goes off in California,

1:08:05

in Southern California,

1:08:07

and then there are other

1:08:09

terrorist attacks. It's a little

1:08:12

fuzzy on it, but the

1:08:14

just I got was that

1:08:16

there are major power outages.

1:08:18

The power grid goes out

1:08:20

on the East Coast of the

1:08:22

United States. And so,

1:08:24

there's this homestead,

1:08:26

essentially, it's some land. I

1:08:29

kind of gathered it was

1:08:31

in Montana, but I'm not sure

1:08:33

on that. But anyway, this guy

1:08:35

hires an ex-green buret to

1:08:38

put together a security

1:08:40

team just in case there's

1:08:42

kind of a worldwide catastrophe

1:08:45

and he needs to protect

1:08:47

his area and he's like

1:08:49

this uber-prepper, right? So they

1:08:51

have medical supplies and... you

1:08:54

know they they grow stuff on their

1:08:56

property and all kinds of stuff like

1:08:58

that and so you know this catastrophe

1:09:01

hits and so this guy

1:09:03

you know basically grabs his

1:09:05

family and heads up to where

1:09:07

this this homestead is and they

1:09:09

you know they they set things up and

1:09:11

or protecting the homestead

1:09:13

kind of thing it was really

1:09:15

good and then when we watched

1:09:17

it afterwards so we were part

1:09:19

of the angel guild which is

1:09:22

Angel Studios is the one that

1:09:24

put it out Angel Studios also

1:09:26

did the chosen and a bunch of

1:09:29

other movies that I've picked They

1:09:31

turned it into a series and

1:09:33

so we actually watched the first

1:09:35

episode of the series too and it's

1:09:37

pretty good. So I'm gonna pick that

1:09:40

if that's kind of your cup

1:09:42

of tea Kind of the it

1:09:44

kind of walks you through the

1:09:46

apocalypse and anyway, it's it's really

1:09:48

awesome. So I've been enjoying that

1:09:50

and Talk about the apocalypse.

1:09:53

I looked I've seen the

1:09:55

serious a Van Helsing recently.

1:09:58

Uh-huh, which is a you

1:10:00

know another adaptation of

1:10:02

the vampires taking over America

1:10:04

and but it's you

1:10:06

know it's very very fun

1:10:08

but you know my

1:10:11

pick are actually going to

1:10:13

be different a different

1:10:15

movie I would go with

1:10:17

themselves which is a

1:10:19

movie about a princess that

1:10:22

is you know basically

1:10:24

it's a common girl that

1:10:26

is a princess chosen

1:10:28

heir to be his wife

1:10:30

and it's like a

1:10:32

fairy tale story and then

1:10:35

after the marriage he

1:10:37

kinds of throws her under

1:10:39

into a pit to

1:10:41

be sacrificed to a dragon

1:10:43

and then it kinds

1:10:46

of goes off rails and

1:10:48

becomes a very different

1:10:50

movie which you know one

1:10:52

thing that actually I

1:10:54

liked about it is that

1:10:56

first it's very very

1:10:59

different and second it doesn't

1:11:01

go with the regular

1:11:03

style of the prince saves

1:11:05

the princess it actually

1:11:07

goes to other around which

1:11:09

is really encouraging and

1:11:12

really fresh I would say

1:11:14

it's for a game

1:11:16

is okay to choose a

1:11:18

cards game you know

1:11:20

there is a game that

1:11:23

really I really enjoy

1:11:25

a plane with my kids

1:11:27

called the Queens and

1:11:29

it actually starts becoming a

1:11:31

recurring idea of Queens

1:11:33

and Princess but it's actually

1:11:36

it's a it's a

1:11:38

game where there are a

1:11:40

there are 10 Queens

1:11:42

or so it's a 16

1:11:44

Queens on the board

1:11:47

which are upside down don't

1:11:49

know which card is

1:11:51

which Queen oh sleeping Queens

1:11:53

sleeping Queens yeah yeah

1:11:55

I played this with my

1:11:57

kids it's a fun It's

1:12:00

a really fun one and

1:12:02

my kids are very

1:12:04

enthusiastic about that and

1:12:06

very passionate so that's you

1:12:09

know just great game. Yeah it's

1:12:11

it's very approachable so my

1:12:13

daughter is nine now but

1:12:15

I think we got it when

1:12:17

she was like six or seven

1:12:20

and it's definitely

1:12:22

approachable for younger

1:12:24

kids but yeah there's enough

1:12:26

meat to the game to where adults

1:12:29

that enjoy playing with it. It's not

1:12:31

when I would pick to play with

1:12:33

my friends, but with my kids definitely.

1:12:35

And board game geek weights it at

1:12:38

1.05. So it's got fairly simple mechanics.

1:12:40

I think it plays two to five

1:12:42

people too. That's what it says here.

1:12:44

And yeah, terrific game. Yeah, it's a great game.

1:12:47

And you know, my kids are 9 and 11,

1:12:49

which is just the right age. And it works

1:12:51

wonders with them. Yeah. I had somebody

1:12:54

ask me ask me on, I think it

1:12:56

was Ruby robes. Ruby robes last week.

1:12:58

They asked me what games

1:13:00

I recommend for kids and

1:13:02

I listed a whole bunch there,

1:13:05

but there are a ton of

1:13:07

just terrific games you

1:13:09

can play with kids. Yeah, I

1:13:11

wonder if Board Game Geek

1:13:14

actually has a list for kids.

1:13:16

I know they have categories

1:13:18

here, here we go, categories.

1:13:21

Yeah, I actually never tried

1:13:23

that board game, board game,

1:13:25

board game. Yeah, board game geek.

1:13:28

So I'll just do that as a

1:13:30

pick and I'll just throw it out

1:13:32

as well. So board game geek,

1:13:34

the way that it works is

1:13:36

it's essentially kind of this database

1:13:38

of board games. And they do

1:13:40

board games and card games. And

1:13:42

then what you can do is they have

1:13:45

forums as well. So if you, a

1:13:47

lot of times I'm on board game geek

1:13:49

because I'm going, what? You

1:13:52

know what what what is the I

1:13:54

have a question about a mechanic in

1:13:56

a game, right? So they didn't

1:13:58

they didn't clarify And so,

1:14:00

you know, you know, I

1:14:02

need to know, hey, how

1:14:04

does this work or that

1:14:07

working? I have to say

1:14:09

the director I'm looking at

1:14:11

is whiskey base. And it's

1:14:13

a little bit different. It's

1:14:15

a kind of give ratings

1:14:17

for different whiskey drums. And

1:14:19

so you know, you can

1:14:21

know which spirit to get,

1:14:23

especially when you go to

1:14:25

more unique ones and more

1:14:27

little ones. Just have a

1:14:29

Glenn Gary 29 on its

1:14:31

way to my house, which

1:14:33

is supposed to be 95,

1:14:35

15 cone whiskey base, which

1:14:38

is kind of amazing. We'll

1:14:40

see how it goes. Very

1:14:42

cool. Yeah, I don't drink

1:14:44

alcohol at all. But yeah,

1:14:46

I mean, we used to

1:14:48

have somebody who would pick

1:14:50

beers every episode, so. Right,

1:14:52

it's like, hey, you have

1:14:54

to try this one and

1:14:56

sometimes they were local bruise

1:14:58

and sometimes yeah, I could

1:15:00

definitely see myself getting into

1:15:02

that if that was my

1:15:04

My thing but yeah Very

1:15:06

cool. Well, you have is

1:15:09

if people want to check

1:15:11

out Wicks Enterprise or they

1:15:13

want to see what you're

1:15:15

working on or catch you

1:15:17

at a conference or anything.

1:15:19

How do they find you?

1:15:21

And you know, just give

1:15:23

me a call. You know,

1:15:25

reach out to me on

1:15:27

Twitter or LinkedIn. I'm there.

1:15:29

I'll be up to up

1:15:31

anyone. Sounds good. All right.

1:15:33

Well, I'm going to go

1:15:35

ahead and wrap us up.

1:15:37

Thanks for coming. Oh, thank

1:15:40

you for having me here.

1:15:42

Let's be super fun. Yeah.

1:15:44

Until next time, folks. Maxa.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features