►
From YouTube: npmCamp 2016 - Node.js and Microsoft: A love story about developer tools by Sara Itani
Description
Node.js and Microsoft: A love story about developer tools by Sara Itani
A
A
A
A
You
can
imagine
my
surprise
when
you
know
I
saw
everyone
jumping
on
this
node
bandwagon,
ranging
from
startups
to
large
scale
enterprises
and
I.
Just
couldn't
figure
out
what
was
going
on.
I
I
didn't
understand
how
you
could
actually
like
put
some
of
your
core
business
logic
and
and
have
that
implemented
in
JavaScript,
so
I
was
skeptical
at,
but
now
two
years
later,
I
think
I
think
I,
finally
get
it
and
so
I'm
gonna
try
and
share.
You
know
my
my
aha
moment
with
you
all.
A
Whenever
we're
designing
an
application
there's
more
to
it,
then
you
know
just
making
it
the
fastest
application
around
or
making
it
as
quickly
as
quick
as
possible
to
spin
up
a
a
prototype
right.
There's
it's
a
balance
of
a
bunch
of
different
pieces,
and
so
the
way
I
like
to
think
about
it
is
its
balance
between
speed
and
productivity
and
flexibility
and
I.
Think
that
node
in
particular,
is
a
really
good
balance
of
the
three
of
these
and
so
I'll
just
rush
through
the
these
real
quickly.
A
But
first
it's
super
fast
and
you
know
coming
from
the
dotnet
world.
I
didn't
totally
understand
this,
because
it's
like
okay,
asynchronous
and
non
blocking
by
default,
big
deal,
we
have
async
await
and
you
don't
even
have
to
deal
with
callback
hell
so
great,
but
the
great
thing
about
node
is
that
this
this
default
thing
right.
It's
the
fact
that
it's
asynchronous
by
default
means
that
you
don't
have
to
worry
about
checking
every
package
or
library
in
order
to
know
whether
you
can
use
that
in
your
application
in
a
performant
manner.
A
Secondly,
you
know
it
was
built
on
combs
v8
engine,
and
you
know
vm
neutrality,
discussions
aside,
that
was
the
fastest
JavaScript
engine
at
that
time,
and
then
you
know
note
itself.
Just
like
you
know
all
the
modules
that
we
have
an
NPM
right
has
this
lightweight
and
optimized
core,
and
that
philosophy
you
know
is,
is
a
really
embodied
throughout
the
community.
A
Secondly,
a
little
bit
of
code
goes
a
long
way.
That
was
the
one
thing
that
shocked
me.
So
much
is
just
how
quickly
you
could
just
start
getting
productive
with
a
new
framework
or
with
a
new
library,
and
and
that's
because
you
know
of
the
incredible
NPM
community
that
we
have
where
I'm
afraid
to
ever
even
quote
a
number
of
how
many
packages
there
are
because
it'll
be
out
of
date.
A
The
second
that
I
say
that
and
so
because
of
all
the
and
you
can
also
you
know,
develop
isomorphic
applications
and
all
that
and
then
the
last
piece
is
that
you
can
develop
how
you
want-
and
this
was
the
thing
that
you
know
really
like
when
you
start
out-
building
an
application.
You
might
start
out
with
a
model
at
the
gap.
I
know
microservices
are
all
in
vogue
these
days.
But
the
fact
is,
it's
easier
to
reason
about
that,
but
then,
with
node
it
becomes
easier
to
cut.
A
You
can
choose
where
you
want
to
be
on
that
slider,
you
can
choose
whether
you
want.
You
know
dynamic
typing
or
you
can
go
to
the
other
end
with
static
typing
in
typescript
and
you
can
choose
where
you
want
to
be,
and
so
that's
that's
one
of
the
things
that
I
felt
was
really
really
powerful.
Is
that
the
application
really
grows
with
you,
and
so
that's
why
you
know
node
was
so
exciting,
and
that
was
that
like
clicking
that
that
that
point
that
made
it
all
click
for
me.
A
But
then
the
question
is,
you
know
why.
Why
is
Microsoft
interested
in
node?
Why
you
know
why
do
we
care
as
a
company-
and
the
answer
is
and-
and
this
is,
is
that?
Well
it's
no
good
way
to
say
this,
but
it's
not
us.
It's
you
you're
building,
all
these
incredible
applications,
you're
building
up
this
incredible
community,
and
we
want
to
support
you
in
those
efforts
and
we
think
we
can.
But
whenever
I
say
this
undoubtedly
you
know
the
response
ends
up
being
something
like
hey
Microsoft.
A
A
A
But
luckily
there
have
been
you
know
some,
but
we've
been
working.
You
know
to
improve
that
and
actually
the
the
biggest
improvement
to
that
was
NPM
v3,
and
that
was
so,
which
installs
everything
maximally
flat
by
default,
which
has
gotten
most
people
around
a
lot
of
their
max
path.
Issues.
Additionally,
at
Microsoft
we're
making
a
bunch
of
dotnet
core
improvements
were
also
you
know
like
invest
doing
some
investigations
on
the
windows
side.
It's
actually
by
the
way.
A
Dotnet
core
now
supports
long
file,
path,
names,
so
awesome
and
then
yeah
so
Windows
we're
also
looking
at
those.
You
know
we'll
take
a
little
bit
more
time
to
percolate
through
the
ecosystem.
But
hopefully
you
know
that's,
that's
the
progress
there,
a
second
pieces
native
modules
on
Windows.
So
does
anyone
remember
this
thread
because
I
do.
A
It's
sort
of
so
it
sort
of
started
with
basically
native
modules
are
when
you're,
you
know
calling
it
to
C++
from
your
JavaScript,
and
this
ends
up
getting
very
confusing
for
people
be
for
JavaScript
developers,
because
they're
not
C++
developers
necessarily,
and
so
they
look
at
this
and
they're
like
what
is
all
this
c++
doing
in
my
javascript,
and
why
are
all
these
cryptic
compiler
errors?
Why
do
they
keep
popping
up?
And
it
was
a
generally
confusing
time,
and
so
that
led
to
this
issue,
which
it
the
problem
with
broad
titles
on
issue
threads?
A
Is
that,
like
it's
sort
of
trend,
send
it
into
a
thread
for
everyone
who
was
on
Windows
and
was
generally
unhappy?
And
so,
as
you
can
imagine,
it
got
really
really
long.
This
is
actually
an
old
screenshot,
I.
Think
it's
up
to
500
some
or
something
by
this
point,
and
so
we
worked
to
you
know,
help
address
a
lot
of
that.
A
So
now
this
is
just
with
the
minimal
set
of
the
compiler
bits,
and
so
the
C++
team
did
an
absolutely
fantastic
job
with
that,
and
then
you
know.
Secondly,
we've
you
know
consolidated
the
instructions
so
that
there
were
like
you
were,
like
paths
that
you
could
go
down:
paths
of
pain
that
you
could
you
could
go
down
and
then
but
but
that
wasn't
enough,
so
you
know
recently.
A
We
just
released
this
sort
of
experiment,
I
guess
it's
it.
It
apparently
is
working
for
most
people,
but
I
wouldn't
say
it's
been
like
validated
every
single
scenario
as
well
as
it
could
be.
That's
where
you
guys
can
come
and
help.
So
now
you
can
install
the
windows,
build
tools
right
through
NPM
and
yeah.
So
far,
people
are
pretty
happy
with
with
that,
and
the
thread
is
closed.
A
A
Lastly,
the
windows-
CLI-
and
you
know-
we've
been
you-
know,
seeking
feedback
on
this
and
figuring
out
exactly
where
you
know
we
should
improve,
but
it
turns
out
really
what
people
wanted
was
they
just
wanted
to
use
bash?
It
wasn't
about
like
any
of
the
features
in
particular
with
the
windows.
Cli
was
just
like
Oh
bash
is
awesome,
so
we
did
that
too.
So
recently,
we
introduced
bash
on
windows,
so
it's
the
windows
subsystem
for
linux,
and
so
that
one
is
preview
is
it's.
A
You
know
first-class
development
tools
and
environments,
and
so
we
want
to
bring
the
magic
of
Visual
Studio
to
the
node
community.
That's
our
goal
with
with
much
of
this,
and
so
we
have
two
different
offerings
here.
We
have
Visual
Studio
code,
and
actually
it
was
pretty
cool
to
see
a
few
of
the
demos
here,
we're
actually
using
that.
So
that's
our
new
free
open-source
lightweight
editor
has
debugging
and
intellisense
or
code
completions
intellisense
is
our
marketing
term
for
it,
and
we
also,
if
you
really
love
visual
studio.
A
We
also
have
support
awesome
support
for
that
with
there
too.
So
that
goes
even
further
with
profiling
and
cloud
deployments
and
that
kind
of
stuff,
but
today
we're
going
to
be
demoing
a
visual
studio
code
and
I
we're
going
to
be
the
cool
thing
about
building
developer
tools
is
that
you
get
to
spend
like
a
lot
of
your
time
like
testing.
A
The
application
means
writing
ridiculous
applications,
and
so,
in
this
case,
the
ridiculous
application
that
we're
going
to
build
is
a
Twitter
bot,
because
you
know
okay,
so
sometimes
I
get
a
little
bit
nervous
on
stage
and
I
I
wanted
to
make
a
twitter
bot.
That
would
just
provide
a
little
bit
of
like
positive.
You
know,
inspiration
and
and
so
see.
A
You
can
see
that
the
first
thing
is
that
we've
commented
out
the
the
sentence
here,
so
the
bot
will
not
go
row,
we're
not
in
danger
important,
and
you
know
the
first
thing
that
you
know
this.
This
has
just
opened
up.
You
see,
we
have
you
know,
package
jasa
and,
like
all
the
stuff
that
we're
used
to
and
but
we've
added
you
know
bit
of
functionality
to
make
the
experience
a
little
bit.
A
A
Okay
I
was
like
I'm,
going
crazy,
I'm,
really
bad
at
multitasking
as
well,
so
there
we
go
so
multiply
and
now
you
know
we
can
take
in
actually
I
bet,
I
want
to
do
mult
dot
and
now
we're
seeing
all
the
completions
that
are
four
numbers
and
and
that's
just
because
we
see
that
hey,
we
fed
these
values
and
under
the
covers,
we
have
actually
the
typescript
compiler
taking
all
of
this,
so
whether
you're
working
in
JavaScript
or
typescript
typescript
is
basically
like.
You
know
a
really
like
a
linter
on
steroids.
A
You
can
think
of
it
as
and
so
the
typescript
compiler
will
take
in
both
typescript
JavaScript
and
we
can
provide.
You
know
some
element
of
help
for
you
there,
but
then
you
know
once
we
get
beyond
some
of
the
basic
so
that
intellisense
or
the
code
completions
is
also
really
helpful
for
making
better
navigation.
So,
for
instance,
I
have
this:
let's
see
so
get
inspiration
right,
pretty
important
method.
I
can
go
ahead
and
look
into
that
and
I
can
see
all
of
the
usages
of
get
inspiration.
A
And
then,
once
you
know,
I
have
retrieved
my
you
know,
inspiration
I,
can
you
know
navigate
back
and
forth.
So
these
are
some
of
the
things
that
you
know.
We
try
and
make
sure
are
as
easy
as
possible
for
you
to
do,
because
you
know
it
shouldn't
and
so
then
you
know
beyond,
but
we
haven't
actually
started
running
the
application
yet
and
so
let's
go
ahead
and
and
do
that
and
start
seeing
how
it
works.
A
We're
going
to
go
ahead
and
press
f5
so
in
this
case
to
launch
the
debugger
and
we'll
see
what's
going
on
so
the
first
thing
is
that
we're
defining
a
bunch
of
stuff,
okay,
awesome
and
we're
going
to
listen
on.
You
know
a
bunch
of
tweets
so
like
whenever
I
tweet,
then
it's
going
to
send
me
some
piece
of
inspirational
feedback
and
so
we're
going
to
continue-
and
I
think
I
have
a
break
point
set
down
here
great.
A
So,
oh,
okay!
Well
thanks
Ashley,
for
you
know,
typing
in
the
my
tweet,
so
I
do
love
this
community,
so
I'm
going
to
go
ahead
and
just
post
that
and
so
right
now.
What
you
see
is
that
we're
going
to
the
first
thing:
oh
I
didn't
mention
we're
going
to
upload
an
image,
because
ok,
so
I
asked
Isaac
beforehand
like
whether
he
would
just
give
me
full
access
to
his
Twitter
account
and
he
said
no
for
some
reason.
So
we're
going
to
have
to
go
for
the
next
best
thing,
which
is
a
bobblehead
of
Isaac.
A
Let's
go
and
great,
we've
gotten
our
inspiration,
and
so
now
we
can
go
and
we
can
look
at
the
tweet
and
look
at
I
love
this
community
undefined.
That's
not
very
inspiring
okay.
Well,
luckily,
we
have
a
debugger,
so
we
can
figure
out
what's
going
on,
so
let's
go
ahead
and
run
that
again
and
we're
going
to
this
time
so
run
past
the
you
know
us
that
and
then
another
tweet
undefined
is
not
inspiring.
A
Okay,
great
so
now
we
can
actually
start
stepping
through
and
see
exactly
what
went
wrong
and
so,
as
you
can
see,
I've
set
a
break
point
on
this
line,
which
is
where
we're
getting
the
status
and
we're
going
to
go
ahead
and
step
in
to
get
inspiration
and
we're
going
to
go
ahead
and,
as
you
can
see
ya,
you
know,
our
message
is
undefined
and
okay,
inspiration
is
good
index.
Okay,
not
so
good.
So,
okay
I
see
so
basically
we're
missing
a
math
dot
floor
over
here.
So
we
can
go
ahead.
A
A
A
A
So
in
this
case
this
is
actually
the
this
is
the
lunch
configuration
that
I'm
currently
running
with
which
just
says
lunch,
node
and
attached
it.
You
know
with
two
on
server
Jas,
but
a
lot
of
people
use
node
mon
to
restart
their
processes,
and
everything
like
that.
So
we
also
have
support
for
that
there.
So
if
you
do
node
mine,
debug
server
a
yes,
then
it'll
go
ahead.
It'll
break
at
the
first
line.
That'll
give
us
a
moment
to
attach
our
debugger
and
we
can
go
ahead
and
start
actually
stepping
through
the
code.
A
And
then
you
know
if
we
change
something
to
I,
don't
know.
Ag
is
the
thigh
how
your
handle
is
AG
underscore
dubs
there
we
go
sweet,
and
so
we
can
go
ahead
and
change
things
and
now
it'll
go
ahead,
restart
reattach
the
debugger
and
everything
like
that.
So
you
don't
have
to
keep
switching
back
and
forth
every
time.
A
So
those
are
some
of
the
cool
features
that
I
definitely
urge
you
to
check
out
by
the
way,
the
way
that
we
get
intellisense
on
some
of
the
like
node
modules
or
anything
like
that.
It
comes
from
typing's
file.
The
definitely
typed
file
which
you
can
get
by
going
to
do.
Ting,
Taipings
install-
and
so
if
I
wanted
to
use
Express
I
could
use
express
it,
but
I
forget
typings
as
new
way
of
it's
like
DTS
squiggly
I'll,
try
it
but
I,
don't
think
it's
going
to
work,
DTS,
Quigley,
Express
and
then
was
it
global.
A
That
is
that
right,
I,
don't
know,
I
never
knew
what
that
meant.
I
just
it
was
like
the
thing
that
you
typed
in
afterwards
I
think
they
might
have
changed.
Oh
yeah,
I
was
sentient
before
or
no
notnot
said
to
you.
I
was
that
that
was
the
the
robot
okay,
so
Global's
expressed,
and
then
now,
if
we
start,
you
know,
referencing
Express
far
express
equals
require
Express.
A
A
But
you
know
that
all
is
great
if
you're
running,
if
you
are
running
your
application,
you
know
locally,
but
not
so
great.
If
you
know
something
happens
during
production,
which
brings
us
to
have
a
slide
for
this
time,
travel
debugging,
so
marketing
has
apparently
gotten
you
know
better
for
us.
We
used
to
say
things
like
intellitrace
or
actually
marketing
hasn't
gotten
to
this.
Yet
that's
why
it's
called
that
Oh.
A
A
Basically,
you
know
instead
of
using
v8
to
power
as
the
JavaScript
engine
to
power
node,
we
you
know,
are
trying
to
make
things
vm
neutral
and
we're
using
chakra
and
and
so
we've
started
working
on
that
everything
is
totally
open
source
and
you
know
we're
working
with
the
community
on
that
now.
One
of
the
you
know,
advantages
of
or
one
of
the
things
that
we
also
have
been
doing
on
the
side
is
MSR
had
been
working
on
this.
A
You
know
time
travel
debugging
and
it's
actually
been
around
for
a
while
this
concept,
it's
varun
for
20
25
years
now,
but
the
main
hold
back.
There
was
always
that
it
wasn't
very
performant,
and
so
you
know
like
it
would
add.
You
know
two
times
you
it
would
double
the
you
know
the
the
application
latency
by
like
two
times,
and
so
now,
we've
actually
gotten
to
a
point
where
we're
able
to
so
now.
A
We've
actually
gotten
to
a
point
where
we're
able
to
make
things
a
whole
lot
more
performant
based
off
of
some
new
research
from
MSR,
which
basically
is
like
okay.
Well,
the
runtime
is
doing
a
lot
of
work
for
us.
What
if
we
used
some
of
the
runtime
information
that
it's
collecting
in
order
to
make
things
easier,
and
so
one
of
the
cool
things
that
you
know
has
come
out
of.
A
Deep
process
and
we've
seen
that
we
got
this,
see
that
one
is
more
inspirational.
Nice
tweet
rather
than
nobody
is
perfect,
and
what
we
can
do
is
now
I've
configured
it
so
it'll
actually
just
go
ahead
and
replay
rather
than
then
then
running
it
locally,
and
you
can
see
that
it's
hit
this
status,
and
so
we
can
actually
jump
back
and
us
see
like.
Basically,
you
can
actually
jump
back
in
your
state
and
see
where
the
application
was
at
so
right
now.
You
know
we
see
the
status
and
right
now
it
is
come
on
undefined.
A
We
jump
forward
one
more
and
we
find
that
it's
mousetraps
nice
tweet,
and
so
this
is
really
useful.
We're
hoping
that
it'll
be
used
for
like
debugging
production.
You
know
machines
and
everything
like
that
where
you
just
can't
reproduce
that
problem
you're
dealing
with
a
bunch
of
other.
You
know
web
servers
and
everything
there.
So
it's
a
time
travel
a
bit
and
then
I'll
wrap
up
right
now,
but
that's
pretty
cool
right.
You
can
step
back
in
the
debugger
and.