Yet another framework? | Software Architecture Conference
0 views
Aug 6, 2025
As an author of new and unrecognized framework I'd like to talk about missing patterns from the perspective of MVC. Hybridized microservices, event-driven architecture, serverless architecture, and domain-driven design included. 🔗 Conference Website: https://softwarearchitecture.live 📺 CSharp TV - Dev Streaming Destination http://csharp.tv 🌎 C# Corner - Community of Software and Data Developers https://www.c-sharpcorner.com #CSharpTV #CSharpCorner #CSharp #SoftwareArchitectureConf
View Video Transcript
0:03
uh okay guys hello uh I just uh created
0:07
uh okay guys hello uh I just uh created
0:07
uh okay guys hello uh I just uh created a framework in year and a half of uh
0:11
a framework in year and a half of uh
0:11
a framework in year and a half of uh working um just by myself uh without
0:14
working um just by myself uh without
0:14
working um just by myself uh without investment and just uh uh focusing on it
0:18
investment and just uh uh focusing on it
0:18
investment and just uh uh focusing on it a full
0:19
a full
0:19
a full time and then I would like to present
0:22
time and then I would like to present
0:22
time and then I would like to present the results the approach is to level up
0:25
the results the approach is to level up
0:25
the results the approach is to level up uh don't repeat yourself approach and
0:27
uh don't repeat yourself approach and
0:27
uh don't repeat yourself approach and convention over configuration and those
0:30
convention over configuration and those
0:30
convention over configuration and those approaches uh really um changed uh uh
0:34
approaches uh really um changed uh uh
0:34
approaches uh really um changed uh uh how we how we are making a web
0:38
how we how we are making a web
0:38
how we how we are making a web applications since um race in
0:41
applications since um race in
0:41
applications since um race in introduction and then many other
0:43
introduction and then many other
0:43
introduction and then many other Technologies were inspired by rail so
0:45
Technologies were inspired by rail so
0:45
Technologies were inspired by rail so it's it's uh it was huge impact uh for
0:49
it's it's uh it was huge impact uh for
0:49
it's it's uh it was huge impact uh for everyone uh and I was thinking this is
0:52
everyone uh and I was thinking this is
0:52
everyone uh and I was thinking this is still not enough and we can uh iterate
0:55
still not enough and we can uh iterate
0:55
still not enough and we can uh iterate made another make another iteration on
0:58
made another make another iteration on
0:58
made another make another iteration on top of uh those
1:00
top of uh those
1:00
top of uh those conventions and if you would like to
1:02
conventions and if you would like to
1:02
conventions and if you would like to know more about me I have a a nice
1:06
know more about me I have a a nice
1:06
know more about me I have a a nice website which which is exactly for this
1:09
website which which is exactly for this
1:09
website which which is exactly for this purpose mad. maniac.
1:13
purpose mad. maniac.
1:13
purpose mad. maniac. proo and then I will skip it because we
1:15
proo and then I will skip it because we
1:15
proo and then I will skip it because we have only 35 minutes and we should
1:17
have only 35 minutes and we should
1:17
have only 35 minutes and we should discuss more or less a framework which
1:20
discuss more or less a framework which
1:20
discuss more or less a framework which is quite a wide subject so the
1:23
is quite a wide subject so the
1:23
is quite a wide subject so the presentation will be like to make uh
1:26
presentation will be like to make uh
1:26
presentation will be like to make uh space in your heads for another
1:27
space in your heads for another
1:27
space in your heads for another framework just to convince you you that
1:29
framework just to convince you you that
1:29
framework just to convince you you that there is is still uh lots of room to for
1:32
there is is still uh lots of room to for
1:32
there is is still uh lots of room to for improvement then present some parts of
1:34
improvement then present some parts of
1:34
improvement then present some parts of the framework and uh uh I will try also
1:38
the framework and uh uh I will try also
1:38
the framework and uh uh I will try also to tell some stories and uh motivate you
1:41
to tell some stories and uh motivate you
1:41
to tell some stories and uh motivate you to participate in the
1:44
to participate in the
1:44
to participate in the project uh so by the way I uh I have
1:48
project uh so by the way I uh I have
1:48
project uh so by the way I uh I have some uh issues with uh presenting it on
1:51
some uh issues with uh presenting it on
1:51
some uh issues with uh presenting it on Ruby conferences so far I was invited to
1:55
Ruby conferences so far I was invited to
1:55
Ruby conferences so far I was invited to Africa and I made a presentation there
1:58
Africa and I made a presentation there
1:58
Africa and I made a presentation there and uh there is I had really great uh
2:02
and uh there is I had really great uh
2:02
and uh there is I had really great uh feedback and uh actually I could found
2:05
feedback and uh actually I could found
2:05
feedback and uh actually I could found immediately a pro community in Nairobi
2:11
immediately a pro community in Nairobi
2:11
immediately a pro community in Nairobi so on the blog of the conference I read
2:14
so on the blog of the conference I read
2:14
so on the blog of the conference I read that uh uh the presentation I opened
2:17
that uh uh the presentation I opened
2:17
that uh uh the presentation I opened pres U the conference with today's
2:21
pres U the conference with today's
2:21
pres U the conference with today's conference was
2:24
conference was
2:24
conference was uh was the favorite of the author uh so
2:28
uh was the favorite of the author uh so
2:28
uh was the favorite of the author uh so it was two days conference lots of
2:30
it was two days conference lots of
2:30
it was two days conference lots of presentations and uh really nice uh
2:33
presentations and uh really nice uh
2:33
presentations and uh really nice uh names including the most important names
2:35
names including the most important names
2:35
names including the most important names of the uh Ruby and Ray uh uh world and
2:41
of the uh Ruby and Ray uh uh world and
2:41
of the uh Ruby and Ray uh uh world and it was it was really well received to
2:43
it was it was really well received to
2:43
it was it was really well received to days I I had lots of uh feedback and
2:46
days I I had lots of uh feedback and
2:46
days I I had lots of uh feedback and excited developers wanted wanted to use
2:49
excited developers wanted wanted to use
2:49
excited developers wanted wanted to use it so I will start my presentation with
2:52
it so I will start my presentation with
2:52
it so I will start my presentation with uh the game from my childhood one of my
2:54
uh the game from my childhood one of my
2:55
uh the game from my childhood one of my favorite and while while I was playing
2:57
favorite and while while I was playing
2:57
favorite and while while I was playing it I always wanted to play with the big
3:01
it I always wanted to play with the big
3:01
it I always wanted to play with the big guys uh instead of the one of three main
3:05
guys uh instead of the one of three main
3:05
guys uh instead of the one of three main characters and when I was already not
3:07
characters and when I was already not
3:07
characters and when I was already not interested in games I I don't know where
3:10
interested in games I I don't know where
3:10
interested in games I I don't know where but I read it's enough to just change
3:12
but I read it's enough to just change
3:12
but I read it's enough to just change the file name from big guy uh next file
3:16
the file name from big guy uh next file
3:16
the file name from big guy uh next file extension into the dwarf and then we
3:19
extension into the dwarf and then we
3:19
extension into the dwarf and then we will be playing with a big guy and as a
3:22
will be playing with a big guy and as a
3:22
will be playing with a big guy and as a program is I I was just mind loan how
3:25
program is I I was just mind loan how
3:25
program is I I was just mind loan how well it was designed that the F was an
3:28
well it was designed that the F was an
3:28
well it was designed that the F was an object and you can just rename a file
3:31
object and you can just rename a file
3:31
object and you can just rename a file and then everything works and and then I
3:33
and then everything works and and then I
3:33
and then everything works and and then I realize whatever object you see in the
3:35
realize whatever object you see in the
3:35
realize whatever object you see in the game uh you just can just rename it and
3:38
game uh you just can just rename it and
3:38
game uh you just can just rename it and it will be reactively uh playing the
3:40
it will be reactively uh playing the
3:40
it will be reactively uh playing the game even items they will react as much
3:45
game even items they will react as much
3:45
game even items they will react as much as possible for Whatever item it is just
3:48
as possible for Whatever item it is just
3:48
as possible for Whatever item it is just by renaming the files and it's
3:51
by renaming the files and it's
3:51
by renaming the files and it's 189 uh I guess they had some framework
3:54
189 uh I guess they had some framework
3:54
189 uh I guess they had some framework for making games as they were probably
3:56
for making games as they were probably
3:56
for making games as they were probably making lots of them but I really
3:59
making lots of them but I really
3:59
making lots of them but I really appreciate and from the nowadays
4:01
appreciate and from the nowadays
4:01
appreciate and from the nowadays perspective I really see that we went
4:04
perspective I really see that we went
4:04
perspective I really see that we went far into different direction when where
4:07
far into different direction when where
4:07
far into different direction when where everything needs to be configured uh but
4:10
everything needs to be configured uh but
4:11
everything needs to be configured uh but let's move on and let let's see uh the
4:13
let's move on and let let's see uh the
4:13
let's move on and let let's see uh the slide with tradeoffs which means uh uh
4:17
slide with tradeoffs which means uh uh
4:17
slide with tradeoffs which means uh uh we believe that we should sacrifice
4:20
we believe that we should sacrifice
4:20
we believe that we should sacrifice something to achieve something else and
4:23
something to achieve something else and
4:23
something to achieve something else and uh sometimes it is like this but in Ruby
4:27
uh sometimes it is like this but in Ruby
4:27
uh sometimes it is like this but in Ruby uh I've seen for many years articles
4:30
uh I've seen for many years articles
4:30
uh I've seen for many years articles about the
4:31
about the
4:31
about the delegation and maybe it will be not
4:33
delegation and maybe it will be not
4:33
delegation and maybe it will be not familiar to you how it is implemented in
4:35
familiar to you how it is implemented in
4:35
familiar to you how it is implemented in Ruby but there is a ruby method which is
4:38
Ruby but there is a ruby method which is
4:38
Ruby but there is a ruby method which is called method missing and it is called
4:40
called method missing and it is called
4:40
called method missing and it is called at the end of searching for all the
4:42
at the end of searching for all the
4:42
at the end of searching for all the names uh of the method which you try to
4:45
names uh of the method which you try to
4:45
names uh of the method which you try to use and if it will not hit any of them
4:47
use and if it will not hit any of them
4:47
use and if it will not hit any of them then at the end you just call method
4:49
then at the end you just call method
4:49
then at the end you just call method missing and then you just
4:52
missing and then you just
4:52
missing and then you just handle uh the method which were were not
4:56
handle uh the method which were were not
4:56
handle uh the method which were were not found and that's how delegate always
4:58
found and that's how delegate always
4:58
found and that's how delegate always implemented you just delegate uh methods
5:01
implemented you just delegate uh methods
5:01
implemented you just delegate uh methods to another objects and if uh if you
5:04
to another objects and if uh if you
5:04
to another objects and if uh if you delegate all of them so it hits method
5:07
delegate all of them so it hits method
5:07
delegate all of them so it hits method missing and then it it tries again on
5:10
missing and then it it tries again on
5:10
missing and then it it tries again on another object to call this
5:12
another object to call this
5:12
another object to call this method so that's how delegation works
5:15
method so that's how delegation works
5:15
method so that's how delegation works but then you have articles which say
5:17
but then you have articles which say
5:17
but then you have articles which say okay but if you hard code it it will be
5:20
okay but if you hard code it it will be
5:20
okay but if you hard code it it will be much faster and uh and some people
5:22
much faster and uh and some people
5:22
much faster and uh and some people believe that meta programming is uh is
5:25
believe that meta programming is uh is
5:25
believe that meta programming is uh is just slow and this is one of examples
5:30
just slow and this is one of examples
5:30
just slow and this is one of examples uh but in real world you can just
5:34
uh but in real world you can just
5:34
uh but in real world you can just connect two uh approaches when you hit
5:38
connect two uh approaches when you hit
5:38
connect two uh approaches when you hit first time the method missing you just
5:40
first time the method missing you just
5:40
first time the method missing you just then um uh meta programming L you hard
5:45
then um uh meta programming L you hard
5:45
then um uh meta programming L you hard code the method so it works since the
5:47
code the method so it works since the
5:47
code the method so it works since the first hit it works exactly the same way
5:51
first hit it works exactly the same way
5:51
first hit it works exactly the same way as it would work uh with hardcoding
5:54
as it would work uh with hardcoding
5:54
as it would work uh with hardcoding everything by your by hand so you still
5:56
everything by your by hand so you still
5:57
everything by your by hand so you still have nice DSL and and the same speed of
6:00
have nice DSL and and the same speed of
6:00
have nice DSL and and the same speed of executing the code but it's a bit one
6:04
executing the code but it's a bit one
6:04
executing the code but it's a bit one iteration more of thinking about the
6:06
iteration more of thinking about the
6:06
iteration more of thinking about the problem which which I never seen
6:09
problem which which I never seen
6:09
problem which which I never seen happen uh then one uh thing which I have
6:14
happen uh then one uh thing which I have
6:14
happen uh then one uh thing which I have lesson which I remember from my
6:16
lesson which I remember from my
6:16
lesson which I remember from my childhood I think I learned a lot when I
6:17
childhood I think I learned a lot when I
6:17
childhood I think I learned a lot when I was a kid
6:20
was a kid
6:20
was a kid uh the best time
6:22
uh the best time
6:23
uh the best time ever and uh as you see there is a game
6:26
ever and uh as you see there is a game
6:26
ever and uh as you see there is a game broken telephone game which I remember
6:27
broken telephone game which I remember
6:27
broken telephone game which I remember from my kindergarden
6:29
from my kindergarden
6:30
from my kindergarden and I can tell you that uh uh it there
6:34
and I can tell you that uh uh it there
6:34
and I can tell you that uh uh it there is a message for developers like the as
6:37
is a message for developers like the as
6:37
is a message for developers like the as much as you will repeat the message at
6:39
much as you will repeat the message at
6:39
much as you will repeat the message at the end it it will be malformed even if
6:42
the end it it will be malformed even if
6:42
the end it it will be malformed even if you try to not malform it on on the way
6:46
you try to not malform it on on the way
6:46
you try to not malform it on on the way it is a huge CH change that the input
6:48
it is a huge CH change that the input
6:48
it is a huge CH change that the input will be after a few pass unnecessary
6:52
will be after a few pass unnecessary
6:52
will be after a few pass unnecessary passages it will be different than the
6:55
passages it will be different than the
6:55
passages it will be different than the output and that's a good lesson uh for
6:59
output and that's a good lesson uh for
6:59
output and that's a good lesson uh for for actually most of the kids at least
7:03
for actually most of the kids at least
7:03
for actually most of the kids at least in Poland when where I was in the
7:05
in Poland when where I was in the
7:05
in Poland when where I was in the kindergarten uh then I'd like to tell
7:08
kindergarten uh then I'd like to tell
7:08
kindergarten uh then I'd like to tell you a story just to uh rest a bit from
7:10
you a story just to uh rest a bit from
7:10
you a story just to uh rest a bit from the uh technological uh things I I have
7:15
the uh technological uh things I I have
7:15
the uh technological uh things I I have my friend Andrew which is quite famous
7:18
my friend Andrew which is quite famous
7:19
my friend Andrew which is quite famous in in Ruby world he is evangelist of
7:24
in in Ruby world he is evangelist of
7:24
in in Ruby world he is evangelist of domain driven development and I was
7:26
domain driven development and I was
7:26
domain driven development and I was showing him my framework say asking him
7:29
showing him my framework say asking him
7:29
showing him my framework say asking him for for
7:30
for for
7:30
for for opinions and uh and then he replied me
7:34
opinions and uh and then he replied me
7:34
opinions and uh and then he replied me with his voice messages and I was
7:36
with his voice messages and I was
7:36
with his voice messages and I was thinking that it would be funny to reply
7:38
thinking that it would be funny to reply
7:38
thinking that it would be funny to reply him with a
7:40
him with a
7:40
him with a presentation uh so uh let's present also
7:45
presentation uh so uh let's present also
7:45
presentation uh so uh let's present also for him right now uh what race
7:48
for him right now uh what race
7:48
for him right now uh what race introduced uh kind of introduced this
7:51
introduced uh kind of introduced this
7:51
introduced uh kind of introduced this model view controller for uh web
7:55
model view controller for uh web
7:55
model view controller for uh web Frameworks uh what it exactly means is
7:58
Frameworks uh what it exactly means is
7:58
Frameworks uh what it exactly means is uh it is router which points to
8:01
uh it is router which points to
8:01
uh it is router which points to controller which uses models to collect
8:03
controller which uses models to collect
8:03
controller which uses models to collect data for views and then when we send it
8:05
data for views and then when we send it
8:05
data for views and then when we send it to front to to even operate more uh with
8:10
to front to to even operate more uh with
8:10
to front to to even operate more uh with with it with assets so-called in the
8:12
with it with assets so-called in the
8:12
with it with assets so-called in the Ruby framework in ra framework uh which
8:16
Ruby framework in ra framework uh which
8:16
Ruby framework in ra framework uh which will be just uh JavaScript Styles and
8:20
will be just uh JavaScript Styles and
8:20
will be just uh JavaScript Styles and images these are assets so this is like
8:25
images these are assets so this is like
8:25
images these are assets so this is like post processing of what we did already
8:28
post processing of what we did already
8:28
post processing of what we did already uh on clients
8:30
uh on clients
8:30
uh on clients side but I would like you to to notice
8:32
side but I would like you to to notice
8:32
side but I would like you to to notice MVC part which was invented much earlier
8:36
MVC part which was invented much earlier
8:36
MVC part which was invented much earlier maybe it meant a bit something different
8:38
maybe it meant a bit something different
8:38
maybe it meant a bit something different it's hard to say I think in in 70s in
8:41
it's hard to say I think in in 70s in
8:42
it's hard to say I think in in 70s in Zero's lab and uh what is important to
8:45
Zero's lab and uh what is important to
8:45
Zero's lab and uh what is important to notice about it and it is now nowadays
8:49
notice about it and it is now nowadays
8:49
notice about it and it is now nowadays it was copied by many different
8:52
it was copied by many different
8:52
it was copied by many different Frameworks from many different
8:53
Frameworks from many different
8:53
Frameworks from many different Technologies the MVC
8:56
Technologies the MVC
8:56
Technologies the MVC pattern uh so it is lesson for everyone
8:59
pattern uh so it is lesson for everyone
8:59
pattern uh so it is lesson for everyone that but MVC was invented when uh
9:03
that but MVC was invented when uh
9:03
that but MVC was invented when uh authors were thinking in the world of
9:06
authors were thinking in the world of
9:06
authors were thinking in the world of personal computers mostly without the
9:09
personal computers mostly without the
9:09
personal computers mostly without the network so everything was executed
9:11
network so everything was executed
9:11
network so everything was executed locally and whatever you wanted to
9:14
locally and whatever you wanted to
9:14
locally and whatever you wanted to execute you had the rights to execute it
9:16
execute you had the rights to execute it
9:16
execute you had the rights to execute it so application was much much simpler
9:20
so application was much much simpler
9:20
so application was much much simpler than what we do with MVC partn and
9:22
than what we do with MVC partn and
9:22
than what we do with MVC partn and everything which is more complicated is
9:24
everything which is more complicated is
9:24
everything which is more complicated is not handled by the framework so uh we
9:27
not handled by the framework so uh we
9:27
not handled by the framework so uh we have uh understanding it we can say that
9:30
have uh understanding it we can say that
9:30
have uh understanding it we can say that the controller has a dual nature and one
9:33
the controller has a dual nature and one
9:33
the controller has a dual nature and one one part of it are just crude methods
9:36
one part of it are just crude methods
9:36
one part of it are just crude methods which are quite generic new create index
9:39
which are quite generic new create index
9:39
which are quite generic new create index show update destroy whatever you call it
9:42
show update destroy whatever you call it
9:42
show update destroy whatever you call it in your framework these are just
9:44
in your framework these are just
9:44
in your framework these are just standard operations on the collection
9:47
standard operations on the collection
9:47
standard operations on the collection and then you have um your custom methods
9:51
and then you have um your custom methods
9:51
and then you have um your custom methods which are not generic and some people
9:54
which are not generic and some people
9:54
which are not generic and some people will just not call it a controller they
9:57
will just not call it a controller they
9:57
will just not call it a controller they start calling it a service this is just
9:59
start calling it a service this is just
9:59
start calling it a service this is just a custom logic but uh originally in
10:04
a custom logic but uh originally in
10:04
a custom logic but uh originally in rails it is just name a controller all
10:07
rails it is just name a controller all
10:07
rails it is just name a controller all of this all of these so for example by
10:10
of this all of these so for example by
10:10
of this all of these so for example by putting more method in into one
10:11
putting more method in into one
10:12
putting more method in into one controller more services into one
10:14
controller more services into one
10:14
controller more services into one controller uh it becames unclear because
10:18
controller uh it becames unclear because
10:18
controller uh it becames unclear because one method can require some uh
10:20
one method can require some uh
10:20
one method can require some uh additional libraries which you include
10:22
additional libraries which you include
10:22
additional libraries which you include and then you have multiple services in
10:25
and then you have multiple services in
10:25
and then you have multiple services in One controller and all of them have
10:27
One controller and all of them have
10:27
One controller and all of them have different dependencies so after all when
10:30
different dependencies so after all when
10:30
different dependencies so after all when you open the file you don't know where
10:32
you open the file you don't know where
10:32
you open the file you don't know where you can find which part of logic and
10:35
you can find which part of logic and
10:35
you can find which part of logic and this problem doesn't exist when you have
10:37
this problem doesn't exist when you have
10:37
this problem doesn't exist when you have just one uh service for one method and
10:40
just one uh service for one method and
10:40
just one uh service for one method and whatever we need for that is really
10:41
whatever we need for that is really
10:41
whatever we need for that is really clearly visible what the service is
10:44
clearly visible what the service is
10:44
clearly visible what the service is using another thing is uh just making by
10:49
using another thing is uh just making by
10:49
using another thing is uh just making by hand uh semi manually those generic uh
10:54
hand uh semi manually those generic uh
10:54
hand uh semi manually those generic uh uh crud
10:56
uh crud
10:56
uh crud methods uh and they need to lots of uh
11:00
methods uh and they need to lots of uh
11:00
methods uh and they need to lots of uh uh functionality which I never seen in
11:02
uh functionality which I never seen in
11:02
uh functionality which I never seen in my life all implemented properly uh and
11:05
my life all implemented properly uh and
11:05
my life all implemented properly uh and every project tries to solve it on its
11:07
every project tries to solve it on its
11:07
every project tries to solve it on its own some things they they will solve
11:10
own some things they they will solve
11:10
own some things they they will solve well and some things they will not solve
11:12
well and some things they will not solve
11:12
well and some things they will not solve at
11:13
at
11:13
at all uh so it is really well to recognize
11:16
all uh so it is really well to recognize
11:16
all uh so it is really well to recognize that collection is a separate thing and
11:18
that collection is a separate thing and
11:18
that collection is a separate thing and and implement it properly for
11:20
and implement it properly for
11:20
and implement it properly for everyone uh one thing which I noticed
11:23
everyone uh one thing which I noticed
11:23
everyone uh one thing which I noticed already more than 10 years ago is like
11:26
already more than 10 years ago is like
11:26
already more than 10 years ago is like we don't need a rotor because I remember
11:28
we don't need a rotor because I remember
11:28
we don't need a rotor because I remember times when we uh were not using router
11:31
times when we uh were not using router
11:31
times when we uh were not using router Le let's say uh like from the example
11:36
Le let's say uh like from the example
11:36
Le let's say uh like from the example from the game uh which is not internet
11:39
from the game uh which is not internet
11:39
from the game uh which is not internet example but files were enough uh enough
11:44
example but files were enough uh enough
11:44
example but files were enough uh enough abstraction and at the beginning when I
11:47
abstraction and at the beginning when I
11:47
abstraction and at the beginning when I was called a Web Master at the late
11:50
was called a Web Master at the late
11:50
was called a Web Master at the late 90s I was using just FTP and I was
11:54
90s I was using just FTP and I was
11:54
90s I was using just FTP and I was posting index HTML files in a proper
11:56
posting index HTML files in a proper
11:56
posting index HTML files in a proper place in a proper directory and it was
11:58
place in a proper directory and it was
11:58
place in a proper directory and it was creating
11:59
creating
11:59
creating uh beautiful links for your website when
12:02
uh beautiful links for your website when
12:02
uh beautiful links for your website when you design it
12:03
you design it
12:03
you design it properly and uh the same way when I was
12:07
properly and uh the same way when I was
12:07
properly and uh the same way when I was starting with PHP many many years ago
12:10
starting with PHP many many years ago
12:10
starting with PHP many many years ago let's say more than 20 years ago it was
12:12
let's say more than 20 years ago it was
12:12
let's say more than 20 years ago it was the same I was just putting
12:14
the same I was just putting
12:14
the same I was just putting index.php in a proper place and and I
12:17
index.php in a proper place and and I
12:17
index.php in a proper place and and I need didn't need router so a router was
12:21
need didn't need router so a router was
12:21
need didn't need router so a router was uh just to make easier uh to create
12:24
uh just to make easier uh to create
12:24
uh just to make easier uh to create beautiful URLs when we were using custom
12:27
beautiful URLs when we were using custom
12:27
beautiful URLs when we were using custom user input but we can uh solve it
12:30
user input but we can uh solve it
12:30
user input but we can uh solve it another way and if you will have time I
12:33
another way and if you will have time I
12:33
another way and if you will have time I will show you how proor is solving it
12:36
will show you how proor is solving it
12:36
will show you how proor is solving it and it is really Advanced one router
12:37
and it is really Advanced one router
12:37
and it is really Advanced one router because it is handling in a simple way
12:40
because it is handling in a simple way
12:40
because it is handling in a simple way it has uh its own
12:43
it has uh its own
12:43
it has uh its own syntax uh it is solving all kinds of
12:47
syntax uh it is solving all kinds of
12:47
syntax uh it is solving all kinds of routing not only one it's all the um
12:51
routing not only one it's all the um
12:51
routing not only one it's all the um slash has slash and the classic um URL
12:56
slash has slash and the classic um URL
12:56
slash has slash and the classic um URL variables it uh contains three routers
13:00
variables it uh contains three routers
13:00
variables it uh contains three routers in one and you can just use whatever you
13:03
in one and you can just use whatever you
13:03
in one and you can just use whatever you choose from them at once and you often
13:07
choose from them at once and you often
13:07
choose from them at once and you often there is a use case for that and you
13:09
there is a use case for that and you
13:09
there is a use case for that and you have freedom to to use use it uh instead
13:13
have freedom to to use use it uh instead
13:13
have freedom to to use use it uh instead of choosing one of them or just hacking
13:15
of choosing one of them or just hacking
13:15
of choosing one of them or just hacking the second
13:16
the second
13:16
the second one not calling it a rotor
13:19
one not calling it a rotor
13:19
one not calling it a rotor then um
13:22
then um
13:22
then um so uh I have a joke here which I will
13:25
so uh I have a joke here which I will
13:25
so uh I have a joke here which I will not use it because I have no time uh I
13:29
not use it because I have no time uh I
13:29
not use it because I have no time uh I have an e egg for raise
13:32
have an e egg for raise
13:32
have an e egg for raise developers uh so the the approach here
13:35
developers uh so the the approach here
13:35
developers uh so the the approach here is to refin each layer because I I saw I
13:38
is to refin each layer because I I saw I
13:38
is to refin each layer because I I saw I see like router is has us it's really
13:41
see like router is has us it's really
13:41
see like router is has us it's really small part and has so much room for
13:43
small part and has so much room for
13:43
small part and has so much room for improvement and then I thought there is
13:46
improvement and then I thought there is
13:46
improvement and then I thought there is much more things which we could improve
13:49
much more things which we could improve
13:49
much more things which we could improve so uh as as we see by icon this is pro
13:53
so uh as as we see by icon this is pro
13:53
so uh as as we see by icon this is pro only uh feature uh distributions and
13:57
only uh feature uh distributions and
13:57
only uh feature uh distributions and it's really simple thing
13:59
it's really simple thing
13:59
it's really simple thing uh I provide origin for everyone and
14:02
uh I provide origin for everyone and
14:02
uh I provide origin for everyone and then you can clone it this is just git
14:05
then you can clone it this is just git
14:05
then you can clone it this is just git clone uh and you start your project with
14:08
clone uh and you start your project with
14:08
clone uh and you start your project with proper git clone command then you can
14:10
proper git clone command then you can
14:10
proper git clone command then you can improve the framework by yourself and as
14:14
improve the framework by yourself and as
14:14
improve the framework by yourself and as you will see later framework is uh
14:16
you will see later framework is uh
14:16
you will see later framework is uh really uh um condensed it's it's not
14:21
really uh um condensed it's it's not
14:21
really uh um condensed it's it's not like uh you will need to be Omnibus and
14:25
like uh you will need to be Omnibus and
14:25
like uh you will need to be Omnibus and uh know so much things because it's
14:27
uh know so much things because it's
14:27
uh know so much things because it's really not much code to read
14:29
really not much code to read
14:29
really not much code to read so you will be able to grasp your part
14:32
so you will be able to grasp your part
14:32
so you will be able to grasp your part you would like to improve for example
14:33
you would like to improve for example
14:33
you would like to improve for example speed let's say you would like to focus
14:36
speed let's say you would like to focus
14:36
speed let's say you would like to focus no matter what on speed and you will
14:37
no matter what on speed and you will
14:37
no matter what on speed and you will make your distribution which will be the
14:39
make your distribution which will be the
14:39
make your distribution which will be the super fast uh version with let's say
14:42
super fast uh version with let's say
14:42
super fast uh version with let's say some tradeoffs or it will be just better
14:44
some tradeoffs or it will be just better
14:44
some tradeoffs or it will be just better than the
14:46
than the
14:46
than the origin and then you have organization
14:49
origin and then you have organization
14:49
origin and then you have organization your company would like creates lots of
14:51
your company would like creates lots of
14:51
your company would like creates lots of project and then you realize in every
14:54
project and then you realize in every
14:54
project and then you realize in every project you do uh First Step all always
14:57
project you do uh First Step all always
14:57
project you do uh First Step all always the same so you just you can clone any
15:00
the same so you just you can clone any
15:00
the same so you just you can clone any of those let's say specialized one or
15:02
of those let's say specialized one or
15:02
of those let's say specialized one or the origin and create your organization
15:04
the origin and create your organization
15:04
the origin and create your organization version of of the
15:05
version of of the
15:05
version of of the framework and then you can even make a
15:09
framework and then you can even make a
15:10
framework and then you can even make a um Association of companies which uh
15:13
um Association of companies which uh
15:13
um Association of companies which uh believe that they have all of them have
15:15
believe that they have all of them have
15:15
believe that they have all of them have good practices and you can review new
15:18
good practices and you can review new
15:18
good practices and you can review new versions from origin together you can
15:21
versions from origin together you can
15:21
versions from origin together you can make changes in that or you can make you
15:23
make changes in that or you can make you
15:23
make changes in that or you can make you can just have your own group which will
15:25
can just have your own group which will
15:25
can just have your own group which will say okay we we just uh upgrade to this
15:29
say okay we we just uh upgrade to this
15:29
say okay we we just uh upgrade to this version of the framework together and we
15:31
version of the framework together and we
15:31
version of the framework together and we together verify that everything is
15:33
together verify that everything is
15:33
together verify that everything is stable because always you whatever
15:36
stable because always you whatever
15:36
stable because always you whatever technology you use you you are
15:37
technology you use you you are
15:37
technology you use you you are responsible for stability of your
15:39
responsible for stability of your
15:39
responsible for stability of your project and you should make such checks
15:42
project and you should make such checks
15:42
project and you should make such checks not just uh merch the
15:45
not just uh merch the
15:45
not just uh merch the update uh and then even as a personal
15:47
update uh and then even as a personal
15:47
update uh and then even as a personal developer as a private one uh you do
15:50
developer as a private one uh you do
15:50
developer as a private one uh you do always this you have some habits and you
15:52
always this you have some habits and you
15:52
always this you have some habits and you can make your own distribution and if
15:55
can make your own distribution and if
15:55
can make your own distribution and if you will uh if you will distribute it
15:58
you will uh if you will distribute it
15:58
you will uh if you will distribute it further or you will keep it private it's
16:01
further or you will keep it private it's
16:01
further or you will keep it private it's it's it's just your choice so the
16:03
it's it's just your choice so the
16:03
it's it's just your choice so the another icon says this this this is
16:06
another icon says this this this is
16:06
another icon says this this this is recursive uh idea and most of ideas in
16:09
recursive uh idea and most of ideas in
16:09
recursive uh idea and most of ideas in Pro are recursive which means you can
16:11
Pro are recursive which means you can
16:11
Pro are recursive which means you can combine them uh together in whatever
16:14
combine them uh together in whatever
16:14
combine them uh together in whatever configuration you like like Lego blocks
16:17
configuration you like like Lego blocks
16:17
configuration you like like Lego blocks and I don't need to even forecast how
16:19
and I don't need to even forecast how
16:19
and I don't need to even forecast how you will use it it will it's just
16:20
you will use it it will it's just
16:20
you will use it it will it's just recursive compatible you you can combine
16:23
recursive compatible you you can combine
16:23
recursive compatible you you can combine all of these approaches the way you will
16:26
all of these approaches the way you will
16:26
all of these approaches the way you will figure it out so we have another
16:29
figure it out so we have another
16:29
figure it out so we have another approach uh recursive structure in in uh
16:32
approach uh recursive structure in in uh
16:32
approach uh recursive structure in in uh in Pro there is a flat structure like
16:34
in Pro there is a flat structure like
16:34
in Pro there is a flat structure like rails and many things when you just sort
16:37
rails and many things when you just sort
16:37
rails and many things when you just sort things by model controller views and you
16:40
things by model controller views and you
16:41
things by model controller views and you put it in flat One Directory and here is
16:44
put it in flat One Directory and here is
16:44
put it in flat One Directory and here is recursive approach which probably uh
16:48
recursive approach which probably uh
16:48
recursive approach which probably uh some other Technologies are using maybe
16:51
some other Technologies are using maybe
16:51
some other Technologies are using maybe not in such
16:52
not in such
16:52
not in such extent so uh you just uh like in the
16:57
extent so uh you just uh like in the
16:57
extent so uh you just uh like in the game uh
16:59
game uh
16:59
game uh F first of all you you your uh URL will
17:02
F first of all you you your uh URL will
17:02
F first of all you you your uh URL will be reflecting the place in your code so
17:06
be reflecting the place in your code so
17:06
be reflecting the place in your code so it will be always very easy to find it
17:08
it will be always very easy to find it
17:08
it will be always very easy to find it the directory is a polyglot compon
17:11
the directory is a polyglot compon
17:11
the directory is a polyglot compon component you can move it wherever you
17:13
component you can move it wherever you
17:13
component you can move it wherever you want and it will work in your place you
17:15
want and it will work in your place you
17:15
want and it will work in your place you can move it from one project to another
17:17
can move it from one project to another
17:17
can move it from one project to another you can move uh um yeah from one place
17:20
you can move uh um yeah from one place
17:20
you can move uh um yeah from one place to another and it will just find itself
17:22
to another and it will just find itself
17:22
to another and it will just find itself in a new context inside you have tests
17:26
in a new context inside you have tests
17:26
in a new context inside you have tests you have assets you have your code
17:29
you have assets you have your code
17:29
you have assets you have your code you have the models and Collections and
17:32
you have the models and Collections and
17:32
you have the models and Collections and and when you don't need some feature you
17:34
and when you don't need some feature you
17:34
and when you don't need some feature you just delete the directory which
17:36
just delete the directory which
17:36
just delete the directory which represents the feature and it's gone you
17:38
represents the feature and it's gone you
17:38
represents the feature and it's gone you don't need to Traverse your whole flat
17:40
don't need to Traverse your whole flat
17:40
don't need to Traverse your whole flat structure of your application to get rid
17:42
structure of your application to get rid
17:42
structure of your application to get rid of it and then leave keep leave some
17:45
of it and then leave keep leave some
17:45
of it and then leave keep leave some left over vers till
17:47
left over vers till
17:48
left over vers till forever uh so the flat approach I would
17:50
forever uh so the flat approach I would
17:50
forever uh so the flat approach I would say it can be elegant and it's like a
17:53
say it can be elegant and it's like a
17:53
say it can be elegant and it's like a pleasure when you sort books by size
17:55
pleasure when you sort books by size
17:55
pleasure when you sort books by size instead of by something more mean
17:57
instead of by something more mean
17:57
instead of by something more mean meaningful
18:00
meaningful
18:00
meaningful uh I would like to say also that uh uh
18:05
uh I would like to say also that uh uh
18:05
uh I would like to say also that uh uh yes there is a the file as an object
18:07
yes there is a the file as an object
18:07
yes there is a the file as an object concept which I mention in the game uh
18:10
concept which I mention in the game uh
18:10
concept which I mention in the game uh and more powerful uh polyglot component
18:13
and more powerful uh polyglot component
18:13
and more powerful uh polyglot component as a directory and inside those
18:16
as a directory and inside those
18:16
as a directory and inside those directories you have recursively the
18:18
directories you have recursively the
18:18
directories you have recursively the same uh structured directories so no
18:22
same uh structured directories so no
18:22
same uh structured directories so no matter how deep you will go you will
18:23
matter how deep you will go you will
18:23
matter how deep you will go you will feel
18:24
feel
18:24
feel familiar uh and on the top level of the
18:27
familiar uh and on the top level of the
18:27
familiar uh and on the top level of the your structure
18:29
your structure
18:29
your structure uh you will uh Define the subdomain of
18:32
uh you will uh Define the subdomain of
18:32
uh you will uh Define the subdomain of your project and even your project so
18:35
your project and even your project so
18:35
your project and even your project so how how this application works I have
18:38
how how this application works I have
18:38
how how this application works I have directory man. proo which represents my
18:41
directory man. proo which represents my
18:41
directory man. proo which represents my project and inside first uh uh level of
18:45
project and inside first uh uh level of
18:45
project and inside first uh uh level of directories I have slides and pro
18:47
directories I have slides and pro
18:47
directories I have slides and pro recognize that we will have slides
18:49
recognize that we will have slides
18:49
recognize that we will have slides subdomain here and it works so that's
18:53
subdomain here and it works so that's
18:53
subdomain here and it works so that's the convention and and you don't
18:55
the convention and and you don't
18:55
the convention and and you don't configure anything else so we have
18:57
configure anything else so we have
18:57
configure anything else so we have router here uh it's only in Pro I
18:59
router here uh it's only in Pro I
18:59
router here uh it's only in Pro I already mentioned some things about it
19:01
already mentioned some things about it
19:01
already mentioned some things about it so uh to be quick I will just tell that
19:04
so uh to be quick I will just tell that
19:04
so uh to be quick I will just tell that there is a a Syntax for it so we just
19:07
there is a a Syntax for it so we just
19:07
there is a a Syntax for it so we just use a rooting a variable the question
19:09
use a rooting a variable the question
19:09
use a rooting a variable the question mark is just like the original URL
19:13
mark is just like the original URL
19:13
mark is just like the original URL standard you start with question mark
19:14
standard you start with question mark
19:14
standard you start with question mark and then you say there is a value for ID
19:17
and then you say there is a value for ID
19:17
and then you say there is a value for ID is five and then if you would like to
19:19
is five and then if you would like to
19:19
is five and then if you would like to use this value just use question mark ID
19:21
use this value just use question mark ID
19:21
use this value just use question mark ID and and it
19:24
and and it
19:24
and and it works and uh uh models uh so it is SQL
19:29
works and uh uh models uh so it is SQL
19:29
works and uh uh models uh so it is SQL base it will not tell you anything if
19:30
base it will not tell you anything if
19:30
base it will not tell you anything if you're not R be developer uh it you
19:34
you're not R be developer uh it you
19:34
you're not R be developer uh it you don't write migration
19:36
don't write migration
19:36
don't write migration migrations as far as you didn't deploy
19:40
migrations as far as you didn't deploy
19:40
migrations as far as you didn't deploy your minimal valuable project so there
19:43
your minimal valuable project so there
19:43
your minimal valuable project so there is a really huge part of job the most
19:47
is a really huge part of job the most
19:47
is a really huge part of job the most important part of your project it you
19:49
important part of your project it you
19:49
important part of your project it you just don't care about migrations you
19:53
just don't care about migrations you
19:53
just don't care about migrations you just Define models and they Define
19:55
just Define models and they Define
19:55
just Define models and they Define define automatically uh database shape
19:59
define automatically uh database shape
19:59
define automatically uh database shape uh then then usually validations are in
20:02
uh then then usually validations are in
20:02
uh then then usually validations are in three place instead of one uh here in
20:05
three place instead of one uh here in
20:05
three place instead of one uh here in model we can uh this is just a part of
20:09
model we can uh this is just a part of
20:09
model we can uh this is just a part of model definition there is also another
20:11
model definition there is also another
20:12
model definition there is also another part where you Define pro pro properties
20:14
part where you Define pro pro properties
20:14
part where you Define pro pro properties which are just columns in your database
20:16
which are just columns in your database
20:16
which are just columns in your database and here you you have a really readable
20:19
and here you you have a really readable
20:19
and here you you have a really readable way to define also all the validations
20:21
way to define also all the validations
20:21
way to define also all the validations you need uh and it will work uh on the
20:24
you need uh and it will work uh on the
20:24
you need uh and it will work uh on the back end and uh on the front end and in
20:27
back end and uh on the front end and in
20:27
back end and uh on the front end and in the database also so it will add proper
20:30
the database also so it will add proper
20:30
the database also so it will add proper constraints if needed if that's your
20:33
constraints if needed if that's your
20:33
constraints if needed if that's your wish to have double constraints to
20:35
wish to have double constraints to
20:35
wish to have double constraints to validate on the back end and in database
20:38
validate on the back end and in database
20:38
validate on the back end and in database it will do it if you choose another way
20:40
it will do it if you choose another way
20:40
it will do it if you choose another way it will also be another way and also
20:42
it will also be another way and also
20:42
it will also be another way and also this these validations whatever is
20:45
this these validations whatever is
20:45
this these validations whatever is possible to move automatically to front
20:47
possible to move automatically to front
20:47
possible to move automatically to front end it is already on the front end and
20:49
end it is already on the front end and
20:49
end it is already on the front end and you don't Define it never again also
20:52
you don't Define it never again also
20:52
you don't Define it never again also there is a in model you can Define
20:54
there is a in model you can Define
20:54
there is a in model you can Define custom types this is the custom type
20:57
custom types this is the custom type
20:57
custom types this is the custom type which has totally the same same syntax
20:59
which has totally the same same syntax
20:59
which has totally the same same syntax as model I said there is a prop method
21:02
as model I said there is a prop method
21:02
as model I said there is a prop method which creates your uh The Columns and
21:06
which creates your uh The Columns and
21:06
which creates your uh The Columns and all details about columns what what type
21:08
all details about columns what what type
21:08
all details about columns what what type of it it is and uh so on so you have a
21:12
of it it is and uh so on so you have a
21:12
of it it is and uh so on so you have a special uh domain specific language
21:16
special uh domain specific language
21:16
special uh domain specific language which allows you to extend your database
21:19
which allows you to extend your database
21:19
which allows you to extend your database whatever the data SQL database so far
21:22
whatever the data SQL database so far
21:22
whatever the data SQL database so far possible is on beneath you can extend it
21:25
possible is on beneath you can extend it
21:25
possible is on beneath you can extend it unlimitedly with a nice uh language
21:29
unlimitedly with a nice uh language
21:29
unlimitedly with a nice uh language which which no uh other framework has
21:32
which which no uh other framework has
21:32
which which no uh other framework has such such feature and uh whatever you do
21:35
such such feature and uh whatever you do
21:35
such such feature and uh whatever you do you have fullback to to Really proven
21:38
you have fullback to to Really proven
21:38
you have fullback to to Really proven technology it's not like I I I force you
21:41
technology it's not like I I I force you
21:41
technology it's not like I I I force you to use only the the convention syntax
21:45
to use only the the convention syntax
21:45
to use only the the convention syntax you can always fall back to what you
21:47
you can always fall back to what you
21:47
you can always fall back to what you know uh if you don't know how to make it
21:49
know uh if you don't know how to make it
21:49
know uh if you don't know how to make it with syntax or you find out that this
21:52
with syntax or you find out that this
21:52
with syntax or you find out that this syntax doesn't allow for something
21:53
syntax doesn't allow for something
21:53
syntax doesn't allow for something because I didn't uh thought about
21:56
because I didn't uh thought about
21:56
because I didn't uh thought about something you always have fallback to to
21:58
something you always have fallback to to
21:58
something you always have fallback to to make it the uh traditional
22:01
make it the uh traditional
22:01
make it the uh traditional way and then you have simplified
22:03
way and then you have simplified
22:03
way and then you have simplified relations as you see only one method is
22:05
relations as you see only one method is
22:05
relations as you see only one method is enough to Define all kinds of relations
22:07
enough to Define all kinds of relations
22:07
enough to Define all kinds of relations and I will not explain it now because
22:09
and I will not explain it now because
22:09
and I will not explain it now because there is not much time and then I would
22:12
there is not much time and then I would
22:12
there is not much time and then I would like to show that uh the type allows you
22:14
like to show that uh the type allows you
22:14
like to show that uh the type allows you easily to extend uh is between projects
22:18
easily to extend uh is between projects
22:18
easily to extend uh is between projects and models and you can extend your
22:21
and models and you can extend your
22:21
and models and you can extend your database capabilities let's say here we
22:24
database capabilities let's say here we
22:24
database capabilities let's say here we we Define what is a time stamp so when
22:27
we Define what is a time stamp so when
22:27
we Define what is a time stamp so when created at where there is when there is
22:29
created at where there is when there is
22:29
created at where there is when there is no value we say time now and there is a
22:32
no value we say time now and there is a
22:32
no value we say time now and there is a value time now and
22:35
value time now and
22:35
value time now and where updated that we always update with
22:39
where updated that we always update with
22:39
where updated that we always update with time now so it is few lines of code and
22:41
time now so it is few lines of code and
22:42
time now so it is few lines of code and if you will go to se sqls implementation
22:44
if you will go to se sqls implementation
22:44
if you will go to se sqls implementation of it it's like 109 SL lines of code and
22:48
of it it's like 109 SL lines of code and
22:48
of it it's like 109 SL lines of code and if you will go to rise implementation of
22:50
if you will go to rise implementation of
22:50
if you will go to rise implementation of this part it will be like 177 lines of
22:54
this part it will be like 177 lines of
22:54
this part it will be like 177 lines of code and everything in Pro is like this
22:57
code and everything in Pro is like this
22:57
code and everything in Pro is like this uh it is really short implementation and
22:59
uh it is really short implementation and
22:59
uh it is really short implementation and it allows you to write also shortly uh
23:02
it allows you to write also shortly uh
23:03
it allows you to write also shortly uh code so uh when I was saying that MVC is
23:07
code so uh when I was saying that MVC is
23:07
code so uh when I was saying that MVC is not enough let's see what we can achieve
23:11
not enough let's see what we can achieve
23:11
not enough let's see what we can achieve just by implementing a collection
23:13
just by implementing a collection
23:13
just by implementing a collection abstraction so we just Define a scope of
23:16
abstraction so we just Define a scope of
23:16
abstraction so we just Define a scope of the collection so everything every crude
23:18
the collection so everything every crude
23:18
the collection so everything every crude method is aligned to this scope uh all
23:21
method is aligned to this scope uh all
23:21
method is aligned to this scope uh all of crude actions can be uh written well
23:25
of crude actions can be uh written well
23:25
of crude actions can be uh written well between the projects it is really a
23:27
between the projects it is really a
23:27
between the projects it is really a generic thing
23:28
generic thing
23:28
generic thing we don't need to re reimplement it in
23:30
we don't need to re reimplement it in
23:31
we don't need to re reimplement it in every project and in every call uh
23:34
every project and in every call uh
23:34
every project and in every call uh also uh for collection we can have DSL
23:37
also uh for collection we can have DSL
23:37
also uh for collection we can have DSL for custom actions which I will not tell
23:39
for custom actions which I will not tell
23:39
for custom actions which I will not tell about right now uh data batching it is
23:43
about right now uh data batching it is
23:43
about right now uh data batching it is also really easy to solve once per
23:46
also really easy to solve once per
23:46
also really easy to solve once per forever uh pagination and streaming uh
23:50
forever uh pagination and streaming uh
23:50
forever uh pagination and streaming uh efficient implemented efficiently so you
23:53
efficient implemented efficiently so you
23:53
efficient implemented efficiently so you always on every collection you just uh
23:56
always on every collection you just uh
23:56
always on every collection you just uh uh by default you you take just a part
24:00
uh by default you you take just a part
24:00
uh by default you you take just a part of it and then whenever the client wants
24:03
of it and then whenever the client wants
24:03
of it and then whenever the client wants can just ask for more for next and and
24:06
can just ask for more for next and and
24:06
can just ask for more for next and and previous values caching also the thing
24:09
previous values caching also the thing
24:09
previous values caching also the thing which is just once for all you don't
24:11
which is just once for all you don't
24:11
which is just once for all you don't need to touch it but you touch it
24:13
need to touch it but you touch it
24:13
need to touch it but you touch it because your framework doesn't provide
24:15
because your framework doesn't provide
24:15
because your framework doesn't provide it query optimization so so many times I
24:18
it query optimization so so many times I
24:18
it query optimization so so many times I I saw inefficient queries which can be
24:20
I saw inefficient queries which can be
24:20
I saw inefficient queries which can be generally improved and and collection
24:22
generally improved and and collection
24:22
generally improved and and collection does it managing indexes the The
24:24
does it managing indexes the The
24:24
does it managing indexes the The Collection DSL gives you enough
24:27
Collection DSL gives you enough
24:27
Collection DSL gives you enough information to uh give uh algorith uh
24:31
information to uh give uh algorith uh
24:31
information to uh give uh algorith uh enough information to try to optimize
24:34
enough information to try to optimize
24:34
enough information to try to optimize the your database data permissions this
24:37
the your database data permissions this
24:37
the your database data permissions this is the thing which I I
24:39
is the thing which I I
24:39
is the thing which I I really saw in my life so terrible
24:42
really saw in my life so terrible
24:42
really saw in my life so terrible Solutions which are so expensive in
24:46
Solutions which are so expensive in
24:46
Solutions which are so expensive in calculations uh before giving answer if
24:48
calculations uh before giving answer if
24:48
calculations uh before giving answer if you can touch a piece of this piece of
24:51
you can touch a piece of this piece of
24:51
you can touch a piece of this piece of data or not and it is solved prop in Pro
24:54
data or not and it is solved prop in Pro
24:54
data or not and it is solved prop in Pro and it is also efficient uh efficiently
24:57
and it is also efficient uh efficiently
24:57
and it is also efficient uh efficiently calculated
24:58
calculated
24:58
calculated with no overhead realtime data also
25:02
with no overhead realtime data also
25:02
with no overhead realtime data also another thing which I I see people
25:04
another thing which I I see people
25:04
another thing which I I see people connecting
25:06
connecting
25:06
connecting uh cables by hand um in most of
25:11
uh cables by hand um in most of
25:11
uh cables by hand um in most of Technologies it is solved here properly
25:13
Technologies it is solved here properly
25:14
Technologies it is solved here properly also you don't when you define your
25:15
also you don't when you define your
25:15
also you don't when you define your collection it is live by
25:18
collection it is live by
25:18
collection it is live by default and uh then automatically from
25:21
default and uh then automatically from
25:21
default and uh then automatically from collection uh there is generated
25:24
collection uh there is generated
25:24
collection uh there is generated JavaScript object which will be on front
25:26
JavaScript object which will be on front
25:26
JavaScript object which will be on front end and it is uh
25:28
end and it is uh
25:28
end and it is uh uh it is designed for handling the API
25:32
uh it is designed for handling the API
25:32
uh it is designed for handling the API beneath you don't touch API calls you
25:35
beneath you don't touch API calls you
25:35
beneath you don't touch API calls you don't think where is what is the address
25:37
don't think where is what is the address
25:37
don't think where is what is the address of this API API endpoint because uh the
25:42
of this API API endpoint because uh the
25:42
of this API API endpoint because uh the collection knows where it is and you
25:44
collection knows where it is and you
25:44
collection knows where it is and you just use methods like load and next and
25:47
just use methods like load and next and
25:47
just use methods like load and next and preview and and so on and add maybe
25:49
preview and and so on and add maybe
25:49
preview and and so on and add maybe something to collection and delete
25:51
something to collection and delete
25:51
something to collection and delete something from this collection and you
25:54
something from this collection and you
25:54
something from this collection and you don't need to think about making API or
25:58
don't need to think about making API or
25:58
don't need to think about making API or consuming API and still uh in inside it
26:02
consuming API and still uh in inside it
26:02
consuming API and still uh in inside it will it is
26:04
will it is
26:04
will it is implemented uh much better than you ever
26:06
implemented uh much better than you ever
26:06
implemented uh much better than you ever saw in practice making uh Json uh often
26:12
saw in practice making uh Json uh often
26:12
saw in practice making uh Json uh often uh well it is so so huge subject I will
26:16
uh well it is so so huge subject I will
26:16
uh well it is so so huge subject I will I will skip it to fit in in the
26:18
I will skip it to fit in in the
26:18
I will skip it to fit in in the time and then also it is possible like
26:22
time and then also it is possible like
26:22
time and then also it is possible like in the first version of race they they
26:24
in the first version of race they they
26:24
in the first version of race they they they proposed a scaffold which
26:27
they proposed a scaffold which
26:27
they proposed a scaffold which automattic Bally
26:29
automattic Bally
26:29
automattic Bally was uh creating interface on top of the
26:33
was uh creating interface on top of the
26:34
was uh creating interface on top of the model so the one thing is different here
26:36
model so the one thing is different here
26:36
model so the one thing is different here we don't have the model we have the
26:38
we don't have the model we have the
26:38
we don't have the model we have the collection and collection really
26:40
collection and collection really
26:40
collection and collection really precisely defines what you can do uh
26:43
precisely defines what you can do uh
26:43
precisely defines what you can do uh with with permissions uh what actions
26:47
with with permissions uh what actions
26:47
with with permissions uh what actions you can call on this method with C with
26:49
you can call on this method with C with
26:49
you can call on this method with C with cro uh
26:51
cro uh
26:51
cro uh and basically it generates accurately
26:54
and basically it generates accurately
26:54
and basically it generates accurately the interface if you don't care about
26:57
the interface if you don't care about
26:57
the interface if you don't care about the look of the interface it will
27:00
the look of the interface it will
27:00
the look of the interface it will generate it automatically so you'll
27:02
generate it automatically so you'll
27:02
generate it automatically so you'll never touch the front end to generate
27:04
never touch the front end to generate
27:04
never touch the front end to generate for example some piece of
27:06
for example some piece of
27:06
for example some piece of internal uh panel Administration so we
27:09
internal uh panel Administration so we
27:09
internal uh panel Administration so we have nice soltions like this in jungo
27:12
have nice soltions like this in jungo
27:12
have nice soltions like this in jungo but it is not till the it doesn't has
27:14
but it is not till the it doesn't has
27:14
but it is not till the it doesn't has collection so it can't be as good as it
27:17
collection so it can't be as good as it
27:17
collection so it can't be as good as it is because it will still require some
27:19
is because it will still require some
27:19
is because it will still require some custom tweaking and here there is no
27:21
custom tweaking and here there is no
27:21
custom tweaking and here there is no need for additional uh work so we have
27:26
need for additional uh work so we have
27:26
need for additional uh work so we have service which is comparable to
27:28
service which is comparable to
27:28
service which is comparable to controller when we should think about
27:29
controller when we should think about
27:30
controller when we should think about service it will be the controller we
27:32
service it will be the controller we
27:32
service it will be the controller we know from other
27:34
know from other
27:34
know from other Technologies more or less uh one service
27:37
Technologies more or less uh one service
27:37
Technologies more or less uh one service one endpoint uh it is a foundation
27:40
one endpoint uh it is a foundation
27:40
one endpoint uh it is a foundation element so I use it internally and you
27:43
element so I use it internally and you
27:43
element so I use it internally and you using collections and items which is
27:45
using collections and items which is
27:45
using collections and items which is special case of collection May ever may
27:48
special case of collection May ever may
27:48
special case of collection May ever may never need to touch it but it is always
27:53
never need to touch it but it is always
27:53
never need to touch it but it is always there so you can use it and it's really
27:55
there so you can use it and it's really
27:55
there so you can use it and it's really simple to use as you see it's just a
27:57
simple to use as you see it's just a
27:57
simple to use as you see it's just a block of service and inside you have
27:59
block of service and inside you have
27:59
block of service and inside you have perform method which does whatever you
28:01
perform method which does whatever you
28:01
perform method which does whatever you want basing on params you passed uh from
28:06
want basing on params you passed uh from
28:06
want basing on params you passed uh from the client so uh let's say race can
28:11
the client so uh let's say race can
28:11
the client so uh let's say race can reply only once and then then it's over
28:13
reply only once and then then it's over
28:13
reply only once and then then it's over of your controller work here you can
28:15
of your controller work here you can
28:15
of your controller work here you can answer your client as many times you
28:17
answer your client as many times you
28:17
answer your client as many times you want so you can give some piece of
28:19
want so you can give some piece of
28:19
want so you can give some piece of information quickly the answer and other
28:23
information quickly the answer and other
28:23
information quickly the answer and other pieces you can calculate and stream it
28:25
pieces you can calculate and stream it
28:25
pieces you can calculate and stream it as as long as you process it
28:28
as as long as you process it
28:28
as as long as you process it you can broadcast for every client from
28:30
you can broadcast for every client from
28:30
you can broadcast for every client from this service you can uh you have
28:33
this service you can uh you have
28:33
this service you can uh you have permissions integrated the same as in
28:35
permissions integrated the same as in
28:35
permissions integrated the same as in collection everything is a background
28:37
collection everything is a background
28:37
collection everything is a background job so background job in race is a thing
28:40
job so background job in race is a thing
28:40
job so background job in race is a thing which you calculate in a separate queue
28:43
which you calculate in a separate queue
28:43
which you calculate in a separate queue out of the main server to not block it
28:45
out of the main server to not block it
28:45
out of the main server to not block it so everything here is non blocking uh so
28:48
so everything here is non blocking uh so
28:48
so everything here is non blocking uh so for race people it would sound like
28:51
for race people it would sound like
28:51
for race people it would sound like everything is background job uh so you
28:53
everything is background job uh so you
28:53
everything is background job uh so you don't need to care that you will block
28:54
don't need to care that you will block
28:54
don't need to care that you will block your server if you need to take some
28:56
your server if you need to take some
28:56
your server if you need to take some action you can immediately make it in
28:58
action you can immediately make it in
28:58
action you can immediately make it in your server or collection and don't
29:01
your server or collection and don't
29:01
your server or collection and don't makes all dance to to move it to another
29:04
makes all dance to to move it to another
29:04
makes all dance to to move it to another uh processing uh unit and it's easy to
29:07
uh processing uh unit and it's easy to
29:08
uh processing uh unit and it's easy to test because we always have perform
29:10
test because we always have perform
29:10
test because we always have perform method and payload so payload is easily
29:12
method and payload so payload is easily
29:13
method and payload so payload is easily modif modifiable and therefore you can
29:16
modif modifiable and therefore you can
29:16
modif modifiable and therefore you can always easily test so when I was talking
29:19
always easily test so when I was talking
29:19
always easily test so when I was talking with Andrew he said a few interesting
29:22
with Andrew he said a few interesting
29:22
with Andrew he said a few interesting things uh so he said that I made it
29:24
things uh so he said that I made it
29:24
things uh so he said that I made it according to my own feelings and my own
29:26
according to my own feelings and my own
29:26
according to my own feelings and my own philosophy and it will be very hard to
29:28
philosophy and it will be very hard to
29:28
philosophy and it will be very hard to promote and it will require to change
29:31
promote and it will require to change
29:31
promote and it will require to change people's habits and uh he mentioned that
29:35
people's habits and uh he mentioned that
29:35
people's habits and uh he mentioned that race when appeared it promised 10 times
29:37
race when appeared it promised 10 times
29:37
race when appeared it promised 10 times more productivity according to PHP or
29:40
more productivity according to PHP or
29:40
more productivity according to PHP or Java uh so people even change languages
29:42
Java uh so people even change languages
29:42
Java uh so people even change languages they used like myself so this is message
29:45
they used like myself so this is message
29:45
they used like myself so this is message for you I hope I will provide you so
29:48
for you I hope I will provide you so
29:48
for you I hope I will provide you so interesting technology that you will not
29:50
interesting technology that you will not
29:50
interesting technology that you will not care what about your current programming
29:53
care what about your current programming
29:53
care what about your current programming language you will just want to use
29:55
language you will just want to use
29:55
language you will just want to use it and what what I can promise is there
29:58
it and what what I can promise is there
29:58
it and what what I can promise is there is 10 L 10 times less code to write with
30:01
is 10 L 10 times less code to write with
30:01
is 10 L 10 times less code to write with Pro than with other mod Frameworks
30:03
Pro than with other mod Frameworks
30:03
Pro than with other mod Frameworks including rails and rails is usually
30:05
including rails and rails is usually
30:05
including rails and rails is usually quite condensed so this is 10 times less
30:07
quite condensed so this is 10 times less
30:07
quite condensed so this is 10 times less than rails and also I was comparing
30:10
than rails and also I was comparing
30:10
than rails and also I was comparing other things and it was always at least
30:11
other things and it was always at least
30:11
other things and it was always at least 10 times less uh so coding is not only
30:16
10 times less uh so coding is not only
30:16
10 times less uh so coding is not only about writing but it also reading so
30:19
about writing but it also reading so
30:19
about writing but it also reading so when the project is so huge at some
30:21
when the project is so huge at some
30:21
when the project is so huge at some point it becomes unmaintainable and
30:24
point it becomes unmaintainable and
30:24
point it becomes unmaintainable and people are worried to touch anything and
30:27
people are worried to touch anything and
30:27
people are worried to touch anything and at this time it even speeds up to have
30:29
at this time it even speeds up to have
30:29
at this time it even speeds up to have more code and more code because it's
30:31
more code and more code because it's
30:31
more code and more code because it's easier to copy it's easier to not delete
30:33
easier to copy it's easier to not delete
30:33
easier to copy it's easier to not delete so to not broke something we don't we
30:35
so to not broke something we don't we
30:35
so to not broke something we don't we don't see it is related to and then it
30:37
don't see it is related to and then it
30:37
don't see it is related to and then it starts even faster to to get more lines
30:40
starts even faster to to get more lines
30:40
starts even faster to to get more lines of code than pro pro is really condensed
30:43
of code than pro pro is really condensed
30:43
of code than pro pro is really condensed when you will divide your project lines
30:47
when you will divide your project lines
30:47
when you will divide your project lines of Code by 10 you will realize how much
30:49
of Code by 10 you will realize how much
30:49
of Code by 10 you will realize how much simpler it would be uh to maintain it
30:52
simpler it would be uh to maintain it
30:52
simpler it would be uh to maintain it after after such conversion so uh we
30:56
after after such conversion so uh we
30:56
after after such conversion so uh we phrased we have gener generated s and
30:58
phrased we have gener generated s and
30:58
phrased we have gener generated s and with Pro everything you just uh uh write
31:02
with Pro everything you just uh uh write
31:02
with Pro everything you just uh uh write by your hand because there's not much to
31:04
by your hand because there's not much to
31:04
by your hand because there's not much to write and when you generate something
31:06
write and when you generate something
31:06
write and when you generate something you have uh so much code which uh is
31:10
you have uh so much code which uh is
31:10
you have uh so much code which uh is already dead when you change your
31:12
already dead when you change your
31:12
already dead when you change your Concept in Pro you change it in one
31:14
Concept in Pro you change it in one
31:14
Concept in Pro you change it in one place in one line and it affects whole
31:16
place in one line and it affects whole
31:16
place in one line and it affects whole application whenever the concept was
31:18
application whenever the concept was
31:18
application whenever the concept was used and when you have generated code
31:20
used and when you have generated code
31:20
used and when you have generated code for it is already generated it's not
31:23
for it is already generated it's not
31:23
for it is already generated it's not it's not uh um dynamically convertible
31:28
it's not uh um dynamically convertible
31:28
it's not uh um dynamically convertible you just need to rewrite it in many
31:30
you just need to rewrite it in many
31:30
you just need to rewrite it in many places because you generated it from one
31:32
places because you generated it from one
31:32
places because you generated it from one template so what I already said that
31:35
template so what I already said that
31:35
template so what I already said that meta changes impact whole application no
31:37
meta changes impact whole application no
31:37
meta changes impact whole application no matter how the application is and I
31:39
matter how the application is and I
31:39
matter how the application is and I would like to you to see also the the
31:42
would like to you to see also the the
31:42
would like to you to see also the the declarative approach of SQL which was
31:44
declarative approach of SQL which was
31:44
declarative approach of SQL which was also provided somewhere in 70s I guess
31:48
also provided somewhere in 70s I guess
31:48
also provided somewhere in 70s I guess the language and we can write uh what
31:50
the language and we can write uh what
31:50
the language and we can write uh what was written in 70s in our modern fast
31:53
was written in 70s in our modern fast
31:53
was written in 70s in our modern fast SQL databases so this is great example
31:56
SQL databases so this is great example
31:56
SQL databases so this is great example that if we will provide a proper
31:58
that if we will provide a proper
31:58
that if we will provide a proper language not the most beautiful but the
32:00
language not the most beautiful but the
32:01
language not the most beautiful but the proper which forecasts lots of use cases
32:05
proper which forecasts lots of use cases
32:05
proper which forecasts lots of use cases and it's complete enough you will use
32:06
and it's complete enough you will use
32:06
and it's complete enough you will use this language so many years later but
32:09
this language so many years later but
32:09
this language so many years later but more efficiently because you will have
32:10
more efficiently because you will have
32:11
more efficiently because you will have newer and more efficient engine to run
32:13
newer and more efficient engine to run
32:13
newer and more efficient engine to run it on and pro is open for all these
32:15
it on and pro is open for all these
32:15
it on and pro is open for all these improvements to be even more efficient
32:18
improvements to be even more efficient
32:18
improvements to be even more efficient with every year but your code will not
32:20
with every year but your code will not
32:20
with every year but your code will not be changed because uh it is built around
32:23
be changed because uh it is built around
32:23
be changed because uh it is built around the concept of collection and collection
32:26
the concept of collection and collection
32:26
the concept of collection and collection has relations
32:28
has relations
32:28
has relations uh collections wrapped around model and
32:31
uh collections wrapped around model and
32:31
uh collections wrapped around model and model has the same relations so whatever
32:33
model has the same relations so whatever
32:33
model has the same relations so whatever relation has model collection can use
32:35
relation has model collection can use
32:35
relation has model collection can use this relation and model is is uh built
32:39
this relation and model is is uh built
32:39
this relation and model is is uh built on top of props so the in database these
32:42
on top of props so the in database these
32:42
on top of props so the in database these are
32:42
are
32:42
are columns and in your code these are
32:45
columns and in your code these are
32:45
columns and in your code these are properties and each of these properties
32:48
properties and each of these properties
32:48
properties and each of these properties can be a custom property which is built
32:50
can be a custom property which is built
32:50
can be a custom property which is built of custom types and recursively inside
32:54
of custom types and recursively inside
32:54
of custom types and recursively inside unlimitedly you can repeat this concept
32:56
unlimitedly you can repeat this concept
32:56
unlimitedly you can repeat this concept of custom types custom type can use
32:58
of custom types custom type can use
32:58
of custom types custom type can use another custom type and so on obviously
33:01
another custom type and so on obviously
33:01
another custom type and so on obviously it will be not much such cases but this
33:04
it will be not much such cases but this
33:04
it will be not much such cases but this is just the showing of how powerful the
33:07
is just the showing of how powerful the
33:07
is just the showing of how powerful the recording approach is and how uh
33:09
recording approach is and how uh
33:10
recording approach is and how uh flexible and not stopping you from uh
33:13
flexible and not stopping you from uh
33:13
flexible and not stopping you from uh creating it is so after all I build it
33:17
creating it is so after all I build it
33:17
creating it is so after all I build it around the concept that project is a
33:19
around the concept that project is a
33:19
around the concept that project is a collection of uh of applications and
33:22
collection of uh of applications and
33:22
collection of uh of applications and application is a collection of
33:23
application is a collection of
33:23
application is a collection of Collections and item is a special case
33:26
Collections and item is a special case
33:26
Collections and item is a special case of collection one more thing to to say I
33:29
of collection one more thing to to say I
33:29
of collection one more thing to to say I don't see time so I I
33:31
don't see time so I I
33:31
don't see time so I I keep speaking uh plugins concept only in
33:35
keep speaking uh plugins concept only in
33:35
keep speaking uh plugins concept only in Pro this I would I should call it plug
33:38
Pro this I would I should call it plug
33:38
Pro this I would I should call it plug outs uh one more time concept that the
33:42
outs uh one more time concept that the
33:42
outs uh one more time concept that the directory and file is a important thing
33:44
directory and file is a important thing
33:44
directory and file is a important thing in your project uh you have your
33:47
in your project uh you have your
33:47
in your project uh you have your directory which contains the framework
33:49
directory which contains the framework
33:49
directory which contains the framework and if you will uh mirror this uh
33:52
and if you will uh mirror this uh
33:52
and if you will uh mirror this uh structure in plugins directory you can
33:55
structure in plugins directory you can
33:55
structure in plugins directory you can plug out any file you want and modify it
33:58
plug out any file you want and modify it
33:59
plug out any file you want and modify it customly if you need something to behave
34:02
customly if you need something to behave
34:02
customly if you need something to behave differently uh some new functionality
34:04
differently uh some new functionality
34:04
differently uh some new functionality which I didn't provide it and you don't
34:06
which I didn't provide it and you don't
34:06
which I didn't provide it and you don't want to create a distribution yet you
34:09
want to create a distribution yet you
34:09
want to create a distribution yet you can quickly apply a plug out plugin in
34:13
can quickly apply a plug out plugin in
34:13
can quickly apply a plug out plugin in the directory in the in the proper place
34:15
the directory in the in the proper place
34:15
the directory in the in the proper place and this file will be loaded instead of
34:17
and this file will be loaded instead of
34:17
and this file will be loaded instead of original one and you and this way you
34:20
original one and you and this way you
34:20
original one and you and this way you are able to twe anything it's not like
34:23
are able to twe anything it's not like
34:23
are able to twe anything it's not like there is no limit whatever you you want
34:26
there is no limit whatever you you want
34:26
there is no limit whatever you you want you will just quickly
34:28
you will just quickly
34:28
you will just quickly change uh so this is a tweaking Tool uh
34:32
change uh so this is a tweaking Tool uh
34:32
change uh so this is a tweaking Tool uh useful for distributions with small
34:34
useful for distributions with small
34:34
useful for distributions with small changes uh you can use it to CH to
34:37
changes uh you can use it to CH to
34:37
changes uh you can use it to CH to propose changes to the framework uh you
34:39
propose changes to the framework uh you
34:39
propose changes to the framework uh you can apply it quickly and and provide
34:41
can apply it quickly and and provide
34:41
can apply it quickly and and provide someone to to see it how it works and
34:44
someone to to see it how it works and
34:44
someone to to see it how it works and that you have no limits if the framework
34:46
that you have no limits if the framework
34:46
that you have no limits if the framework is not not uh limiting you in any way so
34:51
is not not uh limiting you in any way so
34:51
is not not uh limiting you in any way so you think it's um maybe it's ridiculous
34:53
you think it's um maybe it's ridiculous
34:53
you think it's um maybe it's ridiculous to to touch the framework but when you
34:56
to to touch the framework but when you
34:56
to to touch the framework but when you realize that it is this only four and
34:58
realize that it is this only four and
34:58
realize that it is this only four and five five
34:59
five five
34:59
five five 4,500 lines of code this is totally
35:03
4,500 lines of code this is totally
35:03
4,500 lines of code this is totally different perspective it is really
35:05
different perspective it is really
35:05
different perspective it is really approachable for you to read it and to
35:07
approachable for you to read it and to
35:07
approachable for you to read it and to modify it and comparing to race it's
35:10
modify it and comparing to race it's
35:10
modify it and comparing to race it's less than 1% of of lines of code and
35:15
less than 1% of of lines of code and
35:15
less than 1% of of lines of code and much less than characters surely so
35:18
much less than characters surely so
35:18
much less than characters surely so performance which can be and I consider
35:21
performance which can be and I consider
35:21
performance which can be and I consider it is an important thing it is also a a
35:26
it is an important thing it is also a a
35:26
it is an important thing it is also a a a huge uh
35:28
a huge uh
35:28
a huge uh benefit of using Pro because whatever
35:31
benefit of using Pro because whatever
35:31
benefit of using Pro because whatever framework you use if it's Jango or
35:33
framework you use if it's Jango or
35:33
framework you use if it's Jango or whatever you know it is tightly coupled
35:36
whatever you know it is tightly coupled
35:36
whatever you know it is tightly coupled to your HTTP server and pro is not uh
35:41
to your HTTP server and pro is not uh
35:41
to your HTTP server and pro is not uh Pro will use the fastest known HTTP
35:45
Pro will use the fastest known HTTP
35:45
Pro will use the fastest known HTTP server
35:47
server
35:47
server not bothering to bind the some other
35:51
not bothering to bind the some other
35:51
not bothering to bind the some other technology inside
35:52
technology inside
35:53
technology inside Ruby no it will be not inside Ruby it
35:55
Ruby no it will be not inside Ruby it
35:55
Ruby no it will be not inside Ruby it will be let's probably it will be some C
35:59
will be let's probably it will be some C
35:59
will be let's probably it will be some C uh server which will be the fastest and
36:02
uh server which will be the fastest and
36:02
uh server which will be the fastest and in currently it's just ban server which
36:04
in currently it's just ban server which
36:04
in currently it's just ban server which is considered quite fast just for easy
36:07
is considered quite fast just for easy
36:07
is considered quite fast just for easy of implementation for myself but it it
36:10
of implementation for myself but it it
36:10
of implementation for myself but it it will be
36:11
will be
36:11
will be improved uh then I I'm not a ruby Fanboy
36:16
improved uh then I I'm not a ruby Fanboy
36:16
improved uh then I I'm not a ruby Fanboy I I know it's it's not the fastest
36:18
I I know it's it's not the fastest
36:18
I I know it's it's not the fastest language existing so I just minimize
36:22
language existing so I just minimize
36:22
language existing so I just minimize time time spent in Ruby you will write
36:24
time time spent in Ruby you will write
36:24
time time spent in Ruby you will write your code uh using nice DS cells but
36:29
your code uh using nice DS cells but
36:29
your code uh using nice DS cells but anything else will be not handled by
36:30
anything else will be not handled by
36:30
anything else will be not handled by Ruby you don't see it you don't touch it
36:32
Ruby you don't see it you don't touch it
36:33
Ruby you don't see it you don't touch it so you shouldn't care that it's not Ruby
36:35
so you shouldn't care that it's not Ruby
36:35
so you shouldn't care that it's not Ruby or other your favorite
36:37
or other your favorite
36:38
or other your favorite technology uh whatever you developer
36:41
technology uh whatever you developer
36:41
technology uh whatever you developer don't touch shouldn't be should be made
36:43
don't touch shouldn't be should be made
36:43
don't touch shouldn't be should be made in the fastest possible Manner and this
36:45
in the fastest possible Manner and this
36:45
in the fastest possible Manner and this is this is like this in Pro and then
36:49
is this is like this in Pro and then
36:49
is this is like this in Pro and then everything is on organized with in
36:51
everything is on organized with in
36:51
everything is on organized with in unidirectional pipeline of agnostic
36:53
unidirectional pipeline of agnostic
36:53
unidirectional pipeline of agnostic elements so uh each uh component which
36:56
elements so uh each uh component which
36:57
elements so uh each uh component which makes this uh responsive remotely
37:01
makes this uh responsive remotely
37:01
makes this uh responsive remotely responsive framework from the
37:03
responsive framework from the
37:03
responsive framework from the perspective of the of the browser uh it
37:06
perspective of the of the browser uh it
37:06
perspective of the of the browser uh it consists of some elements few or couple
37:10
consists of some elements few or couple
37:10
consists of some elements few or couple of elements but all of these elements
37:12
of elements but all of these elements
37:12
of elements but all of these elements they are quite small and really easy to
37:14
they are quite small and really easy to
37:14
they are quite small and really easy to exchange for another because they are
37:16
exchange for another because they are
37:16
exchange for another because they are agnostic they don't care what is before
37:18
agnostic they don't care what is before
37:18
agnostic they don't care what is before or after of this uh component uh let's
37:23
or after of this uh component uh let's
37:23
or after of this uh component uh let's say the HTTP server or the web soet
37:26
say the HTTP server or the web soet
37:26
say the HTTP server or the web soet server they don't care about the
37:28
server they don't care about the
37:28
server they don't care about the surrounding where where are they run so
37:30
surrounding where where are they run so
37:30
surrounding where where are they run so it's easy always to exchange it to for
37:32
it's easy always to exchange it to for
37:32
it's easy always to exchange it to for the fastest faster one and those
37:36
the fastest faster one and those
37:36
the fastest faster one and those elements are
37:37
elements are
37:37
elements are independently scal scalable and because
37:40
independently scal scalable and because
37:40
independently scal scalable and because it's just unitary rectional pipeline it
37:43
it's just unitary rectional pipeline it
37:43
it's just unitary rectional pipeline it scales very well it always creates a
37:45
scales very well it always creates a
37:45
scales very well it always creates a tree uh which is really efficient as a
37:49
tree uh which is really efficient as a
37:49
tree uh which is really efficient as a structure for
37:51
structure for
37:51
structure for scaling uh so even if it's high level
37:55
scaling uh so even if it's high level
37:55
scaling uh so even if it's high level language it really aims for the top
37:56
language it really aims for the top
37:56
language it really aims for the top performance
37:58
performance
37:58
performance and
38:00
and
38:00
and uh yeah I still don't know what's the
38:02
uh yeah I still don't know what's the
38:02
uh yeah I still don't know what's the time so I keep speaking or maybe I
38:03
time so I keep speaking or maybe I
38:03
time so I keep speaking or maybe I should check the
38:06
should check the
38:06
should check the time what time we
38:08
time what time we
38:08
time what time we wrap uh what time it is couple of
38:11
wrap uh what time it is couple of
38:11
wrap uh what time it is couple of minutes uh we already we already
38:14
minutes uh we already we already
38:14
minutes uh we already we already converted covered about 40 minutes so
38:17
converted covered about 40 minutes so
38:17
converted covered about 40 minutes so perhaps you can try to wrap it up five
38:19
perhaps you can try to wrap it up five
38:19
perhaps you can try to wrap it up five five minutes right yeah you can take
38:21
five minutes right yeah you can take
38:21
five minutes right yeah you can take like two three minutes more yeah it's
38:22
like two three minutes more yeah it's
38:22
like two three minutes more yeah it's okay okay so okay so transport layer is
38:25
okay okay so okay so transport layer is
38:25
okay okay so okay so transport layer is also important but I will not speak
38:27
also important but I will not speak
38:27
also important but I will not speak about so was between front end and back
38:29
about so was between front end and back
38:29
about so was between front end and back end it is really improved also in in in
38:32
end it is really improved also in in in
38:32
end it is really improved also in in in Pro so uh here also you have very by
38:37
Pro so uh here also you have very by
38:37
Pro so uh here also you have very by just by the structure of the framework
38:39
just by the structure of the framework
38:39
just by the structure of the framework you have really clear clear division of
38:41
you have really clear clear division of
38:42
you have really clear clear division of responsibilities what is let's say uh
38:46
responsibilities what is let's say uh
38:46
responsibilities what is let's say uh for mechanics they I am the the mechanic
38:50
for mechanics they I am the the mechanic
38:50
for mechanics they I am the the mechanic and other people modifying the framework
38:52
and other people modifying the framework
38:52
and other people modifying the framework uh um Behavior or mechanics but the ones
38:56
uh um Behavior or mechanics but the ones
38:56
uh um Behavior or mechanics but the ones which are creating the product product
38:58
which are creating the product product
38:58
which are creating the product product they use those Lang dsls and those tools
39:02
they use those Lang dsls and those tools
39:02
they use those Lang dsls and those tools they are pilots they don't care they
39:03
they are pilots they don't care they
39:04
they are pilots they don't care they will the mechanics are for performance
39:06
will the mechanics are for performance
39:06
will the mechanics are for performance and for make things possible and and
39:08
and for make things possible and and
39:08
and for make things possible and and Pilots are just to build the product and
39:10
Pilots are just to build the product and
39:10
Pilots are just to build the product and it's really clear division in inside
39:12
it's really clear division in inside
39:12
it's really clear division in inside this uh this uh framework so always it
39:16
this uh this uh framework so always it
39:16
this uh this uh framework so always it will be easy for you to make for example
39:18
will be easy for you to make for example
39:18
will be easy for you to make for example a code review the appropriate code
39:20
a code review the appropriate code
39:20
a code review the appropriate code review if something is critical or not
39:23
review if something is critical or not
39:23
review if something is critical or not so wrapping up I'm I'm just uh looking
39:25
so wrapping up I'm I'm just uh looking
39:25
so wrapping up I'm I'm just uh looking for early adops and support
39:28
for early adops and support
39:28
for early adops and support for the framework documentation you can
39:30
for the framework documentation you can
39:30
for the framework documentation you can find
39:31
find
39:31
find here thank you
39:37
[Music]