WEBVTT
00:00:00.000 --> 00:00:07.981
[MUSIC]
00:00:07.981 --> 00:00:10.128
Hey everybody, thanks for
joining us on codechat.
00:00:10.128 --> 00:00:11.821
My name is Jeremy Foster and
00:00:11.821 --> 00:00:15.071
standing about four feet
to my right is Daniel Egan.
00:00:15.071 --> 00:00:16.209
>> Hello, nice to meet you.
00:00:16.209 --> 00:00:20.040
>> Daniel is my contemporary
in the Southern California.
00:00:20.040 --> 00:00:20.656
>> Yep.
>> So
00:00:20.656 --> 00:00:23.431
he's normally about six
million feet south of me.
00:00:23.431 --> 00:00:26.147
>> Yes, and
it's quite a bit warmer as well.
00:00:26.147 --> 00:00:29.201
>> [LAUGH] But he's up here
in the Seattle area so
00:00:29.201 --> 00:00:33.022
we decided to record a codechat
>> You're working on MEAN stack
00:00:33.022 --> 00:00:33.759
these days.
00:00:33.759 --> 00:00:34.933
Can you tell us about that?
00:00:34.933 --> 00:00:39.078
>> I am, I am, I decided to
break out of my comfort zone.
00:00:39.078 --> 00:00:42.331
Been a .net developer for
20 plus year, and
00:00:42.331 --> 00:00:46.336
decided to dive into the MEAN
stack and do a series of what I
00:00:46.336 --> 00:00:49.768
experience in it and
teach people along the way.
00:00:49.768 --> 00:00:51.485
>> Well, kudos.
00:00:51.485 --> 00:00:56.232
The water's warm here, so
I have you in the node world.
00:00:56.232 --> 00:00:58.262
This is kind of
a migration story then,
00:00:58.262 --> 00:01:01.223
we're not migrating a code base,
we're migrating at.
00:01:01.223 --> 00:01:04.942
>> We're migrating me,
yeah, migrating me, yeah,
00:01:04.942 --> 00:01:08.586
it's been interesting,
to kinda dive into this.
00:01:08.586 --> 00:01:13.317
As we kinda talked before,
you're used to certain things,
00:01:13.317 --> 00:01:17.306
certain tools, and
certain ways of doing things,
00:01:17.306 --> 00:01:19.903
when you've done a developer but
00:01:19.903 --> 00:01:23.924
Jumping into the mean
stack it's just different.
00:01:23.924 --> 00:01:27.294
>> Do you think there's
something unique about a .net
00:01:27.294 --> 00:01:30.893
developer or is it the same
story if a persons moving from
00:01:30.893 --> 00:01:33.661
any code base or
frame work to another one?
00:01:33.661 --> 00:01:37.330
>> I think it's
the type of developer.
00:01:37.330 --> 00:01:40.526
So I think most of my career,
I was an enterprise developer,
00:01:40.526 --> 00:01:42.733
right, so
it's a lot of back-end code.
00:01:42.733 --> 00:01:46.840
I did some front-end stuff, but
my front-ends were gray and
00:01:46.840 --> 00:01:47.395
bland.
00:01:47.395 --> 00:01:48.033
>> [LAUGH] Battleship.
00:01:48.033 --> 00:01:50.745
>> Yeah, like a lot of
developers that aren't really
00:01:50.745 --> 00:01:51.447
designers.
00:01:51.447 --> 00:01:55.672
And so you're knee-deepened and
back-end code.
00:01:55.672 --> 00:01:59.229
And you're back in codes in
C Sharp and maybe you're dealing
00:01:59.229 --> 00:02:02.738
with object relational mappers,
and that types of stuff.
00:02:02.738 --> 00:02:04.875
But it's very structured and
very contained.
00:02:04.875 --> 00:02:05.432
>> Yeah.
00:02:05.432 --> 00:02:09.489
>> And again, you just get
used to what you know.
00:02:09.489 --> 00:02:10.223
>> Yeah.
>> And
00:02:10.223 --> 00:02:14.461
jumping into MEAN stack
breaks you out of that.
00:02:14.461 --> 00:02:17.956
The first thing you realize
is the command line.
00:02:17.956 --> 00:02:20.382
I actually never was
a command line guy.
00:02:20.382 --> 00:02:21.020
>> Mm-hm.
00:02:21.020 --> 00:02:26.390
>> I wasn't a guy that grew up
on a TRS-80, punching out code.
00:02:26.390 --> 00:02:29.850
I grew up in coding
starting in the 90s.
00:02:29.850 --> 00:02:30.554
>> Mm-hm.
>> So
00:02:30.554 --> 00:02:33.603
that was the era of the GUI.
00:02:33.603 --> 00:02:36.588
Even networking was GUI.
00:02:36.588 --> 00:02:39.723
Our company at the time switched
from Novell to Microsoft,
00:02:39.723 --> 00:02:42.918
I think essentially, because
instead of using command line
00:02:42.918 --> 00:02:46.115
switches you can do right-click,
and set properties, and
00:02:46.115 --> 00:02:47.325
manage your network.
00:02:47.325 --> 00:02:50.709
And so
it's been interesting to me,
00:02:50.709 --> 00:02:53.554
kinda going back a little bit.
00:02:53.554 --> 00:02:57.034
I find myself doing simple
things like response.write and
00:02:57.034 --> 00:02:59.479
debugging that like
you used to do in ASP.
00:02:59.479 --> 00:03:01.148
>> Yeah.
>> Back in the day just to
00:03:01.148 --> 00:03:03.103
figure out where I am and stuff.
00:03:03.103 --> 00:03:06.803
>> It's interesting that I don't
know why I expect that there
00:03:06.803 --> 00:03:10.061
should be this one interaction
technique like GUI or
00:03:10.061 --> 00:03:12.506
command line That
will do everything,
00:03:12.506 --> 00:03:14.726
like there's a right
way to do it and
00:03:14.726 --> 00:03:18.156
we're all trying to converge
to the right way to do it.
00:03:18.156 --> 00:03:19.653
I don't think that's
the case at all.
00:03:19.653 --> 00:03:22.611
Like most other experiences
it's gonna be a hybrid.
00:03:22.611 --> 00:03:26.214
They're gonna be somethings that
work better in this way, and
00:03:26.214 --> 00:03:28.598
some things that work
better in this way.
00:03:28.598 --> 00:03:30.870
There's some things I want
to do on the command line,
00:03:30.870 --> 00:03:32.440
other things I really
want a UI for.
00:03:32.440 --> 00:03:34.913
>> Although there's fighters,
so there's fighter symbols.
00:03:34.913 --> 00:03:36.615
>> Yeah on both sides.
>> With people that will
00:03:36.615 --> 00:03:39.049
make sure they do
absolutely everything in
00:03:39.049 --> 00:03:42.361
the command line and they'll
fight and fight not to do it,
00:03:42.361 --> 00:03:44.133
and same thing on the GUI side.
00:03:44.133 --> 00:03:45.171
And quite honestly,
00:03:45.171 --> 00:03:47.600
when I first started I
tried to do everything GUI.
00:03:47.600 --> 00:03:48.204
>> Yeah.
00:03:48.204 --> 00:03:51.622
>> I tried to do get with GUI,
I tried to do Mongo,
00:03:51.622 --> 00:03:55.920
DV has robo Mongo and stuff,
that gives you a nice visual,
00:03:55.920 --> 00:03:58.145
which is good for an augment.
00:03:58.145 --> 00:04:02.005
But I came to find out a lot
of samples, a lot of examples,
00:04:02.005 --> 00:04:05.315
a lot of tutorials,
they're all command line.
00:04:05.315 --> 00:04:07.523
So you just gotta
bite the bullet and
00:04:07.523 --> 00:04:11.063
go back to remembering switches
in your head, you know?
00:04:11.063 --> 00:04:14.843
>> I think about the fact that
here I've got a laptop with
00:04:14.843 --> 00:04:18.623
a keyboard and a mouse, and
screen, a touch screen.
00:04:18.623 --> 00:04:21.985
And when I'm using the computer,
there are times when the very
00:04:21.985 --> 00:04:25.156
fastest thing I can do is touch
the button on the screen, and
00:04:25.156 --> 00:04:27.265
others where I should go for
the mouse.
00:04:27.265 --> 00:04:28.792
>> Yeah.
>> Because I'm gonna need to
00:04:28.792 --> 00:04:30.792
have some more fine
control over the cursor.
00:04:30.792 --> 00:04:32.812
And other times where I'm just
using my keyboard shortcuts.
00:04:32.812 --> 00:04:36.327
I'm very multi-modal, I'm
very hybrid in the way that I
00:04:36.327 --> 00:04:38.907
interact with my PC as
far as the In put, and
00:04:38.907 --> 00:04:42.013
it's the same way as far
as the user interfaces go.
00:04:42.013 --> 00:04:42.616
>> Right, right.
00:04:42.616 --> 00:04:45.195
>> I think we're all
very multi motile.
00:04:45.195 --> 00:04:47.538
Okay so let's talk about
your comfort level.
00:04:47.538 --> 00:04:51.426
>> [LAUGHS] Moving from
one language, stack,
00:04:51.426 --> 00:04:53.961
framework to another is hard.
00:04:53.961 --> 00:04:55.388
Everything's different.
00:04:55.388 --> 00:04:58.169
And I always tell people
learning the syntax of
00:04:58.169 --> 00:04:59.606
a language is not hard.
00:04:59.606 --> 00:05:01.667
Most of them are the same,
you know?
00:05:01.667 --> 00:05:04.517
What's hard is learning
the new object models, cuz
00:05:04.517 --> 00:05:07.949
you get into this new space and
you're used to say .toString or
00:05:07.949 --> 00:05:11.187
you're used to upper, whatever
your object model is, and
00:05:11.187 --> 00:05:13.419
now all of a sudden
it's all different.
00:05:13.419 --> 00:05:17.918
And also moving from .NET which
is a very unified, very curated
00:05:17.918 --> 00:05:21.667
platform into The Mean stack,
this is not unified and
00:05:21.667 --> 00:05:24.769
curated by any stretch
of the imagination.
00:05:24.769 --> 00:05:29.737
>> No and that's funny, it's one
of the beautiful parts of it and
00:05:29.737 --> 00:05:34.153
the more difficult parts of it
>> Because it is separate.
00:05:34.153 --> 00:05:36.258
If you think of the mean stack,
and
00:05:36.258 --> 00:05:39.027
I don't think we've
even said what mean is.
00:05:39.027 --> 00:05:42.263
>> Right.
>> >It's Mongo, Express JS,
00:05:42.263 --> 00:05:44.850
Angular JS, and Node JS.
00:05:44.850 --> 00:05:46.611
>> Okay.
00:05:46.611 --> 00:05:48.450
>> Those are all
separate projects.
00:05:48.450 --> 00:05:51.524
But if it was just four separate
projects, that probably still
00:05:51.524 --> 00:05:54.899
wouldn't be a problem, but it's
not just four separate projects.
00:05:54.899 --> 00:05:58.104
If you add in NPM, which is
node package manager, and
00:05:58.104 --> 00:06:01.453
all the other generators and
stuff, it's hundreds and
00:06:01.453 --> 00:06:05.370
hundreds of them, which is great
because whatever you need To put
00:06:05.370 --> 00:06:08.790
in your application you can
find, but it's hundreds and
00:06:08.790 --> 00:06:12.281
hundreds of people trying to
lock versions and keep them in
00:06:12.281 --> 00:06:15.557
sync, and so there's a lot
of interesting fiddling,
00:06:15.557 --> 00:06:18.012
especially when
you're starting out.
00:06:18.012 --> 00:06:21.652
When you get a project going,
and then you're just building on
00:06:21.652 --> 00:06:25.152
it, that's fine, but when
you're doing a lot of talks, or
00:06:25.152 --> 00:06:27.639
you're doing a lot of
Checking out stuff.
00:06:27.639 --> 00:06:29.710
You're doing a lot of,
why isn't this working?
00:06:29.710 --> 00:06:32.448
And figuring out, well this
version of this needs to fit
00:06:32.448 --> 00:06:35.420
with this version of this and
rolling back versions to try and
00:06:35.420 --> 00:06:36.132
get them fit.
00:06:36.132 --> 00:06:40.735
So the beauty is just the amount
of stuff you can put into it but
00:06:40.735 --> 00:06:44.444
that again causes difficulty
on the other side.
00:06:44.444 --> 00:06:47.615
>> Well, and I think that what
you're moving forward with,
00:06:47.615 --> 00:06:50.464
you've got a series that
we're gonna talk about and
00:06:50.464 --> 00:06:53.830
what you're moving forward with
is Is walking people through
00:06:53.830 --> 00:06:56.743
the mean stack and all of
the related technologies and
00:06:56.743 --> 00:06:58.879
you're following
it pretty closely,
00:06:58.879 --> 00:07:01.659
the M for Mongo and the E for
express and all of that,
00:07:01.659 --> 00:07:05.080
but I find that sometimes the
term "mean" is not so strict.
00:07:05.080 --> 00:07:08.538
Sometimes people swap out one or
more of these components.
00:07:08.538 --> 00:07:11.040
And yet
we still use the term mean.
00:07:11.040 --> 00:07:12.702
So what's the significance
of the mean stack?
00:07:12.702 --> 00:07:14.970
Is it just a catchy word or
what?
00:07:14.970 --> 00:07:16.372
>> Yeah, well, it is.
00:07:16.372 --> 00:07:18.100
But it's more than that.
00:07:18.100 --> 00:07:21.854
If you remember, you've been
a developer for a long time,
00:07:21.854 --> 00:07:23.818
remember back in the day Ajax.
00:07:23.818 --> 00:07:25.633
>> Yeah.
>> Ajax was a term that came
00:07:25.633 --> 00:07:28.270
around and
it was actually this guy.
00:07:28.270 --> 00:07:29.242
Let's see if I can find him.
00:07:33.470 --> 00:07:39.170
Quickly, I think I can
find them quickly.
00:07:39.170 --> 00:07:42.000
This guy, Jesse James Garrett.
00:07:42.000 --> 00:07:43.641
So I remember back.
00:07:43.641 --> 00:07:45.380
I guess it was in the 90s.
00:07:45.380 --> 00:07:48.937
We were already using
the technologies that Ajax,
00:07:48.937 --> 00:07:51.178
the term Ajax brings together.
00:07:51.178 --> 00:07:55.517
But the fact that he coined the
term Ajax made it to a level of
00:07:55.517 --> 00:07:57.660
beyond the developer.
00:07:57.660 --> 00:08:00.138
So It makes it easy for,
if I say Ajax,
00:08:00.138 --> 00:08:04.410
you understand what I'm doing
along a breadth of technologies.
00:08:04.410 --> 00:08:05.058
>> Yeah, yeah.
00:08:05.058 --> 00:08:07.616
>> And then what it also
did is it brought together
00:08:07.616 --> 00:08:09.820
the terminology to
the upper level.
00:08:09.820 --> 00:08:12.957
So to the CTO or to
the developer manager where they
00:08:12.957 --> 00:08:14.246
would say-
>> [COUGH]
00:08:14.246 --> 00:08:16.350
>> Hey I want this Ajax stuff.
00:08:16.350 --> 00:08:17.480
>> Yeah, right,
I've heard this is good stuff.
00:08:17.480 --> 00:08:22.389
>> And Meme is the same thing so
>> This guy that works at,
00:08:22.389 --> 00:08:26.593
actually MongoDB, Valeri Karpov,
this is only two years ago, came
00:08:26.593 --> 00:08:28.733
up with the term [CROSSTALK]
>> Move so fast.
00:08:28.733 --> 00:08:30.498
>> I know, it's crazy.
00:08:30.498 --> 00:08:32.541
You think mean's
been around forever.
00:08:32.541 --> 00:08:36.248
But the technologies were there,
but he was actually, and
00:08:36.248 --> 00:08:38.915
one of the reasons I got
interested in it was
00:08:38.915 --> 00:08:41.897
he was Helping with a lot
of hackathons as we do.
00:08:41.897 --> 00:08:45.023
And he found that when he used
these technologies together
00:08:45.023 --> 00:08:47.320
which is called the mean-stack,
00:08:47.320 --> 00:08:50.254
he was able to get people
going really quickly building
00:08:50.254 --> 00:08:53.019
applications using these
four different things.
00:08:53.019 --> 00:08:53.979
>> Yeah.
>> And so
00:08:53.979 --> 00:08:56.507
the term though
>> Starts to solidify
00:08:56.507 --> 00:08:59.301
understanding of what
you're working on.
00:08:59.301 --> 00:09:00.851
>> Yeah.
>> So if I'm saying I'm using
00:09:00.851 --> 00:09:03.710
the mean-stack, you know I'm
using JavaScript up and down.
00:09:03.710 --> 00:09:07.452
So it's a term developers can
use, and it's a term that again,
00:09:07.452 --> 00:09:08.986
the CTOs can understand.
00:09:08.986 --> 00:09:11.534
Makes me feel like if I'm going
to use a technology stack,
00:09:11.534 --> 00:09:13.770
I'm going have to go look
figure out the letters and
00:09:13.770 --> 00:09:15.390
make sure that it
spells something.
00:09:15.390 --> 00:09:16.943
>> Yep, [LAUGH]
>> Otherwise, maybe,
00:09:16.943 --> 00:09:17.813
this is not a valid stack.
00:09:17.813 --> 00:09:18.951
>> Yeah [LAUGH]
That's a good point.
00:09:18.951 --> 00:09:21.130
That's a good point.
00:09:21.130 --> 00:09:25.114
It's funny it's,
you never what terms going So
00:09:25.114 --> 00:09:28.327
it's not something
that you can pick.
00:09:28.327 --> 00:09:30.080
I'm sure people
try all the time.
00:09:30.080 --> 00:09:33.887
>> You know that alludes to one
of the big differences between
00:09:33.887 --> 00:09:37.538
this open source world and
things like the mean stack and
00:09:37.538 --> 00:09:39.803
more unified curated platforms.
00:09:39.803 --> 00:09:44.443
And that is that with the open
source platforms it's
00:09:44.443 --> 00:09:48.879
kind of a lot of little
votes by people that use it.
00:09:48.879 --> 00:09:50.959
That determines what it
is that moves forward,
00:09:50.959 --> 00:09:53.611
what it is that gets popular,
what it is that moves forward,
00:09:53.611 --> 00:09:56.380
and there's a lot of frustration
in that cuz there's a lot of.
00:09:56.380 --> 00:09:59.680
There are a lot of beginning
developers that will watch this
00:09:59.680 --> 00:10:03.310
and say, yes, exactly, I hate
it when there's a new technology
00:10:03.310 --> 00:10:05.950
and I don't know if this
is gonna be a thing yet,
00:10:05.950 --> 00:10:08.320
I don't know if I
should tune into this.
00:10:08.320 --> 00:10:10.330
>> But as you know,
being a developer for
00:10:10.330 --> 00:10:12.180
a long time, that's your life.
00:10:12.180 --> 00:10:14.040
You have to make decisions
which way you go, and
00:10:14.040 --> 00:10:15.560
sometimes you make
the right decisions, and
00:10:15.560 --> 00:10:16.820
sometimes you make
the wrong ones.
00:10:18.420 --> 00:10:20.640
So sometimes you make
a lot of little bets and
00:10:20.640 --> 00:10:21.570
then see how they all go.
00:10:21.570 --> 00:10:22.990
And then just follow one path.
00:10:22.990 --> 00:10:23.530
>> Right.
00:10:23.530 --> 00:10:25.260
>> Technology always changes.
00:10:25.260 --> 00:10:28.370
Being a developer for
a long time I remember the main
00:10:28.370 --> 00:10:31.060
frame programmers that
the enterprise I worked at
00:10:31.060 --> 00:10:32.150
did not wanna change.
00:10:32.150 --> 00:10:33.470
>> Yeah.
>> And if you don't wanna
00:10:33.470 --> 00:10:36.830
change as a developer
>> It's gonna change for you.
00:10:36.830 --> 00:10:37.420
>> Absolutely.
00:10:37.420 --> 00:10:38.520
>> And then you're
gonna be way back here.
00:10:38.520 --> 00:10:39.020
>> Yeah you.
>> But.
00:10:39.020 --> 00:10:39.760
>> Can't be reticent
00:10:39.760 --> 00:10:40.420
as a developer.
00:10:40.420 --> 00:10:43.680
>> You brought up something
in what you just said
00:10:43.680 --> 00:10:46.110
that open-source
has is community.
00:10:46.110 --> 00:10:48.880
>> Yeah.
>> So community to me.
00:10:48.880 --> 00:10:52.200
So back in the day
the way I learned .net
00:10:52.200 --> 00:10:54.410
was I don't know if
you remember I by spy?
00:10:54.410 --> 00:10:55.710
>> Yeah I do.
>> It's the sample application
00:10:55.710 --> 00:10:56.770
that came out with.
00:10:56.770 --> 00:11:01.070
>> When they start with a .net
and that's where I cut my teeth,
00:11:01.070 --> 00:11:02.900
I dove through that application,
and me and
00:11:02.900 --> 00:11:06.700
my partner at the time
were using my SQL.
00:11:06.700 --> 00:11:11.170
And so we converted it to
be my by spy, and so people
00:11:11.170 --> 00:11:14.450
started downloading cuzthey
wanted the application and they
00:11:14.450 --> 00:11:17.630
were using my SQL and it was
a great learning experience for
00:11:17.630 --> 00:11:20.470
me and
that led me into DotNetNuke.
00:11:20.470 --> 00:11:23.626
So DotNetNuke was a product
that was derivative of that
00:11:23.626 --> 00:11:24.386
[CROSSTALK].
00:11:24.386 --> 00:11:25.094
>> Okay.
00:11:25.094 --> 00:11:27.981
>> And the beauty, and I wrote
a couple books on DotNetNuke and
00:11:27.981 --> 00:11:29.657
building websites and stuff, and
00:11:29.657 --> 00:11:31.570
so that was a great experience,
too.
00:11:31.570 --> 00:11:34.890
Again, it helped me dive
deeper into DotNetNuke.
00:11:34.890 --> 00:11:37.970
>> But the best part of that
experience was community.
00:11:37.970 --> 00:11:40.370
So, it was a vibrant community,
so
00:11:40.370 --> 00:11:44.210
when you needed questions
answered, they were right there.
00:11:44.210 --> 00:11:46.022
You know?
If you needed a module for
00:11:46.022 --> 00:11:49.080
DotNetNuke, it was
already written.
00:11:49.080 --> 00:11:53.190
So that breadth really made
it grow into a company.
00:11:53.190 --> 00:11:56.550
That was an open source project
that grew into a big company.
00:11:56.550 --> 00:11:59.380
I think they got at one
point 10 million in funding
00:11:59.380 --> 00:12:00.080
for DotNetNuke.
00:12:01.810 --> 00:12:05.520
And the MEAN community
is the same way.
00:12:05.520 --> 00:12:07.480
There's just,
like we talked about earlier,
00:12:07.480 --> 00:12:10.570
hundreds and hundreds of people
working on different stuff
00:12:10.570 --> 00:12:15.060
that all work together to help
make each other's lives easier.
00:12:15.060 --> 00:12:15.770
>> Absolutely.
00:12:15.770 --> 00:12:19.430
Well under the MEAN stack, maybe
the most fundamental component
00:12:19.430 --> 00:12:23.680
of it is the N, the Node, and
Node has a phenomenal community.
00:12:23.680 --> 00:12:26.550
I mean I've been working with
Node for a little while now.
00:12:26.550 --> 00:12:27.730
Just a little while.
00:12:27.730 --> 00:12:30.620
I mean in the scope of
the way that pace of
00:12:30.620 --> 00:12:32.910
technology these days
is just a little while.
00:12:32.910 --> 00:12:34.510
But over the last few months,
00:12:34.510 --> 00:12:38.170
I've seen the main package
manager for Node NPM,
00:12:38.170 --> 00:12:42.220
grow from I think 100,000
to 200,000 modules.
00:12:42.220 --> 00:12:44.420
>> Yeah,
it seems like overnight.
00:12:45.420 --> 00:12:48.540
>> You can't, it's like
the internet, it's endless,
00:12:48.540 --> 00:12:49.850
you can't find the end of it.
00:12:49.850 --> 00:12:54.210
>> Yeah, there's actually,
I did an episode, if you
00:12:54.210 --> 00:12:57.720
could go to this URL for me
since we're sharing your screen.
00:12:57.720 --> 00:13:03.969
Go to codefoster.com
/codechat/039.
00:13:07.052 --> 00:13:11.468
And I interviewed a guy by
the name of Andre Coscha, and
00:13:11.468 --> 00:13:17.010
he created this visualizer for
these package manager stores.
00:13:17.010 --> 00:13:18.910
And if you scroll down
a little bit, that's Andre.
00:13:18.910 --> 00:13:21.279
And if you go down and
click on that Google link.
00:13:22.580 --> 00:13:23.480
This one?
>> Yes, that one there,
00:13:23.480 --> 00:13:26.340
and that will take you to this
visualization, so that people
00:13:26.340 --> 00:13:28.080
who have watched Code Chat
have seen this already, but
00:13:28.080 --> 00:13:30.700
let's click on NPM, find the NPM
store, it's on the right,
00:13:30.700 --> 00:13:32.210
on the top there.
00:13:32.210 --> 00:13:34.290
And when you click on this,
it brings you into,
00:13:34.290 --> 00:13:37.370
it looks like a star field, but
this is really a visualization
00:13:37.370 --> 00:13:40.250
of the NPM community,
and you can kind of see
00:13:40.250 --> 00:13:43.650
these little constellations out
on the outskirts that are these
00:13:43.650 --> 00:13:46.330
miniature communities that don't
have a lot of dependencies on
00:13:46.330 --> 00:13:50.010
the core modules but they have
dependencies on each other.
00:13:50.010 --> 00:13:50.910
>> How nice.
>> And it's kinda
00:13:50.910 --> 00:13:54.780
neat to be able to browse
around and see all of these.
00:13:54.780 --> 00:13:56.850
It's great to have
a visualization for this.
00:13:56.850 --> 00:13:58.090
>> Wow, that's crazy.
00:13:59.410 --> 00:14:03.120
Yeah, I think when you
bring up visualization
00:14:03.120 --> 00:14:07.830
that's one of the things that
has been most difficult is
00:14:07.830 --> 00:14:09.660
not having that visual cue.
00:14:09.660 --> 00:14:10.780
>> Because you're on
the command line?
00:14:10.780 --> 00:14:11.283
>> Right.
>> [LAUGH]
00:14:11.283 --> 00:14:11.933
>> Because you're on the command
00:14:11.933 --> 00:14:12.947
line all the time.
[LAUGH]
00:14:12.947 --> 00:14:14.380
>> Imagine trying to get this
00:14:14.380 --> 00:14:16.690
amount of information
into your brain
00:14:16.690 --> 00:14:18.110
from the command line
it's just ridiculous.
00:14:18.110 --> 00:14:20.980
>> Yeah, exactly, and just
remembering, cuz the difficulty
00:14:20.980 --> 00:14:24.150
this command line is not typing,
it's just remembering.
00:14:24.150 --> 00:14:24.810
>> Yeah.
>> If
00:14:24.810 --> 00:14:26.940
you use something
like PowerShell or
00:14:26.940 --> 00:14:30.210
some other tools you have some
memorization of what you've done
00:14:30.210 --> 00:14:35.060
the last 65 times, but
you have to remember the syntax,
00:14:35.060 --> 00:14:37.640
you have to remember what switch
to use, you have to remember.
00:14:37.640 --> 00:14:38.733
What order the switch is going.
00:14:38.733 --> 00:14:39.368
[LAUGH]
>> What order
00:14:39.368 --> 00:14:39.940
the switch is going.
00:14:39.940 --> 00:14:43.900
All that stuff though it
trains your brain, but
00:14:43.900 --> 00:14:45.060
that's not a bad thing.
00:14:45.060 --> 00:14:45.680
So.
00:14:45.680 --> 00:14:48.200
>> So you feel like you're
00:14:48.200 --> 00:14:49.330
getting there with
the command line?
00:14:49.330 --> 00:14:51.090
You're memorizing
the switches and everything?
00:14:51.090 --> 00:14:51.760
>> I'm getting there.
00:14:51.760 --> 00:14:54.110
I'm getting more
comfortable with it.
00:14:54.110 --> 00:14:57.300
I actually am liking it,
you know I'm launching.
00:14:57.300 --> 00:14:59.230
Different stuff from
the command line.
00:14:59.230 --> 00:15:01.870
Different programs
that I utilize when
00:15:01.870 --> 00:15:03.290
I'm building something.
00:15:03.290 --> 00:15:05.980
So it's I think for
00:15:05.980 --> 00:15:10.030
any developer it's that this is
something new kind of thing.
00:15:10.030 --> 00:15:12.020
You just gotta keep
going forward and
00:15:12.020 --> 00:15:13.800
getting over it
because it's not.
00:15:13.800 --> 00:15:16.070
It's not, you said it was
hard in the beginning.
00:15:16.070 --> 00:15:18.980
It's not that it's hard,
it's just that it's different.
00:15:18.980 --> 00:15:20.370
>> Yeah.
>> And it's not that you're used
00:15:20.370 --> 00:15:24.400
to, and you're so used to the
speed at which you can develop.
00:15:24.400 --> 00:15:24.960
>> Right.
00:15:24.960 --> 00:15:26.860
>> Right, and
in your comfort language.
00:15:26.860 --> 00:15:27.760
>> Yeah.
>> And then going
00:15:27.760 --> 00:15:30.030
to somewhere else and
going, man I could have.
00:15:30.030 --> 00:15:33.720
What you gotta fight is the
thing in your head that says,
00:15:33.720 --> 00:15:35.910
man I could have done
this in five minutes.
00:15:35.910 --> 00:15:37.860
>> Yes, the way I used to do it.
00:15:37.860 --> 00:15:39.320
>> And
now this took me how long?
00:15:39.320 --> 00:15:41.120
It took me an hour to
figure this out, and
00:15:41.120 --> 00:15:42.450
you just gotta fight that.
00:15:42.450 --> 00:15:46.230
If someone is coming from
the Mean stack to C sharp,
00:15:46.230 --> 00:15:49.290
they're gonna go through
the same thing, you know?
00:15:49.290 --> 00:15:52.450
>> I think it was Richard
Fineman that talked about
00:15:52.450 --> 00:15:53.920
>> Being able to march on in
00:15:53.920 --> 00:15:56.160
the face of ambiguity when
you're learning something.
00:15:56.160 --> 00:15:58.440
And it doesn't make sense and
it's all kinda foggy.
00:15:58.440 --> 00:16:02.760
And I try to encourage young and
beginning developers with that.
00:16:02.760 --> 00:16:05.330
Because I know that whenever
I'm in a new language or
00:16:05.330 --> 00:16:07.070
a new stack or a new technology.
00:16:07.070 --> 00:16:09.240
I mean, they're coming out
like crazy these days.
00:16:09.240 --> 00:16:12.570
And whenever I jump into it I
don't have this schema yet.
00:16:12.570 --> 00:16:16.110
I don't know how this fits and
what it does and how it works.
00:16:16.110 --> 00:16:17.800
I don't know any of that stuff.
00:16:17.800 --> 00:16:19.740
And I've gotta trudge
through these examples and
00:16:19.740 --> 00:16:21.680
hopefully they've done a good
job with their examples and
00:16:21.680 --> 00:16:24.340
documentation and
I can come up a little quicker.
00:16:24.340 --> 00:16:27.870
But it just feels all foggy and
ambiguous.
00:16:27.870 --> 00:16:28.640
>> Absolutely.
00:16:28.640 --> 00:16:31.460
>> If you can hold on
in the midst of that.
00:16:31.460 --> 00:16:36.550
Then the concepts will form and
you'll have a more concrete hold
00:16:36.550 --> 00:16:39.150
on exactly what this is, you'll
have more of a, I like to say
00:16:39.150 --> 00:16:43.050
you'll have more of a conceptual
hold on it, so then you'll be
00:16:43.050 --> 00:16:46.420
able to understand it from
many facets, from many angles.
00:16:46.420 --> 00:16:49.130
I know what this is all about,
I know what it can be used for,
00:16:49.130 --> 00:16:53.910
I can pick some
alternate strategies for
00:16:53.910 --> 00:16:56.560
doing this or whatever, because
they've got the concept down.
00:16:56.560 --> 00:16:59.020
>> And that's where blogging or
00:16:59.020 --> 00:17:01.700
doing a series on
this is beneficial.
00:17:01.700 --> 00:17:03.930
Because it allows you
to look backwards.
00:17:03.930 --> 00:17:04.600
>> Yeah.
>> You know?
00:17:04.600 --> 00:17:08.450
Even in my short journey so
far into the stack.
00:17:08.450 --> 00:17:09.130
I can look back, and
00:17:09.130 --> 00:17:11.611
I can go, I remember
when Git was hard, right?
00:17:11.611 --> 00:17:12.770
>> [LAUGH] Yeah.
00:17:12.770 --> 00:17:15.180
>> And you start to think,
wait, it's not hard.
00:17:15.180 --> 00:17:16.696
>> Why is this so hard?
00:17:16.696 --> 00:17:17.820
[LAUGH]
>> It's not hard,
00:17:17.820 --> 00:17:19.930
you just weren't used to it.
00:17:19.930 --> 00:17:21.670
>> Yeah.
>> And you can see this
00:17:21.670 --> 00:17:25.710
through setting up Node server,
or difficulties in
00:17:25.710 --> 00:17:29.650
setting up Mongo DVD, I just
forgot to do the data directory.
00:17:29.650 --> 00:17:30.580
>> Yes.
>> You know this now,
00:17:30.580 --> 00:17:34.170
but, when you start teaching
other people, you can see,
00:17:34.170 --> 00:17:36.010
they're having this same mistake
>> Yes.
00:17:36.010 --> 00:17:39.025
>> And do that, so, it's nice
to look backwards and see that.
00:17:39.025 --> 00:17:40.670
That's rally a core
component of yours and
00:17:40.670 --> 00:17:42.950
my job is trying
to put together,
00:17:42.950 --> 00:17:46.340
like at the same time that we're
learning something or maybe at
00:17:46.340 --> 00:17:49.000
some concepts that we kind of
already got in our heads around.
00:17:49.000 --> 00:17:51.740
But trying to put
it together and
00:17:51.740 --> 00:17:56.010
deliver it in a format that's
gonna be beneficial to people.
00:17:56.010 --> 00:17:58.380
So they'll be able
to rock it sooner.
00:17:58.380 --> 00:18:01.620
>> I mean that's the favorite
part of my job is
00:18:01.620 --> 00:18:02.940
teaching, I think.
00:18:02.940 --> 00:18:04.050
I love.
00:18:04.050 --> 00:18:06.911
I taught at the University for
a little while, and
00:18:06.911 --> 00:18:10.470
I loved the light bulb going on,
from beginning developers.
00:18:10.470 --> 00:18:13.650
Even the simple stuff,
like getting variables, and for
00:18:13.650 --> 00:18:18.860
loops, and all that stuff,
I like watching that go on, so.
00:18:18.860 --> 00:18:21.290
>> I saw a quote recently that.
00:18:21.290 --> 00:18:24.390
I believe it was Carl Sagan that
said that it's because I have
00:18:24.390 --> 00:18:28.320
such a hard time understanding
things and I have to spend so
00:18:28.320 --> 00:18:32.550
much time really getting to
a complete understanding of it,
00:18:32.550 --> 00:18:34.025
that I'm good at explaining it.
00:18:34.025 --> 00:18:36.177
And I feel the same way,
like some of these concepts
00:18:36.177 --> 00:18:37.732
[CROSSTALK]
>> Are you using Carl Sagan
00:18:37.732 --> 00:18:40.070
because we have this in
the background right now?
00:18:40.070 --> 00:18:41.505
>> [LAUGH] Exactly.
00:18:41.505 --> 00:18:44.565
>> I think Albert Einstein has
a quote very much like that,
00:18:44.565 --> 00:18:47.315
if you can't explain it simply
you don't know it well enough.
00:18:47.315 --> 00:18:48.445
>> Right, yeah,
that's wonderful.
00:18:48.445 --> 00:18:50.670
>> Not verbatim but
something like that, so.
00:18:50.670 --> 00:18:51.880
And I kinda take that to heart,
00:18:51.880 --> 00:18:56.260
I really wanna be able to
explain it in a way that any one
00:18:56.260 --> 00:18:57.660
can kind of understand, so.
00:18:57.660 --> 00:19:01.570
>> Yeah, I like to give
developers something tangible
00:19:01.570 --> 00:19:05.170
that they can take home whenever
we have talks like this and.
00:19:05.170 --> 00:19:07.240
>> And
I think that we've talked about
00:19:08.820 --> 00:19:11.430
migrating yourself
as a developer, and
00:19:11.430 --> 00:19:14.250
that's one thing that developers
should be ready to do.
00:19:14.250 --> 00:19:19.320
I think there's a lot of benefit
being somewhat of a polyglot.
00:19:19.320 --> 00:19:22.710
If you are steeped in
a single language.
00:19:22.710 --> 00:19:23.520
Try stepping out.
00:19:23.520 --> 00:19:24.160
Yeah.
00:19:24.160 --> 00:19:25.980
We talked a bit about community.
00:19:25.980 --> 00:19:28.550
And I meet a lot of developers,
at one point for
00:19:28.550 --> 00:19:31.990
some small period,
I was a developer, and
00:19:31.990 --> 00:19:33.990
I was one of those
developers on an island.
00:19:33.990 --> 00:19:37.210
I was not in plugged into
the community, I wasn't...
00:19:37.210 --> 00:19:40.100
I was sometimes reading blogs,
but I wasn't writing anything,
00:19:40.100 --> 00:19:41.810
I wasn't you know putting
anything together,
00:19:41.810 --> 00:19:43.490
putting any thoughts together.
00:19:43.490 --> 00:19:45.780
And so I would encourage
developers to migrate
00:19:45.780 --> 00:19:46.640
like you're doing.
00:19:46.640 --> 00:19:49.587
To join communities,
and what else?
00:19:49.587 --> 00:19:50.627
>> Yeah I mean it's,
00:19:50.627 --> 00:19:53.813
one of the things that I was
big before I joined Microsoft,
00:19:53.813 --> 00:19:56.753
I was huge in the community
you know doing code camps.
00:19:56.753 --> 00:19:58.837
There's code camps all
over the country to go to.
00:19:58.837 --> 00:20:02.337
It's a great way to
get information.
00:20:02.337 --> 00:20:05.064
User groups, I mean again,
I just search meetup.com.
00:20:05.064 --> 00:20:06.660
>> Yeah.
>> There's any technology
00:20:06.660 --> 00:20:07.795
you want.
00:20:07.795 --> 00:20:10.690
Meetup.com is a great
way to do it.
00:20:10.690 --> 00:20:15.430
But just blogging,
I find people are afraid to blog
00:20:15.430 --> 00:20:18.953
on stuff that they don't
feel they're an expert on.
00:20:18.953 --> 00:20:19.770
>> Uh-huh.
00:20:19.770 --> 00:20:21.580
>> And
I can fall under that, too.
00:20:21.580 --> 00:20:24.170
I feel, I need to know more
about this before I blog it.
00:20:24.170 --> 00:20:28.550
But there's something beneficial
and community centric when you
00:20:28.550 --> 00:20:30.630
do a blog about stuff
you're learning, right?
00:20:30.630 --> 00:20:32.610
>> Cortana, thanks for
talking to us.
00:20:32.610 --> 00:20:33.510
>> Thanks, Cortana.
00:20:33.510 --> 00:20:34.970
Thanks, Cortana
>> [LAUGH]
00:20:34.970 --> 00:20:36.370
>> You can go back
00:20:36.370 --> 00:20:37.533
to sleep Cortana.
00:20:37.533 --> 00:20:41.281
[CROSSTALK]
>> Cuz I've done this more than
00:20:41.281 --> 00:20:42.700
once in my career.
00:20:42.700 --> 00:20:45.098
I can't figure something out and
I went and
00:20:45.098 --> 00:20:46.764
searched for it [CROSSTALK] and
00:20:46.764 --> 00:20:50.036
I found either my own post on
somewhere else or my own blog.
00:20:50.036 --> 00:20:51.664
>> And
isn't it funny that way that,
00:20:51.664 --> 00:20:54.583
like because as you're reading
it, you're like, this is,
00:20:54.583 --> 00:20:56.490
this is like
brilliantly written.
00:20:56.490 --> 00:20:59.100
>> This is exactly
what I needed.
00:20:59.100 --> 00:20:59.960
>> [LAUGH]
>> [LAUGH]
00:20:59.960 --> 00:21:00.485
>> Yeah.
00:21:00.485 --> 00:21:01.511
Yeah so there's a few action
00:21:01.511 --> 00:21:03.071
items, some things people
can go out and do.
00:21:03.071 --> 00:21:04.561
I think another one is
00:21:04.561 --> 00:21:05.621
get involved in
00:21:05.621 --> 00:21:06.981
open source projects.
>> Yeah.
00:21:06.981 --> 00:21:08.071
>> There are a lot of people out
00:21:08.071 --> 00:21:10.240
writing code.
As an example Daniel and
00:21:10.240 --> 00:21:11.690
I are playing with
a project right now.
00:21:11.690 --> 00:21:13.930
I have a rowing machine at home.
00:21:13.930 --> 00:21:17.830
And I went and played forever
with, I probably spent three or
00:21:17.830 --> 00:21:18.870
four hours on,
00:21:18.870 --> 00:21:23.990
let me just remind myself how
to go read from the serial port,
00:21:23.990 --> 00:21:26.580
you now, and I was going
back into the low level.
00:21:26.580 --> 00:21:30.900
And I was like wait maybe
somebody has done this already,
00:21:30.900 --> 00:21:32.010
and so I went and
searched NPM, I found,
00:21:32.010 --> 00:21:33.770
let's just go there right now.
00:21:33.770 --> 00:21:34.550
>> Go ahead, right now.
00:21:34.550 --> 00:21:35.884
>> Go to npmjs.org.
00:21:39.360 --> 00:21:42.350
And then we search for,
I searched for
00:21:42.350 --> 00:21:44.360
that specific machine
just thinking that,
00:21:44.360 --> 00:21:46.280
maybe I'll get lucky and
somebody's already done this.
00:21:46.280 --> 00:21:49.140
Man, look at that, someone's
written node-waterrower.
00:21:49.140 --> 00:21:50.890
>> Well, of course it's
there because you saw that
00:21:50.890 --> 00:21:52.320
universe when you began so-
>> I know,
00:21:52.320 --> 00:21:54.520
it's somewhere in that universe,
right?
00:21:54.520 --> 00:21:56.450
And then this is the way
things work these days.
00:21:56.450 --> 00:21:59.390
This is the package and
it's an open source project.
00:21:59.390 --> 00:22:00.940
Most people are just
giving away their code.
00:22:00.940 --> 00:22:03.060
And so
I jump over to it on GitHub and
00:22:03.060 --> 00:22:04.680
I go well this is excellent.
00:22:04.680 --> 00:22:07.280
And what is this return to mean,
he's got some good docs.
00:22:07.280 --> 00:22:09.056
Okay good I've got my
stroke rate, my [SOUND],
00:22:09.056 --> 00:22:10.280
all these things.
00:22:10.280 --> 00:22:12.050
Wait a minute,
I want calorie count.
00:22:12.050 --> 00:22:13.790
This doesn't do calorie count.
00:22:13.790 --> 00:22:14.470
What do I do?
00:22:14.470 --> 00:22:15.700
Communicate with this guy and
say,
00:22:15.700 --> 00:22:17.140
can you please add this for me?
00:22:17.140 --> 00:22:17.920
Heck no.
00:22:17.920 --> 00:22:21.680
I go fork the project and then
add calories into my own, and
00:22:21.680 --> 00:22:24.080
if I think this is a valuable
contribution to the project,
00:22:24.080 --> 00:22:25.430
I just send James a PR.
00:22:25.430 --> 00:22:26.670
>> Are you gonna
send it back to him?
00:22:26.670 --> 00:22:27.200
>> Absolutely.
00:22:27.200 --> 00:22:27.700
>> Yeah?
>> I'm gonna
00:22:27.700 --> 00:22:28.340
send him a PR,
>> Awesome.
00:22:28.340 --> 00:22:29.400
>> And say,
if you want calories,
00:22:29.400 --> 00:22:31.210
I just added that in real quick.
00:22:31.210 --> 00:22:36.550
And GitHub is great at
facilitating this community,
00:22:36.550 --> 00:22:39.050
this communication on
this whole system.
00:22:39.050 --> 00:22:40.300
So if you're a new developer and
00:22:40.300 --> 00:22:41.810
you're trying to
figure this out,
00:22:41.810 --> 00:22:43.510
you get involved in
an open source project,
00:22:43.510 --> 00:22:46.740
I guarantee you almost anybody
working on something like that
00:22:46.740 --> 00:22:49.110
would love for
you to go star their project,
00:22:49.110 --> 00:22:51.510
fork their project,
work on some PR's.
00:22:51.510 --> 00:22:53.090
They want you to join.
00:22:53.090 --> 00:22:56.300
Yeah, he's actually, you can see
he's got three contributors and
00:22:56.300 --> 00:22:57.320
is that your branch?
00:22:57.320 --> 00:22:58.290
>> Yeah.
>> Okay.
00:22:58.290 --> 00:22:59.288
And you're one branch.
00:22:59.288 --> 00:23:01.895
>> [LAUGH]
>> Cool.
00:23:01.895 --> 00:23:06.860
>> Awesome
>> So this has
00:23:06.860 --> 00:23:10.520
been a fun talk about migrating
yourself as a developer,
00:23:10.520 --> 00:23:12.050
is there anything
else you want to add,
00:23:12.050 --> 00:23:13.790
either as a point of
encouragement or whatever?
00:23:13.790 --> 00:23:17.680
>> No, just if you want to
follow along on the journey.
00:23:17.680 --> 00:23:20.820
It's called Meanonazure,
so it's not just Mean.
00:23:20.820 --> 00:23:23.000
I want to show how
to utilize Mean, but
00:23:23.000 --> 00:23:24.820
how to use Meanonazure.
00:23:24.820 --> 00:23:29.565
And so we'll cover topics like
Node.js, not just spinning up in
00:23:29.565 --> 00:23:30.970
Node.js, but where are you
going to spin it up?
00:23:30.970 --> 00:23:32.770
Are you going to spin it up
just in a simple web app,
00:23:32.770 --> 00:23:35.450
which is use cases, or are you
going to spin up personal
00:23:35.450 --> 00:23:39.880
machines, whether it's
a Linux or a Windows machine.
00:23:39.880 --> 00:23:41.430
The same thing with Node.
00:23:41.430 --> 00:23:45.000
>> With Mongo, or
you can use Mongo through Azure,
00:23:45.000 --> 00:23:47.900
or you're going to do your own
00:23:47.900 --> 00:23:52.560
replica sets across multiple
regions, across multiple VMs.
00:23:52.560 --> 00:23:56.450
So if anyone's interested in
following along the journey
00:23:56.450 --> 00:24:01.140
with me, they can go to
sogeek.us/meanonazure and
00:24:01.140 --> 00:24:02.920
we'll be putting up videos
all the time on that.
00:24:02.920 --> 00:24:04.830
>> And Daniel's already
got the first video out,
00:24:04.830 --> 00:24:06.010
it looks fabulous.
00:24:06.010 --> 00:24:07.040
And so you can go see,
00:24:07.040 --> 00:24:09.700
kinda get a taste of what
the series is gonna look
00:24:09.700 --> 00:24:12.670
like and as you'll follow the
series you'll kinda see Daniel's
00:24:12.670 --> 00:24:16.560
migration unfold and hopefully
learn a lot in the process.
00:24:16.560 --> 00:24:17.472
>> Cool.
Great
00:24:17.472 --> 00:24:19.051
>> Well hey, thanks for
00:24:19.051 --> 00:24:22.824
joining us on Code Chat in
this discussion on mean,
00:24:22.824 --> 00:24:25.280
the mean stack,
Mean on Azure and
00:24:25.280 --> 00:24:29.441
the migration of one developer
from dot net interface.
00:24:29.441 --> 00:24:32.255
[LAUGH] [LAUGH]
It was scattered.
00:24:32.255 --> 00:24:32.955
>> Yes.
>> [LAUGH]
00:24:32.955 --> 00:24:34.945
>> The scattered world of Node.
00:24:34.945 --> 00:24:36.005
>> That's right.
00:24:36.005 --> 00:24:37.965
>> Well we hope to see you
next time, thanks again for
00:24:37.965 --> 00:24:38.533
joining us. Thanks.
00:24:38.533 --> 00:24:47.920
[MUSIC]