►
Description
Join members from the ASP.NET teams for our community standup covering great community contributions for ASP.NET, ASP.NET Core, and more.
B
A
A
A
Yeah,
like
I,
can
see
it
on
alright.
Well,
this
is
the
smoothest
start.
I
think
we've
ever
had
you're
welcome
to
the
current
results.
I
apologize
for
the
we
are
back
on
the
stationary,
mics
and
so
I
personally,
very
much
just
like
these
marks,
because
then
you
can't
hear
me
because
I'm
over
there
so
I
will
please
I
will
try
to
be
disciplined
John.
Tell
me
if
I
drift,
okay
during
the
show
and
I
will
move
that
alright
yeah,
we'll
just
cough
gently
or
cough
uh-huh,
pick
me
under
the
table.
A
A
Criminal,
not
just
terrible
now,
Brady
now
works
on
my
team.
How
long
has
it
been
now?
How
long
have
you
been
on
my
team,
October
October
so
six
months?
This
is
like
a
six
month
thing
coming
up
like
literally
this
month.
It's
probably
already
happened
already,
oh
yeah.
We
should
have
like
done
something
that
was
October
18th.
Oh,
it's
happened.
Okay,
there
you
go
and
our
Brady
looks
after
a
signal.
Our
very
did
it
close
to
my
heart.
Obviously,
and
I
handed
the
baton
on
usually
now
when
people
ask
me
similar
questions.
A
I
go
that's
great.
Let
me
introduce
you
to
Brady
and
then
I
get
ready
to
answer
them
for
me,
and
I
also
have
Brady
looking
after
a
lot
of
our
Asia
integration,
and
so
he
often
is
chasing
down,
as
are
things
for
us
and
helping
customers
and
getting
docs
correct,
and
you
know
designing
new
experiences
to
make
that
nice
minute
call
work
great
on
address
or.
A
A
C
A
C
C
All
right,
well,
I'm,
gonna
start
with
Scott
Hanselman
Scott's
been
doing
some
kind
of
like
short
level,
setting
kind
of
posts
lately
just
kind
of
explaining
what
some
terms
are
and
stuff
so
blazer
and
and
Harry
focuses
on
the
difference
between
blazer
and
razor
components,
so
just
kind
of
a
you
know
back
up
and
here's
here's
some
things
points
out.
What's
in
the
docs
and
explains
you
know,
of
course,
the
Blazer
client
side
hosting
of
Razer
components
and
then
Razer
components
same
thing,
but
signal
are
neat
term
for
today.
C
A
So,
like
we've
been
discussing
this
and
we
might
reserve
the
right
to
tweak
this,
how
we
talk
about
this
a
little
bit,
so
what
we're
finding
right
is
as
we
as
blazer
as
an
experiment.
We
start
extracting
goodness
from
that
experiment
and,
like
you
know,
trying
to
put
stuff
in
the
product,
like
you
know,
grazier
components
in
don't
equal
three.
A
We
want
to
make
sure
that
we
choose
the
right
terms
to
represent
the
right
back
at
models
and
parts
of
the
stack
and
add
them
to
the
tower,
and
you
know:
are
you
building
a
race
of
components
app
or
is
it
a
blazer
app
or
as
an
only
a
blazer
app
when
it's
on
web
assembly?
Or
you
know
all
that
type
of
thing?
A
And
so
my
hope
is
that
by
build
this
year,
we
will
have
gone
through
all
the
internal
throws,
with
marketing
and
all
that
type
of
stuff
to
land
on
how
we
will
refer
to
all
these
things
moving
forward.
Now
that
we're
like
actually
shipping
bits
and
neck
or
three
but
yeah.
This
was
Scott's.
First
attempt
to
try
and
just
say:
hey
yeah,
there's,
there's
blazer
and
there's
this
that's
built
on
this
thing,
called
razor
components,
I'm,
making
a
ship
razor
components
and
don't
make
all
three,
but
we
still
have
blazer
and
yeah.
C
Know
it's
funny.
I
I've
recently
done
some
presentations
on
it
and
I
had
my
own
kind
of
like
ways
of
pointing
to
this
a
lot
of
time.
When
Scott,
you
know,
Scott
I'll
be
like
oh
yeah,
I
should
dust
off
my
blog
I
can
blog
about
it
and
then
Scott
does
a
you
know:
nice,
clean,
straightforward
purse,
I'm
like
yeah,
that's
better!
Now
what
I've
done
so
there
you
go,
but
this
this
is
nice.
So
here
is
a
from
our
net
they've
been
doing
some
cool
asp
net
content
lately.
C
So
this
this
is
a
nice
one,
and
so
here
this
is
from
it's
not
gosh
where's
the
names
they
moved
on
me
there.
It
is
Hasan
and
Jeremy.
Licinus
are
talking
about
OData
with
asp
net
core.
So
they're
talking
about
you,
know
some
interesting
things
like
starting
with
the
basics,
but
then
digging
in
a
little
deeper
like
things
like
defining
ordering
and
including
related
entities.
I
honestly
I
haven't
used
OData
a
bunch
lately
well
I
hadn't
for
a
while,
until
recently
I've
been
using
Microsoft
graph
more
and
that's
all
our
data.
C
So
that's
kinda,
reminding
me
of
what
OData
is
there.
You
go,
go
and
nice
to
see
sessile
and
team
they've
been
doing
a
lot
of
stuff
with
with
asp
net
quarry
lately
on
the
on
net,
show
good
stuff.
Alright,
sayes
are
talking
about
ml
net.
So
what's
what's
cool
about?
This
is
he's
kind
of
starts
with
the
basics
and-
and
I've
looked
at
you
know
some
kind
of
simple
stuff
with
with
ml
net
an
asp
net
core,
but
he
digs
in
pretty
deep
with
how
to
scale
it.
C
So
as
you
go
through,
you
know
he's
looking
at
some
kind
of
when
you're,
using
when
you've
got
multiple
clients
connecting
and
you've
got
a
lot
going
on
how
you
actually
scale
up
that
ml
on
the
back
end.
So
he
actually
digs
into
two
different
options
here,
and
so
he
does
point
out.
You
know
regular
asp,
net
core
apps
you're,
not
normally
gonna,
run
into
this.
But
as
you
scale,
this
is
an
issue.
So
here
he
looks
at
option,
one
which
is
registering
a
singleton
of
the
of
the
ml
model.
C
So
the
this
is
kind
of
the
the
kind
of
simpler
case
here.
So
then
he
goes
in
and
does
a
a
more
complex
look
at
sharing
the
prediction
engine
the
prediction
engine
is,
is
not
thread
safe,
and
so
so
he
goes
through
and
explains,
and
this
this
is
more
in-depth.
So
this
is,
if
you
are
really
you
know
not
just
messing
around.
You
were
seriously
scaling
this
up.
This
is,
I
think,
what
you
would
dig
into
doing
so
then
he
goes
through
and
shows
how
to
use
the
object
cool
in
order
to
do
that.
Go.
C
A
A
That
makes
it
difficult.
Obviously,
so
you
need
some
type
of
pulling
mechanism
so
yeah,
so
the
I
Glenn
showed
me
a
prototype
of
actually
something
yesterday
where,
rather
than
having
to
do
all
this
stuff,
you
basically
end
up
with
a
just
a
nice
extension
method.
On
services
in
your
Easter
net
crap,
so
you
know,
select
services,
dot,
add
ml
model
of
T
right
and
you
add
your
tea
poco
and
then
because
M
all
done,
there
is
all
designed
around
pocos,
whether
you
have
a
poco
input
to
your
ml
model
and
then
a
poco
output.
A
A
D
C
C
He
wanted
to
have
some
special
some
some
other
slash
commands
so
to
be
able
to
slash
joke
and
it
tells
a
Chuck
Norris
joke
are
also
to
look
up
weather
and
then
probably
more
useful
one
to
shorten
a
URL
so
take
a
long
URL
and
make
a
short
URL.
So
what
he
did
for
this
is
spun
up
a
Web,
API,
back-end
and
so
he's
got
asp
net
core
web
api
and
then
he's
calling
back
into
that
from
slack.
So
here
just
shows
kind
of
how
he
wires
that
up
calls
it
from
httpclient.
C
And
then
you
know
the
the
the
end
is
you're
able
to
go,
slash,
joke
and
actually
get
a
joke
in
the
in
the
chat,
so
increasing
work,
productivity
using
asp
net
core
yeah
yeah,
so
Ryan
Nowak.
This
is
actually
from
NDC,
London
and
I
know.
We
called
out
content
from
NDC
London,
but
I
don't
think
we
gave
this
one
kind
of
the
proper
credit
or
whatever,
really
called
this
one
out
individually.
This.
This
I
saw
someone
tweeting
in
about
this
recently
and-
and
this
really
is
a
good
presentation
right.
A
A
C
C
You
go
stuff
from
a
very
spicy
boy,
all
right,
all
right,
so
Chris,
st.
II,
so
razor
components
does
have
forms
validation,
built-in
it
has
the
S
data
annotations
based
validation.
He
wanted
to
use
fluent
validation.
Fluent
validation,
of
course,
allows
you
to
write
validation
using
this
kind
of
fluent
syntax.
You
may
already
have
some
fluent
validation
rules,
or
you
just
may
prefer
that
so
he
goes
through
and
shows
how
he
switched
out
the
validation
to
you
as
fluent
validation.
C
So
he
did
that
first
by
building
a
foreign
validator
component,
and
then
he
hooked
that
in
here
by
extending
the
edit
context,
so
you
know
it's
it's
it's
not
a
huge
amount
of
work.
You
do
have
to
go
through
and
you
know
hook
up
events
and
stuff.
If
you
are
it's
it's
interesting
to
see
both
in
terms
of
hey,
you
can
swap
this
out.
That
always
makes
me
happy
to
know
that
as
possible
and
then
also,
if
you
do
want
the
code,
he's
got
it
for
you.
C
C
This
is
k4
key
vault
and
then
there's
also
another
one
this
week
for
for
logging
and
the
login
one
who
goes
into
you
know,
Sarah
log
and
all
you
know
all
the
kind
of
stuff
on
logging
in
depths
some
stuff
for
key
vault
here
is
starting
with
the
basics,
but
then
digging
into
some
stuff,
like
your
managed
service
identity.
So
this
is
something
where
you
know
like
say:
if
you're
developing
locally,
how
are
you
using
key
vault
and
how
are
you
handling
that
so
you've
got
options?
C
You
could
use
like
app
settings
and
you
know
kind
of
override.
You
can
also
use
the
things
like
you
can
set
in
Visual
Studio.
You
can
configure
your
who
is
my
identity
when
I
run
the
application,
so
some
good
stuff
here,
I
always
like
the
the
the
depth
here.
He's
really
he's
really
going
in
deep
on
these.
You
know
if
I'm
gonna,
a
through
Z
and
I,
get
to
K
I.
Think
I
might
be
at
a
you
know
a
tweet
length
here,
but
he's
really
continuing
to
keep
the
quality
level
yeah.
C
Alright,
Scott
Allen
here
he's
been
writing
dotnet
core
opinions,
and
these
are
opinions,
so
I
saw
he
tweeted
it
and
someone
else
was
like
I
hate
that
opinion,
which
I
thinks
it's.
Okay,
that's
alright,
yeah,
so
he
he
is
saying
that
you
know
as
you're,
going
through
and
doing
configure
services
a
lot
of
time.
The
lambdas
end
up
getting
pretty
long.
C
So
like
I,
it's
very
easy
to
get
into
it,
configure
services
its
couple
hundred
lines,
long
and
you're
scrolling,
and
then
people
are
commenting
things
out
and
it's
just
it's
a
it
can
be
a
little
much
so
some
people
prefer
that
have
all
the
code
right
in
front
of
you,
nothing's
hidden.
You
know
it's
all
right
there.
C
What
what
Kay
Scott
White's
doing
is
actually
having
extension
methods,
and
so
here,
for
instance,
instead
of
saying
at
NVC
and
having
all
the
lambda
stuff
here
here,
he's
just
calling
add
custom
MBC
well.
That
was
me
like
it's
expanding.
Why
is
it
doing
that
now?
I,
don't
know
if
I
can
ever
get
to
the
that's
I
broke.
C
To
have
broken
his
blog,
don't
double-click
in
the
code
blocks.
What
that
was
amazing,
so
here
he's
actually
just
built
out
a
an
extension
method
to
add
custom,
MVC
and
now
because
I'm
about
to
navigate
away
from
this
page,
I'm
gonna
double
click
again,
just
to
see
that
that's
crazy,
good
stuff,
it's
an
easter
egg,
I
so
it
does
allow
me
to
copy
it.
C
One
last
final
link
I
want
to
point
out
here
is
our
show
suggestion.
So
so
we
set
this
up
in
case.
There's
a
topic
or
a
guest
you'd
like
to
see
we
have
these
tuesdays
asp
net
community
stand
up
the
Thursday's.
We
dig
into
other
things
like
language,
runtime,
cloud,
tooling
and
mobile.
So
there
you'll
see
at
the
end
of
the
stream.
There
will
be
a
thing
in
the
footer
of
the
ending
slate
and
then
it's
also
it's
a
AKMs
dotnet
stand-up
suggestion.
C
A
Well,
Brady
yeah,
what's
been
going
on
in
signal,
since
I
haven't
really
been
looking
at
it
in
a
more.
A
D
We
have
a
lot
of
cool
things
coming
up
in
our
3o
timeline.
Actually,
we
had
a
meeting
yesterday
where
we
actually
went
through
the
various
things
that
we
have
in
our
milestones.
As
you
know,
we
have
a
lot
of
preview
releases
coming
up
and
we
do
so.
We've
basically
stuffed
a
lot
of
features
into
this
preview
releases,
so
the
big
things
that
we
have
coming
up
for
our
three-
oh
you
know,
g8
time
frame,
are
gonna,
be
a
big
one
for
everybody
in
gaming
in
IOT
and
anything
embedded.
D
D
It's
gonna
be
C++.
We
feel
like
that
would
be
I
mean
one
one.
One
question
that
we've
had
is
from
the
play:
fat
books,
okay,
well,
the
recent
gaming
production
right
they
had
native
stuff.
They
needed
to
do
so.
We
started
to
work
with
them,
so
gamers
will
be
able
to
or
game
game
devs
will
be
able
to
use.
This
keep
us
wanting
to
do
things
in
real
time.
Like
I
said
the
one
that
we
talked
about.
We've
debated
this
one.
We
think
that
we'll
have
some
IOT
plays
as
well.
D
D
Fowler
and
I've
talked
about
is
what
we
want
to
do
beyond
the
C++
client
is
get
you
a
native
iOS
client,
so
we've
seen
a
lot
of
folks
start
with
C++
and
they're,
just
think
I
guess,
subjective,
C++,
objective-c
yeah,
but
there's
this
thing
called
objective
C++.
What's
that,
apparently
it's
it's,
it's
a
super
highfalutin
version
of
objective-c
yeah.
We
don't
really
know
a
lot
about
it.
D
D
A
Because
we
want
we
want
to
do
it
well
like
to
be
clear,
like
if
I
recall,
I
think
it
was
Brandon
who
originally
wrote
that
you
can
get
a
prototype
up
and
going
and
get
basic
things
working,
usually
a
few
days
because
the
protocol
is
spent
but
building
a
good
networking
client
that
supports
the
protocol
handles
all
those
crazy
conditions
that
can
occur
because
it's
networking
is
reliable,
is
performance?
Doesn't
like
memory.
D
D
Guess
that
came
out
around
the
signal
or
time
frame,
but
then
asp.net
core
time
frame.
Yes,
we
sort
of
revisited
everything
and
said
we
want
to
take
this
more
seriously,
so
we
buckled
down
right
to
protocol
and
now
all
the
clients
adhere
to
that
protocol.
Okay,
as
does
the
service
which
will
speak
to
later
on
in
this
conversation,
is
Damien
alluded
to
building
a
client
is
very
expensive
one
of
the
one
of
the
parallels
that
I
have
used
to
work
on
the
Azure
SDK
team
and
we
had
nine
languages
and
eighty
services
that
all
wanted.
D
Sdks
said
that
gets
a
little
expensive.
So,
if
you
think
about
you
know
today,
you
know
app
service
releases,
a
new
feature.
We
don't
just
go
fix
that
in
the
API.
We
also
fix
that
in
and
clients
for
that,
for
that
is
DK
well,
the
same
thing
would
be
true
for
a
signaler
client.
You
know
today
we
have
typescript
JavaScript
Java.
We
will
have
C++
C
sharp,
obviously,
and
then
you
know,
we
know
that
there
are
some
community
ones
out
there
that
have
been
built
as
well.
D
One
that
we've
talked
about
a
little
bit
is
I,
think
it's
called
Swift
R
and
is
actually
a
native
iOS
client
written
in
Swift,
but
well.
What
you'll
see
you
later
on
today
is
that
you
can
actually
use
signal
ours,
neck
long
it
from
within
a
xamarin
app.
So
if
you're
using
xamarin,
you
can
actually
target
any
of
these
platforms
and
party
on
so
we'll
go
into
that
later
on.
But
one
of
my
favorite
features
that
we're
gonna
have
coming
out
around
the
signal
r3o
or
the
asp.net
course.
A
D
D
Very
it's
very
distracting,
so
what
I've
just
pulled
up
here
is
our
URL
for
streaming
and
asp.net
core
signal.
Our
client
and
one
thing
I
do
want
to
point
out
to
everybody.
Is
we
have
a
handy
shortened
URL?
So
if
you
want
to
get
to
our
signal
our
Doc's
very
easily,
it's
a
kms
or
size
signal,
our
four
size,
Doc's
and
we've
also
got
one
of
you
want
to
send
us
an
issue.
We
can
actually
do
issues
here
as
well.
I
do
want
to
show
you
that
this
is
our
streaming
client.
D
D
D
If
you
want
to
see
this
demo
and
a
little
bit
more
exhaustion,
you
can
look
at
it
on
YouTube,
but
what
we
have
over
here
is
a
new
feature
that
we're
going
to
have
coming
out
and
the
three
Oh
time
frame,
which
is
going
to
be
client-to-server
streaming.
So
what
I'll
do
here
is,
if
you
look
at
the
URL,
it's
streamer
without
E,
because
that's
the
signal
er
naming
convention
streamer
as
your
website
stream,
our
dream.
B
D
So
I'll
go
here
and
I'll
just
type.
The
show
I'll
hit
start
streaming,
and
it
should
ask
me
if
all
of
it
use
my
camera
and
I
do
and
now
we're
actually
streaming
see
ya
and
if
I
were
to
scroll
down
you'll
see
that
we
actually
have
a
photo
of
me
or
video
of
me
right
here
and
what
we're
doing
with
this
video
is.
Oh,
it.
C
C
D
D
A
D
B
A
A
You
and
then
you
need
to
share
it
to
the
call
so
I
can
show
everyone
in
fact,
we'll
see
in
the
bottom
right
hand
corner
you
need
to
change
to
share
your
desktop
right
now
once
got
it
up
and
we
can
observe
the
raw
power
of
ASCII
signal
I.
Well,
actually,
we
can
see
the
lag
too
so
like
I'm,
assuming
it's
gonna,
be
somewhat
it's
the
team's
lag
that
will
be
notified.
That
we'll
be
seeing
more
than
anything
and.
C
C
A
C
D
All
right,
I'll
kill
that,
and
you
mentioned
a
a
new
friend
of
mine
as
of
last
week
at
our
little
internal
conference
here,
David
pint
David
pine
has
a
different
version
of
that
demo
that
he
did
with
angular.
So
if
you're
interested
in
the
angular
version
of
this
David
pine
has
a
demo
of
that
which
I
believe
he's
going
to
debut
at
in
DC
Minnesota
right.
D
Be
an
indie
he's
gonna
show
this
off.
It
looks
really
really
good.
It's
gonna
be
cool,
so
that's
our
client
to
serve
a
streaming,
which
is
something
that
I'm
definitely
looking
forward
to
and
the
three
Oh
time
frame
in
terms
of
its
preview
release.
As
you
can
see,
it's
already
out,
we
just
partied
on
it.
D
D
A
D
B
D
D
D
E
A
B
A
At
least
gets
you
out
of
the
problem
of
oh,
it
went
down
because
of
a
tiny
network.
Blip
and
now
I
have
to
write
a
bunch
of
code
to
handle
that
it'll
just
transparently
do
the
retries
or
in
reconnect,
but
and
then
what
would
I
do
in
my
app
to
know
what
I
missed
it's
up
to
you?
It's
a
dive
concern
if
you
care
about
messages
that
I
can.
D
D
A
D
Kinds
of
pain
rot
with
it.
It
works
great
until
it
doesn't
right
and
then
they
Z
clogged.
So
we're
not
going
to
do
that.
Okay,
I'm,
sorry,
I'm!
Sorry
must
Eric
that
you
missed
that,
but
we
just
can't
do
it
again.
It
was
painful.
We're
not
gonna
do
replay,
but
we
are
gonna.
Do
reconnection
and
one
thing
that
mister
halter
and
I've
talked
about.
Are
things
like
you
know?
Do
you
want
to
do
exponential
back-off?
Do
you
want
to
do
you
know?
D
Do
you
want
to
try
nine
times
for
three
seconds
in
between
each
time,
so
we're
gonna
give
you
a
couple
of
options
there
to
basically
dial
in
the
reconnection
logic.
Okay,
but
there's
there's
an
important
question:
you're,
not
asking
me
here:
are
we
gonna
reconnect
automatically
for
you?
No
and
the
reason
we're
not?
Is
we
turned
it
off,
so
we
wouldn't
just
automatically
turn
it
back
on
that
would
be
rude.
Is.
A
A
Would
opt
in
sorry
while
I
was
tuned
out
there
I
heard
some
words
that
seem
to
imply
that
we
will
have
options
that
allow
for
staggering
reconnection
so
that
you
don't
have
a
million
or
a
yo.
500
clients
suddenly
reconnect
your
server
if
there
was
a
server
based
network
right,
I've
asked
for
that.
I've
asked.
A
An
exponential
back-off
type
okay,
because
that
is
a
common
problem
we
had
knew.
The
old
logic
was
that
you'd
have
thousand
WebSocket
connections
on
your
server.
You
have
an
automatic
reconnect
logic
in
place
with
no
delay,
and
so,
if
the,
if
the
Rican,
if
the
server
blip,
if
the
network
blip
wasn't
a
client
base
blip,
but
rather
something
on
the
server
side,
so
you
dropped
all
1,000
connections
at
the
same
time
where
it
all
turn
up
instantly
again
in
the
normal
case,
and
that
could
cause
problems.
A
Time
so
definitely
I
special
back
off.
It's
a
slightly
different
thing,
which
is:
if
you
try
to
connect
and
it
says
no,
then
you
then
you
get
exponential
back-off
and
how
long
you'll
wait
there's
also
the
concept
of
randomization,
which
is,
should
you
have
a
random
window
of
some
sort
rather
than
having
everyone
you
know
in
between
each
week?
Can
you
put
even
for
the
initial
one
and
I
know
other
wise,
the
flood,
yeah
and
so.
A
B
A
Why
I
doing
this
upper
stuff
is
not
that
straightforward?
You
just
build
standard
TCP
thing
like
nothing
does
is
for
you.
You
have
to
do
it
yourself,
and
the
goal
of
signal
are:
is
that
if
we're
gonna
do
these
type
of
things,
we
wanted
to
kind
of
work
for
most
cases
most
of
the
time,
and
you
don't
have
to
dig
down
and
go?
Oh,
yes
and
my
server
was
running
great.
A
C
Okay
now
question:
you
mentioned
that
that
replay
is
really
hard.
Let's
say:
I
just
had
that
as
a
business
requirement,
I
mean
I
could
like
keep
a
record
of
the
recent
ones
and
like
keep
a
ledger,
you
know
on
the
server
and
the
client
and
say
like
which
ones
I've
gotten.
Is
that?
Oh,
it's
so
simple,
John?
Why
don't
we
just
do
that?
A
What
we
have,
what
we
had
kind
of
determined
after
doing
this
seven
years
ago,
was
that
the
reality
is
that
it's
really
an
app
concern.
There
are
many
apps
where
you
do
not
care
about
missed
messages
like
when
we
built
shooter
the
game
where
we
were
sending
20
frames
of
messages
to
each
client
per
second
and
five
frames
up.
You
don't
care
if
you
miss
a
message
in
there
because
we're
gonna
redraw
it
in
the
next.
You
know
whatever
28
milliseconds
anyway
right,
so
it
all
depends
on
the
application.
A
So,
if
you
care
about
missed
messages,
it's
your
responsibility
as
the
application
developer,
think
about
your
messaging
strategy
and
implementation
and
go
okay.
If
I'm
building
a
chat
app,
it
even
jabber
did
this
right,
the
the
you
know
the
rest
in
peace,
jabber
use
signal
or
for
the
real-time
aspect,
but
it
also
persisted
all
chats
to
a
database,
and
so,
if
you
joined
again
later,
you
would
go.
You
know.
On
the
client
side,
there
were
states
stored
in
index,
counting.
A
Know
where
I
am
because,
like
I,
have
a
timestamp
or
whatever
it
like
a
message,
ID
right
and
it
would
literally
make
a
database
query
like
the
client
would
connect
that
be
a
JavaScript
thing.
It
would
call
it
was
a
Web.
Api
would
say
get
me
all
the
day.
You'll
give
me
the
last
30
check
messages
for
the
room
right
and
then
we
give
you
those
and
then
it
would
make
the
signal
line
connection.
A
So
you
get
them
as
they
come
in
when
you
reconnected,
rather
than
just
relying
on
the
message
replay,
because
we
use
the
signal
a
connection
not
just
to
get
the
messages
like
all
the
typing.
State
is
the
present,
so
everything
went
over
there
signal
our
connection.
You
don't
need
all
that
stuff.
You
just
want
give
me
the
current
state
at
the
point:
I'm
reconnected.
That
makes
sense
to
make
sense,
and
so
it's
up
to
you
to
determine
what
you
need
to
know
in
the
in
the
state
that
you
reconnected
so
you'll
get
an
event.
A
When
we
do
reconnect,
you'll
be
at
a
toll.
Client-Side,
the
connections
got
offline
but
and
we
are
reconnecting
and
we
will
fire
another
event
when
it
is
reconnected
or
if
we
have
to
back
off,
and
so
you
can
write
a
pelagic.
This
is
all
and
reconnected.
Now,
let
me
go
back
to
you
know
whatever
I
stored
when
I
was
told,
I
was
disconnected
and
we
used
that
to
make
an
API
call
or
a
signal
or
a
PC
call
whatever
you
want
to
say,
get
me
everything,
I
missed
and
then
your
app
gets
to
decide.
D
And
the
the
point
that
damien
makes
is
actually
a
point
that
it's
always
painful
not
to
say
especially
like
I've,
talked
about
how
signal
R
is
my
favorite
thing
for
seven
years:
it's
definitely
truism,
but
whenever
I
talk
to
people
and
they're,
like
you
know,
I
can't
figure
out
how
not
to
use
it.
I'm
like
that's
a
problem
yeah
like
that's
a
problem
and
I'm
like.
Let
me
explain
it
to
you
like.
Let's
say
you
want
to
build
it
to
replace
all
of
your
REST
API
s
and
a
shopping.
Cart
experience.
That's
great!
D
B
D
Like
event
grid
or
service
bus
or
rabbitmq
or
MSM
queue
or
something
along
those
lines,
we
just
talked
about
this
last
week
feel
like
I'm
saying
this
everyday.
You
might
have
your
enterprise
and
called
this
your
enterprise
pub/sub
layer,
your
durable
messaging
layer,
that's
right
pick
your
poison
down
here
and
whenever
messages
go
from
this
queue
to
this
key
to
this
queue,
if
you
want
to
notify
some
sort
of
a
UI
where
you
have
a
you
know
signal
on
top
of
that,
as
almost
like,
your
UI
messaging
layer
right,
so
I
person
fired
yeah.
B
A
A
While
the
connection
is
up
within
tolerances
and
both
sides
will
resend,
we
don't
even
do
that
in
signal,
but
once
it
goes
downs
down
like
you,
don't
you
have
you
reconnect
it
and
it's
just
a
new
connection
with
a
new
idea
right
and
then
we
have
other.
So
you
you
have
layers
on
top
of
that
your
protocols
on
top
of
that
messaging
protocols
and
messaging
standards.
You
know
it's
pretty
silly.
A
Your
reliable
messaging
standards
in
this
year,
literally
dozens
and
dozens,
probably
hundreds
of
them
and
then
I've
heard
other
analogies
like
I,
was
with
a
team
that
was
building
a
whiteboard
app
once
and
they
wanted
the
strokes
to
be
durable,
but
they
also
wanted
them
to
be
real-time.
And
so
the
problem
with
the
durable
bus
systems
was
they're.
A
Often
they
were
slower
because
guess
what
durability
means
you've
written
into
three
different
places
and
like
any,
if
you're
on
the
other
side
of
the
planet
at
all,
that's
I
was
done,
and
so
they
had
this
concept
of
wet
ink
and
dry
ink.
And
so
the
wet
ink
would
appear
instantaneously
because
it
went
over
the
signal
connection.
But
the
dry
ink
would
where's
the
ink
dried.
You
could
literally
see
in
the
app
change.
A
Because
what
would
happen
is
you
would
see
the
real-time
pen,
location
and
you'd
seen
this
thing
draw
and
then
once
it
that
that
strokes
have
gone
through
processing,
curves,
smoothing
like
they
had
some
algorithm
for
turning
into
vector
and
that
got
written
into
their
durable
messenger
system
and
then
put
into
a
database
effectively.
That
would
then
the
app
would
pick
that
up
a
couple
seconds
later
and
you
would
see
the
stroke
change
from
the
very
real-time
stroke
to
the
more
durable.
B
A
Because
and
if
you've
ever
there's
some,
what
I've
seen
this
in
a
bunch
of
whiteboarding
apps
where
they
do
that
because
to
get
you
know,
good
real-time
performance
yeah,
you
want
to
kind
of
do
things
faster,
loosen
the
eyes
looking
at
and
then
once
it
stops,
you
want
it
to
like
smooth
cool,
that's
how
they
did
it,
where
ink
drying
and
if
the
wet
ink
went
down
you
just
wouldn't
see
stuff
in
as
a
real-time.
It
would
take
three
or
four
seconds
before
you
would
see
what
the
person
was
doing.
But
that's.
D
D
A
Cosmos
DB,
like
is
one
of
these
amazing
technologies
from
the
very
little
I
know
about
it,
that
kind
of
delivers
on
all
these
things.
We
were
told
we
can't
have
right
in
combination,
you
know
you
can't
have
it's
fast,
it's
accurate
and
it's
durable
and
it's
multi
geo,
replicator,
bable,
bable,
wrap
and
turn.
B
A
It's
still
not
as
fast
as
a
real
time
connection
right,
because
you're
literally
doing
I'm
gonna
send
it
to
you
and
it
gets
broadcast
everyone
else
and
so
yeah.
You
could
totally
imagine
your
system
whatever
it
is.
Gaming
whiteboarding
chat
whatever
it
is.
Will
you
use
cosmos
distributed
database,
basically
as
the
durable
ledger
effectively
of
whatever
things
that
you
choose
to
be
durable
that
were
otherwise
sent
over
the
signal
activation.
D
D
It's
pretty
pretty
cool
idea
go,
but
on
this
streaming
thing
one
thing
I
wanted
to
show
you
here
is
when
we
started
to
talk
about
straining
one
that
when
I
went
to
the
team
stream,
he
was
definitely
one
of
those
things
that
we
could
have
a
lot
of
interesting
discussion
zone
and
it
felt
to
me,
like
the
code,
would
be
amazingly
difficult.
No
I
come
like.
Oh,
my
god
is
like
socket
programming
like
what
does
this
look
like
yeah?
D
And
they
invoke
and
all
kind
of
ideas
I
kept
to
keep
turning
here,
I'm
sorry.
So
what
I've
done
is
I've
pulled
up
vias
from
Mac
here
that
I've
got
running
and
what
you'll
see
is
that
I've
got
this
guy
web
app
right
here.
My
real-time
timer,
so
handsome
one
hit
me
up
the
other
day
and
he
said
he
had
seen
a
demo
I
believe
it
was
I
think
it
was
an
elixir
demo
of
a
real-time
clock
that
went
down
to
I.
Think
thousands
of
milliseconds
so.
A
I
think
what
I
was
doing
if
I
recall
the
frequency
of
the
update
in
elixir
like
it
was
it's
a
single
millisecond
right,
I
think,
even
though
browser
JavaScript
time
as
a
usually
locked
at
16,
milliseconds,
okay,
so
they
were,
they
were
literally
the
server-side
code
I
think
was
to
attempting
to
a
broadcast
on
a
once
millisecond
clock
cycle.
Okay,
because
that's
what
the
default
cycle!
Okay,.
B
B
D
D
Okay
and-
and
we
were
kind
of
expecting
that
tick-tick-tick
really
really
fast
taking
to
happen
it
just
wasn't.
Okay
and
makalah
said
you're
not
doing
it
right.
He
should
use
streaming.
That's
perfect,
I
haven't
you
streaming
yet
I
could
totally
party
on
okay.
So
we
ended
up
looking
at
the
code
together
and
this
is
it
so
effectively
you
would
just
have
you
know
it's
just
like
a
hub
method.
You
would
basically
say
I
have
a
you
know
I'm
gonna
hand,
you
back
a
channel
reader
yeah
a
particular
type.
In
this
case.
D
D
So
and
then-
and
then
in
this
guy,
we're
actually
writing
out
the
actual
you
know
time/date
stamp
to
the
to
the
stream.
So
what
I
could
do
in
this
case
now
I'm
gonna
open
this
up
using
the
command
line
because
cuz,
you
know,
you'll
see
you
in
a
second,
so
I
want
to
go
here
and
just
go
to
tools
and.
A
D
A
A
little
sin
and
build
docks
are
a
little
thin
channel
is
basically
a
single
pub
multi
sub.
Think
I.
Think
it's
single
publisher,
multiple
subscriber
or
is
it
single
Pub
single
sub
I
can't
remember,
someone
will
tell
me
that
lets
you
send
any
T
through
the
channel
and
you
can
back
the
channel
with
whatever
you
like,
but
by
default
you
basically
it's
all
in
proc
writes,
there's
a
clever
queue
behind
the
scenes.
Alright,.
D
D
A
A
D
A
A
A
D
D
D
D
Bits
are
public.
Well,
these
bits
are
indeed
public.
This
is
me
streaming
on
the
dotnet
console
client
right
here.
Actually,
that's
cool,
so
you've
got
the
client
room
here
and
then
the
question
that
I'm
sure
James
wants
me
to
answer
is:
does
this
work
in
xamarin
and
the
question
answer
with
this?
Of
course
it
works
in
xamarin,
so
this
guy
I
could
actually
go
up
here
and
f5.
My
xamarin
app
and
it's
a
really
simple
xamarin-
have
nothing
big
going
on.
But
if
I
open
this
guy
up
you'll
see,
there's.
A
A
And
show
you
CPU,
while
you
do
it.
Oh
you're
in
a
Mac
I
would
need
to
know
how
to
look
at
that.
I
could
just
listen
for
the
fans.
I
guess
yeah
I
can't
click
it.
It
doesn't
matter
that
wasn't
a
diss
on
a
Mac
like
that
any
like
my
fans
get.
B
D
D
D
A
Wrote
signaler
we
went
down
this
whole
rabbit
hole
of
how
how
what
was
the
frequency
faster?
How
yeah
look
at
that?
What
was
the
frequency
of
the
timers
in
net
and
we
ended
up
I.
Remember
writing
these
a
timer
loop
in
net,
because
if
you
use
a
standard
the
standard
things
you
would
do
off
the
top
of
your
head,
they
don't
they
don't
they
only
gate.
A
To
ever
drop
below
that,
you
need
to
write
custom
game
loop
and
like
either
a
mono
game,
had
a
pretty
well
revered
game
loop.
It's
weird,
though,
when
you
write
those
because
you
write
them
and
then,
like
you,
CPU
just
sits
at
100%,
because
there's
game
loops
that
they're
basically
designed
to
sit
there
and
very
accurately
do
a
very
high
frequency,
timer
yeah.
B
A
A
D
That
was
fast
actually
remember.
One
of
the
one
of
the
first
conversations
we
ever
had
about
extremely
difficult
programming.
I
was
pinging
David
and
Damien.
I
was
like
asking
these
really
what
wonky
questions
it
was
right
before
build
yeah
we
had
a
big
demo,
build
and
probably
gamers
like
what
are
you
trying
to
do,
I'm
trying
to
write
a
back
plane
and
he
says
he's
sitting
on
top
of
and
I
was
like
it
doesn't
matter,
and
he
goes
no
stop.
D
The
other
thing
I
would
show
you
guys.
Real
quickly
is
I
love
this.
This
is
cool.
So
around
that
same
time
frame,
we
were
talking
about
back
lines.
It
was
like
the
topic
du
jour.
It
seemed
because
we
had
folks
who
were
deploying
to
app
service
or
at
the
town
was
Web
Apps
and
they
wanted
to.
You
know,
slide
the
slider
and
still
get
you
know
scale
out.
So
we
had
to
come
up
with
a
story
for
him
and
it
wasn't.
It
wasn't
entirely.
D
You
know
a
fun
time,
because
you
know
we
had
three
options
and
all
kinds
of
difficulty
with
all
the
above
options,
and
we
wanted
to
have
something
like
an
azure
service
wanted
it'd
be
great.
If
we
didn't
add,
like
anna
has
your
service,
they
handled
real-time,
oh,
we
do
now
and
our
good
friend,
Anthony
Chu
has
written
a
really
great
blog
post
on
it,
which
I
just
pulled
up.
D
He
has
a
fantastic
demo
that
I'm
going
to
show
you
here
real
quickly
and
what
he's
doing
is
he's
actually
using
a
service
signal
our
so
this
was.
This
was
something
that
I
love.
This
conversation,
people
I,
hear
the
signal
our
service
in
Azure
are
just
talking
to
our
good
friend
Andrew
hall
yesterday,
and
he
is
well.
My
understanding
of
signal
are:
is
that
it's
a
persistent
thing
and
with
functions
being
serviced
like
how
does
this?
You
know,
work
and
I
said
well
effectively.
D
A
A
When
you
then
split
that
out
to
scale
out
with
a
signal
or
service,
you
still
have
your
web
app
in
that
world
and
your
hubs
are
there
and
the
code
for
the
hubs
stays
in
your
web
app.
But
the
signal
a
service
is
the
one
that
gets
all
the
connections
and
then
it
basically
proxies
yes,
when
your
web
app
and
the
signal
are
connection,
so
the
similar.
A
B
A
A
Stuff
still
works,
but
in
this
model
you
then
remove
the
click.
The
app
server
app
is
gone
right,
so
you
still
have
signal
or
services
endpoints
and
like
a
URL
and
bring
your
clients
connect
to
that
for
it
and
said,
but
they
can't
do
anything
right
because
if
they
client
code
says
send
a
message:
it'll,
there's
no
one's
listening,
they're
listening,
then
no
one
well
hang
on
until
I
had
something
else
right.
So
I
took
away
my
web
app,
but
now
there's
no
hub
well.
A
D
A
A
speed
networking
on
from,
like
the
mental
model,
I
think
that
we
take
people
from
you.
Have
an
agent
call
signal
or
app.
You
split
it
apart,
correct
the
connections
and
then
I
take
get
rid
of
the
app
right.
So
if
I
didn't
do
anything
else
at
that
point,
I'd
have
a
pretty
useless
experience
records.
My
connections
would
be
connected
at
the
service.
They
try
to
send
a
message
and
no
one's
listening
right.
Then
you
add
an
azure
function,
correct
which
can,
via
basically
a
web
hook
effectively
effectively.
It
can
so.
A
D
Exactly
exactly
and
the
way
that
works
is,
you
know,
show
of
hands
anybody
the
audience
for
those
of
you,
who've
ever
actually
written
in
a
signal
or
hub
and
you've
had
to
do
something
with
stay.
P
I
that
like
works
with
your
hub,
so
you
would
send
a
message
you
would
do
an
HTTP,
POST
or
and
get
to
your
server
using
your
you
know
web
api
and
then
on
the
server
side.
You
would
turn
around
and
bounce
a
message
out
to
by
to
your
signal
our
hub.
D
Some
people
have
done
this
kind
of
thing
in
the
past
effectively.
That's
exactly
what
goes
on
in
the
signal,
our
service.
They
actually
have
a
REST
API
and
when
you
send
a
message
to
that,
REST
API
and
it's
actually
documented
in
Doc's,
okay,
you
said
to
message
that
API,
you
you
say,
I
want
you
to
send
a
message:
send
chat
message:
okay,
I!
Don't
want
you
to
send
this
as
a
payload.
What
it'll
do
is
it'll
send
a
message
into
the
cloud
into
the
azure
signal
or
service
inside
the
address
ignore
service.
D
There's,
probably
a
hub
I,
don't
know
the
implementation
details.
That's
a
David
question,
but
when
it
goes
into
the
signal
or
service,
all
the
all
the
connected
clients
are
connected
to
the
signal
or
service.
Yes,
it
sends
a
REST
API
call
in
and
then
the
service
turns
around
and
sends
a
message,
a
broadcast
message
back
out
all
of
those
individual
clients.
Okay,
so.
A
Theoretically,
the
hub
is
a
programming
construct
under
their
covers.
It's
all
based
on
signals
correctively,
which
is
just
like.
Oh,
the
signal
has
a
name
correct.
Your
hub
has
a
type
name,
so
we
derive
a
signal
from
that
name,
etcetera,
etcetera,
correct.
So
this
model,
this
server
a
signaler
model
currently
as
I,
understand
it
and
tell
me
if
I'm
wrong,
doesn't
support,
processing
messages
that
clients
seem
correct.
There
isn't
like
a
web
hook
correct
the
service
will
send
to
your
as
a
function,
let's
say
or
a
client
sent
you
a
message.
D
D
A
A
You
can
only
get
it
if
you
want
to.
You
want
to
accept
messages
from
clients
like
the
client
streaming
you're
doing
before
you
have
to
still
be
running
in
a
snake
or
a
pond.
The
server
somewhere
correct,
okay,
correct,
but
you
could
imagine
in
the
future,
and
maybe
we
would
support
certain
scenarios,
yeah
or
application
models
that
are
serviced
and.
D
Okay,
we've
talked
about
a
couple
different
ways
to
do
it,
such
as
event
create
or
event
helps,
or
you
know
what
thing
in
Azure
do
we
want
to
send
a
message
to
you
know
what
I
mean
like
you
got
to
remember
it's
service,
there's
no
server,
they're
back,
you
know
back
there,
there's
no
hole
back
there
so
and
if
there
is
you're,
I'm
Angie,
so
to
speak,
okay,
but
you
can
do
a
lot
of
crazy
stuff
with
this,
like
you
know,
one
of
the
cool
things
is
that
you
know
I've
seen
Anthony
do
with
this
is
like
you
know,
you
were
consultant
before
he
came
to
Microsoft.
D
Probably
did
a
lot
of
this
thing
called
integration?
Yes,
so
you
can
do
a
lot
of
integration
with
signor
and
the
different
services
and
measure
what
I'll
show
you
is
a
quick
little
demo
if
I
can
get
it
running,
I
did
try
it
out
last
night.
Let
me
go
into
LS
C
source
and
then
I
want
to
go
into
the
JavaScript
function.
D
Now
Anthony
has
literally
got
a
JavaScript
function
running
right
here,
I'm
just
gonna
run
this
mi
like
run
it
right
here
on
my
computer,
I'm,
not
gonna,
run
in
the
cloud,
so
I'll
just
do
func
start
and
then
actually
run
this
javascript
function
right
here
in
the
functions,
tools
and
you'll,
see
that
I've
got
my
functions.
Lighting
up
right
here
and
I'll.
Just
do
a
new
guy
here,
I'll
CD
in
the
source
and
then
go
into
my
view.
App
because
he's
doing
this
in
vu
and
then
I
would
say,
npm
run
serve.
D
Sorry,
this
guy
I
will
put
sorry
put
this
guy
here
and
then
this
one
I'm
going
to
put
here
and
I've
actually
got
a
cognitive
services
key.
He
already
set
up
so
I've
done,
set
this
up
here
and
what
I
would
do
and
this
guy
let's
copy
this
over
and
go
to
this
and
this
time
I
want
to
join
a
captioning
session.
C
A
To
ask
you
ruined
this
Anthony
so
hang
on,
this
is
using
the
browser's
Audio
API
microphone
API
to
capture
what's
going
on
and
on
the
client
side.
It
turns
it
into
text,
or
is
that
doing
it
through
our
cognitive
services,
the
former
the
former?
So
there's
a
client-side
API
that
says,
take
audio
and
turn
it
into
text.
There's
a
cognitive
services:
JavaScript
API
SDK
wait,
but
there's
a
process
at
locally
or
does
it
send
it?
It.
A
B
A
A
C
A
A
A
Hang
on
is
making
like
a
rest
call,
that's
not
over
singing
it's
it's
making
the
I
think
the
browser
is
making.
D
A
A
D
A
D
I
had
this
conversation
with
our
good
friend
Karl
a
while
back,
and
he
said
I
believe
he
told
me
it
was
a
member
of
Steely
Dan
reached
out
to
him,
which
I'm
sure
Ryan
will
love,
and
he
said
that
you
know
I.
Think
I
talked
to
Galloway
about
this
because
he's
a
musician
as
well
like
the
holy
grail
for
anybody
who's
a
musician
is
I
want
to
do
live
jamming
from
anywhere
with
anybody
anywhere
else.
But
there's
this
thing
called
you
know
you
know
file
size.
D
It
becomes
a
little
bit
problematic,
so
we
started
to
take.
You
know,
look
at
different
ways
that
we
can
actually
build
a
lot
of
jamming
thing
and
I
said
well,
let's
just
do
this
with
MIDI
data,
so
you
know:
MIDI
data
is
pretty
small,
its
numbers
between
1
and
16
and
1
and
127.
We
could
just
transmit
that
data
as
a
signal
our
payload
and
handle
it.
D
So
I've
actually
got
code
running
on
my
Mac
here,
written
and
dot
net
core
that
actually
uses
a
open
source,
MIDI
library,
MIDI
musical
instrument,
digital
interface
and
the
idea
behind
this
is
I've.
Got
this
sampler
right
here
on
the
desk.
I'll
hold
this
up
in
the
can,
so
in
the
camera.
So
people
don't.
C
D
D
So
what
I
can
do
here
is
I've
actually
got
this
tiny
little
client
running
here
and
all
it
does
is
it
sets
up
a
MIDI
connection
to
this
device
and
it
starts,
and
that
sets
up
a
signal,
our
connection
and
it
starts
listening
for
messages
coming
out
of
signal
R.
So
what
I'm
gonna
do
here
is
actually
debug.
This
application
on
my
little
computer
here,
I've
got
to
set
up
here,
I'm,
not
going
to
run
the
local
web
I'm
just
going
to
run
the
console,
client
and
pray
it
works.