►
Description
Click Here to Subscribe: http://xaf.life/35
Websites:
https://xafmarin.com/
https://xari.io
https://www.xafers.training/
http://xafersweekly.com/
Facebook Group
http://xaf.life/4g
Free XAF Support Hour
https://calendly.com/xari/free-xaf-support-hour
A
A
Let's
call
it
a
tricks
to
improve
the
performance
in
sound
part
of
our
application.
A
really
heavy
place
where
we
are
doing
going
through
several
tables
are
doing
some
crazy
calculations,
and
so
on
that
we
don't
need
to
load
the
hollow,
get
only
loads
certain
property
or
things
like
that.
As
always,
thanks
for
joining
in
join
to
our
Facebook
group,
we
are
already
more
than
2700
I
believe
almost
2
700
members.
We
also
have
a
linking
group
that
we
have
almost
three
thousand
members.
B
I
was
trying
to
look
for
the
controls
to
mute
myself.
Well,
my
name
is
Frameworks
and
we
do
stuff
24,
7
and
I.
Guess
people
know
me
from
the
community,
but
what
I
do
there
is
mostly
technical
research
and
experiments
regarding.net
projects,
and
that's
it
all.
A
A
Okay,
let's
get
started
so
this
the
I
put
on
the
Facebook
group,
a
couple
links
about
XP,
query
class,
basically
like
what
is
the
HP
query,
Class
A
couple
sample
calls
you
to
see
any
action,
but
we're
gonna
see
the
code
directory
we're
not
going
to
go
through
the
through
the
article,
but
basically
the
EXP
query.
The
case
bigquery
is
a
way
to
really
work
with
link
expression
and
be
able
to
load
only
the
data
that
you
need,
and
it's
it's
a
really
nice
implementation
same
thing.
We
have
another
article
for
the
Xperia
class.
A
That
basically
is
a
different
approach,
because
the
HP
query
is,
let's
say
a
a
read-only
way
of
bringing
the
data
we
don't
need.
There
is
no
way
to
bring
the
whole
object,
so
we
only
bring
the
properties
that
we
are
going
to
specify
with
the
Sorting
or
the
filtering
that
we
need,
but
we're
not
bringing
the
whole
object,
and
this
XP
view
is
basically
the
the
base
of
the
Soft
Data
viewer.
Remember
in
South.
We
are
not
thinking
about
a
an
orm,
a
specific
way.
A
We
like
we
let
the
organ
space
take
care
of
in
this
and
the
difference
or
fish
XPO.
So,
of
course,
we
are
XPO
fun,
so
we
are
always
going
through
the
XPO
layers,
but
there
is
also
an
Entity
framework
called
Data
view
as
well,
and
the
idea
here
is,
for
example,
this
is
the
base
of
the
data
access
mode
on
the
list
view
for
data
view,
it's
not
bring
the
the
exact
object,
but
bring
a
light
representation
effect
that
make
sure
that
you
have
a
really
more
efficiency
way.
So
for
this.
B
Sorry
that
I
called
you
off
just
to
get
a
little
bit
of
context
of
the
history.
We
have
the
XP
View
that
is
based
on
the
on
the
XP
view
from
from
XPO
right,
because
at
that
moment,
when
that
came
out
on
production,
there
was
no
link.
So
there
was,
it
was
impossible
to
make
subsets
of
complete
objects.
B
So
at
that
moment
you
only
have
the
opportunity
to
query
the
whole
object
or
make
an
XP
view
to
reduce
the
amount
of
data
that
you
wanted
to
query,
just
to
make
a
specific,
like
two
properties:
three
properties,
two
properties
in
a
calculator
property.
So
what
I
want
people
to
notice
does
something
interesting.
Sorry,
something
that
we
take
for
granted
now
is
that
you
have
link
and
that
you
can
get
subset
of
of
objects.
You
can
do
aggregated
operations,
but
before.
B
A
No
and
actually
we're
gonna
get
to
that
in
a
little
bit.
When
we
talk
about
the
data
view
that
you
see,
we
have
the
XPO
data
view,
that's
what
is
being
created
when
we're
using
XPO,
but
I
could
not
find
and
I'm
pretty
sure
the
documentation
will
catch
up
quickly
and
enter
different
Google
data
view
linked.
So
I
think
that
is
still
not
documented
in
that
regard,
but
you
can
think
that
it
would
work
the
same,
because
the
idea
is
also
the
audio
space
create
aw
and
it
will
do
the
rest.
A
I
want
to
mention
that
we
are
talking
about
a
the
databuse,
doesn't
return
the
whole
login.
So
basically,
what
happened
when
you
need
the
whole
audio,
because
you
are
doing
anything
there
are
abuse
Returns,
the
oid.
So
basically,
this
is
someone
from
the
community
that
puts
on
extension,
methods
that,
if
you
use
that
one
you
can
use
exactly
as
before.
Remember
Viewpoint
and
that
will
go.
Take
the
regular
ID
and
ask
for
the.
A
A
One
thing
that
we
did
here
is
we
enabled
the
XPO
profiler
in
the
app
config.
It's
just
so
we
can
see
the
queries
that
is
going
on,
so
we
have
here
the
XPO
version.
If
you
see
we
have
a
lot
of
query
here,
we
can
clear
the
console
and
run
deploy
we're
gonna,
throw
it
on
Windows,
because
it's
the
same
approach
and
it's
faster
to
show
everything
there
and
we
have
a
couple
things
in
a
controller.
A
A
I'm
getting
under
the
wire
as
well
when
your
daughter
gets
sick,
you
don't
sleep.
Everything
that
is
coming
from
here
is
coming
to
you,
just
bad
combination.
Okay,
so
if
you
see
here,
we
have
a
controller
with
a
couple
with
several
actions:
let's
not
focus
on
the
UI,
because
we're
gonna
Focus
only
on
the
actions,
but
we
can
even
come
here
and
check
the
the
data
that
we
have.
A
So
we
have
how
to
create
a
collection:
how
to
create
a
software
review,
how
great
HP
review
the
query:
how
to
get
the
soft
implementation
on
the
audio
space.
That
is
then
acquittable
as
well
object.
Query
the
preface
without
prefix
how
to
do
a
free,
join
with
link,
how
to
do
a
free,
join
with
a
criteria
and
how
to
get
free
young
with
a
composite
foot
area.
So
those
are
the
main
methods
that
we're
going
to
focus
on
today
and
I'm
going
to
see
the
difference
between
each
of
one
of
them.
A
Okay,
let's
start
with
a
creating
a
collection,
that's
the
the
main
one,
the
simple
one
that
every
time
that
we're
gonna
do
something
in
South
we
say:
hey
give
me
a
new
xpa
collection,
pass
the
session
and
we'll
go
to
a
list,
hit
the
hair
unless
clear
the
concept.
So
until
this
point
you
see
there
is
no
query
that
has
been
done.
Basically
we're
going
to
create
a
collection
with
the
other
space
of
type
Pro
that
will
bring
all
the
products
that
we
have
and
then
write
it
on
the
concept.
A
That's
as
simple
as
that
we
got
here,
we
are
already
created
the
collection.
If
you
see
nothing
has
been
loaded,
Collections
and
stuff
I
have
the
the
the
idea
that
we
don't
touch
it.
We
are
not
being
in
that
collection,
so
let
me
admit,
open
my
papers
so
and
now
as
soon
as
we
run
it
right
through
it,
you
can
see
here
or
select
everything
that
is
coming
to
that
product
table.
A
Now
we
can
go
here
from
the
product
table
and
interesting
enough.
We
are
bringing
also
we
are
doing
a
left
young
with
the
order
and
we're
bringing
everything
that
we
have
in
the
world.
So
collection
is
more
heavy,
it
brings
the
whole
object
and
he
brings
everything
there
and
you
can
see
the
query,
and
this
is
a
good
thing
that
I
like
to
recommend
people.
If
you
want
to
say
what
XPO
is
doing,
what
saf
is
doing
tune,
the
profiler
see
what
what
is
the
query
generator
see
what's
going
on
there.
A
So,
let's
clear
here
and
now,
let's
go
to
create
an
XPO
View.
So
if
we
do
that,
we
stay
here
and
you
see
no
query,
we
clean
the
equation
and
right
here
to
create
a
Xperia,
and
this
is
XPO
related.
This
is
not
soft,
so
it's
going
to
mention
that
this
is
a
orm
specific
only
for
the
XPO
part,
if
you're
using
any
different
world.
This
doesn't
apply.
A
I
think
that
at
some
point,
I
hear
that
device
will
provide
some
type
of
a
comparison
between
features
and
Entity
framework
and
features
and
XPO,
but
especially
like
that,
how
do
you
do
things
like
XP
viewing
into
different
or
how
you
do
things
like
that?
They
have
it
really
a
nice
article
that
explains
now.
Why
are
they
choosing
Entity
framework
or
instead
of
and
today,
instead
of
XPO?
Let
me
put
it
right
here
for
just
a
second
and
basically
I
think
that
the
everything
comes
down
to
that
Entity
framework
has
is
a
big
number.
A
6.3,
650,
650,
Millions,
download
and
XPO
has
6.3
basically
and
into
different
group,
has
no
lack
of
support
in
the
direct
express
control.
Okay.
So
now
we
have
here
in
the
XPO
view
right
here
for
the
creating
HBO
view,
we
need
to
pass
the
session.
What
is
the
type
of
xpob
that
we
want
to
create,
and
then
there
is
the
the
the
idea
that
the
XP
view
has
an
items,
collection
and
hey
if
I'm
we're
recording
the
meeting.
A
So
if
you
want
to
watch
later
on,
you
do
you
can
so
don't
worry
about
recording
yourself.
So
the
idea
here
is
that
the
XP
view
will
have
an
Irish
collection
and
that
I
I
think
you
need
to
to
fill
it.
So
basically,
we
need
to
tell
you
what
are
the
properties
that
we
want.
What
is
the
source
that
we
want
and
so
on
so
on?
A
So
if
we
click
continue
here,
we
see
that
we
created
the
XP
View
for
the
type
of
pro
we're
gonna
say:
please
add
a
property
that
is
the
product
name
short
direction.
We
don't
care
on
that
is
going
to
have
he's
going
to
rain.
After
that
we
can
do
it
for
each
and
every
of
those
HP
view.
We
have
a
view
record
and,
in
the
view
record,
we
can
do
an
index
or
we
can
do
like
the
the
actual
name
of
the
property
and
we
will
return
So.
If
we
do
this.
A
We
can
take
a
look
here
and,
if
you
see
right
here
is
going
through
the
object,
type
and
things,
but
basically,
if
we
remove
I
I
think
all
of
this
is
security
system.
As
you
see,
this
is
a
Store
password.
This
is
roll.
This
is
Navigator
stage.
This
have
nothing
to
do
and
you
can
avoid
that
and
that's
a
separate
topic,
but
the
queries
you
select
name
from
Pro
versus
regulation.
That's
it
that's
the
only
thing
that
we
are
doing.
These
are
different
query
of
what
we
did
in
the
past
with
HP
collection.
A
Now
we
were
loading
all
the
product
and
there
was
also
a
left
viewing
to
the
order.
Right
here
is
only
select
name
from
product
where
this
regulation-
that's
it,
it's
really
really
more
reliable,
okay,
so
this
is
a
way
to
do
it.
This
is
a
more
HBO
specific
and
social
was
saying
when
XPO
started,
they
were
not
still
link.
So
there
was
a
lot
of
different
ways
to
do
things.
That's
what
the
the
criteria
centers
came
from
now.
B
Let's
also
have
your
sorry
that
I
caught
you
off
but
I,
want
to
put
some
idea
in
here
and
is
that
people
might
think
that
the
XP
collection
is
not
efficient,
but
it
actually
is
because
when
you
get
the
product
for
example,
if
you
have
category
also
in
the
product,
it
will
actually
bring
the
first
level
of
of
the
associated
objects
like
the
the
relationships,
and
that
seems
inefficient
regarding
the
amount
of
data
that
you're
loading.
B
But
usually
what
makes
application
faster
is
not
to
reduce
the
amount
of
data
is
to
reduce
the
amount
of
trips.
So
the
idea
of
having
lazy
loading
and
bring
more
data
in
just
one
query
is
not
inefficient
at
all.
It
might
be
for
so
many
scenarios,
but
that's
what
makes
them
auditor
or,
for
example,
XPO
that
when
you
use
xaf
and
you
add
a
column,
the
data
is
already
there.
It
doesn't
have
to
do
a
trip
extra
trip
to
go
and
get
the
the
information.
So
what
we
call
efficiency.
B
It
depends
also
on
the
case
that
you
have
is
more
about
understanding
how
the
stuff,
or
what
is
the
difference
between
them,
but
both
are
efficient
in
a
specific
use
case.
A
A
So
if
you
see
here,
unless
we
have
again
the
select
bringing
all
the
records
and
it
will
be
from
product
left
viewing
order
and
some
now,
why
did
he
did
that?
Because
we
are
selecting
the
whole
login?
So
basically,
we're
telling
hey
bring
the
whole
way.
We
want
them
to
to
bring
us
everything
that
they
can,
but
in
the
cases
where
we
only
need-
and
let's
do
this
again.
A
A
Right
I'm
saying
in
the
chat
asking
for
the
security
system,
query
and
Jose
send
a
more
cumbersome
solution,
and
this
is
one
that
we
have
used
to
completely
remove
query,
even
from
the
member
permission
for
everything,
create
our
own
data
layer
and
deal
with
a
couple
things
and
I
think
that
we
can
find
the
tickets
and
paste
it
later
in
the
description
of
the
YouTube
YouTube
video.
But
there
is
also
the
catchy
at
the
beginning
that
way
we
get
all
the
permission
cache
at
login.
A
A
Okay,
if
we
saw
in
the
past
the
the
query
was
go
to
the
product
table.
Left
you
an
order
right
now.
We
are
only
doing
as
we
did
on
the
Xperia
select
name
from
product
and
that's
it.
What
is
a
regularly
would
do
it,
so
it
gives
a
lot
of
flexibility
and
a
lot
of
power.
So
we
can't
actually
this
really
specific,
of
what
we're
trying
to
load.
We
always
say
to
our
students.
A
If
you
had
to
do
all
your
queries
by
hand,
you
will
really
think
what
do
you
really
need
and
don't
have
to
be
loading
everything?
So
now,
let's
see
okay,
we
did
the
collection
with
the
attribute
with
the
query.
Now,
let's
do
the
shaft.w
and
see
what
happens?
A
Okay,
if
you
see
it
right
here,
no
query
yet
and
let's
clear
here
again,
this
is
the
old
query
from
the
XP
query
and
then
right
here
we
created
the
data
view.
The
the
create
data
view
metal
from
the
audio
space
ask
us
to
pass
a
product
to
pass.
What
are
the
properties
that
we
want
and
we
can
even
pass
a
functions
like
count
some
hours.
A
We
can
pass
the
okay
type,
the
expression
if
we
have
a
criteria
sorting
and
so
on
right
here
we
have
no
passing
nothing
like
that.
We're
not
passing
a
sorting
or
criteria
we're
just
put
in
all,
and
then
you
will
see
that
the
query.
It
will
only
bring
what
we
ask
you
so
the
ID,
the
name
and
then
it
will
do
a
select
count
and
basically
that's
pretty
much
anything
that
it
will
bring
and
every
just
with
one
query,
you
bring
only
those
three
properties
that
we
want,
and
you
can
see
here.
A
That
we're
getting
they
oid,
that
is,
for
the
chai,
that
is
the
name
of
the
product,
and
there
are
11
Pro.
So
right
away
is
really
efficient,
really
nice
and,
of
course,
because
this
is
a
XPO
function,
it
returns
an
XPO
data
view
record,
but
basically
that's
the
idea
they
create.
That
review
is
using
the
same
approach
that
we
are
using
with
the
XP
view.
That
returns
a
view
record,
but
in
an
agnostic
way
it's
soft
doing
it.
For
us
same
thing.
A
A
This
will
be
on
top
of
the
XP
query,
and
basically
we
have
a
variable
here
that
we're
gonna
get
the
queries
from
the
pros
with
the
oid
is
different.
The
new.
This
is
just
a
domain
and
you
can
see
here
same
thing
right
here.
We
are
going
I'm
bringing
everything,
but
we
can
be
more
specific
and
select
something
we
have
the
power
of
playing
here.
A
So
that
would
be
good
to
work.
Let's
continue
now
another
point
and
is
basically
preface
so:
let's
first
see
the
the
behavior
without
prefetch
and
then,
let's
see
with
preface
will
happen
so
without
preface
we
come
here.
We're
gonna
create
a
sessions
to
create
English,
speak
collection,
then
we're
gonna
iterate
that
people
a
HP
collection,
I'm
gonna,
write
the
full
name
and
then
we're
going
to
iterate
the
phone
number.
There
is
a
collection
inside
that
person,
so
the
idea
of
hoche
was
explaining
that
of
trips
to
the
database.
A
They
are
costly
right,
so
sometimes
you
just
want
to
have
all
that
are
already
here.
So
when
you
iterate
through
them,
you
already
have
it
available
and
we
can
use
that
in
a
couple
places.
So,
let's
from
here
you
see,
then
again,
this
is
all
security
system.
So
let's
go
to
right
here.
There
is
not
one
query
that
is
related
to
the
to
the
XP
collection
person,
because
from
here
to
here
everything
is
security
system.
So,
let's
delete
it
as
soon
as
we
touch
it,
we
go
to
the
people
table
and
if
we
continue.
A
A
So
we
got
here
and
basically
we're
saying:
okay,
these
are
the
two
XP
collection,
there's
a
person
number
and
the
phone
number,
and
then
we
use
the
the
metadata
for
yourself.
So
we
tell
hey
from
the
person,
get
the
phone
numbers
and
we
pass
that
pass
pass
that
to
the
preface
and
if
we
will
continue
and
the
I'm
gonna
have
to
probably
reload
the
test
information,
so
it
doesn't
show
all
the
time.
But
this
is
bigquery.
A
A
A
So
basically,
that's
the
query
and
we're
going
to
select
that
employee
and
it
would
be
a
list
of
employees
all
those
employees
that
have
more
than
five
orders
so
graduating
in
the
employees.
They
will
with
the
order,
table
and
check
one
to
another.
One
right
here,
simple
way
to
do
a
free
young
between
two
tables
in
XPO.
So
only
here
and
if
we
take
a
look
at
our
list,
we're
gonna
have
one
employee,
the
half
those
five
and
if
what
were
they
would
or
database,
we
have
right
here.
A
This
employee
ID
have
six
and
the
other
has
five,
so
it's
only
bringing
the
ones
that
account
for
that
condition.
Now,
let's
see
the
same
thing
with
the
criteria
is
a
little
more
complicated
and
also
because
it's
a
string,
you,
you
are
more
prone
to
errors
right
here.
You
are
saying,
give
me
again
every
employee
that
has
orders
with
more
than
five
and
then
you
pass
that
criteria
to
the
XPO
collection
that
you're
bringing.
A
A
A
Later
she's
saying
later
she
would
say
hi,
so
basically,
that's
the
other
idea.
We
have
the
link,
we
have
the
exploit
area
and
then
we
have
the
strong
type.
The
strong
type
is
always
going
to
be
more
Worthy
that
everything
else
but
I
think
that
is
also
more
easy
to
refactor
is
also
more
easy
to
understanding
a
lot
of
cases
so
that
that's
basically
all
I
wanted
to
show
on
my
side.
Also.
What
do
you
think
it
was
your
thought
and
let's
go
from
there.
B
Well,
regarding
I
think
that,
with
this
example,
it
covers
a
lot
of
kind
of
doubts
that
people
have
and
I
don't
think
that
one
approach
is
better
than
the
other
I
think
it
depends
on
the
use
case
and
for
me
the
things
that
you
need
to
avoid
is
super
loading
of
objects.
Of
course,
that
comes
with
the
idea
of
lazy
loading
right,
lazy,
loin
is
a
demon
that
is
also
an
advantage.
People
love
lazy
loading,
but
then
your
application
gets
slow
right.
B
B
So
you
need
to
pick
your
use
case
and
also
something
that
I
always
say
to
students
and
I
always
tell
the
customers
that
we
have,
especially
in
the
design
part,
is
that
soft
take
care
of
a
lot
of
things
for
you.
So
it
gives
you
some
time
to
try
to
do
test
scenarios,
so
you
can
do
loading
tests,
which
is
the
problem
that
everyone
has
so
since
you're
saving
time
using
self
use
the
time
to
improve
the
design
and
to
measure
what
the
critical
parts
of
the
applications
are.
B
For
example,
one
time
long
long
time
ago,
when
I
was
starting
with
stuff,
we
did
a
calculation
of
interest
of
loans
for
a
bank.
We
did
it
in
XPO
by
the
idea
we
have
to
bring
half
data
is
to
do
the
calculation.
We
use
a
lot
of
memory,
Network
traffic,
and
so
on
some
cases
you
want
to
process
the
data
in
the
database
doesn't
have
to
go
out.
Does
it
have
to
do
any
trip
so
that
I
learned
it
in
the
hard
way
because
I'm,
a
gold
first
person,
so
I
do
code?
B
First,
I
don't
like
to
go
to
other
laser
databases,
but
you
need
to
be
open
to
those
type
of
solution.
But
if
you
want
Improvement
first,
you
need
to
understand
where
the
traffic
is
or
what
the
problem
is
and
then
try
to
find
a
way
around.
But
you
need
because
it
when
you
design
an
orm,
it's
really
easy
to
go
crazy
with
optimization.
That
will
never
happen.
B
A
All
right,
one
thing
that
I
wanted
to
mention
is
the
permission
reload
mode
that
was
being
asked.
So
this
permission,
reload
mode
has
basically
two
mode.
The
default
is
nokachai,
so
each
session
or
DB
contest
will
actually
check
for
the
permissions
and
the
permission
on
various
access.
That
means
the
permissions.
A
A
Okay,
any
other
questions
comments,
experience.
B
Yeah
the
chat
is
free
if
you
want
to
add
a
question
there
about
how
queries
work,
how
data
loading
Works
I
think
this
is
a
topic
that
is
interesting
for
everyone
and
it's
one
of
the
Achilles
heels
of
stuff.
If
that's
how
you
say
it
in
English.
C
Just
a
more
a
couple
of
points
that
I
find
are
pain,
points
with
to
do
with
querying
one
of
them
being
testing
like
I,
think
in
any
sort
of
mature
application.
You
find
that
you're
often
querying
the
same
thing
or
similar
things.
Quite
often
like
you
might
be
saying,
I
always
want
to
get.
You
know
the
unpaid
invoices,
or
something
like
that.
C
We
want
to
filter
out
it's
something
else,
so
you
end
up
saying:
how
are
you
going
to
have
criteria
that
coded
in
a
way
so
that
you're
not
repeating
yourself
and
that
the
criteria
itself
is
only
defined
in
one
place
and
that
it's
testable
and
that
it's
you
know
modifiable
within
in
in
the
one
place?
And
then
you
can
see
somewhere?
C
You
know-
and
that
is
something
that
I
think
is
is-
is
a
sort
of
ongoing
problem
which,
having
all
of
these
different
ways
of
querying,
actually
makes
worse
in
a
way
because
if
you've
got
it
defined,
unpaid
invoices
in
an
XP
view
in
one
place
and
another
place
a
different
way,
then
you
need
to
be
careful
so
that
you
know
your
code.
If
you
say
you
change
what
an
unpaid
invoice
means,
then
it
can.
It
can
end
up
escalating
problems.
C
So
I
think
one
thing
that
is
very
useful
is
to
have
a
good,
solid
way
of
testing
the
criteria
that
you
use
throughout
your
application.
To
be
able
to
say
you
know,
I
want
to
be
able
to
Define
something
in
a
way.
That's
easy
to
call
and
I
actually
wrote
a
blog
post
so
long
ago,
called
fluent
queries
with
Dev
Express,
where
I
was
trying
to
address
this.
In
fact,
I've
improved
that
an
awful
lot
since
those
days,
but
the
idea
was
was
that
you
could
write
something
like
I.
C
B
Yep
one
second
I
have
it,
but
let's
see
where.
Where
is
because
I
don't
know.
C
A
C
It
was
that
one
yeah
that
looked
good,
it's
on
GitHub,
it's
on
the
wrong
place,
but
it's
okay,
yeah
you're
not
going
to
find
it
there.
Sorry.
A
C
Guess
my
search
is
a
bit
broken
yeah,
it's
from
August
the
14th
2013..
It
shows
how
long
I've
been
around.
C
C
There
it
is
fluent
queries,
okay,
so
take
a
look
at
yeah
I
think
it's
that
one.
The
second
one.
C
Some
of
you
yeah,
this
is
it.
This
is
exactly
it
so
that
first
example
of
our
customer
equals.
That's
really.
The
goal
is
to
be
able
to
say.
Actually
you
know
I'm
gonna
put
rappers
around
all
of
my
my
query
types.
So
I
want
to
be
able
to
say
you
know
when
I'm
querying
contacts,
I'm
going
to
call
something
like
buy
position
developer
and
it's
it's
so
much
clearer.
You
know
the
in
the
old
days
there
was.
There
were
so
many
different
ways
of
doing
criteria.
C
It
was
complicated
now
with
link
it's
it's
a
lot
clearer
than
it
used
to
be,
but
I
still
think
that
by
position
developer
is
clearer
than
saying
something
where
it's
X
Arrow
X
goes
dot,
you
know,
role
equals
developer,
and
so
the
idea
is,
is
that
you
need
to
code
this
in
a
way
where
you
don't
want
it
to
evaluate
early.
You
want
to
maintain
that
it
is
an
I
queryable,
which
is
actually
a
mistake.
I
made
in
this
initial
implementation.
C
I
made
it
I
enumerable,
so
it
was
evaluating
too
quickly,
but
it's
not
hard
to
change
it
so
that
it
is
I
queryable,
which
means
that
when
you
create
that
VAR
customer
it
hasn't
evaluated
anything.
Yet
it's
only
when
you
actually
well
actually
the
first
or
default
triggers
it
so,
but
if
you
don't
have
the
first
or
default,
then
it'll
stay
there
until
you
actually
use
it.
So
that's
exactly
kind
of
what
you
want,
but
in
addition
you
want
to
make
it
easy
to
test.
C
So
you
can
have
a
set
of
specs
or
tests
that
are
checking
the
buy
position,
produces
the
results
that
you
want
with
a
simple
in-memory
example,
and
then
the
advantage
is
is
that
when
you
change,
what
buy
position
means
it
affects
your
entire
code
base
in
one
go,
and
you
know
your
tests
are
the
only
thing
that
need
adjusting
you've
changed
what
it
means.
So
you
need
to
change
what
the
test
output
is.
But
it's
that's
really.
C
The
goal
was
to
have
those
two
things
and
then
the
other
thing,
which
is
a
completely
different
topic,
which
I
think
is
also
easier
to
implement.
If
you've
done
this
sort
of
approach,
is
we
have
tests
which
actually
check
the
number
of
round
trips
to
the
server?
Because
there
are
situations
where
you
you
want
to
kind
of
guarantee
that
it's
not
doing
more
work
than
necessary,
and
you
want
to
be
able
to
guarantee
that
you
know
some
complex
bit
of
code,
like
maybe
that
tasks
in
progress.
C
That's
on
the
on
the
example
there
is
it.
Maybe
it's
a
complicated
one
and
you
want
to
make
sure
it's
not
doing
more
queries
than
necessary
and
there
are
all
sorts
of
situations
like.
For
instance,
we
found
that
that
in
transaction,
whether
you're
querying
things
in
transaction
or
not
modifies
enormously
the
SQL
that
gets
generated,
and
so
there
are
several
situations
where
in
fact,
in
transaction,
you
know
bit
us.
C
What
the
queries
that
are
generated
are
and
counts
them
says
you
know
when
I
do
this
query,
please
make
sure
that
there
are
only
three
round
trips
to
the
server
or
whatever
you're
expecting,
and
if
one
day
you
release,
you
know,
upgrading
the
dev
Express
framework
or
any
of
those
things
can
break
these
tests
and
you
so
you
know,
then
you
have
to
go
and
investigate
well,
why?
Why
is
it
now
doing
17
round
trips,
where
the
last
version
only
had
three?
C
So
those
two
things
are
things
that
are
more
about
the
sort
of
ongoing
maintenance
of
your
your
queries.
You
can
get
them
right
for
one
version
of
one
place
in
time,
but
a
lot
of
I
think
the
pain
around
queries
is.
Can
you
guarantee
that
you've
got
in
the
same
performance
in
a
year's
time
or
in
five
years
time?
It's
like
a
very
good
book
that
I,
like
about
maintaining
code,
is
called
it's
by
Michael,
C
feathers,
and
it's
called
something
about
Legacy
code.
C
I've
got
my
bookshelf
over
there
and
he
argues.
You
know.
Legacy
code
isn't
like
old-fashioned.
Legacy
code
is
anything
written
more
than
six
weeks
ago,
because
that
means
everything's
Legacy
code,
because
you
can't
remember
exactly
what
you
did
if
it's
like
I
can't
you
know,
and
so
yeah.
In
fact,
you're
always
maintaining
Legacy
code
and
that's
the
thing
is
that
you
know
a
lot
of
this.
C
The
subtleties
of
getting
a
query
exactly
right
are
completely
lost
when
you
come
back
six
weeks
later
and
you
have
to
fix
something,
and
so
this
testing
aspect,
I
think
is
a
is
a
key
part
of
you
know
how
to
to
lock
down
the
behavior
and
the
performance
of
XPO
that
you're,
expecting
or
Entity
framework
same
way.
B
Yeah,
but
in
here
Robert,
actually
there
is
one
interesting
point:
is
that
and
well
it
also
depends
on
how
much
time
you
have
to
develop
something
like
this,
because
well
I'm,
just
seeing
my
screen
at
the
moment,
but
I
will
share
it.
Just
one.
Second
I
will
share
this
part
here
and
okay.
So
then
you
have
here.
B
You
have
a
wrapper
where
you
define
buy
position,
yeah
yeah,
so
it
means
that
it
depends
on
on
type
of
your
the
the
organization
that
you're
in,
for
example,
the
organization
that
they
develop
a
single
product,
the
Erp
of
the,
for
example,
of
the
organization
or
the
CRM,
or
the
needs
of
those
so
you're
able
to
actually
build
on
top
of
your
own
domain.
B
Things
like
this
and
I
think
that
in
kind
of
the
South
Market
people
is
more
like
in
the
gig
type
of
Industry,
like
I
would
do
one
project
and
another
project
another
project,
then
you
go
back
and
you
have
to
maintain
something
that
you
don't
remember,
because,
for
example,
in
our
office
we
have
I,
don't
know
like
20
Pro
is
running
at
the
moment
or
something
like
that.
So
imagine
how
difficult
is
to
to
make
something
more
specific,
because,
to
be
honest,
I
love
your
approach.
B
This
is
what
I
will
do
if
I
have
to
maintain
something
in
a
single
like
type
of
product
that
you're
making,
but
when
you,
when
you're
doing
like
kind
of
gigs
or
projects
all
the
time
you
kind
of
want
to
make
it
fluid
in
the
sense
in
the
is
you're.
B
C
I
think
you're,
absolutely
right.
It's
like
it's
a
question
of
code
quality
and
a
lot
of
people
think
that
code
quality
should
be
as
high
as
possible.
All
the
time
like
when
we
imagine
how
do
they
code
things
at
deepmind
or
Google,
you
imagine
that
everything
they
write
is
like
extremely
high
quality.
Actually,
that's
nonsense.
I
think
you
have
to
code
for
the
quality
that
you
need
and
if
you're
experimenting,
you
should
definitely
not
code
with
an
extra
layer
of
abstraction
unnecessarily
or
you
know
you
should
be
able
to
experiment.
C
You
should
be
able
to
move
fast
and
I.
Think
even
a
deep
mind
when
they're
doing
like
experiments
with
like
you
know
the
next
GPT
model
or
whatever
they
are.
They
are
dropping
a
lot
of
the
requirements
for
code
quality
because
they
want
to
move
faster
and
experiment
and
then
later
when
they
turn
it
into
a
product
that
is
customer
facing.
Then
they
spend
ages,
adding
huge
amounts
of
like
these
extra
editions,
and
so
you
know
you're
absolutely
right
if
you're
experimenting
no
need
to
worry
about.
C
You
know
these
these
details,
but
if
you're
producing
a
piece
of
software
that's
being
sold
to
a
bank
or
to
a
large
multinational
corporate
or
in
our
case
to
200
large
multinational
corporates
and
two
huge
Banks,
you
know,
then
then
you
really
need
to
be
sure
that
you
didn't
break
anything
and-
and
we
found
that
these
these
abilities
to
make
to
guarantee
perform
performance
and
reliability
with
regards
to
queries
have
been
enormously
helpful.
C
Everything
we
do
uses
this
model
now
for
the
queries
like
you,
you
know
we,
we
don't
use
criteria
syntax
at
all.
You
know,
maybe
in
one
or
two
reports,
but
generally
this
means
all
of
our
queries
are
in
one
little.
You
know
corner
of
our
code
and
it's
easier
to
maintain,
but
you're
right.
You
know
you
don't
need
this.
Unless
you're
you're
rolling.
B
Out
a
product
and
well
like
does
something
that's
a
discussion
that
we
always
have
in
the
office
and
thanks
God
that
I
have
Javier
working
with
me,
because
I
will
do
20
layers
of
abstraction
for
no
reason
because
I
just
like
to
do
them
and
that's
the
way
that
I
think
about
it.
But
he
tell
me
no,
like
the
goal
is
this
right
now
we
need
to
accomplish
the
goal,
then
you
make
it
better
shorter,
whatever,
because
I
like
to
make
it
shorter,
usually
I.
Remember
when
we
make
the
synchronization
framework
for
databases.
B
The
first
version
was
hundreds
of
classes
and
a
lot
of
layers
actually
was
bad
code.
Yeah
we
developed
it
faster.
Then
the
last
version
is
a
few
classes
with
yeah
a
lot
of
abstraction,
but
it
was
if
clean
and
beautiful
to
see,
but
no
one
see
the
code,
usually
it's
more
for,
like
the
quality
purpose
inside
of
the
of
the
office.
C
So
I
have
one
one
War
story
about
exactly
this.
We
recently
had
a
bug
where
a
customer
hit
SQL
has
a
a
limit
on
2100
parameters
in
a
query.
So
if
you
do
something
like
an
in
operator
like
give
me,
you
know
all
of
the
payments
with
these
2101
numbers,
then
a
SQL
will
fail
and
it's
a
hard
limit.
C
You
can't
go
on
to
SQL
and
change
that
parameter
in
a
special
case,
so
we
had
a
customer
who
hit
that
limit
with
something
they
were
doing,
they're
doing
something
dumb,
but
you
know
they
still.
They
hit
it
and
it
broke
the
system.
So
we
had
to
then
think.
Well
how
would
we
modify
our
query
to
kind
of
go
in
Loops,
so
it
only
loads
a
thousand
at
a
time
and
then
concatenates
them
well.
B
It
was
you
don't
know
in
which
other
place
you
will
hit
that
yeah,
because
maybe
you
will
fix
it
when
they
hit
it,
but
there
are
20
other
places
that
will
exactly
take
in
the
future
yeah
exactly
those
things
are
hard
to
see
and
funny
that
you
mentioned.
We
also
hit
the
same
problem
at
one
point
yeah
too
many
parameters
in
the
in
operator,
and
it
was
a
hard
limit.
Yeah.
C
So
we
have
like
400
reports
and
if
any
of
those
reports
are
using
the
thing
that
hits
the
2100
limit,
they're
a
pain
to
change,
you
have
to
go
into
the
report
and
modify
the
repex
and
you
know
whatever
re-upload
it,
and
you
know
all
of
that,
but
we
didn't
have
to
because
all
the
reports
use
the
same.
The
same
thing:
I'm.
C
Is
yeah
I
have
to
I
have
to
get
blogging
again
because
they're,
all
you
know,
they're
all
from
2013
and
stuff,
but
I
I'm.
Actually,
you
know
I'm
a
once
again
more
involved
with
the
whole
Community
I'm
joining
these
things
more
and
you
know
maybe
I
can
host
one
of
these
one
day
and
you
know
yeah.
B
C
I
always
learn
stuff,
I
always
learn
stuff
I've
never
used
some
of
that.
I've
never
used
the
the
data
view,
for
instance,
so
it's
always
good
to
it's
always
good
to
join
these
things.
A
Just
let
us
know
it
that
would
be
an
order
and
I'm
trying
to
pull
myself
from
you,
because
the
background
is
a
little
nicely.
B
A
Definitely
I
really
enjoy
all
your
blog
posts.
I
have
followed
you
for
a
long
time
and
there
is
a
lot
of
great
content
there.
So
if
everyone
feel
free
to
go
there
and
still
take
a
look
load,
testing
fluent
queries
and
a
good
thing
also
about
having
that,
let's
call
inflection
point
where
all
the
queries
go
to
the
same
place
and
do
the
same
thing.
It's
also
great.
To
then,
do
some
logging
analytics
everything
goes
through
the
layer.
So
that's.
A
A
really
really
good
advantage
of
that.
So,
as
always,
whenever
you
want
to
send
us
a
message
and
we
schedule
the
the
Meetup
for
those
topics,
I
do
believe-
and
this
is
a
an
honor
for
for
us
to
have
you
hosted
Rover,
but
also
for
everyone
else
who
is
listening.
You
don't
have
to
to
be
10
year.
Experience
some
stuff.
Do
you
know
something
new
you
want
to
share
it.
A
Let
us
know
we're
all
happy
to
host
10
20
minutes
for
you
to
present
one
of
your
personal
project,
experience
professional,
employee,
anything,
the
idea
of
the
community.
Is
this
one:
everyone
to
join
together,
bro
sitting
a
community
help
they
have
expressed
him
and
like
move
their
product
to
our
needs
and
growth.
Well,
so
that
would
be
all
for
myself.
I,
don't
know
if
you
have
anything
else,
Robert,
if
you
guys
have
anything
else.
A
B
A
Go
perfect,
one
definitely
made
up
that
is
coming
soon.
Is
a
eui
customization
part
two,
because
now
that
Blazer
has
a
been
around
for
a
while
I
want
to
ask
the
community
to
submit
a
screenshot
of
what
they
have
doing,
because
I
think
that
dog
is
motivating
new
developers
starting
with
stuff,
see
the
possibilities
of
what
we
can
achieve
and
also
in
our
side.
We
have
done
several
more
comprehensive
customization
that
we
have
done
in
the
past.